package tv.mineinthebox.essentials.events.protection;
import org.bukkit.ChatColor;
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 UnregisterProtectionEvent extends EventTemplate implements Listener {
private final ProtectionManager manager;
public UnregisterProtectionEvent(xEssentials pl) {
super(pl, "Protection");
this.manager = pl.getManagers().getProtectionDBManager();
}
@EventHandler
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.REMOVE) {
ProtectedBlock pblock = new ProtectedBlock(pl, e.getClickedBlock());
if(pblock.isProtected()) {
if(pblock.isMember(e.getPlayer().getUniqueId())) {
pblock.removeAll();
sendMessage(e.getPlayer(), ChatColor.GRAY + "you have successfully unregistered " + e.getClickedBlock().getType().name());
manager.removeSession(e.getPlayer().getName());
e.setCancelled(true);
} else {
sendMessage(e.getPlayer(), ChatColor.RED + "you are not the owner of this block!");
manager.removeSession(e.getPlayer().getName());
e.setCancelled(true);
}
} else {
sendMessage(e.getPlayer(), ChatColor.RED + "this block was already unregistered.");
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());
}
}
}