Fix issues from testing

This commit is contained in:
Sam 2018-08-04 23:21:02 +01:00 committed by Alexander Meech
parent d85b6ee332
commit f93d873ad5
7 changed files with 38 additions and 27 deletions

View File

@ -75,6 +75,7 @@ public class ServerManager extends MiniPlugin
public enum Perm implements Permission public enum Perm implements Permission
{ {
JOIN_FULL, JOIN_FULL,
JOIN_ALWAYS,
FEATURE_SERVER, FEATURE_SERVER,
} }
@ -189,6 +190,7 @@ public class ServerManager extends MiniPlugin
private void generatePermissions() private void generatePermissions()
{ {
PermissionGroup.ULTRA.setPermission(Perm.JOIN_FULL, true, true); PermissionGroup.ULTRA.setPermission(Perm.JOIN_FULL, true, true);
PermissionGroup.TRAINEE.setPermission(Perm.JOIN_ALWAYS, true, true);
PermissionGroup.CONTENT.setPermission(Perm.FEATURE_SERVER, true, true); PermissionGroup.CONTENT.setPermission(Perm.FEATURE_SERVER, true, true);
PermissionGroup.BUILDER.setPermission(Perm.FEATURE_SERVER, true, true); PermissionGroup.BUILDER.setPermission(Perm.FEATURE_SERVER, true, true);
} }

View File

@ -1,7 +1,6 @@
package mineplex.hub.server.ui.lobby; package mineplex.hub.server.ui.lobby;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import org.bukkit.Material; import org.bukkit.Material;
@ -34,8 +33,6 @@ public class LobbyMenu extends ShopPageBase<ServerManager, LobbyShop>
boolean ownsUltra = getClientManager().Get(getPlayer()).hasPermission(Perm.JOIN_FULL); boolean ownsUltra = getClientManager().Get(getPlayer()).hasPermission(Perm.JOIN_FULL);
String serverName = UtilServer.getServerName(); String serverName = UtilServer.getServerName();
servers.sort(Comparator.comparingInt(GameServer::getNumber));
servers.forEach(server -> servers.forEach(server ->
{ {
if (server.getNumber() >= getSize()) if (server.getNumber() >= getSize())

View File

@ -308,16 +308,20 @@ public class ServerSelectionPage extends ShopPageBase<ServerManager, ServerSelec
builder.addLore(C.cYellow + votingOn + ": " + C.cWhite + value); builder.addLore(C.cYellow + votingOn + ": " + C.cWhite + value);
} }
} }
builder.addLore("");
} }
// Map // Map
if (info.getMap() != null) if (info.getMap() != null)
{ {
builder.addLore(C.cYellow + "Map: " + C.cWhite + info.getMap()); builder.addLore(
C.cYellow + "Map: " + C.cWhite + info.getMap(),
""
);
} }
builder.addLore( builder.addLore(
"",
C.cGreen + motd, C.cGreen + motd,
"" ""
); );
@ -346,7 +350,8 @@ public class ServerSelectionPage extends ShopPageBase<ServerManager, ServerSelec
default: default:
builder.setType(Material.REDSTONE_BLOCK); builder.setType(Material.REDSTONE_BLOCK);
footer = "Game is full!"; footer = "Game is full!";
canJoin = false; // Always let staff join
canJoin = _clientManager.Get(getPlayer()).hasPermission(Perm.JOIN_ALWAYS);
break; break;
} }

View File

@ -327,7 +327,7 @@ public class CombatManager extends MiniClientPlugin<ClientCombat>
fakeDeath(event.getPlayer()); fakeDeath(event.getPlayer());
} }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void vanishStatus(IncognitoStatusChangeEvent event) public void vanishStatus(IncognitoStatusChangeEvent event)
{ {
if (!event.getNewState()) if (!event.getNewState())

View File

@ -273,8 +273,7 @@ public class Bridge extends TeamGame implements OreObsfucation
.register(this); .register(this);
_rejoinModule = new RejoinModule(manager) _rejoinModule = new RejoinModule(manager)
.setSaveInventory(true) .setSaveInventory(true);
.setSaveLocation(true);
_rejoinModule.register(this); _rejoinModule.register(this);
// So that we can be 110% sure // So that we can be 110% sure

View File

@ -59,7 +59,6 @@ import nautilus.game.arcade.game.games.draw.tools.ToolCircle;
import nautilus.game.arcade.game.games.draw.tools.ToolLine; import nautilus.game.arcade.game.games.draw.tools.ToolLine;
import nautilus.game.arcade.game.games.draw.tools.ToolSquare; import nautilus.game.arcade.game.games.draw.tools.ToolSquare;
import nautilus.game.arcade.game.modules.compass.CompassModule; import nautilus.game.arcade.game.modules.compass.CompassModule;
import nautilus.game.arcade.game.modules.rejoin.RejoinModule;
import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.managers.chat.ChatStatData; import nautilus.game.arcade.managers.chat.ChatStatData;
import nautilus.game.arcade.stats.DrawGuessStatTracker; import nautilus.game.arcade.stats.DrawGuessStatTracker;
@ -263,9 +262,6 @@ public class Draw extends SoloGame
new ChatStatData("PureLuck", "Lucky Guesses", true) new ChatStatData("PureLuck", "Lucky Guesses", true)
); );
new RejoinModule(manager)
.register(this);
new CompassModule() new CompassModule()
.setGiveCompass(true) .setGiveCompass(true)
.setGiveCompassToSpecs(true) .setGiveCompassToSpecs(true)

View File

@ -1,13 +1,16 @@
package nautilus.game.arcade.game.modules.rejoin; package nautilus.game.arcade.game.modules.rejoin;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerLoginEvent.Result; import org.bukkit.event.player.PlayerLoginEvent.Result;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
@ -26,13 +29,15 @@ public class RejoinModule extends Module
private final GameRejoinManager _manager; private final GameRejoinManager _manager;
private final Map<UUID, PlayerGameInfo> _rejoinData; private final Map<UUID, PlayerGameInfo> _rejoinData;
private final Set<Player> _disallow;
private boolean _saveInventory, _saveLocation; private boolean _saveInventory;
public RejoinModule(ArcadeManager manager) public RejoinModule(ArcadeManager manager)
{ {
_manager = new GameRejoinManager(manager); _manager = new GameRejoinManager(manager);
_rejoinData = new HashMap<>(); _rejoinData = new HashMap<>();
_disallow = new HashSet<>();
} }
@Override @Override
@ -45,6 +50,7 @@ public class RejoinModule extends Module
public void cleanup() public void cleanup()
{ {
_rejoinData.clear(); _rejoinData.clear();
_disallow.clear();
UtilServer.Unregister(_manager); UtilServer.Unregister(_manager);
} }
@ -54,18 +60,23 @@ public class RejoinModule extends Module
return this; return this;
} }
public RejoinModule setSaveLocation(boolean saveLocation)
{
_saveLocation = saveLocation;
return this;
}
public void disableRejoining() public void disableRejoining()
{ {
getGame().QuitOut = true; getGame().QuitOut = true;
_rejoinData.clear(); _rejoinData.clear();
} }
@EventHandler
public void playerKick(PlayerKickEvent event)
{
if (!isEnabled())
{
return;
}
_disallow.add(event.getPlayer());
}
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW)
public void playerQuit(PlayerQuitEvent event) public void playerQuit(PlayerQuitEvent event)
{ {
@ -77,7 +88,7 @@ public class RejoinModule extends Module
Player player = event.getPlayer(); Player player = event.getPlayer();
GameTeam team = getGame().GetTeam(player); GameTeam team = getGame().GetTeam(player);
if (team == null || !team.IsAlive(player) || getGame().QuitOut || player.isDead() || !player.getWorld().equals(getGame().WorldData.World)) if (team == null || !team.IsAlive(player) || getGame().QuitOut || player.isDead() || _disallow.remove(player) || !player.getWorld().equals(getGame().WorldData.World))
{ {
return; return;
} }
@ -95,16 +106,17 @@ public class RejoinModule extends Module
_rejoinData.put(player.getUniqueId(), data); _rejoinData.put(player.getUniqueId(), data);
if (_saveLocation)
{
getGame().GetLocationStore().putIfAbsent(player.getName(), player.getLocation());
}
team.RemovePlayer(player); team.RemovePlayer(player);
_manager.saveRejoinData(player, getGame().GetType().getGameId()); _manager.saveRejoinData(player, getGame().GetType().getGameId());
} }
@EventHandler(priority = EventPriority.MONITOR)
public void playerQuitMonitor(PlayerQuitEvent event)
{
_disallow.remove(event.getPlayer());
}
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void playerLogin(PlayerLoginEvent event) public void playerLogin(PlayerLoginEvent event)
{ {
@ -169,7 +181,7 @@ public class RejoinModule extends Module
private boolean isEnabled() private boolean isEnabled()
{ {
return !getGame().getArcadeManager().GetGameHostManager().isPrivateServer() && getGame().IsLive(); return !getGame().getArcadeManager().GetGameHostManager().isPrivateServer() && getGame().InProgress();
} }
public class PlayerGameInfo public class PlayerGameInfo