From c404f2206c41d7228465b9c538016779a35ca652 Mon Sep 17 00:00:00 2001 From: Myles Date: Sun, 6 Mar 2016 16:16:26 +0000 Subject: [PATCH] Blame a class when the childHandler doesn't inject --- .../us/myles/ViaVersion/ViaVersionPlugin.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java index 4b89884d1..2aa8a363d 100644 --- a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java +++ b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java @@ -55,7 +55,7 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { getLogger().severe("Unable to inject handlers, are you on 1.8? "); e.printStackTrace(); } - if (getConfig().getBoolean("checkforupdates")) + if (getConfig().getBoolean("checkforupdates")) UpdateUtil.sendUpdateMessage(this); Bukkit.getPluginManager().registerEvents(new Listener() { @@ -87,9 +87,15 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { ChannelFuture future = (ChannelFuture) o; ChannelPipeline pipeline = future.channel().pipeline(); ChannelHandler bootstrapAcceptor = pipeline.first(); - ChannelInitializer oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class); - ChannelInitializer newInit = new ViaVersionInitializer(oldInit); - ReflectionUtil.set(bootstrapAcceptor, "childHandler", newInit); + try { + ChannelInitializer oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class); + ChannelInitializer newInit = new ViaVersionInitializer(oldInit); + + ReflectionUtil.set(bootstrapAcceptor, "childHandler", newInit); + } catch (NoSuchFieldException e) { + // field not found + throw new Exception("Unable to find childHandler, blame " + bootstrapAcceptor.getClass().getName()); + } injected = true; } else { break; // not the right list. @@ -167,7 +173,7 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { return true; } }); - if(wait){ + if (wait) { f.get(10, TimeUnit.SECONDS); } } catch (Exception e) {