diff --git a/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java b/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java index 6101635..85dc1d6 100644 --- a/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java +++ b/src/main/java/de/lunarakai/minecleaner/MinecleanerArena.java @@ -10,17 +10,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; -import java.util.logging.Level; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextComponent; import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.ChatMessageType; -import net.md_5.bungee.api.chat.BaseComponent; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.data.BlockData; import org.bukkit.configuration.ConfigurationSection; @@ -503,7 +499,10 @@ public class MinecleanerArena { currentMinecleanerGame.flag(x, y); if (currentMinecleanerGame.gameover) { - arenaStatus = ArenaStatus.COMPLETED; + Bukkit.getScheduler().runTaskLater(plugin, () -> { + arenaStatus = ArenaStatus.COMPLETED; + }, 5L); + plugin.getManager().handleGameover(player, this, true); } if (cell.isFlagged() == true) { @@ -535,7 +534,9 @@ public class MinecleanerArena { setBlockForCellType(x, y, cell); if (currentMinecleanerGame.gameover) { - arenaStatus = ArenaStatus.COMPLETED; + Bukkit.getScheduler().runTaskLater(plugin, () -> { + arenaStatus = ArenaStatus.COMPLETED; + }, 5L); plugin.getManager().handleGameover(player, this, !(cell.isRevealed() && cell.isExploded())); } else { updateIngameInfoTexts(); @@ -731,6 +732,9 @@ public class MinecleanerArena { return widthIndex; } + public void setArenaStaus(ArenaStatus status) { + this.arenaStatus = status; + } private int getRotationYaw() { return switch (orientation) { @@ -740,4 +744,5 @@ public class MinecleanerArena { default -> 0; }; } + } \ No newline at end of file diff --git a/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java b/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java index 8682976..8842c98 100644 --- a/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java +++ b/src/main/java/de/lunarakai/minecleaner/MinecleanerListener.java @@ -80,7 +80,7 @@ public class MinecleanerListener implements Listener { } } } - } else if(arenaClicked.hasPlayer() && arenaClicked.getArenaStatus() == ArenaStatus.COMPLETED && !hasRightClicked){ + } else if(arenaClicked.hasPlayer() && arenaClicked.getArenaStatus() == ArenaStatus.COMPLETED && !hasRightClicked && (plugin.getManager().getSettingsValue("allowmanualreset", e.getPlayer()) == 1)) { plugin.getManager().getSchedulerGameOver().cancel(); plugin.getManager().leaveArena(arenaClicked.getCurrentPlayer(), false); } @@ -129,6 +129,18 @@ public class MinecleanerListener implements Listener { e.setCancelled(true); 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); diff --git a/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java b/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java index 071e0fd..5ab3c04 100644 --- a/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java +++ b/src/main/java/de/lunarakai/minecleaner/MinecleanerManager.java @@ -50,6 +50,7 @@ public class MinecleanerManager { private SettingKey minecleanerSettingTimerKey; private SettingKey minecleanerAdditionalDisplaySettingKey; private SettingKey minecleanerResetTimerSettingKey; + private SettingKey minecleanerAllowManualResetSettingKey; public MinecleanerManager(MinecleanerPlugin plugin) { this.plugin = plugin; @@ -81,6 +82,10 @@ public class MinecleanerManager { minecleanerResetTimerSettingKey.setDefault(5); minecleanerResetTimerSettingKey.setDisplayName("Dauer die das Spielfeld für das Zurücksetzen brauchen soll"); + minecleanerAllowManualResetSettingKey = plugin.getCubesideStatistics().getSettingKey("minecleaner.settings.allowmanualreset"); + minecleanerAllowManualResetSettingKey.setDefault(0); + minecleanerAllowManualResetSettingKey.setDisplayName("Erlaube das manuelle Zurücksetzen des Spielfeldes"); + this.settingsInventory = plugin.getServer().createInventory(null, InventoryType.CHEST, plugin.getDisplayedPluginName() + " Einstellungen"); @@ -139,6 +144,7 @@ public class MinecleanerManager { public void leaveArena(Player player, boolean message) { MinecleanerArena arena = plugin.getArenaList().getPlayerArena(player); + arena.setArenaStaus(ArenaStatus.INACTIVE); Preconditions.checkArgument(arena != null, "player is in no arena"); arena.removePlayer(); plugin.getArenaList().setArenaForPlayer(player, null); @@ -367,11 +373,17 @@ public class MinecleanerManager { } public Inventory showSettingsInventory(Player player) { - int current = getSettingsValue("additionaldisplay", player); + int current = getSettingsValue("allowmanualreset", player); - settingsInventory.setItem(10, - ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.BARRIER), ChatColor.RED + "Platzhalter"))); + 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")));