[1.20.1] Spatial IO does nothing when given redstone signal (error in server console)
Shadowevil015 opened this issue ยท 9 comments
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
party.lemons.taniwha.level.LevelDataManager
No idea what this is .... but it's incompatible!
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)
Ah yep, here it is: https://github.com/Lemonszz/taniwha
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.
They're not replacing anything. It seems both AE2 and that mod wants to use ae2_spatial_storage
https://github.com/Lemonszz/taniwha/blob/8496d788e22569c99a560f242e4a2fbbf8bc4870/common/src/main/java/party/lemons/taniwha/level/LevelDataManager.java#L131-L135
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.
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!