Fixed item/fluid tag list resetting when changing quantity.
This commit is contained in:
@@ -187,7 +187,7 @@ public abstract class BaseContainer extends Container {
|
||||
FluidStack actual = slot.getFluidInventory().getFluid(slot.getSlotIndex());
|
||||
|
||||
if (!API.instance().getComparer().isEqual(cached, actual, IComparer.COMPARE_QUANTITY | IComparer.COMPARE_NBT)) {
|
||||
this.fluids.set(i, actual);
|
||||
this.fluids.set(i, actual.copy());
|
||||
|
||||
RS.NETWORK_HANDLER.sendTo((ServerPlayerEntity) getPlayer(), new FluidFilterSlotUpdateMessage(slot.slotNumber, actual));
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
|
||||
import com.raoulvdberge.refinedstorage.container.slot.legacy.LegacyFilterSlot;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
@@ -42,7 +43,12 @@ public class SetFilterSlotMessage {
|
||||
Slot slot = container.getSlot(message.containerSlot);
|
||||
|
||||
if (slot instanceof FilterSlot || slot instanceof LegacyFilterSlot) {
|
||||
slot.putStack(message.stack);
|
||||
// Avoid resetting allowed tag list in the pattern grid.
|
||||
if (API.instance().getComparer().isEqualNoQuantity(slot.getStack(), message.stack)) {
|
||||
slot.getStack().setCount(message.stack.getCount());
|
||||
} else {
|
||||
slot.putStack(message.stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
@@ -40,7 +42,14 @@ public class SetFluidFilterSlotMessage {
|
||||
Slot slot = container.getSlot(message.containerSlot);
|
||||
|
||||
if (slot instanceof FluidFilterSlot) {
|
||||
((FluidFilterSlot) slot).getFluidInventory().setFluid(slot.getSlotIndex(), message.stack);
|
||||
FluidFilterSlot fluidFilterSlot = (FluidFilterSlot) slot;
|
||||
|
||||
// Avoid resetting allowed tag list in the pattern grid.
|
||||
if (API.instance().getComparer().isEqual(fluidFilterSlot.getFluidInventory().getFluid(slot.getSlotIndex()), message.stack, IComparer.COMPARE_NBT)) {
|
||||
fluidFilterSlot.getFluidInventory().getFluid(slot.getSlotIndex()).setAmount(message.stack.getAmount());
|
||||
} else {
|
||||
fluidFilterSlot.getFluidInventory().setFluid(slot.getSlotIndex(), message.stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user