apace100/apoli

[1.19.2] Crash caused by `replace_loot_table` power type

elytrafae opened this issue · 2 comments

Lootr chests cannot be opened while you have a replace_loot_table power. Any other ways of obtaining loot seem to work perfectly fine, but not Lootr.

Here is the error I receive whenever I try:
Failed to handle packet net.minecraft.class_2885@f5fd098, suppressing error java.lang.NullPointerException: Cannot invoke "net.minecraft.class_2960.toString()" because "id" is null at io.github.apace100.apoli.power.ReplaceLootTablePower.hasReplacement(ReplaceLootTablePower.java:58) at net.minecraft.class_52.mdde4da3$apoli$lambda$modifyLootTable$0$0(class_52.java:578) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178) at java.base/java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1242) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575) at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616) at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622) at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627) at net.minecraft.class_52.handler$zbn000$apoli$modifyLootTable(class_52.java:580) at net.minecraft.class_52.method_328(class_52.java) at net.minecraft.class_83.method_433(class_83.java:33) at net.minecraft.class_85$1.method_426(class_85.java:59) at net.minecraft.class_55.method_345(class_55.java:73) at net.minecraft.class_55.method_341(class_55.java:96) at net.minecraft.class_52.method_328(class_52.java:74) at net.minecraft.class_83.method_433(class_83.java:33) at net.minecraft.class_85$1.method_426(class_85.java:59) at net.minecraft.class_55.method_345(class_55.java:73) at net.minecraft.class_55.method_341(class_55.java:96) at net.minecraft.class_52.method_328(class_52.java:74) at net.minecraft.class_52.handler$zbn000$apoli$modifyLootTable(class_52.java:592) at net.minecraft.class_52.method_328(class_52.java) at net.minecraft.class_52.method_320(class_52.java:83) at net.minecraft.class_52.method_319(class_52.java:88) at net.minecraft.class_52.method_329(class_52.java:107) at net.zestyblaze.lootr.blocks.entities.LootrChestBlockEntity.unpackLootTable(LootrChestBlockEntity.java:249) at net.zestyblaze.lootr.data.ChestData.createInventory(ChestData.java:217) at net.zestyblaze.lootr.data.DataStorage.getInventory(DataStorage.java:194) at net.zestyblaze.lootr.util.ChestUtil.handleLootChest(ChestUtil.java:115) at net.zestyblaze.lootr.blocks.LootrChestBlock.method_9534(LootrChestBlock.java:61) at net.minecraft.class_4970$class_4971.method_26174(class_4970.java:964) at net.minecraft.class_3225.method_14262(class_3225.java:338) at net.minecraft.class_3244.method_12046(class_3244.java:1145) at net.minecraft.class_2885.method_12547(class_2885.java:34) at net.minecraft.class_2885.method_11054(class_2885.java:8) at net.minecraft.class_2600.method_11072(class_2600.java:22) at net.minecraft.class_3738.run(class_3738.java:18) at net.minecraft.class_1255.method_18859(class_1255.java:157) at net.minecraft.class_4093.method_18859(class_4093.java:23) at net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:776) at net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:159) at net.minecraft.class_1255.method_16075(class_1255.java:131) at net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:758) at net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:752) at net.minecraft.class_1255.method_5383(class_1255.java:116) at net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:736) at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:669) at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:257) at java.base/java.lang.Thread.run(Thread.java:833)

Update: After prolonged testing, it seems like the issue stems from EXACTLY minecraft:chests/buried_treasure, regardless if the replace_loot_table power should affect it or not.

This is an issue with the implementation of the replace_loot_table power type, which has been fixed in Origins 1.12.0 (for Minecraft 1.20.2.) There's a backport planned (only bug-fixes for 1.19.x, but features are planned in 1.20.1), but there's no ETA