package think.rpgitems;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta;
import think.rpgitems.commands.CommandDocumentation;
import think.rpgitems.commands.CommandGroup;
import think.rpgitems.commands.CommandHandler;
import think.rpgitems.commands.CommandString;
import think.rpgitems.data.Locale;
import think.rpgitems.item.ItemManager;
import think.rpgitems.item.Quality;
import think.rpgitems.item.RPGItem;
import think.rpgitems.power.Power;
import think.rpgitems.support.WorldGuard;
public class Handler implements CommandHandler {
@CommandString("rpgitem list")
@CommandDocumentation("$command.rpgitem.list")
@CommandGroup("list")
public void listItems(CommandSender sender) {
sender.sendMessage(ChatColor.GREEN + "RPGItems:");
for (RPGItem item : ItemManager.itemByName.values()) {
sender.sendMessage(ChatColor.GREEN + item.getName() + " - " + item.getDisplay());
}
}
@CommandString("rpgitem option worldguard")
@CommandDocumentation("$command.rpgitem.worldguard")
@CommandGroup("option_worldguard")
public void toggleWorldGuard(CommandSender sender) {
String locale = Locale.getPlayerLocale((Player) sender);
if (!WorldGuard.isEnabled()) {
sender.sendMessage(ChatColor.RED + Locale.get("message.worldguard.error", locale));
return;
}
if (WorldGuard.useWorldGuard) {
sender.sendMessage(ChatColor.AQUA + Locale.get("message.worldguard.disable", locale));
} else {
sender.sendMessage(ChatColor.AQUA + Locale.get("message.worldguard.enable", locale));
}
WorldGuard.useWorldGuard = !WorldGuard.useWorldGuard;
Plugin.plugin.getConfig().set("support.worldguard", WorldGuard.useWorldGuard);
Plugin.plugin.saveConfig();
}
@CommandString("rpgitem $n[]")
@CommandDocumentation("$command.rpgitem.print")
@CommandGroup("item")
public void printItem(CommandSender sender, RPGItem item) {
item.print(sender);
}
@CommandString("rpgitem $name:s[] create")
@CommandDocumentation("$command.rpgitem.create")
@CommandGroup("item")
public void createItem(CommandSender sender, String itemName) {
String locale = Locale.getPlayerLocale((Player) sender);
if (ItemManager.newItem(itemName.toLowerCase()) != null) {
sender.sendMessage(String.format(ChatColor.GREEN + Locale.get("message.create.ok", locale), itemName));
ItemManager.save(Plugin.plugin);
} else {
sender.sendMessage(ChatColor.RED + Locale.get("message.create.fail", locale));
}
}
@CommandString("rpgitem option giveperms")
@CommandDocumentation("$command.rpgitem.giveperms")
@CommandGroup("option_giveperms")
public void givePerms(CommandSender sender) {
String locale = Locale.getPlayerLocale((Player) sender);
Plugin.plugin.getConfig().set("give-perms", !Plugin.plugin.getConfig().getBoolean("give-perms", false));
if (Plugin.plugin.getConfig().getBoolean("give-perms", false)) {
sender.sendMessage(ChatColor.AQUA + Locale.get("message.giveperms.true", locale));
} else {
sender.sendMessage(ChatColor.AQUA + Locale.get("message.giveperms.false", locale));
}
Plugin.plugin.saveConfig();
}
@CommandString(value = "rpgitem $n[] give", handlePermissions = true)
@CommandDocumentation("$command.rpgitem.give")
@CommandGroup("item_give")
public void giveItem(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
if (sender instanceof Player) {
if ((!Plugin.plugin.getConfig().getBoolean("give-perms", false) && sender.hasPermission("rpgitem")) || (Plugin.plugin.getConfig().getBoolean("give-perms", false) && sender.hasPermission("rpgitem.give." + item.getName()))) {
item.give((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.give.ok", locale), item.getDisplay()));
} else {
sender.sendMessage(ChatColor.RED + Locale.get("message.error.permission", locale));
}
} else {
sender.sendMessage(ChatColor.RED + Locale.get("message.give.console", locale));
}
}
@CommandString("rpgitem $n[] give $p[]")
@CommandDocumentation("$command.rpgitem.give.player")
@CommandGroup("item_give")
public void giveItemPlayer(CommandSender sender, RPGItem item, Player player) {
String locale = Locale.getPlayerLocale((Player) sender);
item.give(player);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.give.to", locale), item.getDisplay() + ChatColor.AQUA, player.getName()));
player.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.give.ok", locale), item.getDisplay()));
}
@CommandString("rpgitem $n[] give $p[] $count:i[]")
@CommandDocumentation("$command.rpgitem.give.player.count")
@CommandGroup("item_give")
public void giveItemPlayerCount(CommandSender sender, RPGItem item, Player player, int count) {
for (int i = 0; i < count; i++) {
item.give(player);
}
}
@CommandString("rpgitem $n[] remove")
@CommandDocumentation("$command.rpgitem.remove")
@CommandGroup("item_remove")
public void removeItem(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
ItemManager.remove(item);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.remove.ok", locale), item.getName()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] display")
@CommandDocumentation("$command.rpgitem.display")
@CommandGroup("item_display")
public void getItemDisplay(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.display.get", locale), item.getName(), item.getDisplay()));
}
@CommandString("rpgitem $n[] display $display:s[]")
@CommandDocumentation("$command.rpgitem.display.set")
@CommandGroup("item_display")
public void setItemDisplay(CommandSender sender, RPGItem item, String display) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setDisplay(display);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.display.set", locale), item.getName(), item.getDisplay()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] quality")
@CommandDocumentation("$command.rpgitem.quality")
@CommandGroup("item_quality")
public void getItemQuality(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.quality.get", locale), item.getName(), item.getQuality().toString().toLowerCase()));
}
@CommandString("rpgitem $n[] quality $e[think.rpgitems.item.Quality]")
@CommandDocumentation("$command.rpgitem.quality.set")
@CommandGroup("item_quality")
public void setItemQuality(CommandSender sender, RPGItem item, Quality quality) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setQuality(quality);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.quality.set", locale), item.getName(), item.getQuality().toString().toLowerCase()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] damage")
@CommandDocumentation("$command.rpgitem.damage")
@CommandGroup("item_damage")
public void getItemDamage(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.damage.get", locale), item.getName(), item.getDamageMin(), item.getDamageMax()));
}
@CommandString("rpgitem $n[] damage $damage:i[]")
@CommandDocumentation("$command.rpgitem.damage.set")
@CommandGroup("item_damage")
public void setItemDamage(CommandSender sender, RPGItem item, int damage) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setDamage(damage, damage);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.damage.set", locale), item.getName(), item.getDamageMin()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] damage $min:i[] $max:i[]")
@CommandDocumentation("$command.rpgitem.damage.set.range")
@CommandGroup("item_damage")
public void setItemDamage(CommandSender sender, RPGItem item, int min, int max) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setDamage(min, max);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.damage.set.range", locale), item.getName(), item.getDamageMin(), item.getDamageMax()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] armour")
@CommandDocumentation("$command.rpgitem.armour")
@CommandGroup("item_armour")
public void getItemArmour(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.armour.get", locale), item.getName(), item.getArmour()));
}
@CommandString("rpgitem $n[] armour $armour:i[0,100]")
@CommandDocumentation("$command.rpgitem.armour.set")
@CommandGroup("item_armour")
public void setItemArmour(CommandSender sender, RPGItem item, int armour) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setArmour(armour);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.armour.set", locale), item.getName(), item.getArmour()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] type")
@CommandDocumentation("$command.rpgitem.type")
@CommandGroup("item_type")
public void getItemType(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.type.get", locale), item.getName(), item.getType()));
}
@CommandString("rpgitem $n[] type $type:s[]")
@CommandDocumentation("$command.rpgitem.type.set")
@CommandGroup("item_type")
public void setItemType(CommandSender sender, RPGItem item, String type) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setType(type);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.type.set", locale), item.getName(), item.getType()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] hand")
@CommandDocumentation("$command.rpgitem.hand")
@CommandGroup("item_hand")
public void getItemHand(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.hand.get", locale), item.getName(), item.getHand()));
}
@CommandString("rpgitem $n[] hand $hand:s[]")
@CommandDocumentation("$command.rpgitem.hand.set")
@CommandGroup("item_hand")
public void setItemHand(CommandSender sender, RPGItem item, String hand) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setHand(hand);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.hand.set", locale), item.getName(), item.getHand()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] lore")
@CommandDocumentation("$command.rpgitem.lore")
@CommandGroup("item_lore")
public void getItemLore(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.lore.get", locale), item.getName(), item.getLore()));
}
@CommandString("rpgitem $n[] lore $lore:s[]")
@CommandDocumentation("$command.rpgitem.lore.set")
@CommandGroup("item_lore")
public void setItemLore(CommandSender sender, RPGItem item, String lore) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setLore(lore);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.lore.set", locale), item.getName(), item.getLore()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] item")
@CommandDocumentation("$command.rpgitem.item")
@CommandGroup("item_item")
public void getItemItem(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.item.get", locale), item.getName(), item.getItem().toString()));
}
@CommandString("rpgitem $n[] item $m[]")
@CommandDocumentation("$command.rpgitem.item.set")
@CommandGroup("item_item")
public void setItemItem(CommandSender sender, RPGItem item, Material material) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setItem(material);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.item.set", locale), item.getName(), item.getItem(), item.getDataValue()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] item $m[] $data:i[]")
@CommandDocumentation("$command.rpgitem.item.set.data")
@CommandGroup("item_item")
public void setItemItem(CommandSender sender, RPGItem item, Material material, int data) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setItem(material, false);
ItemMeta meta = item.getLocaleMeta(locale);
if (meta instanceof LeatherArmorMeta) {
((LeatherArmorMeta) meta).setColor(Color.fromRGB(data));
} else {
item.setDataValue((short) data);
}
for (String locales : Locale.getLocales()) {
item.setLocaleMeta(locales, meta.clone());
}
item.rebuild();
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.item.set", locale), item.getName(), item.getItem(), item.getDataValue()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] item $m[] hex $hexcolour:s[]")
@CommandDocumentation("$command.rpgitem.item.set.data.hex")
@CommandGroup("item_item")
public void setItemItem(CommandSender sender, RPGItem item, Material material, String hexColour) {
String locale = Locale.getPlayerLocale((Player) sender);
int dam;
try {
dam = Integer.parseInt((String) hexColour, 16);
} catch (NumberFormatException e) {
sender.sendMessage(ChatColor.RED + "Failed to parse " + hexColour);
return;
}
item.setItem(material, true);
ItemMeta meta = item.getLocaleMeta(locale);
if (meta instanceof LeatherArmorMeta) {
((LeatherArmorMeta) meta).setColor(Color.fromRGB(dam));
} else {
item.setDataValue((short) dam);
}
for (String locales : Locale.getLocales()) {
item.setLocaleMeta(locales, meta.clone());
}
item.rebuild();
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.item.set", locale), item.getName(), item.getItem(), item.getDataValue()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] item $itemid:i[]")
@CommandDocumentation("$command.rpgitem.item.set.id")
@CommandGroup("item_item")
public void setItemItem(CommandSender sender, RPGItem item, int id) {
String locale = Locale.getPlayerLocale((Player) sender);
Material mat = Material.getMaterial(id);
if (mat == null) {
sender.sendMessage(ChatColor.RED + "Cannot find item");
return;
}
item.setItem(mat);
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.item.set", locale), item.getName(), item.getItem(), item.getDataValue()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] item $itemid:i[] $data:i[]")
@CommandDocumentation("$command.rpgitem.item.set.id.data")
@CommandGroup("item_item")
public void setItemItem(CommandSender sender, RPGItem item, int id, int data) {
String locale = Locale.getPlayerLocale((Player) sender);
Material mat = Material.getMaterial(id);
if (mat == null) {
sender.sendMessage(ChatColor.RED + Locale.get("message.item.cant.find", locale));
return;
}
item.setItem(mat, true);
ItemMeta meta = item.toItemStack(locale).getItemMeta();
if (meta instanceof LeatherArmorMeta) {
((LeatherArmorMeta) meta).setColor(Color.fromRGB(data));
} else {
item.setDataValue((short) data);
}
for (String locales : Locale.getLocales()) {
item.setLocaleMeta(locales, meta);
}
item.rebuild();
sender.sendMessage(ChatColor.AQUA + String.format(Locale.get("message.item.set", locale), item.getName(), item.getItem(), item.getDataValue()));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] removepower $power:s[]")
@CommandDocumentation("$command.rpgitem.removepower")
@CommandGroup("item_removepower")
public void itemRemovePower(CommandSender sender, RPGItem item, String power) {
String locale = Locale.getPlayerLocale((Player) sender);
if (item.removePower(power)) {
Power.powerUsage.put(power, Power.powerUsage.get(power) - 1);
sender.sendMessage(ChatColor.GREEN + String.format(Locale.get("message.power.removed", locale), power));
ItemManager.save(Plugin.plugin);
} else {
sender.sendMessage(ChatColor.RED + String.format(Locale.get("message.power.unknown", locale), power));
}
}
@CommandString("rpgitem $n[] description add $descriptionline:s[]")
@CommandDocumentation("$command.rpgitem.description.add")
@CommandGroup("item_description")
public void itemAddDescription(CommandSender sender, RPGItem item, String line) {
String locale = Locale.getPlayerLocale((Player) sender);
item.addDescription(ChatColor.WHITE + line);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.description.ok", locale));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] description set $lineno:i[] $descriptionline:s[]")
@CommandDocumentation("$command.rpgitem.description.set")
@CommandGroup("item_description")
public void itemSetDescription(CommandSender sender, RPGItem item, int lineNo, String line) {
String locale = Locale.getPlayerLocale((Player) sender);
if (lineNo < 0 || lineNo >= item.description.size()) {
sender.sendMessage(ChatColor.RED + String.format(Locale.get("message.description.out.of.range", locale), line));
return;
}
item.description.set(lineNo, ChatColor.translateAlternateColorCodes('&', ChatColor.WHITE + line));
item.rebuild();
sender.sendMessage(ChatColor.AQUA + Locale.get("message.description.change", locale));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] description remove $lineno:i[]")
@CommandDocumentation("$command.rpgitem.description.remove")
@CommandGroup("item_description")
public void itemRemoveDescription(CommandSender sender, RPGItem item, int lineNo) {
String locale = Locale.getPlayerLocale((Player) sender);
if (lineNo < 0 || lineNo >= item.description.size()) {
sender.sendMessage(ChatColor.RED + String.format(Locale.get("message.description.out.of.range", locale), lineNo));
return;
}
item.description.remove(lineNo);
item.rebuild();
sender.sendMessage(ChatColor.AQUA + Locale.get("message.description.remove", locale));
ItemManager.save(Plugin.plugin);
}
@CommandString("rpgitem $n[] worldguard")
@CommandDocumentation("$command.rpgitem.item.worldguard")
@CommandGroup("item_worldguard")
public void itemToggleWorldGuard(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
if (!WorldGuard.isEnabled()) {
sender.sendMessage(ChatColor.AQUA + Locale.get("message.worldguard.error", locale));
return;
}
item.ignoreWorldGuard = !item.ignoreWorldGuard;
if (item.ignoreWorldGuard) {
sender.sendMessage(ChatColor.AQUA + Locale.get("message.worldguard.override.active", locale));
} else {
sender.sendMessage(ChatColor.AQUA + Locale.get("message.worldguard.override.disabled", locale));
}
}
@CommandString("rpgitem $n[] removerecipe")
@CommandDocumentation("$command.rpgitem.removerecipe")
@CommandGroup("item_recipe")
public void itemRemoveRecipe(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
item.hasRecipe = false;
item.resetRecipe(true);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.recipe.removed", locale));
}
@CommandString("rpgitem $n[] recipe $chance:i[]")
@CommandDocumentation("$command.rpgitem.recipe")
@CommandGroup("item_recipe")
public void itemSetRecipe(CommandSender sender, RPGItem item, int chance) {
String locale = Locale.getPlayerLocale((Player) sender);
if (sender instanceof Player) {
Player player = (Player) sender;
String title = "RPGItems - " + item.getDisplay();
if (title.length() > 32) {
title = title.substring(0, 32);
}
Inventory recipeInventory = Bukkit.createInventory(player, 27, title);
if (item.hasRecipe) {
ItemStack blank = new ItemStack(Material.WALL_SIGN);
ItemMeta meta = blank.getItemMeta();
meta.setDisplayName(ChatColor.RED + Locale.get("message.recipe.1", locale));
ArrayList<String> lore = new ArrayList<String>();
lore.add(ChatColor.WHITE + Locale.get("message.recipe.2", locale));
lore.add(ChatColor.WHITE + Locale.get("message.recipe.3", locale));
lore.add(ChatColor.WHITE + Locale.get("message.recipe.4", locale));
lore.add(ChatColor.WHITE + Locale.get("message.recipe.5", locale));
meta.setLore(lore);
blank.setItemMeta(meta);
for (int i = 0; i < 27; i++) {
recipeInventory.setItem(i, blank);
}
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
int i = x + y * 9;
ItemStack it = item.recipe.get(x + y * 3);
if (it != null)
recipeInventory.setItem(i, it);
else
recipeInventory.setItem(i, null);
}
}
}
item.setRecipeChance(chance);
player.openInventory(recipeInventory);
Events.recipeWindows.put(player.getName(), item.getID());
} else {
sender.sendMessage(ChatColor.RED + Locale.get("message.error.only.player", locale));
}
}
@CommandString("rpgitem $n[] drop $e[org.bukkit.entity.EntityType]")
@CommandDocumentation("$command.rpgitem.drop")
@CommandGroup("item_drop")
public void getItemDropChance(CommandSender sender, RPGItem item, EntityType type) {
String locale = Locale.getPlayerLocale((Player) sender);
sender.sendMessage(String.format(ChatColor.AQUA + Locale.get("message.drop.get", locale), item.getDisplay() + ChatColor.AQUA, type.toString().toLowerCase(), item.dropChances.get(type.toString())));
}
@CommandString("rpgitem $n[] drop $e[org.bukkit.entity.EntityType] $chance:f[]")
@CommandDocumentation("$command.rpgitem.drop.set")
@CommandGroup("item_drop")
public void setItemDropChance(CommandSender sender, RPGItem item, EntityType type, double chance) {
String locale = Locale.getPlayerLocale((Player) sender);
chance = Math.min(chance, 100.0);
String typeS = type.toString();
if (chance > 0) {
item.dropChances.put(typeS, chance);
if (!Events.drops.containsKey(typeS)) {
Events.drops.put(typeS, new HashSet<Integer>());
}
Set<Integer> set = Events.drops.get(typeS);
set.add(item.getID());
} else {
item.dropChances.remove(typeS);
if (Events.drops.containsKey(typeS)) {
Set<Integer> set = Events.drops.get(typeS);
set.remove(item.getID());
}
}
ItemManager.save(Plugin.plugin);
sender.sendMessage(String.format(ChatColor.AQUA + Locale.get("message.drop.set", locale), item.getDisplay() + ChatColor.AQUA, typeS.toLowerCase(), item.dropChances.get(typeS)));
}
@CommandString("rpgitem $n[] durability $durability:i[]")
@CommandDocumentation("$command.rpgitem.durability")
@CommandGroup("item_durability")
public void setItemDurability(CommandSender sender, RPGItem item, int newValue) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setMaxDurability(newValue);
ItemManager.save(Plugin.plugin);
sender.sendMessage(Locale.get("message.durability.change", locale));
}
@CommandString("rpgitem $n[] durability infinite")
@CommandDocumentation("$command.rpgitem.durability.infinite")
@CommandGroup("item_durability")
public void setItemDurabilityInfinite(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
item.setMaxDurability(-1);
ItemManager.save(Plugin.plugin);
sender.sendMessage(Locale.get("message.durability.change", locale));
}
@CommandString("rpgitem $n[] durability togglebar")
@CommandDocumentation("$command.rpgitem.durability.togglebar")
@CommandGroup("item_durability")
public void toggleItemDurabilityBar(CommandSender sender, RPGItem item) {
String locale = Locale.getPlayerLocale((Player) sender);
item.toggleBar();
ItemManager.save(Plugin.plugin);
sender.sendMessage(Locale.get("message.durability.toggle", locale));
}
@CommandString("rpgitem $n[] permission $permission:s[] $haspermission:s[]")
@CommandDocumentation("$command.rpgitem.permission")
@CommandGroup("item_permission")
public void setPermission(CommandSender sender, RPGItem item, String permission, String haspermission) {
String locale = Locale.getPlayerLocale((Player) sender);
boolean enabled = false;
if(haspermission.equalsIgnoreCase("true")){
enabled = true;
}else if(haspermission.equalsIgnoreCase("false")){
enabled = false;
}else{
sender.sendMessage(Locale.get("message.permission.booleanerror", locale));
}
item.setPermission(permission);
item.setHaspermission(enabled);
ItemManager.save(Plugin.plugin);
sender.sendMessage(Locale.get("message.permission.success", locale));
}
}