players can manually activate manual reset

This commit is contained in:
LunarAkai 2024-05-03 19:38:53 +02:00
commit 4e283a77b1
3 changed files with 40 additions and 11 deletions

View file

@ -10,17 +10,13 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import java.util.logging.Level;
import net.kyori.adventure.text.Component; 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.ChatColor;
import net.md_5.bungee.api.ChatMessageType; import org.bukkit.Bukkit;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -503,7 +499,10 @@ public class MinecleanerArena {
currentMinecleanerGame.flag(x, y); currentMinecleanerGame.flag(x, y);
if (currentMinecleanerGame.gameover) { if (currentMinecleanerGame.gameover) {
Bukkit.getScheduler().runTaskLater(plugin, () -> {
arenaStatus = ArenaStatus.COMPLETED; arenaStatus = ArenaStatus.COMPLETED;
}, 5L);
plugin.getManager().handleGameover(player, this, true); plugin.getManager().handleGameover(player, this, true);
} }
if (cell.isFlagged() == true) { if (cell.isFlagged() == true) {
@ -535,7 +534,9 @@ public class MinecleanerArena {
setBlockForCellType(x, y, cell); setBlockForCellType(x, y, cell);
if (currentMinecleanerGame.gameover) { if (currentMinecleanerGame.gameover) {
Bukkit.getScheduler().runTaskLater(plugin, () -> {
arenaStatus = ArenaStatus.COMPLETED; arenaStatus = ArenaStatus.COMPLETED;
}, 5L);
plugin.getManager().handleGameover(player, this, !(cell.isRevealed() && cell.isExploded())); plugin.getManager().handleGameover(player, this, !(cell.isRevealed() && cell.isExploded()));
} else { } else {
updateIngameInfoTexts(); updateIngameInfoTexts();
@ -731,6 +732,9 @@ public class MinecleanerArena {
return widthIndex; return widthIndex;
} }
public void setArenaStaus(ArenaStatus status) {
this.arenaStatus = status;
}
private int getRotationYaw() { private int getRotationYaw() {
return switch (orientation) { return switch (orientation) {
@ -740,4 +744,5 @@ public class MinecleanerArena {
default -> 0; default -> 0;
}; };
} }
} }

View file

@ -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().getSchedulerGameOver().cancel();
plugin.getManager().leaveArena(arenaClicked.getCurrentPlayer(), false); plugin.getManager().leaveArena(arenaClicked.getCurrentPlayer(), false);
} }
@ -129,6 +129,18 @@ public class MinecleanerListener implements Listener {
e.setCancelled(true); e.setCancelled(true);
int slot = e.getRawSlot(); int slot = e.getRawSlot();
switch (slot) { 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: { case 12: {
if(plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) { if(plugin.getManager().getSettingsValue("additionaldisplay", player) == 0) {
plugin.getManager().updateSettingsValue("additionaldisplay", 1, player); plugin.getManager().updateSettingsValue("additionaldisplay", 1, player);

View file

@ -50,6 +50,7 @@ public class MinecleanerManager {
private SettingKey minecleanerSettingTimerKey; private SettingKey minecleanerSettingTimerKey;
private SettingKey minecleanerAdditionalDisplaySettingKey; private SettingKey minecleanerAdditionalDisplaySettingKey;
private SettingKey minecleanerResetTimerSettingKey; private SettingKey minecleanerResetTimerSettingKey;
private SettingKey minecleanerAllowManualResetSettingKey;
public MinecleanerManager(MinecleanerPlugin plugin) { public MinecleanerManager(MinecleanerPlugin plugin) {
this.plugin = plugin; this.plugin = plugin;
@ -81,6 +82,10 @@ public class MinecleanerManager {
minecleanerResetTimerSettingKey.setDefault(5); minecleanerResetTimerSettingKey.setDefault(5);
minecleanerResetTimerSettingKey.setDisplayName("Dauer die das Spielfeld für das Zurücksetzen brauchen soll"); 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, this.settingsInventory = plugin.getServer().createInventory(null, InventoryType.CHEST,
plugin.getDisplayedPluginName() + " Einstellungen"); plugin.getDisplayedPluginName() + " Einstellungen");
@ -139,6 +144,7 @@ public class MinecleanerManager {
public void leaveArena(Player player, boolean message) { public void leaveArena(Player player, boolean message) {
MinecleanerArena arena = plugin.getArenaList().getPlayerArena(player); MinecleanerArena arena = plugin.getArenaList().getPlayerArena(player);
arena.setArenaStaus(ArenaStatus.INACTIVE);
Preconditions.checkArgument(arena != null, "player is in no arena"); Preconditions.checkArgument(arena != null, "player is in no arena");
arena.removePlayer(); arena.removePlayer();
plugin.getArenaList().setArenaForPlayer(player, null); plugin.getArenaList().setArenaForPlayer(player, null);
@ -367,11 +373,17 @@ public class MinecleanerManager {
} }
public Inventory showSettingsInventory(Player player) { public Inventory showSettingsInventory(Player player) {
int current = getSettingsValue("additionaldisplay", player); int current = getSettingsValue("allowmanualreset", player);
if(current == 0) {
settingsInventory.setItem(10, settingsInventory.setItem(10,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.BARRIER), ChatColor.RED + "Platzhalter"))); 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) { if(current == 0) {
settingsInventory.setItem(12, settingsInventory.setItem(12,
ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.NAME_TAG), ChatColor.RED + "Zusätzliche Anzeige in der Action Bar"))); ItemStacks.lore(ItemStacks.rename(new ItemStack(Material.NAME_TAG), ChatColor.RED + "Zusätzliche Anzeige in der Action Bar")));