diff --git a/bukkit/pom.xml b/bukkit/pom.xml
index 8dda19ea8..3270ff38b 100644
--- a/bukkit/pom.xml
+++ b/bukkit/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.6.1-SNAPSHOT
+ 2.0.0-SNAPSHOT
4.0.0
diff --git a/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java
index d4c326384..f597c65c1 100644
--- a/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java
+++ b/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java
@@ -34,7 +34,7 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform {
private boolean lateBind = false;
private boolean protocolSupport = false;
@Getter
- private BukkitConfigAPI conf;
+ private BukkitViaConfig conf;
@Getter
private ViaAPI api = new BukkitViaAPI(this);
private List queuedTasks = new ArrayList<>();
@@ -51,7 +51,7 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform {
.loader(new BukkitViaLoader(this))
.build());
// Config magic
- conf = new BukkitConfigAPI();
+ conf = new BukkitViaConfig();
// For compatibility
ViaVersion.setInstance(this);
diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitConfigAPI.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaConfig.java
similarity index 94%
rename from bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitConfigAPI.java
rename to bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaConfig.java
index b033cdb79..014e567e5 100644
--- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitConfigAPI.java
+++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaConfig.java
@@ -11,10 +11,10 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
-public class BukkitConfigAPI extends Config implements ViaVersionConfig {
- private static List UNSUPPORTED = Arrays.asList("bungee-ping-interval", "bungee-ping-save", "bungee-servers");
+public class BukkitViaConfig extends Config implements ViaVersionConfig {
+ private static List UNSUPPORTED = Arrays.asList("bungee-ping-interval", "bungee-ping-save", "bungee-servers", "velocity-ping-interval", "velocity-ping-save", "velocity-servers");
- public BukkitConfigAPI() {
+ public BukkitViaConfig() {
super(new File(((ViaVersionPlugin) Via.getPlatform()).getDataFolder(), "config.yml"));
// Load config
reloadConfig();
@@ -192,7 +192,7 @@ public class BukkitConfigAPI extends Config implements ViaVersionConfig {
@Override
public URL getDefaultConfigURL() {
- return BukkitConfigAPI.class.getClassLoader().getResource("assets/viaversion/config.yml");
+ return BukkitViaConfig.class.getClassLoader().getResource("assets/viaversion/config.yml");
}
@Override
diff --git a/bungee/pom.xml b/bungee/pom.xml
index d09b21455..384d30083 100644
--- a/bungee/pom.xml
+++ b/bungee/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.6.1-SNAPSHOT
+ 2.0.0-SNAPSHOT
4.0.0
diff --git a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java
index 97e3a9c75..72142e311 100644
--- a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java
+++ b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java
@@ -31,13 +31,13 @@ import java.util.concurrent.TimeUnit;
public class BungeePlugin extends Plugin implements ViaPlatform, Listener {
private BungeeViaAPI api;
- private BungeeConfigAPI config;
+ private BungeeViaConfig config;
private BungeeCommandHandler commandHandler;
@Override
public void onLoad() {
api = new BungeeViaAPI();
- config = new BungeeConfigAPI(getDataFolder());
+ config = new BungeeViaConfig(getDataFolder());
commandHandler = new BungeeCommandHandler();
ProxyServer.getInstance().getPluginManager().registerCommand(this, new BungeeCommand(commandHandler));
// Init platform
@@ -134,7 +134,7 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener {
}
@Override
- public BungeeConfigAPI getConf() {
+ public BungeeViaConfig getConf() {
return config;
}
diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/commands/subs/ProbeSubCmd.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/commands/subs/ProbeSubCmd.java
index fda215417..a6184efa6 100644
--- a/bungee/src/main/java/us/myles/ViaVersion/bungee/commands/subs/ProbeSubCmd.java
+++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/commands/subs/ProbeSubCmd.java
@@ -3,7 +3,7 @@ package us.myles.ViaVersion.bungee.commands.subs;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.command.ViaCommandSender;
import us.myles.ViaVersion.api.command.ViaSubCommand;
-import us.myles.ViaVersion.bungee.platform.BungeeConfigAPI;
+import us.myles.ViaVersion.bungee.platform.BungeeViaConfig;
import us.myles.ViaVersion.bungee.service.ProtocolDetectorService;
public class ProbeSubCmd extends ViaSubCommand {
@@ -15,7 +15,7 @@ public class ProbeSubCmd extends ViaSubCommand {
@Override
public String description() {
return "Forces ViaVersion to scan server protocol versions " +
- (((BungeeConfigAPI) Via.getConfig()).getBungeePingInterval() == -1 ?
+ (((BungeeViaConfig) Via.getConfig()).getBungeePingInterval() == -1 ?
"" : "(Also happens at an interval)");
}
diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeConfigAPI.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaConfig.java
similarity index 96%
rename from bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeConfigAPI.java
rename to bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaConfig.java
index 1c013f3f2..cdb1ca4c7 100644
--- a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeConfigAPI.java
+++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaConfig.java
@@ -9,10 +9,10 @@ import java.io.File;
import java.net.URL;
import java.util.*;
-public class BungeeConfigAPI extends Config implements ViaVersionConfig {
- private static List UNSUPPORTED = Arrays.asList("nms-player-ticking", "item-cache", "anti-xray-patch", "quick-move-action-fix");
+public class BungeeViaConfig extends Config implements ViaVersionConfig {
+ private static List UNSUPPORTED = Arrays.asList("nms-player-ticking", "item-cache", "anti-xray-patch", "quick-move-action-fix", "velocity-ping-interval", "velocity-ping-save", "velocity-servers");
- public BungeeConfigAPI(File configFile) {
+ public BungeeViaConfig(File configFile) {
super(new File(configFile, "config.yml"));
// Load config
reloadConfig();
@@ -20,7 +20,7 @@ public class BungeeConfigAPI extends Config implements ViaVersionConfig {
@Override
public URL getDefaultConfigURL() {
- return BungeeConfigAPI.class.getClassLoader().getResource("assets/viaversion/config.yml");
+ return BungeeViaConfig.class.getClassLoader().getResource("assets/viaversion/config.yml");
}
@Override
diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java
index 252959224..6f5f6a909 100644
--- a/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java
+++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/service/ProtocolDetectorService.java
@@ -6,7 +6,7 @@ import net.md_5.bungee.api.ServerPing;
import net.md_5.bungee.api.config.ServerInfo;
import us.myles.ViaVersion.BungeePlugin;
import us.myles.ViaVersion.api.Via;
-import us.myles.ViaVersion.bungee.platform.BungeeConfigAPI;
+import us.myles.ViaVersion.bungee.platform.BungeeViaConfig;
import us.myles.ViaVersion.bungee.providers.BungeeVersionProvider;
import java.util.HashMap;
@@ -26,7 +26,7 @@ public class ProtocolDetectorService implements Runnable {
public static Integer getProtocolId(String serverName) {
// Step 1. Check Config
- Map servers = ((BungeeConfigAPI) Via.getConfig()).getBungeeServerProtocols();
+ Map servers = ((BungeeViaConfig) Via.getConfig()).getBungeeServerProtocols();
Integer protocol = servers.get(serverName);
if (protocol != null) {
return protocol;
@@ -61,8 +61,8 @@ public class ProtocolDetectorService implements Runnable {
// Ensure protocol is positive, some services will return -1
if (serverPing.getVersion().getProtocol() > 0) {
detectedProtocolIds.put(key, serverPing.getVersion().getProtocol());
- if (((BungeeConfigAPI) Via.getConfig()).isBungeePingSave()) {
- Map servers = ((BungeeConfigAPI) Via.getConfig()).getBungeeServerProtocols();
+ if (((BungeeViaConfig) Via.getConfig()).isBungeePingSave()) {
+ Map servers = ((BungeeViaConfig) Via.getConfig()).getBungeeServerProtocols();
Integer protocol = servers.get(key);
if (protocol != null && protocol == serverPing.getVersion().getProtocol()) {
return;
diff --git a/common/pom.xml b/common/pom.xml
index d1cad3b92..8c4605b9c 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.6.1-SNAPSHOT
+ 2.0.0-SNAPSHOT
4.0.0
@@ -17,7 +17,7 @@
org.yaml
snakeyaml
1.18
- provided
+ compile
\ No newline at end of file
diff --git a/common/src/main/java/us/myles/ViaVersion/api/data/UserConnection.java b/common/src/main/java/us/myles/ViaVersion/api/data/UserConnection.java
index aa9019262..a620c3798 100644
--- a/common/src/main/java/us/myles/ViaVersion/api/data/UserConnection.java
+++ b/common/src/main/java/us/myles/ViaVersion/api/data/UserConnection.java
@@ -18,6 +18,8 @@ import us.myles.ViaVersion.util.PipelineUtil;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
@Data
public class UserConnection {
@@ -36,7 +38,7 @@ public class UserConnection {
// Used for handling warnings (over time)
private int secondsObserved = 0;
private int warnings = 0;
-
+ private ReadWriteLock velocityLock = new ReentrantReadWriteLock();
public UserConnection(Channel channel) {
this.channel = channel;
@@ -108,7 +110,8 @@ public class UserConnection {
*/
public ChannelFuture sendRawPacketFuture(final ByteBuf packet) {
final ChannelHandler handler = channel.pipeline().get(Via.getManager().getInjector().getEncoderName());
- return channel.pipeline().context(handler).writeAndFlush(packet);
+ ChannelFuture future = channel.pipeline().context(handler).writeAndFlush(packet);
+ return future;
}
/**
@@ -218,7 +221,8 @@ public class UserConnection {
}
buf.writeBytes(packet);
packet.release();
- final ChannelHandlerContext context = PipelineUtil.getPreviousContext(Via.getManager().getInjector().getDecoderName(), getChannel().pipeline());
+ final ChannelHandlerContext context = PipelineUtil
+ .getPreviousContext(Via.getManager().getInjector().getDecoderName(), getChannel().pipeline());
if (currentThread) {
if (context != null) {
context.fireChannelRead(buf);
diff --git a/common/src/main/java/us/myles/ViaVersion/commands/ViaCommandHandler.java b/common/src/main/java/us/myles/ViaVersion/commands/ViaCommandHandler.java
index c6afc0b6e..5610e2a50 100644
--- a/common/src/main/java/us/myles/ViaVersion/commands/ViaCommandHandler.java
+++ b/common/src/main/java/us/myles/ViaVersion/commands/ViaCommandHandler.java
@@ -74,7 +74,7 @@ public abstract class ViaCommandHandler implements ViaVersionCommand {
//SubCommands tabcomplete
if (args.length == 1) {
- if (!args[0].equals("")) {
+ if (!args[0].isEmpty()) {
for (ViaSubCommand sub : allowed)
if (sub.name().toLowerCase().startsWith(args[0].toLowerCase()))
output.add(sub.name());
diff --git a/common/src/main/java/us/myles/ViaVersion/util/PipelineUtil.java b/common/src/main/java/us/myles/ViaVersion/util/PipelineUtil.java
index f5bdd51f9..6be8ac0b8 100644
--- a/common/src/main/java/us/myles/ViaVersion/util/PipelineUtil.java
+++ b/common/src/main/java/us/myles/ViaVersion/util/PipelineUtil.java
@@ -5,6 +5,8 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelPipeline;
import io.netty.handler.codec.ByteToMessageDecoder;
import io.netty.handler.codec.MessageToByteEncoder;
+import io.netty.handler.codec.MessageToMessageDecoder;
+import io.netty.handler.codec.MessageToMessageEncoder;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -14,6 +16,7 @@ import java.util.List;
public class PipelineUtil {
private static Method DECODE_METHOD;
private static Method ENCODE_METHOD;
+ private static Method MTM_DECODE;
static {
try {
@@ -28,6 +31,12 @@ public class PipelineUtil {
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
+ try {
+ MTM_DECODE = MessageToMessageDecoder.class.getDeclaredMethod("decode", ChannelHandlerContext.class, Object.class, List.class);
+ MTM_DECODE.setAccessible(true);
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ }
}
/**
@@ -66,6 +75,16 @@ public class PipelineUtil {
}
}
+ public static List