Fixed item/fluid tag list resetting when changing quantity.

This commit is contained in:
raoulvdberge
2019-11-17 12:46:47 +01:00
parent 9182dc1794
commit f330299358
3 changed files with 18 additions and 3 deletions

View File

@@ -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));
}

View File

@@ -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);
}
}
}
}

View File

@@ -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);
}
}
}
}