2021-12-21 04:57:29 +00:00
|
|
|
package de.jatitv.commandguiv2.Spigot.Listener.UseItem_Listener;
|
|
|
|
|
|
|
|
import de.jatitv.commandguiv2.Spigot.Listener.ItemChange;
|
|
|
|
import de.jatitv.commandguiv2.Spigot.Main;
|
|
|
|
import de.jatitv.commandguiv2.Spigot.cmdManagement.Commands;
|
2022-01-06 01:21:27 +00:00
|
|
|
import de.jatitv.commandguiv2.Spigot.config.config.SelectConfig;
|
|
|
|
import de.jatitv.commandguiv2.Spigot.config.languages.SelectMessages;
|
2021-12-21 04:57:29 +00:00
|
|
|
import de.jatitv.commandguiv2.Spigot.gui.OpenGUI;
|
2022-04-20 23:58:54 +00:00
|
|
|
import de.jatitv.commandguiv2.Spigot.system.UseItem;
|
|
|
|
import de.jatitv.commandguiv2.Spigot.system.database.SelectDatabase;
|
2021-12-21 04:57:29 +00:00
|
|
|
import de.jatitv.commandguiv2.api.CGuiAPI;
|
|
|
|
import net.t2code.lib.Spigot.Lib.items.ItemVersion;
|
2022-01-07 19:32:59 +00:00
|
|
|
import net.t2code.lib.Spigot.Lib.messages.send;
|
2021-12-21 04:57:29 +00:00
|
|
|
import net.t2code.lib.Spigot.Lib.minecraftVersion.MCVersion;
|
2022-04-16 12:32:22 +00:00
|
|
|
import net.t2code.lib.Spigot.Lib.minecraftVersion.NMSVersion;
|
2021-12-21 04:57:29 +00:00
|
|
|
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.inventory.ItemStack;
|
|
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
2022-04-16 12:32:22 +00:00
|
|
|
import java.util.HashMap;
|
2021-12-21 04:57:29 +00:00
|
|
|
import java.util.Iterator;
|
|
|
|
|
|
|
|
public class Events implements Listener {
|
|
|
|
|
2022-05-16 12:03:53 +00:00
|
|
|
public static HashMap<String, Boolean> useItemHashMap = new HashMap<>();
|
|
|
|
public static HashMap<String, Integer> useItemSlotHashMap = new HashMap<>();
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
@EventHandler
|
|
|
|
public void onJoin(PlayerJoinEvent e) {
|
2022-05-16 12:03:53 +00:00
|
|
|
useItemHashMap.put(e.getPlayer().getName(), SelectDatabase.selectItemStatus(e.getPlayer()));
|
2022-05-17 19:04:23 +00:00
|
|
|
Integer i = SelectDatabase.selectSlot(e.getPlayer());
|
|
|
|
if (i == null) {
|
|
|
|
useItemSlotHashMap.put(e.getPlayer().getName(), SelectConfig.UseItem_InventorySlot);
|
|
|
|
} else useItemSlotHashMap.put(e.getPlayer().getName(), i);
|
2022-04-16 12:32:22 +00:00
|
|
|
|
2022-01-11 01:44:36 +00:00
|
|
|
if (CGuiAPI.JoinDisable) {
|
2022-04-28 17:40:41 +00:00
|
|
|
send.debug(Main.plugin, "JoinDisable");
|
2022-01-11 01:44:36 +00:00
|
|
|
return;
|
|
|
|
}
|
2021-12-21 04:57:29 +00:00
|
|
|
if (e.getPlayer().hasPermission("commandgui.get.guiitem.at.login")) {
|
|
|
|
new BukkitRunnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
2022-04-28 17:40:41 +00:00
|
|
|
send.debug(Main.plugin, "itemChange: " + e.getPlayer().getName());
|
2022-01-06 02:04:56 +00:00
|
|
|
ItemChange.itemChange(e.getPlayer(), true);
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
|
|
|
}.runTaskLater(Main.plugin, 20L * 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-16 12:32:22 +00:00
|
|
|
@EventHandler
|
|
|
|
public void onJoin(PlayerQuitEvent e) {
|
2022-05-16 12:03:53 +00:00
|
|
|
useItemHashMap.remove(e.getPlayer().getName());
|
2022-04-16 12:32:22 +00:00
|
|
|
}
|
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onDeathDrop(PlayerDeathEvent e) {
|
|
|
|
Player player = e.getEntity().getPlayer();
|
2022-04-20 23:58:54 +00:00
|
|
|
UseItem.removeItem(player);
|
2021-12-21 04:57:29 +00:00
|
|
|
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.UseItem_Name)) {
|
|
|
|
e.getDrops().remove(items);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onRespawn(PlayerRespawnEvent e) {
|
|
|
|
Player player = e.getPlayer();
|
|
|
|
if (SelectConfig.UseItem_Enable) {
|
2022-01-06 02:04:56 +00:00
|
|
|
ItemChange.itemChange(player, false);
|
2022-04-16 12:32:22 +00:00
|
|
|
//if (!SelectConfig.UseItem_AllowToggle || Select_Database.selectItemStatus(player)) {
|
|
|
|
// if (SelectConfig.UseItem_GiveOnlyOnFirstJoin) {
|
|
|
|
// if (!player.hasPlayedBefore()) {
|
|
|
|
// new BukkitRunnable() {
|
|
|
|
// @Override
|
|
|
|
// public void run() {
|
|
|
|
// Give_UseItem.onGive(player);
|
|
|
|
// }
|
|
|
|
// }.runTaskLater(Main.plugin, 20L * 1);
|
|
|
|
// }
|
|
|
|
// } else {
|
|
|
|
// new BukkitRunnable() {
|
|
|
|
// @Override
|
|
|
|
// public void run() {
|
|
|
|
// Give_UseItem.onGive(player);
|
|
|
|
// }
|
|
|
|
// }.runTaskLater(Main.plugin, 20L * 1);
|
|
|
|
// }
|
|
|
|
//}
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onGameModeChange(PlayerGameModeChangeEvent e) {
|
|
|
|
Player player = e.getPlayer();
|
2022-01-06 02:04:56 +00:00
|
|
|
if (!SelectConfig.UseItemGameModeChangeEnable) {
|
|
|
|
return;
|
|
|
|
}
|
2021-12-21 04:57:29 +00:00
|
|
|
new BukkitRunnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
2022-01-06 02:04:56 +00:00
|
|
|
ItemChange.itemChange(player, false);
|
2022-01-06 01:21:27 +00:00
|
|
|
}
|
|
|
|
}.runTaskLater(Main.plugin, SelectConfig.UseItemGameModeChangeDelayInTicks * 1L);
|
|
|
|
}
|
|
|
|
|
2022-01-07 19:32:59 +00:00
|
|
|
@EventHandler
|
|
|
|
public void onWorldChange(PlayerChangedWorldEvent e) {
|
|
|
|
Player player = e.getPlayer();
|
|
|
|
if (!SelectConfig.UseItemWorldChangeEnable) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
new BukkitRunnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
ItemChange.itemChange(player, false);
|
|
|
|
}
|
|
|
|
}.runTaskLater(Main.plugin, SelectConfig.UseItemWorldChangeDelayInTicks * 1L);
|
|
|
|
}
|
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onInteract(PlayerInteractEvent e) {
|
|
|
|
Player p = e.getPlayer();
|
2022-05-16 22:19:39 +00:00
|
|
|
if (!p.isSneaking()) {
|
|
|
|
for (String material : SelectConfig.UseItemItemBlockBlacklist) {
|
|
|
|
if (e.getClickedBlock() != null) {
|
|
|
|
if (e.getClickedBlock().getType() == Material.valueOf(material)) return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
if (SelectConfig.UseItem_Enable) {
|
|
|
|
if (SelectConfig.UseItem_PlayerHead_Enable) {
|
2021-12-22 19:18:50 +00:00
|
|
|
if (e.getItem() != null && p.getItemInHand().getType() == ItemVersion.getHead()) {
|
2021-12-21 04:57:29 +00:00
|
|
|
if (e.getItem().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
2022-01-07 19:32:59 +00:00
|
|
|
openGUI(e, p);
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (e.getItem() != null && p.getItemInHand().getType() == Material.valueOf(SelectConfig.UseItem_Material)) {
|
|
|
|
if (e.getItem().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
2022-01-07 19:32:59 +00:00
|
|
|
openGUI(e, p);
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-20 23:58:54 +00:00
|
|
|
private static void openGUI(PlayerInteractEvent e, Player player) {
|
2022-01-07 19:32:59 +00:00
|
|
|
e.setCancelled(true);
|
|
|
|
|
2022-05-12 16:28:35 +00:00
|
|
|
if ((!SelectConfig.disableInfoBySneak) && player.isSneaking()) {
|
|
|
|
Commands.info(player);
|
|
|
|
return;
|
2022-01-07 19:32:59 +00:00
|
|
|
}
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2022-05-17 19:04:23 +00:00
|
|
|
if (!Main.legacy) {
|
2022-04-20 23:58:54 +00:00
|
|
|
if (!topInventoryIsEmpty(player)) return;
|
2022-01-07 19:32:59 +00:00
|
|
|
}
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2022-04-20 23:58:54 +00:00
|
|
|
if (UseItem.protection(player, true)) return;
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2022-01-07 19:32:59 +00:00
|
|
|
if (SelectConfig.UseItemGameModeProtection) {
|
2022-04-20 23:58:54 +00:00
|
|
|
if (SelectConfig.UseItemGameModeMode.equalsIgnoreCase("blacklist") && SelectConfig.UseItemGameModeList.contains(player.getGameMode().toString())) {
|
2022-01-07 19:32:59 +00:00
|
|
|
e.setCancelled(true);
|
2022-04-20 23:58:54 +00:00
|
|
|
send.player(player, SelectMessages.UseItemDisabledInGameMode);
|
2022-01-07 19:32:59 +00:00
|
|
|
return;
|
|
|
|
}
|
2022-04-20 23:58:54 +00:00
|
|
|
if (SelectConfig.UseItemGameModeMode.equalsIgnoreCase("whitelist") && !SelectConfig.UseItemGameModeList.contains(player.getGameMode().toString())) {
|
2022-01-07 19:32:59 +00:00
|
|
|
e.setCancelled(true);
|
2022-04-20 23:58:54 +00:00
|
|
|
send.player(player, SelectMessages.UseItemDisabledInGameMode);
|
2022-01-07 19:32:59 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2022-01-07 19:32:59 +00:00
|
|
|
if (SelectConfig.UseItemWorldProtection) {
|
2022-04-20 23:58:54 +00:00
|
|
|
if (SelectConfig.UseItemWorldMode.equalsIgnoreCase("blacklist") && SelectConfig.UseItemWorldList.contains(player.getWorld().getName())) {
|
2022-01-07 19:32:59 +00:00
|
|
|
e.setCancelled(true);
|
2022-04-20 23:58:54 +00:00
|
|
|
send.player(player, SelectMessages.UseItemDisabledInWorld);
|
2022-01-07 19:32:59 +00:00
|
|
|
return;
|
|
|
|
}
|
2022-04-20 23:58:54 +00:00
|
|
|
if (SelectConfig.UseItemWorldMode.equalsIgnoreCase("whitelist") && !SelectConfig.UseItemWorldList.contains(player.getWorld().getName())) {
|
2022-01-07 19:32:59 +00:00
|
|
|
e.setCancelled(true);
|
2022-04-20 23:58:54 +00:00
|
|
|
send.player(player, SelectMessages.UseItemDisabledInWorld);
|
2022-01-07 19:32:59 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2022-04-20 23:58:54 +00:00
|
|
|
if (!SelectConfig.UseItem_Permission || player.hasPermission("commandgui.useitem")) {
|
|
|
|
OpenGUI.openGUI(player, SelectConfig.UseItem_OpenGUI, true);
|
2022-01-07 19:32:59 +00:00
|
|
|
} else {
|
2022-05-31 22:01:15 +00:00
|
|
|
send.player(player,SelectMessages.NoPermissionForUseItem.replace("[perm]", "commandgui.useitem")
|
2022-01-07 19:32:59 +00:00
|
|
|
.replace("[gui]", SelectConfig.UseItem_OpenGUI));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onItemMoveEvent(InventoryMoveItemEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_Enable) return;
|
|
|
|
if (e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().hasDisplayName()
|
|
|
|
&& e.getItem().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
e.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-16 12:32:22 +00:00
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onItemMove(InventoryDragEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_Enable) return;
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
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.UseItem_Name)) {
|
|
|
|
p.closeInventory();
|
|
|
|
e.setCancelled(true);
|
2022-01-06 02:04:56 +00:00
|
|
|
ItemChange.itemChange(p, false);
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (e.getOldCursor() != null && e.getOldCursor().hasItemMeta() && e.getOldCursor().getItemMeta().hasDisplayName()
|
|
|
|
&& e.getOldCursor().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
p.closeInventory();
|
|
|
|
e.setCancelled(true);
|
2022-01-06 02:04:56 +00:00
|
|
|
ItemChange.itemChange(p, false);
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
|
|
|
public void onItemMove(InventoryClickEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_Enable) return;
|
|
|
|
|
|
|
|
if (e.getCursor() != null && e.getCursor().hasItemMeta() && e.getCursor().getItemMeta().hasDisplayName()
|
|
|
|
&& e.getCursor().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
e.setCancelled(true);
|
|
|
|
}
|
|
|
|
if (e.getCurrentItem() != null && e.getCurrentItem().hasItemMeta() && e.getCurrentItem().getItemMeta().hasDisplayName()
|
|
|
|
&& e.getCurrentItem().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
|
|
|
|
e.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onItemMove(InventoryPickupItemEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_Enable) return;
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
if (e.getItem() != null && e.getItem().getItemStack() != null) {
|
|
|
|
ItemStack item = e.getItem().getItemStack();
|
|
|
|
if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()
|
|
|
|
&& item.getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
e.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onPlace(BlockPlaceEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_Enable) return;
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
if (e.getItemInHand() != null && e.getItemInHand().hasItemMeta() && e.getItemInHand().getItemMeta().hasDisplayName()
|
|
|
|
&& e.getItemInHand().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
e.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onDrop(PlayerDropItemEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_Enable) return;
|
2022-04-28 17:40:41 +00:00
|
|
|
|
2021-12-21 04:57:29 +00:00
|
|
|
if (e.getItemDrop() != null && e.getItemDrop().getItemStack() != null) {
|
|
|
|
ItemStack item = e.getItemDrop().getItemStack();
|
|
|
|
if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()
|
|
|
|
&& item.getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
e.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private static boolean topInventoryIsEmpty(Player p) {
|
|
|
|
return p.getOpenInventory().getTopInventory().isEmpty();
|
|
|
|
}
|
|
|
|
}
|