From 80a61d2d89570766c71a33088cd2f608a4fa224d Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sun, 2 Nov 2025 12:25:25 -0800 Subject: [PATCH] 2.2.044 Fix copper repair and salvage --- Changelog.txt | 3 + pom.xml | 2 +- .../config/skills/repair/RepairConfig.java | 45 +++++++----- .../config/skills/salvage/SalvageConfig.java | 69 +++++++++++-------- .../datatypes/skills/MaterialType.java | 3 + .../com/gmail/nossr50/util/ItemUtils.java | 8 +++ 6 files changed, 84 insertions(+), 46 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 97ff74946..0d5eabdca 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,6 @@ +Version 2.2.044 + Fixed copper armor and tools not working with Repair or Salvage + Version 2.2.043 Added support for the new copper tools and armor added in Minecraft 1.21.9 Added many missing buttons, trapdoors, doors, fence gates, etc to the ability/tool blacklists (see notes) diff --git a/pom.xml b/pom.xml index 6e182fb51..1ece79f95 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.gmail.nossr50.mcMMO mcMMO - 2.2.044-SNAPSHOT + 2.2.044 mcMMO https://github.com/mcMMO-Dev/mcMMO diff --git a/src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java b/src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java index 6d5be2199..61230d10c 100644 --- a/src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java +++ b/src/main/java/com/gmail/nossr50/config/skills/repair/RepairConfig.java @@ -1,5 +1,20 @@ package com.gmail.nossr50.config.skills.repair; +import static com.gmail.nossr50.util.ItemUtils.isCopperArmor; +import static com.gmail.nossr50.util.ItemUtils.isCopperTool; +import static com.gmail.nossr50.util.ItemUtils.isDiamondArmor; +import static com.gmail.nossr50.util.ItemUtils.isDiamondTool; +import static com.gmail.nossr50.util.ItemUtils.isGoldArmor; +import static com.gmail.nossr50.util.ItemUtils.isGoldTool; +import static com.gmail.nossr50.util.ItemUtils.isIronArmor; +import static com.gmail.nossr50.util.ItemUtils.isIronTool; +import static com.gmail.nossr50.util.ItemUtils.isLeatherArmor; +import static com.gmail.nossr50.util.ItemUtils.isNetheriteArmor; +import static com.gmail.nossr50.util.ItemUtils.isNetheriteTool; +import static com.gmail.nossr50.util.ItemUtils.isStoneTool; +import static com.gmail.nossr50.util.ItemUtils.isStringTool; +import static com.gmail.nossr50.util.ItemUtils.isWoodTool; + import com.gmail.nossr50.config.BukkitConfig; import com.gmail.nossr50.datatypes.skills.ItemType; import com.gmail.nossr50.datatypes.skills.MaterialType; @@ -63,27 +78,27 @@ public class RepairConfig extends BukkitConfig { String repairMaterialTypeString = config.getString( "Repairables." + key + ".MaterialType", "OTHER"); - if (!config.contains("Repairables." + key + ".MaterialType") && itemMaterial != null) { - ItemStack repairItem = new ItemStack(itemMaterial); + if (!config.contains("Repairables." + key + ".MaterialType")) { + final ItemStack repairItem = new ItemStack(itemMaterial); - if (ItemUtils.isWoodTool(repairItem)) { + if (isWoodTool(repairItem)) { repairMaterialType = MaterialType.WOOD; - } else if (ItemUtils.isStoneTool(repairItem)) { + } else if (isStoneTool(repairItem)) { repairMaterialType = MaterialType.STONE; - } else if (ItemUtils.isStringTool(repairItem)) { + } else if (isStringTool(repairItem)) { repairMaterialType = MaterialType.STRING; - } else if (ItemUtils.isLeatherArmor(repairItem)) { + } else if (isLeatherArmor(repairItem)) { repairMaterialType = MaterialType.LEATHER; - } else if (ItemUtils.isIronArmor(repairItem) || ItemUtils.isIronTool(repairItem)) { + } else if (isIronArmor(repairItem) || isIronTool(repairItem)) { repairMaterialType = MaterialType.IRON; - } else if (ItemUtils.isGoldArmor(repairItem) || ItemUtils.isGoldTool(repairItem)) { + } else if (isGoldArmor(repairItem) || isGoldTool(repairItem)) { repairMaterialType = MaterialType.GOLD; - } else if (ItemUtils.isDiamondArmor(repairItem) || ItemUtils.isDiamondTool( - repairItem)) { + } else if (isDiamondArmor(repairItem) || isDiamondTool(repairItem)) { repairMaterialType = MaterialType.DIAMOND; - } else if (ItemUtils.isNetheriteArmor(repairItem) || ItemUtils.isNetheriteTool( - repairItem)) { + } else if (isNetheriteArmor(repairItem) || isNetheriteTool(repairItem)) { repairMaterialType = MaterialType.NETHERITE; + } else if (isCopperTool(repairItem) || isCopperArmor(repairItem)) { + repairMaterialType = MaterialType.COPPER; } } else { try { @@ -105,9 +120,7 @@ public class RepairConfig extends BukkitConfig { } // Maximum Durability - short maximumDurability = (itemMaterial != null ? itemMaterial.getMaxDurability() - : (short) config.getInt( - "Repairables." + key + ".MaximumDurability")); + short maximumDurability = itemMaterial.getMaxDurability(); if (maximumDurability <= 0) { maximumDurability = (short) config.getInt( @@ -169,7 +182,7 @@ public class RepairConfig extends BukkitConfig { //Report unsupported StringBuilder stringBuilder = new StringBuilder(); - if (notSupported.size() > 0) { + if (!notSupported.isEmpty()) { stringBuilder.append( "mcMMO found the following materials in the Repair config that are not supported by the version of Minecraft running on this server: "); diff --git a/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java b/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java index b63da0d99..3a95334bb 100644 --- a/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java +++ b/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java @@ -1,5 +1,21 @@ package com.gmail.nossr50.config.skills.salvage; +import static com.gmail.nossr50.util.ItemUtils.isCopperArmor; +import static com.gmail.nossr50.util.ItemUtils.isCopperTool; +import static com.gmail.nossr50.util.ItemUtils.isDiamondArmor; +import static com.gmail.nossr50.util.ItemUtils.isDiamondTool; +import static com.gmail.nossr50.util.ItemUtils.isGoldArmor; +import static com.gmail.nossr50.util.ItemUtils.isGoldTool; +import static com.gmail.nossr50.util.ItemUtils.isIronArmor; +import static com.gmail.nossr50.util.ItemUtils.isIronTool; +import static com.gmail.nossr50.util.ItemUtils.isLeatherArmor; +import static com.gmail.nossr50.util.ItemUtils.isNetheriteArmor; +import static com.gmail.nossr50.util.ItemUtils.isNetheriteTool; +import static com.gmail.nossr50.util.ItemUtils.isPrismarineTool; +import static com.gmail.nossr50.util.ItemUtils.isStoneTool; +import static com.gmail.nossr50.util.ItemUtils.isStringTool; +import static com.gmail.nossr50.util.ItemUtils.isWoodTool; + import com.gmail.nossr50.config.BukkitConfig; import com.gmail.nossr50.datatypes.database.UpgradeType; import com.gmail.nossr50.datatypes.skills.ItemType; @@ -50,9 +66,9 @@ public class SalvageConfig extends BukkitConfig { mcMMO.p.getLogger().log( Level.INFO, "Fixing incorrect Salvage quantities on Netherite gear, this will only run once..."); - for (String namespacedkey : mcMMO.getMaterialMapStore().getNetheriteArmor()) { + for (String namespacedKey : mcMMO.getMaterialMapStore().getNetheriteArmor()) { config.set( - "Salvageables." + namespacedkey.toUpperCase(Locale.ENGLISH) + "Salvageables." + namespacedKey.toUpperCase(Locale.ENGLISH) + ".MaximumQuantity", 4); //TODO: Doesn't make sense to default to 4 for everything } @@ -84,34 +100,32 @@ public class SalvageConfig extends BukkitConfig { // Salvage Material Type MaterialType salvageMaterialType = MaterialType.OTHER; - String salvageMaterialTypeString = config.getString( + final String salvageMaterialTypeString = config.getString( "Salvageables." + key + ".MaterialType", "OTHER"); - if (!config.contains("Salvageables." + key + ".MaterialType") && itemMaterial != null) { - ItemStack salvageItem = new ItemStack(itemMaterial); + if (!config.contains("Salvageables." + key + ".MaterialType")) { + final ItemStack salvageItem = new ItemStack(itemMaterial); - if (ItemUtils.isWoodTool(salvageItem)) { + if (isWoodTool(salvageItem)) { salvageMaterialType = MaterialType.WOOD; - } else if (ItemUtils.isStoneTool(salvageItem)) { + } else if (isStoneTool(salvageItem)) { salvageMaterialType = MaterialType.STONE; - } else if (ItemUtils.isStringTool(salvageItem)) { + } else if (isStringTool(salvageItem)) { salvageMaterialType = MaterialType.STRING; - } else if (ItemUtils.isPrismarineTool(salvageItem)) { + } else if (isPrismarineTool(salvageItem)) { salvageMaterialType = MaterialType.PRISMARINE; - } else if (ItemUtils.isLeatherArmor(salvageItem)) { + } else if (isLeatherArmor(salvageItem)) { salvageMaterialType = MaterialType.LEATHER; - } else if (ItemUtils.isIronArmor(salvageItem) || ItemUtils.isIronTool( - salvageItem)) { + } else if (isIronArmor(salvageItem) || isIronTool(salvageItem)) { salvageMaterialType = MaterialType.IRON; - } else if (ItemUtils.isGoldArmor(salvageItem) || ItemUtils.isGoldTool( - salvageItem)) { + } else if (isGoldArmor(salvageItem) || isGoldTool(salvageItem)) { salvageMaterialType = MaterialType.GOLD; - } else if (ItemUtils.isDiamondArmor(salvageItem) || ItemUtils.isDiamondTool( - salvageItem)) { + } else if (isDiamondArmor(salvageItem) || isDiamondTool(salvageItem)) { salvageMaterialType = MaterialType.DIAMOND; - } else if (ItemUtils.isNetheriteTool(salvageItem) || ItemUtils.isNetheriteArmor( - salvageItem)) { + } else if (isNetheriteTool(salvageItem) || isNetheriteArmor(salvageItem)) { salvageMaterialType = MaterialType.NETHERITE; + } else if (isCopperTool(salvageItem) || isCopperArmor(salvageItem)) { + salvageMaterialType = MaterialType.COPPER; } } else { try { @@ -124,8 +138,7 @@ public class SalvageConfig extends BukkitConfig { } // Salvage Material - String salvageMaterialName = config.getString( - "Salvageables." + key + ".SalvageMaterial"); + String salvageMaterialName = config.getString("Salvageables." + key + ".SalvageMaterial"); Material salvageMaterial = (salvageMaterialName == null ? salvageMaterialType.getDefaultMaterial() : Material.matchMaterial(salvageMaterialName)); @@ -136,16 +149,14 @@ public class SalvageConfig extends BukkitConfig { } // Maximum Durability - short maximumDurability = (itemMaterial != null ? itemMaterial.getMaxDurability() - : (short) config.getInt( - "Salvageables." + key + ".MaximumDurability")); + short maximumDurability = itemMaterial.getMaxDurability(); // Item Type ItemType salvageItemType = ItemType.OTHER; String salvageItemTypeString = config.getString("Salvageables." + key + ".ItemType", "OTHER"); - if (!config.contains("Salvageables." + key + ".ItemType") && itemMaterial != null) { + if (!config.contains("Salvageables." + key + ".ItemType")) { ItemStack salvageItem = new ItemStack(itemMaterial); if (ItemUtils.isMinecraftTool(salvageItem)) { @@ -170,11 +181,11 @@ public class SalvageConfig extends BukkitConfig { } // Maximum Quantity - int maximumQuantity = itemMaterial != null ? SkillUtils.getRepairAndSalvageQuantities( - itemMaterial, - salvageMaterial) : config.getInt("Salvageables." + key + ".MaximumQuantity", 1); + int maximumQuantity = SkillUtils.getRepairAndSalvageQuantities( + itemMaterial, + salvageMaterial); - if (maximumQuantity <= 0 && itemMaterial != null) { + if (maximumQuantity <= 0) { maximumQuantity = config.getInt("Salvageables." + key + ".MaximumQuantity", 1); } @@ -206,7 +217,7 @@ public class SalvageConfig extends BukkitConfig { //Report unsupported StringBuilder stringBuilder = new StringBuilder(); - if (notSupported.size() > 0) { + if (!notSupported.isEmpty()) { stringBuilder.append( "mcMMO found the following materials in the Salvage config that are not supported by the version of Minecraft running on this server: "); diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/MaterialType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/MaterialType.java index f66798be9..47984eae5 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/MaterialType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/MaterialType.java @@ -8,6 +8,7 @@ public enum MaterialType { WOOD, STONE, IRON, + COPPER, GOLD, DIAMOND, NETHERITE, @@ -45,6 +46,8 @@ public enum MaterialType { } case PRISMARINE: return Material.PRISMARINE_CRYSTALS; + case COPPER: + return Material.COPPER_INGOT; case OTHER: default: diff --git a/src/main/java/com/gmail/nossr50/util/ItemUtils.java b/src/main/java/com/gmail/nossr50/util/ItemUtils.java index 7724d0c02..50138ea68 100644 --- a/src/main/java/com/gmail/nossr50/util/ItemUtils.java +++ b/src/main/java/com/gmail/nossr50/util/ItemUtils.java @@ -380,6 +380,10 @@ public final class ItemUtils { return mcMMO.getMaterialMapStore().isIronArmor(item.getType().getKey().getKey()); } + public static boolean isCopperArmor(ItemStack item) { + return mcMMO.getMaterialMapStore().isCopperArmor(item.getType().getKey().getKey()); + } + /** * Checks to see if an item is a diamond armor piece. * @@ -452,6 +456,10 @@ public final class ItemUtils { return mcMMO.getMaterialMapStore().isPrismarineTool(item.getType().getKey().getKey()); } + public static boolean isCopperTool(ItemStack item) { + return mcMMO.getMaterialMapStore().isCopperTool(item.getType().getKey().getKey()); + } + /** * Checks to see if an item is a gold tool. *