@Override public void inject() throws Exception { Object connectionManager = ReflectionUtil.get(VelocityPlugin.PROXY, "cm", Object.class); Object channelInitializerHolder = ReflectionUtil.invoke(connectionManager, "getServerChannelInitializer"); ChannelInitializer originalIntializer = (ChannelInitializer) ReflectionUtil.invoke(channelInitializerHolder, "get"); channelInitializerHolder.getClass().getMethod("set", ChannelInitializer.class) .invoke(channelInitializerHolder, new VelocityChannelInitializer(originalIntializer)); }
ChannelHandler handler = future.channel().pipeline().get(name); try { ReflectionUtil.get(handler, "childHandler", ChannelInitializer.class); bootstrapAcceptor = handler; } catch (Exception e) { ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class); ChannelInitializer newInit = new BukkitChannelInitializer(oldInit); PluginDescriptionFile yaml = ReflectionUtil.get(cl, "description", PluginDescriptionFile.class); throw new Exception("Unable to inject, due to " + bootstrapAcceptor.getClass().getName() + ", try without the plugin " + yaml.getName() + "?"); } else {
ChannelHandler handler = future.channel().pipeline().get(name); try { ReflectionUtil.get(handler, "childHandler", ChannelInitializer.class); bootstrapAcceptor = handler; } catch (Exception e) { ChannelInitializer<Channel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class); ChannelInitializer newInit = new SpongeChannelInitializer(oldInit);
ChannelHandler handler = future.channel().pipeline().get(name); try { ChannelInitializer<Channel> oldInit = ReflectionUtil.get(handler, "childHandler", ChannelInitializer.class); if (oldInit instanceof SpongeChannelInitializer) { bootstrapAcceptor = handler; ChannelInitializer<Channel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class); if (oldInit instanceof SpongeChannelInitializer) { ReflectionUtil.set(bootstrapAcceptor, "childHandler", ((SpongeChannelInitializer) oldInit).getOriginal());
ChannelHandler handler = future.channel().pipeline().get(name); try { ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(handler, "childHandler", ChannelInitializer.class); if (oldInit instanceof BukkitChannelInitializer) { bootstrapAcceptor = handler; ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class); if (oldInit instanceof BukkitChannelInitializer) { ReflectionUtil.set(bootstrapAcceptor, "childHandler", ((BukkitChannelInitializer) oldInit).getOriginal());
@Subscribe public void onServerConnect(ServerConnectedEvent event) { UserConnection user = Via.getManager().getConnection(event.getPlayer().getUniqueId()); if (user == null || setSettings == null) return; try { if (user.get(ProtocolInfo.class).getPipeline().contains(Protocol1_9TO1_8.class)) { PlayerSettings settings = event.getPlayer().getPlayerSettings(); if (user.has(EntityTracker.class)) { Object clientSettings = ReflectionUtil.get(settings, "settings", Object.class); ReflectionUtil.set(clientSettings, "mainHand", user.get(EntityTracker.class).getMainHand()); setSettings.invoke(event.getPlayer(), clientSettings); } } } catch (Exception e) { e.printStackTrace(); } } }