Removes some redundant code
This commit is contained in:
parent
781999c995
commit
555d405bcc
@ -1,7 +1,7 @@
|
|||||||
package net.apunch.blacksmith;
|
package net.apunch.blacksmith;
|
||||||
|
|
||||||
import net.apunch.blacksmith.util.Setting;
|
import net.apunch.blacksmith.config.Setting;
|
||||||
import net.apunch.blacksmith.util.Settings;
|
import net.apunch.blacksmith.config.Settings;
|
||||||
import net.citizensnpcs.api.CitizensAPI;
|
import net.citizensnpcs.api.CitizensAPI;
|
||||||
import net.citizensnpcs.api.util.DataKey;
|
import net.citizensnpcs.api.util.DataKey;
|
||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
@ -29,6 +29,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import static net.apunch.blacksmith.util.Sanitizer.sanitizeItemName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Blacksmith's main class
|
* Blacksmith's main class
|
||||||
*/
|
*/
|
||||||
@ -209,7 +211,7 @@ public class BlacksmithPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
private double getCost(ItemStack item, Player player) {
|
private double getCost(ItemStack item, Player player) {
|
||||||
DataKey root = config.getConfig().getKey("");
|
DataKey root = config.getConfig().getKey("");
|
||||||
String itemName = item.getType().name().toLowerCase().replace('_', '-');
|
String itemName = sanitizeItemName(item.getType().name());
|
||||||
double price;
|
double price;
|
||||||
if (root.keyExists("base-prices." + itemName)) {
|
if (root.keyExists("base-prices." + itemName)) {
|
||||||
price = root.getDouble("base-prices." + itemName);
|
price = root.getDouble("base-prices." + itemName);
|
||||||
@ -237,16 +239,7 @@ public class BlacksmithPlugin extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Add the enchantment modifier for each enchantment on the item
|
//Add the enchantment modifier for each enchantment on the item
|
||||||
double enchantmentModifier = Setting.ENCHANTMENT_MODIFIER.asDouble();
|
price += getEnchantmentCost(item, root);
|
||||||
for (Enchantment enchantment : item.getEnchantments().keySet()) {
|
|
||||||
String enchantmentKey = "enchantment-modifiers." +
|
|
||||||
enchantment.getKey().asString().toLowerCase().replace('_', '-');
|
|
||||||
if (root.keyExists(enchantmentKey)) {
|
|
||||||
price += root.getDouble(enchantmentKey) * item.getEnchantmentLevel(enchantment);
|
|
||||||
} else {
|
|
||||||
price += enchantmentModifier * item.getEnchantmentLevel(enchantment);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return price;
|
return price;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,16 +286,30 @@ public class BlacksmithPlugin extends JavaPlugin {
|
|||||||
double hyperPricePerDurability = hyperPrice / item.getType().getMaxDurability();
|
double hyperPricePerDurability = hyperPrice / item.getType().getMaxDurability();
|
||||||
price += getDurability(item) * hyperPricePerDurability;
|
price += getDurability(item) * hyperPricePerDurability;
|
||||||
|
|
||||||
double enchantmentModifier = Setting.ENCHANTMENT_MODIFIER.asDouble();
|
price += getEnchantmentCost(item2, root);
|
||||||
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;
|
return price;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the cost resulting from all enchantments on the given item
|
||||||
|
*
|
||||||
|
* @param item <p>The item to calculate enchantment cost for</p>
|
||||||
|
* @param root <p>The data key containing the enchantment-modifiers option</p>
|
||||||
|
* @return <p>The resulting enchantment cost</p>
|
||||||
|
*/
|
||||||
|
private double getEnchantmentCost(ItemStack item, DataKey root) {
|
||||||
|
double enchantmentModifier = Setting.ENCHANTMENT_MODIFIER.asDouble();
|
||||||
|
double price = 0;
|
||||||
|
for (Enchantment enchantment : item.getEnchantments().keySet()) {
|
||||||
|
String enchantmentKey = "enchantment-modifiers." + sanitizeItemName(enchantment.getKey().asString());
|
||||||
|
if (root.keyExists(enchantmentKey)) {
|
||||||
|
price += root.getDouble(enchantmentKey) * item.getEnchantmentLevel(enchantment);
|
||||||
|
} else {
|
||||||
|
price += enchantmentModifier * item.getEnchantmentLevel(enchantment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return price;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package net.apunch.blacksmith;
|
package net.apunch.blacksmith;
|
||||||
|
|
||||||
import net.apunch.blacksmith.util.Settings;
|
import net.apunch.blacksmith.config.Settings;
|
||||||
|
import net.apunch.blacksmith.util.Sanitizer;
|
||||||
import net.citizensnpcs.api.CitizensAPI;
|
import net.citizensnpcs.api.CitizensAPI;
|
||||||
import net.citizensnpcs.api.npc.NPC;
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
import net.citizensnpcs.api.trait.Trait;
|
import net.citizensnpcs.api.trait.Trait;
|
||||||
@ -26,6 +27,8 @@ import java.util.Map;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static net.apunch.blacksmith.util.Sanitizer.sanitizedToItemName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The class representing the Blacksmith NPC trait
|
* The class representing the Blacksmith NPC trait
|
||||||
*/
|
*/
|
||||||
@ -67,8 +70,9 @@ public class BlacksmithTrait extends Trait {
|
|||||||
@Override
|
@Override
|
||||||
public void load(DataKey key) {
|
public void load(DataKey key) {
|
||||||
for (DataKey sub : key.getRelative("reforge-able-items").getIntegerSubKeys()) {
|
for (DataKey sub : key.getRelative("reforge-able-items").getIntegerSubKeys()) {
|
||||||
if (Material.getMaterial(sub.getString("").toUpperCase().replace('-', '_')) != null) {
|
Material material = Material.getMaterial(sanitizedToItemName(sub.getString("")));
|
||||||
reforgeAbleItems.add(Material.getMaterial(sub.getString("").toUpperCase().replace('-', '_')));
|
if (material != null) {
|
||||||
|
reforgeAbleItems.add(material);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config.loadVariables(key);
|
config.loadVariables(key);
|
||||||
@ -78,8 +82,8 @@ public class BlacksmithTrait extends Trait {
|
|||||||
public void save(DataKey key) {
|
public void save(DataKey key) {
|
||||||
//Save all items the blacksmith knows how to reforge
|
//Save all items the blacksmith knows how to reforge
|
||||||
for (int i = 0; i < reforgeAbleItems.size(); i++) {
|
for (int i = 0; i < reforgeAbleItems.size(); i++) {
|
||||||
key.getRelative("reforge-able-items").setString(String.valueOf(i),
|
key.getRelative("reforge-able-items").setString(String.valueOf(i), Sanitizer.sanitizeItemName(
|
||||||
reforgeAbleItems.get(i).name().toLowerCase().replace('_', '-'));
|
reforgeAbleItems.get(i).name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Save all other config values
|
//Save all other config values
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.apunch.blacksmith;
|
package net.apunch.blacksmith;
|
||||||
|
|
||||||
import net.apunch.blacksmith.util.Settings;
|
import net.apunch.blacksmith.config.Settings;
|
||||||
import net.citizensnpcs.api.npc.NPC;
|
import net.citizensnpcs.api.npc.NPC;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
@ -14,7 +14,11 @@ import java.util.Calendar;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
class ReforgeSession implements Runnable {
|
/**
|
||||||
|
* A representation of the session between a player and a blacksmith
|
||||||
|
*/
|
||||||
|
public class ReforgeSession implements Runnable {
|
||||||
|
|
||||||
private final BlacksmithTrait blacksmithTrait;
|
private final BlacksmithTrait blacksmithTrait;
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private final NPC npc;
|
private final NPC npc;
|
||||||
@ -23,6 +27,14 @@ class ReforgeSession implements Runnable {
|
|||||||
private final Settings config;
|
private final Settings config;
|
||||||
private static final String[] enchantments = new String[Enchantment.values().length];
|
private static final String[] enchantments = new String[Enchantment.values().length];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new session
|
||||||
|
*
|
||||||
|
* @param blacksmithTrait <p>A reference to the blacksmith trait</p>
|
||||||
|
* @param player <p>The player initiating the session</p>
|
||||||
|
* @param npc <p>The Blacksmith NPC involved in the session</p>
|
||||||
|
* @param config <p>The config to use for the session</p>
|
||||||
|
*/
|
||||||
ReforgeSession(BlacksmithTrait blacksmithTrait, Player player, NPC npc, Settings config) {
|
ReforgeSession(BlacksmithTrait blacksmithTrait, Player player, NPC npc, Settings config) {
|
||||||
this.blacksmithTrait = blacksmithTrait;
|
this.blacksmithTrait = blacksmithTrait;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
@ -150,4 +162,5 @@ class ReforgeSession implements Runnable {
|
|||||||
public Player getPlayer() {
|
public Player getPlayer() {
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package net.apunch.blacksmith.util;
|
package net.apunch.blacksmith.config;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.apunch.blacksmith.util;
|
package net.apunch.blacksmith.config;
|
||||||
|
|
||||||
import net.apunch.blacksmith.BlacksmithPlugin;
|
import net.apunch.blacksmith.BlacksmithPlugin;
|
||||||
import net.citizensnpcs.api.util.DataKey;
|
import net.citizensnpcs.api.util.DataKey;
|
29
src/main/java/net/apunch/blacksmith/util/Sanitizer.java
Normal file
29
src/main/java/net/apunch/blacksmith/util/Sanitizer.java
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package net.apunch.blacksmith.util;
|
||||||
|
|
||||||
|
public final class Sanitizer {
|
||||||
|
|
||||||
|
private Sanitizer() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sanitizes an item name to the format used by this plugin
|
||||||
|
*
|
||||||
|
* @param itemName <p>The item name to sanitize</p>
|
||||||
|
* @return <p>The sanitized name</p>
|
||||||
|
*/
|
||||||
|
public static String sanitizeItemName(String itemName) {
|
||||||
|
return itemName.toLowerCase().replace('_', '-');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a sanitized item name to the original name
|
||||||
|
*
|
||||||
|
* @param itemName <p>The item name to convert</p>
|
||||||
|
* @return <p>The un-sanitized name</p>
|
||||||
|
*/
|
||||||
|
public static String sanitizedToItemName(String itemName) {
|
||||||
|
return itemName.toUpperCase().replace('-', '_');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user