Update from Git Manager GUI

This commit is contained in:
2026-01-27 13:02:17 +01:00
parent bffeb8de32
commit 972ac7ca51
24 changed files with 1449 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
package de.velocityfall.manager;
import de.velocityfall.VelocityFall;
import de.velocityfall.utils.StatsHandler;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class GameManager {
public static void startArenaCountdown(String arenaName) {
VelocityFall plugin = VelocityFall.getInstance();
if (plugin.getGameStartedMap().getOrDefault(arenaName, false)) return;
new BukkitRunnable() {
int timeLeft = plugin.getConfig().getInt("BeforeGameCD", 15);
@Override
public void run() {
int playerCount = (int) plugin.getPlayerArenaMap().values().stream().filter(arenaName::equals).count();
if (playerCount < 1) {
cancel();
return;
}
if (timeLeft <= 5 && timeLeft > 0) {
broadcast(arenaName, "§aSpiel startet in §e" + timeLeft + "...");
}
if (timeLeft <= 0) {
plugin.getGameStartedMap().put(arenaName, true);
plugin.getArenaPlayersCountMap().put(arenaName, playerCount);
plugin.getSignManager().updateSign(arenaName);
broadcast(arenaName, "§6§lDAS SPIEL BEGINNT!");
Location spawn = plugin.getArenaManager().getArenaConfig().getLocation("Arenas." + arenaName + ".Spawn");
plugin.getPlayerArenaMap().forEach((p, a) -> {
if (arenaName.equals(a)) {
if (spawn != null) p.teleport(spawn);
p.setGameMode(GameMode.ADVENTURE);
p.setAllowFlight(false);
p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1f, 1f);
}
});
cancel();
}
timeLeft--;
}
}.runTaskTimer(plugin, 0L, 20L);
}
public static void startCountdown(String arenaName) {
startArenaCountdown(arenaName);
}
public static void checkForWinner(String arenaName) {
VelocityFall plugin = VelocityFall.getInstance();
var countMap = plugin.getArenaPlayersCountMap();
int remaining = countMap.getOrDefault(arenaName, 0);
if (remaining != 1) return;
var arenaPlayers = VelocityFall.getArenaPlayers(arenaName);
if (arenaPlayers.isEmpty()) return;
Player winner = arenaPlayers.get(0);
winner.sendMessage(VelocityFall.prefix + ChatColor.translateAlternateColorCodes('&',
plugin.getMessages().getMessagesConfig().getString("WinMessage", "&aDu hast gewonnen!")));
StatsHandler.addWin(winner.getUniqueId().toString());
plugin.ingameArenas.remove(arenaName);
plugin.ingamePlayers.remove(winner);
plugin.getPlayerArenaMap().remove(winner);
countMap.remove(arenaName);
plugin.getGameStartedMap().remove(arenaName);
winner.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
resetArena(arenaName);
plugin.getSignManager().updateSign(arenaName);
}
public static void resetArena(String arenaName) {
VelocityFall plugin = VelocityFall.getInstance();
plugin.getArenaBlocksMap().forEach((block, matName) -> block.setType(Material.valueOf(matName)));
plugin.getArenaBlocksMap().clear();
plugin.getGameStartedMap().put(arenaName, false);
plugin.getArenaPlayersCountMap().remove(arenaName);
Location lobby = plugin.getArenaManager().getArenaConfig().getLocation("Arenas." + arenaName + ".Lobby");
plugin.getPlayerArenaMap().entrySet().removeIf(e -> {
if (arenaName.equals(e.getValue())) {
Player p = e.getKey();
p.setGameMode(GameMode.SURVIVAL);
p.getInventory().clear();
if (lobby != null) p.teleport(lobby);
plugin.ingamePlayers.remove(p);
return true;
}
return false;
});
plugin.getSignManager().updateSign(arenaName);
}
private static void broadcast(String arena, String msg) {
VelocityFall plugin = VelocityFall.getInstance();
plugin.getPlayerArenaMap().forEach((player, a) -> {
if (arena.equals(a)) player.sendMessage(VelocityFall.prefix + msg);
});
}
}