Applied Energistics 2

Applied Energistics 2

156M Downloads

[1.20.1] Spatial IO does nothing when given redstone signal (error in server console)

Shadowevil015 opened this issue ยท 9 comments

commented

Describe the bug

When trying to activate a spatial io port, it does nothing, but it provides an error in the server console https://mclo.gs/50Z3Ihx

How to reproduce the bug

Build a spatial setup of any size (in this case, enough for a 1x1x1), put a spatial drive into the spatial io port, and press the button on it, and it does nothing and gives a error in console.

Expected behavior

It should take the block, and store it in the spatial drive

Additional details

Using Neoforge 47.1.79 (latest), in a modpack with around 100 other mods (can provide a list if thats the suspected issue)
Also running on a server, not singleplayer.

Which minecraft version are you using?

1.20

On which mod loaders does it happen?

Forge

Crash log

https://mclo.gs/50Z3Ihx

commented

party.lemons.taniwha.level.LevelDataManager

No idea what this is .... but it's incompatible!

commented

README.md

Here is the modlist, any ideas? May possibly be this mod? https://github.com/Lemonszz/Biome-Makeover (only mod i can find that i have with lemons in it lol)

commented
commented

A "general purpose library" should not be replacing vanilla classes...

commented

Did I misunderstand the purpose of this mixin then?

The issue isn't an ID mismatch, it's the fact that LevelDataManager is being used with the spatialio dimension in the first place.

commented
commented

Yes you're not reading that mixin right. Once a level is made, it'll immediately make its own LevelDataManager (which it also ticks) with the name <namespace>_<path>. AE2 computeIfAbsents on the same <namespace>_<path>, but its not absent so it wont compute AE2's thing (so no SpatialStorageWorldData). If anything it's an unsafe generic type cast in Minecraft code

public <T> T computeIfAbsent(String key, Supplier<T> producer) {
    Object thing = this.get(key);

    if (thing != null) {
        return (T) thing; // unsafe
    } else {
        T thing = producer.get();
        this.put(key, thing);
        return thing;
    }
}

The only reasonable quick fix is if someone stops using the same ID. IMO AE2 is well within its rights to reserve ae2_spatial_storage so that other mod should use something else, perhaps with a prefix. Would also need an upgrade path for them.

commented

Just uploaded a version that use's it's own namespace.

Thanks for making me aware - give me a shout if there's any further issues!

commented

See above comment for fixed version!