Make TowerRun Event System Capable

This commit is contained in:
2025-02-01 22:58:49 +01:00
parent 90666e2d20
commit 414bd20eb9
5 changed files with 65 additions and 7 deletions
@@ -73,7 +73,6 @@ public class TowerRun extends JavaPlugin {
new LobbyListener(); new LobbyListener();
new IngameListener(); new IngameListener();
new GlobalListener(); new GlobalListener();
new LobbyListener();
new NotLobbyListener(); new NotLobbyListener();
final LobbyCountdown lobbyCountdown = new LobbyCountdown(); final LobbyCountdown lobbyCountdown = new LobbyCountdown();
new EndCountdown(lobbyCountdown); new EndCountdown(lobbyCountdown);
@@ -19,6 +19,8 @@
package de.steamwar.towerrun.config; package de.steamwar.towerrun.config;
import de.steamwar.sql.Event;
import de.steamwar.sql.EventFight;
import de.steamwar.towerrun.TowerRun; import de.steamwar.towerrun.TowerRun;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -41,6 +43,12 @@ public class Config {
private static final int EVENT_KAMPF_ID; private static final int EVENT_KAMPF_ID;
// Event
public static final EventFight EVENT_FIGHT;
public static final int EVENT_TEAM_BLUE_ID;
public static final int EVENT_TEAM_RED_ID;
public static final int EVENT_MAXIMUM_TEAM_MEMBERS;
static { static {
File configFile = new File(TowerRun.getInstance().getDataFolder(), "config.yml"); File configFile = new File(TowerRun.getInstance().getDataFolder(), "config.yml");
if (!configFile.exists()) { if (!configFile.exists()) {
@@ -57,9 +65,34 @@ public class Config {
DESTROYABLE_BLOCKS = EnumSet.copyOf(config.getStringList("destroyable").stream().map(Material::valueOf).collect(Collectors.toSet())); DESTROYABLE_BLOCKS = EnumSet.copyOf(config.getStringList("destroyable").stream().map(Material::valueOf).collect(Collectors.toSet()));
EVENT_KAMPF_ID = Integer.parseInt(System.getProperty("fightID", "0")); EVENT_KAMPF_ID = Integer.parseInt(System.getProperty("fightID", "0"));
if (event()) {
EVENT_FIGHT = EventFight.get(EVENT_KAMPF_ID);
if (EVENT_FIGHT == null) {
Bukkit.shutdown();
throw new IllegalStateException("Event not found");
}
Event event = Event.get(EVENT_FIGHT.getEventID());
EVENT_TEAM_BLUE_ID = EVENT_FIGHT.getTeamBlue();
EVENT_TEAM_RED_ID = EVENT_FIGHT.getTeamRed();
EVENT_MAXIMUM_TEAM_MEMBERS = event.getMaximumTeamMembers();
} else {
EVENT_FIGHT = null;
EVENT_TEAM_BLUE_ID = 0;
EVENT_TEAM_RED_ID = 0;
EVENT_MAXIMUM_TEAM_MEMBERS = Integer.MAX_VALUE;
}
} }
public static boolean test() { public static boolean test() {
return EVENT_KAMPF_ID == -1; return EVENT_KAMPF_ID == -1;
} }
public static boolean event() {
return EVENT_KAMPF_ID > 0;
}
} }
@@ -20,7 +20,9 @@
package de.steamwar.towerrun.game; package de.steamwar.towerrun.game;
import de.steamwar.core.CraftbukkitWrapper; import de.steamwar.core.CraftbukkitWrapper;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.towerrun.TowerRun; import de.steamwar.towerrun.TowerRun;
import de.steamwar.towerrun.config.Config;
import de.steamwar.towerrun.config.WorldConfig; import de.steamwar.towerrun.config.WorldConfig;
import de.steamwar.towerrun.state.GameState; import de.steamwar.towerrun.state.GameState;
import de.steamwar.towerrun.state.GameStates; import de.steamwar.towerrun.state.GameStates;
@@ -64,7 +66,6 @@ public class TowerRunGame {
public static void start() { public static void start() {
if (GameState.getCurrentState() == GameStates.GENERATING_TOWER) { if (GameState.getCurrentState() == GameStates.GENERATING_TOWER) {
PLAYERS_ALIVE.addAll(TowerRunPlayer.getAll());
PLAYERS_ALIVE.forEach(p -> { PLAYERS_ALIVE.forEach(p -> {
p.reset(); p.reset();
p.player().setGameMode(GameMode.SURVIVAL); p.player().setGameMode(GameMode.SURVIVAL);
@@ -108,6 +109,10 @@ public class TowerRunGame {
PLAYERS_ALIVE.clear(); PLAYERS_ALIVE.clear();
Bukkit.getOnlinePlayers().forEach(player -> player.sendTitle(TowerRun.getMessage().parse("GAME_TIE", player), "", 10, 70, 20)); Bukkit.getOnlinePlayers().forEach(player -> player.sendTitle(TowerRun.getMessage().parse("GAME_TIE", player), "", 10, 70, 20));
GameState.nextState(); GameState.nextState();
if (Config.event()) {
Config.EVENT_FIGHT.setErgebnis(3);
}
} }
public static void win(TowerRunPlayer tPlayer) { public static void win(TowerRunPlayer tPlayer) {
@@ -120,6 +125,10 @@ public class TowerRunGame {
player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_DEATH, 1, 1); player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_DEATH, 1, 1);
}); });
GameState.nextState(); GameState.nextState();
if (Config.event()) {
Config.EVENT_FIGHT.setErgebnis(SteamwarUser.get(tPlayer.player().getUniqueId()).getTeam() == Config.EVENT_TEAM_BLUE_ID ? 1 : 2);
}
} }
public static void reset() { public static void reset() {
@@ -38,11 +38,6 @@ public class GlobalListener extends GameStateBukkitListener {
super(EnumSet.allOf(GameStates.class)); super(EnumSet.allOf(GameStates.class));
} }
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
TowerRunPlayer.get(event.getPlayer());
}
@EventHandler @EventHandler
public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerQuit(PlayerQuitEvent event) {
if (TowerRunGame.isAlive(TowerRunPlayer.get(event.getPlayer()))) { if (TowerRunGame.isAlive(TowerRunPlayer.get(event.getPlayer()))) {
@@ -19,8 +19,12 @@
package de.steamwar.towerrun.listener; package de.steamwar.towerrun.listener;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.towerrun.TowerRun; import de.steamwar.towerrun.TowerRun;
import de.steamwar.towerrun.config.Config;
import de.steamwar.towerrun.config.WorldConfig; import de.steamwar.towerrun.config.WorldConfig;
import de.steamwar.towerrun.game.TowerRunGame;
import de.steamwar.towerrun.game.TowerRunPlayer;
import de.steamwar.towerrun.state.GameStateBukkitListener; import de.steamwar.towerrun.state.GameStateBukkitListener;
import de.steamwar.towerrun.state.GameStates; import de.steamwar.towerrun.state.GameStates;
import org.bukkit.GameMode; import org.bukkit.GameMode;
@@ -34,6 +38,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.HashMap;
public class LobbyListener extends GameStateBukkitListener { public class LobbyListener extends GameStateBukkitListener {
public LobbyListener() { public LobbyListener() {
@@ -43,6 +48,7 @@ public class LobbyListener extends GameStateBukkitListener {
@EventHandler @EventHandler
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
if (TowerRun.getTowerGenerator() != null) { if (TowerRun.getTowerGenerator() != null) {
player.teleport(TowerRun.getTowerGenerator().getSpawn()); player.teleport(TowerRun.getTowerGenerator().getSpawn());
player.setGameMode(GameMode.SPECTATOR); player.setGameMode(GameMode.SPECTATOR);
@@ -50,6 +56,22 @@ public class LobbyListener extends GameStateBukkitListener {
player.teleport(WorldConfig.SPAWN); player.teleport(WorldConfig.SPAWN);
player.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
} }
if (Config.event()) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
int team = user.getTeam();
if (team != Config.EVENT_TEAM_BLUE_ID && team != Config.EVENT_TEAM_RED_ID) {
player.setGameMode(GameMode.SPECTATOR);
return;
}
if (TowerRunGame.PLAYERS_ALIVE.stream().map(towerRunPlayer -> SteamwarUser.get(towerRunPlayer.player().getUniqueId()).getTeam()).filter(integer -> integer == team).count() < Config.EVENT_MAXIMUM_TEAM_MEMBERS) {
TowerRunGame.PLAYERS_ALIVE.add(TowerRunPlayer.get(player));
}
} else {
TowerRunGame.PLAYERS_ALIVE.add(TowerRunPlayer.get(player));
}
} }
@EventHandler @EventHandler