Skip to content

NullPointerException when trying to read from getStatisticMaps() #3591

@MythicalFlame

Description

@MythicalFlame
  • This issue is not solved in a development build

Describe the bug
I am trying to read a map of statistics sent to the player in the award statistics packet, but when I try to call event.getPacket().getStatisticMaps().read(0) I get a null pointer exception:

[15:56:38] [Server thread/ERROR]: [NetherReactor] Unhandled exception occurred in onPacketSending(PacketEvent) for NetherReactor java.lang.NullPointerException: Cannot invoke "com.comphenix.protocol.reflect.accessors.FieldAccessor.get(Object)" because "com.comphenix.protocol.wrappers.WrappedStatistic.GET_NAME" is null	at ProtocolLib.jar/com.comphenix.protocol.wrappers.WrappedStatistic.<init>(WrappedStatistic.java:43) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.wrappers.WrappedStatistic.fromHandle(WrappedStatistic.java:52) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.wrappers.Converters$3.getSpecific(Converters.java:105) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.wrappers.Converters$1.getSpecific(Converters.java:52) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.wrappers.BukkitConverters$1.getSpecific(BukkitConverters.java:249) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.wrappers.BukkitConverters$1.getSpecific(BukkitConverters.java:236) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.reflect.StructureModifier.readInternal(StructureModifier.java:303) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.reflect.StructureModifier.read(StructureModifier.java:253) ~[ProtocolLib.jar:?]	at NetherReactor-0.1.0.jar/me.mythicalflame.netherreactor.core.modules.vanilla.StatisticPacketInterceptor.onPacketSending(StatisticPacketInterceptor.java:37) ~[NetherReactor-0.1.0.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.collection.OutboundPacketListenerSet.invokeListener(OutboundPacketListenerSet.java:74) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.collection.PacketListenerSet.lambda$invoke$0(PacketListenerSet.java:123) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.timing.TimingTracker.lambda$static$0(TimingTracker.java:7) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.collection.PacketListenerSet.invoke(PacketListenerSet.java:123) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.collection.OutboundPacketListenerSet.invoke(OutboundPacketListenerSet.java:30) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.collection.PacketListenerSet.invoke(PacketListenerSet.java:102) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.PacketFilterManager.postPacketToListeners(PacketFilterManager.java:528) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.PacketFilterManager.invokeOutboundPacketListeners(PacketFilterManager.java:516) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.netty.channel.NettyChannelInjector.processOutbound(NettyChannelInjector.java:527) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.proxyRunnable(NettyEventLoopProxy.java:44) ~[ProtocolLib.jar:?]	at ProtocolLib.jar/com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.execute(NettyEventLoopProxy.java:233) ~[ProtocolLib.jar:?]	at net.minecraft.network.Connection.sendPacket(Connection.java:477) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.network.Connection.send(Connection.java:438) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.network.ServerCommonPacketListenerImpl.send(ServerCommonPacketListenerImpl.java:328) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.network.ServerCommonPacketListenerImpl.send(ServerCommonPacketListenerImpl.java:310) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.stats.ServerStatsCounter.sendStats(ServerStatsCounter.java:146) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.network.ServerGamePacketListenerImpl.handleClientCommand(ServerGamePacketListenerImpl.java:2901) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.network.protocol.game.ServerboundClientCommandPacket.handle(ServerboundClientCommandPacket.java:33) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.network.protocol.game.ServerboundClientCommandPacket.handle(ServerboundClientCommandPacket.java:8) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:29) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:155) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1449) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:176) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:129) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1429) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1423) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:139) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.managedBlock(MinecraftServer.java:1380) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1388) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1265) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310) ~[paper-1.21.8.jar:1.21.8-39-616a879]	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] [15:56:38] [Server thread/ERROR]: Parameters: net.minecraft.network.protocol.game.ClientboundAwardStatsPacket@3c3d523f[ stats={Stat{name=minecraft.custom:minecraft.time_since_rest, formatter=net.minecraft.stats.StatFormatter$$Lambda/0x00000179e1a1ebe0@2e89b6a0}=>26196, Stat{name=minecraft.custom:minecraft.leave_game, formatter=net.minecraft.stats.StatFormatter$$Lambda/0x00000179e1a1e5a8@64afc49f}=>7, Stat{name=minecraft.custom:minecraft.play_time, formatter=net.minecraft.stats.StatFormatter$$Lambda/0x00000179e1a1ebe0@2e89b6a0}=>26196, Stat{name=minecraft.custom:minecraft.time_since_death, formatter=net.minecraft.stats.StatFormatter$$Lambda/0x00000179e1a1ebe0@2e89b6a0}=>26196, Stat{name=minecraft.custom:minecraft.total_world_time, formatter=net.minecraft.stats.StatFormatter$$Lambda/0x00000179e1a1ebe0@2e89b6a0}=>26196} ] 

To Reproduce
Listen to PacketType.Play.Server.STATISTIC and call event.getPacket().getStatisticMaps().read(0)

Expected behavior
The code gets a map of statistics.

Version Info
https://pastebin.com/jb0yH4mi

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions