diff --git a/pom.xml b/pom.xml
index 0bf5588..a473b3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,14 +6,13 @@
net.apunch
blacksmith
- 1.16-SNAPSHOT
+ 1.18.1-SNAPSHOT
Blacksmith
Blacksmith Character for the CitizensAPI
UTF-8
- 1.15.2-R0.1-SNAPSHOT
2.0.26-SNAPSHOT
1.7.3
0.975.7-SNAPSHOT
@@ -26,18 +25,18 @@
papermc-repo
https://papermc.io/repo/repository/maven-public/
-
+
spigot-repo
https://hub.spigotmc.org/nexus/content/repositories/snapshots/
-
-
- citizens-repo
- http://repo.citizensnpcs.co/
-
-
- vault-repo
- http://nexus.hc.to/content/repositories/pub_releases
-
+
+
+ citizens-repo
+ http://repo.citizensnpcs.co/
+
+
+ vault-repo
+ http://nexus.hc.to/content/repositories/pub_releases
+
@@ -58,28 +57,22 @@
org.spigotmc
spigot-api
- 1.16.5-R0.1-SNAPSHOT
+ 1.18.1-R0.1-SNAPSHOT
provided
-
- org.bukkit
- bukkit
- ${bukkit.version}
- provided
-
net.milkbowl.vault
Vault
${vault.version}
provided
-
- regalowl.hyperconomy
- hyperconomy
- ${hyperconomy.version}
+
+ regalowl.hyperconomy
+ hyperconomy
+ ${hyperconomy.version}
system
${project.basedir}/lib/HyperConomy.jar
-
+
@@ -100,8 +93,8 @@
maven-compiler-plugin
3.7.0
-
- 1.6
+
+ 17
diff --git a/src/main/java/net/apunch/blacksmith/BlacksmithPlugin.java b/src/main/java/net/apunch/blacksmith/BlacksmithPlugin.java
index 84f9c4e..1dcf952 100644
--- a/src/main/java/net/apunch/blacksmith/BlacksmithPlugin.java
+++ b/src/main/java/net/apunch/blacksmith/BlacksmithPlugin.java
@@ -1,296 +1,199 @@
package net.apunch.blacksmith;
-import java.util.ArrayList;
-import java.util.logging.Level;
-
import net.apunch.blacksmith.util.Settings;
import net.apunch.blacksmith.util.Settings.Setting;
-
import net.citizensnpcs.api.CitizensAPI;
-import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.util.DataKey;
-
import net.milkbowl.vault.economy.Economy;
-
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
-import org.bukkit.OfflinePlayer;
+import org.bukkit.NamespacedKey;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
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.Plugin;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
-
+import org.jetbrains.annotations.NotNull;
import regalowl.hyperconomy.HyperAPI;
import regalowl.hyperconomy.HyperConomy;
import regalowl.hyperconomy.bukkit.BukkitConnector;
import regalowl.hyperconomy.inventory.HItemStack;
import regalowl.hyperconomy.tradeobject.TradeObject;
+import java.util.ArrayList;
+import java.util.Objects;
+import java.util.logging.Level;
+
public class BlacksmithPlugin extends JavaPlugin {
- public BlacksmithPlugin plugin;
- private Settings config;
- private Economy economy;
- private HyperAPI hyperAPI;
- private BukkitConnector bukCon;
- private boolean useHyperAPI = false;
- //private boolean hasCititrader = false; // CitiTrader dependency outdated and broken
+ private Settings config;
+ private Economy economy;
+ private HyperAPI hyperAPI;
+ private BukkitConnector bukCon;
+ private boolean useHyperAPI = false;
- @Override
- public void onDisable() {
- // config.save();
+ @Override
+ public void onDisable() {
+ // config.save();
- getLogger().log(Level.INFO, " v" + getDescription().getVersion() + " disabled.");
- }
+ getLogger().log(Level.INFO, " v" + getDescription().getVersion() + " disabled.");
+ }
- @Override
- public void onEnable() {
- config = new Settings(this);
- config.load();
- // Setup Hyperconomy (Soft-Depend only, so this is completely optional!)
- // Hyperconomy uses your favorite Vault-compatible economy system
- // and calculates prices for items based on supply and demand on the fly.
- // This is only used to get the cost of a repair.
- if (Bukkit.getPluginManager().getPlugin("HyperConomy") != null) {
- getServer().getLogger().log(Level.INFO, "Found HyperConomy! Using that for calculating prices, base-prices and price-per-durability-point in the Blacksmith config.yml will NOT be used!");
- this.useHyperAPI = true;
- Plugin hcPlugin = getServer().getPluginManager().getPlugin("HyperConomy");
- bukCon = (BukkitConnector)hcPlugin;
- HyperConomy hc = bukCon.getHC();
- this.hyperAPI = (HyperAPI) hc.getAPI();
- }
- getLogger().log(Level.INFO, "Setting Up Vault now....");
- /* CitiTrader dependency outdated and broken
- // Check for Cititrader
- if(getServer().getPluginManager().getPlugin("CitiTrader") != null) {
- hasCititrader = true;
- }
- */
-
- boolean canload = SetupVault();
- if (!canload)
- {
- getLogger().log(Level.INFO, "Vault Failed....");
- getServer().getPluginManager().disablePlugin(this);
- return;
- }
- CitizensAPI.getTraitFactory().registerTrait(net.citizensnpcs.api.trait.TraitInfo.create(BlacksmithTrait.class).withName("blacksmith"));
+ @Override
+ public void onEnable() {
+ config = new Settings(this);
+ config.load();
+ /* Setup Hyperconomy (Soft-Depend only, so this is completely optional!)
+ Hyperconomy uses your favorite Vault-compatible economy system
+ and calculates prices for items based on supply and demand on the fly.
+ This is only used to get the cost of a repair.*/
+ if (Bukkit.getPluginManager().getPlugin("HyperConomy") != null) {
+ getServer().getLogger().log(Level.INFO, "Found HyperConomy! Using that for calculating prices, base-prices and price-per-durability-point in the Blacksmith config.yml will NOT be used!");
+ this.useHyperAPI = true;
+ Plugin hcPlugin = getServer().getPluginManager().getPlugin("HyperConomy");
+ bukCon = (BukkitConnector) hcPlugin;
+ HyperConomy hc = Objects.requireNonNull(bukCon).getHC();
+ this.hyperAPI = (HyperAPI) hc.getAPI();
+ }
+ getLogger().log(Level.INFO, "Setting Up Vault now....");
+ boolean canLoad = SetupVault();
+ if (!canLoad) {
+ getLogger().log(Level.INFO, "Vault Failed....");
+ getServer().getPluginManager().disablePlugin(this);
+ return;
+ }
+ CitizensAPI.getTraitFactory().registerTrait(net.citizensnpcs.api.trait.TraitInfo.create(BlacksmithTrait.class).withName("blacksmith"));
-
- getLogger().log(Level.INFO, " v" + getDescription().getVersion() + " enabled.");
- }
+ getLogger().log(Level.INFO, " v" + getDescription().getVersion() + " enabled.");
+ }
private boolean SetupVault() {
- // Setup Vault
- RegisteredServiceProvider economyProvider = getServer().getServicesManager().getRegistration(
- Economy.class);
- if (economyProvider != null)
- {
- economy = economyProvider.getProvider();
- return true;
- }
- else {
- // Disable if no economy plugin was found
- getServer().getLogger().log(Level.SEVERE, "Failed to load an economy plugin. Disabling...");
- return false;
- }
- }
+ // Setup Vault
+ RegisteredServiceProvider economyProvider = getServer().getServicesManager().getRegistration(
+ Economy.class);
+ if (economyProvider != null) {
+ economy = economyProvider.getProvider();
+ return true;
+ } else {
+ // Disable if no economy plugin was found
+ getServer().getLogger().log(Level.SEVERE, "Failed to load an economy plugin. Disabling...");
+ return false;
+ }
+ }
- @Override
- public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
+ @Override
+ public boolean onCommand(final CommandSender sender, final @NotNull Command command, final @NotNull String label, final String[] args) {
config.load();
sender.sendMessage(ChatColor.GREEN + "Blacksmith config reloaded!");
return true;
}
- /* CitiTrader dependency outdated and broken
- // Return if we have cititrader
- public boolean hasCititrader() {
- return this.hasCititrader;
- }
- */
-
- public BlacksmithTrait getBlacksmith(NPC npc){
+ public boolean isTool(ItemStack item) {
+ return switch (item.getType()) {
+ case WOODEN_PICKAXE, WOODEN_SHOVEL, WOODEN_HOE, WOODEN_SWORD, WOODEN_AXE, STONE_PICKAXE, STONE_SHOVEL, STONE_HOE, STONE_SWORD, STONE_AXE, GOLDEN_PICKAXE, GOLDEN_SHOVEL, GOLDEN_HOE, GOLDEN_SWORD, GOLDEN_AXE, IRON_PICKAXE, IRON_SHOVEL, IRON_HOE, IRON_SWORD, IRON_AXE, DIAMOND_PICKAXE, DIAMOND_SHOVEL, DIAMOND_HOE, DIAMOND_SWORD, DIAMOND_AXE, NETHERITE_SWORD, NETHERITE_SHOVEL, NETHERITE_PICKAXE, NETHERITE_AXE, NETHERITE_HOE, BOW, FLINT_AND_STEEL, FISHING_ROD, SHEARS -> true;
+ default -> false;
+ };
+ }
- if (npc !=null && npc.hasTrait(BlacksmithTrait.class)){
- return npc.getTrait(BlacksmithTrait.class);
- }
+ public boolean isArmor(ItemStack item) {
+ return switch (item.getType()) {
+ case LEATHER_HELMET, LEATHER_CHESTPLATE, LEATHER_LEGGINGS, LEATHER_BOOTS, CHAINMAIL_HELMET, CHAINMAIL_CHESTPLATE, CHAINMAIL_LEGGINGS, CHAINMAIL_BOOTS, GOLDEN_HELMET, GOLDEN_CHESTPLATE, GOLDEN_LEGGINGS, GOLDEN_BOOTS, IRON_HELMET, IRON_CHESTPLATE, IRON_LEGGINGS, IRON_BOOTS, DIAMOND_HELMET, DIAMOND_CHESTPLATE, DIAMOND_LEGGINGS, DIAMOND_BOOTS, NETHERITE_HELMET, NETHERITE_CHESTPLATE, NETHERITE_LEGGINGS, NETHERITE_BOOTS -> true;
+ default -> false;
+ };
+ }
- return null;
- }
+ public boolean doesPlayerHaveEnough(Player player) {
+ return economy.getBalance(player) - getCost(player.getInventory().getItemInMainHand(), player) >= 0;
+ }
+ public String formatCost(Player player) {
+ double cost = getCost(player.getInventory().getItemInMainHand(), player);
+ return economy.format(cost);
+ }
- public boolean isTool(ItemStack item) {
- switch (item.getType()) {
- case WOODEN_PICKAXE:
- case WOODEN_SHOVEL:
- case WOODEN_HOE:
- case WOODEN_SWORD:
- case WOODEN_AXE:
- case STONE_PICKAXE:
- case STONE_SHOVEL:
- case STONE_HOE:
- case STONE_SWORD:
- case STONE_AXE:
- case GOLDEN_PICKAXE:
- case GOLDEN_SHOVEL:
- case GOLDEN_HOE:
- case GOLDEN_SWORD:
- case GOLDEN_AXE:
- case IRON_PICKAXE:
- case IRON_SHOVEL:
- case IRON_HOE:
- case IRON_SWORD:
- case IRON_AXE:
- case DIAMOND_PICKAXE:
- case DIAMOND_SHOVEL:
- case DIAMOND_HOE:
- case DIAMOND_SWORD:
- case DIAMOND_AXE:
- case NETHERITE_SWORD:
- case NETHERITE_SHOVEL:
- case NETHERITE_PICKAXE:
- case NETHERITE_AXE:
- case NETHERITE_HOE:
- case BOW:
- case FLINT_AND_STEEL:
- case FISHING_ROD:
- case SHEARS:
- return true;
- default:
- return false;
- }
- }
+ public void withdraw(Player player) {
+ economy.withdrawPlayer(player, getCost(player.getInventory().getItemInMainHand(), player));
+ }
- public boolean isArmor(ItemStack item) {
- switch (item.getType()) {
- case LEATHER_HELMET:
- case LEATHER_CHESTPLATE:
- case LEATHER_LEGGINGS:
- case LEATHER_BOOTS:
- case CHAINMAIL_HELMET:
- case CHAINMAIL_CHESTPLATE:
- case CHAINMAIL_LEGGINGS:
- case CHAINMAIL_BOOTS:
- case GOLDEN_HELMET:
- case GOLDEN_CHESTPLATE:
- case GOLDEN_LEGGINGS:
- case GOLDEN_BOOTS:
- case IRON_HELMET:
- case IRON_CHESTPLATE:
- case IRON_LEGGINGS:
- case IRON_BOOTS:
- case DIAMOND_HELMET:
- case DIAMOND_CHESTPLATE:
- case DIAMOND_LEGGINGS:
- case DIAMOND_BOOTS:
- case NETHERITE_HELMET:
- case NETHERITE_CHESTPLATE:
- case NETHERITE_LEGGINGS:
- case NETHERITE_BOOTS:
- return true;
- default:
- return false;
- }
- }
-
- public boolean doesPlayerHaveEnough(Player player) {
- return economy.getBalance((OfflinePlayer) player) - getCost(player.getInventory().getItemInMainHand(), player) >= 0;
- }
-
- public String formatCost(Player player) {
- double cost = getCost(player.getInventory().getItemInMainHand(), player);
- return economy.format(cost);
- }
-
- public void withdraw(Player player) {
- economy.withdrawPlayer(((OfflinePlayer) player), getCost(player.getInventory().getItemInMainHand(), player));
- }
- /* CitiTrader dependency outdated and broken.
- public void deposit(NPC npc, Player player) {
-// if(hasCititrader) {
-// if(npc.hasTrait(WalletTrait.class)) {
-// npc.getTrait(WalletTrait.class).deposit(getCost(player.getItemInHand()));
-// }
-// }
+ private double getCost(ItemStack item, Player player) {
+ DataKey root = config.getConfig().getKey("");
+ double price = Setting.BASE_PRICE.asDouble();
+ if (root.keyExists("base-prices." + item.getType().name().toLowerCase().replace('_', '-'))) {
+ price = root.getDouble("base-prices." + item.getType().name().toLowerCase().replace('_', '-'));
}
- */
- private double getCost(ItemStack item, Player player) {
- DataKey root = config.getConfig().getKey("");
- double price = Setting.BASE_PRICE.asDouble();
- if (root.keyExists("base-prices." + item.getType().name().toLowerCase().replace('_', '-')))
- price = root.getDouble("base-prices." + item.getType().name().toLowerCase().replace('_', '-'));
+ // Adjust price based on durability and enchantments
+ if (this.useHyperAPI) {
+ // If using hyperconomy, price is calculated like so:
+ // New Item Price + Enchantments Price (from hyperconomy) / maxDurability = price per durability point
+ // Total price would then be base_price + price per durablity point * current durability
+ double hyperPrice = 0;
+ HItemStack hi = hyperAPI.getHyperPlayer(player.getName()).getItemInHand();
+ ItemStack item2 = player.getInventory().getItemInMainHand().clone();
- // Adjust price based on durability and enchantments
- if (this.useHyperAPI) {
- // If using hyperconomy, price is calculated like so:
- // New Item Price + Enchantments Price (from hyperconomy) / maxDurability = price per durability point
- // Total price would then be base_price + price per durablity point * current durability
- double hyperPrice = 0;
- HItemStack hi = hyperAPI.getHyperPlayer(player.getName()).getItemInHand();
- ItemStack item2 = player.getInventory().getItemInMainHand().clone();
-
- for (TradeObject enchant : hyperAPI.getEnchantmentHyperObjects(hi, player.getName())) {
- hyperPrice = hyperPrice + enchant.getBuyPrice(1);
- item2.removeEnchantment(Enchantment.getByName(enchant.getEnchantment().getEnchantmentName ()));
- }
-
- ArrayList leathers = new ArrayList();
- leathers.add(Material.LEATHER_BOOTS);
- leathers.add(Material.LEATHER_CHESTPLATE);
- leathers.add(Material.LEATHER_HELMET);
- leathers.add(Material.LEATHER_LEGGINGS);
-
- HItemStack hi3 = null;
- if (leathers.contains(player.getInventory().getItemInMainHand().getType())){
- hi3 = bukCon.getBukkitCommon().getSerializableItemStack(new ItemStack(player.getInventory().getItemInMainHand().getType()));
- }
-
- TradeObject to = this.hyperAPI.getHyperObject(hi, "default");
- if (to==null) {
- to = hyperAPI.getHyperObject(hi3, "default");
- if (to==null) {
- HItemStack hi4 = bukCon.getBukkitCommon().getSerializableItemStack(new ItemStack(player.getInventory().getItemInMainHand().getType()));
- to = this.hyperAPI.getHyperObject(hi4, "default");
- }
- hyperPrice = hyperPrice+to.getSellPrice(1);
-
- } else {
- hyperPrice = to.getSellPrice(1);
- }
- double hyperPricePerDurability = hyperPrice / item.getType().getMaxDurability();
- price += (item.getDurability() * hyperPricePerDurability);
-
- double enchantmentModifier = Setting.ENCHANTMENT_MODIFIER.asDouble();
- for (Enchantment enchantment : item2.getEnchantments().keySet()) {
- if (root.keyExists("enchantment-modifiers." + enchantment.getName().toLowerCase().replace('_', '-')))
- enchantmentModifier = root.getDouble("enchantment-modifiers."
- + enchantment.getName().toLowerCase().replace('_', '-'));
- price += enchantmentModifier * item2.getEnchantmentLevel(enchantment);
- }
-
-
- return price;
- }
+ for (TradeObject enchant : hyperAPI.getEnchantmentHyperObjects(hi, player.getName())) {
+ hyperPrice = hyperPrice + enchant.getBuyPrice(1);
+ Enchantment enchantment = Enchantment.getByKey(NamespacedKey.minecraft(enchant.getEnchantment().getEnchantmentName()));
+ item2.removeEnchantment(Objects.requireNonNull(enchantment));
+ }
- else {
- if (root.keyExists("price-per-durability-point." + item.getType().name().toLowerCase().replace('_', '-')))
- price += item.getDurability() * root.getDouble("price-per-durability-point." + item.getType().name().toLowerCase().replace('_', '-'));
- else price += (item.getDurability() * Setting.PRICE_PER_DURABILITY_POINT.asDouble());
- }
+ ArrayList leathers = new ArrayList<>();
+ leathers.add(Material.LEATHER_BOOTS);
+ leathers.add(Material.LEATHER_CHESTPLATE);
+ leathers.add(Material.LEATHER_HELMET);
+ leathers.add(Material.LEATHER_LEGGINGS);
- double enchantmentModifier = Setting.ENCHANTMENT_MODIFIER.asDouble();
- for (Enchantment enchantment : item.getEnchantments().keySet()) {
- if (root.keyExists("enchantment-modifiers." + enchantment.getName().toLowerCase().replace('_', '-')))
- enchantmentModifier = root.getDouble("enchantment-modifiers."
- + enchantment.getName().toLowerCase().replace('_', '-'));
- price += enchantmentModifier * item.getEnchantmentLevel(enchantment);
- }
- return price;
- }
+ HItemStack hi3 = null;
+ if (leathers.contains(player.getInventory().getItemInMainHand().getType())) {
+ hi3 = bukCon.getBukkitCommon().getSerializableItemStack(new ItemStack(player.getInventory().getItemInMainHand().getType()));
+ }
+
+ TradeObject to = this.hyperAPI.getHyperObject(hi, "default");
+ if (to == null) {
+ to = hyperAPI.getHyperObject(hi3, "default");
+ if (to == null) {
+ HItemStack hi4 = bukCon.getBukkitCommon().getSerializableItemStack(new ItemStack(player.getInventory().getItemInMainHand().getType()));
+ to = this.hyperAPI.getHyperObject(hi4, "default");
+ }
+ hyperPrice = hyperPrice + to.getSellPrice(1);
+
+ } else {
+ hyperPrice = to.getSellPrice(1);
+ }
+ double hyperPricePerDurability = hyperPrice / item.getType().getMaxDurability();
+ price += (((Damageable) item).getDamage() * hyperPricePerDurability);
+
+ double enchantmentModifier = Setting.ENCHANTMENT_MODIFIER.asDouble();
+ for (Enchantment enchantment : item2.getEnchantments().keySet()) {
+ if (root.keyExists("enchantment-modifiers." + enchantment.getKey().asString().toLowerCase().replace('_', '-'))) {
+ enchantmentModifier = root.getDouble("enchantment-modifiers."
+ + enchantment.getKey().asString().toLowerCase().replace('_', '-'));
+ }
+ price += enchantmentModifier * item2.getEnchantmentLevel(enchantment);
+ }
+
+
+ return price;
+ } else {
+ if (root.keyExists("price-per-durability-point." + item.getType().name().toLowerCase().replace('_', '-'))) {
+ price += ((Damageable) item).getDamage() * root.getDouble("price-per-durability-point." + item.getType().name().toLowerCase().replace('_', '-'));
+ } else {
+ price += (((Damageable) item).getDamage() * Setting.PRICE_PER_DURABILITY_POINT.asDouble());
+ }
+ }
+
+ double enchantmentModifier = Setting.ENCHANTMENT_MODIFIER.asDouble();
+ for (Enchantment enchantment : item.getEnchantments().keySet()) {
+ if (root.keyExists("enchantment-modifiers." + enchantment.getKey().asString().toLowerCase().replace('_', '-'))) {
+ enchantmentModifier = root.getDouble("enchantment-modifiers."
+ + enchantment.getKey().asString().toLowerCase().replace('_', '-'));
+ }
+ price += enchantmentModifier * item.getEnchantmentLevel(enchantment);
+ }
+ return price;
+ }
}
diff --git a/src/main/java/net/apunch/blacksmith/BlacksmithTrait.java b/src/main/java/net/apunch/blacksmith/BlacksmithTrait.java
index 6e07245..ba1ec5d 100644
--- a/src/main/java/net/apunch/blacksmith/BlacksmithTrait.java
+++ b/src/main/java/net/apunch/blacksmith/BlacksmithTrait.java
@@ -1,344 +1,366 @@
package net.apunch.blacksmith;
+import net.apunch.blacksmith.util.Settings.Setting;
+import net.citizensnpcs.api.npc.NPC;
+import net.citizensnpcs.api.trait.Trait;
+import net.citizensnpcs.api.util.DataKey;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.NamespacedKey;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.Damageable;
+
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Random;
-import org.bukkit.Bukkit;
-import org.bukkit.Material;
-import org.bukkit.enchantments.Enchantment;
-import org.bukkit.entity.LivingEntity;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.inventory.ItemStack;
-
-import net.apunch.blacksmith.util.Settings.Setting;
-
-import net.citizensnpcs.api.npc.NPC;
-import net.citizensnpcs.api.trait.Trait;
-import net.citizensnpcs.api.util.DataKey;
-
public class BlacksmithTrait extends Trait {
- private static final String[] enchantments = new String[Enchantment.values().length];
+ private static final String[] enchantments = new String[Enchantment.values().length];
- private final BlacksmithPlugin plugin;
- private final List reforgeableItems = new ArrayList();
- private final Map cooldowns = new HashMap();
- private ReforgeSession session;
+ private final BlacksmithPlugin plugin;
+ private final List reforgeAbleItems = new ArrayList<>();
+ private final Map coolDowns = new HashMap<>();
+ private ReforgeSession session;
- // Defaults
- private String busyWithPlayerMsg = Setting.BUSY_WITH_PLAYER_MESSAGE.asString();
- private String busyReforgingMsg = Setting.BUSY_WITH_REFORGE_MESSAGE.asString();
- private String costMsg = Setting.COST_MESSAGE.asString();
- private String invalidItemMsg = Setting.INVALID_ITEM_MESSAGE.asString();
- private String startReforgeMsg = Setting.START_REFORGE_MESSAGE.asString();
- private String successMsg = Setting.SUCCESS_MESSAGE.asString();
- private String failMsg = Setting.FAIL_MESSAGE.asString();
- private String insufficientFundsMsg = Setting.INSUFFICIENT_FUNDS_MESSAGE.asString();
- private String cooldownUnexpiredMsg = Setting.COOLDOWN_UNEXPIRED_MESSAGE.asString();
- private String itemChangedMsg = Setting.ITEM_UNEXPECTEDLY_CHANGED_MESSAGE.asString();
- private int minReforgeDelay = Setting.MIN_REFORGE_DELAY.asInt();
- private int maxReforgeDelay = Setting.MAX_REFORGE_DELAY.asInt();
- private int reforgeCooldown = Setting.REFORGE_COOLDOWN.asInt();
- private int failChance = Setting.FAIL_CHANCE.asInt();
- private int extraEnchantmentChance = Setting.EXTRA_ENCHANTMENT_CHANCE.asInt();
- private int maxEnchantments = Setting.MAX_ENCHANTMENTS.asInt();
- private boolean dropItem = Setting.DROP_ITEM.asBoolean();
- private boolean disablecooldown = Setting.DISABLE_COOLDOWN.asBoolean();
- private boolean disabledelay = Setting.DISABLE_DELAY.asBoolean();
+ // Defaults
+ private String busyWithPlayerMsg = Setting.BUSY_WITH_PLAYER_MESSAGE.asString();
+ private String busyReforgingMsg = Setting.BUSY_WITH_REFORGE_MESSAGE.asString();
+ private String costMsg = Setting.COST_MESSAGE.asString();
+ private String invalidItemMsg = Setting.INVALID_ITEM_MESSAGE.asString();
+ private String startReforgeMsg = Setting.START_REFORGE_MESSAGE.asString();
+ private String successMsg = Setting.SUCCESS_MESSAGE.asString();
+ private String failMsg = Setting.FAIL_MESSAGE.asString();
+ private String insufficientFundsMsg = Setting.INSUFFICIENT_FUNDS_MESSAGE.asString();
+ private String coolDownUnexpiredMessage = Setting.COOLDOWN_UNEXPIRED_MESSAGE.asString();
+ private String itemChangedMsg = Setting.ITEM_UNEXPECTEDLY_CHANGED_MESSAGE.asString();
+ private int minReforgeDelay = Setting.MIN_REFORGE_DELAY.asInt();
+ private int maxReforgeDelay = Setting.MAX_REFORGE_DELAY.asInt();
+ private int reforgeCoolDown = Setting.REFORGE_COOLDOWN.asInt();
+ private int failChance = Setting.FAIL_CHANCE.asInt();
+ private int extraEnchantmentChance = Setting.EXTRA_ENCHANTMENT_CHANCE.asInt();
+ private int maxEnchantments = Setting.MAX_ENCHANTMENTS.asInt();
+ private boolean dropItem = Setting.DROP_ITEM.asBoolean();
+ private boolean disableCoolDown = Setting.DISABLE_COOLDOWN.asBoolean();
+ private boolean disableDelay = Setting.DISABLE_DELAY.asBoolean();
- public BlacksmithTrait() {
- super("blacksmith");
- plugin = (BlacksmithPlugin) Bukkit.getServer().getPluginManager().getPlugin("Blacksmith");
- int i = 0;
- for (Enchantment enchantment : Enchantment.values())
- enchantments[i++] = enchantment.getName();
- }
+ public BlacksmithTrait() {
+ super("blacksmith");
+ plugin = (BlacksmithPlugin) Bukkit.getServer().getPluginManager().getPlugin("Blacksmith");
+ int i = 0;
+ for (Enchantment enchantment : Enchantment.values()) {
+ enchantments[i++] = enchantment.getKey().asString();
+ }
+ }
- @Override
- public void load(DataKey key) {
- for (DataKey sub : key.getRelative("reforgeable-items").getIntegerSubKeys())
- if (Material.getMaterial(sub.getString("").toUpperCase().replace('-', '_')) != null)
- reforgeableItems.add(Material.getMaterial(sub.getString("").toUpperCase().replace('-', '_')));
+ @Override
+ public void load(DataKey key) {
+ for (DataKey sub : key.getRelative("reforgeable-items").getIntegerSubKeys()) {
+ if (Material.getMaterial(sub.getString("").toUpperCase().replace('-', '_')) != null) {
+ reforgeAbleItems.add(Material.getMaterial(sub.getString("").toUpperCase().replace('-', '_')));
+ }
+ }
- // Override defaults if they exist
- if (key.keyExists("messages.busy-with-player"))
- busyWithPlayerMsg = key.getString("messages.busy-with-player");
- if (key.keyExists("messages.busy-with-reforge"))
- busyReforgingMsg = key.getString("messages.busy-with-reforge");
- if (key.keyExists("messages.cost"))
- costMsg = key.getString("messages.cost");
- if (key.keyExists("messages.invalid-item"))
- invalidItemMsg = key.getString("messages.invalid-item");
- if (key.keyExists("messages.start-reforge"))
- startReforgeMsg = key.getString("messages.start-reforge");
- if (key.keyExists("messages.successful-reforge"))
- successMsg = key.getString("messages.successful-reforge");
- if (key.keyExists("messages.fail-reforge"))
- failMsg = key.getString("messages.fail-reforge");
- if (key.keyExists("messages.insufficient-funds"))
- insufficientFundsMsg = key.getString("messages.insufficient-funds");
- if (key.keyExists("messages.cooldown-not-expired"))
- cooldownUnexpiredMsg = key.getString("messages.cooldown-not-expired");
- if (key.keyExists("messages.item-changed-during-reforge"))
- itemChangedMsg = key.getString("messages.item-changed-during-reforge");
- if (key.keyExists("delays-in-seconds.minimum"))
- minReforgeDelay = key.getInt("delays-in-seconds.minimum");
- if (key.keyExists("delays-in-seconds.maximum"))
- maxReforgeDelay = key.getInt("delays-in-seconds.maximum");
- if (key.keyExists("delays-in-seconds.reforge-cooldown"))
- reforgeCooldown = key.getInt("delays-in-seconds.reforge-cooldown");
- if (key.keyExists("percent-chance-to-fail-reforge"))
- failChance = key.getInt("percent-chance-to-fail-reforge");
- if (key.keyExists("maximum-enchantments"))
- maxEnchantments = key.getInt("maximum-enchantments");
- if (key.keyExists("extra-enchantments-chance"))
- extraEnchantmentChance = key.getInt("extra-enchantment-chance");
- if (key.keyExists("dropitem"))
- dropItem = key.getBoolean("dropitem");
- if (key.keyExists("disable-cooldown"))
- disablecooldown = key.getBoolean("disable-cooldown");
- if (key.keyExists("disable-delay"))
- disabledelay = key.getBoolean("disable-delay");
- }
+ // Override defaults if they exist
+ if (key.keyExists("messages.busy-with-player")) {
+ busyWithPlayerMsg = key.getString("messages.busy-with-player");
+ }
+ if (key.keyExists("messages.busy-with-reforge")) {
+ busyReforgingMsg = key.getString("messages.busy-with-reforge");
+ }
+ if (key.keyExists("messages.cost")) {
+ costMsg = key.getString("messages.cost");
+ }
+ if (key.keyExists("messages.invalid-item")) {
+ invalidItemMsg = key.getString("messages.invalid-item");
+ }
+ if (key.keyExists("messages.start-reforge")) {
+ startReforgeMsg = key.getString("messages.start-reforge");
+ }
+ if (key.keyExists("messages.successful-reforge")) {
+ successMsg = key.getString("messages.successful-reforge");
+ }
+ if (key.keyExists("messages.fail-reforge")) {
+ failMsg = key.getString("messages.fail-reforge");
+ }
+ if (key.keyExists("messages.insufficient-funds")) {
+ insufficientFundsMsg = key.getString("messages.insufficient-funds");
+ }
+ if (key.keyExists("messages.cooldown-not-expired")) {
+ coolDownUnexpiredMessage = key.getString("messages.cooldown-not-expired");
+ }
+ if (key.keyExists("messages.item-changed-during-reforge")) {
+ itemChangedMsg = key.getString("messages.item-changed-during-reforge");
+ }
+ if (key.keyExists("delays-in-seconds.minimum")) {
+ minReforgeDelay = key.getInt("delays-in-seconds.minimum");
+ }
+ if (key.keyExists("delays-in-seconds.maximum")) {
+ maxReforgeDelay = key.getInt("delays-in-seconds.maximum");
+ }
+ if (key.keyExists("delays-in-seconds.reforge-cooldown")) {
+ reforgeCoolDown = key.getInt("delays-in-seconds.reforge-cooldown");
+ }
+ if (key.keyExists("percent-chance-to-fail-reforge")) {
+ failChance = key.getInt("percent-chance-to-fail-reforge");
+ }
+ if (key.keyExists("maximum-enchantments")) {
+ maxEnchantments = key.getInt("maximum-enchantments");
+ }
+ if (key.keyExists("extra-enchantments-chance")) {
+ extraEnchantmentChance = key.getInt("extra-enchantment-chance");
+ }
+ if (key.keyExists("dropitem")) {
+ dropItem = key.getBoolean("dropitem");
+ }
+ if (key.keyExists("disable-cooldown")) {
+ disableCoolDown = key.getBoolean("disable-cooldown");
+ }
+ if (key.keyExists("disable-delay")) {
+ disableDelay = key.getBoolean("disable-delay");
+ }
+ }
- @EventHandler
- public void onRightClick(net.citizensnpcs.api.event.NPCRightClickEvent event) {
- if(this.npc!=event.getNPC()) return;
+ @EventHandler
+ public void onRightClick(net.citizensnpcs.api.event.NPCRightClickEvent event) {
+ if (this.npc != event.getNPC()) {
+ return;
+ }
- Player player = event.getClicker();
- if ((disablecooldown & (cooldowns.get(player.getName()) != (null))))
- {
- cooldowns.remove(player.getName());
- }
- if (!player.hasPermission("blacksmith.reforge"))
- return;
+ Player player = event.getClicker();
+ if ((disableCoolDown & (coolDowns.get(player.getName()) != (null)))) {
+ coolDowns.remove(player.getName());
+ }
+ if (!player.hasPermission("blacksmith.reforge")) {
+ return;
+ }
- if (cooldowns.get(player.getName()) != null) {
- if (!Calendar.getInstance().after(cooldowns.get(player.getName()))) {
- player.sendMessage(cooldownUnexpiredMsg);
- return;
- }
- cooldowns.remove(player.getName());
- }
+ if (coolDowns.get(player.getName()) != null) {
+ if (!Calendar.getInstance().after(coolDowns.get(player.getName()))) {
+ player.sendMessage(coolDownUnexpiredMessage);
+ return;
+ }
+ coolDowns.remove(player.getName());
+ }
- ItemStack hand = player.getInventory().getItemInMainHand();
+ ItemStack hand = player.getInventory().getItemInMainHand();
- if(session!=null){
- //timeout
- if ( System.currentTimeMillis() > _sessionstart + 10*1000 || this.npc.getEntity().getLocation().distance(session.player.getLocation()) > 20 ){
- session = null;
- }
- }
+ if (session != null) {
+ //timeout
+ if (System.currentTimeMillis() > _sessionstart + 10 * 1000 || this.npc.getEntity().getLocation().distance(session.player.getLocation()) > 20) {
+ session = null;
+ }
+ }
- if (session != null) {
- if (!session.isInSession(player)) {
+ if (session != null) {
+ if (!session.isInSession(player)) {
- player.sendMessage( busyWithPlayerMsg);
- return;
+ player.sendMessage(busyWithPlayerMsg);
+ return;
- }
+ }
- if (session.isRunning()) {
- player.sendMessage( busyReforgingMsg);
- return;
- }
- if (session.handleClick())
- session = null;
- else
- reforge(npc, player);
- } else {
- if ((!plugin.isTool(hand) && !plugin.isArmor(hand))
- || (!reforgeableItems.isEmpty() && !reforgeableItems.contains(hand.getType()))) {
- player.sendMessage( invalidItemMsg);
- return;
- }
-
- String cost = plugin.formatCost(player);
-
- _sessionstart = System.currentTimeMillis();
- session = new ReforgeSession(player, npc);
- player.sendMessage(costMsg.replace("", cost).replace("- ",
- hand.getType().name().toLowerCase().replace('_', ' ')));
+ if (session.isRunning()) {
+ player.sendMessage(busyReforgingMsg);
+ return;
+ }
+ if (session.handleClick()) {
+ session = null;
+ } else {
+ reforge(npc, player);
+ }
+ } else {
+ if ((!plugin.isTool(hand) && !plugin.isArmor(hand))
+ || (!reforgeAbleItems.isEmpty() && !reforgeAbleItems.contains(hand.getType()))) {
+ player.sendMessage(invalidItemMsg);
+ return;
+ }
- }
- }
+ String cost = plugin.formatCost(player);
- private long _sessionstart = System.currentTimeMillis();
+ _sessionstart = System.currentTimeMillis();
+ session = new ReforgeSession(player, npc);
+ player.sendMessage(costMsg.replace("", cost).replace("
- ",
+ hand.getType().name().toLowerCase().replace('_', ' ')));
- @Override
- public void save(DataKey key) {
- for (int i = 0; i < reforgeableItems.size(); i++)
- key.getRelative("reforgeable-items").setString(String.valueOf(i),
- reforgeableItems.get(i).name().toLowerCase().replace('_', '-'));
+ }
+ }
- key.setString("messages.busy-with-player", busyWithPlayerMsg);
- key.setString("messages.busy-with-reforge", busyReforgingMsg);
- key.setString("messages.cost", costMsg);
- key.setString("messages.invalid-item", invalidItemMsg);
- key.setString("messages.start-reforge", startReforgeMsg);
- key.setString("messages.successful-reforge", successMsg);
- key.setString("messages.fail-reforge", failMsg);
- key.setString("messages.insufficient-funds", insufficientFundsMsg);
- key.setString("messages.cooldown-not-expired", cooldownUnexpiredMsg);
- key.setString("messages.item-changed-during-reforge", itemChangedMsg);
- key.setInt("delays-in-seconds.minimum", minReforgeDelay);
- key.setInt("delays-in-seconds.maximum", maxReforgeDelay);
- key.setInt("delays-in-seconds.reforge-cooldown", reforgeCooldown);
- key.setInt("percent-chance-to-fail-reforge", failChance);
- key.setInt("percent-chance-for-extra-enchantment", extraEnchantmentChance);
- key.setInt("maximum-enchantments", maxEnchantments);
- key.setBoolean("drop-item", dropItem);
- key.setBoolean("disable-delay", disabledelay);
- key.setBoolean("disable-cooldown", disablecooldown);
- }
+ private long _sessionstart = System.currentTimeMillis();
- private void reforge(NPC npc, Player player) {
- player.sendMessage( startReforgeMsg);
-
- //plugin.deposit(npc, player); // CitiTrader dependency outdated and broken
-
- plugin.withdraw(player);
- session.beginReforge();
- if (npc.getEntity() instanceof Player)
- ((Player) npc.getEntity()).getInventory().setItemInMainHand(player.getInventory().getItemInMainHand());
- else
- ((LivingEntity) npc.getEntity()).getEquipment().setItemInMainHand(player.getInventory().getItemInMainHand());
- player.getInventory().setItemInMainHand(null);
- }
+ @Override
+ public void save(DataKey key) {
+ for (int i = 0; i < reforgeAbleItems.size(); i++) {
+ key.getRelative("reforgeable-items").setString(String.valueOf(i),
+ reforgeAbleItems.get(i).name().toLowerCase().replace('_', '-'));
+ }
- private class ReforgeSession implements Runnable {
- private final Player player;
- private final NPC npc;
- private final ItemStack reforge;
- private int taskId;
+ key.setString("messages.busy-with-player", busyWithPlayerMsg);
+ key.setString("messages.busy-with-reforge", busyReforgingMsg);
+ key.setString("messages.cost", costMsg);
+ key.setString("messages.invalid-item", invalidItemMsg);
+ key.setString("messages.start-reforge", startReforgeMsg);
+ key.setString("messages.successful-reforge", successMsg);
+ key.setString("messages.fail-reforge", failMsg);
+ key.setString("messages.insufficient-funds", insufficientFundsMsg);
+ key.setString("messages.cooldown-not-expired", coolDownUnexpiredMessage);
+ key.setString("messages.item-changed-during-reforge", itemChangedMsg);
+ key.setInt("delays-in-seconds.minimum", minReforgeDelay);
+ key.setInt("delays-in-seconds.maximum", maxReforgeDelay);
+ key.setInt("delays-in-seconds.reforge-cooldown", reforgeCoolDown);
+ key.setInt("percent-chance-to-fail-reforge", failChance);
+ key.setInt("percent-chance-for-extra-enchantment", extraEnchantmentChance);
+ key.setInt("maximum-enchantments", maxEnchantments);
+ key.setBoolean("drop-item", dropItem);
+ key.setBoolean("disable-delay", disableDelay);
+ key.setBoolean("disable-cooldown", disableCoolDown);
+ }
- private ReforgeSession(Player player, NPC npc) {
- this.player = player;
- this.npc = npc;
- reforge = player.getInventory().getItemInMainHand();
- }
+ private void reforge(NPC npc, Player player) {
+ player.sendMessage(startReforgeMsg);
- @Override
- public void run() {
- player.sendMessage( reforgeItemInHand() ? successMsg : failMsg);
- if (npc.getEntity() instanceof Player)
- ((Player) npc.getEntity()).getInventory().setItemInMainHand(null);
- else
- ((LivingEntity) npc.getEntity()).getEquipment().setItemInMainHand(null);
- if (!disabledelay)
- {
- if (dropItem)
- player.getWorld().dropItemNaturally(npc.getEntity().getLocation(), reforge);
- else {
- player.getInventory().addItem(reforge);
- /*
- oldmethode ?
- for (ItemStack stack : player.getInventory().addItem(reforge).values())
- player.getWorld().dropItemNaturally(npc.getEntity().getLocation(), stack);
- */
- }
- }
- else
- {
- player.getInventory().setItemInMainHand(reforge);
- }
- session = null;
- // Start cooldown
- Calendar wait = Calendar.getInstance();
- wait.add(Calendar.SECOND, reforgeCooldown);
- cooldowns.put(player.getName(), wait);
- }
+ //plugin.deposit(npc, player); // CitiTrader dependency outdated and broken
- private boolean reforgeItemInHand() {
- Random random = new Random();
- if (random.nextInt(100) < failChance) {
- for (Enchantment enchantment : reforge.getEnchantments().keySet()) {
- // Remove or downgrade enchantments
- if (random.nextBoolean())
- reforge.removeEnchantment(enchantment);
- else {
- if (reforge.getEnchantmentLevel(enchantment) > 1) {
- reforge.removeEnchantment(enchantment);
- reforge.addEnchantment(enchantment, 1);
- }
- }
- }
- // Damage the item
- short durability = (short) (reforge.getDurability() + reforge.getDurability() * random.nextInt(8));
- short maxDurability = reforge.getType().getMaxDurability();
- if (durability <= 0)
- durability = (short) (maxDurability / 3);
- else if (reforge.getDurability() + durability > maxDurability)
- durability = (short) (maxDurability - random.nextInt(maxDurability - 25));
- reforge.setDurability(durability);
- return false;
- }
+ plugin.withdraw(player);
+ session.beginReforge();
+ if (npc.getEntity() instanceof Player) {
+ ((Player) npc.getEntity()).getInventory().setItemInMainHand(player.getInventory().getItemInMainHand());
+ } else {
+ Objects.requireNonNull(((LivingEntity) npc.getEntity()).getEquipment()).setItemInMainHand(player.getInventory().getItemInMainHand());
+ }
+ player.getInventory().setItemInMainHand(null);
+ }
- reforge.setDurability((short) 0);
+ private class ReforgeSession implements Runnable {
+ private final Player player;
+ private final NPC npc;
+ private final ItemStack reforge;
+ private int taskId;
- // Add random enchantments
+ private ReforgeSession(Player player, NPC npc) {
+ this.player = player;
+ this.npc = npc;
+ reforge = player.getInventory().getItemInMainHand();
+ }
+
+ @Override
+ public void run() {
+ player.sendMessage(reforgeItemInHand() ? successMsg : failMsg);
+ if (npc.getEntity() instanceof Player) {
+ ((Player) npc.getEntity()).getInventory().setItemInMainHand(null);
+ } else {
+ Objects.requireNonNull(((LivingEntity) npc.getEntity()).getEquipment()).setItemInMainHand(null);
+ }
+ if (!disableDelay) {
+ if (dropItem) {
+ player.getWorld().dropItemNaturally(npc.getEntity().getLocation(), reforge);
+ } else {
+ player.getInventory().addItem(reforge);
+ }
+ } else {
+ player.getInventory().setItemInMainHand(reforge);
+ }
+ session = null;
+ // Start cooldown
+ Calendar wait = Calendar.getInstance();
+ wait.add(Calendar.SECOND, reforgeCoolDown);
+ coolDowns.put(player.getName(), wait);
+ }
+
+ private boolean reforgeItemInHand() {
+ Random random = new Random();
+ if (random.nextInt(100) < failChance) {
+ for (Enchantment enchantment : reforge.getEnchantments().keySet()) {
+ // Remove or downgrade enchantments
+ if (random.nextBoolean()) {
+ reforge.removeEnchantment(enchantment);
+ } else {
+ if (reforge.getEnchantmentLevel(enchantment) > 1) {
+ reforge.removeEnchantment(enchantment);
+ reforge.addEnchantment(enchantment, 1);
+ }
+ }
+ }
+ // Damage the item
+ short durability = (short) (((Damageable) reforge).getDamage() + ((Damageable) reforge).getDamage() *
+ random.nextInt(8));
+ short maxDurability = reforge.getType().getMaxDurability();
+ if (durability <= 0) {
+ durability = (short) (maxDurability / 3);
+ } else if (((Damageable) reforge).getDamage() + durability > maxDurability) {
+ durability = (short) (maxDurability - random.nextInt(maxDurability - 25));
+ }
+ ((Damageable) reforge).setDamage(durability);
+ return false;
+ }
+
+ ((Damageable) reforge).setDamage((short) 0);
+
+ // Add random enchantments
- // If durability is full, chance is multiplied by 4. Seems unbalanced, so disabled for now.
+ // If durability is full, chance is multiplied by 4. Seems unbalanced, so disabled for now.
/*if (reforge.getDurability() == 0)
chance *= 4;
else */
- int roll = random.nextInt(100);
- if (roll < extraEnchantmentChance && reforge.getEnchantments().keySet().size() < maxEnchantments){
+ int roll = random.nextInt(100);
+ if (roll < extraEnchantmentChance && reforge.getEnchantments().keySet().size() < maxEnchantments) {
- Enchantment enchantment = Enchantment.getByName(enchantments[random.nextInt(enchantments.length)]);
- if (enchantment.canEnchantItem(reforge)) reforge.addEnchantment(enchantment, random.nextInt(enchantment.getMaxLevel() - enchantment.getStartLevel()) + enchantment.getStartLevel());
+ Enchantment enchantment = Enchantment.getByKey(NamespacedKey.fromString(enchantments[random.nextInt(enchantments.length)]));
+ if (Objects.requireNonNull(enchantment).canEnchantItem(reforge)) {
+ reforge.addEnchantment(enchantment, random.nextInt(enchantment.getMaxLevel() - enchantment.getStartLevel()) + enchantment.getStartLevel());
+ }
- }
+ }
- return true;
- }
+ return true;
+ }
- // Return if the session should end
- private boolean handleClick() {
- // Prevent player from switching items during session
- if (!reforge.equals(player.getInventory().getItemInMainHand())) {
- player.sendMessage( itemChangedMsg);
- return true;
- }
- if (!plugin.doesPlayerHaveEnough(player)) {
- player.sendMessage( insufficientFundsMsg);
- return true;
- }
- return false;
- }
+ // Return if the session should end
+ private boolean handleClick() {
+ // Prevent player from switching items during session
+ if (!reforge.equals(player.getInventory().getItemInMainHand())) {
+ player.sendMessage(itemChangedMsg);
+ return true;
+ }
+ if (!plugin.doesPlayerHaveEnough(player)) {
+ player.sendMessage(insufficientFundsMsg);
+ return true;
+ }
+ return false;
+ }
- private boolean isRunning() {
- return plugin.getServer().getScheduler().isQueued(taskId);
- }
+ private boolean isRunning() {
+ return plugin.getServer().getScheduler().isQueued(taskId);
+ }
- private boolean isInSession(Player other) {
- return player.getName().equals(other.getName());
- }
+ private boolean isInSession(Player other) {
+ return player.getName().equals(other.getName());
+ }
- private void beginReforge() {
- if (!disablecooldown)
- {
- taskId = plugin
- .getServer()
- .getScheduler()
- .scheduleSyncDelayedTask(plugin, this,
- (new Random().nextInt(maxReforgeDelay) + minReforgeDelay) * 20);
- }
- else
- {
- taskId = plugin
- .getServer()
- .getScheduler()
- .scheduleSyncDelayedTask(plugin, this,0);
- }
- }
- }
+ private void beginReforge() {
+ if (!disableCoolDown) {
+ taskId = plugin
+ .getServer()
+ .getScheduler()
+ .scheduleSyncDelayedTask(plugin, this,
+ (new Random().nextInt(maxReforgeDelay) + minReforgeDelay) * 20L);
+ } else {
+ taskId = plugin
+ .getServer()
+ .getScheduler()
+ .scheduleSyncDelayedTask(plugin, this, 0);
+ }
+ }
+ }
}
diff --git a/src/main/java/net/apunch/blacksmith/util/Settings.java b/src/main/java/net/apunch/blacksmith/util/Settings.java
index d693efd..4688779 100644
--- a/src/main/java/net/apunch/blacksmith/util/Settings.java
+++ b/src/main/java/net/apunch/blacksmith/util/Settings.java
@@ -1,12 +1,11 @@
package net.apunch.blacksmith.util;
-import java.io.File;
-
import net.apunch.blacksmith.BlacksmithPlugin;
-
import net.citizensnpcs.api.util.DataKey;
import net.citizensnpcs.api.util.YamlStorage;
+import java.io.File;
+
public class Settings {
private final YamlStorage config;
@@ -17,11 +16,13 @@ public class Settings {
public void load() {
config.load();
DataKey root = config.getKey("");
- for (Setting setting : Setting.values())
- if (!root.keyExists(setting.path))
+ for (Setting setting : Setting.values()) {
+ if (!root.keyExists(setting.path)) {
root.setRaw(setting.path, setting.get());
- else
+ } else {
setting.set(root.getRaw(setting.path));
+ }
+ }
config.save();
}
@@ -62,7 +63,7 @@ public class Settings {
START_REFORGE_MESSAGE("defaults.messages.start-reforge", "§eOk, let's see what I can do..."),
SUCCESS_MESSAGE("defaults.messages.successful-reforge", "There you go! All better!");
- private String path;
+ private final String path;
private Object value;
Setting(String path, Object value) {
@@ -75,10 +76,12 @@ public class Settings {
}
public double asDouble() {
- if (value instanceof String)
- return Double.valueOf((String) value);
- if (value instanceof Integer)
+ if (value instanceof String) {
+ return Double.parseDouble((String) value);
+ }
+ if (value instanceof Integer) {
return (Integer) value;
+ }
return (Double) value;
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index f440657..d177232 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,13 +1,18 @@
name: Blacksmith
-author: aPunch, jrbudda, HurricanKai
-version: 1.16
+author: EpicKnarvik97, aPunch, jrbudda, HurricanKai
+authors: [ EpicKnarvik97, aPunch, jrbudda, HurricanKai ]
+version: 1.18.1
main: net.apunch.blacksmith.BlacksmithPlugin
-depend: [Citizens, Vault]
-softdepend: [HyperConomy]
+depend: [ Citizens, Vault ]
+softdepend: [ HyperConomy ]
-api-version: 1.16
+api-version: 1.18
commands:
blacksmithreload:
permission: blacksmith.reload
description: reloads the config file for Blacksmith
+permissions:
+ blacksmith.reload:
+ description: Allows the player to run the /reload command
+ default: op
\ No newline at end of file