diff --git a/src/main/java/de/fanta/challenges/Challenges.java b/src/main/java/de/fanta/challenges/Challenges.java index e966fbd..7352820 100644 --- a/src/main/java/de/fanta/challenges/Challenges.java +++ b/src/main/java/de/fanta/challenges/Challenges.java @@ -19,6 +19,7 @@ import org.apache.commons.io.FileUtils; import org.bukkit.BanList; import org.bukkit.Bukkit; +import org.bukkit.Difficulty; import org.bukkit.GameRule; import org.bukkit.Material; import org.bukkit.OfflinePlayer; @@ -415,6 +416,45 @@ } } + public boolean getPvP() { + return Bukkit.getWorld("world").getPVP(); + } + + public void setDifficulty(Difficulty difficulty) { + for (World w : plugin.getServer().getWorlds()) { + if (w != null) { + w.setDifficulty(difficulty); + } + } + } + + public Difficulty getDifficulty() { + return Bukkit.getWorld("world").getDifficulty(); + } + + public void setKeepInventory(Boolean value) { + for (World w : plugin.getServer().getWorlds()) { + if (w != null) { + w.setGameRule(GameRule.KEEP_INVENTORY, value); + } + } + } + + public boolean getKeepInventory() { + return Bukkit.getWorld("world").getGameRuleValue(GameRule.KEEP_INVENTORY); + } + public void setNaturalRegeneration(Boolean value) { + for (World w : plugin.getServer().getWorlds()) { + if (w != null) { + w.setGameRule(GameRule.NATURAL_REGENERATION, value); + } + } + } + + public boolean getNaturalRegeneration() { + return Bukkit.getWorld("world").getGameRuleValue(GameRule.NATURAL_REGENERATION); + } + public Timer getTimer() { return timer; } diff --git a/src/main/java/de/fanta/challenges/commands/settings/SettingsCommand.java b/src/main/java/de/fanta/challenges/commands/settings/SettingsCommand.java index b73f94f..190acca 100644 --- a/src/main/java/de/fanta/challenges/commands/settings/SettingsCommand.java +++ b/src/main/java/de/fanta/challenges/commands/settings/SettingsCommand.java @@ -21,7 +21,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String s1, ArgsParser args) { if (sender instanceof Player p) { if (plugin.isEditor((Player) sender) || sender.hasPermission("Challenges.editor.override")) { - MainGui.createMainGUI(p); + new MainGui(p).open(); } else { ChatUtil.sendErrorMessage(sender, "Du bist kein Editor! " + plugin.getCurrentEditor().getName() + " muss die Map bearbeiten!"); } diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java new file mode 100644 index 0000000..cb80a41 --- /dev/null +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ChallengesGui.java @@ -0,0 +1,821 @@ +package de.fanta.challenges.guis.settingsgui; + +import com.github.yannicklamprecht.worldborder.api.WorldBorderApi; +import de.fanta.challenges.Challenges; +import de.fanta.challenges.challenges.AllItemsChallenge; +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.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.plugin.RegisteredServiceProvider; + +public class ChallengesGui extends AbstractWindow { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int WINDOW_SIZE = 54; + + private static final int GOAL_INDEX = 0; + private static final int SHUFFLE_RANDOM_DROP_INDEX = 1; + + private static final int BACK_INDEX = 7; + private static final int CLOSE_IDEX = 8; + + private static final int SHARED_DAMAGE_INDEX = 19; + private static final int FLOOR_IS_LAVA_INDEX = 20; + private static final int CHUNK_RANDOM_EFFECT_INDEX = 21; + private static final int BEDROCK_WALL_INDEX = 22; + private static final int MLG_INDEX = 23; + private static final int WORLD_BORDER_LEVEL_INDEX = 24; + private static final int ALL_ITEMS_INDEX = 25; + + private static final int DEATH_ON_XP_INDEX = 28; + private static final int DEATH_ON_FALLDAMAGE_INDEX = 29; + private static final int DEATH_ON_SPRINT_INDEX = 30; + private static final int DEATH_ON_JUMP_INDEX = 31; + private static final int CLEAR_INVENTAR_ON_DAMAGE_INDEX = 32; + private static final int ICE_RUNNER_INDEX = 33; + private static final int RANDOM_MOBS_INDEX = 34; + + private static final int RANDOM_DROPS_INDEX = 37; + private static final int DAMAGE_ON_SNEAK_INDEX = 38; + private static final int TIED_TOGETHER_INDEX = 39; + + public ChallengesGui(Player player) { + super(player, Bukkit.createInventory(player, WINDOW_SIZE, plugin.getGUIPREFIX() + " >> Challenges")); + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + Player player = getPlayer(); + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + int slot = event.getSlot(); + switch (slot) { + case GOAL_INDEX -> { + if (plugin.getConfig().getBoolean("target")) { + GUIUtils.setConfig("target", false); + GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Wither", ChatUtil.GREEN); + } else { + GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Enderdrachen", ChatUtil.GREEN); + GUIUtils.setConfig("target", true); + } + } + case SHUFFLE_RANDOM_DROP_INDEX -> { + plugin.rndDrops.shuffleItems(); + plugin.rndDrops.saveItems(); + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops neu gemischt!", ChatUtil.GREEN); + } + + case BACK_INDEX -> getParent().open(); + case CLOSE_IDEX -> player.closeInventory(); + + + case SHARED_DAMAGE_INDEX -> { + if (plugin.getConfig().getBoolean("sharedmg")) { + GUIUtils.setConfig("sharedmg", false); + GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("sharedmg", true); + GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden aktiviert", ChatUtil.GREEN); + } + } + case FLOOR_IS_LAVA_INDEX -> { + if (plugin.getConfig().getBoolean("lavafloor")) { + GUIUtils.setConfig("lavafloor", false); + GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("lavafloor", true); + GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava aktiviert", ChatUtil.GREEN); + } + } + case CHUNK_RANDOM_EFFECT_INDEX -> { + if (plugin.getConfig().getBoolean("randomeffect")) { + GUIUtils.setConfig("randomeffect", false); + GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("randomeffect", true); + GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt aktiviert", ChatUtil.GREEN); + } + } + case BEDROCK_WALL_INDEX -> { + if (plugin.getConfig().getBoolean("bedrockwall")) { + GUIUtils.setConfig("bedrockwall", false); + GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("bedrockwall", true); + GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand aktiviert", ChatUtil.GREEN); + } + } + case MLG_INDEX -> { + if (plugin.getConfig().getBoolean("mlg.enabled")) { + GUIUtils.setConfig("mlg.enabled", false); + GUIUtils.sendTitleToAll("Challenge", "MLG deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "MLG aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("mlg.enabled", true); + } + } + case WORLD_BORDER_LEVEL_INDEX -> { + if (plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class) == null) { + return; + } + RegisteredServiceProvider worldBorderAPI = plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class); + if (worldBorderAPI == null) { + return; + } + if (plugin.getConfig().getBoolean("worldborderlevel")) { + GUIUtils.setConfig("worldborderlevel", false); + for (Player pp : Bukkit.getOnlinePlayers()) { + worldBorderAPI.getProvider().resetWorldBorderToGlobal(pp); + } + GUIUtils.sendTitleToAll("Challenge", "World Border Level deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("worldborderlevel", true); + for (Player pp : Bukkit.getOnlinePlayers()) { + worldBorderAPI.getProvider().setBorder(pp, 1, plugin.getServer().getWorld("world").getSpawnLocation()); + } + + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.teleport(pp.getWorld().getSpawnLocation()); + } + GUIUtils.sendTitleToAll("Challenge", "World Border Level aktiviert", ChatUtil.GREEN); + } + } + case ALL_ITEMS_INDEX -> { + if (plugin.getConfig().getBoolean("allitems")) { + GUIUtils.setConfig("allitems", false); + GUIUtils.sendTitleToAll("Challenge", "All Items deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("allitems", true); + GUIUtils.sendTitleToAll("Challenge", "All Items aktiviert", ChatUtil.GREEN); + AllItemsChallenge.start(); + } + } + + case DEATH_ON_XP_INDEX -> { + if (plugin.getConfig().getBoolean("xpdeath")) { + GUIUtils.setConfig("xpdeath", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("xpdeath", true); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP aktiviert", ChatUtil.GREEN); + } + } + case DEATH_ON_FALLDAMAGE_INDEX -> { + if (plugin.getConfig().getBoolean("deathonfall")) { + GUIUtils.setConfig("deathonfall", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("deathonfall", true); + } + } + case DEATH_ON_SPRINT_INDEX -> { + if (plugin.getConfig().getBoolean("deathonsprint")) { + GUIUtils.setConfig("deathonsprint", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("deathonsprint", true); + } + } + case DEATH_ON_JUMP_INDEX -> { + if (plugin.getConfig().getBoolean("deathonjump")) { + GUIUtils.setConfig("deathonjump", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("deathonjump", true); + } + } + case CLEAR_INVENTAR_ON_DAMAGE_INDEX -> { + if (plugin.getConfig().getBoolean("clinvdmg")) { + GUIUtils.setConfig("clinvdmg", false); + GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("clinvdmg", true); + } + } + case ICE_RUNNER_INDEX -> { + if (plugin.getConfig().getBoolean("icerunner")) { + GUIUtils.setConfig("icerunner", false); + GUIUtils.sendTitleToAll("Challenge", "Ice-Runner deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("icerunner", true); + GUIUtils.sendTitleToAll("Challenge", "Ice-Runner aktiviert", ChatUtil.GREEN); + } + } + case RANDOM_MOBS_INDEX -> { + if (plugin.getConfig().getBoolean("randommobs")) { + GUIUtils.setConfig("randommobs", false); + GUIUtils.sendTitleToAll("Challenge", "Random Mobs deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("randommobs", true); + GUIUtils.sendTitleToAll("Challenge", "Random Mobs aktiviert", ChatUtil.GREEN); + } + } + + case RANDOM_DROPS_INDEX -> { + if (plugin.getConfig().getBoolean("rnddrops")) { + GUIUtils.setConfig("rnddrops", false); + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("rnddrops", true); + } + } + case DAMAGE_ON_SNEAK_INDEX -> { + if (plugin.getConfig().getBoolean("damageonsneak")) { + if (event.isRightClick()) { + //TODO: INV ÖFFNEN + } + GUIUtils.setConfig("damageonsneak", false); + GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("damageonsneak", true); + } + } + case TIED_TOGETHER_INDEX -> { + if (plugin.getConfig().getBoolean("tiedtogether")) { + GUIUtils.setConfig("tiedtogether", false); + GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("tiedtogether", true); + GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden aktiviert", ChatUtil.GREEN); + } + } + default -> { + } + } + } + + @Override + protected void rebuildInventory() { + for (int i = 0; i < WINDOW_SIZE; i++) { + ItemStack item; + switch (i) { + case GOAL_INDEX -> { + if (plugin.getConfig().getBoolean("target")) { + item = GUIUtils.createGuiItem(Material.DRAGON_HEAD, ChatUtil.GREEN + "Ziel: Enderdrachen töten"); + } else { + item = GUIUtils.createGuiItem(Material.WITHER_SKELETON_SKULL, ChatUtil.GREEN + "Ziel: Wither töten"); + } + } + 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 SHARED_DAMAGE_INDEX -> { + if (plugin.getConfig().getBoolean("sharedmg")) { + item = GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.GREEN + "Geteilter Schaden aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.RED + "Geteilter Schaden deaktiviert"); + } + } + case FLOOR_IS_LAVA_INDEX -> { + if (plugin.getConfig().getBoolean("lavafloor")) { + item = GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.GREEN + "Der Boden ist Lava aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.RED + "Der Boden ist Lava deaktiviert"); + } + } + case CHUNK_RANDOM_EFFECT_INDEX -> { + if (plugin.getConfig().getBoolean("randomeffect")) { + item = GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.GREEN + "Chunk Random Effekt aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.RED + "Chunk Random Effekt deaktiviert"); + } + } + case BEDROCK_WALL_INDEX -> { + if (plugin.getConfig().getBoolean("bedrockwall")) { + item = GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.GREEN + "Bedrock Wand aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.RED + "Bedrock Wand deaktiviert"); + } + } + case MLG_INDEX -> { + if (plugin.getConfig().getBoolean("mlg.enabled")) { + item = GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.GREEN + "MLG aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.RED + "MLG deaktiviert"); + } + } + case WORLD_BORDER_LEVEL_INDEX -> { + if (plugin.getConfig().getBoolean("worldborderlevel")) { + item = GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.GREEN + "World Border Level aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.RED + "World Border Level deaktiviert"); + } + } + case ALL_ITEMS_INDEX -> { + if (plugin.getConfig().getBoolean("allitems")) { + item = GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.GREEN + "All Items aktiviert", true, ChatUtil.GREEN + "/skipitem um ein Item zu überspringen"); + } else { + item = GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.RED + "All Items deaktiviert", ChatUtil.GREEN + "/skipitem um ein Item zu überspringen"); + } + } + + case DEATH_ON_XP_INDEX -> { + if (plugin.getConfig().getBoolean("xpdeath")) { + item = GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.GREEN + "Sterben durch XP aktiviert", true, ChatUtil.GREEN + "Wenn ein Spieler XP einsammelt wird er sterben"); + } else { + item = GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.RED + "Sterben durch XP deaktiviert", ChatUtil.RED + "Wenn ein Spieler XP einsammelt wird er sterben"); + } + } + case DEATH_ON_FALLDAMAGE_INDEX -> { + if (plugin.getConfig().getBoolean("deathonfall")) { + item = GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.GREEN + "Tod bei Fallschaden aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.RED + "Tod bei Fallschaden deaktiviert"); + } + } + case DEATH_ON_SPRINT_INDEX -> { + if (plugin.getConfig().getBoolean("deathonsprint")) { + item = GUIUtils.createGuiItem(Material.POTION, ChatUtil.GREEN + "Tod beim Sprinten aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.GLASS_BOTTLE, ChatUtil.RED + "Tod beim Sprinten deaktiviert"); + } + } + case DEATH_ON_JUMP_INDEX -> { + if (plugin.getConfig().getBoolean("deathonjump")) { + item = GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.GREEN + "Tod beim Springen aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.RED + "Tod beim Springen deaktiviert"); + } + } + case CLEAR_INVENTAR_ON_DAMAGE_INDEX -> { + if (plugin.getConfig().getBoolean("clinvdmg")) { + item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.GREEN + "Alle Inventare löschen wenn ein Spieler Schaden bekommt aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Alle Inventare löschen wenn ein Spieler Schaden bekommt deaktiviert"); + } + } + case ICE_RUNNER_INDEX -> { + if (plugin.getConfig().getBoolean("icerunner")) { + item = GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.GREEN + "Ice-Runner aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.RED + "Ice-Runner deaktiviert"); + } + } + case RANDOM_MOBS_INDEX -> { + if (plugin.getConfig().getBoolean("randommobs")) { + item = GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.GREEN + "Random Mobs aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.RED + "Random Mobs deaktiviert"); + } + } + + case RANDOM_DROPS_INDEX -> { + if (plugin.getConfig().getBoolean("rnddrops")) { + item = GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.GREEN + "Zufällige Drops aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.RED + "Zufällige Drops deaktiviert"); + } + } + case DAMAGE_ON_SNEAK_INDEX -> { + if (plugin.getConfig().getBoolean("damageonsneak")) { + item = GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.GREEN + "Schaden beim Schleichen aktiviert", true, ChatUtil.GREEN + "Schaden beim Schleichen: " + plugin.getConfig().getDouble("sneakdmg"), ChatUtil.GREEN + "Rechtsklick zum Bearbeiten"); + + } else { + item = GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.RED + "Schaden beim Schleichen deaktiviert"); + } + } + case TIED_TOGETHER_INDEX -> { + if (plugin.getConfig().getBoolean("tiedtogether")) { + item = GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.GREEN + "Zusammengebunden aktiviert", true, ChatUtil.GREEN + "Maximale Entfernung der Spieler: " + plugin.getConfig().getDouble("playerrange"), ChatUtil.GREEN + "Rechtsklick zum Bearbeiten"); + } else { + item = GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Zusammengebunden deaktiviert"); + } + } + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } +} + +/*public class ChallengesGui implements Listener { + + public static final int INVENTORY_SIZE = 54; + private static final Challenges plugin = Challenges.getPlugin(); + public static final Inventory SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Challenges"); + + private static final int CRAFTING_TABLE_INDEX = 0; + private static final int TRADING_INDEX = 9; + + private static final int CLOSE_GUI_INDEX = 53; + private static final int BACK_BUTTON_INDEX = 45; + + private static final int XP_DEATH_INDEX = 37; + private static final int DEATH_ON_FALL_INDEX = 38; + private static final int DEATH_ON_SPRINT_INDEX = 39; + private static final int DEATH_ON_JUMP_INDEX = 40; + private static final int CLEANR_INV_BY_DAMAGE_INDEX = 41; + private static final int MLG_INDEX = 32; + private static final int RANDOM_DROP_INDEX = 8; + private static final int SHUFFLE_RANDOM_DROP_INDEX = 17; + private static final int TARGET_INDEX = 4; + private static final int SHARE_DMG_INDEX = 28; + private static final int LAVA_FLOOR_INDEX = 29; + private static final int CHUNK_RANDOM_EFFEKT_INDEX = 30; + + private static final int TIED_TOGETHER_INDEX = 16; + private static final int RANGE_ON_TIED_TOGETHER_ADD_INDEX = 7; + private static final int RANGE_ON_TIED_TOGETHER_REMOVE_INDEX = 25; + + private static final int DMG_ON_SNEAK_INDEX = 15; + private static final int DMG_ON_SNEAK_ADD_INDEX = 6; + private static final int DMG_ON_SNEAK_REMOVE_INDEX = 24; + + private static final int ICE_RUNNER_INDEX = 42; + private static final int RANDOM_MOB_INDEX = 43; + private static final int BEDROCK_WALL_INDEX = 31; + private static final int WORLD_BORDER_LEVEL_INDEX = 33; + private static final int ALL_ITEMS_INDEX = 34; + + public static void createSettingsGUI(Player p) { + if (plugin.getConfig().getBoolean("craftingtable")) { + SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatUtil.GREEN + "Werkbank aktiviert", true)); + } else { + SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatUtil.RED + "Werkbank deaktiviert")); + } + if (plugin.getConfig().getBoolean("allowtrading")) { + SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatUtil.GREEN + "Handeln aktiviert", true)); + } else { + SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatUtil.RED + "Handeln deaktiviert")); + } + if (plugin.getConfig().getBoolean("xpdeath")) { + SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.GREEN + "Sterben durch XP aktiviert", true, ChatUtil.GREEN + "Wenn ein Spieler XP einsammelt wird er sterben")); + } else { + SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.RED + "Sterben durch XP deaktiviert", ChatUtil.RED + "Wenn ein Spieler XP einsammelt wird er sterben")); + } + if (plugin.getConfig().getBoolean("deathonfall")) { + SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.GREEN + "Tod bei Fallschaden aktiviert", true)); + } else { + SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.RED + "Tod bei Fallschaden deaktiviert")); + } + if (plugin.getConfig().getBoolean("rnddrops")) { + SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.GREEN + "Zufällige Drops aktiviert", true)); + } else { + SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.RED + "Zufällige Drops deaktiviert")); + } + if (plugin.getConfig().getBoolean("deathonsprint")) { + SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.POTION, ChatUtil.GREEN + "Tod beim Sprinten aktiviert", true)); + } else { + SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.GLASS_BOTTLE, ChatUtil.RED + "Tod beim Sprinten deaktiviert")); + } + if (plugin.getConfig().getBoolean("deathonjump")) { + SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.GREEN + "Tod beim Springen aktiviert", true)); + } else { + SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.RED + "Tod beim Springen deaktiviert")); + } + if (plugin.getConfig().getBoolean("target")) { + SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.DRAGON_HEAD, ChatUtil.GREEN + "Ziel: Enderdrachen töten")); + } else { + SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.WITHER_SKELETON_SKULL, ChatUtil.GREEN + "Ziel: Wither töten")); + } + if (plugin.getConfig().getBoolean("clinvdmg")) { + SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.GREEN + "Alle Inventare löschen wenn ein Spieler Schaden bekommt aktiviert", true)); + } else { + SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Alle Inventare löschen wenn ein Spieler Schaden bekommt deaktiviert")); + } + if (plugin.getConfig().getBoolean("damageonsneak")) { + SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.GREEN + "Schaden beim Schleichen aktiviert", true, ChatUtil.GREEN + "Schaden beim Schleichen: " + plugin.getConfig().getDouble("sneakdmg"))); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); + + } else { + SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.RED + "Schaden beim Schleichen deaktiviert")); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, GUIUtils.EMPTY_ICON); + SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, GUIUtils.EMPTY_ICON); + } + if (plugin.getConfig().getBoolean("mlg.enabled")) { + SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.GREEN + "MLG aktiviert", true)); + } else { + SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.RED + "MLG deaktiviert")); + } + if (plugin.getConfig().getBoolean("sharedmg")) { + SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.GREEN + "Geteilter Schaden aktiviert", true)); + } else { + SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.RED + "Geteilter Schaden deaktiviert")); + } + if (plugin.getConfig().getBoolean("lavafloor")) { + SETTINGS_GUI.setItem(LAVA_FLOOR_INDEX, GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.GREEN + "Der Boden ist Lava aktiviert", true)); + } else { + SETTINGS_GUI.setItem(LAVA_FLOOR_INDEX, GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.RED + "Der Boden ist Lava deaktiviert")); + } + if (plugin.getConfig().getBoolean("randomeffect")) { + SETTINGS_GUI.setItem(CHUNK_RANDOM_EFFEKT_INDEX, GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.GREEN + "Chunk Random Effekt aktiviert", true)); + } else { + SETTINGS_GUI.setItem(CHUNK_RANDOM_EFFEKT_INDEX, GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.RED + "Chunk Random Effekt deaktiviert")); + } + if (plugin.getConfig().getBoolean("tiedtogether")) { + SETTINGS_GUI.setItem(TIED_TOGETHER_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.GREEN + "Zusammengebunden aktiviert", true, ChatUtil.GREEN + "Maximale Entfernung der Spieler: " + plugin.getConfig().getDouble("playerrange"))); + SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); + SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); + } else { + SETTINGS_GUI.setItem(TIED_TOGETHER_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Zusammengebunden deaktiviert")); + SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_ADD_INDEX, GUIUtils.EMPTY_ICON); + SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_REMOVE_INDEX, GUIUtils.EMPTY_ICON); + } + if (plugin.getConfig().getBoolean("icerunner")) { + SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.GREEN + "Ice-Runner aktiviert", true)); + } else { + SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.RED + "Ice-Runner deaktiviert")); + } + if (plugin.getConfig().getBoolean("randommobs")) { + SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.GREEN + "Random Mobs aktiviert", true)); + } else { + SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.RED + "Random Mobs deaktiviert")); + } + if (plugin.getConfig().getBoolean("bedrockwall")) { + SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.GREEN + "Bedrock Wand aktiviert", true)); + } else { + SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.RED + "Bedrock Wand deaktiviert")); + } + if (plugin.getConfig().getBoolean("worldborderlevel")) { + SETTINGS_GUI.setItem(WORLD_BORDER_LEVEL_INDEX, GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.GREEN + "World Border Level aktiviert", true)); + } else { + SETTINGS_GUI.setItem(WORLD_BORDER_LEVEL_INDEX, GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.RED + "World Border Level deaktiviert")); + } + if (plugin.getConfig().getBoolean("allitems")) { + SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.GREEN + "All Items aktiviert", true, ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!")); + } else { + SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.RED + "All Items deaktiviert", ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!")); + } + SETTINGS_GUI.setItem(SHUFFLE_RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatUtil.GREEN + "Zufällige Drops neu mischen")); + SETTINGS_GUI.setItem(CLOSE_GUI_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!")); + SETTINGS_GUI.setItem(BACK_BUTTON_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatUtil.GREEN + "Zurück")); + for (int i = 0; i < INVENTORY_SIZE; i++) { + if (SETTINGS_GUI.getItem(i) == null || SETTINGS_GUI.getItem(i).getType() == Material.AIR) { + SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); + } + } + p.openInventory(SETTINGS_GUI); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e) { + if (e.getInventory() == SETTINGS_GUI) { + int slot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + switch (slot) { + case CRAFTING_TABLE_INDEX: + if (plugin.getConfig().getBoolean("craftingtable")) { + GUIUtils.setConfig("craftingtable", false); + GUIUtils.sendTitleToAll("Challenge", "Werkbank deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("craftingtable", true); + GUIUtils.sendTitleToAll("Challenge", "Werkbank aktiviert", ChatUtil.GREEN); + } + break; + + case TRADING_INDEX: + if (plugin.getConfig().getBoolean("allowtrading")) { + GUIUtils.setConfig("allowtrading", false); + GUIUtils.sendTitleToAll("Challenge", "Handeln deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("allowtrading", true); + GUIUtils.sendTitleToAll("Challenge", "Handeln aktiviert", ChatUtil.GREEN); + } + break; + case XP_DEATH_INDEX: + if (plugin.getConfig().getBoolean("xpdeath")) { + GUIUtils.setConfig("xpdeath", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("xpdeath", true); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP aktiviert", ChatUtil.GREEN); + } + break; + case DEATH_ON_FALL_INDEX: + if (plugin.getConfig().getBoolean("deathonfall")) { + GUIUtils.setConfig("deathonfall", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("deathonfall", true); + } + break; + case RANDOM_DROP_INDEX: + if (plugin.getConfig().getBoolean("rnddrops")) { + GUIUtils.setConfig("rnddrops", false); + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("rnddrops", true); + } + break; + case SHUFFLE_RANDOM_DROP_INDEX: + plugin.rndDrops.shuffleItems(); + plugin.rndDrops.saveItems(); + GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops neu gemischt!", ChatUtil.GREEN); + break; + case DEATH_ON_SPRINT_INDEX: + if (plugin.getConfig().getBoolean("deathonsprint")) { + GUIUtils.setConfig("deathonsprint", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("deathonsprint", true); + } + break; + case DEATH_ON_JUMP_INDEX: + if (plugin.getConfig().getBoolean("deathonjump")) { + GUIUtils.setConfig("deathonjump", false); + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("deathonjump", true); + } + break; + case TARGET_INDEX: + if (plugin.getConfig().getBoolean("target")) { + GUIUtils.setConfig("target", false); + GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Wither", ChatUtil.GREEN); + } else { + GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Enderdrachen", ChatUtil.GREEN); + GUIUtils.setConfig("target", true); + } + break; + case CLEANR_INV_BY_DAMAGE_INDEX: + if (plugin.getConfig().getBoolean("clinvdmg")) { + GUIUtils.setConfig("clinvdmg", false); + GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("clinvdmg", true); + } + break; + case DMG_ON_SNEAK_INDEX: + if (plugin.getConfig().getBoolean("damageonsneak")) { + GUIUtils.setConfig("damageonsneak", false); + GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("damageonsneak", true); + } + break; + case MLG_INDEX: + if (plugin.getConfig().getBoolean("mlg.enabled")) { + GUIUtils.setConfig("mlg.enabled", false); + GUIUtils.sendTitleToAll("Challenge", "MLG deaktiviert", ChatUtil.RED); + } else { + GUIUtils.sendTitleToAll("Challenge", "MLG aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("mlg.enabled", true); + } + break; + case DMG_ON_SNEAK_ADD_INDEX: + GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") + 0.5); + break; + case DMG_ON_SNEAK_REMOVE_INDEX: + if (plugin.getConfig().getDouble("sneakdmg") > 0) { + GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") - 0.5); + } + break; + case SHARE_DMG_INDEX: + if (plugin.getConfig().getBoolean("sharedmg")) { + GUIUtils.setConfig("sharedmg", false); + GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("sharedmg", true); + GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden aktiviert", ChatUtil.GREEN); + } + break; + case LAVA_FLOOR_INDEX: + if (plugin.getConfig().getBoolean("lavafloor")) { + GUIUtils.setConfig("lavafloor", false); + GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("lavafloor", true); + GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava aktiviert", ChatUtil.GREEN); + } + break; + case CHUNK_RANDOM_EFFEKT_INDEX: + if (plugin.getConfig().getBoolean("randomeffect")) { + GUIUtils.setConfig("randomeffect", false); + GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("randomeffect", true); + GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt aktiviert", ChatUtil.GREEN); + } + break; + case TIED_TOGETHER_INDEX: + if (plugin.getConfig().getBoolean("tiedtogether")) { + GUIUtils.setConfig("tiedtogether", false); + GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("tiedtogether", true); + GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden aktiviert", ChatUtil.GREEN); + } + break; + case RANGE_ON_TIED_TOGETHER_ADD_INDEX: + GUIUtils.setConfig("playerrange", plugin.getConfig().getDouble("playerrange") + 1); + break; + case RANGE_ON_TIED_TOGETHER_REMOVE_INDEX: + if (plugin.getConfig().getDouble("playerrange") > 0) { + GUIUtils.setConfig("playerrange", plugin.getConfig().getDouble("playerrange") - 1); + } + break; + case ICE_RUNNER_INDEX: + if (plugin.getConfig().getBoolean("icerunner")) { + GUIUtils.setConfig("icerunner", false); + GUIUtils.sendTitleToAll("Challenge", "Ice-Runner deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("icerunner", true); + GUIUtils.sendTitleToAll("Challenge", "Ice-Runner aktiviert", ChatUtil.GREEN); + } + break; + case RANDOM_MOB_INDEX: + if (plugin.getConfig().getBoolean("randommobs")) { + GUIUtils.setConfig("randommobs", false); + GUIUtils.sendTitleToAll("Challenge", "Random Mobs deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("randommobs", true); + GUIUtils.sendTitleToAll("Challenge", "Random Mobs aktiviert", ChatUtil.GREEN); + } + break; + case BEDROCK_WALL_INDEX: + if (plugin.getConfig().getBoolean("bedrockwall")) { + GUIUtils.setConfig("bedrockwall", false); + GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("bedrockwall", true); + GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand aktiviert", ChatUtil.GREEN); + } + break; + case WORLD_BORDER_LEVEL_INDEX: + if (plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class) == null) { + return; + } + RegisteredServiceProvider worldBorderAPI = plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class); + if (worldBorderAPI == null) { + return; + } + if (plugin.getConfig().getBoolean("worldborderlevel")) { + GUIUtils.setConfig("worldborderlevel", false); + for (Player pp : Bukkit.getOnlinePlayers()) { + worldBorderAPI.getProvider().resetWorldBorderToGlobal(pp); + } + GUIUtils.sendTitleToAll("Challenge", "World Border Level deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("worldborderlevel", true); + for (Player pp : Bukkit.getOnlinePlayers()) { + worldBorderAPI.getProvider().setBorder(pp, 1, plugin.getServer().getWorld("world").getSpawnLocation()); + } + + for (Player pp : Bukkit.getOnlinePlayers()) { + pp.teleport(pp.getWorld().getSpawnLocation()); + } + GUIUtils.sendTitleToAll("Challenge", "World Border Level aktiviert", ChatUtil.GREEN); + } + break; + case ALL_ITEMS_INDEX: + if (plugin.getConfig().getBoolean("allitems")) { + GUIUtils.setConfig("allitems", false); + GUIUtils.sendTitleToAll("Challenge", "All Items deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("allitems", true); + GUIUtils.sendTitleToAll("Challenge", "All Items aktiviert", ChatUtil.GREEN); + AllItemsChallenge.start(); + } + break; + default: + break; + } + createSettingsGUI(p); + switch (slot) { + case CLOSE_GUI_INDEX -> p.closeInventory(); + case BACK_BUTTON_INDEX -> new MainGui(p).open(); + } + e.setCancelled(true); + } + } +}*/ \ No newline at end of file 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 439b7ce..916ae80 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/MainGui.java @@ -2,17 +2,76 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.AbstractWindow; import de.fanta.challenges.utils.guiutils.GUIUtils; -import net.md_5.bungee.api.ChatColor; +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 org.bukkit.inventory.meta.ItemMeta; -public class MainGui implements Listener { +public class MainGui extends AbstractWindow { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int WINDOW_SIZE = 27; + + private static final int CLOSE_IDEX = 8; + private static final int CHALLENGES_INDEX = 10; + private static final int OTHER_SETTINGS_INDEX = 13; + private static final int SERVER_SETTINGS_INDEX = 16; + + public MainGui(Player player) { + super(player, Bukkit.createInventory(null, WINDOW_SIZE, plugin.getGUIPREFIX() + " >> Settings")); + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + Player player = getPlayer(); + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + int slot = event.getSlot(); + switch (slot) { + case CHALLENGES_INDEX -> new ChallengesGui(player).open(); + case OTHER_SETTINGS_INDEX -> new OtherSettingsGui(player).open(); + case SERVER_SETTINGS_INDEX -> new ServerSettingsGui(player).open(); + case CLOSE_IDEX -> player.closeInventory(); + default -> { + } + } + } + + @Override + protected void rebuildInventory() { + for (int i = 0; i < WINDOW_SIZE; i++) { + ItemStack item; + switch (i) { + case CHALLENGES_INDEX -> item = GUIUtils.createGuiItem(Material.REPEATER, ChatUtil.GREEN + "Challenges"); + case OTHER_SETTINGS_INDEX -> 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); + } + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } +} + +/*public class MainGui implements Listener { private static final Challenges plugin = Challenges.getPlugin(); @@ -51,5 +110,4 @@ e.setCancelled(true); } } -} - +}*/ \ 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 f849698..725a0b4 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/OtherSettingsGui.java @@ -2,17 +2,209 @@ import de.fanta.challenges.Challenges; 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.EventHandler; -import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; -public class OtherSettingsGui implements Listener { +public class OtherSettingsGui extends AbstractWindow { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 45; + + private static final int BACK_INDEX = 7; + private static final int CLOSE_IDEX = 8; + + private static final int VILLAGER_TRADE_LIMITS_INDEX = 19; + private static final int DAMAGE_IN_CHAT_INDEX = 20; + private static final int TELEPORT_COMMAND_INDEX = 21; + private static final int HP_ON_TAB_INDEX = 22; + private static final int SMELT_ORES_ON_BREAK_INDEX = 23; + private static final int FAST_FURNACE_INDEX = 24; //TODO: SPEED SETTING + private static final int BACKPACK_INDEX = 25; + + private static final int GRAVESTONE_INDEX = 28; + + public OtherSettingsGui(Player player) { + super(player, Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Other Settings")); + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + Player player = getPlayer(); + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + int slot = event.getSlot(); + switch (slot) { + case BACK_INDEX -> getParent().open(); + case CLOSE_IDEX -> player.closeInventory(); + + case VILLAGER_TRADE_LIMITS_INDEX -> { + if (plugin.getConfig().getBoolean("disablevillagertradelimits")) { + GUIUtils.sendTitleToAll("Einstellungen", "Villager Trade Limits aktiviert", ChatUtil.RED); + GUIUtils.setConfig("disablevillagertradelimits", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Villager Trade Limits deaktiviert (Default)", ChatUtil.GREEN); + GUIUtils.setConfig("disablevillagertradelimits", true); + } + } + case DAMAGE_IN_CHAT_INDEX -> { + if (plugin.getConfig().getBoolean("dmginchat")) { + GUIUtils.sendTitleToAll("Einstellungen", "Schaden im Chat anzeigen deaktiviert", ChatUtil.RED); + GUIUtils.setConfig("dmginchat", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Schaden im Chat anzeigen aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("dmginchat", true); + } + } + case TELEPORT_COMMAND_INDEX -> { + if (plugin.getConfig().getBoolean("teleportcommand")) { + GUIUtils.sendTitleToAll("Einstellungen", "Teleport Command deaktiviert", ChatUtil.RED); + GUIUtils.setConfig("teleportcommand", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Teleport Command aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("teleportcommand", true); + } + } + case HP_ON_TAB_INDEX -> { + if (plugin.getConfig().getBoolean("tabhp")) { + GUIUtils.sendTitleToAll("Einstellungen", "Herzen in der Tablist anzeigen deaktiviert", ChatUtil.RED); + GUIUtils.setConfig("tabhp", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Herzen in der Tablist anzeigen aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("tabhp", true); + } + } + case SMELT_ORES_ON_BREAK_INDEX -> { + if (plugin.getConfig().getBoolean("silkore")) { + GUIUtils.sendTitleToAll("Einstellungen", "Abgebaute Erze droppen Barren deaktiviert", ChatUtil.RED); + GUIUtils.setConfig("silkore", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Abgebaute Erze droppen Barren aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("silkore", true); + } + } + case FAST_FURNACE_INDEX -> { + if (plugin.getConfig().getBoolean("speedfurnace")) { + GUIUtils.sendTitleToAll("Einstellungen", "Schneller Ofen deaktiviert", ChatUtil.RED); + GUIUtils.setConfig("speedfurnace", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Schneller Ofen aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("speedfurnace", true); + } + } + case BACKPACK_INDEX -> { + if (event.isRightClick()) { + //TODO: INV ÖFFNEN + } + } + + case GRAVESTONE_INDEX -> { + if (plugin.getConfig().getBoolean("gravestone")) { + GUIUtils.sendTitleToAll("Einstellungen", "Grabsteine deaktiviert", ChatUtil.RED); + GUIUtils.setConfig("gravestone", false); + } else { + GUIUtils.sendTitleToAll("Einstellungen", "Grabsteine aktiviert", ChatUtil.GREEN); + GUIUtils.setConfig("gravestone", true); + } + } + default -> { + } + } + } + + @Override + protected void rebuildInventory() { + 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 VILLAGER_TRADE_LIMITS_INDEX -> { + if (plugin.getConfig().getBoolean("disablevillagertradelimits")) { + item = GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.GREEN + "Villager Trade Limits aktiviert ", true); + } else { + item = GUIUtils.createGuiItem(Material.EMERALD, ChatUtil.RED + "Villager Trade Limits deaktiviert (Default)"); + } + } + case DAMAGE_IN_CHAT_INDEX -> { + if (plugin.getConfig().getBoolean("dmginchat")) { + item = GUIUtils.createGuiItem(Material.PAPER, ChatUtil.GREEN + "Schaden im Chat anzeigen aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.PAPER, ChatUtil.RED + "Schaden im Chat anzeigen deaktiviert"); + } + } + case TELEPORT_COMMAND_INDEX -> { + if (plugin.getConfig().getBoolean("teleportcommand")) { + item = GUIUtils.createGuiItem(Material.ENDER_PEARL, ChatUtil.GREEN + "Teleport Command aktiviert", true, ChatUtil.GREEN + "Deaktiviert den \"/challenges tp\" command"); + } else { + item = GUIUtils.createGuiItem(Material.ENDER_PEARL, ChatUtil.RED + "Teleport Command deaktiviert", ChatUtil.RED + "Aktiviert den \"/challenges tp\" command"); + } + } + case HP_ON_TAB_INDEX -> { + if (plugin.getConfig().getBoolean("tabhp")) { + item = GUIUtils.createGuiItem(Material.HEART_OF_THE_SEA, ChatUtil.GREEN + "Herzen in der Tablist anzeigen aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.HEART_OF_THE_SEA, ChatUtil.RED + "Herzen in der Tablist anzeigen deaktiviert"); + } + } + case SMELT_ORES_ON_BREAK_INDEX -> { + if (plugin.getConfig().getBoolean("silkore")) { + item = GUIUtils.createGuiItem(Material.IRON_INGOT, ChatUtil.GREEN + "Abgebaute Erze droppen Barren aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.IRON_INGOT, ChatUtil.RED + "Abgebaute Erze droppen Barren deaktiviert"); + } + } + case FAST_FURNACE_INDEX -> { + if (plugin.getConfig().getBoolean("speedfurnace")) { + item = GUIUtils.createGuiItem(Material.FURNACE, ChatUtil.GREEN + "Schneller Ofen aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.FURNACE, ChatUtil.RED + "Schneller Ofen deaktiviert"); + } + } + case BACKPACK_INDEX -> item = GUIUtils.createGuiItem(Material.BUNDLE, ChatUtil.GREEN + "Rucksack Größe: " + plugin.getBackpack().getSize() / 9 + "/6", ChatUtil.GREEN + "Rechtsklick zum Bearbeiten"); + + case GRAVESTONE_INDEX -> { + if (plugin.getConfig().getBoolean("gravestone")) { + item = GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.GREEN + "Grabstein aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.HOPPER, ChatUtil.RED + "Grabstein deaktiviert"); + } + } + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } +} + + + +/*public class OtherSettingsGui implements Listener { public static final int INVENTORY_SIZE = 36; private static final Challenges plugin = Challenges.getPlugin(); @@ -173,10 +365,10 @@ } createOtherSettingsGUI(p); switch (slot) { - case BACK_INDEX -> MainGui.createMainGUI(p); + 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 d168521..d98a787 100644 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java +++ b/src/main/java/de/fanta/challenges/guis/settingsgui/ServerSettingsGui.java @@ -2,19 +2,210 @@ import de.fanta.challenges.Challenges; import de.fanta.challenges.utils.ChatUtil; +import de.fanta.challenges.utils.guiutils.AbstractWindow; import de.fanta.challenges.utils.guiutils.GUIUtils; -import net.md_5.bungee.api.ChatColor; +import de.iani.cubesideutils.bukkit.items.CustomHeads; import org.bukkit.Bukkit; import org.bukkit.Difficulty; -import org.bukkit.GameRule; 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 org.bukkit.inventory.meta.ItemMeta; -public class ServerSettingsGui implements Listener { +public class ServerSettingsGui extends AbstractWindow { + + private static final Challenges plugin = Challenges.getPlugin(); + + public static final int INVENTORY_SIZE = 36; + + private static final int BACK_INDEX = 7; + private static final int CLOSE_IDEX = 8; + + private static final int DIFFICULTY_INDEX = 19; + private static final int KEEP_INVENTORY_INDEX = 20; + private static final int NATURAL_REGENERATION_INDEX = 21; + private static final int ULTRA_HARDCORE_INDEX = 22; + private static final int ONE_LIFE_INDEX = 23; + private static final int RESPAWN_INDEX = 24; + private static final int PVP_INDEX = 25; + + public ServerSettingsGui(Player player) { + super(player, Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Server Settings")); + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + Player player = getPlayer(); + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + int slot = event.getSlot(); + switch (slot) { + case BACK_INDEX -> getParent().open(); + case CLOSE_IDEX -> player.closeInventory(); + + case DIFFICULTY_INDEX -> { + if (plugin.getDifficulty() == Difficulty.EASY) { + plugin.setDifficulty(Difficulty.NORMAL); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Mittel", ChatUtil.ORANGE); + } else if (plugin.getDifficulty() == Difficulty.NORMAL) { + plugin.setDifficulty(Difficulty.HARD); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Schwer", ChatUtil.RED); + } else if (plugin.getDifficulty() == Difficulty.HARD) { + plugin.setDifficulty(Difficulty.PEACEFUL); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Friedlich", ChatUtil.GREEN); + } else if (plugin.getDifficulty() == Difficulty.PEACEFUL) { + plugin.setDifficulty(Difficulty.EASY); + GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Leicht", ChatUtil.BLUE); + } + } + case KEEP_INVENTORY_INDEX -> { + if (plugin.getKeepInventory()) { + plugin.setKeepInventory(false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory deaktiviert", ChatUtil.RED); + } else { + plugin.setKeepInventory(true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory aktiviert", ChatUtil.GREEN); + } + } + case NATURAL_REGENERATION_INDEX -> { + if (plugin.getNaturalRegeneration()) { + plugin.setNaturalRegeneration(false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration aktiviert", ChatUtil.GREEN); + } else { + plugin.setNaturalRegeneration(true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration deaktiviert", ChatUtil.RED); + } + } + case ULTRA_HARDCORE_INDEX -> { + if (plugin.getConfig().getBoolean("ultrahardcore")) { + GUIUtils.setConfig("ultrahardcore", false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Ultra Hardcore deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("ultrahardcore", true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Ultra Hardcore aktiviert", ChatUtil.GREEN); + } + } + case ONE_LIFE_INDEX -> { + if (plugin.getConfig().getBoolean("onelife")) { + GUIUtils.setConfig("onelife", false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Ein Leben für alle deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("onelife", true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Ein Leben für alle aktiviert", ChatUtil.GREEN); + } + } + case RESPAWN_INDEX -> { + if (plugin.getConfig().getBoolean("respawn")) { + GUIUtils.setConfig("respawn", false); + GUIUtils.sendTitleToAll("Server Einstellungen", "Wiederbeleben deaktiviert", ChatUtil.RED); + } else { + GUIUtils.setConfig("respawn", true); + GUIUtils.sendTitleToAll("Server Einstellungen", "Wiederbeleben aktiviert", ChatUtil.GREEN); + } + } + case PVP_INDEX -> { + if (plugin.getPvP()) { + plugin.setPvP(false); + GUIUtils.setConfig("pvp", false); + GUIUtils.sendTitleToAll("Server Einstellungen", "PVP deaktiviert", ChatUtil.RED); + } else { + plugin.setPvP(true); + GUIUtils.setConfig("pvp", true); + GUIUtils.sendTitleToAll("Server Einstellungen", "PVP aktiviert", ChatUtil.GREEN); + } + } + default -> { + } + } + } + + @Override + protected void rebuildInventory() { + 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 DIFFICULTY_INDEX -> { + if (plugin.getDifficulty() == Difficulty.EASY) { + item = GUIUtils.createGuiItem(Material.IRON_SWORD, ChatUtil.BLUE + "Schwierigkeitsgrad Leicht"); + } else if (plugin.getDifficulty() == Difficulty.NORMAL) { + item = GUIUtils.createGuiItem(Material.DIAMOND_SWORD, ChatUtil.ORANGE + "Schwierigkeitsgrad Mittel"); + } else if (plugin.getDifficulty() == Difficulty.HARD) { + item = GUIUtils.createGuiItem(Material.NETHERITE_SWORD, ChatUtil.RED + "Schwierigkeitsgrad Schwer"); + } else { + item = GUIUtils.createGuiItem(Material.POPPY, ChatUtil.GREEN + "Schwierigkeitsgrad Friedlich"); + } + } + case KEEP_INVENTORY_INDEX -> { + if (plugin.getKeepInventory()) { + item = GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatUtil.GREEN + "Keep Inventory aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatUtil.RED + "Keep Inventory deaktiviert"); + } + } + case NATURAL_REGENERATION_INDEX -> { + if (plugin.getNaturalRegeneration()) { + item = GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatUtil.GREEN + "Natürliche Regeneration aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatUtil.RED + "Natürliche Regeneration deaktiviert"); + } + } + case ULTRA_HARDCORE_INDEX -> { + if (plugin.getConfig().getBoolean("ultrahardcore")) { + item = GUIUtils.createGuiItem(Material.SUSPICIOUS_STEW, ChatUtil.GREEN + "Ultra Hardcore aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.SUSPICIOUS_STEW, ChatUtil.RED + "Ultra Hardcore deaktiviert"); + } + } + case ONE_LIFE_INDEX -> { + if (plugin.getConfig().getBoolean("onelife")) { + item = GUIUtils.createGuiItem(Material.SUNFLOWER, ChatUtil.GREEN + "Ein Leben für alle aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.SUNFLOWER, ChatUtil.RED + "Ein Leben für alle deaktiviert"); + } + } + case RESPAWN_INDEX -> { + if (plugin.getConfig().getBoolean("respawn")) { + item = GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatUtil.GREEN + "Wiederbeleben aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.TOTEM_OF_UNDYING, ChatUtil.RED + "Wiederbeleben deaktiviert"); + } + } + case PVP_INDEX -> { + if (plugin.getServer().getWorld("world").getPVP()) { + item = GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatUtil.GREEN + "PVP aktiviert", true); + } else { + item = GUIUtils.createGuiItem(Material.WOODEN_SWORD, ChatUtil.RED + "PVP deaktiviert"); + } + } + default -> item = GUIUtils.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } +} + +/*public class ServerSettingsGui implements Listener { private static final Challenges plugin = Challenges.getPlugin(); @@ -32,13 +223,13 @@ private static final int RESPAWN_INDEX = 15; public static void createServerSettingsGUI(Player p) { - if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.EASY) { + if (plugin.getDifficulty() == Difficulty.EASY) { SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.IRON_SWORD, ChatUtil.BLUE + "Schwierigkeitsgrad Leicht")); - } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.NORMAL) { + } else if (plugin.getDifficulty() == Difficulty.NORMAL) { SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_SWORD, ChatUtil.ORANGE + "Schwierigkeitsgrad Mittel")); - } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.HARD) { + } else if (plugin.getDifficulty() == Difficulty.HARD) { SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_SWORD, ChatUtil.RED + "Schwierigkeitsgrad Schwer")); - } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.PEACEFUL) { + } else if (plugin.getDifficulty() == Difficulty.PEACEFUL) { SERVER_SETTINGS_GUI.setItem(DIFFICULTY_INDEX, GUIUtils.createGuiItem(Material.POPPY, ChatUtil.GREEN + "Schwierigkeitsgrad Friedlich")); } if (plugin.getServer().getWorld("world").getPVP()) { @@ -61,12 +252,12 @@ } else { SERVER_SETTINGS_GUI.setItem(ULTRA_HARDCORE_INDEX, GUIUtils.createGuiItem(Material.SUSPICIOUS_STEW, ChatUtil.RED + "Ultra Hardcore deaktiviert")); } - if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.KEEP_INVENTORY)) { + if (plugin.getKeepInventory()) { SERVER_SETTINGS_GUI.setItem(KEEP_INVENTORY_INDEX, GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatUtil.GREEN + "Keep Inventory aktiviert", true)); } else { SERVER_SETTINGS_GUI.setItem(KEEP_INVENTORY_INDEX, GUIUtils.createGuiItem(Material.CHEST_MINECART,ChatUtil.RED + "Keep Inventory deaktiviert")); } - if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.NATURAL_REGENERATION)) { + if (plugin.getNaturalRegeneration()) { SERVER_SETTINGS_GUI.setItem(NATURAL_REGENERATION_INDEX, GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatUtil.GREEN + "Natürliche Regeneration aktiviert", true)); } else { SERVER_SETTINGS_GUI.setItem(NATURAL_REGENERATION_INDEX, GUIUtils.createGuiItem(Material.GOLDEN_APPLE,ChatUtil.RED + "Natürliche Regeneration deaktiviert")); @@ -89,30 +280,22 @@ Player p = (Player) e.getWhoClicked(); switch (slot) { case DIFFICULTY_INDEX: - if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.EASY) { - plugin.getServer().getWorld("world").setDifficulty(Difficulty.NORMAL); - plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.NORMAL); - plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.NORMAL); + if (plugin.getDifficulty() == Difficulty.EASY) { + plugin.setDifficulty(Difficulty.NORMAL); GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Mittel", ChatUtil.ORANGE); - } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.NORMAL) { - plugin.getServer().getWorld("world").setDifficulty(Difficulty.HARD); - plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.HARD); - plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.HARD); + } else if (plugin.getDifficulty() == Difficulty.NORMAL) { + plugin.setDifficulty(Difficulty.HARD); GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Schwer", ChatUtil.RED); - } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.HARD) { - plugin.getServer().getWorld("world").setDifficulty(Difficulty.PEACEFUL); - plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.PEACEFUL); - plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.PEACEFUL); + } else if (plugin.getDifficulty() == Difficulty.HARD) { + plugin.setDifficulty(Difficulty.PEACEFUL); GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Friedlich", ChatUtil.GREEN); - } else if (plugin.getServer().getWorld("world").getDifficulty() == Difficulty.PEACEFUL) { - plugin.getServer().getWorld("world").setDifficulty(Difficulty.EASY); - plugin.getServer().getWorld("world_nether").setDifficulty(Difficulty.EASY); - plugin.getServer().getWorld("world_the_end").setDifficulty(Difficulty.EASY); + } else if (plugin.getDifficulty() == Difficulty.PEACEFUL) { + plugin.setDifficulty(Difficulty.EASY); GUIUtils.sendTitleToAll("Server Einstellungen", "Schwierigkeitsgrad Leicht", ChatUtil.BLUE); } break; case PVP_INDEX: - if (plugin.getServer().getWorld("world").getPVP()) { + if (plugin.getPvP()) { plugin.setPvP(false); GUIUtils.setConfig("pvp", false); GUIUtils.sendTitleToAll("Server Einstellungen", "PVP deaktiviert", ChatUtil.RED); @@ -150,28 +333,20 @@ } break; case KEEP_INVENTORY_INDEX: - if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.KEEP_INVENTORY)) { - plugin.getServer().getWorld("world").setGameRule(GameRule.KEEP_INVENTORY, false); - plugin.getServer().getWorld("world_nether").setGameRule(GameRule.KEEP_INVENTORY, false); - plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.KEEP_INVENTORY, false); + if (plugin.getKeepInventory()) { + plugin.setKeepInventory(false); GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory deaktiviert", ChatUtil.RED); } else { - plugin.getServer().getWorld("world").setGameRule(GameRule.KEEP_INVENTORY, true); - plugin.getServer().getWorld("world_nether").setGameRule(GameRule.KEEP_INVENTORY, true); - plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.KEEP_INVENTORY, true); + plugin.setKeepInventory(true); GUIUtils.sendTitleToAll("Server Einstellungen", "Keep Inventory aktiviert", ChatUtil.GREEN); } break; case NATURAL_REGENERATION_INDEX: - if (plugin.getServer().getWorld("world").getGameRuleValue(GameRule.NATURAL_REGENERATION)) { - plugin.getServer().getWorld("world").setGameRule(GameRule.NATURAL_REGENERATION, false); - plugin.getServer().getWorld("world_nether").setGameRule(GameRule.NATURAL_REGENERATION, false); - plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.NATURAL_REGENERATION, false); + if (plugin.getNaturalRegeneration()) { + plugin.setNaturalRegeneration(false); GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration aktiviert", ChatUtil.GREEN); } else { - plugin.getServer().getWorld("world").setGameRule(GameRule.NATURAL_REGENERATION, true); - plugin.getServer().getWorld("world_nether").setGameRule(GameRule.NATURAL_REGENERATION, true); - plugin.getServer().getWorld("world_the_end").setGameRule(GameRule.NATURAL_REGENERATION, true); + plugin.setNaturalRegeneration(true); GUIUtils.sendTitleToAll("Server Einstellungen", "Natürliche Regeneration deaktiviert", ChatUtil.RED); } break; @@ -179,10 +354,11 @@ createServerSettingsGUI(p); switch (slot) { - case BACK_INDEX -> MainGui.createMainGUI(p); + case BACK_INDEX -> new MainGui(p).open(); case CLOSE_INDEX -> p.closeInventory(); } e.setCancelled(true); } } } +*/ \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java b/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java deleted file mode 100644 index f1d2ad5..0000000 --- a/src/main/java/de/fanta/challenges/guis/settingsgui/SettingsGui.java +++ /dev/null @@ -1,415 +0,0 @@ -package de.fanta.challenges.guis.settingsgui; - -import com.github.yannicklamprecht.worldborder.api.WorldBorderApi; -import de.fanta.challenges.Challenges; -import de.fanta.challenges.challenges.AllItemsChallenge; -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.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.plugin.RegisteredServiceProvider; - -public class SettingsGui implements Listener { - - public static final int INVENTORY_SIZE = 54; - private static final Challenges plugin = Challenges.getPlugin(); - public static final Inventory SETTINGS_GUI = Bukkit.createInventory(null, INVENTORY_SIZE, plugin.getGUIPREFIX() + " >> Challenges"); - - private static final int CRAFTING_TABLE_INDEX = 0; - private static final int TRADING_INDEX = 9; - - private static final int CLOSE_GUI_INDEX = 53; - private static final int BACK_BUTTON_INDEX = 45; - - private static final int XP_DEATH_INDEX = 37; - private static final int DEATH_ON_FALL_INDEX = 38; - private static final int DEATH_ON_SPRINT_INDEX = 39; - private static final int DEATH_ON_JUMP_INDEX = 40; - private static final int CLEANR_INV_BY_DAMAGE_INDEX = 41; - private static final int MLG_INDEX = 32; - private static final int RANDOM_DROP_INDEX = 8; - private static final int SHUFFLE_RANDOM_DROP_INDEX = 17; - private static final int TARGET_INDEX = 4; - private static final int SHARE_DMG_INDEX = 28; - private static final int LAVA_FLOOR_INDEX = 29; - private static final int CHUNK_RANDOM_EFFEKT_INDEX = 30; - - private static final int TIED_TOGETHER_INDEX = 16; - private static final int RANGE_ON_TIED_TOGETHER_ADD_INDEX = 7; - private static final int RANGE_ON_TIED_TOGETHER_REMOVE_INDEX = 25; - - private static final int DMG_ON_SNEAK_INDEX = 15; - private static final int DMG_ON_SNEAK_ADD_INDEX = 6; - private static final int DMG_ON_SNEAK_REMOVE_INDEX = 24; - - private static final int ICE_RUNNER_INDEX = 42; - private static final int RANDOM_MOB_INDEX = 43; - private static final int BEDROCK_WALL_INDEX = 31; - private static final int WORLD_BORDER_LEVEL_INDEX = 33; - private static final int ALL_ITEMS_INDEX = 34; - - public static void createSettingsGUI(Player p) { - if (plugin.getConfig().getBoolean("craftingtable")) { - SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatUtil.GREEN + "Werkbank aktiviert", true)); - } else { - SETTINGS_GUI.setItem(CRAFTING_TABLE_INDEX, GUIUtils.createGuiItem(Material.CRAFTING_TABLE, ChatUtil.RED + "Werkbank deaktiviert")); - } - if (plugin.getConfig().getBoolean("allowtrading")) { - SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatUtil.GREEN + "Handeln aktiviert", true)); - } else { - SETTINGS_GUI.setItem(TRADING_INDEX, GUIUtils.createGuiItem(Material.VILLAGER_SPAWN_EGG, ChatUtil.RED + "Handeln deaktiviert")); - } - if (plugin.getConfig().getBoolean("xpdeath")) { - SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.GREEN + "Sterben durch XP aktiviert", true, ChatUtil.GREEN + "Wenn ein Spieler XP einsammelt wird er sterben")); - } else { - SETTINGS_GUI.setItem(XP_DEATH_INDEX, GUIUtils.createGuiItem(Material.ENCHANTING_TABLE, ChatUtil.RED + "Sterben durch XP deaktiviert", ChatUtil.RED + "Wenn ein Spieler XP einsammelt wird er sterben")); - } - if (plugin.getConfig().getBoolean("deathonfall")) { - SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.GREEN + "Tod bei Fallschaden aktiviert", true)); - } else { - SETTINGS_GUI.setItem(DEATH_ON_FALL_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_BOOTS, ChatUtil.RED + "Tod bei Fallschaden deaktiviert")); - } - if (plugin.getConfig().getBoolean("rnddrops")) { - SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.GREEN + "Zufällige Drops aktiviert", true)); - } else { - SETTINGS_GUI.setItem(RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.NETHERITE_PICKAXE, ChatUtil.RED + "Zufällige Drops deaktiviert")); - } - if (plugin.getConfig().getBoolean("deathonsprint")) { - SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.POTION, ChatUtil.GREEN + "Tod beim Sprinten aktiviert", true)); - } else { - SETTINGS_GUI.setItem(DEATH_ON_SPRINT_INDEX, GUIUtils.createGuiItem(Material.GLASS_BOTTLE, ChatUtil.RED + "Tod beim Sprinten deaktiviert")); - } - if (plugin.getConfig().getBoolean("deathonjump")) { - SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.GREEN + "Tod beim Springen aktiviert", true)); - } else { - SETTINGS_GUI.setItem(DEATH_ON_JUMP_INDEX, GUIUtils.createGuiItem(Material.RABBIT_FOOT, ChatUtil.RED + "Tod beim Springen deaktiviert")); - } - if (plugin.getConfig().getBoolean("target")) { - SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.DRAGON_HEAD, ChatUtil.GREEN + "Ziel: Enderdrachen töten")); - } else { - SETTINGS_GUI.setItem(TARGET_INDEX, GUIUtils.createGuiItem(Material.WITHER_SKELETON_SKULL, ChatUtil.GREEN + "Ziel: Wither töten")); - } - if (plugin.getConfig().getBoolean("clinvdmg")) { - SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.GREEN + "Alle Inventare löschen wenn ein Spieler Schaden bekommt aktiviert", true)); - } else { - SETTINGS_GUI.setItem(CLEANR_INV_BY_DAMAGE_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Alle Inventare löschen wenn ein Spieler Schaden bekommt deaktiviert")); - } - if (plugin.getConfig().getBoolean("damageonsneak")) { - SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.GREEN + "Schaden beim Schleichen aktiviert", true, ChatUtil.GREEN + "Schaden beim Schleichen: " + plugin.getConfig().getDouble("sneakdmg"))); - SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); - SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); - - } else { - SETTINGS_GUI.setItem(DMG_ON_SNEAK_INDEX, GUIUtils.createGuiItem(Material.SMOOTH_STONE_SLAB, ChatUtil.RED + "Schaden beim Schleichen deaktiviert")); - SETTINGS_GUI.setItem(DMG_ON_SNEAK_ADD_INDEX, GUIUtils.EMPTY_ICON); - SETTINGS_GUI.setItem(DMG_ON_SNEAK_REMOVE_INDEX, GUIUtils.EMPTY_ICON); - } - if (plugin.getConfig().getBoolean("mlg.enabled")) { - SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.GREEN + "MLG aktiviert", true)); - } else { - SETTINGS_GUI.setItem(MLG_INDEX, GUIUtils.createGuiItem(Material.WATER_BUCKET, ChatUtil.RED + "MLG deaktiviert")); - } - if (plugin.getConfig().getBoolean("sharedmg")) { - SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.GREEN + "Geteilter Schaden aktiviert", true)); - } else { - SETTINGS_GUI.setItem(SHARE_DMG_INDEX, GUIUtils.createGuiItem(Material.MELON_SLICE, ChatUtil.RED + "Geteilter Schaden deaktiviert")); - } - if (plugin.getConfig().getBoolean("lavafloor")) { - SETTINGS_GUI.setItem(LAVA_FLOOR_INDEX, GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.GREEN + "Der Boden ist Lava aktiviert", true)); - } else { - SETTINGS_GUI.setItem(LAVA_FLOOR_INDEX, GUIUtils.createGuiItem(Material.MAGMA_BLOCK, ChatUtil.RED + "Der Boden ist Lava deaktiviert")); - } - if (plugin.getConfig().getBoolean("randomeffect")) { - SETTINGS_GUI.setItem(CHUNK_RANDOM_EFFEKT_INDEX, GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.GREEN + "Chunk Random Effekt aktiviert", true)); - } else { - SETTINGS_GUI.setItem(CHUNK_RANDOM_EFFEKT_INDEX, GUIUtils.createGuiItem(Material.SPLASH_POTION, ChatUtil.RED + "Chunk Random Effekt deaktiviert")); - } - if (plugin.getConfig().getBoolean("tiedtogether")) { - SETTINGS_GUI.setItem(TIED_TOGETHER_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.GREEN + "Zusammengebunden aktiviert", true, ChatUtil.GREEN + "Maximale Entfernung der Spieler: " + plugin.getConfig().getDouble("playerrange"))); - SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_ADD_INDEX, CustomHeads.QUARTZ_ARROW_UP.getHead()); - SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_REMOVE_INDEX, CustomHeads.QUARTZ_ARROW_DOWN.getHead()); - } else { - SETTINGS_GUI.setItem(TIED_TOGETHER_INDEX, GUIUtils.createGuiItem(Material.DIAMOND_BOOTS, ChatUtil.RED + "Zusammengebunden deaktiviert")); - SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_ADD_INDEX, GUIUtils.EMPTY_ICON); - SETTINGS_GUI.setItem(RANGE_ON_TIED_TOGETHER_REMOVE_INDEX, GUIUtils.EMPTY_ICON); - } - if (plugin.getConfig().getBoolean("icerunner")) { - SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.GREEN + "Ice-Runner aktiviert", true)); - } else { - SETTINGS_GUI.setItem(ICE_RUNNER_INDEX, GUIUtils.createGuiItem(Material.BLUE_ICE, ChatUtil.RED + "Ice-Runner deaktiviert")); - } - if (plugin.getConfig().getBoolean("randommobs")) { - SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.GREEN + "Random Mobs aktiviert", true)); - } else { - SETTINGS_GUI.setItem(RANDOM_MOB_INDEX, GUIUtils.createGuiItem(Material.PARROT_SPAWN_EGG, ChatUtil.RED + "Random Mobs deaktiviert")); - } - if (plugin.getConfig().getBoolean("bedrockwall")) { - SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.GREEN + "Bedrock Wand aktiviert", true)); - } else { - SETTINGS_GUI.setItem(BEDROCK_WALL_INDEX, GUIUtils.createGuiItem(Material.BEDROCK, ChatUtil.RED + "Bedrock Wand deaktiviert")); - } - if (plugin.getConfig().getBoolean("worldborderlevel")) { - SETTINGS_GUI.setItem(WORLD_BORDER_LEVEL_INDEX, GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.GREEN + "World Border Level aktiviert", true)); - } else { - SETTINGS_GUI.setItem(WORLD_BORDER_LEVEL_INDEX, GUIUtils.createGuiItem(Material.STRUCTURE_VOID, ChatUtil.RED + "World Border Level deaktiviert")); - } - if (plugin.getConfig().getBoolean("allitems")) { - SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.GREEN + "All Items aktiviert", true, ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!")); - } else { - SETTINGS_GUI.setItem(ALL_ITEMS_INDEX, GUIUtils.createGuiItem(Material.ITEM_FRAME, ChatUtil.RED + "All Items deaktiviert", ChatUtil.GREEN + "/skipitem um ein Item zu überspringen", ChatUtil.RED + "KANN AKTUELL NICHT GESPEICHERT WERDEN!")); - } - SETTINGS_GUI.setItem(SHUFFLE_RANDOM_DROP_INDEX, GUIUtils.createGuiItem(Material.CHORUS_FLOWER, ChatUtil.GREEN + "Zufällige Drops neu mischen")); - SETTINGS_GUI.setItem(CLOSE_GUI_INDEX, GUIUtils.createGuiItem(Material.BARRIER, ChatUtil.RED + "Menü verlassen!")); - SETTINGS_GUI.setItem(BACK_BUTTON_INDEX, GUIUtils.createGuiItem(Material.ARROW, ChatUtil.GREEN + "Zurück")); - for (int i = 0; i < INVENTORY_SIZE; i++) { - if (SETTINGS_GUI.getItem(i) == null || SETTINGS_GUI.getItem(i).getType() == Material.AIR) { - SETTINGS_GUI.setItem(i, GUIUtils.EMPTY_ICON); - } - } - p.openInventory(SETTINGS_GUI); - } - - @EventHandler - public void onInventoryClick(InventoryClickEvent e) { - if (e.getInventory() == SETTINGS_GUI) { - int slot = e.getRawSlot(); - Player p = (Player) e.getWhoClicked(); - switch (slot) { - case CRAFTING_TABLE_INDEX: - if (plugin.getConfig().getBoolean("craftingtable")) { - GUIUtils.setConfig("craftingtable", false); - GUIUtils.sendTitleToAll("Challenge", "Werkbank deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("craftingtable", true); - GUIUtils.sendTitleToAll("Challenge", "Werkbank aktiviert", ChatUtil.GREEN); - } - break; - - case TRADING_INDEX: - if (plugin.getConfig().getBoolean("allowtrading")) { - GUIUtils.setConfig("allowtrading", false); - GUIUtils.sendTitleToAll("Challenge", "Handeln deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("allowtrading", true); - GUIUtils.sendTitleToAll("Challenge", "Handeln aktiviert", ChatUtil.GREEN); - } - break; - case XP_DEATH_INDEX: - if (plugin.getConfig().getBoolean("xpdeath")) { - GUIUtils.setConfig("xpdeath", false); - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("xpdeath", true); - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Einsammeln von XP aktiviert", ChatUtil.GREEN); - } - break; - case DEATH_ON_FALL_INDEX: - if (plugin.getConfig().getBoolean("deathonfall")) { - GUIUtils.setConfig("deathonfall", false); - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden deaktiviert", ChatUtil.RED); - } else { - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Fallschaden aktiviert", ChatUtil.GREEN); - GUIUtils.setConfig("deathonfall", true); - } - break; - case RANDOM_DROP_INDEX: - if (plugin.getConfig().getBoolean("rnddrops")) { - GUIUtils.setConfig("rnddrops", false); - GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops deaktiviert", ChatUtil.RED); - } else { - GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops aktiviert", ChatUtil.GREEN); - GUIUtils.setConfig("rnddrops", true); - } - break; - case SHUFFLE_RANDOM_DROP_INDEX: - plugin.rndDrops.shuffleItems(); - plugin.rndDrops.saveItems(); - GUIUtils.sendTitleToAll("Challenge", "Zufällige Drops neu gemischt!", ChatUtil.GREEN); - break; - case DEATH_ON_SPRINT_INDEX: - if (plugin.getConfig().getBoolean("deathonsprint")) { - GUIUtils.setConfig("deathonsprint", false); - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten deaktiviert", ChatUtil.RED); - } else { - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Sprinten aktiviert", ChatUtil.GREEN); - GUIUtils.setConfig("deathonsprint", true); - } - break; - case DEATH_ON_JUMP_INDEX: - if (plugin.getConfig().getBoolean("deathonjump")) { - GUIUtils.setConfig("deathonjump", false); - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen deaktiviert", ChatUtil.RED); - } else { - GUIUtils.sendTitleToAll("Challenge", "Sterben durch Springen aktiviert", ChatUtil.GREEN); - GUIUtils.setConfig("deathonjump", true); - } - break; - case TARGET_INDEX: - if (plugin.getConfig().getBoolean("target")) { - GUIUtils.setConfig("target", false); - GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Wither", ChatUtil.GREEN); - } else { - GUIUtils.sendTitleToAll("Challenge", "Ziel: Töte den Enderdrachen", ChatUtil.GREEN); - GUIUtils.setConfig("target", true); - } - break; - case CLEANR_INV_BY_DAMAGE_INDEX: - if (plugin.getConfig().getBoolean("clinvdmg")) { - GUIUtils.setConfig("clinvdmg", false); - GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt deaktiviert", ChatUtil.RED); - } else { - GUIUtils.sendTitleToAll("Challenge", "Inventar von allen löschen wenn einer Schaden bekommt aktiviert", ChatUtil.GREEN); - GUIUtils.setConfig("clinvdmg", true); - } - break; - case DMG_ON_SNEAK_INDEX: - if (plugin.getConfig().getBoolean("damageonsneak")) { - GUIUtils.setConfig("damageonsneak", false); - GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen deaktiviert", ChatUtil.RED); - } else { - GUIUtils.sendTitleToAll("Challenge", "Schaden bekommen beim Schleichen aktiviert", ChatUtil.GREEN); - GUIUtils.setConfig("damageonsneak", true); - } - break; - case MLG_INDEX: - if (plugin.getConfig().getBoolean("mlg.enabled")) { - GUIUtils.setConfig("mlg.enabled", false); - GUIUtils.sendTitleToAll("Challenge", "MLG deaktiviert", ChatUtil.RED); - } else { - GUIUtils.sendTitleToAll("Challenge", "MLG aktiviert", ChatUtil.GREEN); - GUIUtils.setConfig("mlg.enabled", true); - } - break; - case DMG_ON_SNEAK_ADD_INDEX: - GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") + 0.5); - break; - case DMG_ON_SNEAK_REMOVE_INDEX: - if (plugin.getConfig().getDouble("sneakdmg") > 0) { - GUIUtils.setConfig("sneakdmg", plugin.getConfig().getDouble("sneakdmg") - 0.5); - } - break; - case SHARE_DMG_INDEX: - if (plugin.getConfig().getBoolean("sharedmg")) { - GUIUtils.setConfig("sharedmg", false); - GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("sharedmg", true); - GUIUtils.sendTitleToAll("Challenge", "Geteielter Schaden aktiviert", ChatUtil.GREEN); - } - break; - case LAVA_FLOOR_INDEX: - if (plugin.getConfig().getBoolean("lavafloor")) { - GUIUtils.setConfig("lavafloor", false); - GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("lavafloor", true); - GUIUtils.sendTitleToAll("Challenge", "Der Boden ist Lava aktiviert", ChatUtil.GREEN); - } - break; - case CHUNK_RANDOM_EFFEKT_INDEX: - if (plugin.getConfig().getBoolean("randomeffect")) { - GUIUtils.setConfig("randomeffect", false); - GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("randomeffect", true); - GUIUtils.sendTitleToAll("Challenge", "Chunk Random Effekt aktiviert", ChatUtil.GREEN); - } - break; - case TIED_TOGETHER_INDEX: - if (plugin.getConfig().getBoolean("tiedtogether")) { - GUIUtils.setConfig("tiedtogether", false); - GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("tiedtogether", true); - GUIUtils.sendTitleToAll("Challenge", "Zusammengebunden aktiviert", ChatUtil.GREEN); - } - break; - case RANGE_ON_TIED_TOGETHER_ADD_INDEX: - GUIUtils.setConfig("playerrange", plugin.getConfig().getDouble("playerrange") + 1); - break; - case RANGE_ON_TIED_TOGETHER_REMOVE_INDEX: - if (plugin.getConfig().getDouble("playerrange") > 0) { - GUIUtils.setConfig("playerrange", plugin.getConfig().getDouble("playerrange") - 1); - } - break; - case ICE_RUNNER_INDEX: - if (plugin.getConfig().getBoolean("icerunner")) { - GUIUtils.setConfig("icerunner", false); - GUIUtils.sendTitleToAll("Challenge", "Ice-Runner deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("icerunner", true); - GUIUtils.sendTitleToAll("Challenge", "Ice-Runner aktiviert", ChatUtil.GREEN); - } - break; - case RANDOM_MOB_INDEX: - if (plugin.getConfig().getBoolean("randommobs")) { - GUIUtils.setConfig("randommobs", false); - GUIUtils.sendTitleToAll("Challenge", "Random Mobs deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("randommobs", true); - GUIUtils.sendTitleToAll("Challenge", "Random Mobs aktiviert", ChatUtil.GREEN); - } - break; - case BEDROCK_WALL_INDEX: - if (plugin.getConfig().getBoolean("bedrockwall")) { - GUIUtils.setConfig("bedrockwall", false); - GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("bedrockwall", true); - GUIUtils.sendTitleToAll("Challenge", "Bedrock Wand aktiviert", ChatUtil.GREEN); - } - break; - case WORLD_BORDER_LEVEL_INDEX: - if (plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class) == null) { - return; - } - RegisteredServiceProvider worldBorderAPI = plugin.getServer().getServicesManager().getRegistration(WorldBorderApi.class); - if (worldBorderAPI == null) { - return; - } - if (plugin.getConfig().getBoolean("worldborderlevel")) { - GUIUtils.setConfig("worldborderlevel", false); - for (Player pp : Bukkit.getOnlinePlayers()) { - worldBorderAPI.getProvider().resetWorldBorderToGlobal(pp); - } - GUIUtils.sendTitleToAll("Challenge", "World Border Level deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("worldborderlevel", true); - for (Player pp : Bukkit.getOnlinePlayers()) { - worldBorderAPI.getProvider().setBorder(pp, 1, plugin.getServer().getWorld("world").getSpawnLocation()); - } - - for (Player pp : Bukkit.getOnlinePlayers()) { - pp.teleport(pp.getWorld().getSpawnLocation()); - } - GUIUtils.sendTitleToAll("Challenge", "World Border Level aktiviert", ChatUtil.GREEN); - } - break; - case ALL_ITEMS_INDEX: - if (plugin.getConfig().getBoolean("allitems")) { - GUIUtils.setConfig("allitems", false); - GUIUtils.sendTitleToAll("Challenge", "All Items deaktiviert", ChatUtil.RED); - } else { - GUIUtils.setConfig("allitems", true); - GUIUtils.sendTitleToAll("Challenge", "All Items aktiviert", ChatUtil.GREEN); - AllItemsChallenge.start(); - } - break; - default: - break; - } - createSettingsGUI(p); - switch (slot) { - case CLOSE_GUI_INDEX -> p.closeInventory(); - case BACK_BUTTON_INDEX -> MainGui.createMainGUI(p); - } - e.setCancelled(true); - } - } -} \ No newline at end of file diff --git a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java index 9c37019..2dcea65 100644 --- a/src/main/java/de/fanta/challenges/listeners/EventRegistration.java +++ b/src/main/java/de/fanta/challenges/listeners/EventRegistration.java @@ -26,21 +26,18 @@ import de.fanta.challenges.challenges.XPChallenge; import de.fanta.challenges.gravestones.GravestoneListener; import de.fanta.challenges.guis.CheckItemsGUI; -import de.fanta.challenges.guis.coordsgui.CoordsDeleteGUI; -import de.fanta.challenges.guis.coordsgui.CoordsGUI; import de.fanta.challenges.guis.ResetGui; import de.fanta.challenges.guis.TeleportGUI; import de.fanta.challenges.guis.TimerGui; +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.SammelFieberSettingsGui; 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.guis.settingsgui.MainGui; -import de.fanta.challenges.guis.settingsgui.OtherSettingsGui; -import de.fanta.challenges.guis.settingsgui.ServerSettingsGui; -import de.fanta.challenges.guis.settingsgui.SettingsGui; import de.fanta.challenges.teams.TeamListener; +import de.fanta.challenges.utils.guiutils.WindowManager; import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; @@ -57,12 +54,9 @@ pM.registerEvents(new PlayerListener(), plugin); pM.registerEvents(new VoidListener(), plugin); + pM.registerEvents(new WindowManager(), plugin); pM.registerEvents(new TimerGui(), plugin); pM.registerEvents(new ResetGui(), plugin); - pM.registerEvents(new MainGui(), plugin); - pM.registerEvents(new SettingsGui(), plugin); - pM.registerEvents(new ServerSettingsGui(), plugin); - pM.registerEvents(new OtherSettingsGui(), plugin); pM.registerEvents(new SammelFieberSettingsGui(), plugin); pM.registerEvents(new EventItemsGui(), plugin); pM.registerEvents(new EventGui(), plugin); diff --git a/src/main/java/de/fanta/challenges/utils/ChatUtil.java b/src/main/java/de/fanta/challenges/utils/ChatUtil.java index df5ce3f..1e0a093 100644 --- a/src/main/java/de/fanta/challenges/utils/ChatUtil.java +++ b/src/main/java/de/fanta/challenges/utils/ChatUtil.java @@ -60,6 +60,10 @@ } } + public static void sendTitleToAll(String headline, String text, ChatColor textColor, boolean pling) { + sendTitleToAll(headline, text, textColor, 10, 60 , 10, pling); + } + public static void sendTitleToPlayer(Player player, String headline, String text, ChatColor textColor, int in, int time, int out, boolean pling) { player.sendTitle(ChatUtil.BLUE + headline, textColor + text, in, time, out); if (pling) { diff --git a/src/main/java/de/fanta/challenges/utils/guiutils/AbstractWindow.java b/src/main/java/de/fanta/challenges/utils/guiutils/AbstractWindow.java new file mode 100644 index 0000000..17e0966 --- /dev/null +++ b/src/main/java/de/fanta/challenges/utils/guiutils/AbstractWindow.java @@ -0,0 +1,88 @@ +package de.fanta.challenges.utils.guiutils; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryAction; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.inventory.Inventory; + +public abstract class AbstractWindow implements Window { + + private Player player; + private Inventory inventory; + private Window parentWindow; + + public AbstractWindow(Player player, Inventory inventory) { + this.player = player; + this.inventory = inventory; + } + + public AbstractWindow(Window parentWindow, Inventory inventory) { + this(parentWindow.getPlayer(), inventory); + this.parentWindow = parentWindow; + } + + @Override + public Player getPlayer() { + return this.player; + } + + @Override + public Inventory getInventory() { + return this.inventory; + } + + @Override + public Window getParent() { + return this.parentWindow; + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + if (mayAffectThisInventory(event)) { + event.setCancelled(true); + } + } + + protected boolean mayAffectThisInventory(InventoryClickEvent event) { + if (getInventory().equals(event.getClickedInventory())) { + return event.getAction() != InventoryAction.NOTHING; + } + + switch (event.getAction()) { + case COLLECT_TO_CURSOR: + case MOVE_TO_OTHER_INVENTORY: + case UNKNOWN: + return true; + default: + return false; + } + } + + @Override + public void onItemDraged(InventoryDragEvent event) { + if (mayAffectThisInventory(event)) { + event.setCancelled(true); + } + } + + protected boolean mayAffectThisInventory(InventoryDragEvent event) { + for (Integer slot : event.getRawSlots()) { + if (slot < getInventory().getSize()) { + return true; + } + } + + return false; + } + + @Override + public void open() { + rebuildInventory(); + getPlayer().openInventory(getInventory()); + WindowManager.getInstance().registerOpenWindow(this); + } + + protected abstract void rebuildInventory(); + +} diff --git a/src/main/java/de/fanta/challenges/utils/guiutils/Window.java b/src/main/java/de/fanta/challenges/utils/guiutils/Window.java new file mode 100644 index 0000000..c09cf14 --- /dev/null +++ b/src/main/java/de/fanta/challenges/utils/guiutils/Window.java @@ -0,0 +1,30 @@ +package de.fanta.challenges.utils.guiutils; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryDragEvent; +import org.bukkit.inventory.Inventory; + +public interface Window { + + public abstract Player getPlayer(); + + public abstract Inventory getInventory(); + + public abstract Window getParent(); + + public abstract void open(); + + public default void closed() { + + } + + public default void onItemClicked(InventoryClickEvent event) { + event.setCancelled(true); + } + + public default void onItemDraged(InventoryDragEvent event) { + event.setCancelled(true); + } + +} diff --git a/src/main/java/de/fanta/challenges/utils/guiutils/WindowManager.java b/src/main/java/de/fanta/challenges/utils/guiutils/WindowManager.java new file mode 100644 index 0000000..8819e48 --- /dev/null +++ b/src/main/java/de/fanta/challenges/utils/guiutils/WindowManager.java @@ -0,0 +1,79 @@ +package de.fanta.challenges.utils.guiutils; + +import de.fanta.challenges.Challenges; +import org.bukkit.Bukkit; +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 java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.logging.Level; + +public class WindowManager implements Listener { + + private static final WindowManager INSTANCE = new WindowManager(); + private Map openWindows; + + public WindowManager() { + this.openWindows = new HashMap<>(); + Bukkit.getPluginManager().registerEvents(this, Challenges.getPlugin()); + } + + public void registerOpenWindow(Window window) { + Window alreadyOpen = this.openWindows.put(window.getPlayer().getUniqueId(), window); + if (alreadyOpen != null) { + Challenges.getPlugin().getLogger().log(Level.WARNING, "Window opened without the last one being closed."); + } + } + + @EventHandler + public void onInventoryClickEvent(InventoryClickEvent event) { + Window window = this.openWindows.get(event.getWhoClicked().getUniqueId()); + if (window == null) { + return; + } + + try { + window.onItemClicked(event); + } catch (Exception e) { + // For security reasons. + event.setCancelled(true); + throw e; + } + } + + @EventHandler + public void onInventoryDragEvent(InventoryDragEvent event) { + Window window = this.openWindows.get(event.getWhoClicked().getUniqueId()); + if (window == null) { + return; + } + + try { + window.onItemDraged(event); + } catch (Exception e) { + // For security reasons. + event.setCancelled(true); + throw e; + } + } + + @EventHandler + public void onInventoryClosedEvent(InventoryCloseEvent event) { + Window window = this.openWindows.get(event.getPlayer().getUniqueId()); + if (window == null) { + return; + } + + window.closed(); + this.openWindows.remove(event.getPlayer().getUniqueId()); + } + + public static WindowManager getInstance() { + return INSTANCE; + } +}