add max-enchantments setting;

This commit is contained in:
aPunch 2012-02-24 05:58:06 -06:00
parent 65a7fc097d
commit a9527f7677
2 changed files with 16 additions and 5 deletions

View File

@ -22,6 +22,8 @@ import net.citizensnpcs.api.util.DataKey;
@SaveId("blacksmith") @SaveId("blacksmith")
public class BlacksmithCharacter extends Character { public class BlacksmithCharacter extends Character {
private static final int[] enchantments = new int[Enchantment.values().length];
private final Blacksmith plugin; private final Blacksmith plugin;
private final List<Material> reforgeableItems = new ArrayList<Material>(); private final List<Material> reforgeableItems = new ArrayList<Material>();
private final Map<String, Calendar> cooldowns = new HashMap<String, Calendar>(); private final Map<String, Calendar> cooldowns = new HashMap<String, Calendar>();
@ -41,10 +43,14 @@ public class BlacksmithCharacter extends Character {
private int maxReforgeDelay = Setting.MAX_REFORGE_DELAY.asInt(); private int maxReforgeDelay = Setting.MAX_REFORGE_DELAY.asInt();
private int reforgeCooldown = Setting.REFORGE_COOLDOWN.asInt(); private int reforgeCooldown = Setting.REFORGE_COOLDOWN.asInt();
private int failChance = Setting.FAIL_CHANCE.asInt(); private int failChance = Setting.FAIL_CHANCE.asInt();
private int maxEnchantments = Setting.MAX_ENCHANTMENTS.asInt();
private boolean dropItem = Setting.DROP_ITEM.asBoolean(); private boolean dropItem = Setting.DROP_ITEM.asBoolean();
public BlacksmithCharacter() { public BlacksmithCharacter() {
plugin = (Blacksmith) Bukkit.getServer().getPluginManager().getPlugin("Blacksmith"); plugin = (Blacksmith) Bukkit.getServer().getPluginManager().getPlugin("Blacksmith");
int i = 0;
for (Enchantment enchantment : Enchantment.values())
enchantments[i++] = enchantment.getId();
} }
@Override @Override
@ -80,6 +86,8 @@ public class BlacksmithCharacter extends Character {
reforgeCooldown = key.getInt("delays-in-seconds.reforge-cooldown"); reforgeCooldown = key.getInt("delays-in-seconds.reforge-cooldown");
if (key.keyExists("percent-chance-to-fail-reforge")) if (key.keyExists("percent-chance-to-fail-reforge"))
failChance = key.getInt("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("drop-item")) if (key.keyExists("drop-item"))
dropItem = key.getBoolean("drop-item"); dropItem = key.getBoolean("drop-item");
} }
@ -143,6 +151,7 @@ public class BlacksmithCharacter extends Character {
key.setInt("delays-in-seconds.maximum", maxReforgeDelay); key.setInt("delays-in-seconds.maximum", maxReforgeDelay);
key.setInt("delays-in-seconds.reforge-cooldown", reforgeCooldown); key.setInt("delays-in-seconds.reforge-cooldown", reforgeCooldown);
key.setInt("percent-chance-to-fail-reforge", failChance); key.setInt("percent-chance-to-fail-reforge", failChance);
key.setInt("maximum-enchantments", maxEnchantments);
key.setBoolean("drop-item", dropItem); key.setBoolean("drop-item", dropItem);
} }
@ -213,17 +222,18 @@ public class BlacksmithCharacter extends Character {
reforge.setDurability(durability); reforge.setDurability(durability);
return false; return false;
} }
// Add random enchantments
int chance = 10; int chance = 10;
if (reforge.getDurability() == 0) if (reforge.getDurability() == 0)
chance *= 4; chance *= 4;
else else
reforge.setDurability((short) 0); reforge.setDurability((short) 0);
// Add random enchantments
for (int i = 0; i < chance; i++) { for (int i = 0; i < chance; i++) {
int id = random.nextInt(100); if (reforge.getEnchantments().keySet().size() == maxEnchantments)
Enchantment enchantment = Enchantment.getById(id); break;
if (enchantment != null && enchantment.canEnchantItem(reforge)) Enchantment enchantment = Enchantment.getById(enchantments[random.nextInt(enchantments.length)]);
reforge.addEnchantment(Enchantment.getById(id), random.nextInt(enchantment.getMaxLevel()) + 1); if (enchantment.canEnchantItem(reforge))
reforge.addEnchantment(enchantment, random.nextInt(enchantment.getMaxLevel()) + 1);
} }
return true; return true;
} }

View File

@ -45,6 +45,7 @@ public class Settings {
FAIL_MESSAGE("defaults.messages.fail-reforge", "<c>Whoops! Didn't mean to do that! Maybe next time?"), FAIL_MESSAGE("defaults.messages.fail-reforge", "<c>Whoops! Didn't mean to do that! Maybe next time?"),
INSUFFICIENT_FUNDS_MESSAGE("defaults.messages.insufficient-funds", "<c>You don't have enough money to reforge that item!"), INSUFFICIENT_FUNDS_MESSAGE("defaults.messages.insufficient-funds", "<c>You don't have enough money to reforge that item!"),
INVALID_ITEM_MESSAGE("defaults.messages.invalid-item", "<c>I'm sorry, but I don't know how to reforge that!"), INVALID_ITEM_MESSAGE("defaults.messages.invalid-item", "<c>I'm sorry, but I don't know how to reforge that!"),
MAX_ENCHANTMENTS("defaults.maximum-enchantments", 3),
MAX_REFORGE_DELAY("defaults.delays-in-seconds.maximum", 30), MAX_REFORGE_DELAY("defaults.delays-in-seconds.maximum", 30),
MIN_REFORGE_DELAY("defaults.delays-in-seconds.minimum", 5), MIN_REFORGE_DELAY("defaults.delays-in-seconds.minimum", 5),
REFORGE_COOLDOWN("defaults.delays-in-seconds.reforge-cooldown", 60), REFORGE_COOLDOWN("defaults.delays-in-seconds.reforge-cooldown", 60),