From 135942c03391c764feb53bb92791e449a64e2d29 Mon Sep 17 00:00:00 2001 From: Myles Date: Mon, 29 Feb 2016 12:49:14 +0000 Subject: [PATCH] Warn users that it doesn't work with late-bind (possibly allow it in future), also stop bytebuf input mem leak. --- src/main/java/us/myles/ViaVersion/Core.java | 12 ++++++------ .../myles/ViaVersion/handlers/ViaInboundHandler.java | 2 ++ .../ViaVersion/handlers/ViaOutboundHandler.java | 2 ++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/Core.java b/src/main/java/us/myles/ViaVersion/Core.java index 2b7fbff96..ae625b612 100644 --- a/src/main/java/us/myles/ViaVersion/Core.java +++ b/src/main/java/us/myles/ViaVersion/Core.java @@ -5,10 +5,7 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import net.minecraft.server.v1_8_R3.Entity; -import net.minecraft.server.v1_8_R3.MinecraftServer; -import net.minecraft.server.v1_8_R3.ServerConnection; -import net.minecraft.server.v1_8_R3.WorldServer; +import net.minecraft.server.v1_8_R3.*; import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; import org.bukkit.entity.Player; @@ -33,16 +30,19 @@ public class Core extends JavaPlugin { try { injectPacketHandler(); } catch (Exception e) { + System.out.println("Unable to inject handlers, this version only supports 1.8.8."); e.printStackTrace(); - System.out.println("Unable to inject handlers, this version only supports 1.8."); } } - public void injectPacketHandler() throws NoSuchFieldException, IllegalAccessException { + public void injectPacketHandler() throws Exception { MinecraftServer server = MinecraftServer.getServer(); ServerConnection connection = server.getServerConnection(); List futures = getPrivateField(connection, "g", List.class); + if(futures.size() == 0){ + throw new Exception("Could not find server to inject (late bind?)"); + } for (ChannelFuture future : futures) { ChannelPipeline pipeline = future.channel().pipeline(); diff --git a/src/main/java/us/myles/ViaVersion/handlers/ViaInboundHandler.java b/src/main/java/us/myles/ViaVersion/handlers/ViaInboundHandler.java index 0eeb5ea85..5751b99b0 100644 --- a/src/main/java/us/myles/ViaVersion/handlers/ViaInboundHandler.java +++ b/src/main/java/us/myles/ViaVersion/handlers/ViaInboundHandler.java @@ -37,6 +37,8 @@ public class ViaInboundHandler extends ChannelInboundHandlerAdapter { incomingTransformer.transform(id, bytebuf, newPacket); } catch (CancelException e) { return; + } finally { + bytebuf.release(); } if (compression) { // recompress :) diff --git a/src/main/java/us/myles/ViaVersion/handlers/ViaOutboundHandler.java b/src/main/java/us/myles/ViaVersion/handlers/ViaOutboundHandler.java index a8dfbaee6..428fce04d 100644 --- a/src/main/java/us/myles/ViaVersion/handlers/ViaOutboundHandler.java +++ b/src/main/java/us/myles/ViaVersion/handlers/ViaOutboundHandler.java @@ -35,6 +35,8 @@ public class ViaOutboundHandler extends ChannelOutboundHandlerAdapter { outgoingTransformer.transform(id, bytebuf, newPacket); } catch (CancelException e) { return; + } finally { + bytebuf.release(); } if (compression) { // recompress :)