diff --git a/src/main/java/com/glodblock/github/client/GuiFluidExportBus.java b/src/main/java/com/glodblock/github/client/GuiFluidExportBus.java new file mode 100644 index 00000000..ab42c081 --- /dev/null +++ b/src/main/java/com/glodblock/github/client/GuiFluidExportBus.java @@ -0,0 +1,40 @@ +package com.glodblock.github.client; + +import appeng.client.gui.implementations.GuiUpgradeable; +import appeng.core.localization.GuiText; +import appeng.fluids.client.gui.widgets.GuiFluidSlot; +import appeng.fluids.client.gui.widgets.GuiOptionalFluidSlot; +import appeng.fluids.container.ContainerFluidIO; +import appeng.fluids.parts.PartSharedFluidBus; +import appeng.fluids.util.IAEFluidTank; +import com.glodblock.github.client.container.ContainerFluidExportBus; +import net.minecraft.entity.player.InventoryPlayer; + +public class GuiFluidExportBus extends GuiUpgradeable { + + private final PartSharedFluidBus bus; + + public GuiFluidExportBus(InventoryPlayer inventoryPlayer, PartSharedFluidBus te) { + super(new ContainerFluidExportBus(inventoryPlayer, te)); + this.bus = te; + } + + public void initGui() { + super.initGui(); + ContainerFluidIO container = (ContainerFluidIO)this.inventorySlots; + IAEFluidTank inv = this.bus.getConfig(); + this.guiSlots.add(new GuiFluidSlot(inv, 0, 0, 80, 40)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 1, 1, 1, 80, 40, -1, 0)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 2, 2, 1, 80, 40, 1, 0)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 3, 3, 1, 80, 40, 0, -1)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 4, 4, 1, 80, 40, 0, 1)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 5, 5, 2, 80, 40, -1, -1)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 6, 6, 2, 80, 40, 1, -1)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 7, 7, 2, 80, 40, -1, 1)); + this.guiSlots.add(new GuiOptionalFluidSlot(inv, container, 8, 8, 2, 80, 40, 1, 1)); + } + + protected GuiText getName() { + return GuiText.ExportBusFluids; + } +} diff --git a/src/main/java/com/glodblock/github/client/container/ContainerFluidExportBus.java b/src/main/java/com/glodblock/github/client/container/ContainerFluidExportBus.java new file mode 100644 index 00000000..eae16317 --- /dev/null +++ b/src/main/java/com/glodblock/github/client/container/ContainerFluidExportBus.java @@ -0,0 +1,25 @@ +package com.glodblock.github.client.container; + +import appeng.api.config.Settings; +import appeng.api.config.YesNo; +import appeng.api.util.IConfigManager; +import appeng.fluids.container.ContainerFluidIO; +import appeng.fluids.parts.PartSharedFluidBus; +import com.glodblock.github.common.part.PartFluidExportBus; +import net.minecraft.entity.player.InventoryPlayer; + +public class ContainerFluidExportBus extends ContainerFluidIO { + + public ContainerFluidExportBus(InventoryPlayer ip, PartSharedFluidBus te) { + super(ip, te); + } + + @Override + protected void loadSettingsFromHost(IConfigManager cm) { + super.loadSettingsFromHost(cm); + if (this.getUpgradeable() instanceof PartFluidExportBus) { + this.setCraftingMode((YesNo)cm.getSetting(Settings.CRAFT_ONLY)); + } + } + +} diff --git a/src/main/java/com/glodblock/github/common/part/PartFluidExportBus.java b/src/main/java/com/glodblock/github/common/part/PartFluidExportBus.java index 25bebe5b..8e564abe 100644 --- a/src/main/java/com/glodblock/github/common/part/PartFluidExportBus.java +++ b/src/main/java/com/glodblock/github/common/part/PartFluidExportBus.java @@ -29,6 +29,8 @@ import appeng.util.Platform; import appeng.util.item.AEItemStack; import com.glodblock.github.common.item.ItemFluidDrop; import com.glodblock.github.inventory.FluidConvertingInventoryAdaptor; +import com.glodblock.github.inventory.GuiType; +import com.glodblock.github.inventory.InventoryHandler; import com.google.common.collect.ImmutableSet; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -83,8 +85,10 @@ public class PartFluidExportBus extends PartSharedFluidBus implements ICraftingR @Override public boolean onPartActivate(EntityPlayer player, EnumHand hand, Vec3d pos) { + TileEntity te = this.getTile(); + BlockPos tePos = te.getPos(); if (Platform.isServer()) { - Platform.openGUI(player, this.getHost().getTile(), this.getSide(), GuiBridge.GUI_BUS_FLUID); + InventoryHandler.openGui(player, te.getWorld(), tePos, this.getSide().getFacing(), GuiType.FLUID_EXPORT_BUS); } return true; } @@ -141,18 +145,20 @@ public class PartFluidExportBus extends PartSharedFluidBus implements ICraftingR if( fluid != null ) { + boolean isAllowed = true; + final IAEFluidStack toExtract = fluid.copy(); toExtract.setStackSize( this.calculateAmountToSend() ); if( this.craftOnly() ) { - this.craftingTracker.handleCrafting( i, toExtract.getStackSize(), ItemFluidDrop.newAeStack(toExtract), destination, this.getTile().getWorld(), this.getProxy().getGrid(), cg, this.source ); + isAllowed = this.craftingTracker.handleCrafting( i, toExtract.getStackSize(), ItemFluidDrop.newAeStack(toExtract), destination, this.getTile().getWorld(), this.getProxy().getGrid(), cg, this.source ); } final IAEFluidStack out = inv.extractItems( toExtract, Actionable.SIMULATE, this.source ); - if( out != null ) + if( out != null && isAllowed ) { int wasInserted = fh.fill( out.getFluidStack(), true ); diff --git a/src/main/java/com/glodblock/github/inventory/GuiType.java b/src/main/java/com/glodblock/github/inventory/GuiType.java index 37a60ce4..8fd7459d 100644 --- a/src/main/java/com/glodblock/github/inventory/GuiType.java +++ b/src/main/java/com/glodblock/github/inventory/GuiType.java @@ -15,7 +15,7 @@ import appeng.helpers.IInterfaceHost; import appeng.parts.reporting.AbstractPartTerminal; import com.glodblock.github.client.*; import com.glodblock.github.client.container.*; -import com.glodblock.github.common.part.PartFluidPatternTerminal; +import com.glodblock.github.common.part.PartFluidExportBus; import com.glodblock.github.common.tile.TileBurette; import com.glodblock.github.common.tile.TileFluidPacketDecoder; import com.glodblock.github.common.tile.TileFluidPatternEncoder; @@ -35,6 +35,18 @@ import java.util.List; public enum GuiType { + FLUID_EXPORT_BUS(new PartOrTileGuiFactory(PartFluidExportBus.class) { + @Override + protected Object createServerGui(EntityPlayer player, PartFluidExportBus inv) { + return new ContainerFluidExportBus(player.inventory, inv); + } + + @Override + protected Object createClientGui(EntityPlayer player, PartFluidExportBus inv) { + return new GuiFluidExportBus(player.inventory, inv); + } + }), + INGREDIENT_BUFFER(new TileGuiFactory(TileIngredientBuffer.class) { @Override protected Object createServerGui(EntityPlayer player, TileIngredientBuffer inv) {