package tv.mineinthebox.essentials.events.players; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.LogType; import tv.mineinthebox.essentials.interfaces.EventTemplate; import tv.mineinthebox.essentials.interfaces.XPlayer; public class PotatoMoveEvent extends EventTemplate implements Listener { public PotatoMoveEvent(xEssentials pl) { super(pl, "Cursed?"); } @EventHandler public void onPotatoMove(PlayerMoveEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isPotato()) { if(e.getFrom().distanceSquared(e.getTo()) > 0) { Item item = xp.getPotato(); Vector direction = e.getTo().toVector().subtract(item.getLocation().toVector()).normalize(); item.setVelocity(direction.multiply(0.5)); } } } } @EventHandler public void onPickup(PlayerPickupItemEvent e) { if(e.getItem().getItemStack().getType() == Material.POTATO_ITEM) { for(Entity entity : e.getItem().getNearbyEntities(5, 5, 5)) { if(entity instanceof Player) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(((Player) entity).getName()); if(xp.isPotato()) { if(e.getItem().equals(xp.getPotato())) { e.setCancelled(true); } } } } } } @EventHandler public void onDrop(PlayerDropItemEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isPotato()) { sendMessage(e.getPlayer(), ChatColor.GREEN + "potatos cannot pickup items!"); e.setCancelled(true); } } } @EventHandler public void onPlace(BlockPlaceEvent e) { if(e.isCancelled()) { return; } if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isPotato()) { sendMessage(e.getPlayer(), ChatColor.GREEN + "potatos cannot place blocks!"); e.setCancelled(true); } } } @EventHandler public void onPlace(BlockBreakEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isPotato()) { sendMessage(e.getPlayer(), ChatColor.GREEN + "potatos cannot break blocks!"); e.setCancelled(true); } } } @EventHandler public void onQuit(PlayerQuitEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { if(pl.getConfiguration().getDebugConfig().isEnabled()) { xEssentials.log("player "+ e.getPlayer().getName() +" is still online for quit event for potato event and gets removed now.", LogType.DEBUG); } XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp instanceof XPlayer) { if(xp.isPotato()) { xp.unvanish(); xp.getBukkitPlayer().removePotionEffect(PotionEffectType.BLINDNESS); xp.getBukkitPlayer().removePotionEffect(PotionEffectType.INVISIBILITY); xp.getBukkitPlayer().removePotionEffect(PotionEffectType.SPEED); Item potato = xp.getPotato(); potato.remove(); xp.removePotato(); } } } } @EventHandler public void onQuit(PlayerKickEvent e) { if(pl.getManagers().getPlayerManager().isOnline(e.getPlayer().getName())) { if(pl.getConfiguration().getDebugConfig().isEnabled()) { xEssentials.log("player "+ e.getPlayer().getName() +" is still online for kick event for potato event and gets removed now.", LogType.DEBUG); } XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp instanceof XPlayer) { if(xp.isPotato()) { xp.unvanish(); xp.getBukkitPlayer().removePotionEffect(PotionEffectType.BLINDNESS); xp.getBukkitPlayer().removePotionEffect(PotionEffectType.INVISIBILITY); xp.getBukkitPlayer().removePotionEffect(PotionEffectType.SPEED); Item potato = xp.getPotato(); potato.remove(); xp.removePotato(); } } } } }