Kits now appear when there's map voting

This commit is contained in:
Sam 2018-07-23 18:18:19 +01:00 committed by Alexander Meech
parent c39995aa20
commit 34eeb208e2
17 changed files with 107 additions and 143 deletions

View File

@ -67,9 +67,6 @@ public enum Preference implements Permission
COLOR_SUFFIXES(true, PreferenceCategory.USER, Material.WOOL, "Color Chat Suffixes", "Enabling this will color your", "chat suffixes like ¯\\_(ツ)_/¯", "based on your rank."),
PARTICLES_IN_GAME(true, PreferenceCategory.GAME_PLAY, Material.NETHER_STAR, "Display Particles", "Enabling this will show your selected", "particle aura in game.")
;
private static final Map<Integer, Preference> PREFERENCE_MAP = Maps.newHashMap();

View File

@ -170,7 +170,6 @@ import nautilus.game.arcade.managers.chat.GameChatManager;
import nautilus.game.arcade.managers.lobby.LobbyManager;
import nautilus.game.arcade.managers.lobby.current.NewGameLobbyManager;
import nautilus.game.arcade.managers.lobby.legacy.LegacyGameLobbyManager;
import nautilus.game.arcade.managers.voting.event.VoteStartEvent;
public class ArcadeManager extends MiniPlugin implements IRelation
{
@ -417,7 +416,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
@Override
public void handlePlayerJoin(String playerName)
{
if (GetGame() != null && GetGame().GetState() != GameState.Loading && GetGame().GetState() != GameState.Recruit && GetGame().UseCustomScoreboard)
if (GetGame() != null && !GetGame().inLobby() && GetGame().UseCustomScoreboard)
{
return;
}
@ -518,9 +517,14 @@ public class ArcadeManager extends MiniPlugin implements IRelation
@Override
public void draw(MineplexScoreboard scoreboard)
{
if (GetGame() != null)
if (_gameCreationManager.getVotingManager().isVoteInProgress())
{
scoreboard.setSidebarName(C.Bold + "Vote ends in " + C.cGreenB + _gameCreationManager.getVotingManager().getCurrentVote().getTimer());
}
else if (GetGame() != null)
{
int countdown = GetGame().GetCountdown();
GameState state = GetGame().GetState();
if (countdown > 0)
{
@ -530,19 +534,15 @@ public class ArcadeManager extends MiniPlugin implements IRelation
{
scoreboard.setSidebarName(C.cGreenB + "In Progress...");
}
else if (GetGame().GetState() == GameState.Recruit)
else if (state == GameState.Recruit || state == GameState.PreLoad)
{
scoreboard.setSidebarName(C.cGreenB + "Waiting for players");
}
else if (GetGame().GetState() == GameState.Loading)
else if (state == GameState.Loading)
{
scoreboard.setSidebarName(C.cGreenB + "Loading...");
}
}
else if (_gameCreationManager.getVotingManager().isVoteInProgress())
{
scoreboard.setSidebarName(C.Bold + "Vote ends in " + C.cGreenB + _gameCreationManager.getVotingManager().getCurrentVote().getTimer());
}
else
{
scoreboard.setSidebarName(C.cGreenB + "Waiting for players");
@ -974,7 +974,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
team.RemovePlayer(player);
}
}
else if (_game != null && _game.GetState() != GameState.Recruit) //Game is NOT in lobby
else if (_game != null && !_game.inLobby()) //Game is NOT in lobby
{
addSpectator(player, true);
_specList.add(player);
@ -1628,14 +1628,15 @@ public class ArcadeManager extends MiniPlugin implements IRelation
@EventHandler(priority = EventPriority.LOWEST)
public void cosmeticState(GameStateChangeEvent event)
{
//Disable
if (event.GetState() == GameState.Recruit)
GameState state = event.GetState();
if (state == GameState.PreLoad || state == GameState.Dead)
{
getTitles().forceEnable();
getCosmeticManager().setActive(true);
getCosmeticManager().setHideParticles(false);
}
else if (event.GetState() == GameState.Prepare || event.GetState() == GameState.Loading || event.GetState() == GameState.Dead)
else if (state == GameState.Prepare)
{
Game game = event.GetGame();
@ -1648,31 +1649,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
}
}
if (game.AllowParticles)
{
for (Player player : UtilServer.getPlayersCollection())
{
Gadget gadget = getCosmeticManager().getGadgetManager().getActive(player, GadgetType.PARTICLE);
if (gadget == null || isVanished(player))
{
continue;
}
if (getPreferences().get(player).isActive(Preference.PARTICLES_IN_GAME))
{
if (!gadget.isActive(player))
{
gadget.enable(player, false);
}
}
else
{
gadget.disable(player, false);
}
}
}
else
if (!game.AllowParticles)
{
getCosmeticManager().setHideParticles(true);
}
@ -1684,14 +1661,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation
}
}
@EventHandler
public void onVote(VoteStartEvent event)
{
getTitles().forceEnable();
getCosmeticManager().showInterface(true);
getCosmeticManager().setHideParticles(false);
}
@EventHandler
public void disableGadget(PlayerJoinEvent event)
{

View File

@ -30,7 +30,7 @@ public class StartCommand extends CommandBase<ArcadeManager>
return;
}
if (Plugin.GetGame().GetState() != GameState.Recruit)
if (!Plugin.GetGame().inLobby())
{
UtilPlayer.message(caller, F.main("Game", "The game is already starting, it cannot be started again!"));
return;

View File

@ -36,7 +36,7 @@ public class StopCommand extends CommandBase<ArcadeManager>
UtilPlayer.message(caller, F.main("Game", "The game is already ending, it cannot be ended again"));
return;
}
else if (Plugin.GetGame().GetState() == GameState.Recruit)
else if (Plugin.GetGame().inLobby())
{
Plugin.GetGame().SetState(GameState.Dead);
}

View File

@ -9,8 +9,8 @@ import org.bukkit.event.HandlerList;
public class GameStateChangeEvent extends Event
{
private static final HandlerList handlers = new HandlerList();
private Game _game;
private GameState _to;
private final Game _game;
private final GameState _to;
public GameStateChangeEvent(Game game, GameState to)
{

View File

@ -148,7 +148,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
public enum GameState
{
Loading, Recruit, Prepare, Live, End, Dead
PreLoad, Loading, Recruit, Prepare, Live, End, Dead
}
public ArcadeManager Manager;
@ -160,7 +160,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
private PhasedLifetime<GameState> _lifetime = new PhasedLifetime<>();
// State
private GameState _gameState = GameState.Loading;
private GameState _gameState = GameState.PreLoad;
private long _gameLiveTime;
private long _gameStateTime = System.currentTimeMillis();
@ -800,6 +800,11 @@ public abstract class Game extends ListenerComponent implements Lifetimed
return _gameStateTime;
}
public boolean inLobby()
{
return GetState() == GameState.PreLoad || GetState() == GameState.Loading || GetState() == GameState.Recruit;
}
public boolean InProgress()
{
return GetState() == GameState.Prepare || GetState() == GameState.Live;
@ -1587,7 +1592,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
@EventHandler
public void HelpUpdate(UpdateEvent event)
{
if (_help == null || _help.length == 0 || event.getType() != UpdateType.SLOWER || GetState() != GameState.Recruit)
if (_help == null || _help.length == 0 || event.getType() != UpdateType.SLOWER || !inLobby())
{
return;
}
@ -1791,17 +1796,17 @@ public abstract class Game extends ListenerComponent implements Lifetimed
Manager.GetGameCreationManager().setNextGameType(gameType);
// End Current
if (GetState() == GameState.Recruit)
if (InProgress())
{
SetState(GameState.Dead);
if (inform)
Announce(C.cAqua + C.Bold + caller.getName() + " has changed game to " + gameType.getName() + ".");
Announce(C.cAquaB + caller.getName() + " has changed game to " + gameType.getName() + ".");
}
else
{
if (inform)
Announce(C.cAqua + C.Bold + caller.getName() + " set next game to " + gameType.getName() + ".");
Announce(C.cAquaB + caller.getName() + " set next game to " + gameType.getName() + ".");
}
}

View File

@ -1094,10 +1094,7 @@ public class Minestrike extends TeamGame
@EventHandler(priority = EventPriority.HIGH)
public void specToTeam(PlayerJoinEvent event)
{
if (GetState() == GameState.Recruit || GetState() == GameState.Loading)
return;
if (Manager.isVanished(event.getPlayer()))
if (inLobby() || Manager.isVanished(event.getPlayer()))
{
return;
}

View File

@ -78,9 +78,8 @@ public class CustomScoreboardModule extends Module
public void playerJoin(PlayerJoinEvent event)
{
Player player = event.getPlayer();
GameState state = getGame().GetState();
if (state == GameState.Loading || state == GameState.Recruit)
if (getGame().inLobby())
{
return;
}

View File

@ -19,6 +19,7 @@ import mineplex.core.common.Pair;
import mineplex.core.common.timing.TimingManager;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.updater.UpdateType;
@ -28,6 +29,7 @@ import mineplex.minecraft.game.core.combat.CombatManager.AttackReason;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameMode;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.managers.voting.Vote;
@ -93,7 +95,7 @@ public class GameCreationManager implements Listener
_ended.add(Manager.GetGame());
//Lobby Display
Manager.GetLobby().DisplayLast(Manager.GetGame());
Manager.GetLobby().displayLast(Manager.GetGame());
Manager.SetGame(null);
}
@ -285,11 +287,11 @@ public class GameCreationManager implements Listener
ModePref = null;
// No map voting, load the maps now
boolean loadMapsNow = !Manager.GetServerConfig().MapVoting;
try
{
// No map voting, load the maps now
boolean loadMapsNow = !Manager.GetServerConfig().MapVoting;
if (loadMapsNow)
{
loadMaps(gameType);
@ -327,20 +329,25 @@ public class GameCreationManager implements Listener
return;
}
TimingManager.start("DisplayNext");
Manager.GetLobby().DisplayNext(Manager.GetGame());
TimingManager.stop("DisplayNext");
TimingManager.start("registerEvents");
Manager.GetGame().getLifetime().start(GameState.Loading);
Manager.GetGame().getLifetime().start(GameState.PreLoad);
// Need to manually call the the event
UtilServer.CallEvent(new GameStateChangeEvent(Manager.GetGame(), GameState.PreLoad));
TimingManager.stop("registerEvents");
Manager.GetLobby().displayNext(Manager.GetGame());
if (loadMapsNow)
{
Manager.GetGame().SetState(GameState.Loading);
}
}
private void checkMapVoting()
{
Game game = Manager.GetGame();
if (game == null || MapPref != null || !Manager.GetServerConfig().MapVoting || Manager.GetServerConfig().GameVoting)
if (game == null || game.GetState() != GameState.PreLoad || MapPref != null || !Manager.GetServerConfig().MapVoting || Manager.GetServerConfig().GameVoting)
{
return;
}
@ -349,6 +356,7 @@ public class GameCreationManager implements Listener
{
MapPref = _votingManager.getFinishedVote().getWinner().getName();
_votingManager.deactivate();
game.SetState(GameState.Loading);
// Load maps for the running game
loadMaps(game.GetType());

View File

@ -917,7 +917,7 @@ public class GameFlagManager implements Listener
//Not Playing
for (Player player : UtilServer.getPlayers())
{
if (game == null || game.GetState() == GameState.Recruit || (!game.IsAlive(player) && game.shouldHeal(player)))
if (game == null || game.inLobby() || (!game.IsAlive(player) && game.shouldHeal(player)))
{
player.setMaxHealth(20);
player.setHealth(20);

View File

@ -461,8 +461,10 @@ public class GameManager implements Listener
@EventHandler
public void restartServerCheck(RestartTriggerEvent event)
{
if (Manager.GetGame() != null && Manager.GetGame().GetState() != GameState.Recruit && event.getReason() == RestartTriggerEvent.RestartReason.UPDATE)
if (Manager.GetGame() != null && !Manager.GetGame().inLobby() && event.getReason() == RestartTriggerEvent.RestartReason.UPDATE)
{
event.setCancelled(true);
}
}
@EventHandler
@ -663,7 +665,7 @@ public class GameManager implements Listener
Game game = Manager.GetGame();
if (game == null) return;
if (game.GetCountdown() > 0 || game.GetState() != GameState.Recruit)
if (game.GetCountdown() > 0 || !game.inLobby())
{
UtilPlayer.message(event.getPlayer(), F.main("Carl", "You can't use my spinner at the moment!"));
event.setCancelled(true);

View File

@ -68,7 +68,7 @@ public class HubClockManager implements Listener
@EventHandler
public void giveOnNextLobby(GameStateChangeEvent event)
{
if (event.GetState() != GameState.Recruit && event.GetState() != GameState.Dead || !canGiveClock())
if (!canGiveClock())
{
return;
}
@ -141,6 +141,6 @@ public class HubClockManager implements Listener
private boolean canGiveClock()
{
return _manager.GetGame() == null || _manager.GetGame().GetState() == GameState.Recruit || _manager.GetGame().GiveClock;
return _manager.GetGame() == null || _manager.GetGame().inLobby() || _manager.GetGame().GiveClock;
}
}

View File

@ -134,7 +134,7 @@ public class IdleManager implements Listener
{
if (UtilTime.elapsed(_idle.get(player.getUniqueId()), _arcadeManager.GetGame().IsLive() ? 240000 : 120000))
{
if (_arcadeManager.GetGame().GetState() != GameState.Recruit && !_arcadeManager.GetGame().IsAlive(player))
if (!_arcadeManager.GetGame().inLobby() && !_arcadeManager.GetGame().IsAlive(player))
continue;
if (_arcadeManager.GetClients().Get(player).hasPermission(Perm.BYPASS_KICK))

View File

@ -113,7 +113,7 @@ public class ServerUptimeManager implements Listener
if (Manager.GetGame() == null)
return;
if (Manager.GetGame().GetState() != GameState.Recruit)
if (!Manager.GetGame().inLobby())
return;
if (!UtilTime.elapsed(Manager.GetGame().GetStateTime(), SHUTDOWN_DELAY)

View File

@ -326,7 +326,7 @@ public class GameChatManager implements Listener
private JsonMessage buildJSON(Player player, String prefix, String rankStr, PermissionGroup group, String name, LinkedList<ChatStatData> hoverText, String message)
{
if (_manager.GetGame() == null || _manager.GetGame().GetState() == GameState.Recruit)
if (_manager.GetGame() == null || _manager.GetGame().inLobby())
{
if (group.getDisplay(false, false, false, false).isEmpty())
{

View File

@ -32,6 +32,7 @@ import com.google.common.collect.Maps;
import mineplex.core.PlayerSelector;
import mineplex.core.account.permissions.PermissionGroup;
import mineplex.core.common.timing.TimingManager;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilBlockText;
import mineplex.core.common.util.UtilBlockText.TextAlign;
@ -191,17 +192,7 @@ public abstract class LobbyManager implements Listener
return;
}
if (event.GetGame().GetMode() == null)
{
writeGameLine(event.GetGame().WorldData.MapName, 1, 159, (byte) 4);
}
else
{
writeGameLine(event.GetGame().WorldData.MapName, 2, 159, (byte) 4);
}
writeTeamLine("Select", 0, 159, (byte) 15);
writeTeamLine("Team", 1, 159, (byte) 4);
writeGameLine(event.GetGame().WorldData.MapName, event.GetGame().GetMode() == null ? 1 : 2, 159, (byte) 4);
//Remove Old Ents
getTeams().keySet().forEach(Entity::remove);
@ -211,15 +202,8 @@ public abstract class LobbyManager implements Listener
getTeamBlocks().forEach(Block::setType);
getTeamBlocks().clear();
//Smash
if (event.GetGame().HideTeamSheep)
{
if (event.GetGame().ReplaceTeamsWithKits)
{
//Text
writeTeamLine("Select", 0, 159, (byte) 15);
writeTeamLine("Kit", 1, 159, (byte) 4);
}
return;
}
@ -238,7 +222,7 @@ public abstract class LobbyManager implements Listener
UpdateFirework();
// TODO TEMPORARY INCREASE 100 -> 200. ALLOW CUSTOM BORDERS WHEN IF REWRITTEN
PlayerSelector.selectPlayers(UtilLambda.and(PlayerSelector.inWorld(WORLD), UtilLambda.not(PlayerSelector.within(getSpawn(), 200))))
.forEach(player -> player.teleport(getSpawn()));
.forEach(player -> player.teleport(getSpawn()));
}
else if (event.getType() == UpdateType.SLOW)
{
@ -288,7 +272,7 @@ public abstract class LobbyManager implements Listener
private void UpdateAdvertise()
{
if (_manager.GetGame() == null || _manager.GetGame().GetState() != GameState.Recruit)
if (_manager.GetGame() == null || !_manager.GetGame().inLobby())
{
return;
}
@ -369,7 +353,7 @@ public abstract class LobbyManager implements Listener
UtilFirework.playFirework(getSpawn().clone().add(Math.random() * 160 - 80, 30 + Math.random() * 10, Math.random() * 160 - 80), Type.BALL_LARGE, _fireworkColor, false, false);
}
public void DisplayLast(Game game)
public void displayLast(Game game)
{
//Start Fireworks
RegisterFireworks(game.WinnerTeam);
@ -389,57 +373,59 @@ public abstract class LobbyManager implements Listener
getTeamBlocks().clear();
}
public void DisplayNext(Game game)
public void displayNext(Game game)
{
TimingManager.start("displayNext");
displayGame(game);
displayWaiting(false);
displayKitTeamText(game);
UtilServer.getPlayersCollection().forEach(this::equipActiveKit);
createKits(game);
TimingManager.stop("displayNext");
}
public void displayGame(Game game)
{
writeGameLine(game.GetType().GetLobbyName(), 0, 159, (byte) 14);
if (_manager.GetGame().GetMode() == null)
if (game.GetMode() == null)
{
writeGameLine("", 1, Material.AIR.getId(), (byte) 0);
}
else
{
writeGameLine(_manager.GetGame().GetMode(), 1, 159, (byte) 1);
writeGameLine(game.GetMode(), 1, 159, (byte) 1);
}
}
UtilServer.getPlayersCollection().forEach(this::equipActiveKit);
displayWaiting(false);
createKits(game);
writeTeamLine("Select", 0, 159, (byte) 15);
writeTeamLine("Team", 1, 159, (byte) 4);
public void displayKitTeamText(Game game)
{
writeKitLine("Select", 0, 159, (byte) 15);
writeKitLine("Kit", 1, 159, (byte) 4);
//Smash
if (game.HideTeamSheep)
{
if (game.ReplaceTeamsWithKits)
{
//Text
writeTeamLine("Select", 0, 159, (byte) 15);
writeTeamLine("Kit", 1, 159, (byte) 4);
}
return;
}
createTeams(game);
else
{
writeTeamLine("Select", 0, 159, (byte) 15);
writeTeamLine("Team", 1, 159, (byte) 4);
}
}
public void displayWaiting(boolean forVote)
{
if (forVote)
{
int i = 0;
if (_manager.GetServerConfig().MapVoting)
{
writeGameLine(_manager.GetServerConfig().GameList.get(0).getName(), i++, Material.STAINED_CLAY.getId(), (byte) 14);
}
for (; i < 3; i++)
for (int i = 1; i < 3; i++)
{
writeGameLine("", i, Material.AIR.getId(), (byte) 0);
}
@ -470,15 +456,18 @@ public abstract class LobbyManager implements Listener
}
Game game = _manager.GetGame();
if (game != null && game.GetState() != GameState.Loading && game.GetState() != GameState.Recruit)
if (game != null && !game.inLobby())
{
if (game.UseCustomScoreboard)
{
return;
}
for (Player player : UtilServer.getPlayers())
for (Player player : UtilServer.getPlayersCollection())
{
player.setScoreboard(_manager.GetGame().GetScoreboard().getScoreboard()); //XXX
}
}
else
{
@ -570,7 +559,7 @@ public abstract class LobbyManager implements Listener
if (player != null)
{
boolean rankIsUltra = group == PermissionGroup.PLAYER &&
_manager.GetDonation().Get(player).ownsUnknownSalesPackage(_manager.GetServerConfig().ServerType + " ULTRA");
_manager.GetDonation().Get(player).ownsUnknownSalesPackage(_manager.GetServerConfig().ServerType + " ULTRA");
if (rankIsUltra)
{
@ -601,12 +590,7 @@ public abstract class LobbyManager implements Listener
@EventHandler
public void disallowInventoryClick(InventoryClickEvent event)
{
if (_manager.GetGame() == null)
{
return;
}
if (_manager.GetGame().GetState() != GameState.Recruit)
if (_manager.GetGame() == null || !_manager.GetGame().inLobby())
{
return;
}
@ -628,7 +612,7 @@ public abstract class LobbyManager implements Listener
Game game = _manager.GetGame();
if (game != null && game.GetState() != GameState.Recruit && game.GadgetsDisabled)
if (game != null && !game.inLobby() && game.GadgetsDisabled)
{
return;
}
@ -749,7 +733,7 @@ public abstract class LobbyManager implements Listener
@EventHandler
public void onInteractArmorStand(PlayerArmorStandManipulateEvent event)
{
if (_manager.GetGame() == null || _manager.GetGame().GetState() == GameState.Recruit)
if (_manager.GetGame() == null || !_manager.GetGame().inLobby())
{
event.setCancelled(true);
}
@ -849,12 +833,12 @@ public abstract class LobbyManager implements Listener
{
return _generatePodiums;
}
public Location getMissions()
{
return _missions;
}
public void setMissions(Location loc)
{
_missions = loc;
@ -863,7 +847,7 @@ public abstract class LobbyManager implements Listener
public boolean isNearSpawn(Location location, int distance)
{
// offsetSquared should be compared to squared distance, obviously...
return UtilMath.offsetSquared(_spawn, location) < distance*distance;
return UtilMath.offsetSquared(_spawn, location) < distance * distance;
}
public boolean isNearSpawn(Location location)
@ -875,7 +859,7 @@ public abstract class LobbyManager implements Listener
@EventHandler
public void blockTrampolineNearSpawn(GadgetSelectLocationEvent event)
{
if (event.getGadget() instanceof ItemTrampoline && isNearSpawn(event.getLocation(), 20))
if (event.getGadget() instanceof ItemTrampoline && isNearSpawn(event.getLocation(), 20))
{
event.setCancelled(true);
}

View File

@ -119,6 +119,9 @@ public class VotingManager extends ListenerComponent implements Lifetimed
UtilPlayer.closeInventoryIfOpen(player);
}
_manager.GetLobby().displayGame(_manager.GetGame());
_manager.GetLobby().displayWaiting(false);
_currentVote.onEnd();
_currentVote = null;