manual reset on left click

This commit is contained in:
LunarAkai 2024-05-02 20:00:19 +02:00
commit d4a6b64ae5
3 changed files with 51 additions and 42 deletions

View file

@ -503,6 +503,7 @@ public class MinecleanerArena {
currentMinecleanerGame.flag(x, y); currentMinecleanerGame.flag(x, y);
if (currentMinecleanerGame.gameover) { if (currentMinecleanerGame.gameover) {
arenaStatus = ArenaStatus.COMPLETED;
plugin.getManager().handleGameover(player, this, true); plugin.getManager().handleGameover(player, this, true);
} }
if (cell.isFlagged() == true) { if (cell.isFlagged() == true) {
@ -534,6 +535,7 @@ public class MinecleanerArena {
setBlockForCellType(x, y, cell); setBlockForCellType(x, y, cell);
if (currentMinecleanerGame.gameover) { if (currentMinecleanerGame.gameover) {
arenaStatus = ArenaStatus.COMPLETED;
plugin.getManager().handleGameover(player, this, !(cell.isRevealed() && cell.isExploded())); plugin.getManager().handleGameover(player, this, !(cell.isRevealed() && cell.isExploded()));
} else { } else {
updateIngameInfoTexts(); updateIngameInfoTexts();
@ -723,10 +725,13 @@ public class MinecleanerArena {
return currentGameStartTime; return currentGameStartTime;
} }
public Game getCurrentMinecleanerGame() { return currentMinecleanerGame; }
public int getWidthIndex() { public int getWidthIndex() {
return widthIndex; return widthIndex;
} }
private int getRotationYaw() { private int getRotationYaw() {
return switch (orientation) { return switch (orientation) {
case EAST -> 90; case EAST -> 90;

View file

@ -38,6 +38,11 @@ public class MinecleanerListener implements Listener {
if(arena != null) { if(arena != null) {
e.setCancelled(true); e.setCancelled(true);
MinecleanerArena arenaClicked = plugin.getArenaList().getArenaAtBlock(block); MinecleanerArena arenaClicked = plugin.getArenaList().getArenaAtBlock(block);
boolean hasRightClicked = false;
if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
hasRightClicked = true;
}
if(!arenaClicked.getCurrentMinecleanerGame().gameover) {
if(arenaClicked == arena && arena.getArenaStatus() == ArenaStatus.PLAYING) { if(arenaClicked == arena && arena.getArenaStatus() == ArenaStatus.PLAYING) {
int d0x = arena.getOrientation().getModX(); int d0x = arena.getOrientation().getModX();
int d0z = arena.getOrientation().getModZ(); int d0z = arena.getOrientation().getModZ();
@ -68,19 +73,17 @@ public class MinecleanerListener implements Listener {
blockx -= blockxInt; blockx -= blockxInt;
blockz -= blockzInt; blockz -= blockzInt;
boolean hasRightClicked = false;
if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
hasRightClicked = true;
}
if(blockzInt < arena.getArenaWidth() && blockxInt < arenaClicked.getArenaHeight()) { if(blockzInt < arena.getArenaWidth() && blockxInt < arenaClicked.getArenaHeight()) {
plugin.getManager().handleFieldClick(e.getPlayer(), blockzInt, blockxInt, hasRightClicked); plugin.getManager().handleFieldClick(e.getPlayer(), blockzInt, blockxInt, hasRightClicked);
} }
//player.sendMessage("Arena click! " + blockxInt + " " + blockzInt + " Right Clicked: " + hasRightClicked); //player.sendMessage("Arena click! " + blockxInt + " " + blockzInt + " Right Clicked: " + hasRightClicked);
} }
} }
} }
} else if(arenaClicked.hasPlayer() && arenaClicked.getArenaStatus() == ArenaStatus.COMPLETED && !hasRightClicked){
plugin.getManager().getSchedulerGameOver().cancel();
plugin.getManager().leaveArena(arenaClicked.getCurrentPlayer(), false);
}
} else { } else {
arena = plugin.getArenaList().getArenaAtBlock(block); arena = plugin.getArenaList().getArenaAtBlock(block);
if(arena != null) { if(arena != null) {

View file

@ -5,7 +5,6 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer; import java.util.function.Consumer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -13,12 +12,11 @@ import org.bukkit.Material;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import de.iani.cubesidestats.api.PlayerStatistics; import de.iani.cubesidestats.api.PlayerStatistics;
@ -37,6 +35,7 @@ public class MinecleanerManager {
private final MinecleanerPlugin plugin; private final MinecleanerPlugin plugin;
private final Inventory confirmPlayingInventory; private final Inventory confirmPlayingInventory;
private final HashMap<Integer, String> sizes; private final HashMap<Integer, String> sizes;
public BukkitTask schedulerGameOver;
// Statistics // Statistics
private final StatisticKey statisticsWonGamesTotal; private final StatisticKey statisticsWonGamesTotal;
@ -174,7 +173,7 @@ public class MinecleanerManager {
ps.increaseScore(sg, 1); ps.increaseScore(sg, 1);
} }
Bukkit.getScheduler().runTaskLater(plugin, () -> { schedulerGameOver = Bukkit.getScheduler().runTaskLater(plugin, () -> {
if (arena.getCurrentPlayer() == null) { if (arena.getCurrentPlayer() == null) {
arena.removePlayer(); arena.removePlayer();
} else { } else {
@ -235,7 +234,7 @@ public class MinecleanerManager {
player.sendMessage(ChatColor.YELLOW + "Glückwunsch, du konntest das " + plugin.getDisplayedPluginName() + "-Feld in " + ChatColor.RED + MinecleanerStringUtil.timeToString(millis, false) + ChatColor.YELLOW + " erfolgreich lösen!"); player.sendMessage(ChatColor.YELLOW + "Glückwunsch, du konntest das " + plugin.getDisplayedPluginName() + "-Feld in " + ChatColor.RED + MinecleanerStringUtil.timeToString(millis, false) + ChatColor.YELLOW + " erfolgreich lösen!");
} }
Bukkit.getScheduler().runTaskLater(plugin, () -> { schedulerGameOver = Bukkit.getScheduler().runTaskLater(plugin, () -> {
if(arena.getCurrentPlayer() == null) { if(arena.getCurrentPlayer() == null) {
arena.removePlayer(); arena.removePlayer();
} else { } else {
@ -464,4 +463,6 @@ public class MinecleanerManager {
} }
public SettingKey getMinecleanerResetTimeSettingKey() {return minecleanerResetTimerSettingKey; } public SettingKey getMinecleanerResetTimeSettingKey() {return minecleanerResetTimerSettingKey; }
public BukkitTask getSchedulerGameOver() { return schedulerGameOver; }
} }