EssentialsX

EssentialsX

2M Downloads

not support hiding players

seema84 opened this issue · 16 comments

commented

Log
[05:05:08 INFO]: Saved the game
[05:05:40 INFO]: [dynmap] Loading default resource pack
[05:08:32 WARN]: [Essentials] Current server implementation does not support hiding players from server list ping. Update or contact the maintainers.

Version:
[05:31:41 INFO]: Server Version: 1.13.2-R0.1-SNAPSHOT git-Spigot-518206a-a5b9c7b (MC: 1.13.2)
[05:31:41 INFO]: EssentialsX Version: 2.16-pre3.0
[05:31:41 INFO]: PermissionsEx Version: 1.23.4
[05:31:41 INFO]: Vault Version: 1.7.1-b91
[05:31:41 INFO]: EssentialsXChat Version: 2.16-pre3.0

is this a dynmap problem?

commented

This isn't an issue with Dynmap. Paper seems to have changed their server list ping event again, so we'll need to look into updating again.

commented

I don't use Paper.

commented

Ignore my previous replies - I was thinking of a different issue entirely.

Does this only occur on startup, or does it happen at other times?

commented

Ignore my previous replies - I was thinking of a different issue entirely.

Does this only occur on startup, or does it happen at other times?

When you start up the server, I have it show up on 17 of our servers, mind you - we're a tiny bit behind on the jars;

>about essentials
[01:34:22 INFO]: Essentials version 2.15.0.55
commented

Same issue here, but not just on startup. Also shows up randomly in the console.

commented

@seema84 @mrfloris @Sikatsu If possible, could you update to 2.16.0.13 or newer and paste the error that occurs (if any)?

commented

I don't have anything else then this:

05.01 20:28:11 [Server] INFO Enabling EssentialsGeoIP v2.16.0.3
05.01 20:28:11 [Server] INFO This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com/.
05.01 20:28:11 [Server] INFO Enabling EssentialsSpawn v2.16.0.3
05.01 20:28:11 [Server] INFO Enabling PremiumVanish v2.4.1
05.01 20:28:11 [Server] WARN Current server implementation does not support hiding players from server list ping. Update or contact the maintainers.

commented

@Sikatsu You're running 2.16.0.3 - the message was changed in 2.16.0.13.

commented

Whoops sorry! I'll have to check later.

commented

Adding my input for the same issue:
https://hasteb.in/apovodux.md

[05:40:47 WARN]: [Essentials] Could not hide vanished players while handling org.bukkit.event.server.ServerListPingEvent java.lang.UnsupportedOperationException: null at org.bukkit.event.server.ServerListPingEvent.iterator(ServerListPingEvent.java:144) ~[minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at com.earth2me.essentials.EssentialsServerListener.onServerListPing(EssentialsServerListener.java:74) [EssentialsX-2.16.0.16.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_152] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_152] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_152] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_152] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.callServerListPingEvent(CraftEventFactory.java:612) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at net.minecraft.server.v1_13_R2.LegacyPingHandler.channelRead(LegacyPingHandler.java:37) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:808) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:408) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:308) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) [minecraft_server.jar:git-Spigot-f56e2e7-f17d591] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]

commented

It appears that Spigot no longer seems to support this ServerListPingEvent API - I haven't been able to find a Spigot/CraftBukkit implementation of the event that actually includes an iterator (though I'm sure there used to be one, so I don't know what happened).

commented

It turns out that these errors are actually caused by, uh... a packet that Minecraft hasn't used for over 5 years.

We currently support CraftBukkit's internal ServerListPingEvent and Paper 1.12.x's extended SLPE. This is fine, because every server from 1.7 onwards uses these classes which implement either iterator or setSampleText. However, it turns out when the server receives a ping from an ancient version (1.6 or older), the Minecraft server uses an entirely different handler. Spigot added an incomplete version of the event to that handler a month ago, and it's this that causes errors. The fix on our side is to simply ignore SLPEs that originate from LegacyPingHandler, as this isn't actually an issue - the legacy packet doesn't include a list of players, so we don't actually need to handle this.

Edit: as a side note, Paper 1.13.x fixed this by replacing Spigot/CB's incomplete event with their own event which does all this and more. If you really don't want the message to show up while we fix this, you could always switch to Paper ¯\_(ツ)_/¯

commented

Spigot added an incomplete version of the event to that handler a month ago, and it's this that causes errors. The fix on our side is to simply ignore SLPEs that originate from LegacyPingHandler, as this isn't actually an issue - the legacy packet doesn't include a list of players, so we don't actually need to handle this.

The event is not incomplete. The API documentation explicitly states that the implementation will throw an UnsupportedOperationException in this case: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/server/ServerListPingEvent.html#iterator-- (and yes, that documentation has been around for five years https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/diff/src/main/java/org/bukkit/event/server/ServerListPingEvent.java?until=2a2e90233e88d825cd29e352b6c903096c4c6828).

If you think there is a bug/feature that needs addressing in Spigot I would appreciate it if you could use the issue tracker (https://hub.spigotmc.org/jira/secure/Dashboard.jspa).

commented

@md-5 The reason this error is displayed is to alert server owners that EssentialsX wasn't able to hide players from the ping event. Several plugins send their own ServerListPingEvent implementations for varoius reasons, and by throwing this error we can alert server owners that vanished players might be visible somewhere, and as a result we can deal with reports by either selectively ignoring event callers or informing plugin developers of issues with their implementation and/or use of the event.

In this case, we intend to do the former, as I've already noted:

The fix on our side is to simply ignore SLPEs that originate from LegacyPingHandler, as this isn't actually an issue - the legacy packet doesn't include a list of players, so we don't actually need to handle this.

commented

This error should no longer appear - please update to the latest build. Once again, thanks to everyone who reported this and provided logs.