Delete src/main/java/de/lasertag/game/GameManager.java via Git Manager GUI

This commit is contained in:
2026-06-21 18:43:02 +00:00
parent cf63d8dc86
commit 169f1b9963

View File

@@ -1,93 +0,0 @@
package de.lasertag.game;
import de.lasertag.LasertagPlugin;
import de.lasertag.arena.Arena;
import de.lasertag.player.LaserPlayer;
import org.bukkit.entity.Player;
import java.util.*;
public class GameManager {
private final LasertagPlugin plugin;
/** arenaName (lowercase) → Game */
private final Map<String, Game> games = new LinkedHashMap<>();
public GameManager(LasertagPlugin plugin) {
this.plugin = plugin;
// Spiele für alle vorhandenen Arenen erstellen
for (Arena arena : plugin.getArenaManager().getAll()) {
games.put(arena.getName().toLowerCase(), new Game(plugin, arena));
}
}
// ─── Spiel-Verwaltung ────────────────────────────────────────────────────
/** Wird aufgerufen wenn eine neue Arena erstellt wird. */
public Game createGame(Arena arena) {
Game g = new Game(plugin, arena);
games.put(arena.getName().toLowerCase(), g);
return g;
}
public Game getGame(String arenaName) {
return games.get(arenaName.toLowerCase());
}
/** Liefert das Spiel in dem der Spieler gerade ist, oder null. */
public Game getGameOf(Player player) {
return games.values().stream()
.filter(g -> g.getPlayers().containsKey(player.getUniqueId()))
.findFirst().orElse(null);
}
public LaserPlayer getLaserPlayer(Player player) {
Game g = getGameOf(player);
return g == null ? null : g.getLP(player.getUniqueId());
}
// ─── Join / Leave ────────────────────────────────────────────────────────
public boolean joinGame(Player player, String arenaName) {
String pre = plugin.getConfig().getString("messages.prefix","§8[§b§lLASERTAG§8] §r");
if (getGameOf(player) != null) {
player.sendMessage(pre + "§cDu bist bereits in einem Spiel! /lt leave");
return false;
}
Game g = games.get(arenaName.toLowerCase());
if (g == null) { player.sendMessage(pre + "§cArena '§e" + arenaName + "§c' nicht gefunden!"); return false; }
if (!g.getArena().isReady()) { player.sendMessage(pre + "§cDiese Arena ist noch nicht fertig eingerichtet!"); return false; }
if (!g.isJoinable()) { player.sendMessage(pre + "§cDas Spiel in dieser Arena läuft bereits!"); return false; }
return g.addPlayer(player);
}
/** Tritt dem am besten gefüllten, joinbaren Spiel bei. */
public boolean joinBest(Player player) {
String pre = plugin.getConfig().getString("messages.prefix","§8[§b§lLASERTAG§8] §r");
if (getGameOf(player) != null) {
player.sendMessage(pre + "§cDu bist bereits in einem Spiel!");
return false;
}
return games.values().stream()
.filter(g -> g.isJoinable() && g.getArena().isReady())
.max(Comparator.comparingInt(Game::getPlayerCount))
.map(g -> g.addPlayer(player))
.orElseGet(() -> { player.sendMessage(pre + "§cKein verfügbares Spiel! Benutze /lt list"); return false; });
}
public void leaveGame(Player player) {
Game g = getGameOf(player);
if (g != null) g.removePlayer(player);
}
// ─── Admin-Operationen ───────────────────────────────────────────────────
public void stopAllGames() {
for (Game g : games.values()) {
List<Player> online = new ArrayList<>(g.getOnline());
online.forEach(g::removePlayer);
}
}
public Collection<Game> getAllGames() { return Collections.unmodifiableCollection(games.values()); }
}