package think.rpgitems;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
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.RPGItem;
import think.rpgitems.power.PowerArrow;
import think.rpgitems.power.PowerCommand;
import think.rpgitems.power.PowerConsume;
import think.rpgitems.power.PowerFireball;
import think.rpgitems.power.PowerFlame;
import think.rpgitems.power.PowerFood;
import think.rpgitems.power.PowerIce;
import think.rpgitems.power.PowerKnockup;
import think.rpgitems.power.PowerLifeSteal;
import think.rpgitems.power.PowerLightning;
import think.rpgitems.power.PowerPotionHit;
import think.rpgitems.power.PowerPotionSelf;
import think.rpgitems.power.PowerPotionTick;
import think.rpgitems.power.PowerRainbow;
import think.rpgitems.power.PowerRumble;
import think.rpgitems.power.PowerSkyHook;
import think.rpgitems.power.PowerTNTCannon;
import think.rpgitems.power.PowerTeleport;
import think.rpgitems.power.PowerUnbreakable;
import think.rpgitems.power.PowerUnbreaking;
public class PowerHandler implements CommandHandler {
@CommandString("rpgitem $n[] power arrow")
@CommandDocumentation("$command.rpgitem.arrow")
@CommandGroup("item_power_arrow")
public void arrow(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerArrow pow = new PowerArrow();
pow.cooldownTime = 20;
pow.item = item;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power arrow $cooldown:i[]")
@CommandDocumentation("$command.rpgitem.arrow.full")
@CommandGroup("item_power_arrow")
public void arrow(CommandSender sender, RPGItem item, int cooldown) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerArrow pow = new PowerArrow();
pow.item = item;
pow.cooldownTime = cooldown;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power command $cooldown:i[] $o[left,right] $display:s[] $command:s[]")
@CommandDocumentation("$command.rpgitem.command")
@CommandGroup("item_power_command_b")
public void command(CommandSender sender, RPGItem item, int cooldown, String mouse, String displayText, String command) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerCommand com = new PowerCommand();
com.cooldownTime = cooldown;
command = command.trim();
if (command.charAt(0) == '/') {
command = command.substring(1);
}
com.isRight = mouse.equals("right");
com.display = displayText;
com.command = command;
com.item = item;
item.addPower(com);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power command $cooldown:i[] $o[left,right] $display:s[] $command:s[] $permission:s[]")
@CommandDocumentation("$command.rpgitem.command.full")
@CommandGroup("item_power_command_a")
public void command(CommandSender sender, RPGItem item, int cooldown, String mouse, String displayText, String command, String permission) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerCommand com = new PowerCommand();
com.cooldownTime = cooldown;
command = command.trim();
if (command.charAt(0) == '/') {
command = command.substring(1);
}
com.isRight = mouse.equals("right");
com.display = displayText;
com.command = command;
com.permission = permission;
com.item = item;
item.addPower(com);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power command $cooldown:i[] $o[left,right] $details:s[]")
@CommandDocumentation("$command.rpgitem.command.old")
@CommandGroup("item_power_command_c")
public void command(CommandSender sender, RPGItem item, int cooldown, String mouse, String details) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
String[] pArgs = details.split("\\|");
if (pArgs.length < 2) {
sender.sendMessage(ChatColor.RED + Locale.get("message.error.command.format", locale));
return;
}
String display = pArgs[0].trim();
String command = pArgs[1].trim();
if (command.charAt(0) == '/') {
command = command.substring(1);
}
String permission = "";
if (pArgs.length > 2) {
permission = pArgs[2].trim();
}
PowerCommand com = new PowerCommand();
com.cooldownTime = cooldown;
com.isRight = mouse.equals("right");
com.item = item;
com.display = display;
com.command = command;
com.permission = permission;
item.addPower(com);
item.rebuild();
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power consume")
@CommandDocumentation("$command.rpgitem.consume")
@CommandGroup("item_power_consume")
public void consume(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerConsume pow = new PowerConsume();
pow.item = item;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power fireball")
@CommandDocumentation("$command.rpgitem.fireball")
@CommandGroup("item_power_fireball")
public void fireball(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerFireball pow = new PowerFireball();
pow.cooldownTime = 20;
pow.item = item;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power fireball $cooldown:i[]")
@CommandDocumentation("$command.rpgitem.fireball.full")
@CommandGroup("item_power_fireball")
public void fireball(CommandSender sender, RPGItem item, int cooldown) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerFireball pow = new PowerFireball();
pow.item = item;
pow.cooldownTime = cooldown;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power flame")
@CommandDocumentation("$command.rpgitem.flame")
@CommandGroup("item_power_flame")
public void flame(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerFlame pow = new PowerFlame();
pow.burnTime = 20;
pow.item = item;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power flame $burntime:i[]")
@CommandDocumentation("$command.rpgitem.flame.full")
@CommandGroup("item_power_flame")
public void flame(CommandSender sender, RPGItem item, int burnTime) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerFlame pow = new PowerFlame();
pow.item = item;
pow.burnTime = burnTime;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power lifesteal $chance:i[]")
@CommandDocumentation("$command.rpgitem.lifesteal")
@CommandGroup("item_power_lifesteal")
public void lifsteal(CommandSender sender, RPGItem item, int chance) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerLifeSteal pow = new PowerLifeSteal();
pow.item = item;
pow.chance = chance;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power ice")
@CommandDocumentation("$command.rpgitem.ice")
@CommandGroup("item_power_ice")
public void ice(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerIce pow = new PowerIce();
pow.cooldownTime = 20;
pow.item = item;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power ice $cooldown:i[]")
@CommandDocumentation("$command.rpgitem.ice.full")
@CommandGroup("item_power_ice")
public void ice(CommandSender sender, RPGItem item, int cooldown) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerIce pow = new PowerIce();
pow.item = item;
pow.cooldownTime = cooldown;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power knockup")
@CommandDocumentation("$command.rpgitem.knockup")
@CommandGroup("item_power_knockup")
public void knockup(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerKnockup pow = new PowerKnockup();
pow.item = item;
pow.chance = 20;
pow.power = 2;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power knockup $chance:i[] $power:f[]")
@CommandDocumentation("$command.rpgitem.knockup.full")
@CommandGroup("item_power_knockup")
public void knockup(CommandSender sender, RPGItem item, int chance, double power) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerKnockup pow = new PowerKnockup();
pow.item = item;
pow.chance = chance;
pow.power = power;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power lightning")
@CommandDocumentation("$command.rpgitem.lightning")
@CommandGroup("item_power_lightning")
public void lightning(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerLightning pow = new PowerLightning();
pow.item = item;
pow.chance = 20;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power lightning $chance:i[]")
@CommandDocumentation("$command.rpgitem.lightning.full")
@CommandGroup("item_power_lightning")
public void lightning(CommandSender sender, RPGItem item, int chance) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerLightning pow = new PowerLightning();
pow.item = item;
pow.chance = chance;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power potionhit $chance:i[] $duration:i[] $amplifier:i[] $effect:s[]")
@CommandDocumentation("$command.rpgitem.potionhit+PotionEffectType")
@CommandGroup("item_power_potionhit")
public void potionhit(CommandSender sender, RPGItem item, int chance, int duration, int amplifier, String effect) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerPotionHit pow = new PowerPotionHit();
pow.item = item;
pow.chance = chance;
pow.duration = duration;
pow.amplifier = amplifier;
pow.type = PotionEffectType.getByName(effect);
if (pow.type == null) {
sender.sendMessage(ChatColor.RED + String.format(Locale.get("message.error.effect", locale), effect));
return;
}
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power potionself $cooldown:i[] $duration:i[] $amplifier:i[] $effect:s[]")
@CommandDocumentation("$command.rpgitem.potionself+PotionEffectType")
@CommandGroup("item_power_potionself")
public void potionself(CommandSender sender, RPGItem item, int ccoldown, int duration, int amplifier, String effect) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerPotionSelf pow = new PowerPotionSelf();
pow.item = item;
pow.cooldownTime = ccoldown;
pow.time = duration;
pow.amplifier = amplifier;
pow.type = PotionEffectType.getByName(effect);
if (pow.type == null) {
sender.sendMessage(ChatColor.RED + String.format(Locale.get("message.error.effect", locale), effect));
return;
}
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power rainbow")
@CommandDocumentation("$command.rpgitem.rainbow")
@CommandGroup("item_power_rainbow")
public void rainbow(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerRainbow pow = new PowerRainbow();
pow.cooldownTime = 20;
pow.count = 5;
pow.item = item;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power rainbow $cooldown:i[] $count:i[]")
@CommandDocumentation("$command.rpgitem.rainbow.full")
@CommandGroup("item_power_rainbow")
public void rainbow(CommandSender sender, RPGItem item, int cooldown, int count) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerRainbow pow = new PowerRainbow();
pow.cooldownTime = cooldown;
pow.count = count;
pow.item = item;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power rumble $cooldown:i[] $power:i[] $distance:i[]")
@CommandDocumentation("$command.rpgitem.rumble")
@CommandGroup("item_power_rumble")
public void rumble(CommandSender sender, RPGItem item, int cooldown, int power, int distance) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerRumble pow = new PowerRumble();
pow.item = item;
pow.cooldownTime = cooldown;
pow.power = power;
pow.distance = distance;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power teleport")
@CommandDocumentation("$command.rpgitem.teleport")
@CommandGroup("item_power_teleport")
public void teleport(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerTeleport pow = new PowerTeleport();
pow.item = item;
pow.cooldownTime = 20;
pow.distance = 5;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power teleport $cooldown:i[] $distance:i[]")
@CommandDocumentation("$command.rpgitem.teleport.full")
@CommandGroup("item_power_teleport")
public void teleport(CommandSender sender, RPGItem item, int cooldown, int distance) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerTeleport pow = new PowerTeleport();
pow.item = item;
pow.cooldownTime = cooldown;
pow.distance = distance;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power tntcannon")
@CommandDocumentation("$command.rpgitem.tntcannon")
@CommandGroup("item_power_tntcannon")
public void tntcannon(CommandSender sender, RPGItem item) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerTNTCannon pow = new PowerTNTCannon();
pow.item = item;
pow.cooldownTime = 20;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power tntcannon $cooldown:i[]")
@CommandDocumentation("$command.rpgitem.tntcannon.full")
@CommandGroup("item_power_tntcannon")
public void tntcannon(CommandSender sender, RPGItem item, int cooldown) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerTNTCannon pow = new PowerTNTCannon();
pow.item = item;
pow.cooldownTime = cooldown;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power skyhook $m[] $distance:i[]")
@CommandDocumentation("$command.rpgitem.skyhook")
@CommandGroup("item_power_skyhook")
public void skyHook(CommandSender sender, RPGItem item, Material material, int distance) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerSkyHook pow = new PowerSkyHook();
pow.item = item;
pow.railMaterial = material;
pow.hookDistance = distance;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power potiontick $amplifier:i[] $effect:s[]")
@CommandDocumentation("$command.rpgitem.potiontick")
@CommandGroup("item_power_potiontick")
public void potionTick(CommandSender sender, RPGItem item, int amplifier, String effect) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerPotionTick pow = new PowerPotionTick();
pow.item = item;
pow.amplifier = amplifier;
pow.effect = PotionEffectType.getByName(effect);
if (pow.effect == null) {
sender.sendMessage(ChatColor.RED + String.format(Locale.get("message.error.effect", locale), effect));
return;
}
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
@CommandString("rpgitem $n[] power food $foodpoints:i[]")
@CommandDocumentation("$command.rpgitem.food")
@CommandGroup("item_power_food")
public void food(CommandSender sender, RPGItem item, int foodpoints) {
String locale = sender instanceof Player ? Locale.getPlayerLocale((Player) sender) : "en_GB";
PowerFood pow = new PowerFood();
pow.item = item;
pow.foodpoints = foodpoints;
item.addPower(pow);
ItemManager.save(Plugin.plugin);
sender.sendMessage(ChatColor.AQUA + Locale.get("message.power.ok", locale));
}
}