Elenterius / Biomancy

Biomancy is magi-tech Mod for Minecraft. The mod is inspired by Biopunk and Bio-Manipulation and features a fleshy art style.
https://modrinth.com/mod/biomancy
Other
40 stars 23 forks source link

Pehkui: Stack overflow with PehkuiCompat$ScaleModifier. #133

Closed ByThePowerOfScience closed 1 month ago

ByThePowerOfScience commented 3 months ago

Please complete the following information:

Describe the bug

PehkuiCompat$1 calls itself when trying to get scale data.

Stacktrace ``` [17Jun2024 20:31:24.976] [Server thread/WARN] [net.minecraft.world.entity.EntityType/]: Exception loading entity: net.minecraft.ReportedException: Loading entity NBT at net.minecraft.world.entity.Entity.m_20258_(Entity.java:1765) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.world.entity.EntityType.m_185988_(EntityType.java:532) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.Util.m_137521_(Util.java:419) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.world.entity.EntityType.m_20642_(EntityType.java:529) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.world.entity.EntityType.m_20669_(EntityType.java:607) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.world.entity.EntityType.m_20645_(EntityType.java:563) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.world.entity.EntityType$1.m_147056_(EntityType.java:584) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1856) ~[?:?] at net.minecraft.world.entity.EntityType$1.tryAdvance(EntityType.java:583) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at java.util.Spliterator.forEachRemaining(Spliterator.java:332) ~[?:?] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?] at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?] at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?] at net.minecraft.world.level.chunk.storage.EntityStorage.m_223456_(EntityStorage.java:62) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] at net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.TickTask.run(TickTask.java:18) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:156) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.MinecraftServer.m_6367_(MinecraftServer.java:770) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.MinecraftServer.m_6367_(MinecraftServer.java:161) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:130) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.MinecraftServer.m_129961_(MinecraftServer.java:753) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.MinecraftServer.m_7245_(MinecraftServer.java:747) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.util.thread.BlockableEventLoop.m_18699_(BlockableEventLoop.java:115) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.MinecraftServer.m_130012_(MinecraftServer.java:732) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:665) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23637!/:?] at java.lang.Thread.run(Thread.java:840) ~[?:?] Caused by: java.lang.StackOverflowError at virtuoel.pehkui.api.ScaleType.getScaleData(ScaleType.java:37) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.TypedScaleModifier.modifyScale(TypedScaleModifier.java:44) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at virtuoel.pehkui.api.ScaleData.getScale(ScaleData.java:252) ~[Pehkui-3.8.2+1.20.1-forge.jar%23542!/:?] at com.github.elenterius.biomancy.integration.pehkui.PehkuiCompat$1.modifyScale(PehkuiCompat.java:58) ~[biomancy-forge-1.20.1-2.8.1.0.jar%23397!/:2.8.1.0] ```

I made an issue with Pehkui thinking it was on their end, but they said it only happened because this mod's scale modifier class didn't check if it was the same as the one it was calling before doing it.

They suggested to use TypedScaleModifier, so I tried that (through Mixin), which just gave the same result but without the PehkuiCompat$1 lines.

You should sort this out with them since I've already reported the issue and had my ticket dismissed.

Expected behavior

The entity fetches the scale data without crashing the server. :/

Additional context

This is in a fairly-substantial modpack, but there's nothing in it that would be messing with this mechanism. If you can't reproduce the issue on your own, I could try to run a debugger on the server and figure out what's up.

Elenterius commented 3 months ago

Well i can't reproduce the issue, but I made a blind fix with the suggested TypedScaleModifier even though you mentioned your mixin attempt didn't work.

@ByThePowerOfScience please try the following build and let me know if that solves your issue or not: https://github.com/Elenterius/Biomancy/releases/download/1.20.1-v2.8.2.1/biomancy-forge-1.20.1-2.8.2.1.jar