diff --git a/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java b/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java index bf687ec..fae60ab 100644 --- a/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java +++ b/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java @@ -48,7 +48,7 @@ public class MinecleanerListener implements Listener { hasRightClicked = true; } - if(!arena.getCurrentMinecleanerGame().gameover && (arena.getArenaStatus() == ArenaStatus.PLAYING || arena.getArenaStatus() == ArenaStatus.COMPLETED)) { + if(arena.getCurrentMinecleanerGame() != null && !arena.getCurrentMinecleanerGame().gameover && (arena.getArenaStatus() == ArenaStatus.PLAYING || arena.getArenaStatus() == ArenaStatus.COMPLETED)) { if(arena.getArenaStatus() == ArenaStatus.PLAYING) { int d0x = arena.getOrientation().getModX(); int d0z = arena.getOrientation().getModZ(); @@ -131,117 +131,6 @@ public class MinecleanerListener implements Listener { } } } - if(e.getInventory().equals(plugin.getManager().getSettingsInventory())) { - int slot = e.getRawSlot(); - switch (slot) { - case 10: { - if(plugin.getManager().getSettingsValue("allowmanualreset", player) == 0) { - plugin.getManager().updateSettingsValue("allowmanualreset", 1, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - } else { - plugin.getManager().updateSettingsValue("allowmanualreset", 0, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - } - break; - } - case 12: { - if(plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) { - plugin.getManager().updateSettingsValue("additionaldisplay", 1, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - } else { - plugin.getManager().updateSettingsValue("additionaldisplay", 0, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - } - break; - } - case 14: { - if(plugin.getManager().getSettingsValue("timer", player) == 0) { - plugin.getManager().updateSettingsValue("timer", 1, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - } else { - plugin.getManager().updateSettingsValue("timer", 0, player); - if(arena != null) { - arena.updateIngameInfoTexts(); - } - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - } - break; - } - case 16: { - switch (plugin.getManager().getSettingsValue("resettime", player)) { - case 1: { - plugin.getManager().updateSettingsValue("resettime", 2, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 2: { - plugin.getManager().updateSettingsValue("resettime", 3, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 3: { - plugin.getManager().updateSettingsValue("resettime", 4, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 4: { - plugin.getManager().updateSettingsValue("resettime", 5, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 5: { - plugin.getManager().updateSettingsValue("resettime", 6, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 6: { - plugin.getManager().updateSettingsValue("resettime", 7, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 7: { - plugin.getManager().updateSettingsValue("resettime", 8, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 8: { - plugin.getManager().updateSettingsValue("resettime", 9, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 9: { - plugin.getManager().updateSettingsValue("resettime", 10, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - case 10: { - plugin.getManager().updateSettingsValue("resettime", 1, player); - player.closeInventory(); - player.openInventory(plugin.getManager().showSettingsInventory(player)); - break; - } - } - } - default: { - break; - } - } - } } } diff --git a/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java b/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java index ed16168..2441a99 100644 --- a/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java +++ b/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java @@ -373,75 +373,6 @@ public class MinecleanerManager { } } - public Inventory showSettingsInventory(Player player) { - int current = getSettingsValue("allowmanualreset", player); - - if(current == 0) { - settingsInventory.setItem(10, - ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.SHEARS), ChatColor.RED + "Manuelles Resetten deaktiviert"))); - } else { - settingsInventory.setItem(10, - ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.SHEARS), ChatColor.GREEN + "Manuelles Resetten aktiviert"))); - } - - current = getSettingsValue("additionaldisplay", player); - if(current == 0) { - settingsInventory.setItem(12, - ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.NAME_TAG), ChatColor.RED + "Zusätzliche Anzeige in der Action Bar deaktiviert"))); - } else { - settingsInventory.setItem(12, - ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.NAME_TAG), ChatColor.GREEN + "Zusätzliche Anzeige in der Action Bar aktiviert"))); - } - - - current = getSettingsValue("timer", player); - - if(current == 0) { - settingsInventory.setItem(14, - ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CLOCK), ChatColor.RED + "Timer wird nicht angezeigt"))); - } else { - settingsInventory.setItem(14, - ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CLOCK), ChatColor.GREEN + "Timer wird angezeigt"))); - } - - current = getSettingsValue("resettime", player); - - switch (current) { - case 1: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "1s"))); - break; - case 2: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "2s"))); - break; - case 3: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "3s"))); - break; - case 4: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "4s"))); - break; - case 5: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "5s"))); - break; - case 6: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "6s"))); - break; - case 7: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "7s"))); - break; - case 8: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "8s"))); - break; - case 9: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "9s"))); - break; - case 10: - settingsInventory.setItem(16, ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.CANDLE), ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + "10s"))); - break; - } - - return settingsInventory; - } - public int getSettingsValue(String settingsKeyString, Player player) { PlayerStatistics playerStatistics = plugin.getCubesideStatistics().getStatistics(player.getUniqueId()); SettingKey settingKey = plugin.getCubesideStatistics().getSettingKey("minecleaner.settings." + settingsKeyString); diff --git a/src/main/java/de/lunarakai/minecleaner/MinecleanerSettingsInventory.java b/src/main/java/de/lunarakai/minecleaner/MinecleanerSettingsInventory.java new file mode 100644 index 0000000..2ac51ee --- /dev/null +++ b/src/main/java/de/lunarakai/minecleaner/MinecleanerSettingsInventory.java @@ -0,0 +1,124 @@ +package de.lunarakai.minecleaner; + +import de.iani.cubesideutils.bukkit.inventory.AbstractWindow; +import de.lunarakai.minecleaner.utils.ItemUtil; +import net.md_5.bungee.api.ChatColor; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; + + +public class MinecleanerSettingsInventory extends AbstractWindow { + + private static final int SETTINGS_ALLOW_MANUEL_RESET = 10; + private static final int SETTINGS_ADDITIONAL_DISPLAY = 12; + private static final int SETTINGS_TIMER = 14; + private static final int SETTINGS_RESETTIME = 16; + private static final int WINDOW_SIZE = 27; + + private MinecleanerPlugin plugin; + + public MinecleanerSettingsInventory(Player player, MinecleanerPlugin plugin) { + super(player, Bukkit.createInventory(player, InventoryType.CHEST, plugin.getDisplayedPluginName() + " Einstellungen")); + this.plugin = plugin; + } + + @Override + protected void rebuildInventory() { + Player player = getPlayer(); + + for (int i = 0; i < WINDOW_SIZE; i++) { + ItemStack item; + switch (i) { + case SETTINGS_ALLOW_MANUEL_RESET -> { + if (plugin.getManager().getSettingsValue("allowmanualreset", player) == 0) { + item = ItemUtil.createGuiItem(Material.SHEARS, ChatColor.RED + "Manuelles Resetten deaktiviert"); + } else { + item = ItemUtil.createGuiItem(Material.SHEARS, ChatColor.GREEN + "Manuelles Resetten aktiviert"); + } + } + case SETTINGS_ADDITIONAL_DISPLAY -> { + if (plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) { + item = ItemUtil.createGuiItem(Material.NAME_TAG, ChatColor.RED + "Zusätzliche Anzeige in der Action Bar deaktiviert\""); + } else { + item = ItemUtil.createGuiItem(Material.NAME_TAG, ChatColor.GREEN + "Zusätzliche Anzeige in der Action Bar aktiviert\""); + } + } + case SETTINGS_TIMER -> { + if (plugin.getManager().getSettingsValue("timer", player) == 0) { + item = ItemUtil.createGuiItem(Material.CLOCK, ChatColor.RED + "Timer wird nicht angezeigt"); + } else { + item = ItemUtil.createGuiItem(Material.CLOCK, ChatColor.GREEN + "Timer wird angezeigt"); + } + } + case SETTINGS_RESETTIME -> { + int current = plugin.getManager().getSettingsValue("resettime", player); + item = ItemUtil.createGuiItem(Material.CANDLE, ChatColor.GOLD + "Resetzeit: " + ChatColor.RED + current + "s"); + } + default -> item = ItemUtil.EMPTY_ICON; + } + this.getInventory().setItem(i, item); + } + } + + @Override + public void onItemClicked(InventoryClickEvent event) { + if (!mayAffectThisInventory(event)) { + return; + } + + event.setCancelled(true); + if (!getInventory().equals(event.getClickedInventory())) { + return; + } + + Player player = getPlayer(); + + + int slot = event.getSlot(); + switch (slot) { + case SETTINGS_ALLOW_MANUEL_RESET -> { + if(plugin.getManager().getSettingsValue("allowmanualreset", player) == 0) { + plugin.getManager().updateSettingsValue("allowmanualreset", 1, player); + } else { + plugin.getManager().updateSettingsValue("allowmanualreset", 0, player); + } + rebuildInventory(); + } + case SETTINGS_ADDITIONAL_DISPLAY -> { + if(plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) { + plugin.getManager().updateSettingsValue("additionaldisplay", 1, player); + } else { + plugin.getManager().updateSettingsValue("additionaldisplay", 0, player); + } + rebuildInventory(); + } + case SETTINGS_TIMER -> { + if(plugin.getManager().getSettingsValue("timer", player) == 0) { + plugin.getManager().updateSettingsValue("timer", 1, player); + } else { + MinecleanerArena arena = plugin.getArenaList().getPlayerArena(player); + plugin.getManager().updateSettingsValue("timer", 0, player); + if(arena != null) { + arena.updateIngameInfoTexts(); + } + } + rebuildInventory(); + } + case SETTINGS_RESETTIME -> { + int current = plugin.getManager().getSettingsValue("resettime", player); + if(plugin.getManager().getSettingsValue("resettime", player) < 10) { + plugin.getManager().updateSettingsValue("resettime", current + 1, player); + } else { + plugin.getManager().updateSettingsValue("resettime", 1, player); + } + rebuildInventory(); + } + default -> { + } + } + } +} diff --git a/src/main/java/de/lunarakai/minecleaner/commands/SettingsCommand.java b/src/main/java/de/lunarakai/minecleaner/commands/SettingsCommand.java index a7051ad..4679e0d 100644 --- a/src/main/java/de/lunarakai/minecleaner/commands/SettingsCommand.java +++ b/src/main/java/de/lunarakai/minecleaner/commands/SettingsCommand.java @@ -8,6 +8,7 @@ import de.iani.cubesideutils.bukkit.commands.exceptions.NoPermissionException; import de.iani.cubesideutils.bukkit.commands.exceptions.RequiresPlayerException; import de.iani.cubesideutils.commands.ArgsParser; import de.lunarakai.minecleaner.MinecleanerPlugin; +import de.lunarakai.minecleaner.MinecleanerSettingsInventory; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -39,7 +40,7 @@ public class SettingsCommand extends SubCommand { public boolean onCommand(CommandSender sender, Command command, String s, String s1, ArgsParser args) throws DisallowsCommandBlockException, RequiresPlayerException, NoPermissionException, IllegalSyntaxException, InternalCommandException { Player player = (Player) sender; - player.openInventory(plugin.getManager().showSettingsInventory(player)); + new MinecleanerSettingsInventory(player, plugin).open(); return true; } } diff --git a/src/main/java/de/lunarakai/minecleaner/utils/MinecleanerStringUtil.java b/src/main/java/de/lunarakai/minecleaner/utils/MinecleanerStringUtil.java index 7693f80..b9b6f58 100644 --- a/src/main/java/de/lunarakai/minecleaner/utils/MinecleanerStringUtil.java +++ b/src/main/java/de/lunarakai/minecleaner/utils/MinecleanerStringUtil.java @@ -1,5 +1,7 @@ package de.lunarakai.minecleaner.utils; +import de.iani.cubesideutils.StringUtil; + public class MinecleanerStringUtil { private MinecleanerStringUtil() { }