Adds a new check for items with full durability (#4)
This commit is contained in:
		@@ -43,7 +43,9 @@ public enum NPCSetting {
 | 
			
		||||
    START_REFORGE_MESSAGE("defaults.messages.startReforgeMessage", SettingValueType.STRING,
 | 
			
		||||
            "&eOk, let's see what I can do...", "startReforgeMessage"),
 | 
			
		||||
    SUCCESS_MESSAGE("defaults.messages.successMessage", SettingValueType.STRING,
 | 
			
		||||
            "There you go! All better!", "successMessage");
 | 
			
		||||
            "There you go! All better!", "successMessage"),
 | 
			
		||||
    NOT_DAMAGED_MESSAGE("defaults.messages.notDamagedMessage", SettingValueType.STRING,
 | 
			
		||||
            "&cThat item is not in need of repair", "notDamagedMessage");
 | 
			
		||||
 | 
			
		||||
    private final String path;
 | 
			
		||||
    private final String childPath;
 | 
			
		||||
 
 | 
			
		||||
@@ -117,6 +117,15 @@ public class NPCSettings {
 | 
			
		||||
        return asString(NPCSetting.INVALID_ITEM_MESSAGE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the message to display when the presented item is at full durability
 | 
			
		||||
     *
 | 
			
		||||
     * @return <p>The not damaged message</p>
 | 
			
		||||
     */
 | 
			
		||||
    public String getNotDamagedMessage() {
 | 
			
		||||
        return asString(NPCSetting.NOT_DAMAGED_MESSAGE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the message to display when a blacksmith starts reforging an item
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -2,12 +2,12 @@ package net.knarcraft.blacksmith.manager;
 | 
			
		||||
 | 
			
		||||
import net.knarcraft.blacksmith.BlacksmithPlugin;
 | 
			
		||||
import net.knarcraft.blacksmith.config.GlobalSettings;
 | 
			
		||||
import net.knarcraft.blacksmith.util.ItemHelper;
 | 
			
		||||
import net.milkbowl.vault.economy.Economy;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
import org.bukkit.enchantments.Enchantment;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
import org.bukkit.inventory.meta.Damageable;
 | 
			
		||||
import org.bukkit.plugin.RegisteredServiceProvider;
 | 
			
		||||
import org.bukkit.plugin.ServicesManager;
 | 
			
		||||
 | 
			
		||||
@@ -72,37 +72,6 @@ public class EconomyManager {
 | 
			
		||||
        economy.withdrawPlayer(player, getHeldItemCost(player));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the current durability of the given item
 | 
			
		||||
     *
 | 
			
		||||
     * @param itemStack <p>The item to get the durability of</p>
 | 
			
		||||
     * @return <p>The durability of the item</p>
 | 
			
		||||
     */
 | 
			
		||||
    public static short getDurability(ItemStack itemStack) {
 | 
			
		||||
        Damageable damageable = (Damageable) itemStack.getItemMeta();
 | 
			
		||||
        int maxDurability = itemStack.getType().getMaxDurability();
 | 
			
		||||
        if (damageable != null) {
 | 
			
		||||
            return (short) (maxDurability - damageable.getDamage());
 | 
			
		||||
        } else {
 | 
			
		||||
            return (short) maxDurability;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the damage done to the given item
 | 
			
		||||
     *
 | 
			
		||||
     * @param itemStack <p>The damage done to the item</p>
 | 
			
		||||
     * @return <p>The damage done to the item</p>
 | 
			
		||||
     */
 | 
			
		||||
    public static short getDamage(ItemStack itemStack) {
 | 
			
		||||
        Damageable damageable = (Damageable) itemStack.getItemMeta();
 | 
			
		||||
        if (damageable != null) {
 | 
			
		||||
            return (short) damageable.getDamage();
 | 
			
		||||
        } else {
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the cost of the item in the given player's main hand
 | 
			
		||||
     *
 | 
			
		||||
@@ -129,10 +98,10 @@ public class EconomyManager {
 | 
			
		||||
        double pricePerDurabilityPoint = globalSettings.getPricePerDurabilityPoint(material);
 | 
			
		||||
        if (globalSettings.getUseNaturalCost()) {
 | 
			
		||||
            //Cost increases with damage
 | 
			
		||||
            price += ((double) getDamage(item)) * pricePerDurabilityPoint;
 | 
			
		||||
            price += ((double) ItemHelper.getDamage(item)) * pricePerDurabilityPoint;
 | 
			
		||||
        } else {
 | 
			
		||||
            //Cost decreases with damage
 | 
			
		||||
            price += ((double) getDurability(item)) * pricePerDurabilityPoint;
 | 
			
		||||
            price += ((double) ItemHelper.getDurability(item)) * pricePerDurabilityPoint;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //Increase price for any enchantments
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ import net.citizensnpcs.api.util.DataKey;
 | 
			
		||||
import net.knarcraft.blacksmith.BlacksmithPlugin;
 | 
			
		||||
import net.knarcraft.blacksmith.config.NPCSettings;
 | 
			
		||||
import net.knarcraft.blacksmith.manager.EconomyManager;
 | 
			
		||||
import net.knarcraft.blacksmith.util.ItemHelper;
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
import org.bukkit.enchantments.EnchantmentTarget;
 | 
			
		||||
@@ -173,6 +174,11 @@ public class BlacksmithTrait extends Trait {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (ItemHelper.getDamage(hand) == 0) {
 | 
			
		||||
            sendNPCMessage(this.npc, player, config.getNotDamagedMessage());
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //Start a new reforge session for the player
 | 
			
		||||
        _sessionStart = System.currentTimeMillis();
 | 
			
		||||
        session = new ReforgeSession(this, player, npc, config);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import net.citizensnpcs.api.npc.NPC;
 | 
			
		||||
import net.knarcraft.blacksmith.BlacksmithPlugin;
 | 
			
		||||
import net.knarcraft.blacksmith.config.NPCSettings;
 | 
			
		||||
import net.knarcraft.blacksmith.manager.EconomyManager;
 | 
			
		||||
import net.knarcraft.blacksmith.util.ItemHelper;
 | 
			
		||||
import org.bukkit.NamespacedKey;
 | 
			
		||||
import org.bukkit.enchantments.Enchantment;
 | 
			
		||||
import org.bukkit.entity.LivingEntity;
 | 
			
		||||
@@ -163,7 +164,7 @@ public class ReforgeSession implements Runnable {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Damage the item
 | 
			
		||||
        short currentItemDurability = EconomyManager.getDurability(itemToReforge);
 | 
			
		||||
        short currentItemDurability = ItemHelper.getDurability(itemToReforge);
 | 
			
		||||
        short newDurability = (short) (currentItemDurability + (currentItemDurability * random.nextInt(8)));
 | 
			
		||||
        short maxDurability = itemToReforge.getType().getMaxDurability();
 | 
			
		||||
        if (newDurability <= 0) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								src/main/java/net/knarcraft/blacksmith/util/ItemHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/main/java/net/knarcraft/blacksmith/util/ItemHelper.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
package net.knarcraft.blacksmith.util;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.inventory.ItemStack;
 | 
			
		||||
import org.bukkit.inventory.meta.Damageable;
 | 
			
		||||
 | 
			
		||||
public final class ItemHelper {
 | 
			
		||||
 | 
			
		||||
    private ItemHelper() {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the current durability of the given item
 | 
			
		||||
     *
 | 
			
		||||
     * @param itemStack <p>The item to get the durability of</p>
 | 
			
		||||
     * @return <p>The durability of the item</p>
 | 
			
		||||
     */
 | 
			
		||||
    public static short getDurability(ItemStack itemStack) {
 | 
			
		||||
        Damageable damageable = (Damageable) itemStack.getItemMeta();
 | 
			
		||||
        int maxDurability = itemStack.getType().getMaxDurability();
 | 
			
		||||
        if (damageable != null) {
 | 
			
		||||
            return (short) (maxDurability - damageable.getDamage());
 | 
			
		||||
        } else {
 | 
			
		||||
            return (short) maxDurability;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the damage done to the given item
 | 
			
		||||
     *
 | 
			
		||||
     * @param itemStack <p>The damage done to the item</p>
 | 
			
		||||
     * @return <p>The damage done to the item</p>
 | 
			
		||||
     */
 | 
			
		||||
    public static short getDamage(ItemStack itemStack) {
 | 
			
		||||
        Damageable damageable = (Damageable) itemStack.getItemMeta();
 | 
			
		||||
        if (damageable != null) {
 | 
			
		||||
            return (short) damageable.getDamage();
 | 
			
		||||
        } else {
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
# Blacksmith Configuration
 | 
			
		||||
 | 
			
		||||
# The settings which apply to all Blacksmith NPCs
 | 
			
		||||
# The settings which apply to all Blacksmith NPCs. These can also be changed using the /blacksmithconfig command
 | 
			
		||||
global:
 | 
			
		||||
  # The minimum price of each cost
 | 
			
		||||
  basePrice:
 | 
			
		||||
@@ -22,7 +22,7 @@ global:
 | 
			
		||||
  useNaturalCost: true
 | 
			
		||||
 | 
			
		||||
# The settings which are set to any new NPC. To change any of these settings for an existing NPC, you must change the 
 | 
			
		||||
#  Citizens NPC file
 | 
			
		||||
#  Citizens NPC file, or use the /blacksmith command
 | 
			
		||||
defaults:
 | 
			
		||||
  # Whether the item will drop a reforged item on the ground, instead of putting it into the user's inventory
 | 
			
		||||
  dropItem: true
 | 
			
		||||
@@ -89,3 +89,6 @@ defaults:
 | 
			
		||||
 | 
			
		||||
    # The message to display once the reforging has successfully finished
 | 
			
		||||
    successMessage: "There you go! All better!"
 | 
			
		||||
 | 
			
		||||
    # The message to display if a player is trying to reforge an item with full durability
 | 
			
		||||
    notDamagedMessage: "&cThat item is not in need of repair"
 | 
			
		||||
		Reference in New Issue
	
	Block a user