CommandHelper

CommandHelper

46.5k Downloads

Server list ping event

LadyCailinBot opened this issue ยท 4 comments

commented

CMDHELPER-3139 - Reported by mesolost

version used CMDHELPER-3131 (commandhelper-3.3.2-SNAPSHOT)
Ok here's my error report from my log. Fist issue is actually new. I havent noticed that ionetty thing ever before today.(only the top most one. other 2 are known) The server list ping event not being found however is an issue i've had on every startup from both KCauldron and Thermos server jars. The server shows on the list fine, version shows up, according to pieter12345 (woesh correct me on your name here if you see this) the list of mods are being reported but no player names are listed. Player count shows up but no names. OK lets see if i can paste this right. (preview displays properly so I think i got it)

[15:29:08] [Netty IO #1/WARN] [JavaPatcher/]: Didn't find any method calls to replace in net.minecraft.util.MessageSerializer.encode(io.netty.channel.ChannelHandlerContext,java.lang.Object,io.netty.buffer.ByteBuf). Class: null, method: func_148840_b, index: -1
[15:29:08] [Netty IO #1/WARN] [JavaPatcher/]:
java.lang.RuntimeException: Method not found: scheduleOutboundPacket() was not found in net.minecraft.util.MessageSerializer
at me.nallar.javapatcher.mappings.MethodDescription.inClass(MethodDescription.java:173) ~[MethodDescription.class:?]
at me.nallar.javapatcher.patcher.Patcher$PatchMethodDescriptor.run(Patcher.java:390) [Patcher$PatchMethodDescriptor.class:?]
at me.nallar.javapatcher.patcher.Patcher$ClassPatchDescriptor.runPatches(Patcher.java:522) [Patcher$ClassPatchDescriptor.class:?]
at me.nallar.javapatcher.patcher.Patcher.patch(Patcher.java:212) [Patcher.class:?]
at me.nallar.modpatcher.ModPatcher.postSrgTransformationHook(ModPatcher.java:82) [ModPatcher.class:?]
at me.nallar.modpatcher.ModPatcher.transform(ModPatcher.java:121) [ModPatcher.class:?]
at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) [launchwrapper-1.12.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [?:1.8.0_92]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [?:1.8.0_92]
at net.minecraft.network.NetworkSystem$1.initChannel(NetworkSystem.java:94) [nd.class:?]
at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:70) [ChannelInitializer.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRegistered(DefaultChannelHandlerContext.java:162) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRegistered(DefaultChannelHandlerContext.java:148) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:73) [ChannelInitializer.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRegistered(DefaultChannelHandlerContext.java:162) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRegistered(DefaultChannelHandlerContext.java:148) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRegistered(DefaultChannelPipeline.java:730) [DefaultChannelPipeline.class:?]
at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:441) [AbstractChannel$AbstractUnsafe.class:?]
at io.netty.channel.AbstractChannel$AbstractUnsafe.access$100(AbstractChannel.java:373) [AbstractChannel$AbstractUnsafe.class:?]
at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:417) [AbstractChannel$AbstractUnsafe$1.class:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) [SingleThreadEventExecutor.class:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:348) [NioEventLoop.class:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [SingleThreadEventExecutor$2.class:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92]
[15:29:09] [Netty IO #1/ERROR] [Minecraft/]: Could not pass event ServerListPingEvent to CommandHelper v3.3.2-SNAPSHOT.3131-
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) ~[JavaPluginLoader$1.class:1.7.10-1614.58]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[RegisteredListener.class:1.7.10-1614.58]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:1.7.10-1614.58]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:1.7.10-1614.58]
at net.minecraft.server.network.NetHandlerStatusServer.func_147312_a(NetHandlerStatusServer.java:87) [nq.class:?]
at net.minecraft.network.status.client.C00PacketServerQuery.func_148833_a(SourceFile:25) [kj.class:?]
at net.minecraft.network.status.client.C00PacketServerQuery.func_148833_a(SourceFile:8) [kj.class:?]
at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:137) [ej.class:?]
at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:353) [ej.class:?]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) [SimpleChannelInboundHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173) [ByteToMessageDecoder.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173) [ByteToMessageDecoder.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at com.comphenix.protocol.compat.netty.independent.NettyChannelInjector$4.channelRead(NettyChannelInjector.java:278) [ProtocolLib.jar:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173) [ByteToMessageDecoder.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at net.minecraft.network.PingResponseHandler.channelRead(SourceFile:94) [mz.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:149) [ReadTimeoutHandler.class:?]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:100) [AbstractNioByteChannel$NioByteUnsafe.class:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:480) [NioEventLoop.class:?]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:447) [NioEventLoop.class:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:341) [NioEventLoop.class:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [SingleThreadEventExecutor$2.class:?]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92]
Caused by: java.lang.UnsupportedOperationException
at org.bukkit.event.server.ServerListPingEvent.iterator(ServerListPingEvent.java:140) ~[ServerListPingEvent.class:1.7.10-1614.58]
at com.laytonsmith.abstraction.bukkit.events.BukkitMiscEvents$BukkitMCServerPingEvent.getPlayers(BukkitMiscEvents.java:135) ~[?:?]
at com.laytonsmith.core.events.drivers.ServerEvents$server_ping.evaluate(ServerEvents.java:98) ~[?:?]
at com.laytonsmith.core.events.EventUtils.FireListeners(EventUtils.java:252) ~[?:?]
at com.laytonsmith.core.events.EventUtils.TriggerListener(EventUtils.java:240) ~[?:?]
at com.laytonsmith.abstraction.bukkit.events.drivers.BukkitServerListener.onPing(BukkitServerListener.java:34) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) ~[JavaPluginLoader$1.class:1.7.10-1614.58]
... 36 more

commented

Comment by PseudoKnight

Well, what I can tell you is that none of those seem to be related to CommandHelper. The last one is just a Bukkit call, and apparently the iterator is unimplemented?

commented

Comment by Pieter12345

The stacktrace tells that the iterator() method in ServerListPingEvent.java has caused an UnsupportedOperationException. From the Bukkit javadocs for the iterator() method: "UnsupportedOperationException - if the caller of this event does not support removing players".

The Bukkit sourcecode also shows this here: https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/event/server/ServerListPingEvent.java#L140

In CraftBukkit, a net.minecraft.server.PacketStatusListener.ServerListPingEvent which extends from org.bukkit.event.server.ServerListPingEvent and overrides the "iterator()" method is passed to the listeners. On your modded server jars, however, org.bukkit.event.server.ServerListPingEvent is used directly and this does not support removal of players from the server ping list. This means that the bug is not caused by CommandHelper nor by CraftBukkit, but by your custom server software.

We should consider this issue closed.

commented

Comment by PseudoKnight

Weird timing. I had just committed a fix for this yesterday. I just haven't pushed it. I decided to catch this exception anyway, since it affects some server's ability to bind that event at all. I was hoping it was just a matter of time before those servers added an implementation, but who knows when or if that'll ever happen.

commented

Comment by PseudoKnight

Okay, it catches this now. You still can't read or modify the player list, but at least it shouldn't error when you bind server_ping on these modded servers now. But I didn't verify it.