Merge branch 'master' of http://184.154.0.242:7990/scm/min/mineplex into EventGameUpdates
This commit is contained in:
commit
b6ffee73f5
|
@ -8,6 +8,7 @@ import mineplex.core.common.util.UtilPlayer;
|
|||
|
||||
public enum Rank
|
||||
{
|
||||
//Staff
|
||||
LT("LT", ChatColor.DARK_RED),
|
||||
OWNER("Owner", ChatColor.DARK_RED),
|
||||
DEVELOPER("Dev", ChatColor.RED),
|
||||
|
@ -22,10 +23,12 @@ public enum Rank
|
|||
|
||||
EVENT("Event", ChatColor.WHITE),
|
||||
|
||||
//Staff ^^
|
||||
|
||||
//Media
|
||||
YOUTUBE("YouTube", ChatColor.RED),
|
||||
YOUTUBE_SMALL("MooTube", ChatColor.DARK_PURPLE),
|
||||
TWITCH("Twitch", ChatColor.DARK_PURPLE),
|
||||
|
||||
//Player
|
||||
LEGEND("Legend", ChatColor.GREEN, true),
|
||||
HERO("Hero", ChatColor.LIGHT_PURPLE, true),
|
||||
ULTRA("Ultra", ChatColor.AQUA, true),
|
||||
|
|
|
@ -61,6 +61,9 @@ public class CoreClient
|
|||
|
||||
public Rank GetRank()
|
||||
{
|
||||
if (_rank == null)
|
||||
_rank = Rank.ALL;
|
||||
|
||||
return _rank;
|
||||
}
|
||||
|
||||
|
|
|
@ -125,7 +125,6 @@ public class CoreClientManager extends MiniPlugin
|
|||
if (client == null)
|
||||
{
|
||||
client = new CoreClient(name);
|
||||
client.SetRank(Rank.ALL);
|
||||
}
|
||||
|
||||
return client;
|
||||
|
|
|
@ -151,21 +151,47 @@ public class LoadingWindow implements Runnable, Listener {
|
|||
{
|
||||
Player player = Bukkit.getPlayer(_playersUUID);
|
||||
|
||||
if (player == null || _inv == null ? !player.getOpenInventory().equals(_currentInventory) : (_inv != null && !player.getOpenInventory().getTopInventory().equals(_inv))) {
|
||||
end();
|
||||
return;
|
||||
try
|
||||
{
|
||||
if (player == null || player.getOpenInventory() == null || player.getOpenInventory().getTopInventory() == null || _inv == null ? !player.getOpenInventory().equals(_currentInventory) : (!player.getOpenInventory().getTopInventory().equals(_inv)))
|
||||
{
|
||||
end();
|
||||
return;
|
||||
}
|
||||
|
||||
if (_inv == null)
|
||||
{
|
||||
_inv = Bukkit.createInventory(null, _size, _title);
|
||||
|
||||
setBackGround();
|
||||
setLoadingBarItems();
|
||||
UtilPlayer.swapToInventory(player, _inv);
|
||||
Bukkit.getPluginManager().registerEvents(this, _plugin);
|
||||
}
|
||||
else
|
||||
setLoadingBarItems();
|
||||
}
|
||||
if (_inv == null) {
|
||||
_inv = Bukkit.createInventory(null, _size, _title);
|
||||
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();
|
||||
}
|
||||
|
||||
setBackGround();
|
||||
setLoadingBarItems();
|
||||
UtilPlayer.swapToInventory(player, _inv);
|
||||
Bukkit.getPluginManager().registerEvents(this, _plugin);
|
||||
} else
|
||||
setLoadingBarItems();
|
||||
|
||||
_ticker++;
|
||||
end();
|
||||
}
|
||||
finally
|
||||
{
|
||||
_ticker++;
|
||||
}
|
||||
}
|
||||
|
||||
public void end() {
|
||||
|
|
|
@ -9,7 +9,9 @@ import mineplex.core.common.util.F;
|
|||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
@ -25,9 +27,14 @@ public class LagMeter extends MiniPlugin
|
|||
private double _ticksPerSecond;
|
||||
private double _ticksPerSecondAverage;
|
||||
private long _lastAverage;
|
||||
private long _start;
|
||||
|
||||
private long _lastTick = 0;
|
||||
|
||||
private boolean _timingsRunning;
|
||||
private boolean _timingsPasted;
|
||||
private long _timingsStarted;
|
||||
|
||||
private HashSet<Player> _monitoring = new HashSet<Player>();
|
||||
|
||||
public LagMeter(JavaPlugin plugin, CoreClientManager clientManager)
|
||||
|
@ -37,6 +44,8 @@ public class LagMeter extends MiniPlugin
|
|||
_clientManager = clientManager;
|
||||
_lastRun = System.currentTimeMillis();
|
||||
_lastAverage = System.currentTimeMillis();
|
||||
|
||||
_start = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -87,6 +96,24 @@ public class LagMeter extends MiniPlugin
|
|||
_lastRun = now;
|
||||
|
||||
_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()
|
||||
|
|
|
@ -22,12 +22,12 @@ public class NotificationManager extends MiniPlugin
|
|||
private CoreClientManager _clientManager;
|
||||
|
||||
private String _summerLine =
|
||||
C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" +
|
||||
C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" +
|
||||
C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" +
|
||||
C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" +
|
||||
C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" +
|
||||
C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█" + C.cGold + "█" + C.cYellow + "█";
|
||||
C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" +
|
||||
C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" +
|
||||
C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" +
|
||||
C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" +
|
||||
C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" +
|
||||
C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█" + C.cBlack + "█" + C.cYellow + "█";
|
||||
|
||||
public NotificationManager(JavaPlugin plugin, CoreClientManager client)
|
||||
{
|
||||
|
@ -45,8 +45,8 @@ public class NotificationManager extends MiniPlugin
|
|||
// if (event.getType() == UpdateType.MIN_08)
|
||||
// hugeSale();
|
||||
|
||||
// if (event.getType() == UpdateType.MIN_16)
|
||||
// sale();
|
||||
if (event.getType() == UpdateType.MIN_16)
|
||||
sale();
|
||||
}
|
||||
|
||||
private void sale()
|
||||
|
@ -60,15 +60,15 @@ public class NotificationManager extends MiniPlugin
|
|||
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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!");
|
||||
|
|
|
@ -228,8 +228,14 @@ public class PetManager extends MiniClientPlugin<PetClient>
|
|||
if (_activePetOwners.containsKey(player.getName()))
|
||||
{
|
||||
final Creature pet = _activePetOwners.get(player.getName());
|
||||
|
||||
//Wither Silverfish
|
||||
if (pet.getPassenger() != null)
|
||||
pet.getPassenger().remove();
|
||||
|
||||
pet.remove();
|
||||
|
||||
|
||||
if (removeOwner)
|
||||
{
|
||||
_activePetOwners.remove(player.getName());
|
||||
|
|
|
@ -243,7 +243,7 @@ public class PreferencesPage extends ShopPageBase<PreferencesManager, Preference
|
|||
UserPreferences userPreferences = getPlugin().Get(getPlayer());
|
||||
int index = 9;
|
||||
|
||||
buildPreference(index, Material.FIREBALL, "Hub Stacker", userPreferences.HubGames, _toggleHubGames);
|
||||
buildPreference(index, Material.FIREBALL, "Hub Player Stacker", userPreferences.HubGames, _toggleHubGames);
|
||||
index += 2;
|
||||
buildPreference(index, Material.EYE_OF_ENDER, "Hub Player Visibility", userPreferences.ShowPlayers, _toggleHubPlayers);
|
||||
index += 2;
|
||||
|
|
|
@ -10,6 +10,8 @@ public class PlayerStats
|
|||
|
||||
public long addStat(String statName, long value)
|
||||
{
|
||||
value = Math.max(0L, value);
|
||||
|
||||
if (!_statHash.containsKey(statName))
|
||||
{
|
||||
_statHash.put(statName, 0L);
|
||||
|
|
|
@ -1,23 +1,16 @@
|
|||
package mineplex.core.stats;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
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.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniDbClientPlugin;
|
||||
import mineplex.core.account.CoreClient;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.common.util.NautHashMap;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
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)
|
||||
{
|
||||
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.
|
||||
if (!_stats.containsKey(statName))
|
||||
{
|
||||
Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), new Runnable()
|
||||
runAsync(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
|
|
|
@ -26,9 +26,6 @@ import org.jooq.types.ULong;
|
|||
|
||||
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 INSERT_STAT = "INSERT INTO stats (name) VALUES (?);";
|
||||
|
||||
|
@ -38,16 +35,10 @@ public class StatsRepository extends RepositoryBase
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void initialize()
|
||||
{
|
||||
//executeUpdate(CREATE_STAT_TABLE);
|
||||
//executeUpdate(CREATE_STAT_RELATION_TABLE);
|
||||
}
|
||||
protected void initialize() { }
|
||||
|
||||
@Override
|
||||
protected void update()
|
||||
{
|
||||
}
|
||||
protected void update() { }
|
||||
|
||||
public List<Stat> retrieveStats()
|
||||
{
|
||||
|
@ -165,9 +156,36 @@ public class StatsRepository extends RepositoryBase
|
|||
|
||||
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;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -866,7 +866,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
|||
return UtilTime.elapsed(_portalTime.get(player.getName()), 5000);
|
||||
}
|
||||
|
||||
public boolean CanBump(LivingEntity ent)
|
||||
public boolean hasPlayerStackingEnabled(LivingEntity ent)
|
||||
{
|
||||
if (!(ent instanceof Player))
|
||||
return true;
|
||||
|
@ -906,7 +906,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
|
|||
@EventHandler
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public class ForcefieldManager extends MiniPlugin
|
|||
|
||||
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())
|
||||
{
|
||||
|
|
|
@ -83,8 +83,9 @@ public class SoccerManager extends MiniPlugin
|
|||
private Vector _ballVel;
|
||||
private long _ballDeadTime = -1;
|
||||
|
||||
private String _lastKicker = "";
|
||||
private Color _lastKick = null;
|
||||
private String _lastRedKicker = "";
|
||||
private String _lastBlueKicker = "";
|
||||
private Color _lastKickColor = null;
|
||||
|
||||
//Item Rebound
|
||||
protected Vector _vel;
|
||||
|
@ -176,7 +177,7 @@ public class SoccerManager extends MiniPlugin
|
|||
if (_ball == null)
|
||||
return;
|
||||
|
||||
if (_lastKick == Color.AQUA)
|
||||
if (_lastKickColor == Color.AQUA)
|
||||
{
|
||||
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,
|
||||
|
@ -213,13 +214,22 @@ public class SoccerManager extends MiniPlugin
|
|||
|
||||
UtilAction.zeroVelocity(player);
|
||||
|
||||
_lastKick = getTeamColor(player);
|
||||
if (_lastKick == null)
|
||||
_lastKicker = player.getName();
|
||||
else if (_lastKick == Color.RED)
|
||||
_lastKicker = C.cRed + player.getName();
|
||||
else if (_lastKick == Color.AQUA)
|
||||
_lastKicker = C.cAqua + player.getName();
|
||||
_lastKickColor = getTeamColor(player);
|
||||
if (_lastKickColor == Color.RED)
|
||||
{
|
||||
_lastRedKicker = C.cRed + player.getName();
|
||||
|
||||
if (_lastBlueKicker.length() == 0)
|
||||
_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)
|
||||
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 = null;
|
||||
|
||||
_lastRedKicker = "";
|
||||
_lastBlueKicker = "";
|
||||
}
|
||||
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -264,10 +275,13 @@ public class SoccerManager extends MiniPlugin
|
|||
|
||||
for (Player player : _active)
|
||||
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 = null;
|
||||
|
||||
_lastRedKicker = "";
|
||||
_lastBlueKicker = "";
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
|
@ -95,12 +95,6 @@ public class StackerManager extends MiniPlugin implements IThrown
|
|||
return;
|
||||
}
|
||||
|
||||
if (!Manager.CanBump(stacker))
|
||||
{
|
||||
UtilPlayer.message(stacker, F.main("Stacker", "You are not playing stacker."));
|
||||
return;
|
||||
}
|
||||
|
||||
if (stacker.getVehicle() != null || _tempStackShift.contains(stacker))
|
||||
{
|
||||
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 (!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;
|
||||
}
|
||||
|
||||
|
@ -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))
|
||||
return;
|
||||
|
||||
if (!Manager.CanBump(target))
|
||||
if (!Manager.hasPlayerStackingEnabled(target))
|
||||
return;
|
||||
|
||||
//Velocity
|
||||
|
|
|
@ -31,6 +31,7 @@ import org.bukkit.entity.Item;
|
|||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Pig;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Silverfish;
|
||||
import org.bukkit.entity.Skeleton;
|
||||
import org.bukkit.entity.Skeleton.SkeletonType;
|
||||
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.BlockSpreadEvent;
|
||||
import org.bukkit.event.block.LeavesDecayEvent;
|
||||
import org.bukkit.event.entity.EntityChangeBlockEvent;
|
||||
import org.bukkit.event.entity.EntityCombustEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.event.entity.EntityTargetEvent;
|
||||
|
@ -163,6 +165,12 @@ public class WorldManager extends MiniPlugin
|
|||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void BlockEntityChange(EntityChangeBlockEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void Explosion(EntityExplodeEvent event)
|
||||
{
|
||||
|
|
|
@ -16,6 +16,8 @@ import java.util.Iterator;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.logging.FileHandler;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
|
@ -42,10 +44,12 @@ public class ServerMonitor
|
|||
private static Map<String, ServerGroup> _serverGroupMap = null;
|
||||
private static List<DedicatedServer> _dedicatedServers = null;
|
||||
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 SimpleDateFormat _dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
|
||||
private static Logger _logger = Logger.getLogger("ServerMonitor");
|
||||
private static Timer _timer = new Timer();
|
||||
|
||||
private static int _totalPlayers = 0;
|
||||
private static Region _region;
|
||||
|
@ -124,12 +128,15 @@ public class ServerMonitor
|
|||
|
||||
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))
|
||||
{
|
||||
killServer(minecraftServer.getName(), minecraftServer.getPublicAddress(), minecraftServer.getPlayerCount(), "[KILLED] [FINISHED] " + minecraftServer.getName() + ":" + minecraftServer.getPublicAddress(), true);
|
||||
|
||||
handleUserServerGroup(_serverGroupMap.get(minecraftServer.getGroup()));
|
||||
continue;
|
||||
handleUserServerGroup(_serverGroupMap.get(minecraftServer.getGroup()));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
for (DedicatedServer server : _dedicatedServers)
|
||||
|
@ -202,6 +209,9 @@ public class ServerMonitor
|
|||
|
||||
for (ServerGroup groupStatus : _serverGroups)
|
||||
{
|
||||
if (ignoreServer(groupStatus.getName()))
|
||||
continue;
|
||||
|
||||
NautHashMap<Integer, MinecraftServer> serverMap = new NautHashMap<Integer, MinecraftServer>();
|
||||
|
||||
for (Iterator<MinecraftServer> serverIterator = groupStatus.getServers().iterator(); serverIterator.hasNext();)
|
||||
|
@ -226,17 +236,6 @@ public class ServerMonitor
|
|||
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>();
|
||||
|
@ -386,21 +385,35 @@ public class ServerMonitor
|
|||
deadServers.addAll(_deadServers);
|
||||
|
||||
_deadServers.clear();
|
||||
for (MinecraftServer deadServer : _repository.getDeadServers())
|
||||
for (final MinecraftServer deadServer : _repository.getDeadServers())
|
||||
{
|
||||
if (deadServer.getUptime() <= 10 || ignoreServer(deadServer.getGroup()))
|
||||
continue;
|
||||
|
||||
if (_count == 0 || deadServers.contains(deadServer.getName()))
|
||||
{
|
||||
copyServerLog(deadServer);
|
||||
killServer(deadServer.getName(), deadServer.getPublicAddress(), deadServer.getPlayerCount(), "[KILLED] [DEAD] " + deadServer.getName() + ":" + deadServer.getPublicAddress(), true);
|
||||
|
||||
handleUserServerGroup(_serverGroupMap.get(deadServer.getGroup()));
|
||||
}
|
||||
else
|
||||
else if (!_delayedKill.contains(deadServer.getName()))
|
||||
{
|
||||
_deadServers.add(deadServer.getName());
|
||||
log("[IMPENDING DEATH] : " + deadServer.getName() + ":" + deadServer.getPublicAddress());
|
||||
startTimingReport(deadServer);
|
||||
|
||||
_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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (_debug)
|
||||
|
|
|
@ -3,16 +3,19 @@ package mineplex.servermonitor;
|
|||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import mineplex.serverdata.Region;
|
||||
import mineplex.serverdata.data.BungeeServer;
|
||||
import mineplex.serverdata.data.DataRepository;
|
||||
import mineplex.serverdata.data.DedicatedServer;
|
||||
import mineplex.serverdata.data.ServerGroup;
|
||||
import mineplex.servermonitor.data.BungeeStatusData;
|
||||
import mineplex.serverdata.redis.RedisDataRepository;
|
||||
import mineplex.serverdata.servers.ServerManager;
|
||||
|
||||
public class StatusHistoryRepository
|
||||
{
|
||||
|
@ -25,15 +28,14 @@ public class StatusHistoryRepository
|
|||
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 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_DEDICATEDSERVER_STATS = "INSERT INTO DedicatedServerStats (serverName, address, updated, cpu, ram, usedCpuPercent, usedRamPercent, US) VALUES (?, ?, now(), ?, ?, ?, ?, ?);";
|
||||
private static String INSERT_BUNGEE_STATS = "INSERT INTO BungeeStats (address, updated, players, maxPlayers, alive, online, 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 _bungeeconnection;
|
||||
|
||||
private static DataRepository<BungeeServer> _repository;
|
||||
|
||||
public StatusHistoryRepository()
|
||||
{
|
||||
|
@ -65,6 +67,9 @@ public class StatusHistoryRepository
|
|||
preparedStatement = _connection.prepareStatement(CREATE_NETWORKSTATS_TABLE);
|
||||
preparedStatement.execute();
|
||||
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)
|
||||
{
|
||||
|
@ -185,58 +190,16 @@ public class StatusHistoryRepository
|
|||
|
||||
public void saveNetworkStats(double usedCpuPercent, double usedRamPercent, double availableCPU, double availableRAM, Region region)
|
||||
{
|
||||
/*
|
||||
int totalPlayers = 0;
|
||||
|
||||
List<BungeeStatusData> bungeeStatuses = new ArrayList<BungeeStatusData>();
|
||||
PreparedStatement retrieveStatement = null;
|
||||
List<BungeeServer> bungeeServers = new ArrayList<BungeeServer>(_repository.getElements());
|
||||
|
||||
try
|
||||
for (Iterator<BungeeServer> bungeeIterator = bungeeServers.iterator(); bungeeIterator.hasNext();)
|
||||
{
|
||||
if (_bungeeconnection == null || _bungeeconnection.isClosed())
|
||||
_bungeeconnection = DriverManager.getConnection(_bungeeConnectionString, _userName, _password);
|
||||
BungeeServer server = bungeeIterator.next();
|
||||
|
||||
retrieveStatement = _bungeeconnection.prepareStatement(RETRIEVE_BUNGEE_STATUSES);
|
||||
ResultSet resultSet = retrieveStatement.executeQuery();
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
if (server.getPublicAddress().equalsIgnoreCase("127.0.0.1") || server.getPublicAddress().equalsIgnoreCase("0.0.0.0"))
|
||||
bungeeIterator.remove();
|
||||
}
|
||||
|
||||
PreparedStatement preparedStatement = null;
|
||||
|
@ -248,15 +211,16 @@ public class StatusHistoryRepository
|
|||
|
||||
preparedStatement = _connection.prepareStatement(INSERT_BUNGEE_STATS);
|
||||
|
||||
for (BungeeStatusData bungeeStatusData : bungeeStatuses)
|
||||
for (BungeeServer bungeeStatusData : bungeeServers)
|
||||
{
|
||||
preparedStatement.setString(1, bungeeStatusData.Address);
|
||||
preparedStatement.setInt(2, bungeeStatusData.Players);
|
||||
preparedStatement.setInt(3, bungeeStatusData.MaxPlayers);
|
||||
preparedStatement.setBoolean(4, bungeeStatusData.Alive);
|
||||
preparedStatement.setBoolean(5, bungeeStatusData.Online);
|
||||
preparedStatement.setBoolean(6, bungeeStatusData.US);
|
||||
preparedStatement.addBatch();
|
||||
totalPlayers += bungeeStatusData.getPlayerCount();
|
||||
preparedStatement.setString(1, bungeeStatusData.getPublicAddress());
|
||||
preparedStatement.setInt(2, bungeeStatusData.getPlayerCount());
|
||||
preparedStatement.setInt(3, bungeeStatusData.getPlayerCount());
|
||||
preparedStatement.setBoolean(4, true);
|
||||
preparedStatement.setBoolean(5, true);
|
||||
preparedStatement.setBoolean(6, bungeeStatusData.getRegion() == Region.US);
|
||||
preparedStatement.addBatch();
|
||||
}
|
||||
|
||||
preparedStatement.executeBatch();
|
||||
|
@ -315,6 +279,5 @@ public class StatusHistoryRepository
|
|||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,6 +111,7 @@ import nautilus.game.arcade.addons.TeamArmorAddon;
|
|||
import nautilus.game.arcade.addons.compass.CompassAddon;
|
||||
import nautilus.game.arcade.command.DisguiseCommand;
|
||||
import nautilus.game.arcade.command.GameCommand;
|
||||
import nautilus.game.arcade.command.RequiredRankCommand;
|
||||
import nautilus.game.arcade.command.WriteCommand;
|
||||
import nautilus.game.arcade.command.KitUnlockCommand;
|
||||
import nautilus.game.arcade.events.GameStateChangeEvent;
|
||||
|
@ -211,6 +212,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
//Youtuber Kits
|
||||
private HashSet<Player> _youtube = new HashSet<Player>();
|
||||
|
||||
//Server Property
|
||||
private Rank _requiredRank;
|
||||
|
||||
public ArcadeManager(Arcade plugin, ServerStatusManager serverStatusManager, GameServerConfig serverConfig,
|
||||
CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager,
|
||||
StatsManager statsManager, AchievementManager achievementManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, Chat chat,
|
||||
|
@ -414,6 +418,8 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
});
|
||||
|
||||
getPacketHandler().addPacketHandler(_resourcePacketHandler);
|
||||
|
||||
loadRequiredRank();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -423,6 +429,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
addCommand(new WriteCommand(this));
|
||||
addCommand(new KitUnlockCommand(this));
|
||||
addCommand(new DisguiseCommand(this));
|
||||
addCommand(new RequiredRankCommand(this));
|
||||
}
|
||||
|
||||
public GameServerConfig GetServerConfig()
|
||||
|
@ -785,6 +792,34 @@ public class ArcadeManager extends MiniPlugin implements IRelation
|
|||
{
|
||||
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))
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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."));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue