diff --git a/.gitignore b/.gitignore
index 626bd858f..c1fc8b034 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,14 @@ zBench
zMyst
zSotanna
zSotanna2
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.fdt
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.fdx
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.fnm
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.frq
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.nrm
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.prx
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.tii
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/_0.tis
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/segments.gen
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/segments_1
+/.recommenders/index/http___download_eclipse_org_recommenders_models_mars_/write.lock
diff --git a/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml b/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml
index 150c21bc3..370ba8bd7 100644
--- a/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml
+++ b/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml
@@ -20,6 +20,7 @@
+
\ No newline at end of file
diff --git a/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml b/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml
index ca2ed67aa..619cdf3df 100644
--- a/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml
+++ b/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml
@@ -19,6 +19,7 @@
+
\ No newline at end of file
diff --git a/Plugins/.idea/compiler.xml b/Plugins/.idea/compiler.xml
index f1153fde6..48dd43437 100644
--- a/Plugins/.idea/compiler.xml
+++ b/Plugins/.idea/compiler.xml
@@ -5,6 +5,8 @@
+
+
diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml
index 7bf9af7e2..6c5db05db 100644
--- a/Plugins/BuildFiles/common.xml
+++ b/Plugins/BuildFiles/common.xml
@@ -86,6 +86,9 @@
+
+
+
@@ -155,6 +158,9 @@
+
+
+
@@ -204,6 +210,9 @@
+
+
+
@@ -240,6 +249,9 @@
+
+
+
@@ -446,6 +458,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Plugins/Libraries/BungeeCord.jar b/Plugins/Libraries/BungeeCord.jar
index a408f8656..45383e430 100644
Binary files a/Plugins/Libraries/BungeeCord.jar and b/Plugins/Libraries/BungeeCord.jar differ
diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java
index 55427e477..443dc104b 100644
--- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java
+++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java
@@ -96,6 +96,8 @@ public class LobbyBalancer implements Listener, Runnable
if (timeSpentInLock > 50)
System.out.println("[==] TIMING [==] Locked loading servers for " + timeSpentInLock + "ms");
+
+ _lobbyIndex = 0;
}
}
}
diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java
index fa7f5c43c..75cf934cf 100644
--- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java
+++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/motd/MotdManager.java
@@ -1,5 +1,6 @@
package mineplex.bungee.motd;
+import java.awt.Color;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -7,9 +8,13 @@ import java.util.Random;
import java.util.concurrent.TimeUnit;
import mineplex.serverdata.Region;
+import mineplex.serverdata.data.BungeeServer;
import mineplex.serverdata.data.DataRepository;
import mineplex.serverdata.redis.RedisDataRepository;
+import mineplex.serverdata.servers.ConnectionData;
import mineplex.serverdata.servers.ServerManager;
+import mineplex.serverdata.servers.ConnectionData.ConnectionType;
+import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.event.ProxyPingEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
@@ -20,7 +25,9 @@ public class MotdManager implements Listener, Runnable
private Plugin _plugin;
private DataRepository _repository;
-
+ private DataRepository _secondRepository;
+ private Region _region;
+
private Random _random = new Random();
private String _firstLine = " §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r";
private List _motdLines;
@@ -28,6 +35,7 @@ public class MotdManager implements Listener, Runnable
public MotdManager(Plugin plugin)
{
_plugin = plugin;
+ _region = !new File("eu.dat").exists() ? Region.US : Region.EU;
_plugin.getProxy().getScheduler().schedule(_plugin, this, 5L, 30L, TimeUnit.SECONDS);
_plugin.getProxy().getPluginManager().registerListener(_plugin, this);
@@ -38,12 +46,21 @@ public class MotdManager implements Listener, Runnable
if (new File("updateMOTD.dat").exists())
{
- List lines = new ArrayList();
- lines.add(" §f§l◄ §6§lNEW §f§l▬ §c§lSSM/SG/SW Teams§f§l ▬ §c§lMPS Update §f§l►");
- //lines.add(" §d§lRank Sale §a§l40% Off");
- //lines.add(" §f§l◄§c§lMAINTENANCE§f§l►");
+ if (_region == Region.US)
+ _secondRepository = new RedisDataRepository(new ConnectionData("10.81.1.156", 6379, ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.81.1.156", 6377, ConnectionType.SLAVE, "ServerStatus"),
+ Region.ALL, GlobalMotd.class, "globalMotd");
+ else
+ _secondRepository = new RedisDataRepository(new ConnectionData("10.33.53.16", 6379, ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.33.53.16", 6377, ConnectionType.SLAVE, "ServerStatus"),
+ Region.ALL, GlobalMotd.class, "globalMotd");
- updateMainMotd(" §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r", lines);
+ //String motdLine = "§f§l◄ §c§lMaintenance§f§l ►";
+ //String motdLine = "§f§l◄ §a§lCarl the Creeper§f§l ►";
+ String motdLine = " §b§l◄§f§lNEW GAME§b§l► §f§l◄§b§lEVOLUTION§f§l► §b§l◄§f§lNEW GAME§b§l►";
+ //String motdLine = " §f§l◄ §a§lCarl the Creeper§f§l ▬ §c§l75% OFF SALE§f§l ►";
+ //String motdLine = " §d§lRank Sale §a§l40% Off");
+ //String motdLine = " §f§l◄§c§lMAINTENANCE§f§l►");
+
+ updateMainMotd(" §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r", motdLine);
System.out.println("Updated Bungee MOTD");
}
}
@@ -68,7 +85,7 @@ public class MotdManager implements Listener, Runnable
GlobalMotd motd = _repository.getElement("MainMotd");
if (motd != null)
- {
+ {
_motdLines = motd.getMotd();
_firstLine = motd.getHeadline();
}
@@ -78,9 +95,14 @@ public class MotdManager implements Listener, Runnable
* Update the main {@link GlobalMotd} determining the MOTD for Bungee instances.
* @param motdLines - the lines to update the MOTD to.
*/
- public void updateMainMotd(String headline, List motdLines)
+ public void updateMainMotd(String headline, String motdLine)
{
+ List motdLines = new ArrayList();
+
+ motdLines.add(motdLine);
+
_repository.addElement(new GlobalMotd("MainMotd", headline, motdLines));
+ _secondRepository.addElement(new GlobalMotd("MainMotd", headline, motdLines));
}
public List getMotdLines()
diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java
index 2543d2609..2b97f9b62 100644
--- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java
+++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerCount/PlayerCount.java
@@ -24,7 +24,6 @@ public class PlayerCount implements Listener, Runnable
{
private DataRepository _repository;
private DataRepository _secondRepository;
- private UUID _uuid;
private Region _region;
private ListenerInfo _listenerInfo;
@@ -34,7 +33,6 @@ public class PlayerCount implements Listener, Runnable
public PlayerCount(Plugin plugin)
{
- _uuid = UUID.randomUUID();
_region = !new File("eu.dat").exists() ? Region.US : Region.EU;
_plugin = plugin;
@@ -86,7 +84,7 @@ public class PlayerCount implements Listener, Runnable
*/
private BungeeServer generateSnapshot()
{
- String name = _uuid.toString(); // Use random UUID for unique id name.
+ String name = _listenerInfo.getHost().getAddress().getHostAddress();
String host = _listenerInfo.getHost().getAddress().getHostAddress();
int port = _listenerInfo.getHost().getPort();
boolean connected = InternetStatus.isConnected();
diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerStats/PlayerStats.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerStats/PlayerStats.java
index 63bab7330..fcae65a57 100644
--- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerStats/PlayerStats.java
+++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerStats/PlayerStats.java
@@ -1,6 +1,5 @@
package mineplex.bungee.playerStats;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -17,9 +16,8 @@ import net.md_5.bungee.event.EventHandler;
public class PlayerStats implements Listener, Runnable
{
private Plugin _plugin;
- private PlayerStatsRepository _repository;
+ private PlayerStatsRepository _repository;
- private PlayerCache _playerCache = new PlayerCache();
private HashSet _retrievingPlayerInfo = new HashSet();
public PlayerStats(Plugin plugin)
@@ -52,7 +50,7 @@ public class PlayerStats implements Listener, Runnable
boolean addOrUpdatePlayer = false;
- playerInfo = _playerCache.getPlayer(uuid);
+ playerInfo = PlayerCache.getInstance().getPlayer(uuid);
if (playerInfo == null)
{
@@ -80,11 +78,11 @@ public class PlayerStats implements Listener, Runnable
}
else
playerInfo = updatedPlayerInfo;
-
- _playerCache.addPlayer(playerInfo);
}
playerInfo.setSessionId(_repository.updatePlayerStats(playerInfo.getId(), ipInfo.id));
+ playerInfo.updateLoginTime();
+ PlayerCache.getInstance().addPlayer(playerInfo);
}
finally
{
@@ -105,13 +103,13 @@ public class PlayerStats implements Listener, Runnable
PlayerInfo playerInfo = null;
- playerInfo = _playerCache.getPlayer(uuid);
+ playerInfo = PlayerCache.getInstance().getPlayer(uuid);
int timeout = 5;
while (playerInfo == null && _retrievingPlayerInfo.contains(uuid) && timeout <= 5)
{
- playerInfo = _playerCache.getPlayer(uuid);
+ playerInfo = PlayerCache.getInstance().getPlayer(uuid);
if (playerInfo != null)
break;
@@ -130,6 +128,7 @@ public class PlayerStats implements Listener, Runnable
timeout++;
}
+ System.out.println(playerInfo.getName() + ":" + playerInfo.getSessionId());
_repository.updatePlayerSession(playerInfo.getSessionId());
}
});
@@ -138,6 +137,6 @@ public class PlayerStats implements Listener, Runnable
@Override
public void run()
{
- _playerCache.clean();
+ PlayerCache.getInstance().clean();
}
}
diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerJoinHandler.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerJoinHandler.java
new file mode 100644
index 000000000..8e56dab88
--- /dev/null
+++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerJoinHandler.java
@@ -0,0 +1,27 @@
+package mineplex.bungee.playerTracker;
+
+import mineplex.serverdata.commands.CommandCallback;
+import mineplex.serverdata.commands.PlayerJoinCommand;
+import mineplex.serverdata.commands.ServerCommand;
+
+public class PlayerJoinHandler implements CommandCallback
+{
+ private PlayerTracker _playerTracker;
+
+ public PlayerJoinHandler(PlayerTracker playerTracker)
+ {
+ _playerTracker = playerTracker;
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public void run(ServerCommand command)
+ {
+ if (command instanceof PlayerJoinCommand)
+ {
+ PlayerJoinCommand joinCommand = (PlayerJoinCommand)command;
+
+ _playerTracker.kickPlayerIfOnline(joinCommand.getUuid());
+ }
+ }
+}
diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java
index 1b8117d04..707dc3eb8 100644
--- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java
+++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/playerTracker/PlayerTracker.java
@@ -1,19 +1,25 @@
package mineplex.bungee.playerTracker;
import java.io.File;
+import java.util.HashSet;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
import mineplex.serverdata.Region;
+import mineplex.serverdata.commands.ServerCommandManager;
import mineplex.serverdata.data.DataRepository;
import mineplex.serverdata.data.PlayerStatus;
import mineplex.serverdata.redis.RedisDataRepository;
import mineplex.serverdata.servers.ServerManager;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PlayerDisconnectEvent;
+import net.md_5.bungee.api.event.PostLoginEvent;
import net.md_5.bungee.api.event.ServerConnectedEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.event.EventHandler;
-public class PlayerTracker implements Listener
+public class PlayerTracker implements Listener, Runnable
{
// Default period before status expiry (8 hours)
private static final int DEFAULT_STATUS_TIMEOUT = 60 * 60 * 8;
@@ -21,6 +27,8 @@ public class PlayerTracker implements Listener
// Repository storing player status' across network.
private DataRepository _repository;
+ private HashSet _onlineUUIDs = new HashSet();
+
private Plugin _plugin;
public PlayerTracker(Plugin plugin)
@@ -28,11 +36,14 @@ public class PlayerTracker implements Listener
_plugin = plugin;
_plugin.getProxy().getPluginManager().registerListener(_plugin, this);
+ _plugin.getProxy().getScheduler().schedule(_plugin, this, 1L, 1L, TimeUnit.MINUTES);
Region region = !new File("eu.dat").exists() ? Region.US : Region.EU;
_repository = new RedisDataRepository(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
region, PlayerStatus.class, "playerStatus");
+ ServerCommandManager.getInstance().registerCommandType("PlayerJoinCommand", mineplex.serverdata.commands.PlayerJoinCommand.class, new PlayerJoinHandler(this));
+
System.out.println("Initialized PlayerTracker.");
}
@@ -59,5 +70,42 @@ public class PlayerTracker implements Listener
_repository.removeElement(event.getPlayer().getName().toLowerCase());
}
});
+
+ _onlineUUIDs.remove(event.getPlayer().getUniqueId());
+ }
+
+ @EventHandler
+ public void playerConnect(final PostLoginEvent event)
+ {
+ _onlineUUIDs.add(event.getPlayer().getUniqueId().toString());
+ }
+
+ @Override
+ public void run()
+ {
+ HashSet onlineUUIDs = new HashSet();
+
+ for (ProxiedPlayer player : _plugin.getProxy().getPlayers())
+ {
+ onlineUUIDs.add(player.getUniqueId().toString());
+ }
+
+ _onlineUUIDs = onlineUUIDs;
+ }
+
+ public boolean isPlayerOnline(String uuid)
+ {
+ return _onlineUUIDs.contains(uuid);
+ }
+
+ public void kickPlayerIfOnline(String uuid)
+ {
+ if (_onlineUUIDs.contains(uuid))
+ {
+ ProxiedPlayer player = _plugin.getProxy().getPlayer(UUID.fromString(uuid));
+
+ if (player != null)
+ player.disconnect("You have logged in from another location.");
+ }
}
}
diff --git a/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java b/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java
index 22be0d855..2dd88a8e3 100644
--- a/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java
+++ b/Plugins/Mineplex.BungeeRotator/src/mineplex/bungee/BungeeRotator.java
@@ -141,7 +141,7 @@ public class BungeeRotator
else
euPlayers += server.getPlayerCount();
- System.out.println(server.getRegion().toString() + " " + server.getPublicAddress() + " " + server.getPlayerCount() + "/" + server.getPlayerCount());
+ System.out.println(server.getRegion().toString() + " " + server.getName() + " " + server.getPublicAddress() + " " + server.getPlayerCount() + "/" + server.getPlayerCount());
}
System.out.println("US Players : " + usPlayers);
@@ -247,6 +247,9 @@ public class BungeeRotator
new ApiDeleteCall("https://api.dnsmadeeasy.com/V2.0/dns/managed/", 962728, "/records?" + idBuilder.toString()).Execute();
log("Deleted " + recordsToDelete.size() + " records.");
}
+
+ _repository.clean();
+ _secondRepository.clean();
}
/*
diff --git a/Plugins/Mineplex.ChestConverter/.externalToolBuilders/ServerMonitor.launch b/Plugins/Mineplex.ChestConverter/.externalToolBuilders/ServerMonitor.launch
index 0c6e0f696..d07871b9a 100644
--- a/Plugins/Mineplex.ChestConverter/.externalToolBuilders/ServerMonitor.launch
+++ b/Plugins/Mineplex.ChestConverter/.externalToolBuilders/ServerMonitor.launch
@@ -10,6 +10,7 @@
+
diff --git a/Plugins/Mineplex.ChestConverter/src/mineplex/chestConverter/ChestConverter.java b/Plugins/Mineplex.ChestConverter/src/mineplex/chestConverter/ChestConverter.java
index 5d7c5d23e..f1fd646d0 100644
--- a/Plugins/Mineplex.ChestConverter/src/mineplex/chestConverter/ChestConverter.java
+++ b/Plugins/Mineplex.ChestConverter/src/mineplex/chestConverter/ChestConverter.java
@@ -1,11 +1,20 @@
package mineplex.chestConverter;
import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map.Entry;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
@@ -18,8 +27,23 @@ public class ChestConverter
private static Logger _logger = Logger.getLogger("Converter");
+ private static String _connectionString = "jdbc:mysql://db.mineplex.com:3306/Account?allowMultiQueries=true";
+ private static String _userName = "MilitaryPolice";
+ private static String _password = "CUPr6Wuw2Rus$qap";
+
+ private static Connection _connection;
+
public static void main (String args[])
{
+ try
+ {
+ Class.forName("com.mysql.jdbc.Driver");
+ }
+ catch (ClassNotFoundException e1)
+ {
+ e1.printStackTrace();
+ }
+
try
{
FileHandler fileHandler = new FileHandler("converter.log", true);
@@ -38,72 +62,138 @@ public class ChestConverter
{
e1.printStackTrace();
}
-
- _repository = new ChestConverterRepository();
- int lastId = 18279475;
- int count = 50000;
- int numOfRowsProcessed = lastId;
- HashMap tasks = _repository.getTaskList();
+ int limit = 50000;
+ HashSet accountStats = new HashSet();
- try
+ while (true)
{
- while (true)
+ accountStats.clear();
+
+ try
{
- long time = System.currentTimeMillis();
- HashMap> playerMap = new HashMap>();
+ Statement statement = null;
-
- List taskList = _repository.getTasks(lastId, count);
-
- if (taskList != null && taskList.size() > 0)
+ try
{
- for (AccountTask task : taskList)
+ if (_connection == null || _connection.isClosed())
+ _connection = DriverManager.getConnection(_connectionString, _userName, _password);
+
+ statement = _connection.createStatement();
+
+ statement.execute("SELECT accountId, statId, value FROM Account.accountStats LIMIT " + limit + ";");
+
+ ResultSet resultSet = statement.getResultSet();
+
+ while (resultSet.next())
{
- if (!playerMap.containsKey(task.UUID))
- playerMap.put(task.UUID, new ArrayList());
+ accountStats.add(new AccountStat(resultSet.getInt(1), resultSet.getInt(2), resultSet.getInt(3)));
+ }
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ if (statement != null)
+ {
+ try
+ {
+ statement.close();
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ if (accountStats.size() == 0)
+ {
+ System.out.println("No accounts.");
+ return;
+ }
+
+ PreparedStatement updateStatement = null;
+ PreparedStatement insertStatement = null;
+ Statement deleteStatement = null;
+
+ try
+ {
+ if (_connection == null || _connection.isClosed())
+ _connection = DriverManager.getConnection(_connectionString, _userName, _password);
+
+ _connection.setAutoCommit(true);
+ updateStatement = _connection.prepareStatement("UPDATE accountStat SET value = value + ? WHERE accountId = ? AND statId = ? AND value < ?;");
+
+ for (AccountStat stat : accountStats)
+ {
+ updateStatement.setLong(1, stat.value);
+ updateStatement.setInt(2, stat.accountId);
+ updateStatement.setInt(3, stat.statId);
+ updateStatement.setLong(4, stat.value);
- playerMap.get(task.UUID).add(tasks.get(task.Task));
-
- if (task.Id > lastId)
- lastId = task.Id;
+ updateStatement.addBatch();
}
- _repository.incrementClients(playerMap);
- try
+ int[] rowsAffected = updateStatement.executeBatch();
+ _connection.setAutoCommit(false);
+ int i = 0;
+ int count = 0;
+
+ log("Updated rows - " + limit);
+
+ insertStatement = _connection.prepareStatement("INSERT IGNORE accountStat(accountId, statId, value) VALUES (?, ?, ?);");
+
+ for (AccountStat stat : accountStats)
{
- numOfRowsProcessed += count;
- log("Natural sleep. " + count + " took " + (System.currentTimeMillis() - time) / 1000 + " seconds. Count = " + + numOfRowsProcessed);
- Thread.sleep(100);
- }
- catch (InterruptedException e)
+ if (rowsAffected[i] < 1)
+ {
+ insertStatement.setInt(1, stat.accountId);
+ insertStatement.setInt(2, stat.statId);
+ insertStatement.setLong(3, stat.value);
+
+ insertStatement.addBatch();
+ count++;
+ }
+
+ i++;
+ }
+
+ insertStatement.executeBatch();
+ log("Inserted rows - " + count);
+
+ deleteStatement = _connection.createStatement();
+ deleteStatement.executeUpdate("DELETE FROM accountStats LIMIT " + limit + ";");
+
+ _connection.commit();
+
+ log("Deleted rows - " + limit);
+ }
+ catch (Exception exception)
+ {
+ exception.printStackTrace();
+ }
+ finally
+ {
+ if (statement != null)
{
- e.printStackTrace();
+ try
+ {
+ statement.close();
+ }
+ catch (SQLException e)
+ {
+ e.printStackTrace();
+ }
}
}
- else if (numOfRowsProcessed > 17000000)
- {
- System.out.println("Count : " + numOfRowsProcessed);
- _logger.info("Count : " + numOfRowsProcessed);
- break;
- }
- else
- {
- System.out.println("No greater than 17 mil");
- _logger.info("No greater than 17 mil");
- System.out.println("Count : " + numOfRowsProcessed);
- _logger.info("Count : " + numOfRowsProcessed);
- }
}
- }
- catch (Exception e)
- {
- _logger.info(e.getMessage());
- }
- finally
- {
- System.out.println("Count : " + numOfRowsProcessed);
- _logger.info("Count : " + numOfRowsProcessed);
+ catch (Exception e)
+ {
+ _logger.info(e.getMessage());
+ }
}
}
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java
index 74e648808..8cab61a15 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/Rank.java
@@ -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),
@@ -21,36 +22,48 @@ public enum Rank
MEDIA("Media", ChatColor.BLUE),
EVENT("Event", ChatColor.WHITE),
-
- //Staff ^^
-
+
+ //Media
YOUTUBE("YouTube", ChatColor.RED),
+ YOUTUBE_SMALL("MooTube", ChatColor.DARK_PURPLE),
TWITCH("Twitch", ChatColor.DARK_PURPLE),
- LEGEND("Legend", ChatColor.GREEN),
- HERO("Hero", ChatColor.LIGHT_PURPLE),
- ULTRA("Ultra", ChatColor.AQUA),
+
+ //Player
+ LEGEND("Legend", ChatColor.GREEN, true),
+ HERO("Hero", ChatColor.LIGHT_PURPLE, true),
+ ULTRA("Ultra", ChatColor.AQUA, true),
ALL("", ChatColor.WHITE);
- private ChatColor Color;
+ private ChatColor _color;
+ private boolean _donor;
+
public String Name;
Rank(String name, ChatColor color)
{
- Color = color;
+ _color = color;
Name = name;
+ _donor = false;
}
- public boolean Has(Rank rank)
+ Rank(String name, ChatColor color, boolean donor)
{
- return Has(null, rank, false);
+ _color = color;
+ Name = name;
+ _donor = donor;
}
- public boolean Has(Player player, Rank rank, boolean inform)
+ public boolean has(Rank rank)
{
- return Has(player, rank, null, inform);
+ return has(null, rank, false);
}
- public boolean Has(Player player, Rank rank, Rank[] specific, boolean inform)
+ public boolean has(Player player, Rank rank, boolean inform)
+ {
+ return has(player, rank, null, inform);
+ }
+
+ public boolean has(Player player, Rank rank, Rank[] specific, boolean inform)
{
//Specific Rank
if (specific != null)
@@ -79,7 +92,7 @@ public enum Rank
return false;
}
- public String GetTag(boolean bold, boolean uppercase)
+ public String getTag(boolean bold, boolean uppercase)
{
if (Name.equalsIgnoreCase("ALL"))
return "";
@@ -88,12 +101,17 @@ public enum Rank
if (uppercase)
name = Name.toUpperCase();
- if (bold) return Color + C.Bold + name;
- else return Color + name;
+ if (bold) return _color + C.Bold + name;
+ else return _color + name;
}
- public ChatColor GetColor()
+ public ChatColor getColor()
{
- return Color;
+ return _color;
+ }
+
+ public boolean isDonor()
+ {
+ return _donor;
}
}
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/structs/ItemContainer.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/structs/ItemContainer.java
new file mode 100644
index 000000000..64871529b
--- /dev/null
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/structs/ItemContainer.java
@@ -0,0 +1,24 @@
+package mineplex.core.common.structs;
+
+import org.bukkit.Material;
+
+public class ItemContainer
+{
+ public Material Type;
+ public byte Data;
+ public String Name;
+
+ public ItemContainer(Material type, byte data, String name)
+ {
+ Type = type;
+ Data = data;
+ Name = name;
+ }
+
+ public ItemContainer(int id, byte data, String name)
+ {
+ Type = Material.getMaterial(id);
+ Data = data;
+ Name = name;
+ }
+}
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java
index a387ba46a..db1e528f3 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java
@@ -95,15 +95,15 @@ public class F
public static String help(String cmd, String body, Rank rank)
{
- return rank.GetColor() + cmd + " " + C.mBody + body + " " + rank(rank);
+ return rank.getColor() + cmd + " " + C.mBody + body + " " + rank(rank);
}
public static String rank(Rank rank)
{
if (rank == Rank.ALL)
- return rank.GetColor() + "Player";
+ return rank.getColor() + "Player";
- return rank.GetTag(false, false);
+ return rank.getTag(false, false);
}
public static String value(String variable, String value)
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/MapUtil.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/MapUtil.java
index b327bf32e..73ae33c86 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/MapUtil.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/MapUtil.java
@@ -69,6 +69,11 @@ public class MapUtil
{
QuickChangeBlockAt(location.getWorld(), location.getBlockX(), location.getBlockY(), location.getBlockZ(), setTo);
}
+
+ public static void QuickChangeBlockAt(Location location, Material setTo, byte data)
+ {
+ QuickChangeBlockAt(location.getWorld(), location.getBlockX(), location.getBlockY(), location.getBlockZ(), setTo, data);
+ }
public static void QuickChangeBlockAt(Location location, int id, byte data)
{
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java
index 756947520..42dcfafec 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java
@@ -5,10 +5,8 @@ import java.util.List;
import java.util.Set;
import java.util.TreeSet;
-
-
-
import org.bukkit.Location;
+import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -252,6 +250,25 @@ public class UtilAlg
return bestLoc;
}
+ public static Location findFurthest(Location mid, ArrayList locs)
+ {
+ Location bestLoc = null;
+ double bestDist = 0;
+
+ for (Location loc : locs)
+ {
+ double dist = UtilMath.offset(mid, loc);
+
+ if (bestLoc == null || dist > bestDist)
+ {
+ bestLoc = loc;
+ bestDist = dist;
+ }
+ }
+
+ return bestLoc;
+ }
+
public static boolean isInPyramid(Vector a, Vector b, double angleLimit)
{
return (Math.abs(GetPitch(a) - GetPitch(b)) < angleLimit) && (Math.abs(GetYaw(a) - GetYaw(b)) < angleLimit);
@@ -299,6 +316,42 @@ public class UtilAlg
return bestLoc;
}
+ public static Location getLocationAwayFromOtherLocations(ArrayList locs, ArrayList players)
+ {
+ Location bestLoc = null;
+ double bestDist = 0;
+
+ for (Location loc : locs)
+ {
+ double closest = -1;
+
+ for (Location player : players)
+ {
+ //Different Worlds
+ if (!player.getWorld().equals(loc.getWorld()))
+ continue;
+
+ double dist = UtilMath.offsetSquared(player, loc);
+
+ if (closest == -1 || dist < closest)
+ {
+ closest = dist;
+ }
+ }
+
+ if (closest == -1)
+ continue;
+
+ if (bestLoc == null || closest > bestDist)
+ {
+ bestLoc = loc;
+ bestDist = closest;
+ }
+ }
+
+ return bestLoc;
+ }
+
public static Location getLocationNearPlayers(ArrayList locs, ArrayList players, ArrayList dontOverlap)
{
Location bestLoc = null;
@@ -354,7 +407,7 @@ public class UtilAlg
return bestLoc;
}
-
+
public static Vector calculateVelocity(Vector from, Vector to, double heightGain, Entity entity)
{
if (entity instanceof LivingEntity)
@@ -403,5 +456,21 @@ public class UtilAlg
double vz = vh * dirz;
return new Vector(vx, vy, vz);
}
-
+
+ public static Location getNearestCornerLocation(Location near, Block block)
+ {
+ ArrayList corners = new ArrayList();
+
+ corners.add(block.getLocation().clone());
+ corners.add(block.getLocation().clone().add(.999, 0, 0));
+ corners.add(block.getLocation().clone().add(.999, 0, .999));
+ corners.add(block.getLocation().clone().add(0, 0, .999));
+
+ corners.add(block.getLocation().clone().add(0, .999, 0));
+ corners.add(block.getLocation().clone().add(.999, .999, 0));
+ corners.add(block.getLocation().clone().add(.999, .999, .999));
+ corners.add(block.getLocation().clone().add(0, .999, .999));
+
+ return UtilAlg.findClosest(near, corners);
+ }
}
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java
index 8b489c952..1cc2d5416 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilEnt.java
@@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
+import net.minecraft.server.v1_7_R4.AxisAlignedBB;
import net.minecraft.server.v1_7_R4.EntityBat;
import net.minecraft.server.v1_7_R4.EntityCreature;
import net.minecraft.server.v1_7_R4.EntityEnderDragon;
@@ -26,7 +27,9 @@ import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
-import org.bukkit.block.BlockFace;
+import org.bukkit.block.Block;
+import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
+import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCreature;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity;
import org.bukkit.entity.Creature;
@@ -36,8 +39,6 @@ import org.bukkit.entity.Giant;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
-import org.bukkit.craftbukkit.v1_7_R4.entity.CraftCreature;
-import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
public class UtilEnt
{
@@ -495,10 +496,14 @@ public class UtilEnt
public static boolean isGrounded(Entity ent)
{
- if (ent instanceof CraftEntity)
- return ((CraftEntity)ent).getHandle().onGround;
-
- return UtilBlock.solid(ent.getLocation().getBlock().getRelative(BlockFace.DOWN));
+ AxisAlignedBB box = ((CraftEntity)ent).getHandle().boundingBox;
+ Location bottom_corner_1 = new Location(ent.getWorld(), box.a, ent.getLocation().getY()-0.1, box.c);
+ Location bottom_corner_2 = new Location(ent.getWorld(), box.d, ent.getLocation().getY()-0.1, box.f);
+
+ for(Block b : UtilBlock.getInBoundingBox(bottom_corner_1, bottom_corner_2)){
+ if(UtilBlock.solid(b)) return true;
+ }
+ return false;
}
public static void PlayDamageSound(LivingEntity damagee)
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilFirework.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilFirework.java
index 7b9a8479f..c07b7b3b4 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilFirework.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilFirework.java
@@ -1,5 +1,7 @@
package mineplex.core.common.util;
+import net.minecraft.server.v1_7_R4.PacketPlayOutEntityDestroy;
+
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Type;
@@ -8,6 +10,7 @@ import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftFirework;
import org.bukkit.entity.Firework;
+import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.FireworkMeta;
import org.bukkit.util.Vector;
@@ -68,5 +71,29 @@ public class UtilFirework
public static void playFirework(Location loc, Type type, Color color, boolean flicker, boolean trail)
{
playFirework(loc, FireworkEffect.builder().flicker(flicker).withColor(color).with(type).trail(trail).build());
+ }
+
+ public static void packetPlayFirework(Player player, Location loc, Type type, Color color, boolean flicker, boolean trail)
+ {
+ Firework firework = (Firework) loc.getWorld().spawn(loc, Firework.class);
+ FireworkEffect effect = FireworkEffect.builder().flicker(flicker).withColor(color).with(type).trail(trail).build();
+
+ FireworkMeta data = (FireworkMeta) firework.getFireworkMeta();
+ data.clearEffects();
+ data.setPower(1);
+ data.addEffect(effect);
+ firework.setFireworkMeta(data);
+
+ ((CraftFirework) firework).getHandle().expectedLifespan = 1;
+
+ PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(firework.getEntityId());
+
+ for (Player viewing : UtilServer.getPlayers())
+ {
+ if (player == viewing)
+ continue;
+
+ UtilPlayer.sendPacket(viewing, packet);
+ }
}
}
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java
index 8f3ec81cc..2ef29d592 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilItem.java
@@ -4,22 +4,28 @@ import java.util.AbstractMap;
import java.util.LinkedList;
import java.util.Map.Entry;
+import mineplex.core.common.structs.ItemContainer;
+
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class UtilItem
{
- public static LinkedList> matchItem(Player caller, String items, boolean inform)
+ private static final Material[] FOOD_LIST = { Material.APPLE, Material.BAKED_POTATO, Material.BREAD, Material.CARROT, Material.CARROT_ITEM, Material.COOKED_CHICKEN,
+ Material.COOKED_FISH, Material.GRILLED_PORK, Material.COOKIE, Material.GOLDEN_APPLE, Material.GOLDEN_CARROT, Material.MELON, Material.MUSHROOM_SOUP, Material.POISONOUS_POTATO,
+ Material.PUMPKIN_PIE, Material.RAW_BEEF, Material.RAW_CHICKEN, Material.RAW_FISH, Material.PORK, Material.ROTTEN_FLESH, Material.SPIDER_EYE, Material.COOKED_BEEF};
+
+ public static LinkedList matchItem(Player caller, String items, boolean inform)
{
- LinkedList> matchList = new LinkedList>();
+ LinkedList matchList = new LinkedList();
String failList = "";
//Mass Search
for (String cur : items.split(","))
{
- Entry match = searchItem(caller, cur, inform);
+ ItemContainer match = searchItem(caller, cur, inform);
if (match != null)
matchList.add(match);
@@ -40,21 +46,27 @@ public class UtilItem
return matchList;
}
- public static Entry searchItem(Player caller, String args, boolean inform)
+ public static ItemContainer searchItem(Player caller, String args, boolean inform)
{
- LinkedList> matchList = new LinkedList>();
+ LinkedList matchList = new LinkedList();
for (Material cur : Material.values())
{
+ String[] arg = args.split(":");
+
+ //Get Selected Name
+ String name = null;
+ if (arg.length > 2)
+ name = arg[2].replaceAll("_", " ");
+
//By Name
if (cur.toString().equalsIgnoreCase(args))
- return new AbstractMap.SimpleEntry(cur, (byte)0);
+ return new ItemContainer(cur, (byte)0, name);
if (cur.toString().toLowerCase().contains(args.toLowerCase()))
- matchList.add(new AbstractMap.SimpleEntry(cur, (byte)0));
+ matchList.add(new ItemContainer(cur, (byte)0, name));
- //By ID:Data
- String[] arg = args.split(":");
+ //By ID:Data:Name
//ID
int id = 0;
@@ -82,8 +94,8 @@ public class UtilItem
{
continue;
}
-
- return new AbstractMap.SimpleEntry(cur, data);
+
+ return new ItemContainer(cur, data, name);
}
//No / Non-Unique
@@ -102,8 +114,9 @@ public class UtilItem
if (matchList.size() > 0)
{
String matchString = "";
- for (Entry cur : matchList)
- matchString += F.elem(cur.getKey().toString()) + ", ";
+ for (ItemContainer cur : matchList)
+ matchString += F.elem(cur.Type.toString()) + ", ";
+
if (matchString.length() > 1)
matchString = matchString.substring(0 , matchString.length() - 2);
@@ -137,4 +150,20 @@ public class UtilItem
{
return item != null && item.getType() == material;
}
+
+ public static boolean isFood(ItemStack item)
+ {
+ return item == null ? false : isFood(item.getType());
+ }
+
+ public static boolean isFood(Material material)
+ {
+ for (Material food : FOOD_LIST)
+ {
+ if (food.equals(material))
+ return true;
+ }
+
+ return false;
+ }
}
diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilSkull.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilSkull.java
index 14925bf49..9b6044b4e 100644
--- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilSkull.java
+++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilSkull.java
@@ -6,23 +6,23 @@ public class UtilSkull
{
public static byte getSkullData(Entity entity)
{
- if (entity instanceof Skeleton)
- {
- Skeleton sk = ((Skeleton) entity);
- if (sk.getSkeletonType() == Skeleton.SkeletonType.WITHER)
- return 1;
- else return 0;
- }
- else if (entity instanceof Zombie || entity instanceof Giant)
- {
+ if (entity == null)
+ return 0;
+
+ return getSkullData(entity.getType());
+ }
+
+ public static byte getSkullData(EntityType type)
+ {
+ if (type == EntityType.SKELETON)
+ return 0;
+ if (type == EntityType.WITHER)
+ return 1;
+ if (type == EntityType.ZOMBIE || type == EntityType.GIANT)
return 2;
- }
- else if (entity instanceof Creeper)
- {
+ if (type == EntityType.CREEPER)
return 4;
- }
- else
- return 3;
+ return 3;
}
public static boolean isPlayerHead(byte data)
@@ -31,52 +31,54 @@ public class UtilSkull
}
public static String getPlayerHeadName(Entity entity)
+ {
+ return getPlayerHeadName(entity.getType());
+ }
+
+ public static String getPlayerHeadName(EntityType entity)
{
String name = "MHF_Alex";
// order is important for some of these
- if (entity instanceof Blaze)
+ if (entity == EntityType.BLAZE)
name = "MHF_Blaze";
- else if (entity instanceof CaveSpider)
+ else if (entity == EntityType.CAVE_SPIDER)
name = "MHF_CaveSpider";
- else if (entity instanceof Spider)
+ else if (entity == EntityType.SPIDER)
name = "MHF_Spider";
- else if (entity instanceof Chicken)
+ else if (entity == EntityType.CHICKEN)
name = "MHF_Chicken";
- else if (entity instanceof MushroomCow)
+ else if (entity == EntityType.MUSHROOM_COW)
name = "MHF_MushroomCow";
- else if (entity instanceof Cow)
+ else if (entity == EntityType.COW)
name = "MHF_Cow";
- else if (entity instanceof Creeper)
+ else if (entity == EntityType.CREEPER)
name = "MHF_Creeper";
- else if (entity instanceof Enderman)
+ else if (entity == EntityType.ENDERMAN)
name = "MHF_Enderman";
- else if (entity instanceof Ghast)
+ else if (entity == EntityType.GHAST)
name = "MHF_Ghast";
- else if (entity instanceof Golem)
+ else if (entity == EntityType.IRON_GOLEM)
name = "MHF_Golem";
- else if (entity instanceof PigZombie)
+ else if (entity == EntityType.PIG_ZOMBIE)
name = "MHF_PigZombie";
- else if (entity instanceof MagmaCube)
+ else if (entity == EntityType.MAGMA_CUBE)
name = "MHF_LavaSlime";
- else if (entity instanceof Slime)
+ else if (entity == EntityType.SLIME)
name = "MHF_Slime";
- else if (entity instanceof Ocelot)
+ else if (entity == EntityType.OCELOT)
name = "MHF_Ocelot";
- else if (entity instanceof PigZombie)
- name = "MHF_PigZombie";
- else if (entity instanceof Pig)
+ else if (entity == EntityType.PIG)
name = "MHF_Pig";
- else if (entity instanceof Sheep)
- name = "MHF_Pig";
- else if (entity instanceof Squid)
+ else if (entity == EntityType.SHEEP)
+ name = "MHF_Sheep";
+ else if (entity == EntityType.SQUID)
name = "MHF_Squid";
- else if (entity instanceof HumanEntity)
+ else if (entity == EntityType.PLAYER)
name = "MHF_Steve";
- else if (entity instanceof Villager)
+ else if (entity == EntityType.VILLAGER)
name = "MHF_Villager";
return name;
}
-
}
diff --git a/Plugins/Mineplex.Core/.classpath b/Plugins/Mineplex.Core/.classpath
index b60bc08f6..e13ca0d6c 100644
--- a/Plugins/Mineplex.Core/.classpath
+++ b/Plugins/Mineplex.Core/.classpath
@@ -14,5 +14,6 @@
+
diff --git a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs
index 7341ab168..d17b6724d 100644
--- a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs
+++ b/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs
@@ -1,5 +1,6 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
diff --git a/Plugins/Mineplex.Core/Mineplex.Core.iml b/Plugins/Mineplex.Core/Mineplex.Core.iml
index d7237e088..06f039df9 100644
--- a/Plugins/Mineplex.Core/Mineplex.Core.iml
+++ b/Plugins/Mineplex.Core/Mineplex.Core.iml
@@ -20,5 +20,6 @@
+
\ No newline at end of file
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/FoodDupeFix.java b/Plugins/Mineplex.Core/src/mineplex/core/FoodDupeFix.java
new file mode 100644
index 000000000..3b6aafa7c
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/FoodDupeFix.java
@@ -0,0 +1,29 @@
+package mineplex.core;
+
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.player.PlayerItemConsumeEvent;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import mineplex.core.common.util.UtilItem;
+
+public class FoodDupeFix extends MiniPlugin
+{
+ public FoodDupeFix(JavaPlugin plugin)
+ {
+ super("Food Dupe Fix", plugin);
+ }
+
+ // Use Lowest priority so we get called first event.getItem isn't changed
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void fixFoodDupe(PlayerItemConsumeEvent event)
+ {
+ if (UtilItem.isFood(event.getItem()))
+ {
+ if (!event.getItem().equals(event.getPlayer().getItemInHand()))
+ {
+ event.setCancelled(true);
+ }
+ }
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/TablistFix.java b/Plugins/Mineplex.Core/src/mineplex/core/TablistFix.java
index 3ff19ae95..b42535c48 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/TablistFix.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/TablistFix.java
@@ -22,7 +22,7 @@ public class TablistFix extends MiniPlugin
// This is sort of experimental!
@EventHandler(priority = EventPriority.MONITOR)
public void onJoin(PlayerJoinEvent event)
- {
+ {/*
final Player player = event.getPlayer();
runSyncLater(new Runnable()
{
@@ -45,9 +45,10 @@ public class TablistFix extends MiniPlugin
}
}
}, 20L);
-
}
-
+
+ */
+ }
public static void refreshForPlayer(Player player)
{
if (!UtilPlayer.is1_8(player))
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/AccountCache.java b/Plugins/Mineplex.Core/src/mineplex/core/account/AccountCache.java
deleted file mode 100644
index e6ac95b35..000000000
--- a/Plugins/Mineplex.Core/src/mineplex/core/account/AccountCache.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package mineplex.core.account;
-
-import java.util.UUID;
-
-import mineplex.serverdata.data.Data;
-
-public class AccountCache implements Data
-{
- private UUID _uuid;
- private Integer _id;
-
- public AccountCache(UUID uuid, int id)
- {
- _uuid = uuid;
- _id = id;
- }
-
- public UUID getUUID()
- {
- return _uuid;
- }
-
- public int getId()
- {
- return _id;
- }
-
- @Override
- public String getDataId()
- {
- return _uuid.toString();
- }
-}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClient.java b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClient.java
index df6717c6a..156f18867 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClient.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClient.java
@@ -1,12 +1,14 @@
package mineplex.core.account;
import mineplex.core.common.Rank;
+import mineplex.serverdata.Utility;
import org.bukkit.entity.Player;
public class CoreClient
{
private int _accountId = -1;
+ private long _networkSessionLoginTime;
private String _name;
private String _disguisedAs;
private Player _player;
@@ -18,6 +20,7 @@ public class CoreClient
{
_player = player;
_name = player.getName();
+ _networkSessionLoginTime = Utility.currentTimeMillis();
}
public CoreClient(String name)
@@ -58,6 +61,9 @@ public class CoreClient
public Rank GetRank()
{
+ if (_rank == null)
+ _rank = Rank.ALL;
+
return _rank;
}
@@ -65,6 +71,11 @@ public class CoreClient
{
_rank = rank;
}
+
+ public long getNetworkSessionLoginTime()
+ {
+ return _networkSessionLoginTime;
+ }
public String getDisguisedAs()
{
@@ -95,4 +106,9 @@ public class CoreClient
public void setDisguised(boolean disguised) {
this._disguised = disguised;
}
+
+ public void setNetworkSessionLoginTime(long loginTime)
+ {
+ _networkSessionLoginTime = loginTime;
+ }
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java
index 37f4159aa..72ab8260e 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/account/CoreClientManager.java
@@ -22,10 +22,8 @@ import mineplex.core.common.util.UtilPlayer;
import mineplex.core.timing.TimingManager;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
-import mineplex.serverdata.Region;
-import mineplex.serverdata.data.BungeeServer;
-import mineplex.serverdata.redis.RedisDataRepository;
-import mineplex.serverdata.servers.ServerManager;
+import mineplex.playerCache.PlayerCache;
+import mineplex.playerCache.PlayerInfo;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
@@ -48,7 +46,6 @@ public class CoreClientManager extends MiniPlugin
private AccountRepository _repository;
private NautHashMap _clientList;
private HashSet _duplicateLoginGlitchPreventionList;
- private RedisDataRepository _accountCacheRepository;
private NautHashMap _loginProcessors = new NautHashMap();
private LinkedList _querylessLoginProcessors = new LinkedList();
@@ -66,9 +63,6 @@ public class CoreClientManager extends MiniPlugin
_repository = new AccountRepository(plugin, webServer);
_clientList = new NautHashMap();
_duplicateLoginGlitchPreventionList = new HashSet();
-
- _accountCacheRepository = new RedisDataRepository(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
- Region.ALL, AccountCache.class, "accountCache");
}
public AccountRepository getRepository()
@@ -126,7 +120,14 @@ public class CoreClientManager extends MiniPlugin
if(client.getDisguisedAs().equalsIgnoreCase(name))
return client;
}
- return _clientList.get(name);
+ CoreClient client = _clientList.get(name);
+
+ if (client == null)
+ {
+ client = new CoreClient(name);
+ }
+
+ return client;
}
}
@@ -185,7 +186,7 @@ public class CoreClientManager extends MiniPlugin
_clientsProcessing.decrementAndGet();
}
- if (Bukkit.hasWhitelist() && !Get(event.getName()).GetRank().Has(Rank.MODERATOR))
+ if (Bukkit.hasWhitelist() && !Get(event.getName()).GetRank().has(Rank.MODERATOR))
{
for (OfflinePlayer player : Bukkit.getWhitelistedPlayers())
{
@@ -219,7 +220,16 @@ public class CoreClientManager extends MiniPlugin
UUID uuid = loadUUIDFromDB(playerName);
if (uuid == null)
- uuid = UUIDFetcher.getUUIDOf(playerName);
+ {
+ try
+ {
+ uuid = UUIDFetcher.getUUIDOf(playerName);
+ }
+ catch (Exception exception)
+ {
+ System.out.println("Error fetching uuid from mojang : " + exception.getMessage());
+ }
+ }
String response = "";
@@ -242,7 +252,15 @@ public class CoreClientManager extends MiniPlugin
Bukkit.getServer().getPluginManager().callEvent(new ClientWebResponseEvent(response, uuid));
if (client.getAccountId() > 0)
- _accountCacheRepository.addElement(new AccountCache(uuid, client.getAccountId()), 60 * 60 * 6);
+ {
+ PlayerInfo playerInfo = PlayerCache.getInstance().getPlayer(uuid);
+
+ if (playerInfo != null)
+ {
+ playerInfo.setAccountId(client.getAccountId());
+ PlayerCache.getInstance().addPlayer(playerInfo);
+ }
+ }
}
catch (Exception exception)
{
@@ -286,7 +304,7 @@ public class CoreClientManager extends MiniPlugin
TimingManager.stop(client.GetPlayerName() + " GetClient.");
token = gson.fromJson(response, ClientToken.class);
-
+
client.SetRank(Rank.valueOf(token.Rank));
// _repository.updateMysqlRank(uuid.toString(), token.Rank, token.RankPerm, new Timestamp(Date.parse(token.RankExpire)).toString());
@@ -313,17 +331,15 @@ public class CoreClientManager extends MiniPlugin
TimingManager.stop(client.GetPlayerName() + " LoadClient Total.");
- System.out.println(client.GetPlayerName() + "'s account id = " + client.getAccountId());
-
if (client.getAccountId() > 0)
{
- try
+ PlayerInfo playerInfo = PlayerCache.getInstance().getPlayer(uuid);
+
+ if (playerInfo != null)
{
- _accountCacheRepository.addElement(new AccountCache(uuid, client.getAccountId()), 60 * 60 * 6);
- }
- catch (Exception e)
- {
- e.printStackTrace();
+ client.setNetworkSessionLoginTime(playerInfo.getLoginTime());
+ playerInfo.setAccountId(client.getAccountId());
+ PlayerCache.getInstance().addPlayer(playerInfo);
}
}
@@ -354,6 +370,7 @@ public class CoreClientManager extends MiniPlugin
// Reserved Slot Check
if (Bukkit.getOnlinePlayers().size() >= Bukkit.getServer().getMaxPlayers())
{
+ // TODO: REMOVE THIS RESTRICTION FROM CLANS-BRANCH, USED TO PREVENT ULTRA FROM JOINING CLANS
// if (client.GetRank().Has(event.getPlayer(), Rank.ULTRA, false))
// {
// event.allow();
@@ -533,11 +550,6 @@ public class CoreClientManager extends MiniPlugin
if (client == null)
return false;
- return client.GetRank().Has(rank);
- }
-
- public int getCachedClientAccountId(UUID uuid)
- {
- return _accountCacheRepository.getElement(uuid.toString()).getId();
+ return client.GetRank().has(rank);
}
}
\ No newline at end of file
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java b/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java
index 529148615..d0dfbcd93 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/account/command/UpdateRank.java
@@ -29,7 +29,7 @@ public class UpdateRank extends CommandBase
if (Plugin.Get(caller).GetRank() == Rank.JNR_DEV && !testServer)
{
- F.main(Plugin.getName(), F.elem(Rank.JNR_DEV.GetTag(true, true)) + "s are only permitted to set ranks on test servers!");
+ F.main(Plugin.getName(), F.elem(Rank.JNR_DEV.getTag(true, true)) + "s are only permitted to set ranks on test servers!");
return;
}
@@ -60,10 +60,9 @@ public class UpdateRank extends CommandBase
final Rank rank = tempRank;
- if (rank == Rank.ADMIN || rank == Rank.YOUTUBE || rank == Rank.TWITCH || rank == Rank.MODERATOR || rank == Rank.JNR_DEV || rank == Rank.HELPER || rank == Rank.ALL || rank == Rank.MAPDEV || rank == Rank.SNR_MODERATOR)
if (rank == Rank.ADMIN || rank == Rank.YOUTUBE || rank == Rank.TWITCH || rank == Rank.MODERATOR || rank == Rank.JNR_DEV || rank == Rank.HELPER || rank == Rank.ALL || rank == Rank.MAPDEV || rank == Rank.SNR_MODERATOR)
{
- if (!testServer && rank.Has(Rank.ADMIN) && !Plugin.hasRank(caller, Rank.LT))
+ if (!testServer && rank.has(Rank.ADMIN) && !Plugin.hasRank(caller, Rank.LT))
{
UtilPlayer.message(caller, F.main(Plugin.getName(), ChatColor.RED + "" + ChatColor.BOLD + "Insufficient privileges!"));
return;
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java
index c8dccb23e..cd64cbdfa 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java
@@ -193,7 +193,7 @@ public class AccountRepository extends RepositoryBase
}, new ColumnVarChar("name", 100, name));
if (uuids.size() > 0)
- return uuids.get(uuids.size() - 1);
+ return uuids.get(0);
else
return null;
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java
index f122d3034..01925be94 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java
@@ -56,7 +56,7 @@ public enum Achievement
//Survival Games
SURVIVAL_GAMES_WINS("Katniss Everdeen", 600,
new String[]{"Survival Games.Wins"},
- new String[]{"Win 20 games of Survival Games"},
+ new String[]{"Win 30 games of Survival Games"},
new int[]{30},
AchievementCategory.SURVIVAL_GAMES),
@@ -666,7 +666,49 @@ public enum Achievement
new String[]{"Bomb Lobbers.Direct Hit"},
new String[]{"Get 50 direct hits"},
new int[]{50},
- AchievementCategory.BOMB_LOBBERS)
+ AchievementCategory.BOMB_LOBBERS),
+
+ EVOLUTION_WINS("Expert Evolver", 1200,
+ new String[]{"Evolution.Wins"},
+ new String[]{"Win 20 games of Evolution"},
+ new int[]{20},
+ AchievementCategory.EVOLUTION),
+
+ EVOLUTION_NO_DEATHS("Perfect Game", 2000,
+ new String[]{"Evolution.NoDeaths"},
+ new String[]{"Win a game without dying"},
+ new int[]{1},
+ AchievementCategory.EVOLUTION),
+
+ EVOLUTION_STEALTH("Stealth Mastah", 1000,
+ new String[]{"Evolution.Stealth"},
+ new String[]{"Win without taking any", "damage while evolving"},
+ new int[]{1},
+ AchievementCategory.EVOLUTION),
+
+ EVOLUTION_RAMPAGE("Rampage", 800,
+ new String[]{"Evolution.Rampage"},
+ new String[]{"Get 3 kills within 5 seconds", "of each other"},
+ new int[]{1},
+ AchievementCategory.EVOLUTION),
+
+ EVOLUTION_MELEE("Melee Monster", 1000,
+ new String[]{"Evolution.MeleeOnly"},
+ new String[]{"Win without using any abilities"},
+ new int[]{1},
+ AchievementCategory.EVOLUTION),
+
+ EVOLUTION_SKILLS("Ability Assassin", 1000,
+ new String[]{"Evolution.AbilityOnly"},
+ new String[]{"Win without any melee attacks"},
+ new int[]{1},
+ AchievementCategory.EVOLUTION),
+
+ EVOLUTION_EVOLVEKILL("No Evolve 5 U", 800,
+ new String[]{"Evolution.EvolveKill"},
+ new String[]{"Kill 25 people while they", "Are trying to evolve"},
+ new int[]{25},
+ AchievementCategory.EVOLUTION)
;
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java
index d19f0e93a..5b81e40ea 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementCategory.java
@@ -2,9 +2,6 @@ package mineplex.core.achievement;
import java.util.List;
-import org.bukkit.Material;
-import org.bukkit.entity.Player;
-
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
@@ -12,10 +9,14 @@ import mineplex.core.common.util.UtilTime;
import mineplex.core.stats.PlayerStats;
import mineplex.core.stats.StatsManager;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+
public enum AchievementCategory
{
GLOBAL("Global", null,
- new StatDisplay[] { StatDisplay.GEMS_EARNED, null, new StatDisplay("Games Played", "GamesPlayed"), StatDisplay.TIME_IN_GAME, null, new StatDisplay("Daily Rewards", "DailyReward"), new StatDisplay("Times Voted", "DailyVote") },
+ new StatDisplay[] { StatDisplay.GEMS_EARNED, null, new StatDisplay("Games Played", "GamesPlayed"), StatDisplay.TIME_IN_GAME, null,
+ new StatDisplay("Daily Rewards", "DailyReward"), new StatDisplay("Times Voted", "DailyVote"), null, new StatDisplay("Chests Opened", "Treasure.Old", "Treasure.Ancient", "Treasure.Mythical") },
Material.EMERALD, 0, GameCategory.GLOBAL, "None"),
BRIDGES("The Bridges", null,
@@ -122,7 +123,11 @@ public enum AchievementCategory
BOMB_LOBBERS("Bomb Lobbers", null,
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
- Material.FIREBALL, 0, GameCategory.ARCADE, "Waller Kit");
+ Material.FIREBALL, 0, GameCategory.ARCADE, "Waller Kit"),
+
+ EVOLUTION("Evolution", null,
+ new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
+ Material.MONSTER_EGG, 0, GameCategory.ARCADE, "Harvester Kit");
private String _name;
private String[] _statsToPull;
@@ -202,7 +207,7 @@ public enum AchievementCategory
String displayName = _statDisplays[i].getDisplayName();
// Skip showing Losses, Kills, Deaths for other players
- if (!clientManager.Get(player).GetRank().Has(Rank.MODERATOR) && !player.equals(target) && (displayName.contains("Losses") || displayName.contains("Kills") || displayName.contains("Deaths") || displayName.equals("Time In Game") || displayName.equals("Games Played")))
+ if (!clientManager.Get(player).GetRank().has(Rank.MODERATOR) && !player.equals(target) && (displayName.contains("Losses") || displayName.contains("Kills") || displayName.contains("Deaths") || displayName.equals("Time In Game") || displayName.equals("Games Played")))
continue;
int statNumber = 0;
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java
index 76e58b6fb..6c736e5be 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java
@@ -187,15 +187,15 @@ public class AchievementManager extends MiniPlugin
if (sender.getName().equalsIgnoreCase("B2_mp"))
return 101;
- if (rank.Has(Rank.MODERATOR))
+ if (rank.has(Rank.MODERATOR))
level = Math.max(level, 5);
- if (rank.Has(Rank.SNR_MODERATOR))
+ if (rank.has(Rank.SNR_MODERATOR))
level = Math.max(level, 15);
- if (rank.Has(Rank.JNR_DEV))
+ if (rank.has(Rank.JNR_DEV))
level = Math.max(level, 25);
- if (rank.Has(Rank.ADMIN))
+ if (rank.has(Rank.ADMIN))
level = Math.max(level, 30 + get(sender, Achievement.GLOBAL_GEM_HUNTER).getLevel());
- if (rank.Has(Rank.OWNER))
+ if (rank.has(Rank.OWNER))
level = Math.max(level, 50 + get(sender, Achievement.GLOBAL_GEM_HUNTER).getLevel());
if (sender.getName().equalsIgnoreCase("Phinary"))
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/command/StatsCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/command/StatsCommand.java
index 147b33d59..d7d3fabb3 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/command/StatsCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/command/StatsCommand.java
@@ -17,7 +17,7 @@ public class StatsCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null || args.length == 0)
+ if (args.length == 0)
{
Plugin.openShop(caller);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java
index 7867fab9a..68d43a09e 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/ui/page/AchievementMainPage.java
@@ -61,7 +61,6 @@ public class AchievementMainPage extends ShopPageBase 0)
+ lore.add(" ");
}
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java
index 37ff11c9b..7719eca3f 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java
@@ -259,7 +259,7 @@ public class AntiHack extends MiniPlugin
//Inform
for (Player admin : UtilServer.getPlayers())
- if (_clientManager.Get(admin).GetRank().Has(Rank.MODERATOR) && _preferences.Get(admin).ShowMacReports)
+ if (_clientManager.Get(admin).GetRank().has(Rank.MODERATOR) && _preferences.Get(admin).ShowMacReports)
{
UtilPlayer.message(admin, "#" + total + ": " + C.cRed + C.Bold + player.getName() + " suspected for " + type + ".");
}
@@ -335,7 +335,7 @@ public class AntiHack extends MiniPlugin
boolean handled = false;
for (Player staff : UtilServer.getPlayers())
{
- if (_clientManager.Get(staff).GetRank().Has(Rank.MODERATOR))
+ if (_clientManager.Get(staff).GetRank().has(Rank.MODERATOR))
{
UtilPlayer.message(staff, C.cAqua + C.Scramble + "A" + ChatColor.RESET + C.cRed + C.Bold + " MAC > " + ChatColor.RESET + C.cYellow + report);
UtilPlayer.message(staff, C.cAqua + C.Scramble + "A" + ChatColor.RESET + C.cRed + C.Bold + " MAC > " + ChatColor.RESET + C.cGold + player.getName() + C.cYellow + " has extreme violation. Please investigate.");
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java
index 6848257d9..8d21d1f13 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java
@@ -13,7 +13,7 @@ public class AntiHackRepository
{
private String _serverName;
- private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS AntiHack_Kick_Log (id INT NOT NULL AUTO_INCREMENT, updated LONG, playerName VARCHAR(256), motd VARCHAR(56), gameType VARCHAR(56), map VARCHAR(256), serverName VARCHAR(256), report VARCHAR(256), ping VARCHAR(25), PRIMARY KEY (id));";
+ //private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS AntiHack_Kick_Log (id INT NOT NULL AUTO_INCREMENT, updated LONG, playerName VARCHAR(256), motd VARCHAR(56), gameType VARCHAR(56), map VARCHAR(256), serverName VARCHAR(256), report VARCHAR(256), ping VARCHAR(25), PRIMARY KEY (id));";
private static String UPDATE_PLAYER_OFFENSES = "INSERT INTO AntiHack_Kick_Log (updated, playerName, motd, gameType, map, serverName, report, ping) VALUES (now(), ?, ?, ?, ?, ?, ?, ?);";
public AntiHackRepository(String serverName)
@@ -23,32 +23,6 @@ public class AntiHackRepository
public void initialize()
{
- PreparedStatement preparedStatement = null;
-
- try (Connection connection = DBPool.STATS_MINEPLEX.getConnection())
- {
- // Create table
- preparedStatement = connection.prepareStatement(CREATE_TABLE);
- preparedStatement.execute();
- }
- catch (Exception exception)
- {
- exception.printStackTrace();
- }
- finally
- {
- if (preparedStatement != null)
- {
- try
- {
- preparedStatement.close();
- }
- catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- }
}
public void saveOffense(final Player player, final String motd, final String game, final String map, final String report)
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java
index 80b62b460..21a851fca 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java
@@ -156,6 +156,7 @@ public class BonusManager extends MiniClientPlugin implements I
_voteList = new ArrayList();
_voteList.add("http://vote1.mineplex.com");
_voteList.add("http://vote2.mineplex.com");
+ _voteList.add("http://vote3.mineplex.com");
_coinQueue = new LinkedList();
_gemQueue = new LinkedList();
@@ -185,6 +186,7 @@ public class BonusManager extends MiniClientPlugin implements I
_voteList = new ArrayList();
_voteList.add("http://vote1.mineplex.com");
_voteList.add("http://vote2.mineplex.com");
+ _voteList.add("http://vote3.mineplex.com");
_canVote = true;
_coinQueue = new LinkedList();
@@ -278,7 +280,7 @@ public class BonusManager extends MiniClientPlugin implements I
return _voteStreak;
}
- public void handleVote(final Player player, final int gemsRecieved)
+ public void handleVote(final Player player, final int gemsReceived)
{
final int accountId = _clientManager.getAccountId(player);
@@ -297,11 +299,14 @@ public class BonusManager extends MiniClientPlugin implements I
@Override
public void run()
{
+ BonusClientData oldData = Get(player);
+ if (oldData != null) data.setHologram(oldData.getHologram());
Set(player, data);
+
_statsManager.incrementStat(player, "Global.DailyVote", 1);
addPendingExplosion(player, player.getName());
UtilPlayer.message(player, F.main("Carl", "Thanks for voting for Mineplex!"));
- UtilPlayer.message(player, F.main("Carl", "You received " + F.elem(gemsRecieved + " Gems") + " and " + F.elem("1 Carl Spinner Ticket") + "!"));
+ UtilPlayer.message(player, F.main("Carl", "You received " + F.elem(gemsReceived + " Gems") + " and " + F.elem("1 Carl Spinner Ticket") + "!"));
}
});
}
@@ -482,7 +487,7 @@ public class BonusManager extends MiniClientPlugin implements I
{
final BonusClientData clientData = Get(player);
- if (clientData.getTickets() > 0)
+ if (Recharge.Instance.use(player, "Carl Spin", 5000, false, false) && clientData.getTickets() > 0)
{
CarlSpinnerEvent event = new CarlSpinnerEvent(player);
Bukkit.getServer().getPluginManager().callEvent(event);
@@ -666,19 +671,19 @@ public class BonusManager extends MiniClientPlugin implements I
BonusAmount data = new BonusAmount();
- if (rank.Has(Rank.MODERATOR))
+ if (rank.has(Rank.MODERATOR))
{
data.setCoins(35000);
}
- if (rank.Has(Rank.LEGEND))
+ if (rank.has(Rank.LEGEND))
{
data.setCoins(30000);
}
- else if (rank.Has(Rank.HERO))
+ else if (rank.has(Rank.HERO))
{
data.setCoins(15000);
}
- else if (rank.Has(Rank.ULTRA))
+ else if (rank.has(Rank.ULTRA))
{
data.setCoins(7500);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/AnimationCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/AnimationCommand.java
index c3356c9b7..f3b20f8f8 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/AnimationCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/AnimationCommand.java
@@ -9,9 +9,9 @@ import mineplex.core.reward.RewardType;
import mineplex.core.bonuses.BonusManager;
public class AnimationCommand extends CommandBase{
-
+
private BonusManager _plugin;
-
+
public AnimationCommand(BonusManager plugin)
{
super(plugin, Rank.DEVELOPER, "animation");
@@ -21,17 +21,14 @@ public class AnimationCommand extends CommandBase{
@Override
public void Execute(Player caller, String[] args)
{
-
- if(args != null)
- {
- caller = Bukkit.getPlayer(args[0]);
- _plugin.addPendingExplosion(caller, _plugin.getRewardManager().nextReward(caller, null, false, RewardType.SpinnerFiller, true));
- }
- if(args.length >= 2)
+ caller = Bukkit.getPlayer(args[0]);
+ _plugin.addPendingExplosion(caller, _plugin.getRewardManager().nextReward(caller, null, false, RewardType.SpinnerFiller, true));
+
+ if (args.length >= 2)
{
_plugin.addPendingExplosion(caller, args[1]);
}
-
+
}
-
+
}
\ No newline at end of file
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PollButton.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PollButton.java
index 8e7a5889e..dfb707a05 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PollButton.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PollButton.java
@@ -197,7 +197,7 @@ public class PollButton extends SimpleGui implements GuiItem {
{
_create = true;
- _pollManager.answerPoll(getPlayer(), _poll, num);
+ _pollManager.answerPoll(getPlayer(), _poll, num + 1);
getPlayer().playSound(getPlayer().getLocation(), Sound.NOTE_PLING, 1, 1.6f);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/BotSpamManager.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/BotSpamManager.java
new file mode 100644
index 000000000..a977b3685
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/BotSpamManager.java
@@ -0,0 +1,164 @@
+package mineplex.core.botspam;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import mineplex.core.MiniPlugin;
+import mineplex.core.account.CoreClientManager;
+import mineplex.core.common.Rank;
+import mineplex.core.message.PrivateMessageEvent;
+import mineplex.core.punish.Category;
+import mineplex.core.punish.Punish;
+import mineplex.core.botspam.command.BotSpamCommand;
+import mineplex.core.botspam.repository.BotSpamRepository;
+import mineplex.core.updater.UpdateType;
+import mineplex.core.updater.event.UpdateEvent;
+
+public class BotSpamManager extends MiniPlugin
+{
+ private Punish _punish;
+ private CoreClientManager _clientManager;
+ private BotSpamRepository _repository;
+ private volatile ArrayList _spam = new ArrayList();
+
+ public BotSpamManager(JavaPlugin plugin, CoreClientManager clientManager, Punish punish)
+ {
+ super("SpamBot Manager", plugin);
+
+ _punish = punish;
+ _clientManager = clientManager;
+ _repository = new BotSpamRepository(plugin);
+ _spam = _repository.getSpamText();
+ }
+
+ @EventHandler
+ public void onPrivateMessage(PrivateMessageEvent event)
+ {
+ Player recipient = event.getRecipient();
+ // Ignore messages sent to staff members
+ if (_clientManager.hasRank(recipient, Rank.HELPER))
+ return;
+
+ for (SpamText spamText : _spam)
+ {
+ if (spamText.isEnabled() && spamText.isSpam(event.getMessage()))
+ {
+ punishBot(event.getSender(), spamText);
+ event.setCancelled(true);
+ return;
+ }
+ }
+ }
+
+ public void punishBot(Player player, final SpamText botText)
+ {
+ _punish.AddPunishment(player.getName(), Category.Other, "Bot Spam #" + botText.getId(), "Chiss", 1, true, -1, true);
+
+ // Update bot text count
+ runAsync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ _repository.addPunishment(botText);
+ }
+ });
+ }
+
+ public void addSpamText(final String caller, final String text, final Runnable callback)
+ {
+ runAsync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ _repository.addSpamText(caller, text);
+ _spam = _repository.getSpamText();
+
+ if (callback != null)
+ runSync(callback);
+ }
+ });
+ }
+
+ public void enableSpamText(final String caller, final SpamText spamText, final Runnable callback)
+ {
+ runAsync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ _repository.enableSpamText(caller, spamText);
+
+ runSync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ spamText.setEnabled(true);
+ spamText.setEnabledBy(caller);
+
+ if (callback != null)
+ callback.run();
+ }
+ });
+ }
+ });
+ }
+
+ public void disableSpamText(final String caller, final SpamText spamText, final Runnable callback)
+ {
+ runAsync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ _repository.disableSpamText(caller, spamText);
+
+ runSync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ spamText.setEnabled(false);
+ spamText.setDisabledBy(caller);
+
+ if (callback != null)
+ callback.run();
+ }
+ });
+ }
+ });
+ }
+
+ public List getSpamTexts()
+ {
+ return _spam;
+ }
+
+ @EventHandler
+ public void updateText(UpdateEvent event)
+ {
+ if (event.getType() == UpdateType.MIN_01)
+ {
+ runAsync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ _spam = _repository.getSpamText();
+ }
+ });
+ }
+ }
+
+ @Override
+ public void addCommands()
+ {
+ addCommand(new BotSpamCommand(this));
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/SpamText.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/SpamText.java
new file mode 100644
index 000000000..a4d466082
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/SpamText.java
@@ -0,0 +1,78 @@
+package mineplex.core.botspam;
+
+public class SpamText
+{
+ private int _id;
+ private String _text;
+ private int _punishments;
+ private boolean _enabled;
+ private String _createdBy;
+ private String _disabledBy;
+ private String _enabledBy;
+
+ public SpamText(int id, String text, int punishments, boolean enabled, String createdBy, String enabledBy, String disabledBy)
+ {
+ _id = id;
+ _text = text;
+ _punishments = punishments;
+ _enabled = enabled;
+ _createdBy = createdBy;
+ _enabledBy = enabledBy;
+ _disabledBy = disabledBy;
+ }
+
+ public boolean isSpam(String message)
+ {
+ return message.toLowerCase().contains(_text.toLowerCase());
+ }
+
+ public int getId()
+ {
+ return _id;
+ }
+
+ public String getText()
+ {
+ return _text;
+ }
+
+ public int getPunishments()
+ {
+ return _punishments;
+ }
+
+ public boolean isEnabled()
+ {
+ return _enabled;
+ }
+
+ public void setEnabled(boolean enabled)
+ {
+ _enabled = enabled;
+ }
+
+ public String getCreatedBy()
+ {
+ return _createdBy;
+ }
+
+ public String getEnabledBy()
+ {
+ return _enabledBy;
+ }
+
+ public String getDisabledBy()
+ {
+ return _disabledBy;
+ }
+
+ public void setEnabledBy(String enabledBy)
+ {
+ _enabledBy = enabledBy;
+ }
+
+ public void setDisabledBy(String disabledBy)
+ {
+ _disabledBy = disabledBy;
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamAddCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamAddCommand.java
new file mode 100644
index 000000000..d662dec7d
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamAddCommand.java
@@ -0,0 +1,64 @@
+package mineplex.core.botspam.command;
+
+import org.bukkit.entity.Player;
+
+import mineplex.core.botspam.SpamText;
+import mineplex.core.command.CommandBase;
+import mineplex.core.common.Rank;
+import mineplex.core.common.util.F;
+import mineplex.core.common.util.UtilPlayer;
+import mineplex.core.botspam.BotSpamManager;
+
+public class BotSpamAddCommand extends CommandBase
+{
+ public BotSpamAddCommand(BotSpamManager plugin)
+ {
+ super(plugin, Rank.DEVELOPER, "add");
+ }
+
+ @Override
+ public void Execute(final Player caller, String[] args)
+ {
+ if (args != null && args.length >= 1)
+ {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < args.length; i++)
+ {
+ if (i > 0) sb.append(" ");
+
+ sb.append(args[i]);
+ }
+
+ final String text = sb.toString();
+
+ if (text.length() < 8)
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "Spam text must be at least 8 characters"));
+ return;
+ }
+
+ for (SpamText spamText : Plugin.getSpamTexts())
+ {
+ if (text.equalsIgnoreCase(spamText.getText()))
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "That Spam Text already exists. Type " + F.elem("/botspam list") + " to view"));
+ return;
+ }
+ }
+
+ Plugin.addSpamText(caller.getName(), text, new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ if (caller.isOnline())
+ UtilPlayer.message(caller, F.main("BotSpam", "Added Spam Text: " + F.elem(text)));
+ }
+ });
+ }
+ else
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam add "));
+ }
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamCommand.java
new file mode 100644
index 000000000..233939e7b
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamCommand.java
@@ -0,0 +1,31 @@
+package mineplex.core.botspam.command;
+
+import org.bukkit.entity.Player;
+
+import mineplex.core.command.MultiCommandBase;
+import mineplex.core.common.Rank;
+import mineplex.core.botspam.BotSpamManager;
+import mineplex.core.common.util.F;
+import mineplex.core.common.util.UtilPlayer;
+
+public class BotSpamCommand extends MultiCommandBase
+{
+ public BotSpamCommand(BotSpamManager plugin)
+ {
+ super(plugin, Rank.DEVELOPER, "botban", "botspam");
+
+ AddCommand(new BotSpamAddCommand(Plugin));
+ AddCommand(new BotSpamEnableCommand(Plugin));
+ AddCommand(new BotSpamDisableCommand(Plugin));
+ AddCommand(new BotSpamListCommand(Plugin));
+ }
+
+ @Override
+ protected void Help(Player caller, String[] args)
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam list"));
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam add "));
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam enable "));
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam disable "));
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamDisableCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamDisableCommand.java
new file mode 100644
index 000000000..e59f7c84f
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamDisableCommand.java
@@ -0,0 +1,71 @@
+package mineplex.core.botspam.command;
+
+import org.bukkit.entity.Player;
+
+import mineplex.core.botspam.SpamText;
+import mineplex.core.command.CommandBase;
+import mineplex.core.common.Rank;
+import mineplex.core.botspam.BotSpamManager;
+import mineplex.core.common.util.F;
+import mineplex.core.common.util.UtilPlayer;
+
+public class BotSpamDisableCommand extends CommandBase
+{
+ public BotSpamDisableCommand(BotSpamManager plugin)
+ {
+ super(plugin, Rank.DEVELOPER, "disable");
+ }
+
+ @Override
+ public void Execute(final Player caller, String[] args)
+ {
+ if (args != null && args.length == 1)
+ {
+ final int spamId;
+
+ try
+ {
+ spamId = Integer.parseInt(args[0]);
+ }
+ catch (Exception e)
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam disable "));
+ return;
+ }
+
+ SpamText text = null;
+ for (SpamText spamText : Plugin.getSpamTexts())
+ {
+ if (spamText.getId() == spamId)
+ text = spamText;
+ }
+
+ if (text == null)
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "Could not find a spam text with the id " + F.elem("" + spamId)));
+ return;
+ }
+
+ if (!text.isEnabled())
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "That spam text is already disabled"));
+ return;
+ }
+
+ final SpamText finalText = text;
+ Plugin.disableSpamText(caller.getName(), text, new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "Disabled Spam Text " + F.elem(finalText.getText())));
+ }
+ });
+ }
+ else
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam disable "));
+ }
+
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamEnableCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamEnableCommand.java
new file mode 100644
index 000000000..ce0242395
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamEnableCommand.java
@@ -0,0 +1,71 @@
+package mineplex.core.botspam.command;
+
+import org.bukkit.entity.Player;
+
+import mineplex.core.botspam.SpamText;
+import mineplex.core.command.CommandBase;
+import mineplex.core.common.Rank;
+import mineplex.core.botspam.BotSpamManager;
+import mineplex.core.common.util.F;
+import mineplex.core.common.util.UtilPlayer;
+
+public class BotSpamEnableCommand extends CommandBase
+{
+ public BotSpamEnableCommand(BotSpamManager plugin)
+ {
+ super(plugin, Rank.DEVELOPER, "enable");
+ }
+
+ @Override
+ public void Execute(final Player caller, String[] args)
+ {
+ if (args != null && args.length == 1)
+ {
+ final int spamId;
+
+ try
+ {
+ spamId = Integer.parseInt(args[0]);
+ }
+ catch (Exception e)
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam enable "));
+ return;
+ }
+
+ SpamText text = null;
+ for (SpamText spamText : Plugin.getSpamTexts())
+ {
+ if (spamText.getId() == spamId)
+ text = spamText;
+ }
+
+ if (text == null)
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "Could not find a spam text with the id " + F.elem("" + spamId)));
+ return;
+ }
+
+ if (text.isEnabled())
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "That spam text is already enabled"));
+ return;
+ }
+
+ final SpamText finalText = text;
+ Plugin.enableSpamText(caller.getName(), text, new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "Enabled Spam Text " + F.elem(finalText.getText())));
+ }
+ });
+ }
+ else
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "/botspam enable "));
+ }
+
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamListCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamListCommand.java
new file mode 100644
index 000000000..96e71da64
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/command/BotSpamListCommand.java
@@ -0,0 +1,46 @@
+package mineplex.core.botspam.command;
+
+import org.bukkit.entity.Player;
+
+import mineplex.core.botspam.SpamText;
+import mineplex.core.command.CommandBase;
+import mineplex.core.common.Rank;
+import mineplex.core.botspam.BotSpamManager;
+import mineplex.core.common.jsonchat.ClickEvent;
+import mineplex.core.common.jsonchat.HoverEvent;
+import mineplex.core.common.jsonchat.JsonMessage;
+import mineplex.core.common.util.C;
+import mineplex.core.common.util.F;
+import mineplex.core.common.util.UtilPlayer;
+
+public class BotSpamListCommand extends CommandBase
+{
+ public BotSpamListCommand(BotSpamManager plugin)
+ {
+ super(plugin, Rank.DEVELOPER, "list");
+ }
+
+ @Override
+ public void Execute(Player caller, String[] args)
+ {
+ UtilPlayer.message(caller, F.main("BotSpam", "Listing Spam Texts. Hover for more details"));
+ UtilPlayer.message(caller, ""); // Blank Line!
+
+ for (SpamText spamText : Plugin.getSpamTexts())
+ {
+ String modifyMessage = spamText.isEnabled() ? C.cRed + "Click To Disable" : C.cGreen + "Click To Enable";
+ String hoverMessage = C.cYellow + "Spam Id: " + C.cWhite + spamText.getId() + "\\n" + C.cYellow + "Ban Count: " + C.cWhite + spamText.getPunishments() + "\\n" + C.cYellow + "Enabled: " + C.cWhite + spamText.isEnabled();
+ hoverMessage += "\\n\\n" + C.cYellow + "Created By: " + C.cWhite + spamText.getCreatedBy();
+ if (spamText.getEnabledBy() != null)
+ hoverMessage += "\\n" + C.cYellow + "Enabled By: " + C.cWhite + spamText.getEnabledBy();
+ if (spamText.getDisabledBy() != null)
+ hoverMessage += "\\n" + C.cYellow + "Disabled By: " + C.cWhite + spamText.getDisabledBy();
+ hoverMessage += "\\n\\n" + modifyMessage;
+
+ JsonMessage message = new JsonMessage((spamText.isEnabled() ? "" : C.cRed) + spamText.getText());
+ message.hover(HoverEvent.SHOW_TEXT, hoverMessage);
+ message.click(ClickEvent.RUN_COMMAND, "/botspam " + (spamText.isEnabled() ? "disable" : "enable") + " " + spamText.getId());
+ message.send(JsonMessage.MessageType.SYSTEM_MESSAGE, caller);
+ }
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/botspam/repository/BotSpamRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/botspam/repository/BotSpamRepository.java
new file mode 100644
index 000000000..d1460fb4a
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/botspam/repository/BotSpamRepository.java
@@ -0,0 +1,88 @@
+package mineplex.core.botspam.repository;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+
+import org.bukkit.plugin.java.JavaPlugin;
+
+import mineplex.core.database.DBPool;
+import mineplex.core.database.RepositoryBase;
+import mineplex.core.botspam.SpamText;
+import mineplex.core.database.ResultSetCallable;
+import mineplex.core.database.column.ColumnInt;
+import mineplex.core.database.column.ColumnVarChar;
+
+public class BotSpamRepository extends RepositoryBase
+{
+ private static final String GET_SPAM_TEXT = "SELECT * FROM botSpam";
+ private static final String ADD_SPAM_TEXT = "INSERT INTO botSpam (text, createdBy, enabledBy) VALUES (?, ?, ?)";
+ private static final String DELETE_SPAM_TEXT = "DELETE FROM botSpam WHERE id = ?";
+ private static final String ENABLE_SPAM_TEXT = "UPDATE botSpam SET enabled = 1, enabledBy = ? WHERE id = ?";
+ private static final String DISABLE_SPAM_TEXT = "UPDATE botSpam SET enabled = 0 AND disabledBy = ? WHERE id = ?";
+ private static final String ADD_PUNISHMENT = "UPDATE botSpam SET punishments = punishments + 1 WHERE id = ?";
+
+ public BotSpamRepository(JavaPlugin plugin)
+ {
+ super(plugin, DBPool.ACCOUNT);
+ }
+
+ public ArrayList getSpamText()
+ {
+ final ArrayList list = new ArrayList();
+
+ executeQuery(GET_SPAM_TEXT, new ResultSetCallable()
+ {
+ @Override
+ public void processResultSet(ResultSet resultSet) throws SQLException
+ {
+ while (resultSet.next())
+ {
+ int id = resultSet.getInt(1);
+ String text = resultSet.getString(2);
+ int punishments = resultSet.getInt(3);
+ boolean enabled = resultSet.getBoolean(4);
+ String createdBy = resultSet.getString(5);
+ String enabledBy = resultSet.getString(6);
+ String disabledBy = resultSet.getString(7);
+
+ list.add(new SpamText(id, text, punishments, enabled, createdBy, enabledBy, disabledBy));
+ }
+ }
+ });
+
+ return list;
+ }
+
+ public void addPunishment(SpamText text)
+ {
+ executeUpdate(ADD_PUNISHMENT, new ColumnInt("id", text.getId()));
+ }
+
+ public void disableSpamText(String caller, SpamText text)
+ {
+ executeUpdate(DISABLE_SPAM_TEXT, new ColumnVarChar("disabledBy", 100, caller), new ColumnInt("id", text.getId()));
+ }
+
+ public void enableSpamText(String caller, SpamText text)
+ {
+ executeUpdate(ENABLE_SPAM_TEXT, new ColumnVarChar("enabledBy", 100, caller), new ColumnInt("id", text.getId()));
+ }
+
+ public void addSpamText(String caller, String spamText)
+ {
+ executeInsert(ADD_SPAM_TEXT, null, new ColumnVarChar("text", 200, spamText), new ColumnVarChar("createdBy", 100, caller), new ColumnVarChar("enabledBy", 100, caller));
+ }
+
+ @Override
+ protected void initialize()
+ {
+
+ }
+
+ @Override
+ protected void update()
+ {
+
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java b/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java
index 9279f5bd7..7847b0408 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java
@@ -176,7 +176,7 @@ public class Chat extends MiniPlugin
if (_silenced == 0)
return false;
- if (_clientManager.Get(player).GetRank().Has(player, Rank.MODERATOR, false))
+ if (_clientManager.Get(player).GetRank().has(player, Rank.MODERATOR, false))
return false;
if (_silenced == -1)
@@ -210,7 +210,7 @@ public class Chat extends MiniPlugin
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onSignChange(SignChangeEvent event)
{
- if (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.ADMIN)) return;
+ if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.ADMIN)) return;
// Prevent silenced players from using signs
if (SilenceCheck(event.getPlayer()))
@@ -317,13 +317,13 @@ public class Chat extends MiniPlugin
UtilPlayer.message(sender, C.cYellow + "Buy a Rank at " + C.cGreen + "www.mineplex.com/shop" + C.cYellow + " to remove this limit!");
event.setCancelled(true);
}
- else if (!_clientManager.Get(sender).GetRank().Has(Rank.MODERATOR) &&
+ else if (!_clientManager.Get(sender).GetRank().has(Rank.MODERATOR) &&
!Recharge.Instance.use(sender, "Chat Message", 400, false, false))
{
UtilPlayer.message(sender, F.main("Chat", "You are sending messages too fast."));
event.setCancelled(true);
}
- else if (!_clientManager.Get(sender).GetRank().Has(Rank.HELPER) &&
+ else if (!_clientManager.Get(sender).GetRank().has(Rank.HELPER) &&
msgContainsHack(event.getMessage()))
{
UtilPlayer.message(sender, F.main("Chat",
@@ -337,12 +337,12 @@ public class Chat extends MiniPlugin
MessageData lastMessage = _playerLastMessage.get(sender.getUniqueId());
long chatSlowTime = 1000L * _chatSlow;
long timeDiff = System.currentTimeMillis() - lastMessage.getTimeSent();
- if (timeDiff < chatSlowTime && !_clientManager.Get(sender).GetRank().Has(Rank.HELPER))
+ if (timeDiff < chatSlowTime && !_clientManager.Get(sender).GetRank().has(Rank.HELPER))
{
UtilPlayer.message(sender, F.main("Chat", "Chat slow enabled. Please wait " + F.time(UtilTime.convertString(chatSlowTime - timeDiff, 1, UtilTime.TimeUnit.FIT))));
event.setCancelled(true);
}
- else if (!_clientManager.Get(sender).GetRank().Has(Rank.MODERATOR) &&
+ else if (!_clientManager.Get(sender).GetRank().has(Rank.MODERATOR) &&
UtilText.isStringSimilar(event.getMessage(), lastMessage.getMessage(), 0.8f))
{
UtilPlayer.message(sender, F.main("Chat", "This message is too similar to your previous message."));
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/chat/command/ChatSlowCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/chat/command/ChatSlowCommand.java
index 8bd788fc8..d15fc0f72 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/chat/command/ChatSlowCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/chat/command/ChatSlowCommand.java
@@ -18,7 +18,7 @@ public class ChatSlowCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args != null && args.length == 1)
+ if (args.length == 1)
{
try
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java b/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java
index 2b4d8f81b..5290158c3 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/command/CommandCenter.java
@@ -48,7 +48,7 @@ public class CommandCenter implements Listener
public void OnPlayerCommandPreprocess(PlayerCommandPreprocessEvent event)
{
String commandName = event.getMessage().substring(1);
- String[] args = null;
+ String[] args = new String[] {};
if (commandName.contains(" "))
{
@@ -62,7 +62,7 @@ public class CommandCenter implements Listener
{
event.setCancelled(true);
- if (ClientManager.Get(event.getPlayer()).GetRank().Has(event.getPlayer(), command.GetRequiredRank(), command.GetSpecificRanks(), true))
+ if (ClientManager.Get(event.getPlayer()).GetRank().has(event.getPlayer(), command.GetRequiredRank(), command.GetSpecificRanks(), true))
{
if (!Recharge.Instance.use(event.getPlayer(), "Command", 500, false, false))
{
@@ -76,19 +76,6 @@ public class CommandCenter implements Listener
}
}
- @EventHandler
- public void onTabComplete(TabCompleteEvent event)
- {
- ICommand command = Commands.get(event.getCommand().toLowerCase());
-
- if (command != null)
- {
- List suggestions = command.onTabComplete(event.getSender(), event.getCommand(), event.getArgs());
-
- if (suggestions != null)
- event.setSuggestions(suggestions);
- }
- }
public void AddCommand(ICommand command)
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java b/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java
index 818fe9416..27e725870 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/command/MultiCommandBase.java
@@ -40,7 +40,7 @@ public abstract class MultiCommandBase extends Co
public void Execute(Player caller, String[] args)
{
String commandName = null;
- String[] newArgs = null;
+ String[] newArgs = new String[] {};
if (args != null && args.length > 0)
{
@@ -59,7 +59,7 @@ public abstract class MultiCommandBase extends Co
ICommand command = Commands.get(commandName);
- if (command != null && CommandCenter.ClientManager.Get(caller).GetRank().Has(caller, command.GetRequiredRank(), command.GetSpecificRanks(), true))
+ if (command != null && CommandCenter.ClientManager.Get(caller).GetRank().has(caller, command.GetRequiredRank(), command.GetSpecificRanks(), true))
{
command.SetAliasUsed(commandName);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java
index f77c4851f..950dc9164 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java
@@ -6,6 +6,7 @@ import org.bukkit.entity.Creature;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
+import org.bukkit.inventory.ItemStack;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.CurrencyType;
@@ -20,6 +21,7 @@ import mineplex.core.cosmetic.ui.button.OpenMusic;
import mineplex.core.cosmetic.ui.button.OpenParticles;
import mineplex.core.cosmetic.ui.button.OpenPets;
import mineplex.core.donation.DonationManager;
+import mineplex.core.donation.Donor;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GadgetType;
import mineplex.core.mount.Mount;
@@ -40,7 +42,14 @@ public class Menu extends ShopPageBase
@Override
protected void buildPage()
- {
+ {
+ Donor donor = getDonationManager().Get(getPlayer());
+
+// addItem(2, new ShopItem(CurrencyType.Gems.GetDisplayMaterial(), donor.GetGems() + " Gems", new String[] {
+// " "
+// }, 1, false));
+
+
addItem(4, new ShopItem(175, getDonationManager().Get(getPlayer().getName()).getCoins() + " Coins", new String[]
{
" ",
@@ -54,9 +63,13 @@ public class Menu extends ShopPageBase
ChatColor.RESET + "Receives 15000 Coins per Month",
" ",
ChatColor.RESET + C.cGreen + "Legend Rank",
- ChatColor.RESET + "Recieves 30000 Coins per Month"
+ ChatColor.RESET + "Receives 30000 Coins per Month"
}, 1, false));
+// addItem(6, new ShopItem(Material.GOLD_INGOT, donor.getGold() + " Gold", new String[] {
+// " "
+// }, 1, false));
+
addButton(18, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this));
addButton(20, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this));
addButton(22, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this));
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java
index 47d45cfa3..c9a544b93 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java
@@ -75,7 +75,7 @@ public class PetPage extends ShopPageBase
if (pet.GetPetType() == EntityType.WITHER)
{
itemLore.add(C.cBlack);
- itemLore.add(ChatColor.RESET + C.cYellow + "Unlocked with Legend Rank");
+ itemLore.add(ChatColor.RESET + C.cGreen + "Unlocked with Legend Rank");
}
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/creature/command/MobCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/creature/command/MobCommand.java
index d43ccccbf..e98a0699d 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/creature/command/MobCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/creature/command/MobCommand.java
@@ -37,7 +37,7 @@ public class MobCommand extends MultiCommandBase
@Override
protected void Help(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
HashMap entMap = new HashMap();
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java
index 59eab8c1b..580b6770b 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java
@@ -442,7 +442,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
return new PacketPlayOutMapChunk(_bedChunk, true, 0, UtilPlayer.is1_8(player) ? 48 : 0);
}
- private Packet[] getBedPackets(Location recieving, DisguisePlayer playerDisguise)
+ private Packet[] getBedPackets(Location recieving, DisguisePlayer playerDisguise, boolean is18)
{
try
{
@@ -458,7 +458,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
PacketPlayOutEntityTeleport teleportPacket = new PacketPlayOutEntityTeleport(playerDisguise.GetEntity());
- teleportPacket.c += (int) (0.35D * 32);
+ teleportPacket.c += (int) ((is18 ? 0.07D : 0.25D) * 32);
return new Packet[]
{
@@ -502,7 +502,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
&& ((DisguisePlayer) entry.getKey()).getSleepingDirection() != null)
{
- packets.addAll(Arrays.asList(getBedPackets(newLoc, (DisguisePlayer) entry.getKey())));
+ packets.addAll(Arrays.asList(getBedPackets(newLoc, (DisguisePlayer) entry.getKey(), UtilPlayer.is1_8(player))));
}
}
}
@@ -869,7 +869,7 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler
if (pDisguise.getSleepingDirection() != null)
{
- for (Packet packet : getBedPackets(player.getLocation(), pDisguise))
+ for (Packet packet : getBedPackets(player.getLocation(), pDisguise, UtilPlayer.is1_8(player)))
{
handlePacket(packet, packetVerifier);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java
index d2b6c6c47..2fff7c2f0 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguiseInsentient.java
@@ -30,9 +30,9 @@ public abstract class DisguiseInsentient extends DisguiseLiving
{
if (rank != null)
{
- if (rank.Has(Rank.ULTRA))
+ if (rank.has(Rank.ULTRA))
{
- name = rank.GetTag(true, true) + " " + ChatColor.RESET + name;
+ name = rank.getTag(true, true) + " " + ChatColor.RESET + name;
}
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java
index bfd29d925..2b124dbc3 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java
@@ -24,6 +24,7 @@ import mineplex.core.donation.repository.token.DonorTokenWrapper;
import mineplex.core.server.util.TransactionResponse;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
+import mineplex.playerCache.PlayerCache;
public class DonationManager extends MiniDbClientPlugin
{
@@ -280,7 +281,7 @@ public class DonationManager extends MiniDbClientPlugin
{
public void run()
{
- RewardCoins(null, caller, player.getName(), ClientManager.getCachedClientAccountId(player.getUniqueId()), total, false);
+ RewardCoins(null, caller, player.getName(), PlayerCache.getInstance().getPlayer(player.getUniqueId()).getAccountId(), total, false);
}
});
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GemCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GemCommand.java
index 7593be55f..8690987bc 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GemCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GemCommand.java
@@ -24,7 +24,7 @@ public class GemCommand extends CommandBase
{
if (args.length < 2)
{
- UtilPlayer.message(caller, F.main("gem", "Missing Args: " + F.elem("/gem ")));
+ UtilPlayer.message(caller, F.main("Gem", "Missing Args: " + F.elem("/gem ")));
return;
}
@@ -59,7 +59,7 @@ public class GemCommand extends CommandBase
}
catch (Exception e)
{
- UtilPlayer.message(caller, F.main("gem", "Invalid gems Amount"));
+ UtilPlayer.message(caller, F.main("Gem", "Invalid gems Amount"));
}
}
@@ -71,16 +71,16 @@ public class GemCommand extends CommandBase
{
if (completed)
{
- UtilPlayer.message(caller, F.main("gem", "You gave " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
+ UtilPlayer.message(caller, F.main("Gem", "You gave " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
if (target != null)
{
- UtilPlayer.message(target, F.main("gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " gems") + "."));
+ UtilPlayer.message(target, F.main("Gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " gems") + "."));
}
}
else
{
- UtilPlayer.message(caller, F.main("gem", "There was an error giving " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
+ UtilPlayer.message(caller, F.main("Gem", "There was an error giving " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
}
}
}, caller.getName(), targetName, uuid, gems);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GoldCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GoldCommand.java
index 80bbacbf3..953b2c840 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GoldCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/command/GoldCommand.java
@@ -23,6 +23,7 @@ public class GoldCommand extends CommandBase
if (args == null || args.length == 0)
{
UtilPlayer.message(caller, F.main("Gold", "Your Gold: " + F.elem("" + Plugin.Get(caller).getGold())));
+ return;
}
else if (args.length < 2)
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/friend/FriendManager.java b/Plugins/Mineplex.Core/src/mineplex/core/friend/FriendManager.java
index cafd20ec9..ba5558573 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/friend/FriendManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/friend/FriendManager.java
@@ -251,7 +251,7 @@ public class FriendManager extends MiniDbClientPlugin
public void showFriends(Player caller)
{
- boolean isStaff = ClientManager.Get(caller).GetRank().Has(Rank.HELPER);
+ boolean isStaff = ClientManager.Get(caller).GetRank().has(Rank.HELPER);
boolean gotAFriend = false;
List friendStatuses = Get(caller).getFriends();
Collections.sort(friendStatuses, _friendSorter);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java
index 54a3ea799..22f60039c 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java
@@ -166,11 +166,11 @@ public class GadgetManager extends MiniPlugin
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event)
{
- if (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.MODERATOR))
+ if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.MODERATOR))
{
for (GadgetType gadgetType : _gadgets.keySet())
{
- if (gadgetType == GadgetType.Particle && _clientManager.Get(event.getPlayer()).GetRank().Has(Rank.ADMIN))
+ if (gadgetType == GadgetType.Particle && _clientManager.Get(event.getPlayer()).GetRank().has(Rank.ADMIN))
{
for (Gadget gadget : _gadgets.get(gadgetType))
{
@@ -455,12 +455,16 @@ public class GadgetManager extends MiniPlugin
@EventHandler
public void chissMeow(PlayerToggleSneakEvent event)
{
- if (event.getPlayer().getName().equals("Chiss"))
- {
- if (!event.getPlayer().isSneaking())
- {
- event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.CAT_MEOW, 1f, 1f);
- }
- }
+ if (event.getPlayer().isSneaking())
+ return;
+
+ if (event.getPlayer().getName().equalsIgnoreCase("Chiss"))
+ event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.CAT_MEOW, 1f, 1f);
+
+ if (event.getPlayer().getName().equalsIgnoreCase("defek7"))
+ event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.WOLF_BARK, 1f, 1f);
+
+ if (event.getPlayer().getName().equalsIgnoreCase("sterling_"))
+ event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.PIG_IDLE, 1f, 1f);
}
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlaze.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlaze.java
index c93152737..d7b73309d 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlaze.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlaze.java
@@ -82,7 +82,7 @@ public class MorphBlaze extends MorphGadget
@EventHandler
public void HeroOwner(PlayerJoinEvent event)
{
- if (Manager.getClientManager().Get(event.getPlayer()).GetRank().Has(Rank.HERO))
+ if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.HERO))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java
index 7d84e2457..78e502bc5 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java
@@ -59,8 +59,7 @@ public class MorphBunny extends MorphGadget
" ",
C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Coins" ,
" ",
- C.cPurple + "Special Limited Time Morph",
- C.cPurple + "Purchase at www.mineplex.com/shop",
+ C.cPurple + "No longer available",
},
-1,
Material.MONSTER_EGG, (byte)98);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCreeper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCreeper.java
index 965207894..5cbc89f29 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCreeper.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCreeper.java
@@ -170,7 +170,7 @@ public class MorphCreeper extends MorphGadget
@EventHandler
public void HeroOwner(PlayerJoinEvent event)
{
- if (Manager.getClientManager().Get(event.getPlayer()).GetRank().Has(Rank.HERO))
+ if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.HERO))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java
index 3c184c06b..44662f5a1 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java
@@ -38,7 +38,7 @@ public class MorphPig extends MorphGadget
C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Oink",
C.cYellow + "Collide" + C.cGray + " to use " + C.cGreen + "Pig Bounce",
" ",
- C.cPurple + "Unlocked with Ultra Rank",
+ C.cAqua + "Unlocked with Ultra Rank",
},
-1,
Material.PORK, (byte)0);
@@ -83,7 +83,7 @@ public class MorphPig extends MorphGadget
@EventHandler
public void HeroOwner(PlayerJoinEvent event)
{
- if (Manager.getClientManager().Get(event.getPlayer()).GetRank().Has(Rank.ULTRA))
+ if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.ULTRA))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java
index da9d82ebd..d7e4ba8dc 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java
@@ -47,7 +47,7 @@ public class MorphWither extends MorphGadget
" ",
C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Wither Skull",
" ",
- C.cPurple + "Unlocked with Legend Rank",
+ C.cGreen + "Unlocked with Legend Rank",
},
-1,
Material.SKULL_ITEM, (byte)1);
@@ -177,10 +177,7 @@ public class MorphWither extends MorphGadget
@EventHandler
public void legendOwner(PlayerJoinEvent event)
{
- if (Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.LEGEND ||
- Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.ADMIN ||
- Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.DEVELOPER ||
- Manager.getClientManager().Get(event.getPlayer()).GetRank() == Rank.OWNER)
+ if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.LEGEND))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java
index cf6e41eba..7be1a9609 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java
@@ -22,7 +22,7 @@ public class ParticleLegend extends ParticleGadget
C.cWhite + "These mystic particle attach to",
C.cWhite + "only the most legendary of players!",
" ",
- C.cPurple + "Unlocked with Legend Rank",
+ C.cGreen + "Unlocked with Legend Rank",
},
-2,
Material.ENDER_PORTAL, (byte)0);
@@ -46,7 +46,7 @@ public class ParticleLegend extends ParticleGadget
@EventHandler
public void legendOwner(PlayerJoinEvent event)
{
- if (Manager.getClientManager().Get(event.getPlayer()).GetRank().Has(Rank.LEGEND))
+ if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.LEGEND))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/give/Give.java b/Plugins/Mineplex.Core/src/mineplex/core/give/Give.java
index 458ad6400..21234daa6 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/give/Give.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/give/Give.java
@@ -11,6 +11,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.MiniPlugin;
+import mineplex.core.common.structs.ItemContainer;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilItem;
@@ -65,7 +66,7 @@ public class Give extends MiniPlugin
public void give(Player player, String target, String itemNames, String amount, String enchants)
{
//Item
- LinkedList> itemList = new LinkedList>();
+ LinkedList itemList = new LinkedList();
itemList = UtilItem.matchItem(player, itemNames, true);
if (itemList.isEmpty())
return;
@@ -128,11 +129,15 @@ public class Give extends MiniPlugin
if (givenList.length() > 0)
givenList = givenList.substring(0, givenList.length()-1);
- for (Entry curItem : itemList)
+ for (ItemContainer curItem : itemList)
{
for (Player cur : giveList)
{
- ItemStack stack = ItemStackFactory.Instance.CreateStack(curItem.getKey(), curItem.getValue(), count);
+ ItemStack stack;
+ if (curItem.Name == null)
+ stack = ItemStackFactory.Instance.CreateStack(curItem.Type, curItem.Data, count);
+ else
+ stack = ItemStackFactory.Instance.CreateStack(curItem.Type, curItem.Data, count, curItem.Name);
//Enchants
stack.addUnsafeEnchantments(enchs);
@@ -142,18 +147,18 @@ public class Give extends MiniPlugin
{
//Inform
if (!cur.equals(player))
- UtilPlayer.message(cur, F.main("Give", "You received " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " from " + F.elem(player.getName()) + "."));
+ UtilPlayer.message(cur, F.main("Give", "You received " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " from " + F.elem(player.getName()) + "."));
}
}
if (target.equalsIgnoreCase("all"))
- UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " to " + F.elem("ALL")) + ".");
+ UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " to " + F.elem("ALL")) + ".");
else if (giveList.size() > 1)
- UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " to " + F.elem(givenList) + "."));
+ UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " to " + F.elem(givenList) + "."));
else
- UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.getKey(), curItem.getValue(), false)) + " to " + F.elem(giveList.getFirst().getName()) + "."));
+ UtilPlayer.message(player, F.main("Give", "You gave " + F.item(count + " " + ItemStackFactory.Instance.GetName(curItem.Type, curItem.Data, false)) + " to " + F.elem(giveList.getFirst().getName()) + "."));
}
}
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gui/pages/LoadingWindow.java b/Plugins/Mineplex.Core/src/mineplex/core/gui/pages/LoadingWindow.java
index 6398b4e6b..b14d00d41 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/gui/pages/LoadingWindow.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/gui/pages/LoadingWindow.java
@@ -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;
- }
- if (_inv == null) {
- _inv = Bukkit.createInventory(null, _size, _title);
+ try
+ {
+ if (player == null || player.getOpenInventory() == null || player.getOpenInventory().getTopInventory() == null || _inv == null ? !player.getOpenInventory().equals(_currentInventory) : (!player.getOpenInventory().getTopInventory().equals(_inv)))
+ {
+ end();
+ return;
+ }
- setBackGround();
- setLoadingBarItems();
- UtilPlayer.swapToInventory(player, _inv);
- Bukkit.getPluginManager().registerEvents(this, _plugin);
- } else
- setLoadingBarItems();
-
- _ticker++;
+ if (_inv == null)
+ {
+ _inv = Bukkit.createInventory(null, _size, _title);
+
+ setBackGround();
+ setLoadingBarItems();
+ UtilPlayer.swapToInventory(player, _inv);
+ 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() {
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/hologram/Hologram.java b/Plugins/Mineplex.Core/src/mineplex/core/hologram/Hologram.java
index 7b470f779..fd5311707 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/hologram/Hologram.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/hologram/Hologram.java
@@ -532,8 +532,6 @@ public class Hologram
if (newText.equals(_hologramText))
return this;
- _makeSpawnPackets = true;
-
if (isInUse())
{
int[] destroy1_7 = new int[0];
@@ -632,6 +630,7 @@ public class Hologram
}
_hologramText = newText;
+ makeSpawnPackets();
return this;
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/ignore/IgnoreManager.java b/Plugins/Mineplex.Core/src/mineplex/core/ignore/IgnoreManager.java
index e7b8732c1..a4735a7a4 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/ignore/IgnoreManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/ignore/IgnoreManager.java
@@ -88,7 +88,7 @@ public class IgnoreManager extends MiniDbClientPlugin
@EventHandler
public void onChat(AsyncPlayerChatEvent event)
{
- if (ClientManager.Get(event.getPlayer()).GetRank().Has(Rank.HELPER))
+ if (ClientManager.Get(event.getPlayer()).GetRank().has(Rank.HELPER))
return;
Iterator itel = event.getRecipients().iterator();
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java
index 8c87db300..8117ceeed 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java
@@ -21,6 +21,7 @@ import mineplex.core.inventory.data.InventoryRepository;
import mineplex.core.inventory.data.Item;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
+import mineplex.playerCache.PlayerCache;
public class InventoryManager extends MiniDbClientPlugin
{
@@ -180,7 +181,7 @@ public class InventoryManager extends MiniDbClientPlugin
synchronized (_inventoryLock)
{
- final boolean success = _repository.incrementClientInventoryItem(ClientManager.getCachedClientAccountId(uuid), _items.get(item).Id, count);
+ final boolean success = _repository.incrementClientInventoryItem(PlayerCache.getInstance().getPlayer(uuid).getAccountId(), _items.get(item).Id, count);
if (callback != null)
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java b/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java
index e13338dd1..3a1f090e0 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java
@@ -308,9 +308,10 @@ public class ItemBuilder
return this;
}
- public void setData(short newData)
+ public ItemBuilder setData(short newData)
{
this._data = newData;
+ return this;
}
public ItemBuilder setPotion(Potion potion)
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java b/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java
index 34956ecda..9df819f31 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java
@@ -191,7 +191,7 @@ public class MessageManager extends MiniClientPlugin
// My attempt at trying to mitigate some of the spam bots - Phinary
// Triggers if they are whispering a new player
- if (!GetClientManager().Get(from).GetRank().Has(Rank.HELPER) && Get(from).LastTo != null
+ if (!GetClientManager().Get(from).GetRank().has(Rank.HELPER) && Get(from).LastTo != null
&& !Get(from).LastTo.equalsIgnoreCase(to.getName()))
{
long delta = System.currentTimeMillis() - Get(from).LastToTime;
@@ -252,7 +252,7 @@ public class MessageManager extends MiniClientPlugin
{
if (!to.equals(staff) && !from.equals(staff))
{
- if (_clientManager.Get(staff).GetRank().Has(Rank.HELPER))
+ if (_clientManager.Get(staff).GetRank().has(Rank.HELPER))
{
UtilPlayer.message(staff, F.rank(_clientManager.Get(from).GetRank()) + " " + from.getName() + C.cPurple
+ " -> " + F.rank(_clientManager.Get(to).GetRank()) + " " + to.getName() + " " + C.cPurple + message);
@@ -369,7 +369,7 @@ public class MessageManager extends MiniClientPlugin
{
if (!to.equals(staff))
{
- if (_clientManager.Get(staff).GetRank().Has(Rank.HELPER))
+ if (_clientManager.Get(staff).GetRank().has(Rank.HELPER))
{
UtilPlayer.message(staff,
@@ -447,7 +447,7 @@ public class MessageManager extends MiniClientPlugin
{
if (!target.equals(staff))
{
- if (_clientManager.Get(staff).GetRank().Has(Rank.HELPER))
+ if (_clientManager.Get(staff).GetRank().has(Rank.HELPER))
{
UtilPlayer.message(staff,
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminCommand.java
index 8534424dc..5735a2dc4 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminCommand.java
@@ -21,7 +21,7 @@ public class AdminCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
@@ -48,7 +48,7 @@ public class AdminCommand extends CommandBase
boolean staff = false;
for (Player to : UtilServer.getPlayers())
{
- if (Plugin.GetClientManager().Get(to).GetRank().Has(Rank.HELPER))
+ if (Plugin.GetClientManager().Get(to).GetRank().has(Rank.HELPER))
{
if (!to.equals(caller))
UtilPlayer.message(to, F.rank(Plugin.GetClientManager().Get(caller).GetRank()) + " " + caller.getName() + " " + C.cPurple + message);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminMessageCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminMessageCommand.java
index f2336f543..3715bc60f 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminMessageCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AdminMessageCommand.java
@@ -18,7 +18,7 @@ public class AdminMessageCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java
index e4c8865fb..c82cdd800 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/AnnounceCommand.java
@@ -22,7 +22,7 @@ public class AnnounceCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/GlobalCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/GlobalCommand.java
index fae3d2a36..9c9f12e62 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/GlobalCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/GlobalCommand.java
@@ -20,7 +20,7 @@ public class GlobalCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageAdminCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageAdminCommand.java
index 89a459c36..cdacc6ef3 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageAdminCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageAdminCommand.java
@@ -18,13 +18,13 @@ public class MessageAdminCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
else
{
- if (!Plugin.GetClientManager().Get(caller).GetRank().Has(caller, Rank.HELPER, true))
+ if (!Plugin.GetClientManager().Get(caller).GetRank().has(caller, Rank.HELPER, true))
return;
if (args.length == 0)
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageCommand.java
index 405c4bf4d..53db5de4e 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/MessageCommand.java
@@ -18,7 +18,7 @@ public class MessageCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendAdminCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendAdminCommand.java
index a1a4f21c3..d201c296f 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendAdminCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendAdminCommand.java
@@ -18,13 +18,13 @@ public class ResendAdminCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
else
{
- if (!Plugin.GetClientManager().Get(caller).GetRank().Has(caller, Rank.HELPER, true))
+ if (!Plugin.GetClientManager().Get(caller).GetRank().has(caller, Rank.HELPER, true))
return;
String lastTo = Plugin.Get(caller).LastAdminTo;
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendCommand.java
index 4a9c9b6a4..65baece24 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/message/commands/ResendCommand.java
@@ -18,7 +18,7 @@ public class ResendCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
{
Plugin.Help(caller);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java b/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java
index fc898459e..9b7f921a5 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java
@@ -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 _monitoring = new HashSet();
public LagMeter(JavaPlugin plugin, CoreClientManager clientManager)
@@ -37,12 +44,14 @@ public class LagMeter extends MiniPlugin
_clientManager = clientManager;
_lastRun = System.currentTimeMillis();
_lastAverage = System.currentTimeMillis();
+
+ _start = System.currentTimeMillis();
}
@EventHandler
public void onPlayerCommandPreProcess(PlayerCommandPreprocessEvent event)
{
- if (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.MODERATOR))
+ if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.MODERATOR))
{
if (event.getMessage().trim().equalsIgnoreCase("/lag"))
{
@@ -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()
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java
index bf8d15f97..efb19dcf5 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java
@@ -110,7 +110,7 @@ public class MountDragon extends DragonMount
@EventHandler
public void HeroOwner(PlayerJoinEvent event)
{
- if (Manager.getClientManager().Get(event.getPlayer()).GetRank().Has(Rank.HERO))
+ if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.HERO))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java b/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java
index a2214adb2..d5097e318 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/notifier/NotificationManager.java
@@ -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)
{
@@ -42,11 +42,11 @@ public class NotificationManager extends MiniPlugin
if (!_enabled)
return;
- if (event.getType() == UpdateType.MIN_08)
- hugeSale();
+// if (event.getType() == UpdateType.MIN_08)
+// hugeSale();
-// if (event.getType() == UpdateType.MIN_16)
-// sale();
+ if (event.getType() == UpdateType.MIN_16)
+ sale();
}
private void sale()
@@ -55,20 +55,20 @@ public class NotificationManager extends MiniPlugin
{
Rank rank = _clientManager.Get(player).GetRank();
- if (rank.Has(Rank.LEGEND))
+ if (rank.has(Rank.LEGEND))
continue;
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!");
@@ -81,7 +81,7 @@ public class NotificationManager extends MiniPlugin
{
Rank rank = _clientManager.Get(player).GetRank();
- if (rank.Has(Rank.LEGEND))
+ if (rank.has(Rank.LEGEND))
continue;
UtilPlayer.message(player, _summerLine);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/AddCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/AddCommand.java
index 08beeb4fe..5de1e1525 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/AddCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/AddCommand.java
@@ -19,7 +19,7 @@ public class AddCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null)
+ if (args == null || args.length == 0)
Plugin.help(caller);
else
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/ClearCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/ClearCommand.java
index ff1a59bbf..aae8c26a0 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/ClearCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/ClearCommand.java
@@ -20,7 +20,7 @@ public class ClearCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args != null)
+ if (args.length > 0)
Plugin.help(caller);
else
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/DeleteCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/DeleteCommand.java
index 4b7ab183b..71dce58c0 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/DeleteCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/DeleteCommand.java
@@ -18,7 +18,7 @@ public class DeleteCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args != null)
+ if (args.length > 0)
Plugin.help(caller);
else
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/HomeCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/HomeCommand.java
index 03382bf95..51e8a622e 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/HomeCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/HomeCommand.java
@@ -18,7 +18,7 @@ public class HomeCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args != null)
+ if (args.length > 0)
Plugin.help(caller);
else
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/RefreshCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/RefreshCommand.java
index f77033b26..465b8ee02 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/npc/command/RefreshCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/npc/command/RefreshCommand.java
@@ -20,7 +20,7 @@ public class RefreshCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args != null)
+ if (args.length > 0)
Plugin.help(caller);
else
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java
index 6dc07adbd..95aaed739 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketHandler.java
@@ -47,9 +47,21 @@ public class PacketHandler extends MiniPlugin
EnumProtocol.PLAY.a().put(2, PacketPlayUseEntity.class);
EnumProtocol.PLAY.a().put(PacketPlayUseEntity.class, 2);
+// NBT Overflow Exploit Handlers
+ EnumProtocol.PLAY.a().put(8, PacketPlayInBlockPace.class);
+ EnumProtocol.PLAY.a().put(PacketPlayInBlockPace.class, 8);
+
+ EnumProtocol.PLAY.a().put(14, PacketPlayInWindowClick.class);
+ EnumProtocol.PLAY.a().put(PacketPlayInWindowClick.class, 14);
+
+ EnumProtocol.PLAY.a().put(16, PacketPlayInSetCreativeSlot.class);
+ EnumProtocol.PLAY.a().put(PacketPlayInSetCreativeSlot.class, 16);
+// ----------------------------
+
Method method = ProtocolInjector.class.getDeclaredMethod("addPacket", EnumProtocol.class,boolean.class, int.class, Class.class);
method.setAccessible(true);
-
+
+ method.invoke(null, EnumProtocol.PLAY, true, 67, PacketPlayOutCamera.class);
method.invoke(null, EnumProtocol.PLAY, true, 68, PacketPlayOutWorldBorder.class);
// EnumProtocol.PLAY.b().put(68, PacketPlayOutWorldBorder.class);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInBlockPace.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInBlockPace.java
new file mode 100644
index 000000000..4e4eea5df
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInBlockPace.java
@@ -0,0 +1,15 @@
+package mineplex.core.packethandler;
+
+import net.minecraft.server.v1_7_R4.PacketDataSerializer;
+import net.minecraft.server.v1_7_R4.PacketPlayInBlockPlace;
+
+public class PacketPlayInBlockPace extends PacketPlayInBlockPlace
+{
+
+ @Override
+ public void a(PacketDataSerializer data)
+ {
+ super.a(WrappedPacketDataSerializer.wrapDataSerializer(data));
+ }
+
+}
\ No newline at end of file
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInSetCreativeSlot.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInSetCreativeSlot.java
new file mode 100644
index 000000000..23b7482c7
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInSetCreativeSlot.java
@@ -0,0 +1,15 @@
+package mineplex.core.packethandler;
+
+import net.minecraft.server.v1_7_R4.PacketDataSerializer;
+
+public class PacketPlayInSetCreativeSlot extends net.minecraft.server.v1_7_R4.PacketPlayInSetCreativeSlot
+{
+
+ @Override
+ public void a(PacketDataSerializer data)
+ {
+ super.a(WrappedPacketDataSerializer.wrapDataSerializer(data));
+ }
+
+
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInWindowClick.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInWindowClick.java
new file mode 100644
index 000000000..baee403be
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayInWindowClick.java
@@ -0,0 +1,14 @@
+package mineplex.core.packethandler;
+
+import net.minecraft.server.v1_7_R4.PacketDataSerializer;
+
+public class PacketPlayInWindowClick extends net.minecraft.server.v1_7_R4.PacketPlayInWindowClick
+{
+
+ @Override
+ public void a(PacketDataSerializer data)
+ {
+ super.a(WrappedPacketDataSerializer.wrapDataSerializer(data));
+ }
+
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayOutCamera.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayOutCamera.java
new file mode 100644
index 000000000..11dd54051
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/PacketPlayOutCamera.java
@@ -0,0 +1,44 @@
+package mineplex.core.packethandler;
+
+import org.bukkit.entity.Entity;
+
+import net.minecraft.server.v1_7_R4.Packet;
+import net.minecraft.server.v1_7_R4.PacketDataSerializer;
+import net.minecraft.server.v1_7_R4.PacketListener;
+
+public class PacketPlayOutCamera extends Packet
+{
+ public int a;
+
+ public PacketPlayOutCamera()
+ {
+ }
+
+ public PacketPlayOutCamera(int id)
+ {
+ a = id;
+ }
+
+ public PacketPlayOutCamera(Entity paramEntity)
+ {
+ this.a = paramEntity.getEntityId();
+ }
+
+ public void a(PacketDataSerializer paramPacketDataSerializer)
+ {
+ }
+
+ public void b(PacketDataSerializer paramPacketDataSerializer)
+ {
+ paramPacketDataSerializer.b(this.a);
+ }
+
+ public void a(PacketListener paramPacketListenerPlayOut)
+ {
+ }
+
+ @Override
+ public void handle(PacketListener arg0)
+ {
+ }
+}
\ No newline at end of file
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/packethandler/WrappedPacketDataSerializer.java b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/WrappedPacketDataSerializer.java
new file mode 100644
index 000000000..0be73da27
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/packethandler/WrappedPacketDataSerializer.java
@@ -0,0 +1,85 @@
+package mineplex.core.packethandler;
+
+import java.io.DataInputStream;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+
+import org.bukkit.craftbukkit.v1_7_R4.inventory.CraftItemStack;
+import org.spigotmc.LimitStream;
+
+import net.minecraft.server.v1_7_R4.Item;
+import net.minecraft.server.v1_7_R4.ItemStack;
+import net.minecraft.server.v1_7_R4.NBTCompressedStreamTools;
+import net.minecraft.server.v1_7_R4.NBTReadLimiter;
+import net.minecraft.server.v1_7_R4.NBTTagCompound;
+import net.minecraft.server.v1_7_R4.PacketDataSerializer;
+import net.minecraft.util.io.netty.buffer.ByteBuf;
+import net.minecraft.util.io.netty.buffer.ByteBufInputStream;
+
+public class WrappedPacketDataSerializer extends PacketDataSerializer
+{
+
+ public WrappedPacketDataSerializer(ByteBuf bytebuf)
+ {
+ super(bytebuf);
+ }
+
+ public WrappedPacketDataSerializer(ByteBuf bytebuf, int version)
+ {
+ super(bytebuf, version);
+ }
+
+ @Override
+ public ItemStack c()
+ {
+ try {
+ ItemStack itemstack = null;
+ short short0 = readShort();
+ if (short0 >= 0)
+ {
+ byte b0 = readByte();
+ short short1 = readShort();
+
+ itemstack = new ItemStack(Item.getById(short0), b0, short1);
+ itemstack.setTag(b());
+ if (itemstack.getTag() != null) {
+ CraftItemStack.setItemMeta(itemstack, CraftItemStack.getItemMeta(itemstack));
+ }
+ }
+ return itemstack;
+ } catch (Exception e) {
+ this.clear();
+ return null;
+ }
+ }
+
+ @Override
+ public NBTTagCompound b()
+ {
+ int i = readerIndex();
+ byte b0 = readByte();
+ if (b0 == 0) {
+ return null;
+ }
+ readerIndex(i);
+ ByteBufInputStream data = new ByteBufInputStream(this);
+ NBTReadLimiter nbtreadlimiter = new NBTReadLimiter(2097152L);
+ return NBTCompressedStreamTools.a(new DataInputStream(new LimitStream((InputStream)data, nbtreadlimiter)), nbtreadlimiter);
+ }
+
+ public static WrappedPacketDataSerializer wrapDataSerializer(PacketDataSerializer data) {
+ try
+ {
+ Field a = data.getClass().getDeclaredField("a");
+ a.setAccessible(true);
+ ByteBuf buff = (ByteBuf) a.get(data);
+ WrappedPacketDataSerializer w = new WrappedPacketDataSerializer(buff, data.version);
+ return w;
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/party/Party.java b/Plugins/Mineplex.Core/src/mineplex/core/party/Party.java
index b5e048f9f..2aa3b2496 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/party/Party.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/party/Party.java
@@ -82,7 +82,7 @@ public class Party
for (Rank rank : Rank.values())
{
if (rank != Rank.ALL)
- _scoreboard.registerNewTeam(rank.Name).setPrefix(rank.GetTag(true, false) + ChatColor.RESET + " ");
+ _scoreboard.registerNewTeam(rank.Name).setPrefix(rank.getTag(true, false) + ChatColor.RESET + " ");
else
_scoreboard.registerNewTeam(rank.Name).setPrefix("");
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java b/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java
index 3896622be..8f8e68dc9 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java
@@ -70,7 +70,7 @@ public class PersonalServerManager extends MiniPlugin
if (!Recharge.Instance.use(event.getPlayer(), "Host Server Melon", 30000, false, false))
return;
- if (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.LEGEND))
+ if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.LEGEND))
{
showHostMessage(event.getPlayer());
}
@@ -124,7 +124,7 @@ public class PersonalServerManager extends MiniPlugin
Rank rank = _clientManager.Get(player).GetRank();
- if (eventServer || rank.Has(Rank.SNR_MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH)
+ if (eventServer || rank.has(Rank.SNR_MODERATOR) || rank == Rank.YOUTUBE || rank == Rank.TWITCH)
{
ram = 2048;
cpu = 4;
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java
index a95bcb150..46488298a 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java
@@ -146,7 +146,7 @@ public class PetManager extends MiniClientPlugin
{
Player p = event.getPlayer();
Rank rank = _clientManager.Get(p).GetRank();
- if (rank == Rank.LEGEND || rank == Rank.ADMIN || rank == Rank.DEVELOPER || rank == Rank.OWNER)
+ if (rank.has(Rank.LEGEND))
{
_donationManager.Get(p.getName()).AddUnknownSalesPackagesOwned("Widder");
}
@@ -228,8 +228,14 @@ public class PetManager extends MiniClientPlugin
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());
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/poll/DisplayType.java b/Plugins/Mineplex.Core/src/mineplex/core/poll/DisplayType.java
index c593307e9..958fb9a0c 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/poll/DisplayType.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/poll/DisplayType.java
@@ -13,9 +13,9 @@ public enum DisplayType
switch (this)
{
case RANKED:
- return rank.Has(Rank.ULTRA);
+ return rank.has(Rank.ULTRA);
case NOT_RANKED:
- return !rank.Has(Rank.ULTRA);
+ return !rank.has(Rank.ULTRA);
default:
return true;
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/poll/command/PollCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/poll/command/PollCommand.java
index bafdb1dbe..68380927b 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/poll/command/PollCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/poll/command/PollCommand.java
@@ -39,7 +39,7 @@ public class PollCommand extends CommandBase
return;
}
- if (args[0].equalsIgnoreCase("list") && CommandCenter.GetClientManager().Get(caller).GetRank().Has(Rank.MODERATOR))
+ if (args[0].equalsIgnoreCase("list") && CommandCenter.GetClientManager().Get(caller).GetRank().has(Rank.MODERATOR))
{
if (args.length == 1)
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/portal/Commands/ServerCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/portal/Commands/ServerCommand.java
index 37d5d933c..b4ac74e62 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/portal/Commands/ServerCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/portal/Commands/ServerCommand.java
@@ -43,7 +43,7 @@ public class ServerCommand extends CommandBase
Plugin.doesServerExist(args[0], new Callback()
{
public void run(final Boolean serverExists)
- {
+ {
if (!serverExists)
{
UtilPlayer.message(
@@ -58,32 +58,45 @@ public class ServerCommand extends CommandBase
if (servUp.contains("HERO"))
{
- if (playerRank.Has(Rank.HERO))
+ if (playerRank.has(Rank.HERO))
Plugin.sendPlayerToServer(player, args[0]);
else
deniedAccess = true;
}
else if (servUp.contains("ULTRA") || servUp.contains("BETA"))
{
- if (playerRank.Has(Rank.ULTRA))
+ if (playerRank.has(Rank.ULTRA))
Plugin.sendPlayerToServer(player, args[0]);
else
deniedAccess = true;
}
else if (servUp.contains("STAFF"))
{
- if (playerRank.Has(Rank.HELPER))
+ if (playerRank.has(Rank.HELPER))
Plugin.sendPlayerToServer(player, args[0]);
else
deniedAccess = true;
}
else if (servUp.contains("TEST"))
{
- if (playerRank.Has(Rank.MODERATOR))
+ if (playerRank.has(Rank.MODERATOR))
Plugin.sendPlayerToServer(player, args[0]);
else
deniedAccess = true;
}
+ else if (servUp.contains("CLANS-"))
+ {
+ if (playerRank.has(Rank.MODERATOR))
+ {
+ Plugin.sendPlayerToServer(player, args[0]);
+ }
+ else
+ {
+ UtilPlayer.message(player,
+ F.main(Plugin.getName(), C.cRed + "You must join clans through the hub! Join " + C.cGold + "ClansHub-1"
+ + C.cRed + "!"));
+ }
+ }
else
{
Plugin.sendPlayerToServer(player, args[0]);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/portal/Portal.java b/Plugins/Mineplex.Core/src/mineplex/core/portal/Portal.java
index 07fd685fa..d5a24913f 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/portal/Portal.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/portal/Portal.java
@@ -113,7 +113,7 @@ public class Portal extends MiniPlugin
{
public void run()
{
- if (server.getPlayerCount() < server.getMaxPlayerCount() || playerRank.Has(Rank.ULTRA))
+ if (server.getPlayerCount() < server.getMaxPlayerCount() || playerRank.has(Rank.ULTRA))
{
sendPlayer(player, serverName);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java
index 31e1bb563..8007a3aef 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/PreferencesPage.java
@@ -243,7 +243,7 @@ public class PreferencesPage extends ShopPageBase
{
public PreferencesShop(PreferencesManager plugin, CoreClientManager clientManager, mineplex.core.donation.DonationManager donationManager)
{
- super(plugin, clientManager, donationManager, "User Preferences");
+ super(plugin, clientManager, donationManager, "My Preferences");
}
@Override
protected ShopPageBase> buildPagesFor(Player player)
{
- return new PreferencesPage(getPlugin(), this, getClientManager(), getDonationManager(), " " + ChatColor.UNDERLINE + "User Preferences", player);
+ return new PreferencesPage(getPlugin(), this, getClientManager(), getDonationManager(),"My Preferences", player);
}
}
\ No newline at end of file
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java
index adaceb736..9336697f3 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/Punish.java
@@ -113,24 +113,30 @@ public class Punish extends MiniPlugin
UtilPlayer.message(caller, F.main(_moduleName, "Commands List:"));
UtilPlayer.message(caller, F.help("/punish", " ", Rank.MODERATOR));
}
-
+
public void AddPunishment(final String playerName, final Category category, final String reason, final Player caller, final int severity, boolean ban, long duration)
+ {
+ AddPunishment(playerName, category, reason, caller == null ? null : caller.getName(), severity, ban, duration, false);
+ }
+
+ public void AddPunishment(final String playerName, final Category category, final String reason, final String callerName, final int severity, boolean ban, long duration, final boolean silent)
{
if (!_punishClients.containsKey(playerName.toLowerCase()))
{
_punishClients.put(playerName.toLowerCase(), new PunishClient());
}
-
+
+ final Player caller = (callerName == null ? null : UtilPlayer.searchExact(callerName));
final PunishmentSentence sentence = !ban ? PunishmentSentence.Mute : PunishmentSentence.Ban;
final long finalDuration = duration;
-
+
_repository.Punish(new Callback()
{
public void run(String result)
{
PunishmentResponse banResult = PunishmentResponse.valueOf(result);
-
+
if (banResult == PunishmentResponse.AccountDoesNotExist)
{
if (caller != null)
@@ -159,10 +165,9 @@ public class Punish extends MiniPlugin
public void run()
{
String kickReason = C.cRed + C.Bold + "You were banned for " + durationString + " by " + (caller == null ? "Mineplex Anti-Cheat" : caller.getName()) +
- "\n" + C.cWhite + reason +
- "\n" + C.cDGreen + "Unfairly banned? Appeal at " + C.cGreen + "www.mineplex.com/appeals"
- ;
-
+ "\n" + C.cWhite + reason +
+ "\n" + C.cDGreen + "Unfairly banned? Appeal at " + C.cGreen + "www.mineplex.com/appeals";
+
Player target = UtilPlayer.searchOnline(null, playerName, false);
if (target != null)
target.kickPlayer(kickReason);
@@ -170,8 +175,11 @@ public class Punish extends MiniPlugin
new mineplex.serverdata.commands.PunishCommand(playerName, true, false, kickReason).publish();
}
});
-
- informOfPunish(playerName, F.main(getName(), caller == null ? "Mineplex Anti-Cheat" : caller.getName() + " banned " + playerName + " for " + durationString + "."));
+
+ if (!silent)
+ {
+ informOfPunish(playerName, F.main(getName(), caller == null ? "Mineplex Anti-Cheat" : caller.getName() + " banned " + playerName + " for " + durationString + "."));
+ }
}
else
{
@@ -181,9 +189,19 @@ public class Punish extends MiniPlugin
//Warning
if (finalDuration == 0)
- informOfPunish(playerName, F.main(getName(), caller == null ? "Mineplex Anti-Cheat" : caller.getName() + " issued a friendly warning to " + playerName + "."));
+ {
+ if (!silent)
+ {
+ informOfPunish(playerName, F.main(getName(), caller == null ? "Mineplex Anti-Cheat" : caller.getName() + " issued a friendly warning to " + playerName + "."));
+ }
+ }
else
- informOfPunish(playerName, F.main(getName(), caller == null ? "Mineplex Anti-Cheat" : caller.getName() + " muted " + playerName + " for " + durationString + "."));
+ {
+ if (!silent)
+ {
+ informOfPunish(playerName, F.main(getName(), caller == null ? "Mineplex Anti-Cheat" : caller.getName() + " muted " + playerName + " for " + durationString + "."));
+ }
+ }
//Inform
Player target = UtilPlayer.searchExact(playerName);
@@ -207,14 +225,14 @@ public class Punish extends MiniPlugin
}
- }, playerName, category.toString(), sentence, reason, duration, caller == null ? "Mineplex Anti-Cheat" : caller.getName(), severity);
+ }, playerName, category.toString(), sentence, reason, duration, callerName == null ? "Mineplex Anti-Cheat" : callerName, severity);
}
private void informOfPunish(String punishee, String msg)
{
for (Player player : UtilServer.getPlayers())
{
- if (_clientManager.Get(player).GetRank().Has(Rank.HELPER) || player.getName().equals(punishee))
+ if (_clientManager.Get(player).GetRank().has(Rank.HELPER) || player.getName().equals(punishee))
{
player.sendMessage(msg);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/PunishmentHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/PunishmentHandler.java
index a6169b6e0..9c27d7a35 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/punish/PunishmentHandler.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/PunishmentHandler.java
@@ -28,7 +28,7 @@ public class PunishmentHandler implements CommandCallback
String playerName = punishCommand.getPlayerName();
boolean ban = punishCommand.getBan();
final String reason = punishCommand.getMessage();
- final Player player = Bukkit.getPlayer(playerName);
+ final Player player = Bukkit.getPlayerExact(playerName);
if (player != null && player.isOnline())
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/punish/UI/PunishPage.java b/Plugins/Mineplex.Core/src/mineplex/core/punish/UI/PunishPage.java
index b2a8768aa..26f3a626c 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/punish/UI/PunishPage.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/punish/UI/PunishPage.java
@@ -137,7 +137,7 @@ public class PunishPage extends CraftInventoryCustom implements Listener
examplePrefixNote + "Give Warning if 0 Past Offences and 0 Warnings.",
}, 1, false, true), new PunishButton(this, Category.ChatOffense, 1, false, getDuration(Category.ChatOffense, 1, offenseMap)));
- if (_plugin.GetClients().Get(_player).GetRank().Has(Rank.MODERATOR))
+ if (_plugin.GetClients().Get(_player).GetRank().has(Rank.MODERATOR))
{
AddButton(28, new ShopItem(Material.INK_SACK, (byte)11, "Severity 2", new String[] {
ChatColor.RESET + "Past Offences: " + ChatColor.YELLOW + offenseMap.get(Category.ChatOffense).get(2),
@@ -221,7 +221,7 @@ public class PunishPage extends CraftInventoryCustom implements Listener
examplePrefixEx + " Player Radar",
}, 1, false, true), new PunishButton(this, Category.Hacking, 1, true, getDuration(Category.Hacking, 1, offenseMap)));
- if (_plugin.GetClients().Get(_player).GetRank().Has(Rank.MODERATOR))
+ if (_plugin.GetClients().Get(_player).GetRank().has(Rank.MODERATOR))
{
AddButton(32, new ShopItem(Material.INK_SACK, (byte)11, "Severity 2",new String[]
@@ -274,7 +274,7 @@ public class PunishPage extends CraftInventoryCustom implements Listener
}, 1, false, true), new PunishButton(this, Category.Warning, 1, false, 0));
- if (_plugin.GetClients().Get(_player).GetRank().Has(Rank.MODERATOR))
+ if (_plugin.GetClients().Get(_player).GetRank().has(Rank.MODERATOR))
{
AddButton(34, new ShopItem(Material.REDSTONE_BLOCK, (byte)0, "Permanent Ban", new String[] {
ChatColor.RESET + "Ban Duration: " + ChatColor.YELLOW + "Permanent",
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java
index 8932c3658..f8be21c1d 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java
@@ -301,6 +301,8 @@ public class RewardManager
new ItemStack(Material.SKULL_ITEM, 1, (short) 0, (byte) 1), rarity, 25));
addReward(new UnknownPackageReward(donationManager, "Block Morph", "Block Morph",
new ItemStack(Material.EMERALD_BLOCK), rarity, 20));
+ addReward(new UnknownPackageReward(donationManager, "Big Larry Morph", "Big Larry Morph",
+ new ItemStack(Material.SLIME_BALL), rarity, 10));
// Particles
addReward(new UnknownPackageReward(donationManager, "Shadow Walk Particles", "Shadow Walk",
@@ -389,7 +391,7 @@ public class RewardManager
//Dont give Rank Upgrade if already has Legend
if (rarity == RewardRarity.MYTHICAL)
{
- if (!canGiveMythical || _clientManager.Get(player).GetRank().Has(Rank.LEGEND))
+ if (!canGiveMythical || _clientManager.Get(player).GetRank().has(Rank.LEGEND))
{
rarity = RewardRarity.LEGENDARY;
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/RankReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/RankReward.java
index 6c3ce1a6a..ca694776a 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/RankReward.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/RankReward.java
@@ -58,7 +58,7 @@ public class RankReward extends Reward
@Override
public boolean canGiveReward(Player player)
{
- return !_clientManager.Get(player).GetRank().Has(Rank.LEGEND);
+ return !_clientManager.Get(player).GetRank().has(Rank.LEGEND);
}
@Override
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/PlayerScoreboard.java b/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/PlayerScoreboard.java
index 81c1970c9..119bebfaa 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/PlayerScoreboard.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/PlayerScoreboard.java
@@ -37,7 +37,7 @@ public class PlayerScoreboard
for (Rank rank : Rank.values())
{
if (rank != Rank.ALL)
- _scoreboard.registerNewTeam(rank.Name).setPrefix(rank.GetTag(true, true) + ChatColor.RESET + " ");
+ _scoreboard.registerNewTeam(rank.Name).setPrefix(rank.getTag(true, true) + ChatColor.RESET + " ");
else
_scoreboard.registerNewTeam(rank.Name).setPrefix("");
}
@@ -55,12 +55,12 @@ public class PlayerScoreboard
String rankName = _manager.getClients().Get(player).GetRank().Name;
String otherRankName = _manager.getClients().Get(otherPlayer).GetRank().Name;
- if (!_manager.getClients().Get(player).GetRank().Has(Rank.ULTRA) && _manager.getDonation().Get(player.getName()).OwnsUltraPackage())
+ if (!_manager.getClients().Get(player).GetRank().has(Rank.ULTRA) && _manager.getDonation().Get(player.getName()).OwnsUltraPackage())
{
rankName = Rank.ULTRA.Name;
}
- if (!_manager.getClients().Get(otherPlayer).GetRank().Has(Rank.ULTRA) && _manager.getDonation().Get(otherPlayer.getName()).OwnsUltraPackage())
+ if (!_manager.getClients().Get(otherPlayer).GetRank().has(Rank.ULTRA) && _manager.getDonation().Get(otherPlayer.getName()).OwnsUltraPackage())
{
otherRankName = Rank.ULTRA.Name;
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/elements/ScoreboardElementRank.java b/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/elements/ScoreboardElementRank.java
index ceaf48afc..1a089ccda 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/elements/ScoreboardElementRank.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/scoreboard/elements/ScoreboardElementRank.java
@@ -14,7 +14,7 @@ public class ScoreboardElementRank implements ScoreboardElement
{
ArrayList output = new ArrayList();
- if (manager.getClients().Get(player).GetRank().Has(Rank.ULTRA))
+ if (manager.getClients().Get(player).GetRank().has(Rank.ULTRA))
{
output.add(manager.getClients().Get(player).GetRank().Name);
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/serverConfig/ServerConfiguration.java b/Plugins/Mineplex.Core/src/mineplex/core/serverConfig/ServerConfiguration.java
index 02cc887b0..f4f883083 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/serverConfig/ServerConfiguration.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/serverConfig/ServerConfiguration.java
@@ -56,7 +56,7 @@ public class ServerConfiguration extends MiniPlugin
@EventHandler
public void onPlayerLogin(PlayerLoginEvent event)
{
- if (_serverGroup.getStaffOnly() && !_clientManager.Get(event.getPlayer().getName()).GetRank().Has(event.getPlayer(), Rank.HELPER, false))
+ if (_serverGroup.getStaffOnly() && !_clientManager.Get(event.getPlayer().getName()).GetRank().has(event.getPlayer(), Rank.HELPER, false))
event.disallow(Result.KICK_OTHER, "This is a staff only server.");
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ShopPageBase.java b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ShopPageBase.java
index 2298c970d..2d915e3cc 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ShopPageBase.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ShopPageBase.java
@@ -145,7 +145,7 @@ public abstract class ShopPageBase= 0 && rawSlot < inventory.getSize()) || shiftClick)
{
playDenySound(_player);
event.setCancelled(true);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ShopPageInventory.java b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ShopPageInventory.java
new file mode 100644
index 000000000..0546c0de6
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ShopPageInventory.java
@@ -0,0 +1,123 @@
+package mineplex.core.shop.page;
+
+import mineplex.core.MiniPlugin;
+import mineplex.core.account.CoreClientManager;
+import mineplex.core.donation.DonationManager;
+import mineplex.core.itemstack.ItemBuilder;
+import mineplex.core.shop.ShopBase;
+import mineplex.core.shop.item.IButton;
+
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.inventory.ClickType;
+import org.bukkit.inventory.ItemStack;
+
+public abstract class ShopPageInventory> extends
+ ShopPageBase
+{
+ private int _page;
+
+ public ShopPageInventory(PluginType plugin, ShopType shop, CoreClientManager clientManager, DonationManager donationManager,
+ String name, Player player)
+ {
+ super(plugin, shop, clientManager, donationManager, name, player, 54);
+ }
+
+ public PluginType getPlugin()
+ {
+ return (PluginType) super.getPlugin();
+ }
+
+ public ShopPageInventory(PluginType plugin, ShopType shop, CoreClientManager clientManager, DonationManager donationManager,
+ String name, Player player, int slots)
+ {
+ super(plugin, shop, clientManager, donationManager, name, player, slots);
+ }
+
+ protected abstract IButton[] getButtons();
+
+ protected abstract ItemStack[] getItems();
+
+ protected abstract void buildItems();
+
+ @Override
+ protected final void buildPage()
+ {
+ clearPage();
+ buildItems();
+
+ IButton[] buttons = getButtons();
+ ItemStack[] items = getItems();
+
+ int maxLen = Math.max(items.length, buttons.length);
+ boolean pages = maxLen > getSize();
+
+ _page = Math.max(0, Math.min(_page, pages ? (int) Math.ceil(maxLen / (double) (getSize() - 9)) - 1 : 0));
+
+ int start = pages ? _page * (getSize() - 9) : 0;
+
+ for (int slot = 0; slot < (pages ? getSize() - 9 : getSize()); slot++)
+ {
+ IButton button = null;
+ ItemStack item = null;
+
+ if (slot + start < buttons.length)
+ {
+ button = buttons[slot + start];
+ }
+
+ if (slot + start < items.length)
+ {
+ item = items[slot + start];
+ }
+
+ if (button != null)
+ {
+ super.addButton(slot, item, button);
+ }
+ else
+ {
+ setItem(slot, item);
+ }
+ }
+
+ if (pages)
+ {
+ for (int slot = 0; slot < 9; slot++)
+ {
+ int realSlot = getSize() - (9 - slot);
+
+ if ((slot == 0 && _page > 0) || (slot == 8 && maxLen > (_page + 1) * (getSize() - 9)))
+ {
+ final int nextPage = slot == 0 ? _page - 1 : _page + 1;
+
+ ItemBuilder builder = new ItemBuilder(Material.SIGN);
+ builder.setTitle(slot == 0 ? "Previous Page" : "Next Page");
+ builder.setAmount(nextPage + 1);
+
+ super.addButton(realSlot, builder.build(), new IButton()
+ {
+
+ @Override
+ public void onClick(Player player, ClickType clickType)
+ {
+ setPage(nextPage);
+ }
+ });
+ }
+ else if (slot == 4)
+ {
+ ItemStack item = new ItemBuilder(Material.PAPER).setTitle("Page " + (_page + 1)).setAmount(_page + 1).build();
+
+ setItem(realSlot, item);
+ }
+ }
+ }
+ }
+
+ public void setPage(int newPage)
+ {
+ _page = newPage;
+ buildPage();
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/stats/PlayerStats.java b/Plugins/Mineplex.Core/src/mineplex/core/stats/PlayerStats.java
index b5caa1745..9ceb59d83 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/stats/PlayerStats.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/stats/PlayerStats.java
@@ -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);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/stats/SecondaryStatHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/stats/SecondaryStatHandler.java
deleted file mode 100644
index eb13e4940..000000000
--- a/Plugins/Mineplex.Core/src/mineplex/core/stats/SecondaryStatHandler.java
+++ /dev/null
@@ -1,184 +0,0 @@
-package mineplex.core.stats;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.jooq.Configuration;
-import org.jooq.DSLContext;
-import org.jooq.Delete;
-import org.jooq.Insert;
-import org.jooq.SQLDialect;
-import org.jooq.TransactionalRunnable;
-import org.jooq.Update;
-import org.jooq.impl.DSL;
-
-import mineplex.core.account.ILoginProcessor;
-import mineplex.core.database.DBPool;
-import mineplex.database.Tables;
-import org.jooq.types.ULong;
-
-public class SecondaryStatHandler implements ILoginProcessor
-{
- private StatsManager _statsManager;
- private StatsRepository _repository;
-
- public SecondaryStatHandler(StatsManager statsManager, StatsRepository repository)
- {
- _statsManager = statsManager;
- _repository = repository;
- }
-
- @Override
- public String getName()
- {
- return "Secondary Stat Handler";
- }
-
- @Override
- public void processLoginResultSet(String playerName, int accountId, ResultSet resultSet) throws SQLException
- {
- PlayerStats oldPlayerStats = _statsManager.Get(playerName);
- PlayerStats newPlayerStats = _repository.loadClientInformation(resultSet);
-
- if (newPlayerStats.getStatsNames().size() == 0 && oldPlayerStats.getStatsNames().size() != 0)
- {
- try
- {
- DSLContext context = DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL);
-
- final List inserts = new ArrayList<>();
-
- for (String statName : oldPlayerStats.getStatsNames())
- {
- Integer statId = _statsManager.getStatId(statName);
-
- Insert insert = context
- .insertInto(Tables.accountStat)
- .set(Tables.accountStat.accountId, accountId)
- .set(Tables.accountStat.statId, statId)
- .set(Tables.accountStat.value, ULong.valueOf(Math.max(oldPlayerStats.getStat(statName), 0L)));
-
- inserts.add(insert);
- }
-
- context.transaction(new TransactionalRunnable()
- {
- @Override
- public void run(Configuration config) throws Exception
- {
- DSL.using(config).batch(inserts).execute();
- }
- });
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- else
- {
- _statsManager.replacePlayerHack(playerName, newPlayerStats);
-
- if (oldPlayerStats.getStatsNames().size() != 0)
- {
- try
- {
- final DSLContext context = DSL.using(DBPool.ACCOUNT, SQLDialect.MYSQL);
- final List updates = new ArrayList<>();
- final List inserts = new ArrayList<>();
- boolean foundNegativeStat = false;
- boolean foundLessThanStat = false;
-
- for (String statName : oldPlayerStats.getStatsNames())
- {
- Integer statId = _statsManager.getStatId(statName);
-
- Insert insert = context
- .insertInto(Tables.accountStat)
- .set(Tables.accountStat.accountId, accountId)
- .set(Tables.accountStat.statId, statId)
- .set(Tables.accountStat.value, ULong.valueOf(Math.max(oldPlayerStats.getStat(statName), 0L)));
-
- inserts.add(insert);
-
- Update update = context
- .update(Tables.accountStat)
- .set(Tables.accountStat.value, ULong.valueOf(Math.max(oldPlayerStats.getStat(statName), 0L)))
- .where(Tables.accountStat.accountId.eq(accountId))
- .and(Tables.accountStat.statId.eq(statId));
-
- updates.add(update);
-
- if (oldPlayerStats.getStat(statName) < 0)
- {
- foundNegativeStat = true;
- }
- else if (newPlayerStats.getStat(statName) < oldPlayerStats.getStat(statName))
- {
- foundLessThanStat = true;
- }
- }
-
- if (foundNegativeStat && foundLessThanStat)
- {
- context.transaction(new TransactionalRunnable()
- {
- @Override
- public void run(Configuration config) throws Exception
- {
- int[] updateResult = context.batch(updates).execute();
-
- for (int i = 0; i < updateResult.length; i++)
- {
- if (updateResult[i] > 0)
- inserts.set(i, null);
- }
-
- inserts.removeAll(Collections.singleton(null));
-
- context.batch(inserts).execute();
-
- System.out.println("Updating");
- }
- });
- }
-
-/*
- final List deletes = new ArrayList<>();
-
- for (String statName : oldPlayerStats.getStatsNames())
- {
- Delete delete = context.delete(Tables.accountStats)
- .where(Tables.accountStats.accountId.equal(accountId));
-
- deletes.add(delete);
- }
-
- context.transaction(new TransactionalRunnable()
- {
- @Override
- public void run(Configuration config) throws Exception
- {
- DSL.using(config).batch(deletes).execute();
- }
- });
- */
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- }
- }
-
- @Override
- public String getQuery(int accountId, String uuid, String name)
- {
- return "SELECT stats.name, value FROM accountStat INNER JOIN stats ON stats.id = accountStat.statId WHERE accountStat.accountId = '" + accountId + "';";
- }
-
-}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java
index a29cff0c8..7c8a2dd9b 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsManager.java
@@ -1,28 +1,22 @@
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;
import mineplex.core.stats.command.TimeCommand;
import mineplex.core.stats.event.StatChangeEvent;
+import mineplex.playerCache.PlayerCache;
public class StatsManager extends MiniDbClientPlugin
{
@@ -57,8 +51,33 @@ public class StatsManager extends MiniDbClientPlugin
{
_stats.put(stat.Name, stat.Id);
}
+ }
+
+ @EventHandler
+ public void onPlayerJoin(PlayerJoinEvent event)
+ {
+ PlayerStats playerStats = Get(event.getPlayer());
- clientManager.addStoredProcedureLoginProcessor(new SecondaryStatHandler(this, _repository));
+ 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)
@@ -74,7 +93,7 @@ public class StatsManager extends MiniDbClientPlugin
// 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()
{
@@ -141,7 +160,7 @@ public class StatsManager extends MiniDbClientPlugin
if (player.isOnline())
continue;
- int uploadKey = ClientManager.getCachedClientAccountId(player.getUniqueId());
+ int uploadKey = PlayerCache.getInstance().getPlayer(player.getUniqueId()).getAccountId();
uploadQueue.put(uploadKey, new NautHashMap());
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java
index e1524436d..2b92728ff 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/stats/StatsRepository.java
@@ -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 retrieveStats()
{
@@ -165,9 +156,36 @@ public class StatsRepository extends RepositoryBase
while (resultSet.next())
{
- playerStats.addStat(resultSet.getString(1), resultSet.getInt(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();
+ }
+ }
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java
index 80abd5078..e4109626e 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java
@@ -4,6 +4,7 @@ import java.io.File;
import java.util.Collection;
import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.plugin.java.JavaPlugin;
@@ -163,8 +164,18 @@ public class ServerStatusManager extends MiniPlugin
int ram = (int) ((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().freeMemory()) / 1048576);
int maxRam = (int) (Runtime.getRuntime().maxMemory() / 1048576);
+ int donorsOnline = 0;
+
+ for (Player player : Bukkit.getOnlinePlayers())
+ {
+ if (_clientManager.Get(player).GetRank().isDonor())
+ {
+ donorsOnline++;
+ }
+ }
+
return new MinecraftServer(_name, group, motd, address, port, playerCount,
- maxPlayerCount, tps, ram, maxRam, _startUpDate);
+ maxPlayerCount, tps, ram, maxRam, _startUpDate, donorsOnline);
}
public String getCurrentServerName()
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/task/TaskManager.java b/Plugins/Mineplex.Core/src/mineplex/core/task/TaskManager.java
index 2ecce2580..83f495718 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/task/TaskManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/task/TaskManager.java
@@ -14,6 +14,7 @@ import mineplex.core.account.CoreClientManager;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.task.repository.TaskRepository;
+import mineplex.playerCache.PlayerCache;
public class TaskManager extends MiniDbClientPlugin
{
@@ -68,7 +69,7 @@ public class TaskManager extends MiniDbClientPlugin
synchronized (_taskLock)
{
- final boolean success = _repository.addAccountTask(ClientManager.getCachedClientAccountId(uuid), _tasks.get(task));
+ final boolean success = _repository.addAccountTask(PlayerCache.getInstance().getPlayer(uuid).getAccountId(), _tasks.get(task));
if (callback != null)
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/BackCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/BackCommand.java
index 4b198fb39..3f4d5b97d 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/BackCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/BackCommand.java
@@ -49,7 +49,7 @@ public class BackCommand extends CommandBase
int back = 0;
for (int i = 0 ; i < amount ; i++)
{
- if (Plugin.GetTPHistory(player).isEmpty())
+ if (Plugin.GetTPHistory(player) == null || Plugin.GetTPHistory(player).isEmpty())
break;
loc = Plugin.GetTPHistory(player).removeFirst();
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/TeleportCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/TeleportCommand.java
index 33674f94b..bdf03cc6e 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/TeleportCommand.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/teleport/command/TeleportCommand.java
@@ -23,15 +23,15 @@ public class TeleportCommand extends MultiCommandBase
protected void Help(Player caller, String[] args)
{
//Caller to Player
- if (args.length == 1 && CommandCenter.GetClientManager().Get(caller).GetRank().Has(caller, Rank.MODERATOR, true))
+ if (args.length == 1 && CommandCenter.GetClientManager().Get(caller).GetRank().has(caller, Rank.MODERATOR, true))
Plugin.playerToPlayer(caller, caller.getName(), args[0]);
//Player to Player
- else if (args.length == 2 && CommandCenter.GetClientManager().Get(caller).GetRank().Has(caller, Rank.ADMIN, true))
+ else if (args.length == 2 && CommandCenter.GetClientManager().Get(caller).GetRank().has(caller, Rank.ADMIN, true))
Plugin.playerToPlayer(caller, args[0], args[1]);
//Caller to Loc
- else if (args.length == 3 && CommandCenter.GetClientManager().Get(caller).GetRank().Has(caller, Rank.ADMIN, true))
+ else if (args.length == 3 && CommandCenter.GetClientManager().Get(caller).GetRank().has(caller, Rank.ADMIN, true))
Plugin.playerToLoc(caller, caller.getName(), args[0], args[1], args[2]);
//Player to world
@@ -39,7 +39,7 @@ public class TeleportCommand extends MultiCommandBase
Plugin.playerToLoc(caller, args[0], args[1], args[2], args[3], args[4]);
//Player to Loc
- else if (args.length == 4 && CommandCenter.GetClientManager().Get(caller).GetRank().Has(caller, Rank.ADMIN, true))
+ else if (args.length == 4 && CommandCenter.GetClientManager().Get(caller).GetRank().has(caller, Rank.ADMIN, true))
Plugin.playerToLoc(caller, args[0], args[1], args[2], args[3]);
else
{
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java
index 7f4ef7667..7368f718a 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java
@@ -97,6 +97,7 @@ public class TreasureLocation implements Listener
return;
}
+ // Treasure is now being opened
setHoloChestVisible(false);
if (treasureType == TreasureType.ANCIENT)
@@ -123,6 +124,7 @@ public class TreasureLocation implements Listener
player.teleport(teleportLocation);
+ _treasureManager.addOpenStat(player, treasureType);
}
private boolean chargeAccount(Player player, TreasureType treasureType)
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java
index fbd14ea54..30d1a2335 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java
@@ -31,6 +31,7 @@ public class TreasureManager extends MiniPlugin
private InventoryManager _inventoryManager;
private BlockRestore _blockRestore;
private HologramManager _hologramManager;
+ private StatsManager _statsManager;
private List _treasureLocations;
public TreasureManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, BlockRestore blockRestore, HologramManager hologramManager, StatsManager statsManager)
@@ -40,6 +41,7 @@ public class TreasureManager extends MiniPlugin
_inventoryManager = inventoryManager;
_blockRestore = blockRestore;
_hologramManager = hologramManager;
+ _statsManager = statsManager;
_rewardManager = new RewardManager(clientManager, donationManager, _inventoryManager, petManager, statsManager,
100, 250,
500, 1000,
@@ -121,6 +123,11 @@ public class TreasureManager extends MiniPlugin
}
}
+ public void addOpenStat(Player player, TreasureType treasureType)
+ {
+ _statsManager.incrementStat(player, "Global.Treasure." + treasureType.getStatName(), 1);
+ }
+
public Reward[] getRewards(Player player, RewardType rewardType)
{
return _rewardManager.getRewards(player, rewardType);
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java
index 861f47a91..1d6a5a399 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java
@@ -7,22 +7,24 @@ import mineplex.core.reward.RewardType;
public enum TreasureType
{
- OLD(C.cYellow + "Old Chest", "Old Chest", RewardType.OldChest, Material.CHEST, TreasureStyle.OLD),
+ OLD(C.cYellow + "Old Chest", "Old Chest", "Old", RewardType.OldChest, Material.CHEST, TreasureStyle.OLD),
- ANCIENT(C.cGold + "Ancient Chest", "Ancient Chest", RewardType.AncientChest, Material.TRAPPED_CHEST, TreasureStyle.ANCIENT),
+ ANCIENT(C.cGold + "Ancient Chest", "Ancient Chest", "Ancient", RewardType.AncientChest, Material.TRAPPED_CHEST, TreasureStyle.ANCIENT),
- MYTHICAL(C.cRed + "Mythical Chest", "Mythical Chest", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.MYTHICAL);
+ MYTHICAL(C.cRed + "Mythical Chest", "Mythical Chest", "Mythical", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.MYTHICAL);
private final String _name;
private final RewardType _rewardType;
private final Material _material;
private final TreasureStyle _treasureStyle;
private final String _itemName;
+ private final String _statName;
- TreasureType(String name, String itemName, RewardType rewardType, Material material, TreasureStyle treasureStyle)
+ TreasureType(String name, String itemName, String statName, RewardType rewardType, Material material, TreasureStyle treasureStyle)
{
_name = name;
_itemName = itemName;
+ _statName = statName;
_rewardType = rewardType;
_material = material;
_treasureStyle = treasureStyle;
@@ -52,4 +54,9 @@ public enum TreasureType
{
return _itemName;
}
+
+ public String getStatName()
+ {
+ return _statName;
+ }
}
diff --git a/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java b/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java
index 0c37445b6..d256a560a 100644
--- a/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java
+++ b/Plugins/Mineplex.EnjinTranslator/src/mineplex/enjinTranslator/Enjin.java
@@ -195,7 +195,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
}
else
{
- _commandQueue.add(new QueuedCommand(sender, command, label, args));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, args));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " gems. Queuing for run later.");
}
}
@@ -215,7 +215,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
}
else
{
- _commandQueue.add(new QueuedCommand(sender, command, label, args));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, args));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " coins. Queuing for run later.");
}
}
@@ -244,7 +244,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
else
{
// Add arg so we don't add back to windows api call
- _commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " Treasure Keys. Queuing for run later.");
}
}
@@ -267,7 +267,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
else
{
// Add arg so we don't add back to windows api call
- _commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " Treasure Keys. Queuing for run later.");
}
}
@@ -275,7 +275,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
}
else
{
- _commandQueue.add(new QueuedCommand(sender, command, label, args));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, args));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " Treasure Keys. Queuing for run later.");
}
}
@@ -297,7 +297,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
else
{
// Add arg so we don't add back to windows api call
- _commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " Treasure Chests. Queuing for run later.");
}
}
@@ -318,7 +318,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
else
{
// Add arg so we don't add back to windows api call
- _commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " Treasure Chests. Queuing for run later.");
}
}
@@ -336,7 +336,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
{
public void run()
{
- if (_clientManager.Get(name).GetRank() == Rank.ALL || !_clientManager.Get(name).GetRank().Has(rank) || _clientManager.Get(name).GetRank() == rank)
+ if (rank == Rank.ALL || _clientManager.Get(name).GetRank() == Rank.ALL || !_clientManager.Get(name).GetRank().has(rank) || _clientManager.Get(name).GetRank() == rank)
{
_clientManager.SaveRank(name, playerUUID, rank, perm);
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + rank + " " + (perm ? "permanently." : "for 1 month."));
@@ -376,7 +376,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
else
{
// Add arg so we don't add back to windows api call
- _commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, new String[] { args[0], args[1], args[2], "noaccountchange" }));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + packageName + ". Queuing for run later.");
}
}
@@ -384,7 +384,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
}
else
{
- _commandQueue.add(new QueuedCommand(sender, command, label, args));
+ //_commandQueue.add(new QueuedCommand(sender, command, label, args));
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " Treasure Keys. Queuing for run later.");
}
}
diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java
index 728c852ad..446ba2d35 100644
--- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java
+++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java
@@ -104,6 +104,7 @@ public class Clans extends JavaPlugin
BlockRestore blockRestore = new BlockRestore(this);
IgnoreManager ignoreManager = new IgnoreManager(this, _clientManager, preferenceManager, portal);
+
StatsManager statsManager = new StatsManager(this, _clientManager);
AchievementManager achievementManager = new AchievementManager(statsManager, _clientManager, _donationManager);
Chat chat = new Chat(this, _clientManager, preferenceManager, achievementManager, serverStatusManager.getCurrentServerName());
diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java
index d96093e84..df289de04 100644
--- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java
+++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/ClansManager.java
@@ -782,7 +782,7 @@ public class ClansManager extends MiniClientPlugin implements IRelat
public void onJoin(PlayerLoginEvent event)
{
Rank rank = _clientManager.Get(event.getPlayer()).GetRank();
- if (!rank.Has(Rank.MEDIA) && !event.getPlayer().isWhitelisted())
+ if (!rank.has(Rank.MEDIA) && !event.getPlayer().isWhitelisted())
{
event.setResult(PlayerLoginEvent.Result.KICK_OTHER);
// event.setKickMessage("This server is whitelisted!");
diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/map/ItemMapManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/map/ItemMapManager.java
index c3b22e419..f125b6eb9 100644
--- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/map/ItemMapManager.java
+++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/map/ItemMapManager.java
@@ -82,7 +82,7 @@ public class ItemMapManager extends MiniPlugin
public ItemMapManager(ClansManager clansManager, WorldEventManager eventManager)
{
super("ItemMapManager", clansManager.getPlugin());
-
+
_clansUtility = clansManager.getClanUtility();
_eventManager = eventManager;
diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/scoreboard/ClansScoreboardManager.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/scoreboard/ClansScoreboardManager.java
index 84453b58d..c6b9e4305 100644
--- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/scoreboard/ClansScoreboardManager.java
+++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/clans/scoreboard/ClansScoreboardManager.java
@@ -74,7 +74,7 @@ public class ClansScoreboardManager extends ScoreboardManager
{
refresh(player);
TablistFix.refreshForPlayer(player);
- }
+ }
}
public void refresh(Player player)
diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/fields/commands/FieldBlockCommand.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/fields/commands/FieldBlockCommand.java
index e7cebc87e..9c55bf6d1 100644
--- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/fields/commands/FieldBlockCommand.java
+++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/fields/commands/FieldBlockCommand.java
@@ -19,7 +19,7 @@ public class FieldBlockCommand extends CommandBase
@Override
public void Execute(Player caller, String[] args)
{
- if (args == null || args[0].equalsIgnoreCase("help"))
+ if (args.length == 0 || args[0].equalsIgnoreCase("help"))
{
Plugin.help(caller);
}
diff --git a/Plugins/Mineplex.Hub/.classpath b/Plugins/Mineplex.Hub/.classpath
index baebf1394..92e1e93d4 100644
--- a/Plugins/Mineplex.Hub/.classpath
+++ b/Plugins/Mineplex.Hub/.classpath
@@ -6,12 +6,12 @@
-
+
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java
index eba17a96a..584d5139c 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java
@@ -126,7 +126,7 @@ public class Hub extends JavaPlugin implements IRelation
PartyManager partyManager = new PartyManager(this, portal, clientManager, preferenceManager);
PersonalServerManager personalServerManager = new PersonalServerManager(this, clientManager);
- HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager, personalServerManager, packetHandler);
+ HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager, personalServerManager, packetHandler, punish);
QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this, clientManager), partyManager);
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
index 8d58d26b1..72e575a1a 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
@@ -47,6 +47,7 @@ import mineplex.core.achievement.AchievementManager;
import mineplex.core.aprilfools.AprilFoolsManager;
import mineplex.core.benefit.BenefitManager;
import mineplex.core.blockrestore.BlockRestore;
+import mineplex.core.botspam.BotSpamManager;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
@@ -80,6 +81,7 @@ import mineplex.core.pet.PetManager;
import mineplex.core.portal.Portal;
import mineplex.core.preferences.PreferencesManager;
import mineplex.core.projectile.ProjectileManager;
+import mineplex.core.punish.Punish;
import mineplex.core.reward.RewardManager;
import mineplex.core.stats.StatsManager;
import mineplex.core.task.TaskManager;
@@ -157,7 +159,7 @@ public class HubManager extends MiniClientPlugin
//Admin
private boolean _gadgetsEnabled = true;
- public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler)
+ public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler, Punish punish)
{
super("Hub Manager", plugin);
@@ -211,6 +213,7 @@ public class HubManager extends MiniClientPlugin
_packetHandler = packetHandler;
new NotificationManager(getPlugin(), clientManager);
+ new BotSpamManager(plugin, clientManager, punish);
((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true;
@@ -366,7 +369,7 @@ public class HubManager extends MiniClientPlugin
// Reserved Slot Check
if (Bukkit.getOnlinePlayers().size() - Bukkit.getServer().getMaxPlayers() >= 20)
{
- if (!client.GetRank().Has(Rank.ULTRA))
+ if (!client.GetRank().has(Rank.ULTRA))
{
Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), new Runnable()
{
@@ -389,7 +392,7 @@ public class HubManager extends MiniClientPlugin
// Give developers operator on their servers
boolean testServer = _plugin.getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing");
- if (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.OWNER) || (testServer && (_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.DEVELOPER) || _clientManager.Get(event.getPlayer()).GetRank() == Rank.JNR_DEV)))
+ if (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.OWNER) || (testServer && (_clientManager.Get(event.getPlayer()).GetRank().has(Rank.DEVELOPER) || _clientManager.Get(event.getPlayer()).GetRank() == Rank.JNR_DEV)))
event.getPlayer().setOp(true);
else
event.getPlayer().setOp(false);
@@ -448,7 +451,7 @@ public class HubManager extends MiniClientPlugin
for (Rank rank : Rank.values())
{
if (rank != Rank.ALL)
- board.registerNewTeam(rank.Name).setPrefix(rank.GetTag(true, true) + ChatColor.RESET + " ");
+ board.registerNewTeam(rank.Name).setPrefix(rank.getTag(true, true) + ChatColor.RESET + " ");
else
board.registerNewTeam(rank.Name).setPrefix("");
}
@@ -461,12 +464,12 @@ public class HubManager extends MiniClientPlugin
String rankName = _clientManager.Get(player).GetRank().Name;
String otherRankName = _clientManager.Get(otherPlayer).GetRank().Name;
- if (!_clientManager.Get(player).GetRank().Has(Rank.ULTRA) && _donationManager.Get(player.getName()).OwnsUltraPackage())
+ if (!_clientManager.Get(player).GetRank().has(Rank.ULTRA) && _donationManager.Get(player.getName()).OwnsUltraPackage())
{
rankName = Rank.ULTRA.Name;
}
- if (!_clientManager.Get(otherPlayer).GetRank().Has(Rank.ULTRA) && _donationManager.Get(otherPlayer.getName()).OwnsUltraPackage())
+ if (!_clientManager.Get(otherPlayer).GetRank().has(Rank.ULTRA) && _donationManager.Get(otherPlayer.getName()).OwnsUltraPackage())
{
otherRankName = Rank.ULTRA.Name;
}
@@ -499,7 +502,7 @@ public class HubManager extends MiniClientPlugin
public void playerPrivateMessage(PrivateMessageEvent event)
{
//Dont Let PM Near Spawn!
- if (UtilMath.offset2d(GetSpawn(), event.getSender().getLocation()) == 0 && !_clientManager.Get(event.getSender()).GetRank().Has(Rank.HELPER))
+ if (UtilMath.offset2d(GetSpawn(), event.getSender().getLocation()) == 0 && !_clientManager.Get(event.getSender()).GetRank().has(Rank.HELPER))
{
UtilPlayer.message(event.getSender(), F.main("Chat", "You must leave spawn before you can Private Message!"));
event.setCancelled(true);
@@ -513,7 +516,7 @@ public class HubManager extends MiniClientPlugin
return;
//Dont Let Chat Near Spawn!
- if (UtilMath.offset2d(GetSpawn(), event.getPlayer().getLocation()) == 0 && !_clientManager.Get(event.getPlayer()).GetRank().Has(Rank.HELPER))
+ if (UtilMath.offset2d(GetSpawn(), event.getPlayer().getLocation()) == 0 && !_clientManager.Get(event.getPlayer()).GetRank().has(Rank.HELPER))
{
UtilPlayer.message(event.getPlayer(), F.main("Chat", "You must leave spawn before you can chat!"));
event.setCancelled(true);
@@ -540,10 +543,10 @@ public class HubManager extends MiniClientPlugin
//Rank Prefix
String rankStr = "";
if (rank != Rank.ALL)
- rankStr = rank.GetTag(true, true) + " ";
+ rankStr = rank.getTag(true, true) + " ";
- if (ownsUltra && !rank.Has(Rank.ULTRA))
- rankStr = Rank.ULTRA.GetTag(true, true) + " ";
+ if (ownsUltra && !rank.has(Rank.ULTRA))
+ rankStr = Rank.ULTRA.getTag(true, true) + " ";
//Party Chat
if (event.getMessage().charAt(0) == '@')
@@ -737,7 +740,7 @@ public class HubManager extends MiniClientPlugin
//Display Rank
obj.getScore(C.cGold + C.Bold + "Rank").setScore(line--);
- if (GetClients().Get(player).GetRank().Has(Rank.ULTRA))
+ if (GetClients().Get(player).GetRank().has(Rank.ULTRA))
obj.getScore(GetClients().Get(player).GetRank().Name).setScore(line--);
else if (GetDonation().Get(player.getName()).OwnsUnknownPackage("SuperSmashMobs ULTRA") ||
GetDonation().Get(player.getName()).OwnsUnknownPackage("Survival Games ULTRA") ||
@@ -866,7 +869,7 @@ public class HubManager extends MiniClientPlugin
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 +909,7 @@ public class HubManager extends MiniClientPlugin
@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);
}
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java
index 0402366e7..a7adf15a6 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java
@@ -49,307 +49,307 @@ import com.mysql.jdbc.BalanceStrategy;
public class DisguiseCommand extends CommandBase implements Listener
{
- private NautHashMap _disguisedPlayers = new NautHashMap<>();
- private NautHashMap _disguisedPlayersNames = new NautHashMap<>();
- private NautHashMap _disguisedPlayerDisguises = new NautHashMap<>();
+ private NautHashMap _disguisedPlayers = new NautHashMap<>();
+ private NautHashMap _disguisedPlayersNames = new NautHashMap<>();
+ private NautHashMap _disguisedPlayerDisguises = new NautHashMap<>();
- public DisguiseCommand(HubManager plugin)
- {
- super(plugin, Rank.JNR_DEV, new Rank[]
- {
- Rank.YOUTUBE, Rank.TWITCH }, "disguise");
+ public DisguiseCommand(HubManager plugin)
+ {
+ super(plugin, Rank.JNR_DEV, new Rank[]
+ {
+ Rank.YOUTUBE, Rank.TWITCH }, "disguise");
plugin.getPluginManager().registerEvents(this, Plugin.getPlugin());
new NCPDataManFix();
- }
+ }
- @Override
- public void Execute(final Player caller, final String[] args)
- {
- if(args == null)
+ @Override
+ public void Execute(final Player caller, final String[] args)
{
- if(!Plugin.GetDisguise().isDisguised(caller))
- {
- UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
- return;
- }
- try
- {
- _disguisedPlayers.remove(caller);
- _disguisedPlayerDisguises.remove(caller);
- Plugin.GetDisguise().undisguise(caller);
- String playerName = _disguisedPlayersNames.get(caller);
-
- CoreClient client = Plugin.GetClients().Get(caller);
- client.setDisguisedRank(null);
- client.setDisguisedAs(null);
- client.setDisguised(false);
-
- changeName(caller, playerName);
-
- for(Player other : UtilServer.getPlayers())
+ if(args == null || args.length == 0)
{
- for(Team team : other.getScoreboard().getTeams())
- {
- if(team.hasPlayer(caller))
+ if(!Plugin.GetDisguise().isDisguised(caller))
{
- team.removePlayer(caller);
+ UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
+ return;
}
- }
- other.getScoreboard().getTeam(Plugin.GetClients().Get(caller).GetRank().Name).addPlayer(caller);
- }
+ try
+ {
+ _disguisedPlayers.remove(caller);
+ _disguisedPlayerDisguises.remove(caller);
+ Plugin.GetDisguise().undisguise(caller);
+ String playerName = _disguisedPlayersNames.get(caller);
- UtilPlayer.message(caller, C.cRed + C.Bold + "You are no longer disguised!");
- return;
- } catch(Exception ex)
- {
- ex.printStackTrace();
- }
- }
- if(args != null && args.length > 1)
- {
- UtilPlayer.message(caller, C.cRed + C.Bold + "/disguise ");
- return;
- }
+ CoreClient client = Plugin.GetClients().Get(caller);
+ client.setDisguisedRank(null);
+ client.setDisguisedAs(null);
+ client.setDisguised(false);
- Bukkit.getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable()
- {
- @Override
- public void run()
- {
- if(Plugin.GetDisguise().isDisguised(caller))
- {
- UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
- return;
+ changeName(caller, playerName);
+
+ for(Player other : UtilServer.getPlayers())
+ {
+ for(Team team : other.getScoreboard().getTeams())
+ {
+ if(team.hasPlayer(caller))
+ {
+ team.removePlayer(caller);
+ }
+ }
+ other.getScoreboard().getTeam(Plugin.GetClients().Get(caller).GetRank().Name).addPlayer(caller);
+ }
+
+ UtilPlayer.message(caller, C.cRed + C.Bold + "You are no longer disguised!");
+ return;
+ } catch(Exception ex)
+ {
+ ex.printStackTrace();
+ }
}
- for(Player other : UtilServer.getPlayers())
+ if(args != null && args.length > 1)
{
- if(other.getName().equalsIgnoreCase(args[0]))
- {
- UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
+ UtilPlayer.message(caller, C.cRed + C.Bold + "/disguise ");
return;
- }
- }
- if(_disguisedPlayersNames.containsValue(args[0]))
- {
- UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
- return;
- }
- if(args[0].length() > 16)
- {
- UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
- return;
}
+ Bukkit.getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ if(Plugin.GetDisguise().isDisguised(caller))
+ {
+ UtilPlayer.message(caller, C.cRed + C.Bold + "please use /disguise first");
+ return;
+ }
+ for(Player other : UtilServer.getPlayers())
+ {
+ if(other.getName().equalsIgnoreCase(args[0]))
+ {
+ UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
+ return;
+ }
+ }
+ if(_disguisedPlayersNames.containsValue(args[0]))
+ {
+ UtilPlayer.message(caller, C.cRed + C.Bold + "this name is already in use!");
+ return;
+ }
+ if(args[0].length() > 16)
+ {
+ UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
+ return;
+ }
+
+ try
+ {
+ CoreClient client = Plugin.GetClients().Get(caller);
+ UUID uuid = UUIDFetcher.getUUIDOf(args[0]);
+ GameProfile profile = null;
+ try
+ {
+ profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
+ } catch(Exception e)
+ {
+ uuid = UUIDFetcher.getUUIDOf("Alex");
+ profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
+ }
+
+ Rank otherRank = Rank.ALL;
+ try
+ {
+ CoreClient other = new CoreClient(args[0]);
+ Plugin.GetClients().LoadClient(other, uuid, caller.getAddress().getAddress().getAddress().toString());
+ otherRank = other.GetRank();
+ } catch(NullPointerException exception)
+ {}
+ if(otherRank.has(Rank.TWITCH))
+ {
+ UtilPlayer.message(caller, C.cRed + C.Bold + "You can't disguise as staff!");
+ return;
+ }
+ _disguisedPlayers.put(caller, profile);
+ _disguisedPlayersNames.put(caller, caller.getName());
+ client.setDisguisedRank(otherRank);
+ client.setDisguised(true);
+
+ client.setDisguisedAs(args[0]);
+
+ changeName(caller, args[0]);
+
+ Plugin.GetGadget().RemoveItem(caller);
+
+ UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]);
+ } catch(Exception e)
+ {
+ e.printStackTrace();
+ UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
+ return;
+ }
+ }
+ });
+ }
+
+ @EventHandler
+ public void updateDisguises(UpdateEvent event)
+ {
+ if(event.getType() != UpdateType.FASTEST)
+ return;
+
+ for(final Player player : UtilServer.getPlayers())
+ {
+ if(!_disguisedPlayers.containsKey(player))
+ continue;
+
+ for(Player other : UtilServer.getPlayers())
+ {
+ try
+ {
+ for(Team team : other.getScoreboard().getTeams())
+ {
+ if(team.hasPlayer(player))
+ {
+ team.removePlayer(player);
+ }
+ }
+ other.getScoreboard().getTeam(Plugin.GetClients().Get(player).getDisguisedRank().Name).addPlayer(player);
+
+ } catch(NullPointerException exp)
+ {}
+ }
+
+ if(Plugin.GetDisguise().isDisguised(player))
+ continue;
+
+ DisguisePlayer playerDisguise = new DisguisePlayer(player, _disguisedPlayers.get(player));
+ _disguisedPlayerDisguises.put(player, playerDisguise);
+ Plugin.GetDisguise().disguise(playerDisguise);
+ }
+ }
+
+ public void changeName(Player player, String changedName)
+ {
try
{
- CoreClient client = Plugin.GetClients().Get(caller);
- UUID uuid = UUIDFetcher.getUUIDOf(args[0]);
- GameProfile profile = null;
- try
- {
- profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
- } catch(Exception e)
- {
- uuid = UUIDFetcher.getUUIDOf("Alex");
- profile = new ProfileLoader(uuid.toString(), args[0]).loadProfile();
- }
+ Field name = GameProfile.class.getDeclaredField("name");
+ Field declaredProfile = EntityHuman.class.getDeclaredField("i");
+ declaredProfile.setAccessible(true);
+ GameProfile gameProfile = (GameProfile) declaredProfile.get(((CraftHumanEntity) ((CraftPlayer) player)).getHandle());
- Rank otherRank = Rank.ALL;
- try
- {
- CoreClient other = new CoreClient(args[0]);
- Plugin.GetClients().LoadClient(other, uuid, caller.getAddress().getAddress().getAddress().toString());
- otherRank = other.GetRank();
- } catch(NullPointerException exception)
- {}
- if(otherRank.Has(Rank.TWITCH))
- {
- UtilPlayer.message(caller, C.cRed + C.Bold + "You can't disguise as staff!");
- return;
- }
- _disguisedPlayers.put(caller, profile);
- _disguisedPlayersNames.put(caller, caller.getName());
- client.setDisguisedRank(otherRank);
- client.setDisguised(true);
-
- client.setDisguisedAs(args[0]);
-
- changeName(caller, args[0]);
-
- Plugin.GetGadget().RemoveItem(caller);
-
- UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]);
- } catch(Exception e)
+ name.setAccessible(true);
+ name.set(gameProfile, changedName);
+ name.setAccessible(false);
+ } catch(Exception ex)
{
- e.printStackTrace();
- UtilPlayer.message(caller, C.cRed + C.Bold + "Invalid Disguise Name: " + ChatColor.RESET + args[0]);
- return;
+ ex.printStackTrace();
}
- }
- });
- }
-
- @EventHandler
- public void updateDisguises(UpdateEvent event)
- {
- if(event.getType() != UpdateType.FASTEST)
- return;
-
- for(final Player player : UtilServer.getPlayers())
- {
- if(!_disguisedPlayers.containsKey(player))
- continue;
-
- for(Player other : UtilServer.getPlayers())
- {
- try
- {
- for(Team team : other.getScoreboard().getTeams())
- {
- if(team.hasPlayer(player))
- {
- team.removePlayer(player);
- }
- }
- other.getScoreboard().getTeam(Plugin.GetClients().Get(player).getDisguisedRank().Name).addPlayer(player);
-
- } catch(NullPointerException exp)
- {}
- }
-
- if(Plugin.GetDisguise().isDisguised(player))
- continue;
-
- DisguisePlayer playerDisguise = new DisguisePlayer(player, _disguisedPlayers.get(player));
- _disguisedPlayerDisguises.put(player, playerDisguise);
- Plugin.GetDisguise().disguise(playerDisguise);
}
- }
- public void changeName(Player player, String changedName)
- {
- try
+ @EventHandler(priority = EventPriority.HIGHEST)
+ public void Quit(PlayerQuitEvent event)
{
- Field name = GameProfile.class.getDeclaredField("name");
- Field declaredProfile = EntityHuman.class.getDeclaredField("i");
- declaredProfile.setAccessible(true);
- GameProfile gameProfile = (GameProfile) declaredProfile.get(((CraftHumanEntity) ((CraftPlayer) player)).getHandle());
-
- name.setAccessible(true);
- name.set(gameProfile, changedName);
- name.setAccessible(false);
- } catch(Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void Quit(PlayerQuitEvent event)
- {
- Player player = event.getPlayer();
-
- if(_disguisedPlayers.containsKey(player))
- {
- try
- {
- _disguisedPlayers.remove(player);
- _disguisedPlayerDisguises.remove(player);
- Plugin.GetDisguise().undisguise(player);
- String playerName = _disguisedPlayersNames.get(player);
- _disguisedPlayersNames.remove(player);
-
- CoreClient client = Plugin.GetClients().Get(player);
- client.setDisguisedRank(null);
- client.setDisguisedAs(null);
- client.setDisguised(false);
-
- changeName(player, playerName);
- } catch(Exception ex)
- {
- ex.printStackTrace();
- }
- }
- }
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void Join(PlayerLoginEvent event)
- {
- for(Player player : _disguisedPlayers.keySet())
- {
- if(player.getName().equalsIgnoreCase(event.getPlayer().getName()))
- {
- event.disallow(Result.KICK_OTHER, "There is already the same account playing. this probably happened because of /disguise");
- }
- }
- }
-
- @EventHandler
- public void gadget(GadgetActivateEvent event)
- {
- if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph)
- return;
-
- if(_disguisedPlayers.containsKey(event.getPlayer()))
- {
- event.setCancelled(true);
- }
- }
-
- @EventHandler
- public void chest(TreasureStartEvent event)
- {
- if(_disguisedPlayers.containsKey(event.getPlayer()))
- {
- UtilPlayer.message(event.getPlayer(), F.main("Disguise", "You cant open Treasure Chests while you are disguised!"));
- event.setCancelled(true);
- }
- }
-
- @EventHandler
- public void onPlayerSneak(PlayerToggleSneakEvent event)
- {
- Player player = event.getPlayer();
-
- if(_disguisedPlayers.containsKey(player))
- {
- DisguisePlayer dp = _disguisedPlayerDisguises.get(player);
-
- dp.setSneaking(!dp.getSneaking());
- }
- }
-
- @EventHandler(priority = EventPriority.LOWEST)
- public void onDPlayerChat(AsyncPlayerChatEvent event)
- {
- if(_disguisedPlayers.containsKey(event.getPlayer()))
- {
- event.setFormat(" *" + event.getMessage());
- }
- }
-
- @EventHandler
- public void on(PlayerInteractEvent event)
- {
- if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
- {
- if(_disguisedPlayers.containsKey(event.getPlayer()))
- {
-
Player player = event.getPlayer();
- PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
- packet.a = player.getEntityId();
-
- for(Player p : Bukkit.getOnlinePlayers())
+ if(_disguisedPlayers.containsKey(player))
{
- if(p != player)
- {
- Plugin.getPacketHandler().getPacketVerifier((Player) p).bypassProcess(packet);
- }
+ try
+ {
+ _disguisedPlayers.remove(player);
+ _disguisedPlayerDisguises.remove(player);
+ Plugin.GetDisguise().undisguise(player);
+ String playerName = _disguisedPlayersNames.get(player);
+ _disguisedPlayersNames.remove(player);
+
+ CoreClient client = Plugin.GetClients().Get(player);
+ client.setDisguisedRank(null);
+ client.setDisguisedAs(null);
+ client.setDisguised(false);
+
+ changeName(player, playerName);
+ } catch(Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST)
+ public void Join(PlayerLoginEvent event)
+ {
+ for(Player player : _disguisedPlayers.keySet())
+ {
+ if(player.getName().equalsIgnoreCase(event.getPlayer().getName()))
+ {
+ event.disallow(Result.KICK_OTHER, "There is already the same account playing. this probably happened because of /disguise");
+ }
+ }
+ }
+
+ @EventHandler
+ public void gadget(GadgetActivateEvent event)
+ {
+ if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph)
+ return;
+
+ if(_disguisedPlayers.containsKey(event.getPlayer()))
+ {
+ event.setCancelled(true);
+ }
+ }
+
+ @EventHandler
+ public void chest(TreasureStartEvent event)
+ {
+ if(_disguisedPlayers.containsKey(event.getPlayer()))
+ {
+ UtilPlayer.message(event.getPlayer(), F.main("Disguise", "You cant open Treasure Chests while you are disguised!"));
+ event.setCancelled(true);
+ }
+ }
+
+ @EventHandler
+ public void onPlayerSneak(PlayerToggleSneakEvent event)
+ {
+ Player player = event.getPlayer();
+
+ if(_disguisedPlayers.containsKey(player))
+ {
+ DisguisePlayer dp = _disguisedPlayerDisguises.get(player);
+
+ dp.setSneaking(!dp.getSneaking());
+ }
+ }
+
+ @EventHandler(priority = EventPriority.LOWEST)
+ public void onDPlayerChat(AsyncPlayerChatEvent event)
+ {
+ if(_disguisedPlayers.containsKey(event.getPlayer()))
+ {
+ event.setFormat(" *" + event.getMessage());
+ }
+ }
+
+ @EventHandler
+ public void on(PlayerInteractEvent event)
+ {
+ if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK)
+ {
+ if(_disguisedPlayers.containsKey(event.getPlayer()))
+ {
+
+ Player player = event.getPlayer();
+
+ PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
+ packet.a = player.getEntityId();
+
+ for(Player p : Bukkit.getOnlinePlayers())
+ {
+ if(p != player)
+ {
+ Plugin.getPacketHandler().getPacketVerifier((Player) p).bypassProcess(packet);
+ }
+ }
+ }
}
- }
}
- }
}
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ForcefieldManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ForcefieldManager.java
index 07caf2363..c52990ac1 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ForcefieldManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ForcefieldManager.java
@@ -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())
{
@@ -56,7 +56,7 @@ public class ForcefieldManager extends MiniPlugin
if (UtilMath.offset(other, player) > range)
continue;
- if (Manager.GetClients().Get(other).GetRank().Has(Rank.ADMIN) || Manager.GetClients().Get(other).GetRank() == Rank.JNR_DEV)
+ if (Manager.GetClients().Get(other).GetRank().has(Rank.ADMIN) || Manager.GetClients().Get(other).GetRank() == Rank.JNR_DEV)
continue;
if (Recharge.Instance.use(other, "Forcefield Bump", 500, false, false))
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java
index 76c1b72d0..2b4b198d3 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java
@@ -408,7 +408,7 @@ public class ParkourManager extends MiniPlugin
else
{
_taskManager.Get(player).TasksCompleted.remove(_taskManager.getTaskId(fData.Name));
- UtilPlayer.message(player, F.main("Parkour", "There as an error giving " + F.elem(C.cGreen + fData.Gems + " gems to you. Please click the NPC again.") + "."));
+ UtilPlayer.message(player, F.main("Parkour", "There was an error giving " + F.elem(C.cGreen + fData.Gems + " Gems to you. Please click the NPC again.") + "."));
}
}
}, "Parkour " + fData.Name, player.getName(), player.getUniqueId(), fData.Gems);
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java
index 3fde170ec..1d55d9f03 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java
@@ -10,6 +10,7 @@ import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Bat;
import org.bukkit.entity.Entity;
+import org.bukkit.entity.Firework;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Slime;
@@ -82,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;
@@ -175,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,
@@ -212,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();
+ }
}
}
}
@@ -238,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;
}
@@ -263,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;
@@ -358,7 +373,7 @@ public class SoccerManager extends MiniPlugin
if (inPlayerArena(ent))
{
- if (ent instanceof Bat || ent instanceof WitherSkull || ent instanceof TNTPrimed)
+ if (ent instanceof Bat || ent instanceof WitherSkull || ent instanceof TNTPrimed || ent instanceof Firework)
{
ent.remove();
continue;
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java
index ed43ae6d2..2f8a774d4 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java
@@ -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
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java
index 4ef748120..1644f91ee 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java
@@ -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;
@@ -162,6 +164,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)
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java
index 7da629370..9ad3a9142 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java
@@ -1,17 +1,11 @@
package mineplex.hub.server;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.Random;
import java.util.Set;
@@ -193,7 +187,10 @@ public class ServerManager extends MiniPlugin
if (serverName != null)
{
- List serverList = new ArrayList(getServerList(serverName));
+ List serverList = new ArrayList();
+
+ if (hasServerNpc(serverName))
+ serverList.addAll(getServerList(serverName));
int slots = 1;
@@ -719,6 +716,9 @@ public class ServerManager extends MiniPlugin
System.out.println("ServerManager - Error parsing servergroups : " + e.getMessage());
}
+// AddServerNpc("Event Servers", "EVENT");
+// AddServerNpc("Mineplex Player Servers", "MPS");
+
ServerGroup eventGroup = new ServerGroup("Event", "Event Servers", "EVENT");
ServerGroup mpsGroup = new ServerGroup("MPS", "Mineplex Player Servers", "MPS");
@@ -745,7 +745,7 @@ public class ServerManager extends MiniPlugin
if (partyPlayer == null)
continue;
- if (_clientManager.Get(partyPlayer).GetRank().Has(Rank.ULTRA) || _donationManager.Get(partyPlayer.getName()).OwnsUnknownPackage(serverType + " ULTRA"))
+ if (_clientManager.Get(partyPlayer).GetRank().has(Rank.ULTRA) || _donationManager.Get(partyPlayer.getName()).OwnsUnknownPackage(serverType + " ULTRA"))
continue;
slots++;
@@ -754,7 +754,7 @@ public class ServerManager extends MiniPlugin
}
else
{
- if (!_clientManager.Get(player).GetRank().Has(Rank.ULTRA) && !_donationManager.Get(player.getName()).OwnsUnknownPackage(serverType + " ULTRA"))
+ if (!_clientManager.Get(player).GetRank().has(Rank.ULTRA) && !_donationManager.Get(player.getName()).OwnsUnknownPackage(serverType + " ULTRA"))
slots++;
}
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/LobbyMenu.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/LobbyMenu.java
index 4e41582fa..63d49220f 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/LobbyMenu.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/LobbyMenu.java
@@ -68,7 +68,7 @@ public class LobbyMenu extends ShopPageBase implements
if (serverInfo.CurrentPlayers >= serverInfo.MaxPlayers)
{
- if (!getClient().GetRank().Has(Rank.ULTRA))
+ if (!getClient().GetRank().has(Rank.ULTRA))
lore.add(openFull);
else
lore.add(openFullUltra);
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/QuickShop.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/QuickShop.java
index 2e0d59b45..08c04b028 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/QuickShop.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/QuickShop.java
@@ -18,7 +18,7 @@ public class QuickShop extends ShopBase
@Override
protected ShopPageBase> buildPagesFor(Player player)
{
- return new ServerGameMenu(getPlugin(), this, getClientManager(), getDonationManager(), " " + ChatColor.UNDERLINE + "Quick Game Menu", player);
+ return new ServerGameMenu(getPlugin(), this, getClientManager(), getDonationManager(), "Game Menu", player);
}
public void UpdatePages()
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java
index 6f383a8b9..fbd5bf0e6 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerNpcPage.java
@@ -1,6 +1,7 @@
package mineplex.hub.server.ui;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -8,25 +9,26 @@ import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
+import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import mineplex.core.account.CoreClientManager;
-import mineplex.core.achievement.AchievementCategory;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
+import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilTime;
import mineplex.core.donation.DonationManager;
import mineplex.core.game.GameDisplay;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.shop.item.IButton;
import mineplex.core.shop.item.ShopItem;
-import mineplex.core.shop.page.ShopPageBase;
+import mineplex.core.shop.page.ShopPageInventory;
import mineplex.hub.server.ServerInfo;
import mineplex.hub.server.ServerManager;
import mineplex.hub.server.ServerSorter;
import mineplex.hub.server.ui.button.JoinServerButton;
-public class ServerNpcPage extends ShopPageBase
+public class ServerNpcPage extends ShopPageInventory implements IServerPage
{
// Shop Item Messages
private static final String MESSAGE_BETA_GET_ULTRA = ChatColor.RESET + C.Line + "Get Ultra to join Tournament servers!";
@@ -40,6 +42,9 @@ public class ServerNpcPage extends ShopPageBase
private String _serverGroupName;
private boolean _onMainPage = true;
+ private IButton[] _buttons;
+ private ItemStack[] _items;
+
public ServerNpcPage(ServerManager plugin, ServerNpcShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, String serverGroupName)
{
super(plugin, shop, clientManager, donationManager, name, player, 54);
@@ -50,12 +55,14 @@ public class ServerNpcPage extends ShopPageBase
}
@Override
- protected void buildPage()
+ protected void buildItems()
{
+ _items = new ItemStack[0];
+ _buttons = new IButton[0];
+
List serverList = new ArrayList(getPlugin().getServerList(_serverGroupName));
-
+
int slotsNeeded = 1;
-
if (serverList.size() > 0)
{
@@ -81,6 +88,7 @@ public class ServerNpcPage extends ShopPageBase
getPlugin().selectServer(player, _serverGroupName);
}
});
+
buildAvailableServerPage(serverList, slotsNeeded);
}
else
@@ -109,12 +117,12 @@ public class ServerNpcPage extends ShopPageBase
ChatColor.RESET + C.cGreen + "www.mineplex.com/shop"
}, seconds, false, false);
- addItem(22, item);
+ addItemStack(22, item);
}
private ShopItem buildShopItem(ServerInfo serverInfo, int slotsNeeded)
{
- boolean ownsUltraPackage = getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(serverInfo.ServerType + " ULTRA") || getClient().GetRank().Has(Rank.ULTRA);
+ boolean ownsUltraPackage = getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(serverInfo.ServerType + " ULTRA") || getClient().GetRank().has(Rank.ULTRA);
Material status = Material.REDSTONE_BLOCK;
List lore = new ArrayList();
@@ -201,7 +209,7 @@ public class ServerNpcPage extends ShopPageBase
boolean beta = serverList.size() > 0 && serverList.get(0).Name.contains("BETA");
boolean tournament = serverList.size() > 0 && serverList.get(0).Name.contains("T_");
boolean privateServer = serverList.size() > 0 && serverList.get(0).ServerType.equals("Player");
- boolean ownsUltraPackage = getClient().GetRank().Has(Rank.ULTRA) || (serverList.size() > 0 && getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(serverList.get(0).ServerType + " ULTRA"));
+ boolean ownsUltraPackage = getClient().GetRank().has(Rank.ULTRA) || (serverList.size() > 0 && getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(serverList.get(0).ServerType + " ULTRA"));
long portalTime = getPlugin().getMillisecondsUntilPortal(getPlayer(), beta);
if (portalTime > 0)
@@ -220,7 +228,7 @@ public class ServerNpcPage extends ShopPageBase
ChatColor.RESET + "Visit " + C.cGreen + "www.mineplex.com/shop" + C.cWhite + "!"
}, 1, false, false);
- addItem(22, item);
+ addItemStack(22, item);
return;
}
@@ -273,7 +281,7 @@ public class ServerNpcPage extends ShopPageBase
greenCount++;
if (serverInfo.MOTD.contains("Open in"))
- setItem(slot, shopItem);
+ addItemStack(slot, shopItem);
else
{
addButton(slot, shopItem, new JoinServerButton(this, getPlugin(), serverInfo, getPlayer()));
@@ -303,11 +311,39 @@ public class ServerNpcPage extends ShopPageBase
{
for (int i = greenCount + greenStartSlot; i < greenStartSlot + serversToShow; i++)
{
- setItem(i, null);
+ addItemStack(i, null);
}
}
}
+ public void addItemStack(int slot, ItemStack item)
+ {
+ if (_items.length <= slot)
+ {
+ if (item == null || item.getType() == Material.AIR)
+ {
+ return;
+ }
+
+ _items = Arrays.copyOf(_items, slot + 1);
+ _buttons = Arrays.copyOf(_buttons, slot + 1);
+ }
+
+ _items[slot] = item;
+ }
+
+ protected void addButton(int slot, ItemStack item, IButton button)
+ {
+ if (_items.length <= slot)
+ {
+ _items = Arrays.copyOf(_items, slot + 1);
+ _buttons = Arrays.copyOf(_buttons, slot + 1);
+ }
+
+ _items[slot] = item;
+ _buttons[slot] = button;
+ }
+
private ShopItem getPrivateItem(ServerInfo serverInfo)
{
String hostName = serverInfo.Name.substring(0, serverInfo.Name.indexOf('-'));
@@ -371,36 +407,50 @@ public class ServerNpcPage extends ShopPageBase
private void buildInProgressServerPage(List serverList, int slotsNeeded)
{
int slot = 9;
+
+ ArrayList inProgress = new ArrayList();
for (ServerInfo serverInfo : serverList)
{
- if (isInProgress(serverInfo) && slot < getSize())
+ if (isInProgress(serverInfo))
{
ShopItem shopItem = buildShopItem(serverInfo, slotsNeeded);
addButton(slot, shopItem, new JoinServerButton(this, getPlugin(), serverInfo, getPlayer()));
-
- slot++;
+ inProgress.add(serverInfo);
}
}
- addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
+ for (ServerInfo serverInfo : inProgress)
+ {
+ if (inProgress.size() > 45 && slot > 9 && slot % 45 == 0)
+ {
+ addBackBed(slot + 4);
+ slot += 9;
+ }
+
+ ShopItem shopItem = buildShopItem(serverInfo, slotsNeeded);
+
+ addButton(slot, shopItem, new JoinServerButton(this, serverInfo));
+
+ slot++;
+ }
+
+ addBackBed(4);
+ }
+
+ private void addBackBed(int slot)
+ {
+ addButton(slot, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]
+ {}, 1, false), new IButton()
{
@Override
public void onClick(Player player, ClickType clickType)
{
- clear();
_onMainPage = true;
+ buildPage();
}
});
-
- while (slot < getSize())
- {
- if (getItem(slot) != null)
- setItem(slot, null);
-
- slot++;
- }
}
public void Update()
@@ -409,4 +459,29 @@ public class ServerNpcPage extends ShopPageBase
buildPage();
}
+ public void SelectServer(Player player, ServerInfo serverInfo)
+ {
+ System.out.println("Selecting server :" + serverInfo.Name);
+ int slots = getPlugin().getRequiredSlots(player, serverInfo.ServerType);
+
+ if (serverInfo.getAvailableSlots() < slots && !(getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(serverInfo.ServerType + " ULTRA") || getClient().GetRank().has(Rank.ULTRA)))
+ {
+ playDenySound(player);
+ return;
+ }
+
+ getPlugin().selectServer(player, serverInfo);
+ }
+
+ @Override
+ protected IButton[] getButtons()
+ {
+ return _buttons;
+ }
+
+ @Override
+ protected ItemStack[] getItems()
+ {
+ return _items;
+ }
}
diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Class/ClientClass.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Class/ClientClass.java
index a73c2aae2..01a041467 100644
--- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Class/ClientClass.java
+++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/Class/ClientClass.java
@@ -571,7 +571,7 @@ public class ClientClass
if (skillName == null || skill == null || expectedType == null)
return false;
- if (!skillName.isEmpty() && (skill == null || skill.GetSkillType() != expectedType || (!skill.IsFree() && !_donor.OwnsUnknownPackage("Champions " + skillName) && !_client.GetRank().Has(Rank.ULTRA) && !_donor.OwnsUnknownPackage("Competitive ULTRA"))))
+ if (!skillName.isEmpty() && (skill == null || skill.GetSkillType() != expectedType || (!skill.IsFree() && !_donor.OwnsUnknownPackage("Champions " + skillName) && !_client.GetRank().has(Rank.ULTRA) && !_donor.OwnsUnknownPackage("Competitive ULTRA"))))
return false;
} catch (NullPointerException ex)
diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/ClassShopManager.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/ClassShopManager.java
index 5a333c782..b4cb1481f 100644
--- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/ClassShopManager.java
+++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/ClassShopManager.java
@@ -48,7 +48,7 @@ public class ClassShopManager extends MiniPlugin
public boolean hasAchievements(Player player)
{
- if (_clientManager.Get(player).GetRank().Has(Rank.HELPER))
+ if (_clientManager.Get(player).GetRank().has(Rank.HELPER))
return true;
return _achievementManager.hasCategory(player, new Achievement[]
diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/page/SkillPage.java b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/page/SkillPage.java
index becb04fbd..37c726d6c 100644
--- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/page/SkillPage.java
+++ b/Plugins/Mineplex.Minecraft.Game.ClassCombat/src/mineplex/minecraft/game/classcombat/shop/page/SkillPage.java
@@ -403,7 +403,7 @@ public class SkillPage extends ShopPageBase
private boolean isSkillLocked(ISkill skill)
{
- if (skill.IsFree() || getClientManager().Get(getPlayer().getName()).GetRank().Has(Rank.ULTRA) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + skill.GetName()))
+ if (skill.IsFree() || getClientManager().Get(getPlayer().getName()).GetRank().has(Rank.ULTRA) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + skill.GetName()))
return false;
return true;
@@ -411,7 +411,7 @@ public class SkillPage extends ShopPageBase
private boolean isItemLocked(Item item)
{
- if (item.isFree() || getClientManager().Get(getPlayer().getName()).GetRank().Has(Rank.ULTRA) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + item.GetName()))
+ if (item.isFree() || getClientManager().Get(getPlayer().getName()).GetRank().has(Rank.ULTRA) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + item.GetName()))
return false;
return true;
diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java
index 1e2d237f1..1cc41f938 100644
--- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java
+++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/Fire.java
@@ -4,18 +4,19 @@ import java.util.HashMap;
import java.util.HashSet;
import mineplex.core.MiniPlugin;
-import mineplex.core.recharge.Recharge;
-import mineplex.core.updater.event.UpdateEvent;
-import mineplex.core.updater.UpdateType;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath;
-import mineplex.minecraft.game.core.condition.ConditionManager;
+import mineplex.core.recharge.Recharge;
+import mineplex.core.updater.UpdateType;
+import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
+import mineplex.minecraft.game.core.condition.ConditionManager;
import mineplex.minecraft.game.core.damage.DamageManager;
import org.bukkit.Effect;
import org.bukkit.EntityEffect;
import org.bukkit.Location;
+import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
@@ -26,7 +27,6 @@ import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffectType;
-import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
public class Fire extends MiniPlugin
{
@@ -42,9 +42,9 @@ public class Fire extends MiniPlugin
_damageManager = damageManager;
}
- public void Add(Item item, LivingEntity owner, double expireTime, double delayTime, double burnTime, int damage, String skillName)
+ public void Add(Item item, LivingEntity owner, double expireTime, double delayTime, double burnTime, double d, String skillName)
{
- _fire.put(item, new FireData(owner, expireTime, delayTime, burnTime, damage, skillName));
+ _fire.put(item, new FireData(owner, expireTime, delayTime, burnTime, d, skillName));
item.setPickupDelay(0);
}
diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/FireData.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/FireData.java
index e70f5627f..a06baaa29 100644
--- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/FireData.java
+++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/fire/FireData.java
@@ -8,10 +8,10 @@ public class FireData
private long _expireTime;
private long _delayTime;
private double _burnTime;
- private int _damage;
+ private double _damage;
private String _skillName;
- public FireData(LivingEntity owner, double expireTime, double delayTime, double burnTime, int damage, String skillName)
+ public FireData(LivingEntity owner, double expireTime, double delayTime, double burnTime, double damage, String skillName)
{
_owner = owner;
_expireTime = System.currentTimeMillis() + (long)(1000 * expireTime);
@@ -31,7 +31,7 @@ public class FireData
return _burnTime;
}
- public int GetDamage()
+ public double GetDamage()
{
return _damage;
}
diff --git a/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerCache.java b/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerCache.java
index 15cffb719..cf320dbde 100644
--- a/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerCache.java
+++ b/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerCache.java
@@ -8,9 +8,19 @@ import mineplex.serverdata.servers.ServerManager;
public class PlayerCache
{
+ private static PlayerCache _instance = null;
+
private RedisDataRepository _repository;
- public PlayerCache()
+ public static PlayerCache getInstance()
+ {
+ if (_instance == null)
+ _instance = new PlayerCache();
+
+ return _instance;
+ }
+
+ private PlayerCache()
{
_repository = new RedisDataRepository(
ServerManager.getMasterConnection(),
@@ -22,12 +32,30 @@ public class PlayerCache
public void addPlayer(PlayerInfo player)
{
- _repository.addElement(player, 60 * 60 * 6); // 6 Hours
+ try
+ {
+ _repository.addElement(player, 60 * 60 * 6); // 6 Hours
+ }
+ catch (Exception exception)
+ {
+ System.out.println("Error adding player info in PlayerCache : " + exception.getMessage());
+ exception.printStackTrace();
+ }
}
public PlayerInfo getPlayer(UUID uuid)
{
- return _repository.getElement(uuid.toString());
+ try
+ {
+ return _repository.getElement(uuid.toString());
+ }
+ catch (Exception exception)
+ {
+ System.out.println("Error retrieving player info in PlayerCache : " + exception.getMessage());
+ exception.printStackTrace();
+ }
+
+ return null;
}
public void clean()
diff --git a/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerInfo.java b/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerInfo.java
index 700839ccb..3ab44b0d5 100644
--- a/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerInfo.java
+++ b/Plugins/Mineplex.PlayerCache/src/mineplex/playerCache/PlayerInfo.java
@@ -2,11 +2,13 @@ package mineplex.playerCache;
import java.util.UUID;
+import mineplex.serverdata.Utility;
import mineplex.serverdata.data.Data;
public class PlayerInfo implements Data
{
private int _id;
+ private int _accountId;
private UUID _uuid;
private String _name;
private boolean _online;
@@ -34,6 +36,11 @@ public class PlayerInfo implements Data
return _id;
}
+ public int getAccountId()
+ {
+ return _accountId;
+ }
+
public UUID getUUID()
{
return _uuid;
@@ -83,4 +90,14 @@ public class PlayerInfo implements Data
{
_version = version;
}
+
+ public void setAccountId(int accountId)
+ {
+ _accountId = accountId;
+ }
+
+ public void updateLoginTime()
+ {
+ _loginTime = Utility.currentTimeMillis();
+ }
}
diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java
index 537e25903..5258c948e 100644
--- a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java
+++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java
@@ -19,7 +19,9 @@ import com.google.gson.GsonBuilder;
*/
public class Utility
{
-
+ private static boolean _retrievedRedisTime = false;
+ private static long _millisTimeDifference;
+
// The Gson instance used to serialize/deserialize objects in JSON form.
private static Gson _gson = new GsonBuilder().create();
public static Gson getGson() { return _gson; }
@@ -77,29 +79,10 @@ public class Utility
*/
public static long currentTimeSeconds()
{
- long currentTime = 0;
- JedisPool pool = getPool(false);
- Jedis jedis = pool.getResource();
-
- try
- {
- currentTime = Long.parseLong(jedis.time().get(0));
- }
- catch (JedisConnectionException exception)
- {
- exception.printStackTrace();
- pool.returnBrokenResource(jedis);
- jedis = null;
- }
- finally
- {
- if (pool != null)
- {
- pool.returnResource(jedis);
- }
- }
-
- return currentTime;
+ if (!_retrievedRedisTime)
+ setTimeDifference();
+
+ return (System.currentTimeMillis() + _millisTimeDifference) / 1000;
}
/**
@@ -108,29 +91,10 @@ public class Utility
*/
public static long currentTimeMillis()
{
- long currentTime = 0;
- JedisPool pool = getPool(false);
- Jedis jedis = pool.getResource();
+ if (!_retrievedRedisTime)
+ setTimeDifference();
- try
- {
- currentTime = Long.parseLong(jedis.time().get(0));
- }
- catch (JedisConnectionException exception)
- {
- exception.printStackTrace();
- pool.returnBrokenResource(jedis);
- jedis = null;
- }
- finally
- {
- if (pool != null)
- {
- pool.returnResource(jedis);
- }
- }
-
- return currentTime * 1000;
+ return System.currentTimeMillis() + _millisTimeDifference;
}
/**
@@ -195,4 +159,30 @@ public class Utility
return connData.getHost() + ":" + connData.getPort();
}
+ private static void setTimeDifference()
+ {
+ long currentTime = 0;
+ JedisPool pool = getPool(false);
+ Jedis jedis = pool.getResource();
+
+ try
+ {
+ currentTime = Long.parseLong(jedis.time().get(0));
+ }
+ catch (JedisConnectionException exception)
+ {
+ exception.printStackTrace();
+ pool.returnBrokenResource(jedis);
+ jedis = null;
+ }
+ finally
+ {
+ if (pool != null)
+ {
+ pool.returnResource(jedis);
+ }
+ }
+
+ _millisTimeDifference = (currentTime * 1000) - System.currentTimeMillis();
+ }
}
diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/PlayerJoinCommand.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/PlayerJoinCommand.java
new file mode 100644
index 000000000..b41ba4555
--- /dev/null
+++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/commands/PlayerJoinCommand.java
@@ -0,0 +1,24 @@
+package mineplex.serverdata.commands;
+
+import java.util.UUID;
+
+public class PlayerJoinCommand extends ServerCommand
+{
+ private String _uuid;
+
+ public PlayerJoinCommand(UUID uuid)
+ {
+ _uuid = uuid.toString();
+ }
+
+ @Override
+ public void run()
+ {
+ // Utilitizes a callback functionality to seperate dependencies
+ }
+
+ public String getUuid()
+ {
+ return _uuid;
+ }
+}
diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/data/MinecraftServer.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/data/MinecraftServer.java
index 31adb7fe8..3b00da7c2 100644
--- a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/data/MinecraftServer.java
+++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/data/MinecraftServer.java
@@ -43,6 +43,9 @@ public class MinecraftServer
private int _port;
public int getPort() { return _port; }
+ private int _donorsOnline;
+ public int getDonorsOnline() { return _donorsOnline; }
+
private long _startUpDate;
/**
@@ -59,19 +62,20 @@ public class MinecraftServer
* @param maxRam
*/
public MinecraftServer(String name, String group, String motd, String publicAddress, int port,
- int playerCount, int maxPlayerCount, int tps, int ram, int maxRam, long startUpDate)
+ int playerCount, int maxPlayerCount, int tps, int ram, int maxRam, long startUpDate, int donorsOnline)
{
- this._name = name;
- this._group = group;
- this._motd = motd;
- this._playerCount = playerCount;
- this._maxPlayerCount = maxPlayerCount;
- this._tps = tps;
- this._ram = ram;
- this._maxRam = maxRam;
- this._publicAddress = publicAddress;
- this._port = port;
- this._startUpDate = startUpDate;
+ _name = name;
+ _group = group;
+ _motd = motd;
+ _playerCount = playerCount;
+ _maxPlayerCount = maxPlayerCount;
+ _tps = tps;
+ _ram = ram;
+ _maxRam = maxRam;
+ _publicAddress = publicAddress;
+ _port = port;
+ _donorsOnline = donorsOnline;
+ _startUpDate = startUpDate;
}
/**
diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java
index a67bbdd6d..063857fc5 100644
--- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java
+++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java
@@ -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;
@@ -44,10 +46,12 @@ public class ServerMonitor
private static Map _serverGroupMap = null;
private static List _dedicatedServers = null;
private static HashSet _deadServers = new HashSet();
+ private static HashSet _delayedKill = new HashSet();
private static HashSet _laggyServers = new HashSet();
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;
@@ -114,12 +118,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);
-
- handleUserServerGroup(_serverGroupMap.get(minecraftServer.getGroup()));
- continue;
+ 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;
+ }
}
for (DedicatedServer server : _dedicatedServers)
@@ -192,6 +199,9 @@ public class ServerMonitor
for (ServerGroup groupStatus : _serverGroups)
{
+ if (ignoreServer(groupStatus.getName()))
+ continue;
+
NautHashMap serverMap = new NautHashMap();
for (Iterator serverIterator = groupStatus.getServers().iterator(); serverIterator.hasNext();)
@@ -216,17 +226,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 onlineServers = new HashSet();
@@ -236,7 +235,7 @@ public class ServerMonitor
for (MinecraftServer minecraftServer : _serverStatuses)
{
- if (minecraftServer.getGroup().equalsIgnoreCase("Testing"))
+ if (ignoreServer(minecraftServer.getGroup()))
continue;
onlineServers.add(minecraftServer.getName());
@@ -278,7 +277,7 @@ public class ServerMonitor
for (ServerGroup serverGroup : _serverGroups)
{
- if (serverGroup.getName().equals("Testing"))
+ if (ignoreServer(serverGroup.getName()))
continue;
try
@@ -328,21 +327,35 @@ public class ServerMonitor
deadServers.addAll(_deadServers);
_deadServers.clear();
- for (MinecraftServer deadServer : _repository.getDeadServers())
+ for (final MinecraftServer deadServer : _repository.getDeadServers())
{
- if (deadServer.getUptime() <= 10 || deadServer.getGroup().equalsIgnoreCase("Testing"))
+ 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
- {
- _deadServers.add(deadServer.getName());
- log("[IMPENDING DEATH] : " + deadServer.getName() + ":" + deadServer.getPublicAddress());
+ else if (!_delayedKill.contains(deadServer.getName()))
+ {
+ 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());
}
}
}
@@ -383,20 +396,26 @@ public class ServerMonitor
// Minimum 1500 slot bufferzone
if (serverGroup.getName().equalsIgnoreCase("Lobby"))
{
+ if (_region == Region.EU)
+ {
+ requiredTotal = 10;
+ requiredJoinable = 10;
+ }
+
int availableSlots = serverGroup.getMaxPlayerCount() - serverGroup.getPlayerCount();
- if (availableSlots < 1500)
+ if (availableSlots < 1000)
{
- serversToAdd = Math.max(1, (1500 - availableSlots) / serverGroup.getMaxPlayers());
+ serversToAdd = Math.max(1, (1000 - availableSlots) / serverGroup.getMaxPlayers());
serversToAdd = Math.min(250 - totalServers, serversToAdd);
serversToKill = 0;
}
else if (serversToKill > 0)
- serversToKill = Math.min(serversToKill, (availableSlots - 1500) / 80);
+ serversToKill = Math.min(serversToKill, (availableSlots - 1000) / 80);
else if (serversToAdd == 0 && joinableServers > requiredJoinable && totalServers > requiredTotal)
{
serversToRestart = Math.min(joinableServers - requiredJoinable, joinableServers - requiredTotal);
- serversToRestart = Math.min(serversToRestart, (availableSlots - 1500) / 80);
+ serversToRestart = Math.min(serversToRestart, (availableSlots - 1000) / 80);
if (serversToRestart <= 5)
serversToRestart = 0;
@@ -428,7 +447,7 @@ public class ServerMonitor
if (joinableServers > maxUHC)
serversToKill = maxUHC - joinableServers;
}
- else if (serverGroup.getName().equalsIgnoreCase("Testing"))
+ else if (ignoreServer(serverGroup.getName()))
{
return;
}
@@ -597,6 +616,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()
+ {
+ 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()
+ {
+ 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