Remove spigot as a dependency from ServerData
This commit is contained in:
parent
cdfc19f566
commit
e82d1b5885
@ -4,6 +4,7 @@ import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import mineplex.serverdata.Region;
|
||||
import mineplex.serverdata.commands.PlayerJoinCommand;
|
||||
@ -42,7 +43,7 @@ public class PlayerTracker implements Listener
|
||||
_repository = new RedisDataRepository<PlayerStatus>(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
|
||||
Region.currentRegion(), PlayerStatus.class, "playerStatus");
|
||||
|
||||
ServerCommandManager.getInstance().initializeServer("BUNGEE ENABLE - " + System.currentTimeMillis());
|
||||
ServerCommandManager.getInstance().initializeServer("BUNGEE ENABLE - " + System.currentTimeMillis(), new Gson());
|
||||
ServerCommandManager.getInstance().registerCommandType(mineplex.serverdata.commands.PlayerJoinCommand.class, new PlayerJoinHandler(this));
|
||||
|
||||
System.out.println("Initialized PlayerTracker.");
|
||||
|
@ -1,7 +1,9 @@
|
||||
package mineplex.core.status;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -9,6 +11,19 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.server.ServerListPingEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import com.mojang.util.UUIDTypeAdapter;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.util.Callback;
|
||||
@ -26,6 +41,12 @@ import mineplex.serverdata.servers.ServerRepository;
|
||||
|
||||
public class ServerStatusManager extends MiniPlugin
|
||||
{
|
||||
private static final Gson GSON = new GsonBuilder()
|
||||
.registerTypeAdapter(GameProfile.class, new GameProfileSerializer())
|
||||
.registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer())
|
||||
.registerTypeAdapter(UUID.class, new UUIDTypeAdapter())
|
||||
.create();
|
||||
|
||||
// The default timeout (in seconds) before the ServerStatus expires.
|
||||
public final int DEFAULT_SERVER_TIMEOUT = 30;
|
||||
|
||||
@ -57,7 +78,7 @@ public class ServerStatusManager extends MiniPlugin
|
||||
|
||||
_region = plugin.getConfig().getBoolean("serverstatus.us") ? Region.US : Region.EU;
|
||||
|
||||
ServerCommandManager.getInstance().initializeServer(_name);
|
||||
ServerCommandManager.getInstance().initializeServer(_name, GSON);
|
||||
ServerCommandManager.getInstance().registerCommandType("SuicideCommand", SuicideCommand.class, new SuicideHandler(this, _name, _region));
|
||||
|
||||
_repository = ServerManager.getServerRepository(_region);
|
||||
@ -210,4 +231,51 @@ public class ServerStatusManager extends MiniPlugin
|
||||
_enabled = false;
|
||||
saveServerStatus();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static class GameProfileSerializer implements JsonSerializer<GameProfile>, JsonDeserializer<GameProfile>
|
||||
{
|
||||
private GameProfileSerializer()
|
||||
{
|
||||
}
|
||||
|
||||
public GameProfile deserialize(JsonElement var1, Type var2, JsonDeserializationContext var3) throws JsonParseException
|
||||
{
|
||||
JsonObject var4 = (JsonObject) var1;
|
||||
UUID var5 = var4.has("id") ? (UUID) var3.deserialize(var4.get("id"), UUID.class) : null;
|
||||
String var6 = var4.has("name") ? var4.getAsJsonPrimitive("name").getAsString() : null;
|
||||
GameProfile gameProfile = new GameProfile(var5, var6);
|
||||
|
||||
if (var4.has("properties"))
|
||||
{
|
||||
PropertyMap propertyMap = var3.deserialize(var4.get("properties"), PropertyMap.class);
|
||||
gameProfile.getProperties().putAll(propertyMap);
|
||||
}
|
||||
|
||||
return gameProfile;
|
||||
}
|
||||
|
||||
public JsonElement serialize(GameProfile var1, Type var2, JsonSerializationContext var3)
|
||||
{
|
||||
JsonObject var4 = new JsonObject();
|
||||
|
||||
if (var1.getId() != null)
|
||||
{
|
||||
var4.add("id", var3.serialize(var1.getId()));
|
||||
}
|
||||
|
||||
if (var1.getName() != null)
|
||||
{
|
||||
var4.addProperty("name", var1.getName());
|
||||
}
|
||||
|
||||
if (var1.getProperties() != null)
|
||||
{
|
||||
var4.add("properties", var3.serialize(var1.getProperties()));
|
||||
}
|
||||
|
||||
return var4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,10 +28,6 @@
|
||||
<groupId>redis.clients</groupId>
|
||||
<artifactId>jedis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.mineplex</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jooq</groupId>
|
||||
<artifactId>jooq</artifactId>
|
||||
|
@ -1,28 +1,15 @@
|
||||
package mineplex.serverdata;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import mineplex.serverdata.servers.ConnectionData;
|
||||
import mineplex.serverdata.servers.ServerManager;
|
||||
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
import redis.clients.jedis.JedisPoolConfig;
|
||||
import redis.clients.jedis.exceptions.JedisConnectionException;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.authlib.properties.PropertyMap;
|
||||
import com.mojang.util.UUIDTypeAdapter;
|
||||
|
||||
/**
|
||||
* Utility offers various necessary utility-based methods for use in Mineplex.ServerData.
|
||||
@ -35,11 +22,7 @@ public class Utility
|
||||
private static long _millisTimeDifference;
|
||||
|
||||
// The Gson instance used to serialize/deserialize objects in JSON form.
|
||||
private static Gson _gson = new GsonBuilder()
|
||||
.registerTypeAdapter(GameProfile.class, new GameProfileSerializer())
|
||||
.registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer())
|
||||
.registerTypeAdapter(UUID.class, new UUIDTypeAdapter())
|
||||
.create();
|
||||
private static Gson _gson = new Gson();
|
||||
public static Gson getGson() { return _gson; }
|
||||
|
||||
// map of all instantiated connection pools, distinguished by their ip:port combination
|
||||
@ -187,50 +170,4 @@ public class Utility
|
||||
|
||||
_millisTimeDifference = (currentTime * 1000) - System.currentTimeMillis();
|
||||
}
|
||||
|
||||
|
||||
private static class GameProfileSerializer implements JsonSerializer<GameProfile>, JsonDeserializer<GameProfile>
|
||||
{
|
||||
private GameProfileSerializer()
|
||||
{
|
||||
}
|
||||
|
||||
public GameProfile deserialize(JsonElement var1, Type var2, JsonDeserializationContext var3) throws JsonParseException
|
||||
{
|
||||
JsonObject var4 = (JsonObject) var1;
|
||||
UUID var5 = var4.has("id") ? (UUID) var3.deserialize(var4.get("id"), UUID.class) : null;
|
||||
String var6 = var4.has("name") ? var4.getAsJsonPrimitive("name").getAsString() : null;
|
||||
GameProfile gameProfile = new GameProfile(var5, var6);
|
||||
|
||||
if (var4.has("properties"))
|
||||
{
|
||||
PropertyMap propertyMap = var3.deserialize(var4.get("properties"), PropertyMap.class);
|
||||
gameProfile.getProperties().putAll(propertyMap);
|
||||
}
|
||||
|
||||
return gameProfile;
|
||||
}
|
||||
|
||||
public JsonElement serialize(GameProfile var1, Type var2, JsonSerializationContext var3)
|
||||
{
|
||||
JsonObject var4 = new JsonObject();
|
||||
|
||||
if (var1.getId() != null)
|
||||
{
|
||||
var4.add("id", var3.serialize(var1.getId()));
|
||||
}
|
||||
|
||||
if (var1.getName() != null)
|
||||
{
|
||||
var4.addProperty("name", var1.getName());
|
||||
}
|
||||
|
||||
if (var1.getProperties() != null)
|
||||
{
|
||||
var4.add("properties", var3.serialize(var1.getProperties()));
|
||||
}
|
||||
|
||||
return var4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,8 @@ package mineplex.serverdata.commands;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import mineplex.serverdata.Utility;
|
||||
import mineplex.serverdata.servers.ServerManager;
|
||||
import redis.clients.jedis.Jedis;
|
||||
@ -23,7 +25,13 @@ public class ServerCommandManager
|
||||
private Map<String, CommandType> _commandTypes;
|
||||
|
||||
private String _localServerName;
|
||||
public void initializeServer(String serverName) { _localServerName = serverName; }
|
||||
private Gson _gson;
|
||||
public void initializeServer(String serverName, Gson gson)
|
||||
{
|
||||
_localServerName = serverName;
|
||||
_gson = gson;
|
||||
}
|
||||
|
||||
public boolean isServerInitialized() { return _localServerName != null; }
|
||||
public String getServerName()
|
||||
{
|
||||
@ -75,7 +83,7 @@ public class ServerCommandManager
|
||||
public void run()
|
||||
{
|
||||
String commandType = serverCommand.getClass().getSimpleName();
|
||||
String serializedCommand = Utility.serialize(serverCommand);
|
||||
String serializedCommand = _gson.toJson(serverCommand);
|
||||
|
||||
try(Jedis jedis = _writePool.getResource())
|
||||
{
|
||||
@ -101,7 +109,7 @@ public class ServerCommandManager
|
||||
if (_commandTypes.containsKey(commandType))
|
||||
{
|
||||
Class<? extends ServerCommand> commandClazz = _commandTypes.get(commandType).getCommandType();
|
||||
final ServerCommand serverCommand = Utility.deserialize(serializedCommand, commandClazz);
|
||||
final ServerCommand serverCommand = _gson.fromJson(serializedCommand, commandClazz);
|
||||
|
||||
if (serverCommand.isTargetServer(_localServerName))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user