فهرست منبع

Update PotionConfigGenerator and default potions.yml for missing potions

t00thpick1 9 سال پیش
والد
کامیت
6cce3098db
2فایلهای تغییر یافته به همراه207 افزوده شده و 166 حذف شده
  1. 104 24
      src/main/resources/potions.yml
  2. 103 142
      src/util/java/mcMMO/PotionConfigGenerator.java

+ 104 - 24
src/main/resources/potions.yml

@@ -362,9 +362,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["ABSORPTION 0 1800"]
         Children:
-            SULPHUR: SPLASH_POTION_OF_ABSORPTION
             GLOWSTONE_DUST: POTION_OF_ABSORPTION_II
             REDSTONE: POTION_OF_ABSORPTION_EXTENDED
+            SULPHUR: SPLASH_POTION_OF_ABSORPTION
     POTION_OF_BLINDNESS:
         Name: Potion Of Blindness
         Material: POTION
@@ -372,9 +372,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["BLINDNESS 0 225"]
         Children:
-            REDSTONE: POTION_OF_BLINDNESS_EXTENDED
-            GLOWSTONE_DUST: POTION_OF_BLINDNESS_II
             SULPHUR: SPLASH_POTION_OF_BLINDNESS
+            GLOWSTONE_DUST: POTION_OF_BLINDNESS_II
+            REDSTONE: POTION_OF_BLINDNESS_EXTENDED
     POTION_OF_DECAY:
         Name: Potion Of Decay
         Material: POTION
@@ -392,9 +392,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["SLOW_DIGGING 0 3600"]
         Children:
-            GLOWSTONE_DUST: POTION_OF_DULLNESS_II
             REDSTONE: POTION_OF_DULLNESS_EXTENDED
             SULPHUR: SPLASH_POTION_OF_DULLNESS
+            GLOWSTONE_DUST: POTION_OF_DULLNESS_II
     POTION_OF_HASTE:
         Name: Potion Of Haste
         Material: POTION
@@ -402,9 +402,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["FAST_DIGGING 0 3600"]
         Children:
-            SULPHUR: SPLASH_POTION_OF_HASTE
             REDSTONE: POTION_OF_HASTE_EXTENDED
             GLOWSTONE_DUST: POTION_OF_HASTE_II
+            SULPHUR: SPLASH_POTION_OF_HASTE
     POTION_OF_HEALTH_BOOST:
         Name: Potion Of Health Boost
         Material: POTION
@@ -422,9 +422,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["HUNGER 0 900"]
         Children:
-            REDSTONE: POTION_OF_HUNGER_EXTENDED
-            GLOWSTONE_DUST: POTION_OF_HUNGER_II
             SULPHUR: SPLASH_POTION_OF_HUNGER
+            GLOWSTONE_DUST: POTION_OF_HUNGER_II
+            REDSTONE: POTION_OF_HUNGER_EXTENDED
     POTION_OF_NAUSEA:
         Name: Potion Of Nausea
         Material: POTION
@@ -432,9 +432,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["CONFUSION 0 450"]
         Children:
-            GLOWSTONE_DUST: POTION_OF_NAUSEA_II
             REDSTONE: POTION_OF_NAUSEA_EXTENDED
             SULPHUR: SPLASH_POTION_OF_NAUSEA
+            GLOWSTONE_DUST: POTION_OF_NAUSEA_II
     POTION_OF_RESISTANCE:
         Name: Potion Of Resistance
         Material: POTION
@@ -442,9 +442,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["DAMAGE_RESISTANCE 0 450"]
         Children:
-            GLOWSTONE_DUST: POTION_OF_RESISTANCE_II
             REDSTONE: POTION_OF_RESISTANCE_EXTENDED
             SULPHUR: SPLASH_POTION_OF_RESISTANCE
+            GLOWSTONE_DUST: POTION_OF_RESISTANCE_II
     POTION_OF_SATURATION:
         Name: Potion Of Saturation
         Material: POTION
@@ -452,129 +452,169 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["SATURATION 0 8"]
         Children:
-            SULPHUR: SPLASH_POTION_OF_SATURATION
-            GLOWSTONE_DUST: POTION_OF_SATURATION_II
             REDSTONE: POTION_OF_SATURATION_EXTENDED
+            GLOWSTONE_DUST: POTION_OF_SATURATION_II
+            SULPHUR: SPLASH_POTION_OF_SATURATION
     POTION_OF_ABSORPTION_EXTENDED:
         Name: Potion Of Absorption Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["ABSORPTION 0 3600"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_ABSORPTION_EXTENDED
     POTION_OF_BLINDNESS_EXTENDED:
         Name: Potion Of Blindness Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["BLINDNESS 0 450"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_BLINDNESS_EXTENDED
     POTION_OF_DECAY_EXTENDED:
         Name: Potion Of Decay Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["WITHER 0 900"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_DECAY_EXTENDED
     POTION_OF_DULLNESS_EXTENDED:
         Name: Potion Of Dullness Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SLOW_DIGGING 0 7200"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_DULLNESS_EXTENDED
     POTION_OF_HASTE_EXTENDED:
         Name: Potion Of Haste Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["FAST_DIGGING 0 7200"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_HASTE_EXTENDED
     POTION_OF_HEALTH_BOOST_EXTENDED:
         Name: Potion Of Health Boost Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HEALTH_BOOST 0 3600"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_HEALTH_BOOST_EXTENDED
     POTION_OF_HUNGER_EXTENDED:
         Name: Potion Of Hunger Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HUNGER 0 1800"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_HUNGER_EXTENDED
     POTION_OF_NAUSEA_EXTENDED:
         Name: Potion Of Nausea Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["CONFUSION 0 900"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_NAUSEA_EXTENDED
     POTION_OF_RESISTANCE_EXTENDED:
         Name: Potion Of Resistance Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["DAMAGE_RESISTANCE 0 900"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_RESISTANCE_EXTENDED
     POTION_OF_SATURATION_EXTENDED:
         Name: Potion Of Saturation Extended
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SATURATION 0 16"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_SATURATION_EXTENDED
     POTION_OF_ABSORPTION_II:
         Name: Potion Of Absorption II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["ABSORPTION 1 900"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_ABSORPTION_II
     POTION_OF_BLINDNESS_II:
         Name: Potion Of Blindness II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["BLINDNESS 1 112"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_BLINDNESS_II
     POTION_OF_DECAY_II:
         Name: Potion Of Decay II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["WITHER 1 225"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_DECAY_II
     POTION_OF_DULLNESS_II:
         Name: Potion Of Dullness II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SLOW_DIGGING 1 1800"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_DULLNESS_II
     POTION_OF_HASTE_II:
         Name: Potion Of Haste II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["FAST_DIGGING 1 1800"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_HASTE_II
     POTION_OF_HEALTH_BOOST_II:
         Name: Potion Of Health Boost II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HEALTH_BOOST 1 900"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_HEALTH_BOOST_II
     POTION_OF_HUNGER_II:
         Name: Potion Of Hunger II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HUNGER 1 450"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_HUNGER_II
     POTION_OF_NAUSEA_II:
         Name: Potion Of Nausea II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["CONFUSION 1 225"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_NAUSEA_II
     POTION_OF_RESISTANCE_II:
         Name: Potion Of Resistance II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["DAMAGE_RESISTANCE 1 225"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_RESISTANCE_II
     POTION_OF_SATURATION_II:
         Name: Potion Of Saturation II
         Material: POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SATURATION 1 4"]
+        Children:
+            SULPHUR: SPLASH_POTION_OF_SATURATION_II
     SPLASH_POTION_OF_EMPTY:
         Material: SPLASH_POTION
         PotionData:
@@ -884,8 +924,8 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["ABSORPTION 0 1350"]
         Children:
-            DRAGONS_BREATH: LINGERING_POTION_OF_ABSORPTION
             GLOWSTONE_DUST: SPLASH_POTION_OF_ABSORPTION_II
+            DRAGONS_BREATH: LINGERING_POTION_OF_ABSORPTION
             REDSTONE: SPLASH_POTION_OF_ABSORPTION_EXTENDED
     SPLASH_POTION_OF_BLINDNESS:
         Name: Splash Potion Of Blindness
@@ -904,9 +944,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["WITHER 0 337"]
         Children:
-            REDSTONE: SPLASH_POTION_OF_DECAY_EXTENDED
-            GLOWSTONE_DUST: SPLASH_POTION_OF_DECAY_II
             DRAGONS_BREATH: LINGERING_POTION_OF_DECAY
+            GLOWSTONE_DUST: SPLASH_POTION_OF_DECAY_II
+            REDSTONE: SPLASH_POTION_OF_DECAY_EXTENDED
     SPLASH_POTION_OF_DULLNESS:
         Name: Splash Potion Of Dullness
         Material: SPLASH_POTION
@@ -934,9 +974,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["HEALTH_BOOST 0 1350"]
         Children:
-            GLOWSTONE_DUST: SPLASH_POTION_OF_HEALTH_BOOST_II
             REDSTONE: SPLASH_POTION_OF_HEALTH_BOOST_EXTENDED
             DRAGONS_BREATH: LINGERING_POTION_OF_HEALTH_BOOST
+            GLOWSTONE_DUST: SPLASH_POTION_OF_HEALTH_BOOST_II
     SPLASH_POTION_OF_HUNGER:
         Name: Splash Potion Of Hunger
         Material: SPLASH_POTION
@@ -944,8 +984,8 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["HUNGER 0 675"]
         Children:
-            REDSTONE: SPLASH_POTION_OF_HUNGER_EXTENDED
             GLOWSTONE_DUST: SPLASH_POTION_OF_HUNGER_II
+            REDSTONE: SPLASH_POTION_OF_HUNGER_EXTENDED
             DRAGONS_BREATH: LINGERING_POTION_OF_HUNGER
     SPLASH_POTION_OF_NAUSEA:
         Name: Splash Potion Of Nausea
@@ -954,9 +994,9 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["CONFUSION 0 337"]
         Children:
-            DRAGONS_BREATH: LINGERING_POTION_OF_NAUSEA
-            REDSTONE: SPLASH_POTION_OF_NAUSEA_EXTENDED
             GLOWSTONE_DUST: SPLASH_POTION_OF_NAUSEA_II
+            REDSTONE: SPLASH_POTION_OF_NAUSEA_EXTENDED
+            DRAGONS_BREATH: LINGERING_POTION_OF_NAUSEA
     SPLASH_POTION_OF_RESISTANCE:
         Name: Splash Potion Of Resistance
         Material: SPLASH_POTION
@@ -974,129 +1014,169 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["SATURATION 0 6"]
         Children:
-            DRAGONS_BREATH: LINGERING_POTION_OF_SATURATION
-            GLOWSTONE_DUST: SPLASH_POTION_OF_SATURATION_II
             REDSTONE: SPLASH_POTION_OF_SATURATION_EXTENDED
+            GLOWSTONE_DUST: SPLASH_POTION_OF_SATURATION_II
+            DRAGONS_BREATH: LINGERING_POTION_OF_SATURATION
     SPLASH_POTION_OF_ABSORPTION_EXTENDED:
         Name: Splash Potion Of Absorption Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["ABSORPTION 0 2700"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_ABSORPTION_EXTENDED
     SPLASH_POTION_OF_BLINDNESS_EXTENDED:
         Name: Splash Potion Of Blindness Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["BLINDNESS 0 336"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_BLINDNESS_EXTENDED
     SPLASH_POTION_OF_DECAY_EXTENDED:
         Name: Splash Potion Of Decay Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["WITHER 0 674"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_DECAY_EXTENDED
     SPLASH_POTION_OF_DULLNESS_EXTENDED:
         Name: Splash Potion Of Dullness Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SLOW_DIGGING 0 5400"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_DULLNESS_EXTENDED
     SPLASH_POTION_OF_HASTE_EXTENDED:
         Name: Splash Potion Of Haste Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["FAST_DIGGING 0 5400"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_HASTE_EXTENDED
     SPLASH_POTION_OF_HEALTH_BOOST_EXTENDED:
         Name: Splash Potion Of Health Boost Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HEALTH_BOOST 0 2700"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_HEALTH_BOOST_EXTENDED
     SPLASH_POTION_OF_HUNGER_EXTENDED:
         Name: Splash Potion Of Hunger Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HUNGER 0 1350"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_HUNGER_EXTENDED
     SPLASH_POTION_OF_NAUSEA_EXTENDED:
         Name: Splash Potion Of Nausea Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["CONFUSION 0 674"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_NAUSEA_EXTENDED
     SPLASH_POTION_OF_RESISTANCE_EXTENDED:
         Name: Splash Potion Of Resistance Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["DAMAGE_RESISTANCE 0 674"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_RESISTANCE_EXTENDED
     SPLASH_POTION_OF_SATURATION_EXTENDED:
         Name: Splash Potion Of Saturation Extended
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SATURATION 0 12"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_SATURATION_EXTENDED
     SPLASH_POTION_OF_ABSORPTION_II:
         Name: Splash Potion Of Absorption II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["ABSORPTION 1 675"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_ABSORPTION_II
     SPLASH_POTION_OF_BLINDNESS_II:
         Name: Splash Potion Of Blindness II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["BLINDNESS 1 84"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_BLINDNESS_II
     SPLASH_POTION_OF_DECAY_II:
         Name: Splash Potion Of Decay II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["WITHER 1 168"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_DECAY_II
     SPLASH_POTION_OF_DULLNESS_II:
         Name: Splash Potion Of Dullness II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SLOW_DIGGING 1 1350"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_DULLNESS_II
     SPLASH_POTION_OF_HASTE_II:
         Name: Splash Potion Of Haste II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["FAST_DIGGING 1 1350"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_HASTE_II
     SPLASH_POTION_OF_HEALTH_BOOST_II:
         Name: Splash Potion Of Health Boost II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HEALTH_BOOST 1 675"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_HEALTH_BOOST_II
     SPLASH_POTION_OF_HUNGER_II:
         Name: Splash Potion Of Hunger II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["HUNGER 1 337"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_HUNGER_II
     SPLASH_POTION_OF_NAUSEA_II:
         Name: Splash Potion Of Nausea II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["CONFUSION 1 168"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_NAUSEA_II
     SPLASH_POTION_OF_RESISTANCE_II:
         Name: Splash Potion Of Resistance II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["DAMAGE_RESISTANCE 1 168"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_RESISTANCE_II
     SPLASH_POTION_OF_SATURATION_II:
         Name: Splash Potion Of Saturation II
         Material: SPLASH_POTION
         PotionData:
             PotionType: UNCRAFTABLE
         Effects: ["SATURATION 1 3"]
+        Children:
+            DRAGONS_BREATH: LINGERING_POTION_OF_SATURATION_II
     LINGERING_POTION_OF_EMPTY:
         Material: LINGERING_POTION
         PotionData:
@@ -1381,8 +1461,8 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["SLOW_DIGGING 0 900"]
         Children:
-            REDSTONE: LINGERING_POTION_OF_DULLNESS_EXTENDED
             GLOWSTONE_DUST: LINGERING_POTION_OF_DULLNESS_II
+            REDSTONE: LINGERING_POTION_OF_DULLNESS_EXTENDED
     LINGERING_POTION_OF_HASTE:
         Name: Lingering Potion Of Haste
         Material: LINGERING_POTION
@@ -1390,8 +1470,8 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["FAST_DIGGING 0 900"]
         Children:
-            GLOWSTONE_DUST: LINGERING_POTION_OF_HASTE_II
             REDSTONE: LINGERING_POTION_OF_HASTE_EXTENDED
+            GLOWSTONE_DUST: LINGERING_POTION_OF_HASTE_II
     LINGERING_POTION_OF_HEALTH_BOOST:
         Name: Lingering Potion Of Health Boost
         Material: LINGERING_POTION
@@ -1408,8 +1488,8 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["HUNGER 0 225"]
         Children:
-            GLOWSTONE_DUST: LINGERING_POTION_OF_HUNGER_II
             REDSTONE: LINGERING_POTION_OF_HUNGER_EXTENDED
+            GLOWSTONE_DUST: LINGERING_POTION_OF_HUNGER_II
     LINGERING_POTION_OF_NAUSEA:
         Name: Lingering Potion Of Nausea
         Material: LINGERING_POTION
@@ -1417,8 +1497,8 @@ Potions:
             PotionType: UNCRAFTABLE
         Effects: ["CONFUSION 0 112"]
         Children:
-            GLOWSTONE_DUST: LINGERING_POTION_OF_NAUSEA_II
             REDSTONE: LINGERING_POTION_OF_NAUSEA_EXTENDED
+            GLOWSTONE_DUST: LINGERING_POTION_OF_NAUSEA_II
     LINGERING_POTION_OF_RESISTANCE:
         Name: Lingering Potion Of Resistance
         Material: LINGERING_POTION

+ 103 - 142
src/util/java/mcMMO/PotionConfigGenerator.java

@@ -1,6 +1,5 @@
 package com.gmail.nossr50;
 
-
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -39,11 +38,11 @@ public class PotionConfigGenerator {
     }
     public static class WriteablePotion {
 
-        public String             name;
-        public Material           mat;
-        public PotionData         data;
+        public String       name;
+        public Material     mat;
+        public PotionData   data;
         public PotionEffect effect;
-        public String baseName;
+        public String       baseName;
 
         public WriteablePotion(PotionData data) {
             this(Material.POTION, data);
@@ -138,14 +137,6 @@ public class PotionConfigGenerator {
         List<WriteablePotion> sorted = new ArrayList<WriteablePotion>();
         sorted.addAll(vanillaPotions.keySet());
         sorted.addAll(mcMMOPotions.keySet());
-        // Get all mcMMO potions without children
-        for (Map<Ingredient, WriteablePotion> map : mcMMOPotions.values()) {
-            for (WriteablePotion potion : map.values()) {
-                if (!sorted.contains(potion)) {
-                    sorted.add(potion);
-                }
-            }
-        }
         sorted.sort(new Comparator<WriteablePotion>() {
 
             @Override
@@ -211,7 +202,7 @@ public class PotionConfigGenerator {
                     return a.baseName.split("_")[0].compareTo(b.baseName.split("_")[0]);
                 }
             }
-            
+
         });
         for (WriteablePotion potion : sorted) {
             System.out.println("    " + potion.name + ":");
@@ -261,7 +252,7 @@ public class PotionConfigGenerator {
 
         return prettyString;
     }
-    
+
     public static String getCapitalized(String target) {
         if (target.equals("II")) { // hacks
             return target;
@@ -269,65 +260,64 @@ public class PotionConfigGenerator {
         return target.substring(0, 1).toUpperCase() + target.substring(1).toLowerCase();
     }
 
-
     private static String getName(PotionEffectType type) {
         switch (type.getId()) {
-        case 1:
-            return "SPEED";
-        case 2:
-            return "SLOW";
-        case 3:
-            return "FAST_DIGGING";
-        case 4:
-            return "SLOW_DIGGING";
-        case 5:
-            return "INCREASE_DAMAGE";
-        case 6:
-            return "HEAL";
-        case 7:
-            return "HARM";
-        case 8:
-            return "JUMP";
-        case 9:
-            return "CONFUSION";
-        case 10:
-            return "REGENERATION";
-        case 11:
-            return "DAMAGE_RESISTANCE";
-        case 12:
-            return "FIRE_RESISTANCE";
-        case 13:
-            return "WATER_BREATHING";
-        case 14:
-            return "INVISIBILITY";
-        case 15:
-            return "BLINDNESS";
-        case 16:
-            return "NIGHT_VISION";
-        case 17:
-            return "HUNGER";
-        case 18:
-            return "WEAKNESS";
-        case 19:
-            return "POISON";
-        case 20:
-            return "WITHER";
-        case 21:
-            return "HEALTH_BOOST";
-        case 22:
-            return "ABSORPTION";
-        case 23:
-            return "SATURATION";
-        case 24:
-            return "GLOWING";
-        case 25:
-            return "LEVITATION";
-        case 26:
-            return "LUCK";
-        case 27:
-            return "UNLUCK";
-        default:
-            return "UNKNOWN_EFFECT_TYPE_" + type.getId();
+            case 1 :
+                return "SPEED";
+            case 2 :
+                return "SLOW";
+            case 3 :
+                return "FAST_DIGGING";
+            case 4 :
+                return "SLOW_DIGGING";
+            case 5 :
+                return "INCREASE_DAMAGE";
+            case 6 :
+                return "HEAL";
+            case 7 :
+                return "HARM";
+            case 8 :
+                return "JUMP";
+            case 9 :
+                return "CONFUSION";
+            case 10 :
+                return "REGENERATION";
+            case 11 :
+                return "DAMAGE_RESISTANCE";
+            case 12 :
+                return "FIRE_RESISTANCE";
+            case 13 :
+                return "WATER_BREATHING";
+            case 14 :
+                return "INVISIBILITY";
+            case 15 :
+                return "BLINDNESS";
+            case 16 :
+                return "NIGHT_VISION";
+            case 17 :
+                return "HUNGER";
+            case 18 :
+                return "WEAKNESS";
+            case 19 :
+                return "POISON";
+            case 20 :
+                return "WITHER";
+            case 21 :
+                return "HEALTH_BOOST";
+            case 22 :
+                return "ABSORPTION";
+            case 23 :
+                return "SATURATION";
+            case 24 :
+                return "GLOWING";
+            case 25 :
+                return "LEVITATION";
+            case 26 :
+                return "LUCK";
+            case 27 :
+                return "UNLUCK";
+            default :
+                return "UNKNOWN_EFFECT_TYPE_" + type.getId();
         }
     }
 
@@ -531,124 +521,95 @@ public class PotionConfigGenerator {
             HashMap<Ingredient, WriteablePotion> children = new HashMap<Ingredient, WriteablePotion>();
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.CONFUSION, (int) (450 * mod), 0), "NAUSEA");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.FAST_DIGGING, (int) (3600 * mod), 0), "HASTE");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.SLOW_DIGGING, (int) (3600 * mod), 0), "DULLNESS");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, (int) (450 * mod), 0), "RESISTANCE");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.BLINDNESS, (int) (225 * mod), 0), "BLINDNESS");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.HUNGER, (int) (900 * mod), 0), "HUNGER");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.WITHER, (int) (450 * mod), 0), "DECAY");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.ABSORPTION, (int) (1800 * mod), 0), "ABSORPTION");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.SATURATION, (int) (8 * mod), 0), "SATURATION");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
             data = new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(PotionEffectType.HEALTH_BOOST, (int) (1800 * mod), 0), "HEALTH_BOOST");
             children = new HashMap<Ingredient, WriteablePotion>();
-            if (material == Material.POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.75), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, data.data, effect, data.baseName));
-            } else if (material == Material.SPLASH_POTION) {
-                PotionEffect effect = new PotionEffect(data.effect.getType(), (int) (data.effect.getDuration() * 0.33), data.effect.getAmplifier());
-                children.put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, data.data, effect, data.baseName));
-            }
             children.put(new Ingredient(Material.GLOWSTONE_DUST), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() / 2, 1), data.baseName + "_II"));
             children.put(new Ingredient(Material.REDSTONE), new WriteablePotion(material, PotionType.UNCRAFTABLE, new PotionEffect(data.effect.getType(), data.effect.getDuration() * 2, 0), data.baseName + "_EXTENDED"));
+            for (WriteablePotion child : children.values()) {
+                mcMMOPotions.put(child, new HashMap<Ingredient, WriteablePotion>());
+            }
             mcMMOPotions.put(data, children);
         }
+        
+        // Add all material state changes
+        for (Entry<WriteablePotion, Map<Ingredient, WriteablePotion>> entry : mcMMOPotions.entrySet()) {
+            if (entry.getKey().mat == Material.POTION) {
+                PotionEffect effect = new PotionEffect(entry.getKey().effect.getType(), (int) (entry.getKey().effect.getDuration() * 0.75), entry.getKey().effect.getAmplifier());
+                entry.getValue().put(new Ingredient(Material.SULPHUR), new WriteablePotion(Material.SPLASH_POTION, entry.getKey().data, effect, entry.getKey().baseName));
+            } else if (entry.getKey().mat == Material.SPLASH_POTION) {
+                PotionEffect effect = new PotionEffect(entry.getKey().effect.getType(), (int) (entry.getKey().effect.getDuration() * 0.33), entry.getKey().effect.getAmplifier());
+                entry.getValue().put(new Ingredient(Material.DRAGONS_BREATH), new WriteablePotion(Material.LINGERING_POTION, entry.getKey().data, effect, entry.getKey().baseName));
+            }
+        }
     }
 }