package tv.mineinthebox.essentials.events.protection; import java.util.Arrays; import java.util.List; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.ProtectionType; import tv.mineinthebox.essentials.instances.ProtectedBlock; import tv.mineinthebox.essentials.interfaces.EventTemplate; import tv.mineinthebox.essentials.managers.ProtectionManager; public class RegisterProtectionEvent extends EventTemplate implements Listener { private final List<Material> materials() { Material[] materials = { Material.CHEST, Material.TRAPPED_CHEST, Material.IRON_DOOR_BLOCK, Material.WOODEN_DOOR, Material.SIGN_POST, Material.WALL_SIGN, Material.FURNACE, Material.JUKEBOX, Material.TRAP_DOOR, Material.DISPENSER }; return Arrays.asList(materials); } private final ProtectionManager manager; public RegisterProtectionEvent(xEssentials pl) { super(pl, "Protection"); this.manager = pl.getManagers().getProtectionDBManager(); } @EventHandler(ignoreCancelled = true) public void onInteract(PlayerInteractEvent e) { if(e.getAction() == Action.RIGHT_CLICK_BLOCK) { if(manager.hasSession(e.getPlayer().getName())) { ProtectionType type = (ProtectionType) manager.getSessionData(e.getPlayer().getName())[0]; if(type == ProtectionType.CREATE) { ProtectedBlock pblock = new ProtectedBlock(pl, e.getClickedBlock()); if(!pblock.isProtected()) { if(materials().contains(e.getClickedBlock())) { pblock.addProtection(e.getPlayer().getUniqueId()); sendMessage(e.getPlayer(), ChatColor.GRAY + "successfully registered permissions for this " + e.getClickedBlock().getType().name() + " block"); manager.removeSession(e.getPlayer().getName()); e.setCancelled(true); } else { sendMessage(e.getPlayer(), ChatColor.RED + "could not register permissions on a block which isnt a permissionable block"); manager.removeSession(e.getPlayer().getName()); e.setCancelled(true); } } else { sendMessage(e.getPlayer(), ChatColor.RED + "this block is already private!"); manager.removeSession(e.getPlayer().getName()); e.setCancelled(true); } } } } } @EventHandler public void onQuit(PlayerQuitEvent e) { if(manager.hasSession(e.getPlayer().getName())){ manager.removeSession(e.getPlayer().getName()); } } @EventHandler public void onQuit(PlayerKickEvent e) { if(manager.hasSession(e.getPlayer().getName())){ manager.removeSession(e.getPlayer().getName()); } } }