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 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
|
||||||
|
|||||||
Reference in New Issue
Block a user