package net.t2code.commandguiv2.Spigot.useItem; import net.t2code.commandguiv2.Spigot.Main; import net.t2code.commandguiv2.Spigot.cmdManagement.Commands; import net.t2code.commandguiv2.Spigot.config.config.SelectConfig; import net.t2code.commandguiv2.Spigot.config.languages.SelectMessages; import net.t2code.commandguiv2.Spigot.gui.OpenGUI; import net.t2code.commandguiv2.Spigot.database.SelectDatabase; import net.t2code.commandguiv2.api.CGuiAPI; import net.t2code.t2codelib.SPIGOT.api.items.T2CitemVersion; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryPickupItemEvent; import org.bukkit.event.player.*; import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.scheduler.BukkitRunnable; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; public class Events implements Listener { public static HashMap useItemHashMap = new HashMap<>(); public static HashMap useItemSlotHashMap = new HashMap<>(); @EventHandler public void onJoin(PlayerJoinEvent e) { useItemHashMap.put(e.getPlayer().getName(), SelectDatabase.selectItemStatus(e.getPlayer())); Integer i = SelectDatabase.selectSlot(e.getPlayer()); if (i == null) { useItemSlotHashMap.put(e.getPlayer().getName(), SelectConfig.getUseItem_InventorySlot()); } else useItemSlotHashMap.put(e.getPlayer().getName(), i); if (CGuiAPI.JoinDisable) { T2Csend.debug(Main.getPlugin(), "JoinDisable"); return; } if (e.getPlayer().hasPermission("commandgui.get.guiitem.at.login")) { new BukkitRunnable() { @Override public void run() { T2Csend.debug(Main.getPlugin(), "itemChange: " + e.getPlayer().getName()); ItemChange.itemChange(e.getPlayer(), true); } }.runTaskLater(Main.getPlugin(), 20L * 1); } } @EventHandler public void onJoin(PlayerQuitEvent e) { useItemHashMap.remove(e.getPlayer().getName()); } @EventHandler(priority = EventPriority.HIGHEST) public void onDeathDrop(PlayerDeathEvent e) { Player player = e.getEntity().getPlayer(); UseItem.removeItem(player); if (!e.getDrops().isEmpty()) { Iterator var3 = (new ArrayList(e.getDrops())).iterator(); while (var3.hasNext()) { ItemStack items = (ItemStack) var3.next(); if (items != null && items.hasItemMeta() && items.getItemMeta().hasDisplayName() && items.getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { e.getDrops().remove(items); } } } } @EventHandler(priority = EventPriority.HIGHEST) public void onRespawn(PlayerRespawnEvent e) { Player player = e.getPlayer(); if (SelectConfig.getUseItem_Enable()) { ItemChange.itemChange(player, false); //if (!SelectConfig.getUseItem_AllowToggle || Select_Database.selectItemStatus(player)) { // if (SelectConfig.getUseItem_GiveOnlyOnFirstJoin) { // if (!player.hasPlayedBefore()) { // new BukkitRunnable() { // @Override // public void run() { // Give_UseItem.onGive(player); // } // }.runTaskLater(Main.getPlugin(), 20L * 1); // } // } else { // new BukkitRunnable() { // @Override // public void run() { // Give_UseItem.onGive(player); // } // }.runTaskLater(Main.getPlugin(), 20L * 1); // } //} } } @EventHandler(priority = EventPriority.HIGHEST) public void onGameModeChange(PlayerGameModeChangeEvent e) { Player player = e.getPlayer(); if (!SelectConfig.getUseItemGameModeChangeEnable()) { return; } new BukkitRunnable() { @Override public void run() { ItemChange.itemChange(player, false); } }.runTaskLater(Main.getPlugin(), SelectConfig.getUseItemGameModeChangeDelayInTicks() * 1L); } @EventHandler public void onWorldChange(PlayerChangedWorldEvent e) { Player player = e.getPlayer(); if (!SelectConfig.getUseItemWorldChangeEnable()) { return; } new BukkitRunnable() { @Override public void run() { ItemChange.itemChange(player, false); } }.runTaskLater(Main.getPlugin(), SelectConfig.getUseItemWorldChangeDelayInTicks() * 1L); } @EventHandler(priority = EventPriority.HIGHEST) public void onInteract(PlayerInteractEvent e) { Player p = e.getPlayer(); if (!p.isSneaking()) { for (String material : SelectConfig.getUseItemItemBlockBlacklist()) { if (e.getClickedBlock() != null) { if (e.getClickedBlock().getType() == Material.valueOf(material)) return; } } } if (SelectConfig.getUseItem_Enable()) { if (SelectConfig.getUseItem_PlayerHead_Enable()) { if (e.getItem() != null && p.getItemInHand().getType() == T2CitemVersion.getHead()) { if (e.getItem().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { openGUI(e, p); } } } else { if (e.getItem() != null && p.getItemInHand().getType() == Material.valueOf(SelectConfig.getUseItem_Material())) { if (e.getItem().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { openGUI(e, p); } } } } } private static void openGUI(PlayerInteractEvent e, Player player) { e.setCancelled(true); if ((!SelectConfig.getDisableInfoBySneak()) && player.isSneaking()) { Commands.info(player); return; } if (!Main.legacy) { if (!topInventoryIsEmpty(player)) return; } if (UseItem.protection(player, true)) return; if (SelectConfig.getUseItemGameModeProtection()) { if (SelectConfig.getUseItemGameModeMode().equalsIgnoreCase("blacklist") && SelectConfig.getUseItemGameModeList().contains(player.getGameMode().toString())) { e.setCancelled(true); T2Csend.player(player, SelectMessages.UseItemDisabledInGameMode); return; } if (SelectConfig.getUseItemGameModeMode().equalsIgnoreCase("whitelist") && !SelectConfig.getUseItemGameModeList().contains(player.getGameMode().toString())) { e.setCancelled(true); T2Csend.player(player, SelectMessages.UseItemDisabledInGameMode); return; } } if (SelectConfig.getUseItemWorldProtection()) { if (SelectConfig.getUseItemWorldMode().equalsIgnoreCase("blacklist") && SelectConfig.getUseItemWorldList().contains(player.getWorld().getName())) { e.setCancelled(true); T2Csend.player(player, SelectMessages.UseItemDisabledInWorld); return; } if (SelectConfig.getUseItemWorldMode().equalsIgnoreCase("whitelist") && !SelectConfig.getUseItemWorldList().contains(player.getWorld().getName())) { e.setCancelled(true); T2Csend.player(player, SelectMessages.UseItemDisabledInWorld); return; } } if (!SelectConfig.getUseItem_Permission() || player.hasPermission("commandgui.useitem")) { OpenGUI.openGUI(player, SelectConfig.getUseItem_OpenGUI(), true); } else { T2Csend.player(player,SelectMessages.NoPermissionForUseItem.replace("[perm]", "commandgui.useitem") .replace("[gui]", SelectConfig.getUseItem_OpenGUI())); } } @EventHandler(priority = EventPriority.HIGHEST) public void onItemMoveEvent(InventoryMoveItemEvent e) { if (!SelectConfig.getUseItem_BlockMoveAndDrop() || !SelectConfig.getUseItem_Enable()) return; if (e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().hasDisplayName() && e.getItem().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { e.setCancelled(true); } } @EventHandler(priority = EventPriority.HIGHEST) public void onItemMove(InventoryDragEvent e) { if (!SelectConfig.getUseItem_BlockMoveAndDrop() || !SelectConfig.getUseItem_Enable()) return; if (e.getWhoClicked() instanceof Player) { Player p = (Player) e.getWhoClicked(); if (e.getCursor() != null && e.getCursor().hasItemMeta() && e.getCursor().getItemMeta().hasDisplayName() && e.getCursor().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { p.closeInventory(); e.setCancelled(true); ItemChange.itemChange(p, false); } if (e.getOldCursor() != null && e.getOldCursor().hasItemMeta() && e.getOldCursor().getItemMeta().hasDisplayName() && e.getOldCursor().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { p.closeInventory(); e.setCancelled(true); ItemChange.itemChange(p, false); } } } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onItemMove(InventoryClickEvent e) { if (!SelectConfig.getUseItem_BlockMoveAndDrop() || !SelectConfig.getUseItem_Enable()) return; if (e.getCursor() != null && e.getCursor().hasItemMeta() && e.getCursor().getItemMeta().hasDisplayName() && e.getCursor().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { e.setCancelled(true); } if (e.getCurrentItem() != null && e.getCurrentItem().hasItemMeta() && e.getCurrentItem().getItemMeta().hasDisplayName() && e.getCurrentItem().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { e.setCancelled(true); } } @EventHandler(priority = EventPriority.HIGHEST) public void onItemMove(InventoryPickupItemEvent e) { if (!SelectConfig.getUseItem_BlockMoveAndDrop() || !SelectConfig.getUseItem_Enable()) return; if (e.getItem() != null && e.getItem().getItemStack() != null) { ItemStack item = e.getItem().getItemStack(); if (item.hasItemMeta() && item.getItemMeta().hasDisplayName() && item.getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { e.setCancelled(true); } } } @EventHandler(priority = EventPriority.HIGHEST) public void onPlace(BlockPlaceEvent e) { if (!SelectConfig.getUseItem_BlockMoveAndDrop() || !SelectConfig.getUseItem_Enable()) return; if (e.getItemInHand() != null && e.getItemInHand().hasItemMeta() && e.getItemInHand().getItemMeta().hasDisplayName() && e.getItemInHand().getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { e.setCancelled(true); } } @EventHandler(priority = EventPriority.HIGHEST) public void onDrop(PlayerDropItemEvent e) { if (!SelectConfig.getUseItem_BlockMoveAndDrop() || !SelectConfig.getUseItem_Enable()) return; if (e.getItemDrop() != null && e.getItemDrop().getItemStack() != null) { ItemStack item = e.getItemDrop().getItemStack(); if (item.hasItemMeta() && item.getItemMeta().hasDisplayName() && item.getItemMeta().getDisplayName().equals(SelectConfig.getUseItem_Name())) { e.setCancelled(true); } } } private static boolean topInventoryIsEmpty(Player p) { return p.getOpenInventory().getTopInventory().isEmpty(); } @EventHandler public void onClearServer(ServerCommandEvent event) { if (SelectConfig.getUseItem_KeepAtCommandClear()) { if (event.getCommand().contains("clear " + event.getCommand().replace("/", "").replace("clear ", ""))) { new BukkitRunnable() { @Override public void run() { try { Player player = Bukkit.getPlayer(event.getCommand().replace("/", "").replace("clear ", "")); if (player == null){ return; } clearGive(player); } catch (Exception ex){ ex.printStackTrace(); return; } } }.runTaskLater(Main.getPlugin(), 1L); } } } @EventHandler public void onClearPlayer(PlayerCommandPreprocessEvent event) { if (SelectConfig.getUseItem_KeepAtCommandClear()) { if (event.getMessage().toLowerCase().contains("clear")) { new BukkitRunnable() { @Override public void run() { clearGive(event.getPlayer()); } }.runTaskLater(Main.getPlugin(), 1L); } if (event.getMessage().toLowerCase().contains("clear " + event.getMessage().toLowerCase().replace("/", "").replace("clear ", ""))) { new BukkitRunnable() { @Override public void run() { clearGive(Bukkit.getPlayer(event.getMessage().toLowerCase().replace("/", "").replace("clear ", ""))); } }.runTaskLater(Main.getPlugin(), 1L); } } } private static void clearGive(Player player) { ItemChange.itemChange(player, false); } }