diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java index 186659f..e30483b 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -57,9 +57,9 @@ case TEAM_INDEX -> item = GUIUtils.createGuiItem(Material.GRAY_BED, ChatUtil.BLUE + "Team Settings"); case BINGO_EVENT_INDEX -> { if (Objects.equals(Config.getString("event.type"), "bingo")) { - item = GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatUtil.GREEN + "Bingo Event", true, ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.GREEN + "Items kann man mit /bingo sehen"); + item = GUIUtils.createGuiItem(Material.GRAY_SHULKER_BOX, ChatUtil.GREEN + "Bingo Event", true, ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.GREEN + "Items kann man mit /bingo sehen"); } else { - item = GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatUtil.RED + "Bingo Event", ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.GREEN + "Items kann man mit /bingo sehen"); + item = GUIUtils.createGuiItem(Material.GRAY_SHULKER_BOX, ChatUtil.RED + "Bingo Event", ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.GREEN + "Items kann man mit /bingo sehen"); } } case DEATHRUN_EVENT_INDEX -> { @@ -225,10 +225,9 @@ EventItemsGui.openEventGUI(p); } } - //case SAMMEL_FIEBER_SETTINGS_INDEX -> new SammelFieberSettingsGui(p).open(); case SAMMEL_FIEBER_SETTINGS_INDEX -> { if (Objects.equals(Config.getString("event.type"), "sammelfieber")) { - SammelFieberSettingsGui.createSammelFieberSettingsGUI(p); + new SammelFieberSettingsGui(this, p).open(); } } case FORCE_ITEM_SETTINGS_INDEX -> { diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java index 8b690f4..b630f48 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java @@ -3,127 +3,10 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.challenges.ChallengeEvents.SammelFieberChallengeEvent; import de.fanta.challenges.utils.ChatUtil; -import de.fanta.challenges.utils.guiutils.GUIUtils; -import de.iani.cubesideutils.bukkit.items.CustomHeads; -import org.bukkit.Bukkit; -import org.bukkit.FluidCollisionMode; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -public class SammelFieberSettingsGui implements Listener { - - public static final int INVENTORY_SIZE = 9; - private static final Challenges plugin = Challenges.getPlugin(); - public static final Inventory SAMMEL_FIEBER_SETTINGS_GUI = Bukkit.createInventory(null, InventoryType.DISPENSER, plugin.getGUIPREFIX() + " >> Sammel Fieber Settings"); - private static final int MONEY_INDEX = 5; - private static final int ADD_MONEY_INDEX = 2; - private static final int REMOVE_MONEY_INDEX = 8; - private static final int BACK_INDEX = 6; - private static final int SET_HOPPER_INDEX = 0; - private static final int ITEM_INDEX = 4; - public static int MONEY = 100; - - public static void createSammelFieberSettingsGUI(Player p) { - SAMMEL_FIEBER_SETTINGS_GUI.setItem(SET_HOPPER_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Set Hopper", ChatUtil.GREEN + "Du musst auf einen Hopper schauen.")); - SAMMEL_FIEBER_SETTINGS_GUI.setItem(MONEY_INDEX, GUIUtils.createGuiItem(Material.GOLD_INGOT, ChatUtil.GREEN + "Money: " + MONEY)); - SAMMEL_FIEBER_SETTINGS_GUI.setItem(ADD_MONEY_INDEX, CustomHeads.RAINBOW_ARROW_UP.getHead(ChatUtil.GREEN + "Add Money")); - SAMMEL_FIEBER_SETTINGS_GUI.setItem(REMOVE_MONEY_INDEX, CustomHeads.RAINBOW_ARROW_DOWN.getHead(ChatUtil.RED + "Remove Money")); - SAMMEL_FIEBER_SETTINGS_GUI.setItem(BACK_INDEX, CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.GREEN + "Zurück")); - for (int i = 0; i < INVENTORY_SIZE; i++) { - if (i != ITEM_INDEX) { - if (SAMMEL_FIEBER_SETTINGS_GUI.getItem(i) == null || SAMMEL_FIEBER_SETTINGS_GUI.getItem(i).getType() == Material.AIR) { - SAMMEL_FIEBER_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); - } - } - } - p.openInventory(SAMMEL_FIEBER_SETTINGS_GUI); - } - - public static ItemStack getEventItem() { - return SAMMEL_FIEBER_SETTINGS_GUI.getItem(ITEM_INDEX); - } - - @EventHandler - public void onInventoryClick(InventoryClickEvent e) { - int slot = e.getRawSlot(); - Player p = (Player) e.getWhoClicked(); - if (SAMMEL_FIEBER_SETTINGS_GUI.equals(e.getClickedInventory()) && slot != ITEM_INDEX) { - if (plugin.getConfig().getBoolean("event.enabled")) { - switch (slot) { - case ADD_MONEY_INDEX -> { - if (!e.isShiftClick()) { - MONEY = MONEY + 10; - } else { - MONEY = MONEY + 1; - } - - } - case REMOVE_MONEY_INDEX -> { - if (MONEY > 10) { - if (!e.isShiftClick()) { - MONEY = MONEY - 10; - } else { - MONEY = MONEY - 1; - } - } - } - case SET_HOPPER_INDEX -> { - Block block = p.getTargetBlockExact(5, FluidCollisionMode.NEVER); - if (block != null && block.getType() == Material.HOPPER) { - Location loc = block.getLocation(); - SammelFieberChallengeEvent.setHopperLocation(new Location(loc.getWorld(), loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); - ChatUtil.sendNormalMessage(p, "Hopper wurde gesetzt."); - } else { - ChatUtil.sendErrorMessage(p, "Du musst auf einen Hopper schauen!"); - } - } - } - createSammelFieberSettingsGUI(p); - if (slot == BACK_INDEX) { - new EventGui(p).open(); - } - } - e.setCancelled(true); - } - } - - @EventHandler - public void onInventoryClose(InventoryCloseEvent e) { - Inventory inventory = e.getInventory(); - if (inventory.equals(SAMMEL_FIEBER_SETTINGS_GUI)) { - if (getEventItem() != null) { - plugin.getConfig().set("event.sammelfieber.item", getEventItem().getType().name()); - plugin.getConfig().set("event.sammelfieber.money", SammelFieberSettingsGui.MONEY); - plugin.saveConfig(); - } - } - } -} - - - - - - - - -/*package de.fanta.challenges.guis.eventgui; - -import de.fanta.challenges.Challenges; -import de.fanta.challenges.challenges.ChallengeEvents.SammelFieberChallengeEvent; -import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.Config; import de.fanta.challenges.utils.guiutils.AbstractWindow; import de.fanta.challenges.utils.guiutils.GUIUtils; +import de.fanta.challenges.utils.guiutils.Window; import de.iani.cubesideutils.bukkit.items.CustomHeads; import org.bukkit.Bukkit; import org.bukkit.FluidCollisionMode; @@ -131,19 +14,17 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import java.util.Objects; + public class SammelFieberSettingsGui extends AbstractWindow { public static final int INVENTORY_SIZE = 9; private static final Challenges plugin = Challenges.getPlugin(); - public static final Inventory SAMMEL_FIEBER_SETTINGS_GUI = Bukkit.createInventory(null, InventoryType.DISPENSER, plugin.getGUIPREFIX() + " >> Sammel Fieber Settings"); private static final int SET_HOPPER_INDEX = 0; private static final int ADD_MONEY_INDEX = 2; private static final int ITEM_INDEX = 4; @@ -152,10 +33,10 @@ private static final int REMOVE_MONEY_INDEX = 8; public static int MONEY = 100; - public static ItemStack eventItem; + public static ItemStack eventItem = null; - public SammelFieberSettingsGui(Player player) { - super(player, Bukkit.createInventory(player, InventoryType.DISPENSER, plugin.getGUIPREFIX() + " >> Sammel Fieber Settings")); + public SammelFieberSettingsGui(Window parentWindow, Player player) { + super(parentWindow, Bukkit.createInventory(player, InventoryType.DISPENSER, plugin.getGUIPREFIX() + " >> Sammel Fieber Settings")); } @Override @@ -165,7 +46,6 @@ return; } - event.setCancelled(true); if (!getInventory().equals(event.getClickedInventory())) { return; } @@ -185,6 +65,7 @@ } else { ChatUtil.sendErrorMessage(player, "Du musst auf einen Hopper schauen!"); } + event.setCancelled(true); } case ADD_MONEY_INDEX -> { if (!event.isShiftClick()) { @@ -193,6 +74,8 @@ MONEY = MONEY + 1; } Config.setValue("event.sammelfieber.money", MONEY); + rebuildInventory(); + event.setCancelled(true); } case REMOVE_MONEY_INDEX -> { if (MONEY > 10) { @@ -201,57 +84,99 @@ } else { MONEY = MONEY - 1; } + Config.setValue("event.sammelfieber.money", MONEY); + rebuildInventory(); } - Config.setValue("event.sammelfieber.money", MONEY); + event.setCancelled(true); } + case ITEM_INDEX -> { + switch (event.getAction()) { + case MOVE_TO_OTHER_INVENTORY: + case NOTHING: + case PICKUP_ALL: + case PICKUP_HALF: + case PICKUP_ONE: + case PICKUP_SOME: + case PLACE_ALL: + case PLACE_ONE: + case PLACE_SOME: + case SWAP_WITH_CURSOR: + break; + default: + event.setCancelled(true); + return; + + } + Bukkit.getScheduler().runTask(plugin, () -> { + getPlayer().updateInventory(); + }); + return; + } + default -> event.setCancelled(true); } - new SammelFieberSettingsGui(player).open(); if (slot == BACK_INDEX) { - EventGui.createEventGUI(player); + returnToEventSettingsSafely(); } } @Override + public void onItemDraged(InventoryDragEvent event) { + if (!this.mayAffectThisInventory(event)) { + return; + } + for (int slot : event.getRawSlots()) { + if (slot != ITEM_INDEX) { + event.setCancelled(true); + return; + } + } + + Bukkit.getScheduler().runTask(plugin, () -> { + getPlayer().updateInventory(); + }); + } + + @Override protected void rebuildInventory() { for (int i = 0; i < INVENTORY_SIZE; i++) { ItemStack item; switch (i) { case SET_HOPPER_INDEX -> item = GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Set Hopper", ChatUtil.GREEN + "Du musst auf einen Hopper schauen."); - case ADD_MONEY_INDEX -> item = CustomHeads.QUARTZ_ARROW_UP.getHead(); + case ADD_MONEY_INDEX -> + item = CustomHeads.RAINBOW_ARROW_UP.getHead(ChatUtil.GREEN + "Add Money", ChatUtil.GREEN + "Klick = +10", ChatUtil.GREEN + "Shift + Klick = +1"); case MONEY_INDEX -> item = GUIUtils.createGuiItem(Material.GOLD_INGOT, ChatUtil.GREEN + "Money: " + MONEY); - case BACK_INDEX -> item = CustomHeads.QUARTZ_ARROW_LEFT.getHead(); - case REMOVE_MONEY_INDEX -> item = CustomHeads.QUARTZ_ARROW_DOWN.getHead(); - - default -> { - if (i == ITEM_INDEX) { - item = eventItem; - } else { - item = GUIUtils.EMPTY_ICON; - } - } + case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.GREEN + "Zurück"); + case REMOVE_MONEY_INDEX -> + item = CustomHeads.RAINBOW_ARROW_DOWN.getHead(ChatUtil.RED + "Remove Money", ChatUtil.RED + "Klick = -10", ChatUtil.RED + "Shift + Klick = -1"); + case ITEM_INDEX -> item = Objects.requireNonNullElseGet(eventItem, () -> new ItemStack(Material.AIR)); + default -> item = GUIUtils.EMPTY_ICON; } this.getInventory().setItem(i, item); } } @Override - public void onInventoryClose(InventoryCloseEvent event) { - if (!mayAffectThisInventory(event)) { - return; - } - ItemStack stack = SAMMEL_FIEBER_SETTINGS_GUI.getItem(ITEM_INDEX); + public void closed() { + ItemStack stack = getInventory().getItem(ITEM_INDEX); if (stack != null) { eventItem = stack; Config.setValue("event.sammelfieber.item", stack.getType().name()); + } else { + eventItem = null; + Config.setValue("event.sammelfieber.item", ""); } } public static ItemStack getEventItem() { return eventItem; } -}*/ + + private void returnToEventSettingsSafely() { + Bukkit.getScheduler().runTask(plugin, () -> getParent().open()); + } +} diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index deb87fe..ba58c2d 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -66,7 +66,6 @@ pM.registerEvents(new TeamSettingsGUI(), plugin); pM.registerEvents(new CoordsGUI(), plugin); pM.registerEvents(new CoordsDeleteGUI(), plugin); - pM.registerEvents(new SammelFieberSettingsGui(), plugin); pM.registerEvents(new GravestoneListener(), plugin);