From b0d64bfebd9d756d3c859d47c7bea5a1a8331e4d Mon Sep 17 00:00:00 2001 From: Myles Date: Thu, 29 Sep 2016 20:40:58 +0100 Subject: [PATCH] Fix a bug in chunks (still not working fully) Also remove bungeecord-proxy --- bungee/pom.xml | 8 -------- .../bungee/platform/BungeeViaInjector.java | 19 +++++++++++++------ .../bungee/platform/BungeeViaLoader.java | 5 ++++- .../packets/WorldPackets.java | 3 +-- .../myles/ViaVersion/util/ReflectionUtil.java | 4 ---- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/bungee/pom.xml b/bungee/pom.xml index ccb0e47aa..75dfd9844 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -33,14 +33,6 @@ provided - - - net.md-5 - bungeecord-proxy - 1.4.7-SNAPSHOT - provided - - us.myles diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java index bc2690616..ef1b2719f 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaInjector.java @@ -2,24 +2,31 @@ package us.myles.ViaVersion.bungee.platform; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; -import net.md_5.bungee.netty.PipelineUtils; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.platform.ViaInjector; import us.myles.ViaVersion.bungee.handlers.BungeeChannelInitializer; -import us.myles.ViaVersion.util.ReflectionUtil; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; public class BungeeViaInjector implements ViaInjector { @Override public void inject() throws Exception { try { try { - ChannelInitializer oldInit = PipelineUtils.SERVER_CHILD; - ChannelInitializer newInit = new BungeeChannelInitializer(oldInit); - ReflectionUtil.setStatic(PipelineUtils.class, "SERVER_CHILD", newInit); + Class pipelineUtils = Class.forName("net.md_5.bungee.netty.PipelineUtils"); + Field field = pipelineUtils.getDeclaredField("SERVER_CHILD"); + field.setAccessible(true); + // Remove any final stuff + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); + + BungeeChannelInitializer newInit = new BungeeChannelInitializer((ChannelInitializer) field.get(null)); + field.set(null, newInit); } catch (NoSuchFieldException e) { throw new Exception("Unable to find core component 'childHandler', please check your plugins. issue: "); - } } catch (Exception e) { Via.getPlatform().getLogger().severe("Unable to inject ViaVersion, please post these details on our GitHub and ensure you're using a compatible server version."); diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaLoader.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaLoader.java index b78346e85..343e16fdc 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaLoader.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaLoader.java @@ -5,6 +5,9 @@ import us.myles.ViaVersion.api.platform.ViaPlatformLoader; public class BungeeViaLoader implements ViaPlatformLoader { @Override public void load() { - + // TODO: Movement Transmitter + // TODO: Config + // TODO: Platform specific commands + // TODO: Get rid of bungeecord-proxy just use reflection } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java index 2b7301ce1..b4552defd 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java @@ -151,10 +151,9 @@ public class WorldPackets { throw new IOException("transformMapChunkBulk returned the wrong object type"); PacketWrapper output = (PacketWrapper) obj; - ByteBuf buffer = Unpooled.buffer(); + output.setId(-1); // -1 for no writing of id output.writeToBuffer(buffer); - PacketWrapper chunkPacket = new PacketWrapper(0x21, buffer, wrapper.user()); chunkPacket.send(Protocol1_9TO1_8.class, false); } diff --git a/common/src/main/java/us/myles/ViaVersion/util/ReflectionUtil.java b/common/src/main/java/us/myles/ViaVersion/util/ReflectionUtil.java index 6febc6c1a..dbf3af7ee 100644 --- a/common/src/main/java/us/myles/ViaVersion/util/ReflectionUtil.java +++ b/common/src/main/java/us/myles/ViaVersion/util/ReflectionUtil.java @@ -31,10 +31,6 @@ public class ReflectionUtil { public static void setStatic(Class clazz, String f, Object value) throws NoSuchFieldException, IllegalAccessException { Field field = clazz.getDeclaredField(f); field.setAccessible(true); - // Remove any final stuff - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); field.set(null, value); }