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;
|
|
|
|
import de.jatitv.commandguiv2.api.CGuiAPI;
|
|
|
|
import net.t2code.lib.Spigot.Lib.items.ItemVersion;
|
|
|
|
import net.t2code.lib.Spigot.Lib.minecraftVersion.MCVersion;
|
|
|
|
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;
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
|
|
|
public class Events implements Listener {
|
|
|
|
|
|
|
|
@EventHandler
|
|
|
|
public void onJoin(PlayerJoinEvent e) {
|
|
|
|
if (CGuiAPI.JoinDisable) return;
|
|
|
|
if (e.getPlayer().hasPermission("commandgui.get.guiitem.at.login")) {
|
|
|
|
new BukkitRunnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
ItemChange.itemChange(e.getPlayer());
|
|
|
|
}
|
|
|
|
}.runTaskLater(Main.plugin, 20L * 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onDeathDrop(PlayerDeathEvent e) {
|
|
|
|
Player player = e.getEntity().getPlayer();
|
|
|
|
for (int iam = 0; iam < player.getInventory().getSize() - 5; iam++) {
|
|
|
|
ItemStack itm = player.getInventory().getItem(iam);
|
|
|
|
if (itm != null) {
|
2021-12-22 19:18:50 +00:00
|
|
|
if (itm.getType() == Material.valueOf(SelectConfig.UseItem_Material) || itm.getType() == ItemVersion.getHead()) {
|
2021-12-21 04:57:29 +00:00
|
|
|
if (itm.getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
player.getInventory().remove(itm);
|
|
|
|
player.updateInventory();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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) {
|
|
|
|
ItemChange.itemChange(player);
|
|
|
|
//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);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onGameModeChange(PlayerGameModeChangeEvent e) {
|
|
|
|
Player player = e.getPlayer();
|
|
|
|
new BukkitRunnable() {
|
|
|
|
@Override
|
|
|
|
public void run() {
|
2022-01-06 01:21:27 +00:00
|
|
|
if (SelectConfig.UseItemGameModeChangeEnable) {
|
|
|
|
if (SelectConfig.UseItemGameModeMode.equalsIgnoreCase("blacklist") && SelectConfig.UseItemGameModeList.contains(player.getGameMode().toString())) {
|
|
|
|
removeItem(player);
|
2021-12-21 04:57:29 +00:00
|
|
|
return;
|
|
|
|
}
|
2022-01-06 01:21:27 +00:00
|
|
|
if (SelectConfig.UseItemGameModeMode.equalsIgnoreCase("whitelist") && !SelectConfig.UseItemGameModeList.contains(player.getGameMode().toString())) {
|
|
|
|
removeItem(player);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
ItemChange.itemChange(player);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}.runTaskLater(Main.plugin, SelectConfig.UseItemGameModeChangeDelayInTicks * 1L);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void removeItem(Player player) {
|
|
|
|
for (int iam = 0; iam < player.getInventory().getSize() - 5; iam++) {
|
|
|
|
ItemStack itm = player.getInventory().getItem(iam);
|
|
|
|
if (itm != null) {
|
|
|
|
if (itm.getType() == Material.valueOf(SelectConfig.UseItem_Material) || itm.getType() == ItemVersion.getHead()) {
|
|
|
|
if (itm.getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
player.getInventory().remove(itm);
|
|
|
|
player.updateInventory();
|
|
|
|
break;
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
2022-01-06 01:21:27 +00:00
|
|
|
}
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
2022-01-06 01:21:27 +00:00
|
|
|
}
|
2021-12-21 04:57:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onInteract(PlayerInteractEvent e) {
|
|
|
|
Player p = e.getPlayer();
|
|
|
|
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)) {
|
|
|
|
e.setCancelled(true);
|
|
|
|
if (p.isSneaking()) {
|
|
|
|
Commands.info(p);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!legacy()) {
|
|
|
|
if (!topInventoryIsEmpty(p)) return;
|
|
|
|
}
|
|
|
|
if (!SelectConfig.UseItem_Permission || p.hasPermission("commandgui.useitem")) {
|
|
|
|
OpenGUI.openGUI(p, Main.guiHashMap.get(SelectConfig.UseItem_OpenGUI), SelectConfig.UseItem_OpenGUI);
|
|
|
|
if (SelectConfig.Sound_Enable && SelectConfig.Sound_OpenInventory_Enable) {
|
|
|
|
p.playSound(p.getLocation(), SelectConfig.Sound_OpenInventory, 3, 1);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
p.sendMessage(SelectMessages.NoPermissionForUseItem.replace("[perm]", "commandgui.useitem")
|
|
|
|
.replace("[gui]", SelectConfig.UseItem_OpenGUI));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (e.getItem() != null && p.getItemInHand().getType() == Material.valueOf(SelectConfig.UseItem_Material)) {
|
|
|
|
if (e.getItem().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
e.setCancelled(true);
|
|
|
|
if (p.isSneaking()) {
|
|
|
|
Commands.info(p);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!legacy()) {
|
|
|
|
if (!topInventoryIsEmpty(p)) return;
|
|
|
|
}
|
|
|
|
if (!SelectConfig.UseItem_Permission || p.hasPermission("commandgui.useitem")) {
|
|
|
|
OpenGUI.openGUI(p, Main.guiHashMap.get(SelectConfig.UseItem_OpenGUI), SelectConfig.UseItem_OpenGUI);
|
|
|
|
if (SelectConfig.Sound_Enable && SelectConfig.Sound_OpenInventory_Enable) {
|
|
|
|
p.playSound(p.getLocation(), SelectConfig.Sound_OpenInventory, 3, 1);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
p.sendMessage(SelectMessages.NoPermissionForUseItem.replace("[perm]", "commandgui.useitem")
|
|
|
|
.replace("[gui]", SelectConfig.UseItem_OpenGUI));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@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);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST)
|
|
|
|
public void onItemMove(InventoryDragEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_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.UseItem_Name)) {
|
|
|
|
p.closeInventory();
|
|
|
|
e.setCancelled(true);
|
|
|
|
ItemChange.itemChange(p);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (e.getOldCursor() != null && e.getOldCursor().hasItemMeta() && e.getOldCursor().getItemMeta().hasDisplayName()
|
|
|
|
&& e.getOldCursor().getItemMeta().getDisplayName().equals(SelectConfig.UseItem_Name)) {
|
|
|
|
p.closeInventory();
|
|
|
|
e.setCancelled(true);
|
|
|
|
ItemChange.itemChange(p);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
|
|
|
public void onItemMove(InventoryClickEvent e) {
|
|
|
|
if (!SelectConfig.UseItem_BlockMoveAndDrop || !SelectConfig.UseItem_Enable) return;
|
|
|
|
Player player = (Player) e.getWhoClicked();
|
|
|
|
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
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;
|
|
|
|
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 legacy() {
|
|
|
|
if (MCVersion.minecraft1_8 || MCVersion.minecraft1_9 || MCVersion.minecraft1_10 || MCVersion.minecraft1_11 || MCVersion.minecraft1_12 || MCVersion.minecraft1_13 || MCVersion.minecraft1_14 || MCVersion.minecraft1_15) {
|
|
|
|
return true;
|
|
|
|
} else return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
private static boolean topInventoryIsEmpty(Player p) {
|
|
|
|
return p.getOpenInventory().getTopInventory().isEmpty();
|
|
|
|
}
|
|
|
|
}
|