This commit is contained in:
asiekierka 2015-08-03 17:23:34 +02:00
parent ce9caf6dc8
commit ac59ef27e8
6 changed files with 39 additions and 3 deletions

View file

@ -6,8 +6,10 @@ Improvements:
Bugs fixed:
* [#2935, attempted] Programming Table robot board mixups (asie)
* [#2929] Builders unable to place liquid in survival mode (asie)
* [#2914] Advanced Crafting Table excess tick times in certain circumstances (asie)
* [#2898] Robot crash on chunk unload/reload (hea3ven)
* Fluid tanks rendering incorrectly in Builder (asie)
* Knight/Butcher not emitting Forge attack events (asie)
* Restoring robot block breaking state could fail (hea3ven)
* Stripes pipes placing extra blocks, and the behaviour of the stripes robot placing blocks (hea3ven)

View file

@ -967,4 +967,8 @@ public class TileBuilder extends TileAbstractBuilder implements IHasWork, IFluid
box.readData(stream);
fluidTank.readData(stream);
}
public Tank[] getFluidTanks() {
return fluidTanks;
}
}

View file

@ -26,6 +26,7 @@ import buildcraft.core.lib.gui.AdvancedSlot;
import buildcraft.core.lib.gui.GuiAdvancedInterface;
import buildcraft.core.lib.network.command.CommandWriter;
import buildcraft.core.lib.network.command.PacketCommand;
import buildcraft.core.lib.render.FluidRenderer;
import buildcraft.core.lib.utils.StringUtils;
public class GuiBuilder extends GuiAdvancedInterface {
@ -128,6 +129,7 @@ public class GuiBuilder extends GuiAdvancedInterface {
for (int i = 0; i < builder.fluidTanks.length; i++) {
Tank tank = builder.fluidTanks[i];
if (tank.getFluid() != null && tank.getFluid().amount > 0) {
mc.renderEngine.bindTexture(FluidRenderer.getFluidSheet(tank.getFluid()));
drawFluid(tank.getFluid(), guiLeft + 179 + 18 * i, guiTop + 145, 16, 47, tank.getCapacity());
drawTexturedModalRect(guiLeft + 179 + 18 * i, guiTop + 145, 0, 54, 16, 47);
}

View file

@ -14,7 +14,14 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.world.WorldSettings;
import net.minecraftforge.fluids.FluidStack;
import buildcraft.core.lib.fluids.Tank;
import buildcraft.core.lib.utils.FluidUtils;
public class BuildingSlotMapIterator {
private static final int MAX_PER_ITEM = 80;
@ -39,7 +46,15 @@ public class BuildingSlotMapIterator {
if (builder != null) {
availablePairs.add(new BuilderItemMetaPair(null));
for (int i = 0; i < builder.getSizeInventory(); i++) {
availablePairs.add(new BuilderItemMetaPair(builder.getStackInSlot(i)));
ItemStack stack = builder.getStackInSlot(i);
if (stack != null) {
availablePairs.add(new BuilderItemMetaPair(stack));
}
}
for (Tank t : builder.getFluidTanks()) {
if (t.getFluid() != null && t.getFluid().getFluid().getBlock() != null) {
availablePairs.add(new BuilderItemMetaPair(new ItemStack(t.getFluid().getFluid().getBlock())));
}
}
}

View file

@ -28,6 +28,7 @@ import buildcraft.core.LaserData;
import buildcraft.core.internal.IBoxProvider;
import buildcraft.core.lib.RFBattery;
import buildcraft.core.lib.block.TileBuildCraft;
import buildcraft.core.lib.fluids.Tank;
import buildcraft.core.lib.network.Packet;
import buildcraft.core.lib.network.command.CommandWriter;
import buildcraft.core.lib.network.command.ICommandReceiver;
@ -189,4 +190,8 @@ public abstract class TileAbstractBuilder extends TileBuildCraft implements ITil
public boolean drainBuild(FluidStack fluidStack, boolean realDrain) {
return false;
}
public Tank[] getFluidTanks() {
return new Tank[0];
}
}

View file

@ -1,10 +1,12 @@
package buildcraft.core.lib.utils;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fluids.IFluidContainerItem;
@ -23,8 +25,14 @@ public final class FluidUtils {
return FluidContainerRegistry.getFluidForFilledItem(stack);
} else if (stack.getItem() instanceof ItemBlock) {
Block b = Block.getBlockFromItem(stack.getItem());
if (b != null && b instanceof IFluidBlock && ((IFluidBlock) b).getFluid() != null) {
return new FluidStack(((IFluidBlock) b).getFluid(), 1000);
if (b != null) {
if (b instanceof IFluidBlock && ((IFluidBlock) b).getFluid() != null) {
return new FluidStack(((IFluidBlock) b).getFluid(), 1000);
} else if (b == Blocks.lava) {
return new FluidStack(FluidRegistry.getFluid("lava"), 1000);
} else if (b == Blocks.water) {
return new FluidStack(FluidRegistry.getFluid("water"), 1000);
}
}
}
}