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