forked from SteamWar/SteamWar
Make TowerRun Event System Capable
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user