diff --git a/src/main/java/blusunrize/immersiveengineering/client/gui/FluidSorterScreen.java b/src/main/java/blusunrize/immersiveengineering/client/gui/FluidSorterScreen.java index d090bc00d8..c831dc9e97 100644 --- a/src/main/java/blusunrize/immersiveengineering/client/gui/FluidSorterScreen.java +++ b/src/main/java/blusunrize/immersiveengineering/client/gui/FluidSorterScreen.java @@ -30,6 +30,7 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.material.Fluids; import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.FluidUtil; @@ -155,7 +156,10 @@ public void setFluidInSlot(int side, int slot, FluidStack fluid, Provider provid tag.putInt("filter_side", side); tag.putInt("filter_slot", slot); if(fluid!=null) - tag.put("filter", fluid.save(provider)); + if(fluid == FluidStack.EMPTY || fluid.getFluid() == Fluids.EMPTY) + tag.remove("filter"); + else + tag.put("filter", fluid.save(provider)); sendUpdateToServer(tag); } diff --git a/src/main/java/blusunrize/immersiveengineering/common/gui/FluidSorterMenu.java b/src/main/java/blusunrize/immersiveengineering/common/gui/FluidSorterMenu.java index b3a9961fca..409274d0de 100644 --- a/src/main/java/blusunrize/immersiveengineering/common/gui/FluidSorterMenu.java +++ b/src/main/java/blusunrize/immersiveengineering/common/gui/FluidSorterMenu.java @@ -13,7 +13,6 @@ import blusunrize.immersiveengineering.common.gui.sync.GenericContainerData; import blusunrize.immersiveengineering.common.gui.sync.GenericDataSerializers; import blusunrize.immersiveengineering.common.gui.sync.GetterAndSetter; -import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.world.entity.player.Inventory; @@ -22,6 +21,7 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.server.ServerLifecycleHooks; import javax.annotation.Nonnull; import java.util.Arrays; @@ -83,12 +83,11 @@ public void receiveMessageFromScreen(CompoundTag message) } if(message.contains("filter_side", Tag.TAG_INT)) { + var currentServer = ServerLifecycleHooks.getCurrentServer(); + if(null == currentServer) return; int side = message.getInt("filter_side"); int slot = message.getInt("filter_slot"); - FluidStack newFilter = FluidStack.parseOptional( - Minecraft.getInstance().level.registryAccess(), - message.getCompound("filter") - ); + FluidStack newFilter = FluidStack.parseOptional(currentServer.registryAccess(), message.getCompound("filter")); if(!newFilter.isEmpty()) newFilter.setAmount(1); // Not strictly necessary, but also doesn't hurt this.filters.get(side).get(slot).set(newFilter);