Allow the hub clock to exist when the game is null
This commit is contained in:
parent
2644066dcb
commit
04dc72fa77
|
@ -161,6 +161,7 @@ import nautilus.game.arcade.managers.GameRewardManager;
|
|||
import nautilus.game.arcade.managers.GameSpectatorManager;
|
||||
import nautilus.game.arcade.managers.GameStatManager;
|
||||
import nautilus.game.arcade.managers.GameWorldManager;
|
||||
import nautilus.game.arcade.managers.HubClockManager;
|
||||
import nautilus.game.arcade.managers.IdleManager;
|
||||
import nautilus.game.arcade.managers.NextBestGameManager;
|
||||
import nautilus.game.arcade.managers.ServerUptimeManager;
|
||||
|
@ -615,6 +616,11 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
_winStreakManager = require(WinStreakManager.class);
|
||||
_mineplexGameManager = require(MineplexGameManager.class);
|
||||
|
||||
if (IsHotbarHubClock())
|
||||
{
|
||||
new HubClockManager(this);
|
||||
}
|
||||
|
||||
new AdminCommands();
|
||||
|
||||
generatePermissions();
|
||||
|
|
|
@ -92,7 +92,6 @@ import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
|
|||
import nautilus.game.arcade.events.PlayerStateChangeEvent;
|
||||
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||
import nautilus.game.arcade.game.modules.AntiExpOrbModule;
|
||||
import nautilus.game.arcade.game.modules.HubClockModule;
|
||||
import nautilus.game.arcade.game.modules.Module;
|
||||
import nautilus.game.arcade.game.modules.gamesummary.GameSummaryModule;
|
||||
import nautilus.game.arcade.game.team.GameTeamModule;
|
||||
|
@ -195,7 +194,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed
|
|||
public boolean UseCustomScoreboard = false;
|
||||
|
||||
// Loaded from Map Config
|
||||
public WorldData WorldData = null;
|
||||
public WorldData WorldData;
|
||||
|
||||
// Game Help
|
||||
private int _helpIndex = 0;
|
||||
|
@ -427,7 +426,6 @@ public abstract class Game extends ListenerComponent implements Lifetimed
|
|||
|
||||
// Scoreboard
|
||||
Scoreboard = new GameScoreboard(this);
|
||||
WorldData = new WorldData(this);
|
||||
|
||||
// Stat Trackers
|
||||
registerStatTrackers(
|
||||
|
@ -480,12 +478,6 @@ public abstract class Game extends ListenerComponent implements Lifetimed
|
|||
_teamModule = new GameTeamModule();
|
||||
_teamModule.register(this);
|
||||
|
||||
if (getArcadeManager().IsHotbarHubClock())
|
||||
{
|
||||
new HubClockModule()
|
||||
.register(this);
|
||||
}
|
||||
|
||||
registerDebugCommand("kit", Perm.DEBUG_COMMANDS, PermissionGroup.ADMIN, (caller, args) ->
|
||||
{
|
||||
String kit = Arrays.stream(args).collect(Collectors.joining(" "));
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
package nautilus.game.arcade.game.modules;
|
||||
|
||||
import java.util.Arrays;
|
||||
package nautilus.game.arcade.managers;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
@ -21,46 +19,37 @@ import mineplex.core.portal.GenericServer;
|
|||
import mineplex.core.portal.Intent;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
import nautilus.game.arcade.events.PlayerStateChangeEvent;
|
||||
import nautilus.game.arcade.game.Game;
|
||||
import nautilus.game.arcade.game.GameTeam;
|
||||
import nautilus.game.arcade.managers.GameSpectatorManager;
|
||||
import nautilus.game.arcade.game.Game.GameState;
|
||||
import nautilus.game.arcade.game.GameTeam.PlayerState;
|
||||
|
||||
public class HubClockModule extends Module
|
||||
public class HubClockManager implements Listener
|
||||
{
|
||||
|
||||
private static final int HUB_CLOCK_SLOT = 8;
|
||||
private static final ItemStack HUB_CLOCK_ITEM = ItemStackFactory.Instance.CreateStack(Material.WATCH, (byte) 0, 1, (short) 0,
|
||||
C.cGreen + "Return to Hub",
|
||||
new String[]{"", ChatColor.RESET + "Click while holding this", ChatColor.RESET + "to return to the Hub."});
|
||||
|
||||
public HubClockModule()
|
||||
{
|
||||
Player[] players = UtilServer.getPlayers();
|
||||
private final ArcadeManager _manager;
|
||||
|
||||
if (players.length > 0)
|
||||
{
|
||||
Arrays.stream(players).forEach(this::giveClock);
|
||||
}
|
||||
public HubClockManager(ArcadeManager manager)
|
||||
{
|
||||
_manager = manager;
|
||||
|
||||
UtilServer.getPlayersCollection().forEach(this::giveClock);
|
||||
manager.registerEvents(this);
|
||||
}
|
||||
|
||||
public void giveClock(Player player)
|
||||
{
|
||||
if (getGame() != null && !getGame().GiveClock)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.getInventory().setItem(HUB_CLOCK_SLOT, HUB_CLOCK_ITEM);
|
||||
}
|
||||
|
||||
public void removeClock(Player player)
|
||||
{
|
||||
if (!player.getInventory().getItem(HUB_CLOCK_SLOT).equals(HUB_CLOCK_ITEM))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.getInventory().remove(HUB_CLOCK_ITEM);
|
||||
}
|
||||
|
||||
|
@ -73,24 +62,24 @@ public class HubClockModule extends Module
|
|||
@EventHandler
|
||||
public void giveOnNextLobby(GameStateChangeEvent event)
|
||||
{
|
||||
if (event.GetState() != Game.GameState.Recruit)
|
||||
if (event.GetState() != GameState.Recruit || !canGiveClock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Arrays.stream(UtilServer.getPlayers()).forEach(this::giveClock);
|
||||
UtilServer.getPlayersCollection().forEach(this::giveClock);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void giveOnDeath(PlayerStateChangeEvent event)
|
||||
{
|
||||
// Only handle when the player is now out
|
||||
if (event.GetState() != GameTeam.PlayerState.OUT)
|
||||
if (event.GetState() != PlayerState.OUT || !canGiveClock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
getGame().getArcadeManager().runSyncLater(() -> giveClock(event.GetPlayer()), GameSpectatorManager.ITEM_GIVE_DELAY);
|
||||
_manager.runSyncLater(() -> giveClock(event.GetPlayer()), GameSpectatorManager.ITEM_GIVE_DELAY);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -98,7 +87,7 @@ public class HubClockModule extends Module
|
|||
{
|
||||
// Only handle when the player is now in.
|
||||
// This should make MS not have a persistent clock after round end
|
||||
if (event.GetState() != GameTeam.PlayerState.IN)
|
||||
if (event.GetState() != PlayerState.IN || !canGiveClock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -127,13 +116,8 @@ public class HubClockModule extends Module
|
|||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (player.getItemInHand() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Only allow this exact clock to be used.
|
||||
if (!player.getItemInHand().equals(HUB_CLOCK_ITEM))
|
||||
if (HUB_CLOCK_ITEM.equals(player.getItemInHand()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -145,9 +129,11 @@ public class HubClockModule extends Module
|
|||
}
|
||||
|
||||
// Send to server
|
||||
getGame()
|
||||
.getArcadeManager()
|
||||
.GetPortal()
|
||||
.sendPlayerToGenericServer(event.getPlayer(), GenericServer.HUB, Intent.PLAYER_REQUEST);
|
||||
_manager.GetPortal().sendPlayerToGenericServer(event.getPlayer(), GenericServer.HUB, Intent.PLAYER_REQUEST);
|
||||
}
|
||||
|
||||
private boolean canGiveClock()
|
||||
{
|
||||
return _manager.GetGame() == null || _manager.GetGame().GetState() == GameState.Recruit || _manager.GetGame().GiveClock;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue