Merge branch 'master' of http://184.154.0.242:7990/scm/min/mineplex into EventGameUpdates

This commit is contained in:
Sarah 2015-09-12 21:17:45 +02:00
commit b6ffee73f5
20 changed files with 484 additions and 161 deletions

View File

@ -8,6 +8,7 @@ import mineplex.core.common.util.UtilPlayer;
public enum Rank public enum Rank
{ {
//Staff
LT("LT", ChatColor.DARK_RED), LT("LT", ChatColor.DARK_RED),
OWNER("Owner", ChatColor.DARK_RED), OWNER("Owner", ChatColor.DARK_RED),
DEVELOPER("Dev", ChatColor.RED), DEVELOPER("Dev", ChatColor.RED),
@ -21,11 +22,13 @@ public enum Rank
MEDIA("Media", ChatColor.BLUE), MEDIA("Media", ChatColor.BLUE),
EVENT("Event", ChatColor.WHITE), EVENT("Event", ChatColor.WHITE),
//Staff ^^ //Media
YOUTUBE("YouTube", ChatColor.RED), YOUTUBE("YouTube", ChatColor.RED),
YOUTUBE_SMALL("MooTube", ChatColor.DARK_PURPLE),
TWITCH("Twitch", ChatColor.DARK_PURPLE), TWITCH("Twitch", ChatColor.DARK_PURPLE),
//Player
LEGEND("Legend", ChatColor.GREEN, true), LEGEND("Legend", ChatColor.GREEN, true),
HERO("Hero", ChatColor.LIGHT_PURPLE, true), HERO("Hero", ChatColor.LIGHT_PURPLE, true),
ULTRA("Ultra", ChatColor.AQUA, true), ULTRA("Ultra", ChatColor.AQUA, true),

View File

@ -61,6 +61,9 @@ public class CoreClient
public Rank GetRank() public Rank GetRank()
{ {
if (_rank == null)
_rank = Rank.ALL;
return _rank; return _rank;
} }

View File

@ -125,7 +125,6 @@ public class CoreClientManager extends MiniPlugin
if (client == null) if (client == null)
{ {
client = new CoreClient(name); client = new CoreClient(name);
client.SetRank(Rank.ALL);
} }
return client; return client;
@ -305,7 +304,7 @@ public class CoreClientManager extends MiniPlugin
TimingManager.stop(client.GetPlayerName() + " GetClient."); TimingManager.stop(client.GetPlayerName() + " GetClient.");
token = gson.fromJson(response, ClientToken.class); token = gson.fromJson(response, ClientToken.class);
client.SetRank(Rank.valueOf(token.Rank)); client.SetRank(Rank.valueOf(token.Rank));
// _repository.updateMysqlRank(uuid.toString(), token.Rank, token.RankPerm, new Timestamp(Date.parse(token.RankExpire)).toString()); // _repository.updateMysqlRank(uuid.toString(), token.Rank, token.RankPerm, new Timestamp(Date.parse(token.RankExpire)).toString());

View File

@ -151,21 +151,47 @@ public class LoadingWindow implements Runnable, Listener {
{ {
Player player = Bukkit.getPlayer(_playersUUID); Player player = Bukkit.getPlayer(_playersUUID);
if (player == null || _inv == null ? !player.getOpenInventory().equals(_currentInventory) : (_inv != null && !player.getOpenInventory().getTopInventory().equals(_inv))) { try
end(); {
return; if (player == null || player.getOpenInventory() == null || player.getOpenInventory().getTopInventory() == null || _inv == null ? !player.getOpenInventory().equals(_currentInventory) : (!player.getOpenInventory().getTopInventory().equals(_inv)))
} {
if (_inv == null) { end();
_inv = Bukkit.createInventory(null, _size, _title); return;
}
setBackGround(); if (_inv == null)
setLoadingBarItems(); {
UtilPlayer.swapToInventory(player, _inv); _inv = Bukkit.createInventory(null, _size, _title);
Bukkit.getPluginManager().registerEvents(this, _plugin);
} else setBackGround();
setLoadingBarItems(); setLoadingBarItems();
UtilPlayer.swapToInventory(player, _inv);
_ticker++; Bukkit.getPluginManager().registerEvents(this, _plugin);
}
else
setLoadingBarItems();
}
catch (Exception exception)
{
try
{
System.out.println("player ? " + (player == null));
System.out.println("player.getOpenInventory() ? " + (player.getOpenInventory() == null));
System.out.println("player.getOpenInventory().getTopInventory() ? " + (player.getOpenInventory().getTopInventory() == null));
System.out.println("_inv ? " + (_inv == null));
exception.printStackTrace();
}
catch (Exception exception2)
{
exception.printStackTrace();
}
end();
}
finally
{
_ticker++;
}
} }
public void end() { public void end() {

View File

@ -9,7 +9,9 @@ import mineplex.core.common.util.F;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
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;
@ -25,9 +27,14 @@ public class LagMeter extends MiniPlugin
private double _ticksPerSecond; private double _ticksPerSecond;
private double _ticksPerSecondAverage; private double _ticksPerSecondAverage;
private long _lastAverage; private long _lastAverage;
private long _start;
private long _lastTick = 0; private long _lastTick = 0;
private boolean _timingsRunning;
private boolean _timingsPasted;
private long _timingsStarted;
private HashSet<Player> _monitoring = new HashSet<Player>(); private HashSet<Player> _monitoring = new HashSet<Player>();
public LagMeter(JavaPlugin plugin, CoreClientManager clientManager) public LagMeter(JavaPlugin plugin, CoreClientManager clientManager)
@ -37,6 +44,8 @@ public class LagMeter extends MiniPlugin
_clientManager = clientManager; _clientManager = clientManager;
_lastRun = System.currentTimeMillis(); _lastRun = System.currentTimeMillis();
_lastAverage = System.currentTimeMillis(); _lastAverage = System.currentTimeMillis();
_start = System.currentTimeMillis();
} }
@EventHandler @EventHandler
@ -87,6 +96,24 @@ public class LagMeter extends MiniPlugin
_lastRun = now; _lastRun = now;
_count++; _count++;
if (System.currentTimeMillis() - _start > 60000)
{
if (_timingsRunning)
{
if (_ticksPerSecond > 15 || System.currentTimeMillis() - _timingsStarted > 60000)
{
getPlugin().getServer().dispatchCommand(Bukkit.getConsoleSender(), "timings paste");
_timingsRunning = false;
}
}
else if (_ticksPerSecond < 10)
{
_timingsRunning = true;
_timingsStarted = System.currentTimeMillis();
getPlugin().getServer().dispatchCommand(Bukkit.getConsoleSender(), "timings on");
}
}
} }
public double getTicksPerSecond() public double getTicksPerSecond()

View File

@ -22,12 +22,12 @@ public class NotificationManager extends MiniPlugin
private CoreClientManager _clientManager; private CoreClientManager _clientManager;
private String _summerLine = private String _summerLine =
C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" +
C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" +
C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" +
C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" +
C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" +
C.cYellow + "" + C.cGold + "" + C.cYellow + "" + C.cGold + "" + C.cYellow + ""; C.cYellow + "" + C.cBlack + "" + C.cYellow + "" + C.cBlack + "" + C.cYellow + "";
public NotificationManager(JavaPlugin plugin, CoreClientManager client) public NotificationManager(JavaPlugin plugin, CoreClientManager client)
{ {
@ -45,8 +45,8 @@ public class NotificationManager extends MiniPlugin
// if (event.getType() == UpdateType.MIN_08) // if (event.getType() == UpdateType.MIN_08)
// hugeSale(); // hugeSale();
// if (event.getType() == UpdateType.MIN_16) if (event.getType() == UpdateType.MIN_16)
// sale(); sale();
} }
private void sale() private void sale()
@ -60,15 +60,15 @@ public class NotificationManager extends MiniPlugin
if (rank == Rank.ALL) if (rank == Rank.ALL)
{ {
UtilPlayer.message(player, C.cWhite + "Summer Sale! " + " Purchase " + C.cAqua + C.Bold + "Ultra RANK" + C.cWhite + " for $15"); UtilPlayer.message(player, C.cWhite + "50% Off Sale! " + " Purchase " + C.cAqua + C.Bold + "Ultra Rank" + C.cWhite + " for $15");
} }
else if (rank == Rank.ULTRA) else if (rank == Rank.ULTRA)
{ {
UtilPlayer.message(player, C.cWhite + "Summer Sale! " + " Upgrade to " + C.cPurple + C.Bold + "HERO RANK" + C.cWhite + " for $15!"); UtilPlayer.message(player, C.cWhite + "50% Off Sale! " + " Upgrade to " + C.cPurple + C.Bold + "Hero Rank" + C.cWhite + " for $15!");
} }
else if (rank == Rank.HERO) else if (rank == Rank.HERO)
{ {
UtilPlayer.message(player, C.cWhite + "Summer Sale! " + "Upgrade to " + C.cGreen + C.Bold + "LEGEND RANK" + C.cWhite + " for $15!"); UtilPlayer.message(player, C.cWhite + "50% Off Sale! " + "Upgrade to " + C.cGreen + C.Bold + "Legend Rank" + C.cWhite + " for $15!");
} }
UtilPlayer.message(player, C.cWhite + " Visit " + F.link("www.mineplex.com/shop") + " for 50% Off Ranks!"); UtilPlayer.message(player, C.cWhite + " Visit " + F.link("www.mineplex.com/shop") + " for 50% Off Ranks!");

View File

@ -228,8 +228,14 @@ public class PetManager extends MiniClientPlugin<PetClient>
if (_activePetOwners.containsKey(player.getName())) if (_activePetOwners.containsKey(player.getName()))
{ {
final Creature pet = _activePetOwners.get(player.getName()); final Creature pet = _activePetOwners.get(player.getName());
//Wither Silverfish
if (pet.getPassenger() != null)
pet.getPassenger().remove();
pet.remove(); pet.remove();
if (removeOwner) if (removeOwner)
{ {
_activePetOwners.remove(player.getName()); _activePetOwners.remove(player.getName());

View File

@ -243,7 +243,7 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
UserPreferences userPreferences = getPlugin().Get(getPlayer()); UserPreferences userPreferences = getPlugin().Get(getPlayer());
int index = 9; int index = 9;
buildPreference(index, Material.FIREBALL, "Hub Stacker", userPreferences.HubGames, _toggleHubGames); buildPreference(index, Material.FIREBALL, "Hub Player Stacker", userPreferences.HubGames, _toggleHubGames);
index += 2; index += 2;
buildPreference(index, Material.EYE_OF_ENDER, "Hub Player Visibility", userPreferences.ShowPlayers, _toggleHubPlayers); buildPreference(index, Material.EYE_OF_ENDER, "Hub Player Visibility", userPreferences.ShowPlayers, _toggleHubPlayers);
index += 2; index += 2;

View File

@ -10,6 +10,8 @@ public class PlayerStats
public long addStat(String statName, long value) public long addStat(String statName, long value)
{ {
value = Math.max(0L, value);
if (!_statHash.containsKey(statName)) if (!_statHash.containsKey(statName))
{ {
_statHash.put(statName, 0L); _statHash.put(statName, 0L);

View File

@ -1,23 +1,16 @@
package mineplex.core.stats; package mineplex.core.stats;
import java.lang.reflect.Field;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Iterator; import java.util.Iterator;
import net.minecraft.server.v1_7_R4.EntityHuman;
import net.minecraft.util.com.mojang.authlib.GameProfile;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftHumanEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.MiniDbClientPlugin; import mineplex.core.MiniDbClientPlugin;
import mineplex.core.account.CoreClient;
import mineplex.core.account.CoreClientManager; import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank;
import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilServer;
import mineplex.core.stats.command.GiveStatCommand; import mineplex.core.stats.command.GiveStatCommand;
@ -60,6 +53,33 @@ public class StatsManager extends MiniDbClientPlugin<PlayerStats>
} }
} }
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event)
{
PlayerStats playerStats = Get(event.getPlayer());
final int accountId = getClientManager().getAccountId(event.getPlayer());
for (String statName : playerStats.getStatsNames())
{
if (!_stats.containsKey(statName))
continue;
final int statId = _stats.get(statName);
if (playerStats.getStat(statName) == -1)
{
runAsync(new Runnable()
{
public void run()
{
_repository.setStat(accountId, statId, 0);
}
});
}
}
}
public void incrementStat(final Player player, final String statName, final long value) public void incrementStat(final Player player, final String statName, final long value)
{ {
if (value <= 0) if (value <= 0)
@ -73,7 +93,7 @@ public class StatsManager extends MiniDbClientPlugin<PlayerStats>
// Verify stat is in our local cache, if not add it remotely. // Verify stat is in our local cache, if not add it remotely.
if (!_stats.containsKey(statName)) if (!_stats.containsKey(statName))
{ {
Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), new Runnable() runAsync(new Runnable()
{ {
public void run() public void run()
{ {

View File

@ -26,9 +26,6 @@ import org.jooq.types.ULong;
public class StatsRepository extends RepositoryBase public class StatsRepository extends RepositoryBase
{ {
private static String CREATE_STAT_TABLE = "CREATE TABLE IF NOT EXISTS stats (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), PRIMARY KEY (id), UNIQUE INDEX nameIndex (name));";
private static String CREATE_STAT_RELATION_TABLE = "CREATE TABLE IF NOT EXISTS accountStats (id INT NOT NULL AUTO_INCREMENT, accountId INT NOT NULL, statId INT NOT NULL, value INT NOT NULL, PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id), FOREIGN KEY (statId) REFERENCES stats(id), UNIQUE INDEX accountStatIndex (accountId, statId));";
private static String RETRIEVE_STATS = "SELECT id, name FROM stats;"; private static String RETRIEVE_STATS = "SELECT id, name FROM stats;";
private static String INSERT_STAT = "INSERT INTO stats (name) VALUES (?);"; private static String INSERT_STAT = "INSERT INTO stats (name) VALUES (?);";
@ -38,16 +35,10 @@ public class StatsRepository extends RepositoryBase
} }
@Override @Override
protected void initialize() protected void initialize() { }
{
//executeUpdate(CREATE_STAT_TABLE);
//executeUpdate(CREATE_STAT_RELATION_TABLE);
}
@Override @Override
protected void update() protected void update() { }
{
}
public List<Stat> retrieveStats() public List<Stat> retrieveStats()
{ {
@ -165,9 +156,36 @@ public class StatsRepository extends RepositoryBase
while (resultSet.next()) while (resultSet.next())
{ {
playerStats.addStat(resultSet.getString(1), resultSet.getLong(2)); try
{
playerStats.addStat(resultSet.getString(1), resultSet.getLong(2));
}
catch (Exception ex)
{
ex.printStackTrace();
playerStats.addStat(resultSet.getString(1), -1);
}
} }
return playerStats; return playerStats;
} }
public void setStat(int accountId, int statId, long value)
{
try
{
DSLContext context = DSL.using(getConnectionPool(), SQLDialect.MYSQL);
context
.update(Tables.accountStat)
.set(Tables.accountStat.value, ULong.valueOf(value))
.where(Tables.accountStat.accountId.eq(accountId))
.and(Tables.accountStat.statId.eq(statId))
.execute();
}
catch (Exception e)
{
e.printStackTrace();
}
}
} }

View File

@ -866,7 +866,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
return UtilTime.elapsed(_portalTime.get(player.getName()), 5000); return UtilTime.elapsed(_portalTime.get(player.getName()), 5000);
} }
public boolean CanBump(LivingEntity ent) public boolean hasPlayerStackingEnabled(LivingEntity ent)
{ {
if (!(ent instanceof Player)) if (!(ent instanceof Player))
return true; return true;
@ -906,7 +906,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
@EventHandler @EventHandler
public void ignoreVelocity(PlayerVelocityEvent event) public void ignoreVelocity(PlayerVelocityEvent event)
{ {
if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.MODERATOR) && _preferences.Get(event.getPlayer()).IgnoreVelocity) if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.TWITCH) && _preferences.Get(event.getPlayer()).IgnoreVelocity)
{ {
event.setCancelled(true); event.setCancelled(true);
} }

View File

@ -42,7 +42,7 @@ public class ForcefieldManager extends MiniPlugin
for (Player player : UtilServer.getPlayers()) for (Player player : UtilServer.getPlayers())
{ {
if (Manager.getPreferences().Get(player).HubForcefield && (Manager.GetClients().Get(player).GetRank().has(Rank.ADMIN) || Manager.GetClients().Get(player).GetRank() == Rank.JNR_DEV)) if (Manager.getPreferences().Get(player).HubForcefield && (Manager.GetClients().Get(player).GetRank().has(Rank.ADMIN) || Manager.GetClients().Get(player).GetRank() == Rank.JNR_DEV || Manager.GetClients().Get(player).GetRank() == Rank.YOUTUBE || Manager.GetClients().Get(player).GetRank() == Rank.TWITCH))
{ {
for (Player other : UtilServer.getPlayers()) for (Player other : UtilServer.getPlayers())
{ {

View File

@ -83,8 +83,9 @@ public class SoccerManager extends MiniPlugin
private Vector _ballVel; private Vector _ballVel;
private long _ballDeadTime = -1; private long _ballDeadTime = -1;
private String _lastKicker = ""; private String _lastRedKicker = "";
private Color _lastKick = null; private String _lastBlueKicker = "";
private Color _lastKickColor = null;
//Item Rebound //Item Rebound
protected Vector _vel; protected Vector _vel;
@ -176,7 +177,7 @@ public class SoccerManager extends MiniPlugin
if (_ball == null) if (_ball == null)
return; return;
if (_lastKick == Color.AQUA) if (_lastKickColor == Color.AQUA)
{ {
for (int i = 0 ; i < 3 ; i++) for (int i = 0 ; i < 3 ; i++)
UtilParticle.PlayParticle(ParticleType.RED_DUST, _ball.getLocation().add(0.0, 0.5, 0.0), -1, 1, 1, 1, 0, UtilParticle.PlayParticle(ParticleType.RED_DUST, _ball.getLocation().add(0.0, 0.5, 0.0), -1, 1, 1, 1, 0,
@ -213,13 +214,22 @@ public class SoccerManager extends MiniPlugin
UtilAction.zeroVelocity(player); UtilAction.zeroVelocity(player);
_lastKick = getTeamColor(player); _lastKickColor = getTeamColor(player);
if (_lastKick == null) if (_lastKickColor == Color.RED)
_lastKicker = player.getName(); {
else if (_lastKick == Color.RED) _lastRedKicker = C.cRed + player.getName();
_lastKicker = C.cRed + player.getName();
else if (_lastKick == Color.AQUA) if (_lastBlueKicker.length() == 0)
_lastKicker = C.cAqua + player.getName(); _lastBlueKicker = C.cRed + player.getName();
}
else if (_lastKickColor == Color.AQUA)
{
_lastBlueKicker = C.cAqua + player.getName();
if (_lastRedKicker.length() == 0)
_lastRedKicker = C.cRed + player.getName();
}
} }
} }
} }
@ -239,14 +249,15 @@ public class SoccerManager extends MiniPlugin
for (Player player : _active) for (Player player : _active)
UtilTextMiddle.display("Goal! (" + C.cRed + _redGoals + C.cWhite + " : " + C.cBlue + _blueGoals + C.cWhite + ")", UtilTextMiddle.display("Goal! (" + C.cRed + _redGoals + C.cWhite + " : " + C.cBlue + _blueGoals + C.cWhite + ")",
_lastKicker + C.cWhite + " scored for " + C.cAqua + "Blue Team", 0, 70, 20, player); _lastBlueKicker + C.cWhite + " scored for " + C.cAqua + "Blue Team", 0, 70, 20, player);
_ball.remove(); _ball.remove();
_ball = null; _ball = null;
_lastRedKicker = "";
_lastBlueKicker = "";
} }
return; return;
} }
@ -264,10 +275,13 @@ public class SoccerManager extends MiniPlugin
for (Player player : _active) for (Player player : _active)
UtilTextMiddle.display("Goal! (" + C.cRed + _redGoals + C.cWhite + " : " + C.cBlue + _blueGoals + C.cWhite + ")", UtilTextMiddle.display("Goal! (" + C.cRed + _redGoals + C.cWhite + " : " + C.cBlue + _blueGoals + C.cWhite + ")",
_lastKicker + C.cWhite + " scored for " + C.cRed + "Red Team", 0, 70, 20, player); _lastRedKicker + C.cWhite + " scored for " + C.cRed + "Red Team", 0, 70, 20, player);
_ball.remove(); _ball.remove();
_ball = null; _ball = null;
_lastRedKicker = "";
_lastBlueKicker = "";
} }
return; return;

View File

@ -95,12 +95,6 @@ public class StackerManager extends MiniPlugin implements IThrown
return; return;
} }
if (!Manager.CanBump(stacker))
{
UtilPlayer.message(stacker, F.main("Stacker", "You are not playing stacker."));
return;
}
if (stacker.getVehicle() != null || _tempStackShift.contains(stacker)) if (stacker.getVehicle() != null || _tempStackShift.contains(stacker))
{ {
UtilPlayer.message(stacker, F.main("Stacker", "You cannot stack while stacked...")); UtilPlayer.message(stacker, F.main("Stacker", "You cannot stack while stacked..."));
@ -123,9 +117,15 @@ public class StackerManager extends MiniPlugin implements IThrown
if (stackee instanceof Player) if (stackee instanceof Player)
{ {
if (!Manager.CanBump(((Player)stackee))) if (!Manager.hasPlayerStackingEnabled(stacker))
{ {
UtilPlayer.message(stacker, F.main("Stacker", F.name(UtilEnt.getName(stackee)) + " is not playing stacker.")); UtilPlayer.message(stacker, F.main("Stacker", "You have player stacking disabled."));
return;
}
if (!Manager.hasPlayerStackingEnabled(((Player)stackee)))
{
UtilPlayer.message(stacker, F.main("Stacker", F.name(UtilEnt.getName(stackee)) + " has player stacking disabled."));
return; return;
} }
@ -242,7 +242,7 @@ public class StackerManager extends MiniPlugin implements IThrown
if (target.getCustomName() != null || (target.getPassenger() != null && target.getPassenger() instanceof LivingEntity && ((LivingEntity)target.getPassenger()).getCustomName() != null)) if (target.getCustomName() != null || (target.getPassenger() != null && target.getPassenger() instanceof LivingEntity && ((LivingEntity)target.getPassenger()).getCustomName() != null))
return; return;
if (!Manager.CanBump(target)) if (!Manager.hasPlayerStackingEnabled(target))
return; return;
//Velocity //Velocity

View File

@ -31,6 +31,7 @@ import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Pig; import org.bukkit.entity.Pig;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Silverfish;
import org.bukkit.entity.Skeleton; import org.bukkit.entity.Skeleton;
import org.bukkit.entity.Skeleton.SkeletonType; import org.bukkit.entity.Skeleton.SkeletonType;
import org.bukkit.entity.Snowman; import org.bukkit.entity.Snowman;
@ -44,6 +45,7 @@ import org.bukkit.event.block.BlockIgniteEvent.IgniteCause;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.BlockSpreadEvent; import org.bukkit.event.block.BlockSpreadEvent;
import org.bukkit.event.block.LeavesDecayEvent; import org.bukkit.event.block.LeavesDecayEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetEvent;
@ -162,6 +164,12 @@ public class WorldManager extends MiniPlugin
{ {
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler
public void BlockEntityChange(EntityChangeBlockEvent event)
{
event.setCancelled(true);
}
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void Explosion(EntityExplodeEvent event) public void Explosion(EntityExplodeEvent event)

View File

@ -16,6 +16,8 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.FileHandler; import java.util.logging.FileHandler;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -42,10 +44,12 @@ public class ServerMonitor
private static Map<String, ServerGroup> _serverGroupMap = null; private static Map<String, ServerGroup> _serverGroupMap = null;
private static List<DedicatedServer> _dedicatedServers = null; private static List<DedicatedServer> _dedicatedServers = null;
private static HashSet<String> _deadServers = new HashSet<String>(); private static HashSet<String> _deadServers = new HashSet<String>();
private static HashSet<String> _delayedKill = new HashSet<String>();
private static HashSet<String> _laggyServers = new HashSet<String>(); private static HashSet<String> _laggyServers = new HashSet<String>();
private static SimpleDateFormat _dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); private static SimpleDateFormat _dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
private static Logger _logger = Logger.getLogger("ServerMonitor"); private static Logger _logger = Logger.getLogger("ServerMonitor");
private static Timer _timer = new Timer();
private static int _totalPlayers = 0; private static int _totalPlayers = 0;
private static Region _region; private static Region _region;
@ -124,12 +128,15 @@ public class ServerMonitor
for (MinecraftServer minecraftServer : _serverStatuses) for (MinecraftServer minecraftServer : _serverStatuses)
{ {
if (minecraftServer.getMotd().contains("Finished") || (minecraftServer.getGroup().equalsIgnoreCase("UltraHardcore") && minecraftServer.getMotd().contains("Restarting") && minecraftServer.getPlayerCount() == 0)) if (!ignoreServer(minecraftServer.getGroup()))
{ {
killServer(minecraftServer.getName(), minecraftServer.getPublicAddress(), minecraftServer.getPlayerCount(), "[KILLED] [FINISHED] " + minecraftServer.getName() + ":" + minecraftServer.getPublicAddress(), true); if (minecraftServer.getMotd().contains("Finished") || (minecraftServer.getGroup().equalsIgnoreCase("UltraHardcore") && minecraftServer.getMotd().contains("Restarting") && minecraftServer.getPlayerCount() == 0))
{
handleUserServerGroup(_serverGroupMap.get(minecraftServer.getGroup())); killServer(minecraftServer.getName(), minecraftServer.getPublicAddress(), minecraftServer.getPlayerCount(), "[KILLED] [FINISHED] " + minecraftServer.getName() + ":" + minecraftServer.getPublicAddress(), true);
continue;
handleUserServerGroup(_serverGroupMap.get(minecraftServer.getGroup()));
continue;
}
} }
for (DedicatedServer server : _dedicatedServers) for (DedicatedServer server : _dedicatedServers)
@ -202,6 +209,9 @@ public class ServerMonitor
for (ServerGroup groupStatus : _serverGroups) for (ServerGroup groupStatus : _serverGroups)
{ {
if (ignoreServer(groupStatus.getName()))
continue;
NautHashMap<Integer, MinecraftServer> serverMap = new NautHashMap<Integer, MinecraftServer>(); NautHashMap<Integer, MinecraftServer> serverMap = new NautHashMap<Integer, MinecraftServer>();
for (Iterator<MinecraftServer> serverIterator = groupStatus.getServers().iterator(); serverIterator.hasNext();) for (Iterator<MinecraftServer> serverIterator = groupStatus.getServers().iterator(); serverIterator.hasNext();)
@ -226,17 +236,6 @@ public class ServerMonitor
exception.printStackTrace(); exception.printStackTrace();
} }
} }
/*
if (groupStatus.getHost() == null || groupStatus.getHost().isEmpty())
{
if (groupStatus.getName().startsWith("0"))
{
int serverCount = groupStatus.getServers().size();
log(groupStatus.getName() + " : " + groupStatus.getPlayerCount() + " players on " + serverCount + " servers " + String.format("%.2f", ((double)serverCount * (double)groupStatus.getRequiredCpu() / totalCPU)) + "% CPU," + String.format("%.2f", ((double)serverCount * (double)groupStatus.getRequiredRam() / totalRAM)) + "% RAM", false);
}
}
*/
} }
HashSet<String> onlineServers = new HashSet<String>(); HashSet<String> onlineServers = new HashSet<String>();
@ -386,21 +385,35 @@ public class ServerMonitor
deadServers.addAll(_deadServers); deadServers.addAll(_deadServers);
_deadServers.clear(); _deadServers.clear();
for (MinecraftServer deadServer : _repository.getDeadServers()) for (final MinecraftServer deadServer : _repository.getDeadServers())
{ {
if (deadServer.getUptime() <= 10 || ignoreServer(deadServer.getGroup())) if (deadServer.getUptime() <= 10 || ignoreServer(deadServer.getGroup()))
continue; continue;
if (_count == 0 || deadServers.contains(deadServer.getName())) if (_count == 0 || deadServers.contains(deadServer.getName()))
{ {
copyServerLog(deadServer);
killServer(deadServer.getName(), deadServer.getPublicAddress(), deadServer.getPlayerCount(), "[KILLED] [DEAD] " + deadServer.getName() + ":" + deadServer.getPublicAddress(), true); killServer(deadServer.getName(), deadServer.getPublicAddress(), deadServer.getPlayerCount(), "[KILLED] [DEAD] " + deadServer.getName() + ":" + deadServer.getPublicAddress(), true);
handleUserServerGroup(_serverGroupMap.get(deadServer.getGroup())); handleUserServerGroup(_serverGroupMap.get(deadServer.getGroup()));
} }
else else if (!_delayedKill.contains(deadServer.getName()))
{ {
_deadServers.add(deadServer.getName()); startTimingReport(deadServer);
log("[IMPENDING DEATH] : " + deadServer.getName() + ":" + deadServer.getPublicAddress());
_timer.schedule(new TimerTask()
{
public void run()
{
_deadServers.add(deadServer.getName());
_delayedKill.remove(deadServer.getName());
stopTimingReport(deadServer);
log("[IMPENDING DEATH] : " + deadServer.getName() + ":" + deadServer.getPublicAddress());
}
}, 20 * 1000);
_delayedKill.add(deadServer.getName());
} }
} }
} }
@ -653,6 +666,105 @@ public class ServerMonitor
killServer(serverToKill.getName(), serverToKill.getPublicAddress(), serverToKill.getPlayerCount(), message, true); killServer(serverToKill.getName(), serverToKill.getPublicAddress(), serverToKill.getPlayerCount(), message, true);
} }
private static void startTimingReport(final MinecraftServer server)
{
if (_debug)
return;
String cmd = "/home/mineplex/remoteStartTiming.sh";
ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, server.getPublicAddress(), server.getName() });
pr.start(new GenericRunnable<Boolean>()
{
public void run(Boolean error)
{
if (error)
log("[TIMING START] Errored " + server.getName() + "(" + server.getPublicAddress() + ")");
else
log("[TIMING START] Succeeded " + server.getName() + "(" + server.getPublicAddress() + ")");
}
});
try
{
pr.join(100);
}
catch (InterruptedException e1)
{
e1.printStackTrace();
}
if (!pr.isDone())
_processes.add(pr);
}
private static void stopTimingReport(final MinecraftServer server)
{
if (_debug)
return;
String cmd = "/home/mineplex/remoteStopTiming.sh";
ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, server.getPublicAddress(), server.getName() });
pr.start(new GenericRunnable<Boolean>()
{
public void run(Boolean error)
{
if (error)
log("[TIMING PASTE] Errored " + server.getName() + "(" + server.getPublicAddress() + ")");
else
log("[TIMING PASTE] Succeeded " + server.getName() + "(" + server.getPublicAddress() + ")");
}
});
try
{
pr.join(100);
}
catch (InterruptedException e1)
{
e1.printStackTrace();
}
if (!pr.isDone())
_processes.add(pr);
}
private static void copyServerLog(final MinecraftServer server)
{
if (_debug)
return;
String cmd = "/home/mineplex/easyRemoteCopyLog.sh";
ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, server.getPublicAddress(), server.getName() });
pr.start(new GenericRunnable<Boolean>()
{
public void run(Boolean error)
{
if (error)
log("[COPY LOG] Errored " + server.getName() + "(" + server.getPublicAddress() + ")");
else
log("[COPY LOG] Succeeded " + server.getName() + "(" + server.getPublicAddress() + ")");
}
});
try
{
pr.join(100);
}
catch (InterruptedException e1)
{
e1.printStackTrace();
}
if (!pr.isDone())
_processes.add(pr);
}
private static void startServer(final DedicatedServer serverSpace, final ServerGroup serverGroup, final int serverNum, final boolean free) private static void startServer(final DedicatedServer serverSpace, final ServerGroup serverGroup, final int serverNum, final boolean free)
{ {
if (_debug) if (_debug)

View File

@ -3,16 +3,19 @@ package mineplex.servermonitor;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Iterator;
import java.util.List; import java.util.List;
import mineplex.serverdata.Region; import mineplex.serverdata.Region;
import mineplex.serverdata.data.BungeeServer;
import mineplex.serverdata.data.DataRepository;
import mineplex.serverdata.data.DedicatedServer; import mineplex.serverdata.data.DedicatedServer;
import mineplex.serverdata.data.ServerGroup; import mineplex.serverdata.data.ServerGroup;
import mineplex.servermonitor.data.BungeeStatusData; import mineplex.serverdata.redis.RedisDataRepository;
import mineplex.serverdata.servers.ServerManager;
public class StatusHistoryRepository public class StatusHistoryRepository
{ {
@ -24,8 +27,6 @@ public class StatusHistoryRepository
private static String CREATE_DEDICATED_TABLE = "CREATE TABLE IF NOT EXISTS DedicatedServerStats (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(100), address VARCHAR(25), updated LONG, cpu TINYINT, ram MEDIUMINT, usedCpuPercent DOUBLE(4,2), usedRamPercent DOUBLE(4,2), US BOOLEAN NOT NULL DEFAULT '1', PRIMARY KEY (id));"; private static String CREATE_DEDICATED_TABLE = "CREATE TABLE IF NOT EXISTS DedicatedServerStats (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(100), address VARCHAR(25), updated LONG, cpu TINYINT, ram MEDIUMINT, usedCpuPercent DOUBLE(4,2), usedRamPercent DOUBLE(4,2), US BOOLEAN NOT NULL DEFAULT '1', PRIMARY KEY (id));";
private static String CREATE_BUNGEE_TABLE = "CREATE TABLE IF NOT EXISTS BungeeStats (id INT NOT NULL AUTO_INCREMENT, address VARCHAR(25), updated LONG, players INT, maxPlayers INT, alive BOOLEAN NOT NULL, online BOOLEAN NOT NULL, US BOOLEAN NOT NULL DEFAULT '1', PRIMARY KEY (id));"; private static String CREATE_BUNGEE_TABLE = "CREATE TABLE IF NOT EXISTS BungeeStats (id INT NOT NULL AUTO_INCREMENT, address VARCHAR(25), updated LONG, players INT, maxPlayers INT, alive BOOLEAN NOT NULL, online BOOLEAN NOT NULL, US BOOLEAN NOT NULL DEFAULT '1', PRIMARY KEY (id));";
private static String CREATE_NETWORKSTATS_TABLE = "CREATE TABLE IF NOT EXISTS NetworkStats (id INT NOT NULL AUTO_INCREMENT, updated LONG, players INT, totalNetworkCpuUsage DOUBLE(4,2), totalNetworkRamUsage DOUBLE(4,2), totalCpu MEDIUMINT, totalRam MEDIUMINT, US BOOLEAN NOT NULL DEFAULT '1', PRIMARY KEY (id));"; private static String CREATE_NETWORKSTATS_TABLE = "CREATE TABLE IF NOT EXISTS NetworkStats (id INT NOT NULL AUTO_INCREMENT, updated LONG, players INT, totalNetworkCpuUsage DOUBLE(4,2), totalNetworkRamUsage DOUBLE(4,2), totalCpu MEDIUMINT, totalRam MEDIUMINT, US BOOLEAN NOT NULL DEFAULT '1', PRIMARY KEY (id));";
private static String RETRIEVE_BUNGEE_STATUSES = "SELECT bungeeStatus.address, bungeeStatus.players, bungeeStatus.maxPlayers, bungeeStatus.US, onlineStatus.online, now(), bungeeStatus.updated FROM BungeeServers AS bungeeStatus INNER JOIN bungeeOnlineStatus AS onlineStatus ON onlineStatus.address = bungeeStatus.address";
private static String INSERT_SERVERGROUP_STATS = "INSERT INTO ServerGroupStats (serverGroup, updated, players, maxPlayers, totalNetworkCpuUsage, totalNetworkRamUsage, totalCpu, totalRam, US) VALUES (?, now(), ?, ?, ?, ?, ?, ?, ?);"; private static String INSERT_SERVERGROUP_STATS = "INSERT INTO ServerGroupStats (serverGroup, updated, players, maxPlayers, totalNetworkCpuUsage, totalNetworkRamUsage, totalCpu, totalRam, US) VALUES (?, now(), ?, ?, ?, ?, ?, ?, ?);";
private static String INSERT_DEDICATEDSERVER_STATS = "INSERT INTO DedicatedServerStats (serverName, address, updated, cpu, ram, usedCpuPercent, usedRamPercent, US) VALUES (?, ?, now(), ?, ?, ?, ?, ?);"; private static String INSERT_DEDICATEDSERVER_STATS = "INSERT INTO DedicatedServerStats (serverName, address, updated, cpu, ram, usedCpuPercent, usedRamPercent, US) VALUES (?, ?, now(), ?, ?, ?, ?, ?);";
@ -33,7 +34,8 @@ public class StatusHistoryRepository
private static String INSERT_NETWORK_STATS = "INSERT INTO NetworkStats (updated, players, totalNetworkCpuUsage, totalNetworkRamUsage, totalCpu, totalRam, US) VALUES (now(), ?, ?, ?, ?, ?, ?);"; private static String INSERT_NETWORK_STATS = "INSERT INTO NetworkStats (updated, players, totalNetworkCpuUsage, totalNetworkRamUsage, totalCpu, totalRam, US) VALUES (now(), ?, ?, ?, ?, ?, ?);";
private static Connection _connection; private static Connection _connection;
private static Connection _bungeeconnection;
private static DataRepository<BungeeServer> _repository;
public StatusHistoryRepository() public StatusHistoryRepository()
{ {
@ -65,6 +67,9 @@ public class StatusHistoryRepository
preparedStatement = _connection.prepareStatement(CREATE_NETWORKSTATS_TABLE); preparedStatement = _connection.prepareStatement(CREATE_NETWORKSTATS_TABLE);
preparedStatement.execute(); preparedStatement.execute();
preparedStatement.close(); preparedStatement.close();
_repository = new RedisDataRepository<BungeeServer>(ServerManager.getConnection(true, ServerManager.SERVER_STATUS_LABEL), ServerManager.getConnection(false, ServerManager.SERVER_STATUS_LABEL),
Region.ALL, BungeeServer.class, "bungeeServers");
} }
catch (Exception exception) catch (Exception exception)
{ {
@ -185,58 +190,16 @@ public class StatusHistoryRepository
public void saveNetworkStats(double usedCpuPercent, double usedRamPercent, double availableCPU, double availableRAM, Region region) public void saveNetworkStats(double usedCpuPercent, double usedRamPercent, double availableCPU, double availableRAM, Region region)
{ {
/*
int totalPlayers = 0; int totalPlayers = 0;
List<BungeeStatusData> bungeeStatuses = new ArrayList<BungeeStatusData>(); List<BungeeServer> bungeeServers = new ArrayList<BungeeServer>(_repository.getElements());
PreparedStatement retrieveStatement = null;
try for (Iterator<BungeeServer> bungeeIterator = bungeeServers.iterator(); bungeeIterator.hasNext();)
{ {
if (_bungeeconnection == null || _bungeeconnection.isClosed()) BungeeServer server = bungeeIterator.next();
_bungeeconnection = DriverManager.getConnection(_bungeeConnectionString, _userName, _password);
retrieveStatement = _bungeeconnection.prepareStatement(RETRIEVE_BUNGEE_STATUSES); if (server.getPublicAddress().equalsIgnoreCase("127.0.0.1") || server.getPublicAddress().equalsIgnoreCase("0.0.0.0"))
ResultSet resultSet = retrieveStatement.executeQuery(); bungeeIterator.remove();
while (resultSet.next())
{
BungeeStatusData bungeeData = new BungeeStatusData();
bungeeData.Address = resultSet.getString(1);
bungeeData.Players = resultSet.getInt(2);
bungeeData.MaxPlayers = resultSet.getInt(3);
bungeeData.US = resultSet.getBoolean(4);
bungeeData.Online = resultSet.getBoolean(5);
long now = resultSet.getLong(6);
long updated = resultSet.getLong(7);
bungeeData.Alive = (now - updated) <= 15;
if (bungeeData.Alive && bungeeData.US == (region == Region.US))
totalPlayers += bungeeData.Players;
if (bungeeData.US == (region == Region.US))
bungeeStatuses.add(bungeeData);
}
}
catch (Exception exception)
{
exception.printStackTrace();
}
finally
{
if (retrieveStatement != null)
{
try
{
retrieveStatement.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
} }
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
@ -248,15 +211,16 @@ public class StatusHistoryRepository
preparedStatement = _connection.prepareStatement(INSERT_BUNGEE_STATS); preparedStatement = _connection.prepareStatement(INSERT_BUNGEE_STATS);
for (BungeeStatusData bungeeStatusData : bungeeStatuses) for (BungeeServer bungeeStatusData : bungeeServers)
{ {
preparedStatement.setString(1, bungeeStatusData.Address); totalPlayers += bungeeStatusData.getPlayerCount();
preparedStatement.setInt(2, bungeeStatusData.Players); preparedStatement.setString(1, bungeeStatusData.getPublicAddress());
preparedStatement.setInt(3, bungeeStatusData.MaxPlayers); preparedStatement.setInt(2, bungeeStatusData.getPlayerCount());
preparedStatement.setBoolean(4, bungeeStatusData.Alive); preparedStatement.setInt(3, bungeeStatusData.getPlayerCount());
preparedStatement.setBoolean(5, bungeeStatusData.Online); preparedStatement.setBoolean(4, true);
preparedStatement.setBoolean(6, bungeeStatusData.US); preparedStatement.setBoolean(5, true);
preparedStatement.addBatch(); preparedStatement.setBoolean(6, bungeeStatusData.getRegion() == Region.US);
preparedStatement.addBatch();
} }
preparedStatement.executeBatch(); preparedStatement.executeBatch();
@ -315,6 +279,5 @@ public class StatusHistoryRepository
} }
} }
} }
*/
} }
} }

View File

@ -111,6 +111,7 @@ import nautilus.game.arcade.addons.TeamArmorAddon;
import nautilus.game.arcade.addons.compass.CompassAddon; import nautilus.game.arcade.addons.compass.CompassAddon;
import nautilus.game.arcade.command.DisguiseCommand; import nautilus.game.arcade.command.DisguiseCommand;
import nautilus.game.arcade.command.GameCommand; import nautilus.game.arcade.command.GameCommand;
import nautilus.game.arcade.command.RequiredRankCommand;
import nautilus.game.arcade.command.WriteCommand; import nautilus.game.arcade.command.WriteCommand;
import nautilus.game.arcade.command.KitUnlockCommand; import nautilus.game.arcade.command.KitUnlockCommand;
import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.events.GameStateChangeEvent;
@ -210,6 +211,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
//Youtuber Kits //Youtuber Kits
private HashSet<Player> _youtube = new HashSet<Player>(); private HashSet<Player> _youtube = new HashSet<Player>();
//Server Property
private Rank _requiredRank;
public ArcadeManager(Arcade plugin, ServerStatusManager serverStatusManager, GameServerConfig serverConfig, public ArcadeManager(Arcade plugin, ServerStatusManager serverStatusManager, GameServerConfig serverConfig,
CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager, CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager,
@ -414,6 +418,8 @@ public class ArcadeManager extends MiniPlugin implements IRelation
}); });
getPacketHandler().addPacketHandler(_resourcePacketHandler); getPacketHandler().addPacketHandler(_resourcePacketHandler);
loadRequiredRank();
} }
@Override @Override
@ -423,6 +429,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
addCommand(new WriteCommand(this)); addCommand(new WriteCommand(this));
addCommand(new KitUnlockCommand(this)); addCommand(new KitUnlockCommand(this));
addCommand(new DisguiseCommand(this)); addCommand(new DisguiseCommand(this));
addCommand(new RequiredRankCommand(this));
} }
public GameServerConfig GetServerConfig() public GameServerConfig GetServerConfig()
@ -785,6 +792,34 @@ public class ArcadeManager extends MiniPlugin implements IRelation
{ {
if (Bukkit.getServer().hasWhitelist()) if (Bukkit.getServer().hasWhitelist())
{ {
if(_requiredRank != null)
{
if (_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), _requiredRank, false))
{
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
if (_serverConfig.Tournament && _clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.MODERATOR, false))
{
event.getPlayer().setOp(true);
}
}
else
{
for (OfflinePlayer player : Bukkit.getWhitelistedPlayers())
{
if (player.getName().equalsIgnoreCase(event.getPlayer().getName()))
{
event.allow();
event.setResult(PlayerLoginEvent.Result.ALLOWED);
return;
}
}
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Required Rank for this server: " + _requiredRank.getColor() + _requiredRank.Name);
return;
}
}
if (_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.MODERATOR, false)) if (_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.MODERATOR, false))
{ {
event.allow(); event.allow();
@ -1490,4 +1525,38 @@ public class ArcadeManager extends MiniPlugin implements IRelation
} }
} }
} }
public void loadRequiredRank()
{
_requiredRank = null;
for(File file : new File(".").listFiles())
{
if(!file.getName().startsWith("RequiredRank"))
continue;
try
{
_requiredRank = Rank.valueOf(file.getName().split("=")[1]);
System.out.println("set required rank to " + _requiredRank.Name);
}
catch (IllegalArgumentException e)
{
System.out.println("===============================");
System.out.println("Wrong required rank definition.");
System.out.println("[" + file.getName().split("=")[1] + "] Does not exist!");
System.out.println("===============================");
}
}
}
public Rank getRequiredRank()
{
return _requiredRank;
}
public void setRequiredRank(Rank rank)
{
_requiredRank = rank;
}
} }

View File

@ -0,0 +1,53 @@
package nautilus.game.arcade.command;
import org.bukkit.entity.Player;
import nautilus.game.arcade.ArcadeManager;
import mineplex.core.command.CommandBase;
import mineplex.core.common.Rank;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
public class RequiredRankCommand extends CommandBase<ArcadeManager>
{
private ArcadeManager _manager;
public RequiredRankCommand(ArcadeManager plugin)
{
super(plugin, Rank.DEVELOPER, new Rank[]{Rank.JNR_DEV}, "Requiredrank");
_manager = plugin;
}
@Override
public void Execute(Player caller, String[] args)
{
if(!_manager.getPlugin().getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing"))
{
UtilPlayer.message(caller, F.main("Command", "This is not a test server.."));
return;
}
if(args.length == 0)
{
UtilPlayer.message(caller, F.main("Command", "Invalid rank input."));
return;
}
if(args[0].equalsIgnoreCase("Reset"))
{
_manager.setRequiredRank(null);
UtilPlayer.message(caller, F.main("Command", "You reset the required rank to null."));
return;
}
try
{
Rank rank = Rank.valueOf(args[0]);
_manager.setRequiredRank(rank);
UtilPlayer.message(caller, F.main("Command", "You set the required rank to: " + rank.getColor() + rank.Name));
}
catch (IllegalArgumentException e)
{
UtilPlayer.message(caller, F.main("Command", "Invalid rank input."));
}
}
}