packetevents icon indicating copy to clipboard operation
packetevents copied to clipboard

Wiki improvement suggestion

Open IamMusavaRibica opened this issue 9 months ago • 0 comments

Is your feature request related to a problem? Please describe. Not really, I just want to share some suggestions for improving Shading PacketEvents wiki page.

Describe the solution you'd like

  • I suggest removing "Step 3 - (Optional) Minimize PacketEvents" or giving a warning about usage of the mentioned minimizeJar option. It can break because some classes are loaded dynamically, and the plugin doesn't recognize that, see below for more context.
  • Add somewhere that there is an example available: https://github.com/retrooper/packetevents-example (a week old), however the example pom.xml uses Java 8, Spigot 1.17.1 and maven shade plugin 3.2.4. There should be a note stating that, it's better and more concise than having people look pom.xml themselves. Also, it should be stated that Java 21 (for 1.20.6+) is only supported by maven shade plugin 3.5.1 and up (I'm not sure for Java 17).

Describe alternatives you've considered to solve your solution without us adding this as a feature? I think this doesn't apply in this request

Additional context When I built an uber jar with minimizeJar true, this exception hinted that this option could be breaking because of dynamically loading classes, the compiler thinks that a class is not used just because it's not directly referenced in the code:

[19:43:23] [Netty Server IO #2/WARN]: An exception 'java.lang.NoClassDefFoundError: dev/ribica/magic/packets/util/ExceptionUtil' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
io.netty.handler.codec.EncoderException: java.lang.NoClassDefFoundError: dev/ribica/magic/packets/util/Vector3i
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
        at dev.ribica.magic.packetsio.injector.handlers.PacketEventsEncoder.write(PacketEventsEncoder.java:101) ~[?:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:113) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:113) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:863) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:968) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:856) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.ChannelOutboundHandlerAdapter.write(ChannelOutboundHandlerAdapter.java:113) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at net.minecraft.network.NetworkManager$2.write(NetworkManager.java:543) ~[spigot-1.20.6-R0.1-SNAPSHOT.jar:4168-Spigot-e2c1eee-2ea1e7a]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:881) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:940) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:966) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:934) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1020) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:311) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:227) ~[?:?]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:233) ~[?:?]
        at net.minecraft.network.NetworkManager.c(NetworkManager.java:366) ~[spigot-1.20.6-R0.1-SNAPSHOT.jar:4168-Spigot-e2c1eee-2ea1e7a]
        at net.minecraft.network.NetworkManager.lambda$sendPacket$12(NetworkManager.java:359) ~[spigot-1.20.6-R0.1-SNAPSHOT.jar:4168-Spigot-e2c1eee-2ea1e7a]
        at com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.lambda$proxyRunnable$2(NettyEventLoopProxy.java:48) ~[?:?]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.97.Final.jar:4.1.97.Final]
        at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
Caused by: java.lang.NoClassDefFoundError: dev/ribica/magic/packets/util/Vector3i
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readBlockPosition(PacketWrapper.java:877) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readWorldBlockPosition(PacketWrapper.java:1069) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readOptional(PacketWrapper.java:1335) ~[?:?]
        at dev.ribica.magic.packets.wrapper.play.server.WrapperPlayServerJoinGame.read(WrapperPlayServerJoinGame.java:200) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readEvent(PacketWrapper.java:244) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.<init>(PacketWrapper.java:149) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.<init>(PacketWrapper.java:139) ~[?:?]
        at dev.ribica.magic.packets.wrapper.play.server.WrapperPlayServerJoinGame.<init>(WrapperPlayServerJoinGame.java:65) ~[?:?]
        at dev.ribica.magic.packets.manager.InternalPacketListener.onPacketSend(InternalPacketListener.java:130) ~[?:?]
        at dev.ribica.magic.packets.event.PacketSendEvent.call(PacketSendEvent.java:51) ~[?:?]
        at dev.ribica.magic.packets.event.EventManager.callEvent(EventManager.java:52) ~[?:?]
        at dev.ribica.magic.packets.util.PacketEventsImplHelper.handleClientBoundPacket(PacketEventsImplHelper.java:44) ~[?:?]
        at dev.ribica.magic.packetsio.injector.handlers.PacketEventsEncoder.handleClientBoundPacket(PacketEventsEncoder.java:82) ~[?:?]
        at dev.ribica.magic.packetsio.injector.handlers.PacketEventsEncoder.encode(PacketEventsEncoder.java:67) ~[?:?]
        at dev.ribica.magic.packetsio.injector.handlers.PacketEventsEncoder.encode(PacketEventsEncoder.java:46) ~[?:?]
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:90) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
        ... 40 more
Caused by: java.lang.ClassNotFoundException: dev.ribica.magic.packets.util.Vector3i
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:160) ~[spigot-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:112) ~[spigot-api-1.20.6-R0.1-SNAPSHOT.jar:?]
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readBlockPosition(PacketWrapper.java:877) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readWorldBlockPosition(PacketWrapper.java:1069) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readOptional(PacketWrapper.java:1335) ~[?:?]
        at dev.ribica.magic.packets.wrapper.play.server.WrapperPlayServerJoinGame.read(WrapperPlayServerJoinGame.java:200) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.readEvent(PacketWrapper.java:244) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.<init>(PacketWrapper.java:149) ~[?:?]
        at dev.ribica.magic.packets.wrapper.PacketWrapper.<init>(PacketWrapper.java:139) ~[?:?]
        at dev.ribica.magic.packets.wrapper.play.server.WrapperPlayServerJoinGame.<init>(WrapperPlayServerJoinGame.java:65) ~[?:?]
        at dev.ribica.magic.packets.manager.InternalPacketListener.onPacketSend(InternalPacketListener.java:130) ~[?:?]
        at dev.ribica.magic.packets.event.PacketSendEvent.call(PacketSendEvent.java:51) ~[?:?]
        at dev.ribica.magic.packets.event.EventManager.callEvent(EventManager.java:52) ~[?:?]
        at dev.ribica.magic.packets.util.PacketEventsImplHelper.handleClientBoundPacket(PacketEventsImplHelper.java:44) ~[?:?]
        at dev.ribica.magic.packetsio.injector.handlers.PacketEventsEncoder.handleClientBoundPacket(PacketEventsEncoder.java:82) ~[?:?]
        at dev.ribica.magic.packetsio.injector.handlers.PacketEventsEncoder.encode(PacketEventsEncoder.java:67) ~[?:?]
        at dev.ribica.magic.packetsio.injector.handlers.PacketEventsEncoder.encode(PacketEventsEncoder.java:46) ~[?:?]
        at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:90) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
        ... 40 more

IamMusavaRibica avatar May 15 '24 18:05 IamMusavaRibica