Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
3 tasks done
P3rf3ctXZer0 opened this issue Nov 8, 2023 · 10 comments
Closed
3 tasks done
Labels

Comments

@P3rf3ctXZer0
Copy link

Is there an existing issue for this?

  • I have searched the existing issues.

Are you using the latest Structurize Version?

  • I am running the latest alpha version of Structurize for my Minecraft version.
    I am also running the latest versions of other mods that are part of my problem.

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

  • I checked the MineColonies/Structurize Wiki or I asked 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

  • Add a thumbs-up to the bug report if you are also affected. This helps the bug report become more visible to the team and doesn't clutter the comments.
  • Add a comment if you have any insights or background information that isn't already part of the conversation.
@P3rf3ctXZer0
Copy link
Author

@rrusciguy
Copy link

rrusciguy commented Nov 8, 2023

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
Copy link
Member

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

@uecasm
Copy link
Contributor

uecasm commented Nov 8, 2023

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
Copy link
Contributor

Raycoms commented Nov 8, 2023

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
Copy link
Contributor

uecasm commented Nov 8, 2023

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
Copy link
Contributor

Raycoms commented Nov 8, 2023

Ahhhh, that does make sense.

@Nightenom
Copy link
Member

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
Copy link
Author

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

@Nightenom
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants