ldtteam / Structurize

Minecraft Structures
GNU General Public License v3.0
45 stars 45 forks source link

1.20.2 - Description: Ticking entity ``Non Descript Crash`` after update. #628

Closed P3rf3ctXZer0 closed 10 months ago

P3rf3ctXZer0 commented 10 months ago

Is there an existing issue for this?

Are you using the latest Structurize Version?

Did you check on the Wiki? or ask on Discord?

Minecraft Version

1.20

Structurize Version

structurize-1.20.1-1.0.662-BETA.jar

MineColonies Version (if related bug)

minecolonies-1.20.1-1.1.303-BETA.jar

Related Mods and their Versions

https://legacy.curseforge.com/minecraft/modpacks/fiction-friction-pixelmon/files/4846571

Current Behavior

Structurize crash https://gist.github.com/P3rf3ctXZer0/1fc0ec239d0f40138e0a61cb74276bb1

``Suspected Mods: MineColonies (minecolonies), Version: 1.20.1-1.1.303-BETA Issue tracker URL: https://github.com/ldtteam/minecolonies/issues/new/choose at TRANSFORMER/minecolonies@1.20.1-1.1.303-BETA/com.minecolonies.coremod.entity.ai.util.BuildingStructureHandler.triggerSuccess(BuildingStructureHandler.java:206)

Structurize (structurize), Version: 1.20.1-1.0.662-BETA
    Issue tracker URL: https://github.com/ldtteam/structurize/issues/new/choose
    at TRANSFORMER/structurize@1.20.1-1.0.662-BETA/com.ldtteam.structurize.placement.AbstractBlueprintIterator.iterateWithCondition(AbstractBlueprintIterator.java:126)

Observable (observable), Version: 4.4.0
    Issue tracker URL: https://github.com/tasgon/observable/issues
    Mixin class: observable.mixin.ServerLevelMixin
    Target: net.minecraft.server.level.ServerLevel
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerLevel.track(ServerLevel.java:11169)``

Expected Behavior

No Crash

Reproduction Steps

Updated structurize-1.20.1-1.0.659-BETA.jar to structurize-1.20.1-1.0.662-BETA.jar Be on a Dedicated Server (At least in my test.)

Logs

https://gist.github.com/P3rf3ctXZer0/1fc0ec239d0f40138e0a61cb74276bb1

Anything else?

Nope.

Footer


Viewers

P3rf3ctXZer0 commented 10 months ago

No Observable Present https://gist.github.com/P3rf3ctXZer0/eeb057e9d253ba9dff693c9359d43001

rrusciguy commented 10 months ago

Same versions as Zer0 but in single player, 2 crashes, both referencing an error ticking the same entity https://gist.github.com/rrusciguy/aebce9ae95b3b9770faa687f36c3f6ca

Nightenom commented 10 months ago

This is beyond my java/jvm knowledge, the method hasn't changed in last commit, just iface was added...

uecasm commented 10 months ago

Looks like Blueprint.getBlockState used to be a unique method and is now an interface override (but lacking the @Override attribute). Whether that makes it ABI incompatible is also beyond my JVM knowledge, but it seems possible.

If it was that particular change, then the short-term workaround would be to downgrade Structurize to 659 until Minecolonies requires the newer version.

Raycoms commented 10 months ago

Ye, had the same thought too, unfortunately the same name and method erasure as the vanilla method, so we will have to dump the structurize version in minecolonies

uecasm commented 10 months ago

Oh, actually, that'll be what it was: according to all sources I can find this sort of "add an interface" is usually ABI compatible in Java, but in the specific case of Minecraft it isn't, because the added interface was a vanilla interface and thus the "real" method name isn't getBlockState any more but the obfuscated version. Which is why it would also still mysteriously work in a dev environment.

Or to put that another way, the ABI break is that Blueprint.getBlockState got renamed to Blueprint.m_7583578 (or whatever, I didn't actually look it up).

Raycoms commented 10 months ago

Ahhhh, that does make sense.

Nightenom commented 10 months ago

Mcol was bumped so now it should compile properly (please close if fixed), btw this would get caught by bin compat checker, guess I really gonna create one...

P3rf3ctXZer0 commented 10 months ago

They will close it when its fixed I am sure - they always do.

Nightenom commented 10 months ago

They will close it when its fixed I am sure - they always do.

I can close it :D but I want to be sure it works as I intended, so that's why I asked you to close it if it works for u now