Skip to content

Commit

Permalink
Voiding boilers fix (#19)
Browse files Browse the repository at this point in the history
* Updated buildscript and .gitignore

* Don't void fluids in boilers
- Fluid boilers GUIs only accept valid fluids
- Fluid and solid boilers only drain liquid containers when they have
  space for their contents
  • Loading branch information
YannickMG authored Jan 10, 2022
1 parent 925e4f6 commit c24af07
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import mods.railcraft.common.util.inventory.wrappers.InventoryMapper;
import mods.railcraft.common.util.inventory.StandaloneInventory;
import mods.railcraft.common.fluids.FluidHelper;
import mods.railcraft.common.fluids.FluidItemHelper;
import mods.railcraft.common.util.misc.Game;
import mods.railcraft.common.util.misc.ITileFilter;
import mods.railcraft.common.util.steam.Steam;
Expand Down Expand Up @@ -144,7 +145,10 @@ public void updateEntity() {
protected abstract void process();

protected void processBuckets() {
FluidHelper.drainContainers(this, inventory, SLOT_LIQUID_INPUT, SLOT_LIQUID_OUTPUT);
FluidStack fluidStack = FluidItemHelper.getFluidStackInContainer(getStackInSlot(SLOT_LIQUID_INPUT));
if ( (fluidStack != null) && this.fill(ForgeDirection.UNKNOWN, fluidStack, false) > 0) {
FluidHelper.drainContainers(this, inventory, SLOT_LIQUID_INPUT, SLOT_LIQUID_OUTPUT);
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,6 @@ protected boolean handleClick(EntityPlayer player, int side) {
protected void process() {
}

@Override
protected void processBuckets() {
super.processBuckets();

FluidHelper.drainContainers(this, inventory, SLOT_LIQUID_INPUT, SLOT_LIQUID_OUTPUT);
}

@Override
public boolean canFill(ForgeDirection from, Fluid fluid) {
if (fluid == null) return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import net.minecraft.inventory.Slot;
import mods.railcraft.common.blocks.machine.beta.TileBoilerFireboxFluid;
import mods.railcraft.common.gui.widgets.IndicatorWidget;
import mods.railcraft.common.gui.slots.SlotFluidContainerFilled;
import mods.railcraft.common.gui.slots.SlotBoilerFluidContainerFilled;
import mods.railcraft.common.gui.slots.SlotOutput;
import mods.railcraft.common.gui.widgets.FluidGaugeWidget;
import mods.railcraft.common.fluids.TankManager;
Expand All @@ -38,7 +38,7 @@ public ContainerBoilerFluid(InventoryPlayer inventoryplayer, TileBoilerFireboxFl

addWidget(new IndicatorWidget(tile.boiler.heatIndicator, 40, 25, 176, 61, 6, 43));

addSlot(new SlotFluidContainerFilled(tile, 0, 143, 21));
addSlot(new SlotBoilerFluidContainerFilled(tile, 0, 143, 21));
addSlot(new SlotOutput(tile, 1, 143, 56));

for (int i = 0; i < 3; i++) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package mods.railcraft.common.gui.slots;

import mods.railcraft.api.fuel.FuelManager;
import mods.railcraft.common.fluids.FluidItemHelper;
import mods.railcraft.common.fluids.Fluids;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;

public class SlotBoilerFluidContainerFilled extends SlotFluidContainerFilled {

public SlotBoilerFluidContainerFilled(IInventory iinventory, int slotIndex, int posX, int posY) {
super(iinventory, slotIndex, posX, posY);
}


@Override
public boolean isItemValid(ItemStack itemstack)
{
Fluid fluid = FluidItemHelper.getFluidInContainer(itemstack);
return super.isItemValid(itemstack) && (FuelManager.getBoilerFuelValue(fluid) > 0 || Fluids.WATER.is(fluid));
}

}

0 comments on commit c24af07

Please sign in to comment.