T2C-CommandGUI/CommandGUI V2/src/main/java/net/t2code/commandguiv2/Spigot/function/useItem/Events.java

350 lines
15 KiB
Java

package net.t2code.commandguiv2.Spigot.function.useItem;
import net.t2code.commandguiv2.Spigot.Main;
import net.t2code.commandguiv2.Spigot.cmdManagement.Commands;
import net.t2code.commandguiv2.Spigot.config.config.ConfigValues;
import net.t2code.commandguiv2.Spigot.config.languages.SelectMessages;
import net.t2code.commandguiv2.Spigot.function.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<String, Boolean> useItemHashMap = new HashMap<>();
public static HashMap<String, Integer> 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(), (Integer) ConfigValues.useItemInventorySlot.value);
} 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(ConfigValues.useItemName.value)) {
e.getDrops().remove(items);
}
}
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onRespawn(PlayerRespawnEvent e) {
Player player = e.getPlayer();
if ((Boolean) ConfigValues.useItemEnable.value) {
ItemChange.itemChange(player, false);
//if (!Config.getUseItem_AllowToggle || Select_Database.selectItemStatus(player)) {
// if (Config.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 (!(Boolean) ConfigValues.useItemGameModeChangeEnable.value) {
return;
}
new BukkitRunnable() {
@Override
public void run() {
ItemChange.itemChange(player, false);
}
}.runTaskLater(Main.getPlugin(), (Integer) ConfigValues.useItemGameModeChangeDelayInTicks.value * 1L);
}
@EventHandler
public void onWorldChange(PlayerChangedWorldEvent e) {
Player player = e.getPlayer();
if (!(Boolean) ConfigValues.useItemWorldChangeEnable.value) {
return;
}
new BukkitRunnable() {
@Override
public void run() {
ItemChange.itemChange(player, false);
}
}.runTaskLater(Main.getPlugin(), (Integer) ConfigValues.useItemWorldChangeDelayInTicks.value * 1L);
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onInteract(PlayerInteractEvent e) {
Player p = e.getPlayer();
if (!p.isSneaking()) {
for (String material : (ArrayList<String>) ConfigValues.useItemItemBlockBlacklist.value) {
if (e.getClickedBlock() != null) {
if (e.getClickedBlock().getType() == Material.valueOf(material)) return;
}
}
}
if ((Boolean) ConfigValues.useItemEnable.value) {
if ((Boolean) ConfigValues.useItemPlayerHeadEnable.value) {
if (e.getItem() != null && p.getItemInHand().getType() == T2CitemVersion.getHead()) {
if (e.getItem().getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
openGUI(e, p);
}
}
} else {
if (e.getItem() != null && p.getItemInHand().getType() == Material.valueOf(String.valueOf(ConfigValues.useItemMaterial.value))) {
if (e.getItem().getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
openGUI(e, p);
}
}
}
}
}
private static void openGUI(PlayerInteractEvent e, Player player) {
e.setCancelled(true);
if ((!(Boolean) ConfigValues.disableInfoBySneak.value) && player.isSneaking()) {
Commands.info(player);
return;
}
if (!Main.legacy) {
if (!topInventoryIsEmpty(player)) return;
}
if (UseItem.protection(player, true)) return;
if ((Boolean) ConfigValues.useItemGameModeProtection.value) {
if (String.valueOf(ConfigValues.useItemGameModeMode.value).equalsIgnoreCase("blacklist") && String.valueOf(ConfigValues.useItemGameModeList.value).contains(player.getGameMode().toString())) {
e.setCancelled(true);
T2Csend.player(player, SelectMessages.UseItemDisabledInGameMode);
return;
}
if (String.valueOf(ConfigValues.useItemGameModeMode.value).equalsIgnoreCase("whitelist") && !String.valueOf(ConfigValues.useItemGameModeList.value).contains(player.getGameMode().toString())) {
e.setCancelled(true);
T2Csend.player(player, SelectMessages.UseItemDisabledInGameMode);
return;
}
}
if ((Boolean) ConfigValues.useItemWorldProtection.value) {
if (String.valueOf(ConfigValues.useItemWorldMode.value).equalsIgnoreCase("blacklist") && String.valueOf(ConfigValues.useItemWorldList.value).contains(player.getWorld().getName())) {
e.setCancelled(true);
T2Csend.player(player, SelectMessages.UseItemDisabledInWorld);
return;
}
if (String.valueOf(ConfigValues.useItemWorldMode.value).equalsIgnoreCase("whitelist") && !String.valueOf(ConfigValues.useItemWorldList.value).contains(player.getWorld().getName())) {
e.setCancelled(true);
T2Csend.player(player, SelectMessages.UseItemDisabledInWorld);
return;
}
}
if (!(Boolean) ConfigValues.useItemPermission.value || player.hasPermission("commandgui.useitem")) {
OpenGUI.openGUI(player, String.valueOf(ConfigValues.useItemOpenGUI.value), true);
} else {
T2Csend.player(player, SelectMessages.NoPermissionForUseItem.replace("[perm]", "commandgui.useitem")
.replace("[gui]", String.valueOf(ConfigValues.useItemOpenGUI.value)));
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onItemMoveEvent(InventoryMoveItemEvent e) {
if (!(Boolean) ConfigValues.useItemBlockMoveAndDrop.value || !(Boolean) ConfigValues.useItemEnable.value) return;
if (e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().hasDisplayName()
&& e.getItem().getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
e.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onItemMove(InventoryDragEvent e) {
if (!(Boolean) ConfigValues.useItemBlockMoveAndDrop.value || !(Boolean) ConfigValues.useItemEnable.value) 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(ConfigValues.useItemName.value)) {
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(ConfigValues.useItemName.value)) {
p.closeInventory();
e.setCancelled(true);
ItemChange.itemChange(p, false);
}
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onItemMove(InventoryClickEvent e) {
if (!(Boolean) ConfigValues.useItemBlockMoveAndDrop.value || !(Boolean) ConfigValues.useItemEnable.value) return;
if (e.getCursor() != null && e.getCursor().hasItemMeta() && e.getCursor().getItemMeta().hasDisplayName()
&& e.getCursor().getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
e.setCancelled(true);
}
if (e.getCurrentItem() != null && e.getCurrentItem().hasItemMeta() && e.getCurrentItem().getItemMeta().hasDisplayName()
&& e.getCurrentItem().getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
e.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onItemMove(InventoryPickupItemEvent e) {
if (!(Boolean) ConfigValues.useItemBlockMoveAndDrop.value || !(Boolean) ConfigValues.useItemEnable.value) return;
if (e.getItem() != null && e.getItem().getItemStack() != null) {
ItemStack item = e.getItem().getItemStack();
if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()
&& item.getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
e.setCancelled(true);
}
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlace(BlockPlaceEvent e) {
if (!(Boolean) ConfigValues.useItemBlockMoveAndDrop.value || !(Boolean) ConfigValues.useItemEnable.value) return;
if (e.getItemInHand() != null && e.getItemInHand().hasItemMeta() && e.getItemInHand().getItemMeta().hasDisplayName()
&& e.getItemInHand().getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
e.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onDrop(PlayerDropItemEvent e) {
if (!(Boolean) ConfigValues.useItemBlockMoveAndDrop.value || !(Boolean) ConfigValues.useItemEnable.value) return;
if (e.getItemDrop() != null && e.getItemDrop().getItemStack() != null) {
ItemStack item = e.getItemDrop().getItemStack();
if (item.hasItemMeta() && item.getItemMeta().hasDisplayName()
&& item.getItemMeta().getDisplayName().equals(ConfigValues.useItemName.value)) {
e.setCancelled(true);
}
}
}
private static boolean topInventoryIsEmpty(Player p) {
return p.getOpenInventory().getTopInventory().isEmpty();
}
@EventHandler
public void onClearServer(ServerCommandEvent event) {
if ((Boolean) ConfigValues.useItemKeepAtCommandClear.value) {
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 ((Boolean) ConfigValues.useItemKeepAtCommandClear.value) {
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);
}
}