Skip to content

[Bug] 未注册 TimerCallback 的 Serializer 导致崩溃 #9

@Viola-Siemens

Description

@Viola-Siemens

OS Version - 操作系统

Windows

Minecraft Version Details - Minecraft 版本信息

1.21.1

Mod Loader - 模组加载器

NeoForge

Version Details - 版本信息

0.0.1

Existing behavior - 现有行为

崩溃

java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.timers.TimerCallback$Serializer.serialize(net.minecraft.nbt.CompoundTag, net.minecraft.world.level.timers.TimerCallback)" because "$$1" is null
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.timers.TimerCallbacks.serialize(TimerCallbacks.java:43) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:classloading}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.timers.TimerQueue.storeEvent(TimerQueue.java:124) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:classloading}
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?] {}
	at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[?:?] {}
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[?:?] {}
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] {}
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:?] {}
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:?] {}
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?] {}
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?] {}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.timers.TimerQueue.store(TimerQueue.java:130) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:classloading}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.storage.PrimaryLevelData.setTagData(PrimaryLevelData.java:275) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:classloading}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.storage.PrimaryLevelData.createTag(PrimaryLevelData.java:218) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:classloading}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess.saveDataTag(LevelStorageSource.java:508) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:mixin,xf:fml:xaerominimap:xaero_levelstorageaccess_deletelevel,xf:fml:xaeroworldmap:xaero_wm_levelstorageaccess_deletelevel,re:classloading,xf:fml:xaerominimap:xaero_levelstorageaccess_deletelevel,xf:fml:xaeroworldmap:xaero_wm_levelstorageaccess_deletelevel}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.server.MinecraftServer.saveAllChunks(MinecraftServer.java:559) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,re:classloading,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,pl:mixin:APP:mixins.minihud.json:IMixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.minihud.json:MixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.malilib.json:server.MixinMinecraftServer from mod mafglib,pl:mixin:APP:rolling_gate.mixins.json:MinecraftServerMixin from mod rolling_gate,pl:mixin:APP:bedrock_world.mixins.json:MinecraftServerMixin from mod bedrock_world,pl:mixin:APP:tweakermore.mixins.json:tweaks.features.serverMsptMetricsStatistic.MinecraftServerMixin from mod tweakermoreforge,pl:mixin:APP:bettertab.mixins.json:MinecraftServerMixin from mod bettertab,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.server.MinecraftServer.saveEverything(MinecraftServer.java:576) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,re:classloading,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,pl:mixin:APP:mixins.minihud.json:IMixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.minihud.json:MixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.malilib.json:server.MixinMinecraftServer from mod mafglib,pl:mixin:APP:rolling_gate.mixins.json:MinecraftServerMixin from mod rolling_gate,pl:mixin:APP:bedrock_world.mixins.json:MinecraftServerMixin from mod bedrock_world,pl:mixin:APP:tweakermore.mixins.json:tweaks.features.serverMsptMetricsStatistic.MinecraftServerMixin from mod tweakermoreforge,pl:mixin:APP:bettertab.mixins.json:MinecraftServerMixin from mod bettertab,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.server.IntegratedServer.saveEverything(IntegratedServer.java:303) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:mixins.malilib.json:server.MixinIntegratedServer from mod mafglib,pl:mixin:APP:rolling_gate.mixins.json:IntegratedServerMixin from mod rolling_gate,pl:mixin:APP:mixins.recording.replaymod.json:IntegratedServerAccessor from mod reforgedplaymod,pl:mixin:APP:mixins.litematica.json:server.MixinIntegratedServer from mod forgematica,pl:mixin:A,pl:runtimedistcleaner:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.server.IntegratedServer.tickServer(IntegratedServer.java:98) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:mixins.malilib.json:server.MixinIntegratedServer from mod mafglib,pl:mixin:APP:rolling_gate.mixins.json:IntegratedServerMixin from mod rolling_gate,pl:mixin:APP:mixins.recording.replaymod.json:IntegratedServerAccessor from mod reforgedplaymod,pl:mixin:APP:mixins.litematica.json:server.MixinIntegratedServer from mod forgematica,pl:mixin:A,pl:runtimedistcleaner:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:707) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,re:classloading,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,pl:mixin:APP:mixins.minihud.json:IMixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.minihud.json:MixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.malilib.json:server.MixinMinecraftServer from mod mafglib,pl:mixin:APP:rolling_gate.mixins.json:MinecraftServerMixin from mod rolling_gate,pl:mixin:APP:bedrock_world.mixins.json:MinecraftServerMixin from mod bedrock_world,pl:mixin:APP:tweakermore.mixins.json:tweaks.features.serverMsptMetricsStatistic.MinecraftServerMixin from mod tweakermoreforge,pl:mixin:APP:bettertab.mixins.json:MinecraftServerMixin from mod bettertab,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:267) ~[client-1.21.1-20240808.144430-srg.jar%23211!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,re:classloading,pl:accesstransformer:B,xf:fml:xaerominimap:xaero_minecraftserver,xf:fml:xaeroworldmap:xaero_wm_minecraftserver,pl:mixin:APP:mixins.minihud.json:IMixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.minihud.json:MixinMinecraftServer from mod bocchud,pl:mixin:APP:mixins.malilib.json:server.MixinMinecraftServer from mod mafglib,pl:mixin:APP:rolling_gate.mixins.json:MinecraftServerMixin from mod rolling_gate,pl:mixin:APP:bedrock_world.mixins.json:MinecraftServerMixin from mod bedrock_world,pl:mixin:APP:tweakermore.mixins.json:tweaks.features.serverMsptMetricsStatistic.MinecraftServerMixin from mod tweakermoreforge,pl:mixin:APP:bettertab.mixins.json:MinecraftServerMixin from mod bettertab,pl:mixin:A}
	at java.base/java.lang.Thread.run(Thread.java:1583) [?:?] {re:mixin}

Expected behavior - 预期行为

别崩。

具体而言,别用匿名 TimerCallback,并给它注册 Serializer。

timerqueue.schedule(id, ((ServerLevel) accessor).getGameTime() + 1, (minecraftServer, timerQueue, l) -> {
if (!state2.is(BlockTags.LEAVES)) return;
state2.randomTick((ServerLevel) accessor, offset, accessor.getRandom());
});

To Reproduce - 复现问题

minecraft-exported-crash-info-2025-11-03T19-16-01.zip
minecraft-exported-crash-info-2025-11-03T20-03-14.zip

This issue is unique - 这个issue是唯一的

  • I have searched the issue tracker and did not find an issue describing my bug. - 我已经搜索问题追踪器并且没有发现相同的 issue。

Metadata

Metadata

Assignees

No one assigned

    Labels

    🐛 bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions