Modern Dynamics

Modern Dynamics

3M Downloads

Crash after connecting ~200 extractors to a fluid pipe grid

bendem opened this issue ยท 4 comments

commented

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.

commented

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.

commented

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.

commented

interesting, thanks.

commented

Sadly this is caused by connecting pipes to misbehaving inventories from other mods. It is really hard to find out which one though, sadly. :(