diff --git a/bukkit/pom.xml b/bukkit/pom.xml
index dd90db8b9..2f9b72580 100644
--- a/bukkit/pom.xml
+++ b/bukkit/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 2.2.2
+ 2.2.3-SNAPSHOT
4.0.0
diff --git a/bungee/pom.xml b/bungee/pom.xml
index 4510799bf..4ab44f8ed 100644
--- a/bungee/pom.xml
+++ b/bungee/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 2.2.2
+ 2.2.3-SNAPSHOT
4.0.0
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 edc66c086..7f0c0d76a 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
@@ -9,28 +9,43 @@ import us.myles.ViaVersion.bungee.handlers.BungeeChannelInitializer;
import us.myles.ViaVersion.util.ReflectionUtil;
import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.List;
public class BungeeViaInjector implements ViaInjector {
+
@Override
public void inject() throws Exception {
try {
- try {
+ Class> pipelineUtils = Class.forName("net.md_5.bungee.netty.PipelineUtils");
+ Field field = pipelineUtils.getDeclaredField("SERVER_CHILD");
+ field.setAccessible(true);
- 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: ");
+ // Remove the final modifier (unless removed by a fork)
+ int modifiers = field.getModifiers();
+ if (Modifier.isFinal(modifiers)) {
+ try {
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, modifiers & ~Modifier.FINAL);
+ } catch (NoSuchFieldException e) {
+ // Java 12 compatibility *this is fine*
+ Method getDeclaredFields0 = Class.class.getDeclaredMethod("getDeclaredFields0", boolean.class);
+ getDeclaredFields0.setAccessible(true);
+ Field[] fields = (Field[]) getDeclaredFields0.invoke(Field.class, false);
+ for (Field classField : fields) {
+ if ("modifiers".equals(classField.getName())) {
+ classField.setAccessible(true);
+ classField.set(field, modifiers & ~Modifier.FINAL);
+ break;
+ }
+ }
+ }
}
+
+ BungeeChannelInitializer newInit = new BungeeChannelInitializer((ChannelInitializer) field.get(null));
+ field.set(null, newInit);
} 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.");
throw e;
@@ -62,11 +77,6 @@ public class BungeeViaInjector implements ViaInjector {
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);
-
return (ChannelInitializer) field.get(null);
}
diff --git a/common/pom.xml b/common/pom.xml
index fc434bfd4..8702fc7e4 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 2.2.2
+ 2.2.3-SNAPSHOT
4.0.0
diff --git a/jar/pom.xml b/jar/pom.xml
index 8b2d6f998..abfd81dcc 100644
--- a/jar/pom.xml
+++ b/jar/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 2.2.2
+ 2.2.3-SNAPSHOT
4.0.0
viaversion-jar
diff --git a/pom.xml b/pom.xml
index 63a138cca..71746bcb6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
us.myles
viaversion-parent
- 2.2.2
+ 2.2.3-SNAPSHOT
pom
viaversion-parent
diff --git a/sponge-legacy/pom.xml b/sponge-legacy/pom.xml
index 69de92a70..b017da339 100644
--- a/sponge-legacy/pom.xml
+++ b/sponge-legacy/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 2.2.2
+ 2.2.3-SNAPSHOT
4.0.0
diff --git a/sponge/pom.xml b/sponge/pom.xml
index 88f8e4702..6a804d202 100644
--- a/sponge/pom.xml
+++ b/sponge/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 2.2.2
+ 2.2.3-SNAPSHOT
4.0.0
diff --git a/velocity/pom.xml b/velocity/pom.xml
index fefb13ce8..b2926dc5f 100644
--- a/velocity/pom.xml
+++ b/velocity/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 2.2.2
+ 2.2.3-SNAPSHOT
4.0.0