Browse Source

Rework custom tool config.

** YOU WILL NEED TO UPDATE YOUR CONFIG TO THE NEW FORMAT **
GJ 11 years ago
parent
commit
fc6c7bb1de

+ 1 - 1
Changelog.txt

@@ -8,7 +8,7 @@ Key:
   - Removal
 
 Version 1.4.07-dev
- + Added Carrot on a Stick, Bucket, and Flint & Steel to repair.vanilla.yml
+ + Added Carrot on a Stick and Flint & Steel to repair.vanilla.yml
  + Added horses to the "Shake" ability
  + Added ability to summon horses via "Call of the Wild" using apples
  + Added XP gain to Taming for horses

+ 3 - 1
src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java

@@ -10,6 +10,8 @@ import org.bukkit.inventory.ItemStack;
 
 import com.gmail.nossr50.config.ConfigLoader;
 import com.gmail.nossr50.skills.repair.Repair;
+import com.gmail.nossr50.skills.repair.RepairItemType;
+import com.gmail.nossr50.skills.repair.RepairMaterialType;
 import com.gmail.nossr50.skills.repair.Repairable;
 import com.gmail.nossr50.skills.repair.RepairableFactory;
 
@@ -94,7 +96,7 @@ public class CustomArmorConfig extends ConfigLoader {
                     durability = (short) config.getInt(armorType + "." + armorName + ".Durability", 70);
                 }
 
-                repairables.add(RepairableFactory.getRepairable(armorMaterial, repairMaterial, repairData, repairQuantity, durability));
+                repairables.add(RepairableFactory.getRepairable(armorMaterial, repairMaterial, repairData, repairQuantity, 0, durability, RepairItemType.ARMOR, RepairMaterialType.OTHER, 1.0));
             }
 
             materialList.add(armorMaterial);

+ 1 - 1
src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java

@@ -65,7 +65,7 @@ public class CustomEntityConfig extends ConfigLoader {
             CustomEntity entity;
 
             if (id == 0) {
-                plugin.getLogger().warning("Missing ID. This block will be skipped.");
+                plugin.getLogger().warning("Missing ID. This entity will be skipped.");
                 continue;
             }
 

+ 49 - 36
src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java

@@ -7,9 +7,13 @@ import java.util.Set;
 
 import org.bukkit.Material;
 import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.inventory.ItemStack;
 
 import com.gmail.nossr50.config.ConfigLoader;
 import com.gmail.nossr50.datatypes.mods.CustomTool;
+import com.gmail.nossr50.skills.repair.Repair;
+import com.gmail.nossr50.skills.repair.RepairItemType;
+import com.gmail.nossr50.skills.repair.RepairMaterialType;
 import com.gmail.nossr50.skills.repair.Repairable;
 import com.gmail.nossr50.skills.repair.RepairableFactory;
 
@@ -17,16 +21,15 @@ public class CustomToolConfig extends ConfigLoader {
     private static CustomToolConfig instance;
     private List<Repairable> repairables;
 
-    public List<Integer> customAxeIDs     = new ArrayList<Integer>();
-    public List<Integer> customBowIDs     = new ArrayList<Integer>();
-    public List<Integer> customHoeIDs     = new ArrayList<Integer>();
-    public List<Integer> customPickaxeIDs = new ArrayList<Integer>();
-    public List<Integer> customShovelIDs  = new ArrayList<Integer>();
-    public List<Integer> customSwordIDs   = new ArrayList<Integer>();
-    public List<Integer> customIDs        = new ArrayList<Integer>();
+    public List<Material> customAxes     = new ArrayList<Material>();
+    public List<Material> customBows     = new ArrayList<Material>();
+    public List<Material> customHoes     = new ArrayList<Material>();
+    public List<Material> customPickaxes = new ArrayList<Material>();
+    public List<Material> customShovels  = new ArrayList<Material>();
+    public List<Material> customSwords   = new ArrayList<Material>();
+    public List<Material> customTool     = new ArrayList<Material>();
 
-    public List<CustomTool> customToolList = new ArrayList<CustomTool>();
-    public HashMap<Integer, CustomTool> customTools = new HashMap<Integer, CustomTool>();
+    public HashMap<Material, CustomTool> customToolMap = new HashMap<Material, CustomTool>();
 
     private CustomToolConfig() {
         super("ModConfigs", "tools.yml");
@@ -53,15 +56,15 @@ public class CustomToolConfig extends ConfigLoader {
     protected void loadKeys() {
         repairables = new ArrayList<Repairable>();
 
-        loadTool("Axes", customAxeIDs);
-        loadTool("Bows", customBowIDs);
-        loadTool("Hoes", customHoeIDs);
-        loadTool("Pickaxes", customPickaxeIDs);
-        loadTool("Shovels", customShovelIDs);
-        loadTool("Swords", customSwordIDs);
+        loadTool("Axes", customAxes);
+        loadTool("Bows", customBows);
+        loadTool("Hoes", customHoes);
+        loadTool("Pickaxes", customPickaxes);
+        loadTool("Shovels", customShovels);
+        loadTool("Swords", customSwords);
     }
 
-    private void loadTool(String toolType, List<Integer> idList) {
+    private void loadTool(String toolType, List<Material> materialList) {
         ConfigurationSection toolSection = config.getConfigurationSection(toolType);
 
         if (toolSection == null) {
@@ -71,38 +74,48 @@ public class CustomToolConfig extends ConfigLoader {
         Set<String> toolConfigSet = toolSection.getKeys(false);
 
         for (String toolName : toolConfigSet) {
-            int id = config.getInt(toolType + "." + toolName + ".ID", 0);
-            double multiplier = config.getDouble(toolType + "." + toolName + ".XP_Modifier", 1.0);
-            boolean abilityEnabled = config.getBoolean(toolType + "." + toolName + ".Ability_Enabled", true);
-            int tier = config.getInt(toolType + "." + toolName + ".Tier", 1);
-            boolean repairable = config.getBoolean(toolType + "." + toolName + ".Repairable");
-            int repairID = config.getInt(toolType + "." + toolName + ".Repair_Material_ID", 0);
-            byte repairData = (byte) config.getInt(toolType + "." + toolName + ".Repair_Material_Data_Value", 0);
-            int repairQuantity = config.getInt(toolType + "." + toolName + ".Repair_Material_Quantity", 0);
-            short durability = (short) config.getInt(toolType + "." + toolName + ".Durability", 0);
+            Material toolMaterial = Material.matchMaterial(toolName);
 
-            if (id == 0) {
-                plugin.getLogger().warning("Missing ID. This item will be skipped.");
+            if (toolMaterial == null) {
+                plugin.getLogger().warning("Invalid material name. This item will be skipped.");
                 continue;
             }
 
-            if (repairable && (repairID == 0 || repairQuantity == 0 || durability == 0)) {
+            boolean repairable = config.getBoolean(toolType + "." + toolName + ".Repairable");
+            Material repairMaterial = Material.matchMaterial(config.getString(toolType + "." + toolName + ".Repair_Material", ""));
+
+            if (repairMaterial == null) {
                 plugin.getLogger().warning("Incomplete repair information. This item will be unrepairable.");
                 repairable = false;
             }
 
-            CustomTool tool;
-
             if (repairable) {
-                repairables.add(RepairableFactory.getRepairable(Material.getMaterial(id), Material.getMaterial(repairID), repairData, repairQuantity, durability));
+                byte repairData = (byte) config.getInt(toolType + "." + toolName + ".Repair_Material_Data_Value", -1);
+                int repairQuantity = Repair.getRepairAndSalvageQuantities(new ItemStack(toolMaterial), repairMaterial, repairData);
+
+                if (repairQuantity == 0) {
+                    repairQuantity = config.getInt(toolType + "." + toolName + ".Repair_Material_Data_Quantity", 2);
+                }
+
+                short durability = toolMaterial.getMaxDurability();
+
+                if (durability == 0) {
+                    durability = (short) config.getInt(toolType + "." + toolName + ".Durability", 60);
+                }
+
+                repairables.add(RepairableFactory.getRepairable(toolMaterial, repairMaterial, repairData, 0, repairQuantity, durability, RepairItemType.TOOL, RepairMaterialType.OTHER, 1.0));
             }
 
-            tool = new CustomTool(tier, abilityEnabled, multiplier, id);
+            double multiplier = config.getDouble(toolType + "." + toolName + ".XP_Modifier", 1.0);
+            boolean abilityEnabled = config.getBoolean(toolType + "." + toolName + ".Ability_Enabled", true);
+            int tier = config.getInt(toolType + "." + toolName + ".Tier", 1);
+
+            CustomTool tool = new CustomTool(tier, abilityEnabled, multiplier);
 
-            idList.add(id);
-            customIDs.add(id);
-            customToolList.add(tool);
-            customTools.put(id, tool);
+            materialList.add(toolMaterial);
+            customTool.add(toolMaterial);
+            customToolMap.put(toolMaterial, tool);
         }
     }
 }
+

+ 1 - 25
src/main/java/com/gmail/nossr50/datatypes/mods/CustomTool.java

@@ -1,49 +1,25 @@
 package com.gmail.nossr50.datatypes.mods;
 
-import org.bukkit.Material;
-
 public class CustomTool {
-    private Material material;
     private double xpMultiplier;
     private boolean abilityEnabled;
     private int tier;
 
-    public CustomTool(int tier, boolean abilityEnabled, double xpMultiplier, int itemID) {
-        this.material = Material.getMaterial(itemID);
+    public CustomTool(int tier, boolean abilityEnabled, double xpMultiplier) {
         this.xpMultiplier = xpMultiplier;
         this.abilityEnabled = abilityEnabled;
         this.tier = tier;
     }
 
-    public Material getType() {
-        return material;
-    }
-
-    public void setType(Material material) {
-        this.material = material;
-    }
-
     public double getXpMultiplier() {
         return xpMultiplier;
     }
 
-    public void setXpMultiplier(Double xpMultiplier) {
-        this.xpMultiplier = xpMultiplier;
-    }
-
     public boolean isAbilityEnabled() {
         return abilityEnabled;
     }
 
-    public void setAbilityEnabled(boolean abilityEnabled) {
-        this.abilityEnabled = abilityEnabled;
-    }
-
     public int getTier() {
         return tier;
     }
-
-    public void setTier(int tier) {
-        this.tier = tier;
-    }
 }

+ 20 - 10
src/main/java/com/gmail/nossr50/util/ItemUtils.java

@@ -21,7 +21,9 @@ public class ItemUtils {
      * @return true if the item is a sword, false otherwise
      */
     public static boolean isSword(ItemStack item) {
-        switch (item.getType()) {
+        Material type = item.getType();
+
+        switch (type) {
             case DIAMOND_SWORD:
             case GOLD_SWORD:
             case IRON_SWORD:
@@ -30,7 +32,7 @@ public class ItemUtils {
                 return true;
 
             default:
-                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customSwordIDs.contains(item.getTypeId()));
+                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customSwords.contains(type));
         }
     }
 
@@ -41,7 +43,9 @@ public class ItemUtils {
      * @return true if the item is a hoe, false otherwise
      */
     public static boolean isHoe(ItemStack item) {
-        switch (item.getType()) {
+        Material type = item.getType();
+
+        switch (type) {
             case DIAMOND_HOE:
             case GOLD_HOE:
             case IRON_HOE:
@@ -50,7 +54,7 @@ public class ItemUtils {
                 return true;
 
             default:
-                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customHoeIDs.contains(item.getTypeId()));
+                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customHoes.contains(type));
         }
     }
 
@@ -61,7 +65,9 @@ public class ItemUtils {
      * @return true if the item is a shovel, false otherwise
      */
     public static boolean isShovel(ItemStack item) {
-        switch (item.getType()) {
+        Material type = item.getType();
+
+        switch (type) {
             case DIAMOND_SPADE:
             case GOLD_SPADE:
             case IRON_SPADE:
@@ -70,7 +76,7 @@ public class ItemUtils {
                 return true;
 
             default:
-                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customShovelIDs.contains(item.getTypeId()));
+                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customShovels.contains(type));
         }
     }
 
@@ -81,7 +87,9 @@ public class ItemUtils {
      * @return true if the item is an axe, false otherwise
      */
     public static boolean isAxe(ItemStack item) {
-        switch (item.getType()) {
+        Material type = item.getType();
+
+        switch (type) {
             case DIAMOND_AXE:
             case GOLD_AXE:
             case IRON_AXE:
@@ -90,7 +98,7 @@ public class ItemUtils {
                 return true;
 
             default:
-                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customAxeIDs.contains(item.getTypeId()));
+                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customAxes.contains(type));
         }
     }
 
@@ -101,7 +109,9 @@ public class ItemUtils {
      * @return true if the item is a pickaxe, false otherwise
      */
     public static boolean isPickaxe(ItemStack item) {
-        switch (item.getType()) {
+        Material type = item.getType();
+
+        switch (type) {
             case DIAMOND_PICKAXE:
             case GOLD_PICKAXE:
             case IRON_PICKAXE:
@@ -110,7 +120,7 @@ public class ItemUtils {
                 return true;
 
             default:
-                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customPickaxeIDs.contains(item.getTypeId()));
+                return (Config.getInstance().getToolModsEnabled() && CustomToolConfig.getInstance().customPickaxes.contains(type));
         }
     }
 

+ 2 - 2
src/main/java/com/gmail/nossr50/util/ModUtils.java

@@ -31,7 +31,7 @@ public final class ModUtils {
      * @return the tool if it exists, null otherwise
      */
     public static CustomTool getToolFromItemStack(ItemStack item) {
-        return CustomToolConfig.getInstance().customTools.get(item.getTypeId());
+        return CustomToolConfig.getInstance().customToolMap.get(item.getType());
     }
 
     /**
@@ -253,7 +253,7 @@ public final class ModUtils {
      * @return true if the item is a custom tool, false otherwise
      */
     public static boolean isCustomTool(ItemStack item) {
-        if (customToolsEnabled && CustomToolConfig.getInstance().customTools.containsKey(item.getTypeId())) {
+        if (customToolsEnabled && CustomToolConfig.getInstance().customTool.contains(item.getType())) {
             return true;
         }
 

+ 0 - 3
src/main/resources/repair.vanilla.yml

@@ -102,9 +102,6 @@ Repairables:
     SHEARS:
         MinimumLevel: 0
         XpMultiplier: .5
-    BUCKET:
-        MinimumLevel: 0
-        XpMultiplier: 1
     FLINT_AND_STEEL:
         MinimumLevel: 0
         XpMultiplier: .3

+ 13 - 30
src/main/resources/tools.yml

@@ -3,147 +3,130 @@
 ###
 Axes:
     Axe_1:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
     Axe_2:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
-
 #
 #  Settings for Bows
 ###
 Bows:
     Bow_1:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
     Bow_2:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
-
 #
 #  Settings for Hoes
 ###
 Hoes:
     Hoe_1:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
     Hoe_2:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
-
 #
 #  Settings for Pickaxes
 ###
 Pickaxes:
     Pickaxe_1:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
     Pickaxe_2:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
-
 #
 #  Settings for Shovels
 ###
 Shovels:
     Shovel_1:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
     Shovel_2:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
-
 #
 #  Settings for Swords
 ###
 Swords:
     Sword_1:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
         Durability: 9999
     Sword_2:
-        ID: 999
         XP_Modifer: 1.0
         Ability_Enabled: true
         Tier: 1
         Repairable: true
-        Repair_Material_ID: 99
+        Repair_Material: REPAIR_MATERIAL_NAME
         Repair_Material_Data_Value: 0
         Repair_Material_Quantity: 9
-        Durability: 9999
+        Durability: 9999