diff --git a/src/main/java/de/fanta/challenges/CoordsTargeter.java b/src/main/java/de/fanta/challenges/CoordsTargeter.java deleted file mode 100644 index 4d5c40f..0000000 --- a/src/main/java/de/fanta/challenges/CoordsTargeter.java +++ /dev/null @@ -1,88 +0,0 @@ -package de.fanta.challenges; - -import de.fanta.challenges.events.TimerChangedEvent; -import de.fanta.challenges.utils.ChatUtil; -import org.bukkit.Location; -import org.bukkit.Particle; -import org.bukkit.Vibration; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerQuitEvent; - -import java.util.HashMap; -import java.util.UUID; - -public class CoordsTargeter implements Listener { - - private static final Challenges plugin = Challenges.getPlugin(); - private static final HashMap locationMap = new HashMap<>(); - - private int taskId = -1; - - @EventHandler - public void onTimer(TimerChangedEvent e) { - if (e.isRunning()) { - startUpdateTask(); - } else { - locationMap.clear(); - stopUpdateTask(); - } - } - - @EventHandler - public void onLeave(PlayerQuitEvent e) { - if (locationMap.containsKey(e.getPlayer().getUniqueId())) { - removeLocation(e.getPlayer().getUniqueId()); - } - } - - public void updateTargeter() { - for (Player p : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { - if (locationMap.containsKey(p.getUniqueId())) { - Location targetLocation = locationMap.get(p.getUniqueId()); - - if (targetLocation != null && targetLocation.getWorld() == p.getWorld()) { - Location playerlocation; - if (p.getVehicle() != null) { - playerlocation = p.getLocation().clone().add(0, 0.5, 0); - } else { - playerlocation = p.getLocation().clone().add(0, 1, 0); - } - - int distance = (int) playerlocation.toVector().subtract(targetLocation.toVector()).length(); - Vibration vibration = new Vibration(new Vibration.Destination.BlockDestination(targetLocation.getBlock()), distance * 2); - p.spawnParticle(Particle.VIBRATION, playerlocation, 1, vibration); - - if (distance < 5) { - removeLocation(p.getUniqueId()); - ChatUtil.sendNormalMessage(p, "Sie haben ihr Ziel erreicht!"); - } - } else { - removeLocation(p.getUniqueId()); - ChatUtil.sendWarningMessage(p, "Du bist nicht mehr in der Welt vom Waypoint, der Weg wird nicht mehr angezeigt!"); - } - } - } - } - - public void startUpdateTask() { - taskId = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, this::updateTargeter, 5L, 5L); - } - - public void stopUpdateTask() { - plugin.getServer().getScheduler().cancelTask(taskId); - } - - public static void addLocation(UUID uuid, Location location) { - locationMap.put(uuid, location); - } - - public static void removeLocation(UUID uuid) { - locationMap.remove(uuid); - } - - public static boolean containsLocation(UUID uuid) { - return locationMap.containsKey(uuid); - } -} diff --git a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java index 2bc8215..5d4f566 100644 --- a/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java +++ b/src/main/java/de/fanta/challenges/challenges/ChallengeEvents/ForceItemChallengeEvent.java @@ -93,6 +93,7 @@ private static final Random random = new Random(); public static ItemStack skipItem; + public static int skipItemCount = 3; private final NamespacedKey skipKey = new NamespacedKey(plugin, "SkipItem"); @@ -568,7 +569,7 @@ } public ItemStack createSkipItem() { - ItemStack stack = new ItemStack(Material.STRUCTURE_VOID, 5); + ItemStack stack = new ItemStack(Material.STRUCTURE_VOID, skipItemCount); ItemMeta meta = stack.getItemMeta(); List lorelist = new ArrayList<>(); meta.setDisplayName(ChatUtil.GREEN + "Skip Item"); diff --git a/src/main/java/de/fanta/challenges/commands/coords/CoordsTargetCommand.java b/src/main/java/de/fanta/challenges/commands/coords/CoordsTargetCommand.java index 8739634..ca5b8a7 100644 --- a/src/main/java/de/fanta/challenges/commands/coords/CoordsTargetCommand.java +++ b/src/main/java/de/fanta/challenges/commands/coords/CoordsTargetCommand.java @@ -1,7 +1,7 @@ package de.fanta.challenges.commands.coords; import de.fanta.challenges.Challenges; -import de.fanta.challenges.CoordsTargeter; +import de.fanta.challenges.utils.CoordsTargeter; import de.fanta.challenges.utils.ChatUtil; import de.fanta.challenges.utils.Config; import de.iani.cubesideutils.bukkit.commands.SubCommand; diff --git a/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java b/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java index c591180..28c931b 100644 --- a/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java +++ b/src/main/java/de/fanta/challenges/commands/event/EventSettingsCommand.java @@ -13,18 +13,18 @@ @Override public boolean onCommand(CommandSender sender, Command command, String alias, String commandString, ArgsParser args) { - if (!(sender instanceof Player)) { + if (!(sender instanceof Player player)) { ChatUtil.sendErrorMessage(sender, "You are not a Player :>"); return true; } - if (sender.hasPermission("challenges.event")) { + if (player.hasPermission("challenges.event")) { if (Config.getBoolean("event.enabled")) { - EventGui.createEventGUI((Player) sender); + new EventGui(player).open(); } else { - ChatUtil.sendErrorMessage(sender, "Dafür musst du das Event erst Starten"); + ChatUtil.sendErrorMessage(player, "Dafür musst du das Event erst Starten"); } } else { - ChatUtil.sendErrorMessage(sender, "Keine Berechtigung!"); + ChatUtil.sendErrorMessage(player, "Keine Berechtigung!"); } return true; } 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 1e235ef..186659f 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/EventGui.java @@ -5,175 +5,240 @@ import de.fanta.challenges.challenges.ChallengeEvents.DeathrunChallengeEvent; 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.iani.cubesideutils.bukkit.items.CustomHeads; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; import java.util.Objects; -public class EventGui implements Listener { - - public static final int INVENTORY_SIZE = 27; +public class EventGui extends AbstractWindow { private static final Challenges plugin = Challenges.getPlugin(); - public static final Inventory EVENT_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Event Settings"); + public static final int INVENTORY_SIZE = 36; private static final int NULL_EVENT_INDEX = 0; private static final int TEAM_INDEX = 8; - private static final int BRIDGE_RACE_INDEX = 9; + private static final int BINGO_EVENT_INDEX = 10; - private static final int XP_EVENT_INDEX = 11; - private static final int BUILD_EVENT_INDEX = 12; - private static final int DEATHRUN_EVENT_INDEX = 13; - private static final int DEATH_COUNTER_INDEX = 14; - private static final int SAMMEL_FIEBER_INDEX = 15; - private static final int ORE_BATTLE_INDEX = 16; + private static final int DEATHRUN_EVENT_INDEX = 11; + private static final int FORCE_ITEM_INDEX = 12; + private static final int SAMMEL_FIEBER_INDEX = 13; + private static final int BRIDGE_RACE_INDEX = 14; + private static final int ORE_BATTLE_INDEX = 15; + private static final int DEATH_COUNTER_INDEX = 16; - private static final int FORCE_ITEM_INDEX = 17; //TODO muss noch schön gemacht werden. - private static final int EVENT_SETTINGS_INDEX = 18; private static final int BINGO_ITEMS_INDEX = 19; - private static final int SAMMEL_FIEBER_SETTINGS_INDEX = 24; - private static final int CLOSE_IDEX = 26; + private static final int FORCE_ITEM_SETTINGS_INDEX = 21; + private static final int SAMMEL_FIEBER_SETTINGS_INDEX = 22; - public static void createEventGUI(Player p) { - if (Objects.equals(Config.getString("event.type"), "bingo")) { - EVENT_GUI.setItem(BINGO_EVENT_INDEX, GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatUtil.GREEN + "Bingo Event", true, ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.GREEN + "Items kann man mit /bingo sehen")); - EVENT_GUI.setItem(BINGO_ITEMS_INDEX, GUIUtils.createGuiItem(Material.CHEST, ChatUtil.GREEN + "Items", ChatUtil.GREEN + "Anklicken um Items Hinzuzufügen")); - } else { - EVENT_GUI.setItem(BINGO_EVENT_INDEX, GUIUtils.createGuiItem(Material.PINK_SHULKER_BOX, ChatUtil.RED + "Bingo Event", ChatUtil.GREEN + "Sammle Vorgegebene Items", ChatUtil.GREEN + "Items kann man mit /bingo sehen")); - EVENT_GUI.setItem(BINGO_ITEMS_INDEX, GUIUtils.EMPTY_ICON); - } - if (!Objects.equals(Config.getString("event.type"), "nix")) { - EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Event beenden")); - } else { - EVENT_GUI.setItem(NULL_EVENT_INDEX, GUIUtils.EMPTY_ICON); - } + private static final int EVENT_SETTINGS_INDEX = 27; + private static final int CLOSE_IDEX = 35; - EVENT_GUI.setItem(TEAM_INDEX, GUIUtils.createGuiItem(Material.ORANGE_BED, ChatUtil.BLUE + "Team Settings")); - EVENT_GUI.setItem(EVENT_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.REPEATING_COMMAND_BLOCK, ChatUtil.BLUE + "Event Settings")); - - if (Objects.equals(Config.getString("event.type"), "build")) { - EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatUtil.GREEN + "Build Event", true, ChatUtil.GREEN + "Baue so viele Blöcke wie möglich ab", ChatUtil.RED + "Einen Block setzen gibt einen Minus Punkt")); - } else { - EVENT_GUI.setItem(BUILD_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_PICKAXE, ChatUtil.RED + "Build Event", ChatUtil.GREEN + "Baue so viele Blöcke wie möglich ab", ChatUtil.RED + "Einen Block setzen gibt einen Minus Punkt")); - } - if (Objects.equals(Config.getString("event.type"), "xp")) { - EVENT_GUI.setItem(XP_EVENT_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.GREEN + "XP Event", true, ChatUtil.GREEN + "Sammle so viel XP wie Möglich", ChatUtil.RED + "Verzaubern zieht Level ab")); - } else { - EVENT_GUI.setItem(XP_EVENT_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.RED + "XP Event", ChatUtil.GREEN + "Sammle so viel XP wie Möglich", ChatUtil.RED + "Verzaubern zieht Level ab")); - } - if (Objects.equals(Config.getString("event.type"), "deathrun")) { - EVENT_GUI.setItem(DEATHRUN_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.GREEN + "Deathrun Event", true, ChatUtil.GREEN + "Laufe so weit wie möglich ohne zu sterben")); - } else { - EVENT_GUI.setItem(DEATHRUN_EVENT_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Deathrun Event", ChatUtil.GREEN + "Laufe so weit wie möglich ohne zu sterben")); - } - if (Objects.equals(Config.getString("event.type"), "deathcounter")) { - EVENT_GUI.setItem(DEATH_COUNTER_INDEX, GUIUtils.createGuiItem(Material.ANVIL, ChatUtil.GREEN + "Death Counter Event", true, ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden.")); - } else { - EVENT_GUI.setItem(DEATH_COUNTER_INDEX, GUIUtils.createGuiItem(Material.ANVIL, ChatUtil.RED + "Death Counter Event", ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden.")); - } - if (Objects.equals(Config.getString("event.type"), "orebattle")) { - EVENT_GUI.setItem(ORE_BATTLE_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_ORE, ChatUtil.GREEN + "Ore Battle Event", true, ChatUtil.GREEN + "Baue so viele erze ab wie möglich.")); - } else { - EVENT_GUI.setItem(ORE_BATTLE_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_ORE, ChatUtil.RED + "Ore Battle Event", ChatUtil.GREEN + "Baue so viele erze ab wie möglich.")); - } - if (Objects.equals(Config.getString("event.type"), "forceitem")) { - EVENT_GUI.setItem(FORCE_ITEM_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BLOCK, ChatUtil.GREEN + "Force Item Event", true, ChatUtil.GREEN + "Farm so viele Blöcke wie möglich.")); - } else { - EVENT_GUI.setItem(FORCE_ITEM_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BLOCK, ChatUtil.RED + "Force Item Event", ChatUtil.GREEN + "Farm so viele Blöcke wie möglich.")); - } - if (Objects.equals(Config.getString("event.type"), "bridgerace")) { - EVENT_GUI.setItem(BRIDGE_RACE_INDEX, GUIUtils.createGuiItem(Material.SCAFFOLDING, ChatUtil.GREEN + "Bridge Race Event", true, ChatUtil.GREEN + "Komme so weit wie möglich.")); - } else { - EVENT_GUI.setItem(BRIDGE_RACE_INDEX, GUIUtils.createGuiItem(Material.SCAFFOLDING, ChatUtil.RED + "Bridge Race Event", ChatUtil.GREEN + "Komme so weit wie möglich.")); - } - if (Objects.equals(Config.getString("event.type"), "sammelfieber")) { - EVENT_GUI.setItem(SAMMEL_FIEBER_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Sammel Fieber Event", true, ChatUtil.GREEN + "Sammle so viel Items wie möglich!")); - EVENT_GUI.setItem(SAMMEL_FIEBER_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.NETHER_STAR, ChatUtil.GREEN + "Sammel Fieber Event Settings")); - } else { - EVENT_GUI.setItem(SAMMEL_FIEBER_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.RED + "Sammel Fieber Event", ChatUtil.GREEN + "Sammle so viel Items wie möglich!")); - EVENT_GUI.setItem(SAMMEL_FIEBER_SETTINGS_INDEX, GUIUtils.EMPTY_ICON); - } - EVENT_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!")); - for (int i = 0; i < INVENTORY_SIZE; i++) { - if (EVENT_GUI.getItem(i) == null || EVENT_GUI.getItem(i).getType() == Material.AIR) { - EVENT_GUI.setItem(i, GUIUtils.EMPTY_ICON); - } - } - p.openInventory(EVENT_GUI); + public EventGui(Player player) { + super(player, Bukkit.createInventory(player, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Event Settings")); } - @EventHandler - public void onInventoryClick(InventoryClickEvent e) { - if (e.getInventory() == EVENT_GUI) { - int slot = e.getRawSlot(); - Player p = (Player) e.getWhoClicked(); - if (Config.getBoolean("event.enabled")) { - switch (slot) { - case NULL_EVENT_INDEX -> { - if (!Objects.equals(Config.getString("event.type"), "nix")) { - plugin.getScoreManager().saveScores(p); - plugin.getScoreManager().resetScores(); - Config.setValue("event.type", "nix"); - ChatUtil.sendTitleToAll("Event", "Event beendet", ChatUtil.RED); - } - } - case BUILD_EVENT_INDEX -> { - Config.setValue("event.type", "build"); - ChatUtil.sendTitleToAll("Event", "Baue die meisten Blöcke ab!", ChatUtil.GREEN); - } - case XP_EVENT_INDEX -> { - Config.setValue("event.type", "xp"); - ChatUtil.sendTitleToAll("Event", "Sammle so viel XP wie möglich ein!", ChatUtil.GREEN); - } - case BINGO_EVENT_INDEX -> { - Config.setValue("event.type", "bingo"); - ChatUtil.sendTitleToAll("Event", "Sammle Vorgegebene Items! (/bingo)", ChatUtil.GREEN); - } - case DEATHRUN_EVENT_INDEX -> { - Config.setValue("event.type", "deathrun"); - ChatUtil.sendTitleToAll("Event", "Laufe so weit wie möglich ohne zu sterben!", ChatUtil.GREEN); - DeathrunChallengeEvent.load(); - } - case DEATH_COUNTER_INDEX -> { - Config.setValue("event.type", "deathcounter"); - ChatUtil.sendTitleToAll("Event", "Death Counter", ChatUtil.GREEN); - } - case SAMMEL_FIEBER_INDEX -> { - Config.setValue("event.type", "sammelfieber"); - ChatUtil.sendTitleToAll("Event", "SammelFieber", ChatUtil.GREEN); - } - case ORE_BATTLE_INDEX -> { - Config.setValue("event.type", "orebattle"); - ChatUtil.sendTitleToAll("Event", "Ore Battle", ChatUtil.GREEN); - } - case FORCE_ITEM_INDEX -> { - Config.setValue("event.type", "forceitem"); - ChatUtil.sendTitleToAll("Event", "Force Item", ChatUtil.GREEN); - } - case BRIDGE_RACE_INDEX -> { - if (BridgeRaceChallengeEvent.load(p)) { - Config.setValue("event.type", "bridgerace"); - ChatUtil.sendTitleToAll("Event", "Bridge Race", ChatUtil.GREEN); - } + @Override + protected void rebuildInventory() { + for (int i = 0; i < INVENTORY_SIZE; i++) { + ItemStack item; + switch (i) { + case NULL_EVENT_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "nix")) { + item = CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "Event beenden"); + } else { + item = GUIUtils.EMPTY_ICON; } } - createEventGUI(p); + 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"); + } 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"); + } + } + case DEATHRUN_EVENT_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "deathrun")) { + item = GUIUtils.createGuiItem(Material.LEATHER_BOOTS, ChatUtil.GREEN + "Deathrun Event", true, ChatUtil.GREEN + "Laufe so weit wie möglich ohne zu sterben"); + } else { + item = GUIUtils.createGuiItem(Material.LEATHER_BOOTS, ChatUtil.RED + "Deathrun Event", ChatUtil.GREEN + "Laufe so weit wie möglich ohne zu sterben"); + } + } + case FORCE_ITEM_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "forceitem")) { + item = GUIUtils.createGuiItem(Material.REINFORCED_DEEPSLATE, ChatUtil.GREEN + "Force Item Event", true, ChatUtil.GREEN + "Farm so viele Blöcke wie möglich."); + } else { + item = GUIUtils.createGuiItem(Material.REINFORCED_DEEPSLATE, ChatUtil.RED + "Force Item Event", ChatUtil.GREEN + "Farm so viele Blöcke wie möglich."); + } + } + case SAMMEL_FIEBER_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "sammelfieber")) { + item = GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Sammel Fieber Event", true, ChatUtil.GREEN + "Sammle so viel Items wie möglich!"); + } else { + item = GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.RED + "Sammel Fieber Event", ChatUtil.GREEN + "Sammle so viel Items wie möglich!"); + } + } + case BRIDGE_RACE_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "bridgerace")) { + item = GUIUtils.createGuiItem(Material.SCAFFOLDING, ChatUtil.GREEN + "Bridge Race Event", true, ChatUtil.GREEN + "Komme so weit wie möglich."); + } else { + item = GUIUtils.createGuiItem(Material.SCAFFOLDING, ChatUtil.RED + "Bridge Race Event", ChatUtil.GREEN + "Komme so weit wie möglich."); + } + } + case ORE_BATTLE_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "orebattle")) { + item = GUIUtils.createGuiItem(Material.DEEPSLATE_IRON_ORE, ChatUtil.GREEN + "Ore Battle Event", true, ChatUtil.GREEN + "Baue so viele erze ab wie möglich."); + } else { + item = GUIUtils.createGuiItem(Material.DEEPSLATE_IRON_ORE, ChatUtil.RED + "Ore Battle Event", ChatUtil.GREEN + "Baue so viele erze ab wie möglich."); + } + } + case DEATH_COUNTER_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "deathcounter")) { + item = GUIUtils.createGuiItem(Material.DAMAGED_ANVIL, ChatUtil.GREEN + "Death Counter Event", true, ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden."); + } else { + item = GUIUtils.createGuiItem(Material.DAMAGED_ANVIL, ChatUtil.RED + "Death Counter Event", ChatUtil.GREEN + "Zeigt Tode bei einem Event.", ChatUtil.GREEN + "Kann nicht mit anderen Events verbunden Werden."); + } + } + case BINGO_ITEMS_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "bingo")) { + item = GUIUtils.createGuiItem(Material.CHEST, ChatUtil.GREEN + "Items", ChatUtil.GREEN + "Anklicken um Items Hinzuzufügen"); + } else { + item = GUIUtils.EMPTY_ICON; + } + } + case FORCE_ITEM_SETTINGS_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "forceitem")) { + item = GUIUtils.createGuiItem(Material.REPEATING_COMMAND_BLOCK, ChatUtil.GREEN + "Force Item Event Settings"); + } else { + item = GUIUtils.EMPTY_ICON; + } + } + case SAMMEL_FIEBER_SETTINGS_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "sammelfieber")) { + item = GUIUtils.createGuiItem(Material.NETHER_STAR, ChatUtil.GREEN + "Sammel Fieber Event Settings"); + } else { + item = GUIUtils.EMPTY_ICON; + } + } + case EVENT_SETTINGS_INDEX -> + item = GUIUtils.createGuiItem(Material.CHAIN_COMMAND_BLOCK, ChatUtil.BLUE + "Event Settings"); - switch (slot) { - case BINGO_ITEMS_INDEX -> EventItemsGui.openEventGUI(p); - //case SAMMEL_FIEBER_SETTINGS_INDEX -> new SammelFieberSettingsGui(p).open(); - case SAMMEL_FIEBER_SETTINGS_INDEX -> SammelFieberSettingsGui.createSammelFieberSettingsGUI(p); - case TEAM_INDEX -> TeamSettingsGUI.createTeamSettingsGUI(p); - case EVENT_SETTINGS_INDEX -> new EventSettingsGui(p).open(); - case CLOSE_IDEX -> p.closeInventory(); + case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "Menü verlassen!"); + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + Player p = getPlayer(); + int slot = event.getSlot(); + switch (slot) { + case NULL_EVENT_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "nix")) { + plugin.getScoreManager().saveScores(p); + plugin.getScoreManager().resetScores(); + Config.setValue("event.type", "nix"); + ChatUtil.sendTitleToAll("Event", "Event beendet", ChatUtil.RED); } } - e.setCancelled(true); + case BINGO_EVENT_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "bingo")) { + Config.setValue("event.type", "bingo"); + ChatUtil.sendTitleToAll("Event", "Sammle Vorgegebene Items! (/bingo)", ChatUtil.GREEN); + } else { + ChatUtil.sendErrorMessage(p, "Diese Event läuft bereits"); + } + } + case DEATHRUN_EVENT_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "deathrun")) { + Config.setValue("event.type", "deathrun"); + ChatUtil.sendTitleToAll("Event", "Laufe so weit wie möglich ohne zu sterben!", ChatUtil.GREEN); + DeathrunChallengeEvent.load(); + } else { + ChatUtil.sendErrorMessage(p, "Diese Event läuft bereits"); + } + } + case DEATH_COUNTER_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "deathcounter")) { + Config.setValue("event.type", "deathcounter"); + ChatUtil.sendTitleToAll("Event", "Death Counter", ChatUtil.GREEN); + } else { + ChatUtil.sendErrorMessage(p, "Diese Event läuft bereits"); + } + } + case SAMMEL_FIEBER_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "sammelfieber")) { + Config.setValue("event.type", "sammelfieber"); + ChatUtil.sendTitleToAll("Event", "SammelFieber", ChatUtil.GREEN); + } else { + ChatUtil.sendErrorMessage(p, "Diese Event läuft bereits"); + } + } + case ORE_BATTLE_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "orebattle")) { + Config.setValue("event.type", "orebattle"); + ChatUtil.sendTitleToAll("Event", "Ore Battle", ChatUtil.GREEN); + } else { + ChatUtil.sendErrorMessage(p, "Diese Event läuft bereits"); + } + } + case FORCE_ITEM_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "forceitem")) { + Config.setValue("event.type", "forceitem"); + ChatUtil.sendTitleToAll("Event", "Force Item", ChatUtil.GREEN); + } else { + ChatUtil.sendErrorMessage(p, "Diese Event läuft bereits"); + } + } + case BRIDGE_RACE_INDEX -> { + if (!Objects.equals(Config.getString("event.type"), "bridgerace")) { + if (BridgeRaceChallengeEvent.load(p)) { + Config.setValue("event.type", "bridgerace"); + ChatUtil.sendTitleToAll("Event", "Bridge Race", ChatUtil.GREEN); + } + } else { + ChatUtil.sendErrorMessage(p, "Diese Event läuft bereits"); + } + } + } + rebuildInventory(); + + switch (slot) { + case BINGO_ITEMS_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "bingo")) { + 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); + } + } + case FORCE_ITEM_SETTINGS_INDEX -> { + if (Objects.equals(Config.getString("event.type"), "forceitem")) { + new ForceItemSettingsGui(p).open(); + } + } + case TEAM_INDEX -> TeamSettingsGUI.createTeamSettingsGUI(p); + case EVENT_SETTINGS_INDEX -> new EventSettingsGui(p).open(); + case CLOSE_IDEX -> p.closeInventory(); } } } diff --git a/src/main/java/de/fanta/challenges/guis/eventgui/ForceItemSettingsGui.java b/src/main/java/de/fanta/challenges/guis/eventgui/ForceItemSettingsGui.java new file mode 100644 index 0000000..7c42aff --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/eventgui/ForceItemSettingsGui.java @@ -0,0 +1,82 @@ +package de.fanta.challenges.guis.eventgui; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.ChallengeEvents.ForceItemChallengeEvent; +import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.AbstractWindow; +import de.fanta.challenges.utils.guiutils.GUIUtils; +import de.iani.cubesideutils.bukkit.items.CustomHeads; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +public class ForceItemSettingsGui extends AbstractWindow { + private static final Challenges plugin = Challenges.getPlugin(); + + private static final int ADD_SKIP_INDEX = 2; + private static final int SKIP_COUNT_INDEX = 5; + private static final int REMOVE_SKIP_INDEX = 8; + + private static final int BACK_INDEX = 6; + + public ForceItemSettingsGui(Player player) { + super(player, Bukkit.createInventory(player, InventoryType.DISPENSER, plugin.getGUIPREFIX() + " >> Force Item Settings")); + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + int slot = event.getSlot(); + switch (slot) { + case ADD_SKIP_INDEX -> { + if (ForceItemChallengeEvent.skipItemCount <= 63) { + ForceItemChallengeEvent.skipItemCount++; + rebuildInventory(); + } + } + case REMOVE_SKIP_INDEX -> { + if (ForceItemChallengeEvent.skipItemCount > 1) { + ForceItemChallengeEvent.skipItemCount--; + rebuildInventory(); + } + } + case BACK_INDEX -> new EventGui(getPlayer()).open(); + default -> { + } + } + } + + @Override + protected void rebuildInventory() { + for (int i = 0; i < 9; i++) { + ItemStack item; + switch (i) { + case ADD_SKIP_INDEX -> item = CustomHeads.RAINBOW_ARROW_UP.getHead(ChatUtil.GREEN + "Add Skip"); + case REMOVE_SKIP_INDEX -> item = CustomHeads.RAINBOW_ARROW_DOWN.getHead(ChatUtil.RED + "Remove Skip"); + + case SKIP_COUNT_INDEX -> { + ItemStack stack = new ItemStack(Material.STRUCTURE_VOID, ForceItemChallengeEvent.skipItemCount); + ItemMeta meta = stack.getItemMeta(); + meta.setDisplayName("" + ChatUtil.BLUE + ForceItemChallengeEvent.skipItemCount + "x " + ChatUtil.GREEN + "Skip Item"); + stack.setItemMeta(meta); + item = stack; + } + case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.GREEN + "Zurück"); + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } +} 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 b356a75..8b690f4 100644 --- a/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/eventgui/SammelFieberSettingsGui.java @@ -35,9 +35,9 @@ 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.QUARTZ_ARROW_UP.getHead()); - SAMMEL_FIEBER_SETTINGS_GUI.setItem(REMOVE_MONEY_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); - SAMMEL_FIEBER_SETTINGS_GUI.setItem(BACK_INDEX, CustomHeads.QUARTZ_ARROW_LEFT.getHead()); + 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) { @@ -89,7 +89,7 @@ } createSammelFieberSettingsGUI(p); if (slot == BACK_INDEX) { - EventGui.createEventGUI(p); + new EventGui(p).open(); } } e.setCancelled(true); diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java index f02707c..fa589a6 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java @@ -15,7 +15,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; public class ChallengesGui extends AbstractWindow { @@ -310,19 +309,8 @@ } case SHUFFLE_RANDOM_DROP_INDEX -> item = GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatUtil.GREEN + "Zufällige Drops neu mischen"); - - case BACK_INDEX -> { - item = CustomHeads.QUARTZ_ARROW_LEFT.getHead(); - ItemMeta quartzArrowLeftMeta = item.getItemMeta(); - quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Zurück"); - item.setItemMeta(quartzArrowLeftMeta); - } - case CLOSE_IDEX -> { - item = CustomHeads.QUARTZ_X.getHead(); - ItemMeta quartzArrowLeftMeta = item.getItemMeta(); - quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Menü verlassen"); - item.setItemMeta(quartzArrowLeftMeta); - } + case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.RED + "Zurück"); + case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "Menü verlassen"); case SHARED_DAMAGE_INDEX -> { if (Config.getBoolean("sharedmg")) { diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java index 3aeb5ec..3cf0270 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java @@ -11,7 +11,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; public class MainGui extends AbstractWindow { @@ -71,56 +70,10 @@ item = GUIUtils.createGuiItem(Material.COMPARATOR, ChatUtil.GREEN + "Andere Einstellungen"); case SERVER_SETTINGS_INDEX -> item = GUIUtils.createGuiItem(Material.COMMAND_BLOCK, ChatUtil.GREEN + "Server Einstellungen"); - case CLOSE_IDEX -> { - item = CustomHeads.QUARTZ_X.getHead(); - ItemMeta quartzArrowLeftMeta = item.getItemMeta(); - quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Menü verlassen"); - item.setItemMeta(quartzArrowLeftMeta); - } + case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "Menü verlassen"); default -> item = GUIUtils.EMPTY_ICON; } this.getInventory().setItem(i, item); } } -} - -/*public class MainGui implements Listener { - - private static final Challenges plugin = Challenges.getPlugin(); - - public static final int INVENTORY_SIZE = 27; - public static final Inventory MAIN_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Settings"); - - private static final int CHALLENGES_INDEX = 10; - private static final int OTHER_SETTINGS_INDEX = 13; - private static final int SERVER_SETTINGS_INDEX = 16; - private static final int CLOSE_IDEX = 26; - - public static void createMainGUI(Player p) { - MAIN_GUI.setItem(CHALLENGES_INDEX, GUIUtils.createGuiItem(Material.REPEATER, ChatUtil.GREEN + "Challenges")); - MAIN_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!")); - MAIN_GUI.setItem(SERVER_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.COMMAND_BLOCK, ChatUtil.GREEN + "Server Einstellungen")); - MAIN_GUI.setItem(OTHER_SETTINGS_INDEX, GUIUtils.createGuiItem(Material.COMPARATOR, ChatUtil.GREEN + "Andere Einstellungen")); - for (int i = 0; i < INVENTORY_SIZE; i++) { - if (MAIN_GUI.getItem(i) == null || MAIN_GUI.getItem(i).getType() == Material.AIR) { - MAIN_GUI.setItem(i, GUIUtils.EMPTY_ICON); - } - } - p.openInventory(MAIN_GUI); - } - - @EventHandler - public void onInventoryClick(InventoryClickEvent e) { - if (e.getInventory() == MAIN_GUI) { - int slot = e.getRawSlot(); - Player p = (Player) e.getWhoClicked(); - switch (slot) { - case CHALLENGES_INDEX -> SettingsGui.createSettingsGUI(p); - case CLOSE_IDEX -> p.closeInventory(); - case SERVER_SETTINGS_INDEX -> ServerSettingsGui.createServerSettingsGUI(p); - case OTHER_SETTINGS_INDEX -> OtherSettingsGui.createOtherSettingsGUI(p); - } - e.setCancelled(true); - } - } -}*/ \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java index 1ee3dea..d6253b1 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java @@ -11,7 +11,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; public class OtherSettingsGui extends AbstractWindow { @@ -136,18 +135,8 @@ for (int i = 0; i < INVENTORY_SIZE; i++) { ItemStack item; switch (i) { - case BACK_INDEX -> { - item = CustomHeads.QUARTZ_ARROW_LEFT.getHead(); - ItemMeta quartzArrowLeftMeta = item.getItemMeta(); - quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Zurück"); - item.setItemMeta(quartzArrowLeftMeta); - } - case CLOSE_IDEX -> { - item = CustomHeads.QUARTZ_X.getHead(); - ItemMeta quartzArrowLeftMeta = item.getItemMeta(); - quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Menü verlassen"); - item.setItemMeta(quartzArrowLeftMeta); - } + case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.RED + "Zurück"); + case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "Menü verlassen"); case VILLAGER_TRADE_LIMITS_INDEX -> { if (Config.getBoolean("disablevillagertradelimits")) { @@ -212,175 +201,4 @@ this.getInventory().setItem(i, item); } } -} - - - -/*public class OtherSettingsGui implements Listener { - - public static final int INVENTORY_SIZE = 36; - private static final Challenges plugin = Challenges.getPlugin(); - public static final Inventory OTHER_SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Other Settings"); - private static final int BACK_INDEX = 27; - private static final int BACKPACK_INDEX = 16; - private static final int DMG_INCHAT_INDEX = 11; - private static final int TELEPORT_COMMAND_INDEX = 12; - private static final int TAB_HP_INDEX = 13; - private static final int DIREKT_SMLET_INDEX = 14; - private static final int FAST_FURNACE_INDEX = 15; - private static final int DISABLE_VILLAGER_TRADE_LIMITS_INDEX = 10; - private static final int BACKPACK_ADD_INDEX = 7; - private static final int BACKPACK_REMOVE_INDEX = 25; - private static final int GRAVESTONE_INDEX = 19; - private static final int CLOSE_IDEX = 35; - - public static void createOtherSettingsGUI(Player p) { - OTHER_SETTINGS_GUI.setItem(BACKPACK_INDEX, GUIUtils.createGuiItem(Material.LIME_SHULKER_BOX, ChatUtil.GREEN + "Rucksack Größe: " + plugin.getBackpack().getSize() / 9 + "/6")); - if (plugin.getBackpack().getSize() < 6 * 9) { - OTHER_SETTINGS_GUI.setItem(BACKPACK_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); - } else { - OTHER_SETTINGS_GUI.setItem(BACKPACK_ADD_INDEX, GUIUtils.EMPTY_ICON); - } - if (plugin.getBackpack().getSize() > 9) { - OTHER_SETTINGS_GUI.setItem(BACKPACK_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); - } else { - OTHER_SETTINGS_GUI.setItem(BACKPACK_REMOVE_INDEX, GUIUtils.EMPTY_ICON); - } - if (Config.getBoolean("dmginchat")) { - OTHER_SETTINGS_GUI.setItem(DMG_INCHAT_INDEX, GUIUtils.createGuiItem(Material.PAPER, ChatUtil.GREEN + "Schaden im Chat anzeigen aktiviert", true)); - } else { - OTHER_SETTINGS_GUI.setItem(DMG_INCHAT_INDEX, GUIUtils.createGuiItem(Material.PAPER, ChatUtil.RED + "Schaden im Chat anzeigen deaktiviert")); - } - - if (Config.getBoolean("teleportcommand")) { - OTHER_SETTINGS_GUI.setItem(TELEPORT_COMMAND_INDEX, GUIUtils.createGuiItem(Material.ENDER_PEARL, ChatUtil.GREEN + "Teleport Command aktiviert", true, ChatUtil.GREEN + "Deaktiviert den \"/challenges tp\" command")); - } else { - OTHER_SETTINGS_GUI.setItem(TELEPORT_COMMAND_INDEX, GUIUtils.createGuiItem(Material.ENDER_PEARL, ChatUtil.RED + "Teleport Command deaktiviert", ChatUtil.RED + "Aktiviert den \"/challenges tp\" command")); - } - if (Config.getBoolean("tabhp")) { - OTHER_SETTINGS_GUI.setItem(TAB_HP_INDEX, GUIUtils.createGuiItem(Material.HEART_OF_THE_SEA, ChatUtil.GREEN + "Herzen in der Tablist anzeigen aktiviert", true)); - } else { - OTHER_SETTINGS_GUI.setItem(TAB_HP_INDEX, GUIUtils.createGuiItem(Material.HEART_OF_THE_SEA, ChatUtil.RED + "Herzen in der Tablist anzeigen deaktiviert")); - } - if (Config.getBoolean("silkore")) { - OTHER_SETTINGS_GUI.setItem(DIREKT_SMLET_INDEX, GUIUtils.createGuiItem(Material.IRON_INGOT, ChatUtil.GREEN + "Abgebaute Erze droppen Barren aktiviert", true)); - } else { - OTHER_SETTINGS_GUI.setItem(DIREKT_SMLET_INDEX, GUIUtils.createGuiItem(Material.IRON_INGOT, ChatUtil.RED + "Abgebaute Erze droppen Barren deaktiviert")); - } - if (Config.getBoolean("speedfurnace")) { - OTHER_SETTINGS_GUI.setItem(FAST_FURNACE_INDEX, GUIUtils.createGuiItem(Material.FURNACE, ChatUtil.GREEN + "Schneller Ofen aktiviert", true)); - } else { - OTHER_SETTINGS_GUI.setItem(FAST_FURNACE_INDEX, GUIUtils.createGuiItem(Material.FURNACE, ChatUtil.RED + "Schneller Ofen deaktiviert")); - } - if (Config.getBoolean("gravestone")) { - OTHER_SETTINGS_GUI.setItem(GRAVESTONE_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Grabstein aktiviert", true)); - } else { - OTHER_SETTINGS_GUI.setItem(GRAVESTONE_INDEX, GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.RED + "Grabstein deaktiviert")); - } - if (Config.getBoolean("disablevillagertradelimits")) { - OTHER_SETTINGS_GUI.setItem(DISABLE_VILLAGER_TRADE_LIMITS_INDEX, GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.GREEN + "Villager Trade Limits aktiviert ", true)); - } else { - OTHER_SETTINGS_GUI.setItem(DISABLE_VILLAGER_TRADE_LIMITS_INDEX, GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.RED + "Villager Trade Limits deaktiviert (Default)")); - } - - - OTHER_SETTINGS_GUI.setItem(BACK_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatUtil.GREEN + "Zurück")); - OTHER_SETTINGS_GUI.setItem(CLOSE_IDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!")); - for (int i = 0; i < INVENTORY_SIZE; i++) { - if (OTHER_SETTINGS_GUI.getItem(i) == null || OTHER_SETTINGS_GUI.getItem(i).getType() == Material.AIR) { - OTHER_SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); - } - } - p.openInventory(OTHER_SETTINGS_GUI); - } - - @EventHandler - public void onInventoryClick(InventoryClickEvent e) { - if (e.getInventory() == OTHER_SETTINGS_GUI) { - int slot = e.getRawSlot(); - Player p = (Player) e.getWhoClicked(); - switch (slot) { - case BACKPACK_ADD_INDEX: - if (plugin.getBackpack().getSize() < 6 * 9) { - plugin.getBackpack().resize(plugin.getBackpack().getSize() + 9); - } - break; - case BACKPACK_REMOVE_INDEX: - if (plugin.getBackpack().getSize() > 9) { - plugin.getBackpack().resize(plugin.getBackpack().getSize() - 9); - } - break; - case DMG_INCHAT_INDEX: - if (Config.getBoolean("dmginchat")) { - ChatUtil.sendTitleToAll("Einstellungen", "Schaden im Chat anzeigen deaktiviert", ChatUtil.RED); - Config.setValue("dmginchat", false); - } else { - ChatUtil.sendTitleToAll("Einstellungen", "Schaden im Chat anzeigen aktiviert", ChatUtil.GREEN); - Config.setValue("dmginchat", true); - } - break; - case TELEPORT_COMMAND_INDEX: - if (Config.getBoolean("teleportcommand")) { - ChatUtil.sendTitleToAll("Einstellungen", "Teleport Command deaktiviert", ChatUtil.RED); - Config.setValue("teleportcommand", false); - } else { - ChatUtil.sendTitleToAll("Einstellungen", "Teleport Command aktiviert", ChatUtil.GREEN); - Config.setValue("teleportcommand", true); - } - break; - case TAB_HP_INDEX: - if (Config.getBoolean("tabhp")) { - ChatUtil.sendTitleToAll("Einstellungen", "Herzen in der Tablist anzeigen deaktiviert", ChatUtil.RED); - Config.setValue("tabhp", false); - } else { - ChatUtil.sendTitleToAll("Einstellungen", "Herzen in der Tablist anzeigen aktiviert", ChatUtil.GREEN); - Config.setValue("tabhp", true); - } - plugin.getSBManager().updateTabHP(); - break; - case DIREKT_SMLET_INDEX: - if (Config.getBoolean("silkore")) { - ChatUtil.sendTitleToAll("Einstellungen", "Abgebaute Erze droppen Barren deaktiviert", ChatUtil.RED); - Config.setValue("silkore", false); - } else { - ChatUtil.sendTitleToAll("Einstellungen", "Abgebaute Erze droppen Barren aktiviert", ChatUtil.GREEN); - Config.setValue("silkore", true); - } - break; - case FAST_FURNACE_INDEX: - if (Config.getBoolean("speedfurnace")) { - ChatUtil.sendTitleToAll("Einstellungen", "Schneller Ofen deaktiviert", ChatUtil.RED); - Config.setValue("speedfurnace", false); - } else { - ChatUtil.sendTitleToAll("Einstellungen", "Schneller Ofen aktiviert", ChatUtil.GREEN); - Config.setValue("speedfurnace", true); - } - break; - case DISABLE_VILLAGER_TRADE_LIMITS_INDEX: - if (Config.getBoolean("disablevillagertradelimits")) { - ChatUtil.sendTitleToAll("Einstellungen", "Villager Trade Limits aktiviert", ChatUtil.RED); - Config.setValue("disablevillagertradelimits", false); - } else { - ChatUtil.sendTitleToAll("Einstellungen", "Villager Trade Limits deaktiviert (Default)", ChatUtil.GREEN); - Config.setValue("disablevillagertradelimits", true); - } - break; - case GRAVESTONE_INDEX: - if (Config.getBoolean("gravestone")) { - ChatUtil.sendTitleToAll("Einstellungen", "Grabsteine deaktiviert", ChatUtil.RED); - Config.setValue("gravestone", false); - } else { - ChatUtil.sendTitleToAll("Einstellungen", "Grabsteine aktiviert", ChatUtil.GREEN); - Config.setValue("gravestone", true); - } - break; - } - createOtherSettingsGUI(p); - switch (slot) { - case BACK_INDEX -> new MainGui(p).open(); - case CLOSE_IDEX -> p.closeInventory(); - } - e.setCancelled(true); - } - } -}*/ \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java index 8c6d43a..7ba360b 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java @@ -12,7 +12,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; public class ServerSettingsGui extends AbstractWindow { @@ -139,18 +138,8 @@ for (int i = 0; i < INVENTORY_SIZE; i++) { ItemStack item; switch (i) { - case BACK_INDEX -> { - item = CustomHeads.QUARTZ_ARROW_LEFT.getHead(); - ItemMeta quartzArrowLeftMeta = item.getItemMeta(); - quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Zurück"); - item.setItemMeta(quartzArrowLeftMeta); - } - case CLOSE_IDEX -> { - item = CustomHeads.QUARTZ_X.getHead(); - ItemMeta quartzArrowLeftMeta = item.getItemMeta(); - quartzArrowLeftMeta.setDisplayName(ChatUtil.RED + "Menü verlassen"); - item.setItemMeta(quartzArrowLeftMeta); - } + case BACK_INDEX -> item = CustomHeads.RAINBOW_ARROW_BACKWARD_II.getHead(ChatUtil.RED + "Zurück"); + case CLOSE_IDEX -> item = CustomHeads.RAINBOW_X.getHead(ChatUtil.RED + "Menü verlassen"); case DIFFICULTY_INDEX -> { if (plugin.getDifficulty() == Difficulty.EASY) { diff --git a/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java b/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java index 1015794..ad473f3 100644 --- a/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java +++ b/src/main/java/de/fanta/challenges/listeners/BlockCreateListener.java @@ -1,8 +1,6 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; -import de.fanta.challenges.scoreboard.ChallengePlayer; -import de.fanta.challenges.utils.Config; import org.bukkit.GameMode; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -18,9 +16,6 @@ if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { e.setCancelled(true); } - if (Config.getString("event.type").equals("build")) { - plugin.getScoreManager().updateScore(new ChallengePlayer(e.getPlayer().getUniqueId()), -1); - } } @EventHandler diff --git a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java index 6e693a1..a0af79b 100644 --- a/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java +++ b/src/main/java/de/fanta/challenges/listeners/BlockDestroyListener.java @@ -1,10 +1,7 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; -import de.fanta.challenges.scoreboard.ChallengePlayer; import de.fanta.challenges.utils.Config; -import de.fanta.challenges.utils.ItemTypeListUtil; -import de.iani.cubesideutils.bukkit.items.ItemGroups; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.block.Block; @@ -23,12 +20,6 @@ if ((!plugin.getTimer().isRunning()) && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { e.setCancelled(true); } - if (Config.getString("event.type").equals("build") && plugin.getTimer().isRunning()) { - Material blockType = e.getBlock().getType(); - if (!ItemTypeListUtil.isInstaBreakBlock(blockType) && !ItemGroups.isDoubleBlockPlant(blockType) && !ItemGroups.isSingleBlockPlant(blockType)) { - plugin.getScoreManager().updateScore(new ChallengePlayer(e.getPlayer().getUniqueId()), 1); - } - } } @EventHandler diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index 33ed4b8..deb87fe 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -1,7 +1,6 @@ package de.fanta.challenges.listeners; import de.fanta.challenges.Challenges; -import de.fanta.challenges.CoordsTargeter; import de.fanta.challenges.challenges.AllAdvancementsChallenge; import de.fanta.challenges.challenges.BedrockWallChallenge; import de.fanta.challenges.challenges.ChallengeEvents.BingoChallengeEvent; @@ -33,12 +32,12 @@ import de.fanta.challenges.guis.TeleportGUI; import de.fanta.challenges.guis.coordsgui.CoordsDeleteGUI; import de.fanta.challenges.guis.coordsgui.CoordsGUI; -import de.fanta.challenges.guis.eventgui.EventGui; import de.fanta.challenges.guis.eventgui.EventItemsGui; import de.fanta.challenges.guis.eventgui.SammelFieberSettingsGui; import de.fanta.challenges.guis.eventgui.TeamSelectGUI; import de.fanta.challenges.guis.eventgui.TeamSettingsGUI; import de.fanta.challenges.teams.TeamListener; +import de.fanta.challenges.utils.CoordsTargeter; import de.fanta.challenges.utils.guiutils.WindowManager; import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; @@ -60,7 +59,6 @@ pM.registerEvents(new WindowManager(), plugin); pM.registerEvents(new EventItemsGui(), plugin); - pM.registerEvents(new EventGui(), plugin); pM.registerEvents(new ContainerListener(), plugin); pM.registerEvents(new CommandBlockListener(), plugin); pM.registerEvents(new TeleportGUI(), plugin); diff --git a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java index 1d2957a..e45e20b 100644 --- a/src/main/java/de/fanta/challenges/listeners/PlayerListener.java +++ b/src/main/java/de/fanta/challenges/listeners/PlayerListener.java @@ -27,7 +27,6 @@ import org.bukkit.event.player.PlayerAttemptPickupItemEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; -import org.bukkit.event.player.PlayerLevelChangeEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerRespawnEvent; @@ -66,13 +65,6 @@ } @EventHandler - public void onExpChangeEvent(PlayerLevelChangeEvent e) { - if (Objects.equals(Config.getString("event.type"), "xp") && plugin.getTimer().isRunning()) { - plugin.getScoreManager().updateScore(new ChallengePlayer(e.getPlayer().getUniqueId()), e.getNewLevel() - e.getOldLevel()); - } - } - - @EventHandler public void onPickUpItem(PlayerAttemptPickupItemEvent e) { if (!plugin.getTimer().isRunning() && e.getPlayer().getGameMode() == GameMode.SURVIVAL) { e.setCancelled(true); diff --git a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java index 44ce148..88c9d01 100644 --- a/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java +++ b/src/main/java/de/fanta/challenges/scoreboard/ScoreManager.java @@ -106,8 +106,7 @@ int current = data.getIndex(); int dir = (int) Math.signum(difference * -1); - IntPredicate forCondition = (dir == -1) ? curr -> curr > 0 && positions.get(curr - 1).getScore() < data.getScore() - : curr -> curr < positions.size() - 1 && positions.get(curr + 1).getScore() > data.getScore(); + IntPredicate forCondition = (dir == -1) ? curr -> curr > 0 && positions.get(curr - 1).getScore() < data.getScore() : curr -> curr < positions.size() - 1 && positions.get(curr + 1).getScore() > data.getScore(); int startingIndex = data.getIndex(); @@ -143,8 +142,7 @@ for (; i < positions.size(); i++) { curr = positions.get(i); int correctPosition = (curr.getScore() == lastScore) ? lastPosition : lastPosition + 1; - if (curr.getPostition() == correctPosition && i > Math.max(startingIndex, endIndex)) - break; + if (curr.getPostition() == correctPosition && i > Math.max(startingIndex, endIndex)) break; curr.setPosition(correctPosition); lastPosition = correctPosition; @@ -220,11 +218,13 @@ sb.append("Erstellt am: ").append(formatter.format(currentTime)).append('\n'); sb.append("Timer: ").append(plugin.getTimer().formatTime()).append('\n'); if (Objects.equals(Config.getString("event.type"), "sammelfieber")) { - sb.append("Item: ").append(new ItemStack(SammelFieberSettingsGui.getEventItem()).getI18NDisplayName()).append('\n'); - sb.append("Cubes pro Item: ").append(SammelFieberSettingsGui.MONEY).append('\n'); - sb.append("Items abgegeben: ").append(SammelFieberChallengeEvent.getCount()).append('\n'); - sb.append("Cubes gesammt: ").append(SammelFieberSettingsGui.MONEY * SammelFieberChallengeEvent.getCount()).append('\n'); - sb.append("Cubes pro Spieler: ").append(SammelFieberSettingsGui.MONEY * SammelFieberChallengeEvent.getCount() / scores.size()).append('\n'); + if (SammelFieberSettingsGui.getEventItem() != null) { + sb.append("Item: ").append(new ItemStack(SammelFieberSettingsGui.getEventItem()).getI18NDisplayName()).append('\n'); + sb.append("Cubes pro Item: ").append(SammelFieberSettingsGui.MONEY).append('\n'); + sb.append("Items abgegeben: ").append(SammelFieberChallengeEvent.getCount()).append('\n'); + sb.append("Cubes gesammt: ").append(SammelFieberSettingsGui.MONEY * SammelFieberChallengeEvent.getCount()).append('\n'); + sb.append("Cubes pro Spieler: ").append(SammelFieberSettingsGui.MONEY * SammelFieberChallengeEvent.getCount() / scores.size()).append('\n'); + } } sb.append("=".repeat(20)); sb.append('\n'); diff --git a/src/main/java/de/fanta/challenges/utils/CoordsTargeter.java b/src/main/java/de/fanta/challenges/utils/CoordsTargeter.java new file mode 100644 index 0000000..76e1eed --- /dev/null +++ b/src/main/java/de/fanta/challenges/utils/CoordsTargeter.java @@ -0,0 +1,88 @@ +package de.fanta.challenges.utils; + +import de.fanta.challenges.Challenges; +import de.fanta.challenges.events.TimerChangedEvent; +import org.bukkit.Location; +import org.bukkit.Particle; +import org.bukkit.Vibration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; + +import java.util.HashMap; +import java.util.UUID; + +public class CoordsTargeter implements Listener { + + private static final Challenges plugin = Challenges.getPlugin(); + private static final HashMap locationMap = new HashMap<>(); + + private int taskId = -1; + + @EventHandler + public void onTimer(TimerChangedEvent e) { + if (e.isRunning()) { + startUpdateTask(); + } else { + locationMap.clear(); + stopUpdateTask(); + } + } + + @EventHandler + public void onLeave(PlayerQuitEvent e) { + if (locationMap.containsKey(e.getPlayer().getUniqueId())) { + removeLocation(e.getPlayer().getUniqueId()); + } + } + + public void updateTargeter() { + for (Player p : plugin.getVanish().getPlayerListWithoutVanishPlayers()) { + if (locationMap.containsKey(p.getUniqueId())) { + Location targetLocation = locationMap.get(p.getUniqueId()); + + if (targetLocation != null && targetLocation.getWorld() == p.getWorld()) { + Location playerlocation; + if (p.getVehicle() != null) { + playerlocation = p.getLocation().clone().add(0, 0.5, 0); + } else { + playerlocation = p.getLocation().clone().add(0, 1, 0); + } + + int distance = (int) playerlocation.toVector().subtract(targetLocation.toVector()).length(); + Vibration vibration = new Vibration(new Vibration.Destination.BlockDestination(targetLocation.getBlock()), distance * 2); + p.spawnParticle(Particle.VIBRATION, playerlocation, 1, vibration); + + if (distance < 5) { + removeLocation(p.getUniqueId()); + ChatUtil.sendNormalMessage(p, "Sie haben ihr Ziel erreicht!"); + } + } else { + removeLocation(p.getUniqueId()); + ChatUtil.sendWarningMessage(p, "Du bist nicht mehr in der Welt vom Waypoint, der Weg wird nicht mehr angezeigt!"); + } + } + } + } + + public void startUpdateTask() { + taskId = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, this::updateTargeter, 5L, 5L); + } + + public void stopUpdateTask() { + plugin.getServer().getScheduler().cancelTask(taskId); + } + + public static void addLocation(UUID uuid, Location location) { + locationMap.put(uuid, location); + } + + public static void removeLocation(UUID uuid) { + locationMap.remove(uuid); + } + + public static boolean containsLocation(UUID uuid) { + return locationMap.containsKey(uuid); + } +}