Allow QA and Admin+ to force deathmatch in test servers

This commit is contained in:
Spencer 2017-12-28 19:20:15 -05:00 committed by Alexander Meech
parent f41e9a4e2c
commit 90b129dd64
1 changed files with 34 additions and 16 deletions

View File

@ -80,6 +80,8 @@ import org.bukkit.scoreboard.Team;
import org.bukkit.util.Vector;
import mineplex.core.Managers;
import mineplex.core.account.permissions.Permission;
import mineplex.core.account.permissions.PermissionGroup;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
@ -174,6 +176,11 @@ public abstract class SurvivalGames extends Game
private int _chestRefillTime = 60 * 7;
public enum Perm implements Permission
{
FORCE_DEATHMATCH
}
public SurvivalGames(ArcadeManager manager, GameType type, String[] description)
{
this(manager, new Kit[]
@ -286,6 +293,12 @@ public abstract class SurvivalGames extends Game
new WinStreakModule()
.register(this);
if (UtilServer.isTestServer())
{
PermissionGroup.ADMIN.setPermission(Perm.FORCE_DEATHMATCH, true, true);
PermissionGroup.QA.setPermission(Perm.FORCE_DEATHMATCH, true, true);
}
}
@EventHandler
@ -567,25 +580,30 @@ public abstract class SurvivalGames extends Game
event.setCancelled(true);
if (!IsAlive(event.getPlayer()))
// If the player cannot force deathmatch, do the normal checks,
// otherwise ignore these
if (!Manager.GetClients().Get(event.getPlayer()).hasPermission(Perm.FORCE_DEATHMATCH))
{
UtilPlayer.message(event.getPlayer(),
F.main("Game", "You are not in the game."));
return;
}
if (!IsAlive(event.getPlayer()))
{
UtilPlayer.message(event.getPlayer(),
F.main("Game", "You are not in the game."));
return;
}
if (!IsLive() || _deathMatchTime <= 60)
{
UtilPlayer.message(event.getPlayer(),
F.main("Game", "Deathmatch cannot be started now."));
return;
}
if (!IsLive() || _deathMatchTime <= 60)
{
UtilPlayer.message(event.getPlayer(),
F.main("Game", "Deathmatch cannot be started now."));
return;
}
if (_secondsSinceStart < 5 * 60 || GetPlayers(true).size() > 4)
{
UtilPlayer.message(event.getPlayer(),
F.main("Game", "Deathmatch cannot be started now."));
return;
if (_secondsSinceStart < 5 * 60 || GetPlayers(true).size() > 4)
{
UtilPlayer.message(event.getPlayer(),
F.main("Game", "Deathmatch cannot be started now."));
return;
}
}
Announce(C.cGreen + C.Bold + event.getPlayer().getName()