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
|
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),
|
||||||
|
|
|
@ -61,6 +61,9 @@ public class CoreClient
|
||||||
|
|
||||||
public Rank GetRank()
|
public Rank GetRank()
|
||||||
{
|
{
|
||||||
|
if (_rank == null)
|
||||||
|
_rank = Rank.ALL;
|
||||||
|
|
||||||
return _rank;
|
return _rank;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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!");
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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())
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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