From 9062dbcaaedcb13bebdc35da81b7eaac7866aecb Mon Sep 17 00:00:00 2001 From: nossr50 Date: Tue, 11 Jun 2019 03:50:13 -0700 Subject: [PATCH] Add minimum quantity back to the repair config --- Changelog.txt | 7 +++++++ pom.xml | 2 +- .../config/skills/repair/RepairConfig.java | 10 +++++++++- .../repair/repairables/RepairableFactory.java | 9 ++++++++- .../repair/repairables/SimpleRepairable.java | 18 +++++++++++++++++- 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 454180ccd..b01a34d69 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,10 @@ +Version 2.1.77 + Added minimum quantity back to Repair config + + NOTES: I removed this last patch because I did not consider that server admins might be allowing users to repair items without crafting recipes (as of last patch mcMMO determines minimum quantity via counting ingredients in a recipe) + If you do not define minimum quantity in the repair config, mcMMO will grab the minimum quantity automatically as I programmed it to do as of last patch, otherwise if it is defined, mcMMO will respect that and use that for calculations. + The minimum quanitty should be set to the number of ingredients used to craft the recipe, for example 8 for diamond chestplate etc, you do not need to define this unless you are allowing players to repair custom items. + Version 2.1.76 Advanced Salvage has been renamed to Scrap Collector Scrap Collector has 8 ranks, the first rank is unlocked at level 2 (Level 20 in RetroMode) diff --git a/pom.xml b/pom.xml index 85261dd01..d8d1fe306 100755 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.gmail.nossr50.mcMMO mcMMO - 2.1.76 + 2.1.77-SNAPSHOT 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 0c88041d8..6aebb9841 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 @@ -6,6 +6,7 @@ import com.gmail.nossr50.datatypes.skills.MaterialType; import com.gmail.nossr50.skills.repair.repairables.Repairable; import com.gmail.nossr50.skills.repair.repairables.RepairableFactory; import com.gmail.nossr50.util.ItemUtils; +import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.inventory.ItemStack; @@ -132,8 +133,15 @@ public class RepairConfig extends ConfigLoader { reason.add(key + " has an invalid MinimumLevel of " + minimumLevel); } + // Minimum Quantity + int minimumQuantity = config.getInt("Repairables." + key + ".MinimumQuantity"); + + if(minimumQuantity == 0) { + minimumQuantity = -1; + } + if (noErrorsInRepairable(reason)) { - Repairable repairable = RepairableFactory.getRepairable(itemMaterial, repairMaterial, minimumLevel, maximumDurability, repairItemType, repairMaterialType, xpMultiplier); + Repairable repairable = RepairableFactory.getRepairable(itemMaterial, repairMaterial, null, minimumLevel, maximumDurability, repairItemType, repairMaterialType, xpMultiplier, minimumQuantity); repairables.add(repairable); } } diff --git a/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java b/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java index df4b8718f..85ed7d8ae 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/repairables/RepairableFactory.java @@ -14,8 +14,15 @@ public class RepairableFactory { return getRepairable(itemMaterial, repairMaterial, null, minimumLevel, maximumDurability, repairItemType, repairMaterialType, xpMultiplier); } - public static Repairable getRepairable(Material itemMaterial, Material repairMaterial, String repairMaterialPrettyName, int minimumLevel, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier) { + public static Repairable getRepairable(Material itemMaterial, Material repairMaterial, String repairMaterialPrettyName, + int minimumLevel, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier) { // TODO: Add in loading from config what type of repairable we want. return new SimpleRepairable(itemMaterial, repairMaterial, repairMaterialPrettyName, minimumLevel, maximumDurability, repairItemType, repairMaterialType, xpMultiplier); } + + public static Repairable getRepairable(Material itemMaterial, Material repairMaterial, String repairMaterialPrettyName, + int minimumLevel, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier, int minQuantity) { + // TODO: Add in loading from config what type of repairable we want. + return new SimpleRepairable(itemMaterial, repairMaterial, repairMaterialPrettyName, minimumLevel, maximumDurability, repairItemType, repairMaterialType, xpMultiplier, minQuantity); + } } diff --git a/src/main/java/com/gmail/nossr50/skills/repair/repairables/SimpleRepairable.java b/src/main/java/com/gmail/nossr50/skills/repair/repairables/SimpleRepairable.java index 74a8544c5..6d5472b53 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/repairables/SimpleRepairable.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/repairables/SimpleRepairable.java @@ -15,6 +15,7 @@ public class SimpleRepairable implements Repairable { private final ItemType repairItemType; private final MaterialType repairMaterialType; private final double xpMultiplier; + private int minQuantity = -1; protected SimpleRepairable(Material type, Material repairMaterial, String repairMaterialPrettyName, int minimumLevel, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier) { this.itemMaterial = type; @@ -27,6 +28,18 @@ public class SimpleRepairable implements Repairable { this.xpMultiplier = xpMultiplier; } + protected SimpleRepairable(Material type, Material repairMaterial, String repairMaterialPrettyName, int minimumLevel, short maximumDurability, ItemType repairItemType, MaterialType repairMaterialType, double xpMultiplier, int minQuantity) { + this.itemMaterial = type; + this.repairMaterial = repairMaterial; + this.repairMaterialPrettyName = repairMaterialPrettyName; + this.repairItemType = repairItemType; + this.repairMaterialType = repairMaterialType; + this.minimumLevel = minimumLevel; + this.maximumDurability = maximumDurability; + this.xpMultiplier = xpMultiplier; + this.minQuantity = minQuantity; + } + @Override public Material getItemMaterial() { return itemMaterial; @@ -54,7 +67,10 @@ public class SimpleRepairable implements Repairable { @Override public int getMinimumQuantity() { - return Math.max(SkillUtils.getRepairAndSalvageQuantities(itemMaterial, repairMaterial), 2); + if(minQuantity != -1) + return Math.max(SkillUtils.getRepairAndSalvageQuantities(itemMaterial, repairMaterial), 2); + else + return minQuantity; } @Override