package tv.mineinthebox.essentials.commands;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.enums.PermissionKey;
import tv.mineinthebox.essentials.interfaces.CommandTemplate;
import tv.mineinthebox.essentials.interfaces.XPlayer;
public class CmdPotato extends CommandTemplate {
private final xEssentials pl;
public CmdPotato(xEssentials pl, Command cmd, CommandSender sender) {
super(pl, cmd, sender);
this.pl = pl;
}
public boolean execute(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("potato")) {
if(sender.hasPermission(PermissionKey.CMD_POTATO.getPermission())) {
if(args.length == 0) {
if(sender instanceof Player) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName());
xp.vanish();
Item item = xp.getBukkitPlayer().getWorld().dropItem(xp.getBukkitPlayer().getLocation(), new ItemStack(Material.POTATO_ITEM));
xp.getBukkitPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, Integer.MAX_VALUE, 100));
xp.getBukkitPlayer().addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 100));
xp.getBukkitPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 3));
xp.getBukkitPlayer().getWorld().playSound(xp.getBukkitPlayer().getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1);
sendMessage("you are turned into a potato!");
xp.setPotato(item);
onPotatoSchedule(xp.getName());
} else {
getWarning(WarningType.PLAYER_ONLY);
}
} else if(args.length == 1) {
Player p = pl.getManagers().getPlayerManager().getOfflinePlayer(args[0]).getBukkitPlayer();
if(p instanceof Player) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(p.getName());
xp.vanish();
Item item = xp.getBukkitPlayer().getWorld().dropItem(xp.getBukkitPlayer().getLocation(), new ItemStack(Material.POTATO_ITEM));
xp.getBukkitPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, Integer.MAX_VALUE, 100));
xp.getBukkitPlayer().addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 100));
xp.getBukkitPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 3));
xp.getBukkitPlayer().getWorld().playSound(xp.getBukkitPlayer().getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1);
sendMessageTo(xp.getBukkitPlayer(), "you are turned into a potato!");
xp.setPotato(item);
onPotatoSchedule(xp.getName());
sendMessage("you successfully changed " + xp.getBukkitPlayer().getName() + " into a potato!");
} else {
sender.sendMessage("the player is not online!");
}
}
} else {
getWarning(WarningType.NO_PERMISSION);
}
}
return false;
}
private void onPotatoSchedule(final String player) {
Bukkit.getScheduler().scheduleSyncDelayedTask(pl, new Runnable() {
@Override
public void run() {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(player);
if(xp instanceof XPlayer) {
if(xp.isPotato()) {
xp.unvanish(true);
sendMessageTo(xp.getBukkitPlayer(), "you are not longer cursed as potato!");
xp.getBukkitPlayer().removePotionEffect(PotionEffectType.BLINDNESS);
xp.getBukkitPlayer().removePotionEffect(PotionEffectType.INVISIBILITY);
xp.getBukkitPlayer().removePotionEffect(PotionEffectType.SPEED);
xp.removePotato();
}
}
}
}, 1500);
}
}