diff --git a/Changelog.txt b/Changelog.txt index e45bdddea..ac18f99e4 100644 --- a/Changelog.txt +++ b/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 diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java index b033e1298..406a94825 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java +++ b/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); diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java index 04abfa33a..fcb2d6c00 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java +++ b/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; } diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java index 433422e35..064004ce7 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java +++ b/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 repairables; - public List customAxeIDs = new ArrayList(); - public List customBowIDs = new ArrayList(); - public List customHoeIDs = new ArrayList(); - public List customPickaxeIDs = new ArrayList(); - public List customShovelIDs = new ArrayList(); - public List customSwordIDs = new ArrayList(); - public List customIDs = new ArrayList(); + public List customAxes = new ArrayList(); + public List customBows = new ArrayList(); + public List customHoes = new ArrayList(); + public List customPickaxes = new ArrayList(); + public List customShovels = new ArrayList(); + public List customSwords = new ArrayList(); + public List customTool = new ArrayList(); - public List customToolList = new ArrayList(); - public HashMap customTools = new HashMap(); + public HashMap customToolMap = new HashMap(); private CustomToolConfig() { super("ModConfigs", "tools.yml"); @@ -53,15 +56,15 @@ public class CustomToolConfig extends ConfigLoader { protected void loadKeys() { repairables = new ArrayList(); - 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 idList) { + private void loadTool(String toolType, List materialList) { ConfigurationSection toolSection = config.getConfigurationSection(toolType); if (toolSection == null) { @@ -71,38 +74,48 @@ public class CustomToolConfig extends ConfigLoader { Set 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); - idList.add(id); - customIDs.add(id); - customToolList.add(tool); - customTools.put(id, tool); + CustomTool tool = new CustomTool(tier, abilityEnabled, multiplier); + + materialList.add(toolMaterial); + customTool.add(toolMaterial); + customToolMap.put(toolMaterial, tool); } } } + diff --git a/src/main/java/com/gmail/nossr50/datatypes/mods/CustomTool.java b/src/main/java/com/gmail/nossr50/datatypes/mods/CustomTool.java index 954f75e7c..93c24dfab 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/mods/CustomTool.java +++ b/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; - } } diff --git a/src/main/java/com/gmail/nossr50/util/ItemUtils.java b/src/main/java/com/gmail/nossr50/util/ItemUtils.java index c6ef6acef..37db7bcc0 100644 --- a/src/main/java/com/gmail/nossr50/util/ItemUtils.java +++ b/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)); } } diff --git a/src/main/java/com/gmail/nossr50/util/ModUtils.java b/src/main/java/com/gmail/nossr50/util/ModUtils.java index f7031625b..0aa8ab883 100644 --- a/src/main/java/com/gmail/nossr50/util/ModUtils.java +++ b/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; } diff --git a/src/main/resources/repair.vanilla.yml b/src/main/resources/repair.vanilla.yml index 9e9b67ab7..4f8c1f50a 100644 --- a/src/main/resources/repair.vanilla.yml +++ b/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 diff --git a/src/main/resources/tools.yml b/src/main/resources/tools.yml index e3fe63efd..22fbfbb7a 100644 --- a/src/main/resources/tools.yml +++ b/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 \ No newline at end of file