Snowy Spirit

Snowy Spirit

11M Downloads

Loottable from Snowy Spirit tripping Lib39's Sandman

SleepyEmber opened this issue ยท 6 comments

commented

1.19.2 Quilt 0.17.6

https://mclo.gs/rBK7o3c (not reproducible without yttr and kahur installed)

Reported to Lib39's repo - https://git.sleeping.town/unascribed/Lib39/issues/6

It seems Snowy Spirit is trying to initialize it's loottable upon an inventory being read?

commented

I'm not sure what I would be doing wrong here. Loading up a loot table there should be completely valid. In fact it's the same exact thing that vanilla does when you open a treasure chest

commented

Yes, but I presume you shouldn't be throwing an exception when your inventory is being read? Sandman isn't doing anything weird, it just notices you implement Inventory and tries to read a stack.

I call out the loot table initialization because it seems like it's predicated on something having already been defined, but that won't necessarily be defined if someone else calls your method unqualified.

I'm adding a workaround to Sandman regardless.

commented

I'm not throwing any exceptions. Infact I'm using same exact copy pasted code chest minecarts use

commented

Not sure what you mean by all that. What would be "my method"?

commented

...Read the crash report linked in the OP.

java.lang.IllegalArgumentException: Parameters not allowed in this parameter set: [<parameter minecraft:killer_entity>]
	at net.minecraft.class_47$class_48.method_309(class_47.java:204)
	at net.mehvahdjukaar.snowyspirit.common.entity.ContainerHolderEntity.unpackLootTable(ContainerHolderEntity.java:463)
	at net.mehvahdjukaar.snowyspirit.common.entity.ContainerHolderEntity.method_5438(ContainerHolderEntity.java:328)
	at com.unascribed.lib39.sandman.TickAlwaysItemHandler.startServerWorldTick(TickAlwaysItemHandler.java:111)
	at net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents.lambda$static$6(ServerTickEvents.java:56)
	at org.quiltmc.qsl.lifecycle.api.event.ServerWorldTickEvents.lambda$static$0(ServerWorldTickEvents.java:39)
	at net.minecraft.class_3218.handler$kdn000$startTick(class_3218.java:15725)
	at net.minecraft.class_3218.method_18765(class_3218.java)
	at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:875)
	at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:819)
	at net.minecraft.class_1132.method_3748(class_1132.java:98)
	at net.minecraft.server.MinecraftServer.handler$ghh000$modifiedRunLoop(MinecraftServer.java:7385)
	at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:644)
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:257)
	at java.base/java.lang.Thread.run(Thread.java:833)

I don't modify anything about how loot tables work; Sandman is literally just calling getStack on your entity. Something about your code or loot table is crashing, or this is a more complex mod conflict.

commented

Seems like the method I copied included a forge patch.that exception doesn't even exist ok forge. I'll platform only it. Explains why I couldn't replicate