Crash after connecting ~200 extractors to a fluid pipe grid
bendem opened this issue ยท 4 comments
In trying to make a lava generator, we hoped we could get away with a pipe layer below a cauldron layer with an attractor on one end to collect it all. After realising attractors did not work for fluids, we did the dumb thing and added an extractor to the bottom of each cauldron. This resulted in a server crash and a crash loop with the following stack:
[23:40:24] [Server thread/ERROR]: Encountered an unexpected exception
java.lang.IllegalArgumentException: Transfer variant may not be blank.
at net.fabricmc.fabric.api.transfer.v1.storage.StoragePreconditions.notBlank(StoragePreconditions.java:39) ~[fabric-transfer-api-v1-1.6.3+f4563ac860-412f2a46d72d704c.jar:?]
at net.fabricmc.fabric.api.transfer.v1.storage.StoragePreconditions.notBlankNotNegative(StoragePreconditions.java:58) ~[fabric-transfer-api-v1-1.6.3+f4563ac860-412f2a46d72d704c.jar:?]
at net.fabricmc.fabric.impl.transfer.fluid.CauldronStorage.insert(CauldronStorage.java:99) ~[fabric-transfer-api-v1-1.6.3+f4563ac860-412f2a46d72d704c.jar:?]
at net.fabricmc.fabric.impl.transfer.fluid.CauldronStorage.insert(CauldronStorage.java:47) ~[fabric-transfer-api-v1-1.6.3+f4563ac860-412f2a46d72d704c.jar:?]
at dev.technici4n.moderndynamics.network.fluid.FluidHost$ExternalFluidStorage.insert(FluidHost.java:290) ~[Modern-Dynamics-0.2.6-beta.jar:?]
at dev.technici4n.moderndynamics.network.fluid.FluidHost$ExternalFluidStorage.insert(FluidHost.java:275) ~[Modern-Dynamics-0.2.6-beta.jar:?]
at net.fabricmc.fabric.api.transfer.v1.storage.base.FilteringStorage.insert(FilteringStorage.java:143) ~[fabric-transfer-api-v1-1.6.3+f4563ac860-412f2a46d72d704c.jar:?]
at dev.technici4n.moderndynamics.network.fluid.FluidCache.transferForTargets(FluidCache.java:186) ~[Modern-Dynamics-0.2.6-beta.jar:?]
at dev.technici4n.moderndynamics.network.fluid.FluidCache.doTick(FluidCache.java:134) ~[Modern-Dynamics-0.2.6-beta.jar:?]
at dev.technici4n.moderndynamics.network.NetworkCache.tick(NetworkCache.java:69) ~[Modern-Dynamics-0.2.6-beta.jar:?]
at dev.technici4n.moderndynamics.network.NetworkManager.onEndTick(NetworkManager.java:59) ~[Modern-Dynamics-0.2.6-beta.jar:?]
at dev.technici4n.moderndynamics.ModernDynamics.lambda$onInitialize$2(ModernDynamics.java:53) ~[Modern-Dynamics-0.2.6-beta.jar:?]
at net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents.lambda$static$2(ServerTickEvents.java:62) ~[fabric-lifecycle-events-v1-2.1.0+cc71601c60-20dcecc203202e15.jar:?]
at net.minecraft.server.MinecraftServer.handler$dcc002$onEndTick(MinecraftServer.java:5832) ~[server-intermediary.jar:?]
at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:889) ~[server-intermediary.jar:?]
at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:697) ~[server-intermediary.jar:?]
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:273) ~[server-intermediary.jar:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
This is All Of Fabric 5 with MD 0.2.6-beta.
The inventories that caused problems in the case are vanilla cauldrons. I don't think this was due to a misbehaving mod. But I can understand it's hard to track down.
This is related to FabricMC/fabric#2923. I am thinking about making a third-party mod that will track where each inventory was obtained from, and detect misbehaving blocks as soon as possible, to make finding them easier.