Implements enchantment salvage toggle #23
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
				
			This commit is contained in:
		| @@ -188,7 +188,7 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> { | ||||
|      * @return <p>Whether to drop reforged items on the ground</p> | ||||
|      */ | ||||
|     public boolean getDropItem() { | ||||
|         return ConfigHelper.asBoolean(getValue(ScrapperSetting.DROP_ITEM)); | ||||
|         return asBoolean(ScrapperSetting.DROP_ITEM); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -228,6 +228,16 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> { | ||||
|         return getValue(setting).toString(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets the boolean value of the given setting | ||||
|      * | ||||
|      * @param setting <p>The setting to get the value of</p> | ||||
|      * @return <p>The value of the given setting as a boolean</p> | ||||
|      */ | ||||
|     private boolean asBoolean(@NotNull ScrapperSetting setting) { | ||||
|         return ConfigHelper.asBoolean(getValue(setting)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets the value of a setting, using the default if not set | ||||
|      * | ||||
| @@ -275,7 +285,16 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> { | ||||
|      * @return <p>True if extended salvaging is enabled</p> | ||||
|      */ | ||||
|     public boolean extendedSalvageEnabled() { | ||||
|         return ConfigHelper.asBoolean(getValue(ScrapperSetting.EXTENDED_SALVAGE_ENABLED)); | ||||
|         return asBoolean(ScrapperSetting.EXTENDED_SALVAGE_ENABLED); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Whether salvage of enchanted items is enabled | ||||
|      * | ||||
|      * @return <p>True of this scrapper can salvage enchanted items</p> | ||||
|      */ | ||||
|     public boolean salvageEnchanted() { | ||||
|         return asBoolean(ScrapperSetting.SALVAGE_ENCHANTED); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -341,4 +360,15 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> { | ||||
|         return asString(ScrapperSetting.PARTIAL_SALVAGE_MESSAGE); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Gets the message to display when explaining that this scrapper is unable to salvage enchanted items | ||||
|      * | ||||
|      * @return <p>The cannot salvage enchanted message</p> | ||||
|      */ | ||||
|     @NotNull | ||||
|     public String getCannotSalvageEnchantedMessage() { | ||||
|         return asString(ScrapperSetting.CANNOT_SALVAGE_ENCHANTED_MESSAGE); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -72,6 +72,13 @@ public enum ScrapperSetting implements Setting { | ||||
|      */ | ||||
|     EXTENDED_SALVAGE_ENABLED("extendedSalvageEnabled", SettingValueType.BOOLEAN, false, | ||||
|             "Whether to enable salvaging of non-repairable items, such as planks", true, false), | ||||
|  | ||||
|     /** | ||||
|      * The setting for whether the NPC should allow salvaging of enchanted items | ||||
|      */ | ||||
|     SALVAGE_ENCHANTED("salvageEnchanted", SettingValueType.BOOLEAN, false, | ||||
|             "Whether to enable salvaging of enchanted items. This is disabled by default because it's " + | ||||
|                     "possible to accidentally salvage items with very good enchantments.", true, false), | ||||
|      | ||||
|     /*----------- | ||||
|      | Messages | | ||||
| @@ -168,6 +175,10 @@ public enum ScrapperSetting implements Setting { | ||||
|             "&cI cannot extract all components from that damaged item.&r", | ||||
|             "The message to display when explaining expected partial yield as part of the cost message", true, true), | ||||
|  | ||||
|     CANNOT_SALVAGE_ENCHANTED_MESSAGE("cannotSalvageEnchantedMessage", SettingValueType.STRING, | ||||
|             "&cI'm sorry, but I'm unable to salvage enchanted items!", | ||||
|             "The message to display when asked to salvage an enchanted item, and that option is disabled", true, true), | ||||
|  | ||||
|     /*------------------ | ||||
|      | Global settings | | ||||
|      ------------------*/ | ||||
|   | ||||
| @@ -45,7 +45,6 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> { | ||||
|      * | ||||
|      * @return <p>The current settings for this NPC</p> | ||||
|      */ | ||||
|     @SuppressWarnings("unused") | ||||
|     @NotNull | ||||
|     public ScrapperNPCSettings getSettings() { | ||||
|         return config; | ||||
| @@ -58,7 +57,7 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> { | ||||
|      */ | ||||
|     @Override | ||||
|     public void load(@NotNull DataKey key) { | ||||
|         config.loadVariables(key); | ||||
|         getSettings().loadVariables(key); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -68,7 +67,7 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> { | ||||
|      */ | ||||
|     @Override | ||||
|     public void save(@NotNull DataKey key) { | ||||
|         config.saveVariables(key); | ||||
|         getSettings().saveVariables(key); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -78,38 +77,44 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> { | ||||
|      */ | ||||
|     public void startSession(@NotNull Player player) { | ||||
|         ItemStack itemInHand = player.getInventory().getItemInMainHand(); | ||||
|         List<Material> salvageAbleItems = this.config.getSalvageAbleItems(); | ||||
|         boolean extended = this.config.extendedSalvageEnabled(); | ||||
|         List<Material> salvageAbleItems = getSettings().getSalvageAbleItems(); | ||||
|         boolean extended = getSettings().extendedSalvageEnabled(); | ||||
|  | ||||
|         // Check if the item can be salvaged | ||||
|         if (!canBeSalvaged(player.getServer(), itemInHand, salvageAbleItems, extended)) { | ||||
|             sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholder(config.getInvalidItemMessage(), | ||||
|                     "{title}", config.getScrapperTitle())); | ||||
|             sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholder(getSettings().getInvalidItemMessage(), | ||||
|                     "{title}", getSettings().getScrapperTitle())); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         List<ItemStack> salvage = getSalvage(itemInHand, extended); | ||||
|         // Check if the item is enchanted, and whether this blacksmith can salvage it | ||||
|         if (!itemInHand.getEnchantments().isEmpty() && !getSettings().salvageEnchanted()) { | ||||
|             sendNPCMessage(this.npc, player, getSettings().getCannotSalvageEnchantedMessage()); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         // If extended mode is disabled, only allow repairable items to be salvaged | ||||
|         // Check if any salvage will be produced | ||||
|         List<ItemStack> salvage = getSalvage(itemInHand, extended); | ||||
|         boolean noUsefulSalvage = salvage == null || salvage.isEmpty(); | ||||
|         if (noUsefulSalvage) { | ||||
|             sendNPCMessage(this.npc, player, config.getTooDamagedMessage()); | ||||
|             sendNPCMessage(this.npc, player, getSettings().getTooDamagedMessage()); | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         //Start a new scrapper session for the player | ||||
|         currentSessionStartTime = System.currentTimeMillis(); | ||||
|         session = new SalvageSession(this, player, npc, config, salvage); | ||||
|         session = new SalvageSession(this, player, npc, getSettings(), salvage); | ||||
|         //Tell the player the cost of repairing the item | ||||
|         String cost = EconomyManager.formatScrapperCost(); | ||||
|  | ||||
|         String expectedYield; | ||||
|         if (ItemHelper.getDamage(itemInHand) <= 0) { | ||||
|             expectedYield = config.getFullSalvageMessage(); | ||||
|             expectedYield = getSettings().getFullSalvageMessage(); | ||||
|         } else { | ||||
|             expectedYield = config.getPartialSalvageMessage(); | ||||
|             expectedYield = getSettings().getPartialSalvageMessage(); | ||||
|         } | ||||
|  | ||||
|         sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholders(config.getCostMessage(), | ||||
|         sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholders(getSettings().getCostMessage(), | ||||
|                 List.of("{cost}", "{yield}"), List.of(cost, expectedYield))); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -163,6 +163,10 @@ scrapper: | ||||
|     # Whether to enable salvaging of non-repairable items, such as planks | ||||
|     extendedSalvageEnabled: false | ||||
|      | ||||
|     # Whether to enable salvaging of enchanted items. This is disabled by default because it's possible to accidentally | ||||
|     # salvage items with very good enchantments. | ||||
|     salvageEnchanted: false | ||||
|      | ||||
|     # Default values for messages used by NPCs | ||||
|     messages: | ||||
|       # The message to display when another player is using the scrapper | ||||
| @@ -202,4 +206,7 @@ scrapper: | ||||
|       fullSalvageMessage: "&aI should be able to extract all components from that pristine item.&r" | ||||
|        | ||||
|       # The yield message to display if trying to salvage a damaged item | ||||
|       partialSalvageMessage: "&cI cannot extract all components from that damaged item.&r" | ||||
|       partialSalvageMessage: "&cI cannot extract all components from that damaged item.&r" | ||||
|        | ||||
|       # The message to display when asked to salvage an enchanted item, and that option is disabled | ||||
|       cannotSalvageEnchantedMessage: "&cI'm sorry, but I'm unable to salvage enchanted items!" | ||||
		Reference in New Issue
	
	Block a user