From 30bc73be7d8c4798401487dffb5d36637a8bb406 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Tue, 16 Apr 2019 11:17:56 -0700 Subject: [PATCH] Repair no longer consumes items with item lore + Fixing logic errors in repair. --- Changelog.txt | 2 ++ .../experience/ConfigExperienceRepair.java | 6 ++--- .../nossr50/skills/repair/RepairManager.java | 24 +++++++++++++++++-- .../resources/locale/locale_en_US.properties | 1 + 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index fa254ef94..73f65a46f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -13,6 +13,8 @@ Version 2.2.0 mcMMO will now warn you in the console if it thinks you are running incompatible server software Parties no longer have a cap, you can level them forever for bragging rights You can now specify multiple repair-items for an item (such as specifying that a wooden sword can be repaired by all types of planks) + Repair no longer consumes materials with item lore, players are informed that they cannot repair with that material if its the only matching repair material in their inventory + Added new locale string - Repair.NoBasicRepairMatsFound Simplified the config entries for Repairables in the Repair config Repairables in the repair config now use their internal registry key names instead of Bukkit material names Diamond Armor XP multiplier vanilla config setting reduced from 6x -> 2x diff --git a/src/main/java/com/gmail/nossr50/config/hocon/experience/ConfigExperienceRepair.java b/src/main/java/com/gmail/nossr50/config/hocon/experience/ConfigExperienceRepair.java index f4cf9edff..426547a90 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/experience/ConfigExperienceRepair.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/experience/ConfigExperienceRepair.java @@ -32,9 +32,9 @@ public class ConfigExperienceRepair { @Setting(value = "Repair-XP-Base", comment = "The base amount of XP for repairing an item." + "\nThe repair XP formula is a simple multiplication of these 4 values in this order" + - "\nThe amount repair (0.0 to 1.0)" + - "\nThe item XP multiplier defined in the Repair config" + - "\nThe Base Repair XP defined here (default 1000.0D)" + + "\nThe % amount repaired (0.0 to 1.0)" + + "\nThe Item XP multiplier defined in the Repair config (not this config)" + + "\nThe Base Repair XP defined here (default 1000.0)" + "\nAnd finally, the XP multiplier of the item material category defined in this config." + "\nDefault value: "+REPAIR_XP_BASE_DEFAULT) private double repairXPBase = REPAIR_XP_BASE_DEFAULT; diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java index d3cfecb0a..9c2c9405e 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -94,14 +94,34 @@ public class RepairManager extends SkillManager { PlayerInventory inventory = player.getInventory(); Material repairMaterial = null; + boolean foundNonBasicMaterial = false; //Find the first compatible repair material for(Material repairMaterialCandidate : repairable.getRepairMaterials()) { - if(player.getInventory().contains(new ItemStack(repairMaterialCandidate))) - repairMaterial = repairMaterialCandidate; + for(ItemStack is : player.getInventory().getContents()) + { + if(is.getType() == repairMaterialCandidate) + { + if(is.getItemMeta().getLore().isEmpty()) + { + repairMaterial = repairMaterialCandidate; + break; + } else { + foundNonBasicMaterial = true; + } + } + } } + /* Abort the repair if no compatible basic repairing item found */ + if(repairMaterial == null && foundNonBasicMaterial == true) + { + player.sendMessage(LocaleLoader.getString("Repair.NoBasicRepairMatsFound")); + return; + } + + //byte repairMaterialMetadata = repairable.getRepairMaterialMetadata(); ItemStack toRemove = new ItemStack(repairMaterial); diff --git a/src/main/resources/locale/locale_en_US.properties b/src/main/resources/locale/locale_en_US.properties index 3150524bc..4b55a4d29 100644 --- a/src/main/resources/locale/locale_en_US.properties +++ b/src/main/resources/locale/locale_en_US.properties @@ -364,6 +364,7 @@ Repair.Skills.Adept=[[RED]]You must be level [[YELLOW]]{0}[[RED]] to repair [[YE Repair.Skills.FeltEasy=[[GRAY]]That felt easy. Repair.Skills.FullDurability=[[GRAY]]That is at full durability. Repair.Skills.StackedItems=[[DARK_RED]]You can't repair stacked items. +Repair.NoBasicRepairMatsFound=[[RED]]You can only repair using basic materials. Repair.Pretty.Name=Repair #Arcane Forging Repair.Arcane.Downgrade=Arcane power has decreased for this item.