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 IngameListener();
new GlobalListener();
new LobbyListener();
new NotLobbyListener();
final LobbyCountdown lobbyCountdown = new LobbyCountdown();
new EndCountdown(lobbyCountdown);
@@ -19,6 +19,8 @@
package de.steamwar.towerrun.config;
import de.steamwar.sql.Event;
import de.steamwar.sql.EventFight;
import de.steamwar.towerrun.TowerRun;
import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
@@ -41,6 +43,12 @@ public class Config {
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 {
File configFile = new File(TowerRun.getInstance().getDataFolder(), "config.yml");
if (!configFile.exists()) {
@@ -57,9 +65,34 @@ public class Config {
DESTROYABLE_BLOCKS = EnumSet.copyOf(config.getStringList("destroyable").stream().map(Material::valueOf).collect(Collectors.toSet()));
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() {
return EVENT_KAMPF_ID == -1;
}
public static boolean event() {
return EVENT_KAMPF_ID > 0;
}
}
@@ -20,7 +20,9 @@
package de.steamwar.towerrun.game;
import de.steamwar.core.CraftbukkitWrapper;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.towerrun.TowerRun;
import de.steamwar.towerrun.config.Config;
import de.steamwar.towerrun.config.WorldConfig;
import de.steamwar.towerrun.state.GameState;
import de.steamwar.towerrun.state.GameStates;
@@ -64,7 +66,6 @@ public class TowerRunGame {
public static void start() {
if (GameState.getCurrentState() == GameStates.GENERATING_TOWER) {
PLAYERS_ALIVE.addAll(TowerRunPlayer.getAll());
PLAYERS_ALIVE.forEach(p -> {
p.reset();
p.player().setGameMode(GameMode.SURVIVAL);
@@ -108,6 +109,10 @@ public class TowerRunGame {
PLAYERS_ALIVE.clear();
Bukkit.getOnlinePlayers().forEach(player -> player.sendTitle(TowerRun.getMessage().parse("GAME_TIE", player), "", 10, 70, 20));
GameState.nextState();
if (Config.event()) {
Config.EVENT_FIGHT.setErgebnis(3);
}
}
public static void win(TowerRunPlayer tPlayer) {
@@ -120,6 +125,10 @@ public class TowerRunGame {
player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_DEATH, 1, 1);
});
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() {
@@ -38,11 +38,6 @@ public class GlobalListener extends GameStateBukkitListener {
super(EnumSet.allOf(GameStates.class));
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
TowerRunPlayer.get(event.getPlayer());
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
if (TowerRunGame.isAlive(TowerRunPlayer.get(event.getPlayer()))) {
@@ -19,8 +19,12 @@
package de.steamwar.towerrun.listener;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.towerrun.TowerRun;
import de.steamwar.towerrun.config.Config;
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.GameStates;
import org.bukkit.GameMode;
@@ -34,6 +38,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import java.util.EnumSet;
import java.util.HashMap;
public class LobbyListener extends GameStateBukkitListener {
public LobbyListener() {
@@ -43,6 +48,7 @@ public class LobbyListener extends GameStateBukkitListener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (TowerRun.getTowerGenerator() != null) {
player.teleport(TowerRun.getTowerGenerator().getSpawn());
player.setGameMode(GameMode.SPECTATOR);
@@ -50,6 +56,22 @@ public class LobbyListener extends GameStateBukkitListener {
player.teleport(WorldConfig.SPAWN);
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