160 lines
7.4 KiB
Java
160 lines
7.4 KiB
Java
package de.jatitv.commandguiv2.Spigot.Listener;
|
|
|
|
import de.jatitv.commandguiv2.Spigot.Listener.UseItem_Listener.Events;
|
|
import de.jatitv.commandguiv2.Spigot.Main;
|
|
import de.jatitv.commandguiv2.Spigot.system.Give_UseItem;
|
|
import de.jatitv.commandguiv2.Spigot.config.config.SelectConfig;
|
|
import de.jatitv.commandguiv2.Spigot.system.database.Select_Database;
|
|
import net.t2code.lib.Spigot.Lib.items.ItemVersion;
|
|
import net.t2code.lib.Spigot.Lib.messages.send;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
public class ItemChange {
|
|
public static void itemChange(Player player, Boolean setCursor) {
|
|
Integer slot;
|
|
if (SelectConfig.UseItem_InventorySlotEnforce) {
|
|
slot = SelectConfig.UseItem_InventorySlot;
|
|
} else {
|
|
if (Events.useItemSlotHashMap.get(player) == null) {
|
|
slot = SelectConfig.UseItem_InventorySlot;
|
|
} else {
|
|
slot = Events.useItemSlotHashMap.get(player);
|
|
}
|
|
}
|
|
|
|
if (!SelectConfig.UseItem_Enable) {
|
|
return;
|
|
}
|
|
if (SelectConfig.UseItemGameModeProtection) {
|
|
if (SelectConfig.UseItemGameModeMode.equalsIgnoreCase("blacklist") && SelectConfig.UseItemGameModeList.contains(player.getGameMode().toString())) {
|
|
if (SelectConfig.UseItemGameModeRemoveItemWhenItIsDisabled) removeItem(player);
|
|
send.debug(Main.plugin,"GameMode disabled: " +player.getName() +" " +player.getGameMode().toString());
|
|
return;
|
|
}
|
|
if (SelectConfig.UseItemGameModeMode.equalsIgnoreCase("whitelist") && !SelectConfig.UseItemGameModeList.contains(player.getGameMode().toString())) {
|
|
if (SelectConfig.UseItemGameModeRemoveItemWhenItIsDisabled) removeItem(player);
|
|
send.debug(Main.plugin,"GameMode disabled: " +player.getName() +" " +player.getGameMode().toString());
|
|
return;
|
|
}
|
|
}
|
|
if (SelectConfig.UseItemWorldProtection) {
|
|
if (SelectConfig.UseItemWorldMode.equalsIgnoreCase("blacklist") && SelectConfig.UseItemWorldList.contains(player.getWorld().getName())) {
|
|
if (SelectConfig.UseItemWorldRemoveItemWhenItIsDisabled)removeItem(player);
|
|
send.debug(Main.plugin,"World disabled: " +player.getName() +" " +player.getWorld().toString());
|
|
return;
|
|
}
|
|
if (SelectConfig.UseItemWorldMode.equalsIgnoreCase("whitelist") && !SelectConfig.UseItemWorldList.contains(player.getWorld().getName())) {
|
|
if (SelectConfig.UseItemWorldRemoveItemWhenItIsDisabled)removeItem(player);
|
|
send.debug(Main.plugin,"World disabled: " +player.getName() +" " +player.getWorld().toString());
|
|
return;
|
|
}
|
|
}
|
|
if (SelectConfig.UseItem_GiveOnlyOnFirstJoin) {
|
|
if (!SelectConfig.UseItem_AllowToggle || Events.useItemHashMap.get(player)) {
|
|
if (!player.hasPlayedBefore()) {
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
Give_UseItem.onGive(player);
|
|
if (setCursor) {
|
|
setCursor(player, slot);
|
|
}
|
|
}
|
|
}.runTaskLater(Main.plugin, 1L * 1);
|
|
if (SelectConfig.Cursor_ToGUIItem_OnlyOnFirstLogin || SelectConfig.Cursor_ToGUIItem_OnLogin) {
|
|
player.getInventory().setHeldItemSlot(slot - 1);
|
|
}
|
|
}
|
|
}
|
|
send.debug(Main.plugin,"GiveOnlyOnFirstJoin: " +player.getName());
|
|
return;
|
|
}
|
|
if (!SelectConfig.UseItem_GiveOnEveryJoin) {
|
|
send.debug(Main.plugin,"!GiveOnEveryJoin: " +player.getName());
|
|
return;
|
|
}
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
removeItem(player);
|
|
if (!SelectConfig.UseItem_AllowToggle || Events.useItemHashMap.get(player)) {
|
|
if (SelectConfig.UseItem_InventorySlotEnforce || player.getInventory().getItem(slot - 1) == null) {
|
|
send.debug(Main.plugin,"Give: " +player.getName());
|
|
Give_UseItem.onGive(player);
|
|
if (setCursor) {
|
|
setCursor(player, slot);
|
|
}
|
|
} else if (SelectConfig.UseItem_InventorySlot_FreeSlot) {
|
|
boolean empty = false;
|
|
for (int i = 0; i < 9; i++) {
|
|
if (player.getInventory().getItem(i) == null) {
|
|
empty = true;
|
|
break;
|
|
}
|
|
}
|
|
if (empty) {
|
|
Give_UseItem.onGiveADD(player);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}.runTaskLater(Main.plugin, 1L * 1);
|
|
|
|
}
|
|
|
|
private static void setCursor(Player player, int slot) {
|
|
send.debug(Main.plugin,"setCursor 1 Player: "+player.getName());
|
|
|
|
if (!SelectConfig.Cursor_ToGUIItem_OnLogin) {
|
|
return;
|
|
}
|
|
send.debug(Main.plugin,"setCursor 2 Player: "+player.getName());
|
|
if (SelectConfig.Cursor_ToGUIItem_OnlyOnFirstLogin) {
|
|
if (!player.hasPlayedBefore()) {
|
|
player.getInventory().setHeldItemSlot(slot - 1);
|
|
send.debug(Main.plugin,"setCursor 3 Player: "+player.getName());
|
|
}
|
|
return;
|
|
}
|
|
send.debug(Main.plugin,"setCursor 4 Player: "+player.getName());
|
|
if (!SelectConfig.Bungee) {
|
|
player.getInventory().setHeldItemSlot(slot - 1);
|
|
send.debug(Main.plugin,"setCursor 5 Player: "+player.getName());
|
|
return;
|
|
}
|
|
send.debug(Main.plugin,"setCursor 6 Player: "+player.getName());
|
|
if (SelectConfig.UseItem_ServerChange) {
|
|
player.getInventory().setHeldItemSlot(slot - 1);
|
|
send.debug(Main.plugin,"setCursor 7 Player: "+player.getName());
|
|
return;
|
|
}
|
|
send.debug(Main.plugin,"setCursor 8 Player: "+player.getName());
|
|
send.debug(Main.plugin,"setCursor bungeejoinplayers: " +Main.bungeejoinplayers);
|
|
send.debug(Main.plugin,"setCursor Player: " +player.getName());
|
|
if (Main.bungeejoinplayers.contains(player.getName())) {
|
|
player.getInventory().setHeldItemSlot(slot - 1);
|
|
send.debug(Main.plugin,"setCursor 9 Player: "+player.getName());
|
|
Main.bungeejoinplayers.remove(player.getName());
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|