From f39b7787d98120736193aa43df65718b923f2fd5 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 30 Oct 2020 14:49:45 +0100 Subject: [PATCH] Implementing event mode for event bungee Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/BungeeCore.java | 23 +++++++----- src/de/steamwar/bungeecore/EventStarter.java | 4 +++ .../bungeecore/commands/BauCommand.java | 3 ++ .../listeners/EventModeListener.java | 36 +++++++++++++++++++ src/de/steamwar/bungeecore/sql/Event.java | 5 +++ 5 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 src/de/steamwar/bungeecore/listeners/EventModeListener.java diff --git a/src/de/steamwar/bungeecore/BungeeCore.java b/src/de/steamwar/bungeecore/BungeeCore.java index 466f971e..25ccdf6e 100644 --- a/src/de/steamwar/bungeecore/BungeeCore.java +++ b/src/de/steamwar/bungeecore/BungeeCore.java @@ -62,6 +62,7 @@ public class BungeeCore extends Plugin { public static String LOBBY_SERVER; public static String USERWORLDS15; public static String BAUWELT15; + public static boolean EVENT_MODE; private static BungeeCore instance; @@ -97,17 +98,14 @@ public class BungeeCore extends Plugin { new MsgCommand(); new RCommand(); new PingCommand(); - new WebregisterCommand(); new AlertCommand(); new KickCommand(); new JoinmeCommand(); new TpCommand(); - new FightCommand(); new HelpCommand(); new BanCommand(); new UnbanCommand(); new DenyCommand("watchcat", "wc"); - new ChallengeCommand(); new TeamCommand(); new ServerTeamchatCommand(); new EventCommand(); @@ -118,18 +116,26 @@ public class BungeeCore extends Plugin { new BugCommand(); new WhoisCommand(); new RegelnCommand(); - new HistoricCommand(); - new CheckCommand(); - new RankedCommand(); new RankCommand(); new IgnoreCommand(); new UnIgnoreCommand(); + if(!EVENT_MODE){ + new WebregisterCommand(); + new FightCommand(); + new ChallengeCommand(); + new HistoricCommand(); + new CheckCommand(); + new RankedCommand(); + + new Broadcaster(); + }else{ + new EventModeListener(); + } + new EventStarter(); - new Broadcaster(); new SessionManager(); new SpigotReceiver(); - new TablistManager(); getProxy().getScheduler().schedule(this, () -> { @@ -226,6 +232,7 @@ public class BungeeCore extends Plugin { LOBBY_SERVER = config.getString("lobbyserver"); USERWORLDS15 = config.getString("userworlds15"); BAUWELT15 = config.getString("bauwelt15"); + EVENT_MODE = config.getBoolean("eventmode"); Broadcaster.setBroadCastMsgs(config.getStringList("broadcasts").toArray(new String[1])); PollSystem.init(config.getString("poll.question"), config.getStringList("poll.answers")); CheckCommand.loadCheckQuestions(config.getSection("checkquestions")); diff --git a/src/de/steamwar/bungeecore/EventStarter.java b/src/de/steamwar/bungeecore/EventStarter.java index e2a44f8b..9cb1eaf9 100644 --- a/src/de/steamwar/bungeecore/EventStarter.java +++ b/src/de/steamwar/bungeecore/EventStarter.java @@ -19,6 +19,7 @@ package de.steamwar.bungeecore; +import de.steamwar.bungeecore.sql.Event; import de.steamwar.bungeecore.sql.EventFight; import de.steamwar.bungeecore.sql.SteamwarUser; import de.steamwar.bungeecore.sql.Team; @@ -58,6 +59,9 @@ public class EventStarter implements Runnable { EventFight next; while((next = nextFight(fights)) != null){ + if(!BungeeCore.EVENT_MODE && Event.get(next.getEventID()).spectateSystem()) + break; //Don't start EventServer if not the event bungee + Team blue = Team.get(next.getTeamBlue()); Team red = Team.get(next.getTeamRed()); String serverName = blue.getTeamKuerzel() + " vs " + red.getTeamKuerzel(); diff --git a/src/de/steamwar/bungeecore/commands/BauCommand.java b/src/de/steamwar/bungeecore/commands/BauCommand.java index 045e1bb8..33856509 100644 --- a/src/de/steamwar/bungeecore/commands/BauCommand.java +++ b/src/de/steamwar/bungeecore/commands/BauCommand.java @@ -37,6 +37,9 @@ public class BauCommand { private static final String UNKNOWN_PLAYER = BungeeCore.CHAT_PREFIX + "§cUnbekannter Spieler"; public static void onBau(ChatEvent e, String[] command){ + if(BungeeCore.EVENT_MODE) + return; + ProxiedPlayer p = (ProxiedPlayer) e.getSender(); Subserver server = Subserver.getSubserver(p); Bauserver bau = (server != null && server.getType() == Servertype.BAUSERVER) ? (Bauserver)server : null; diff --git a/src/de/steamwar/bungeecore/listeners/EventModeListener.java b/src/de/steamwar/bungeecore/listeners/EventModeListener.java new file mode 100644 index 00000000..c5bc2561 --- /dev/null +++ b/src/de/steamwar/bungeecore/listeners/EventModeListener.java @@ -0,0 +1,36 @@ +package de.steamwar.bungeecore.listeners; + +import de.steamwar.bungeecore.sql.Event; +import de.steamwar.bungeecore.sql.EventFight; +import de.steamwar.bungeecore.sql.SteamwarUser; +import de.steamwar.bungeecore.sql.TeamTeilnahme; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.event.PostLoginEvent; +import net.md_5.bungee.event.EventHandler; + +public class EventModeListener extends BasicListener { + + private static final BaseComponent[] nonParticipant = TextComponent.fromLegacyText("§cDu bist kein Eventteilnehmer."); + + @EventHandler + public void onPostLogin(PostLoginEvent e) { + SteamwarUser user = SteamwarUser.get(e.getPlayer().getUniqueId()); + + Event event = Event.get(); + if(event == null){ + e.getPlayer().disconnect(nonParticipant); + return; + } + + if(TeamTeilnahme.nimmtTeil(user.getTeam(), event.getEventID())) + return; + + for(EventFight eventFight : EventFight.getEvent(event.getEventID())){ + if(eventFight.getKampfleiter() == user.getId()) + return; + } + + e.getPlayer().disconnect(nonParticipant); + } +} diff --git a/src/de/steamwar/bungeecore/sql/Event.java b/src/de/steamwar/bungeecore/sql/Event.java index fae76cda..336128e6 100644 --- a/src/de/steamwar/bungeecore/sql/Event.java +++ b/src/de/steamwar/bungeecore/sql/Event.java @@ -36,6 +36,7 @@ public class Event { private final Timestamp end; private final int maximumTeamMembers; private final boolean publicSchemsOnly; + private final boolean spectateSystem; private static Event current = null; @@ -46,6 +47,7 @@ public class Event { this.end = rs.getTimestamp("End"); this.maximumTeamMembers = rs.getInt("MaximumTeamMembers"); this.publicSchemsOnly = rs.getBoolean("PublicSchemsOnly"); + this.spectateSystem = rs.getBoolean("SpectateSystem"); } public static Event get(){ @@ -128,4 +130,7 @@ public class Event { public boolean publicSchemsOnly() { return publicSchemsOnly; } + public boolean spectateSystem(){ + return spectateSystem; + } }