Finished Chemical Dissolution Chamber tile code

This commit is contained in:
Aidan C. Brady 2014-01-28 18:47:06 -05:00
parent 03fa654ddf
commit 6a18c338cd

View file

@ -2,9 +2,8 @@ package mekanism.common.tile;
import java.util.ArrayList; import java.util.ArrayList;
import com.google.common.io.ByteArrayDataInput;
import mekanism.api.Coord4D; import mekanism.api.Coord4D;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasRegistry; import mekanism.api.gas.GasRegistry;
import mekanism.api.gas.GasStack; import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTank; import mekanism.api.gas.GasTank;
@ -17,7 +16,6 @@ import mekanism.common.IActiveState;
import mekanism.common.IRedstoneControl; import mekanism.common.IRedstoneControl;
import mekanism.common.Mekanism; import mekanism.common.Mekanism;
import mekanism.common.PacketHandler; import mekanism.common.PacketHandler;
import mekanism.common.IRedstoneControl.RedstoneControl;
import mekanism.common.PacketHandler.Transmission; import mekanism.common.PacketHandler.Transmission;
import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.block.BlockMachine.MachineType;
import mekanism.common.network.PacketTileEntity; import mekanism.common.network.PacketTileEntity;
@ -31,7 +29,9 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBlock implements IActiveState, ITubeConnection, IRedstoneControl, IHasSound import com.google.common.io.ByteArrayDataInput;
public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBlock implements IActiveState, ITubeConnection, IRedstoneControl, IHasSound, IGasHandler
{ {
public GasTank injectTank = new GasTank(MAX_GAS); public GasTank injectTank = new GasTank(MAX_GAS);
public GasTank outputTank = new GasTank(MAX_GAS); public GasTank outputTank = new GasTank(MAX_GAS);
@ -99,7 +99,7 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
if(inventory[0] != null && (injectTank.getGas() == null || injectTank.getStored() < injectTank.getMaxGas())) if(inventory[0] != null && (injectTank.getGas() == null || injectTank.getStored() < injectTank.getMaxGas()))
{ {
injectTank.receive(GasTransmission.removeGas(inventory[0], null, injectTank.getNeeded()), true); injectTank.receive(GasTransmission.removeGas(inventory[0], GasRegistry.getGas("sulfuricAcid"), injectTank.getNeeded()), true);
} }
if(inventory[2] != null && outputTank.getGas() != null) if(inventory[2] != null && outputTank.getGas() != null)
@ -120,6 +120,8 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
GasStack stack = RecipeHandler.getItemToGasOutput(inventory[1], true, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()); GasStack stack = RecipeHandler.getItemToGasOutput(inventory[1], true, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get());
outputTank.receive(stack, true); outputTank.receive(stack, true);
injectTank.draw(INJECT_USAGE, true);
operatingTicks = 0; operatingTicks = 0;
if(inventory[1].stackSize <= 0) if(inventory[1].stackSize <= 0)
@ -160,11 +162,11 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
@Override @Override
public boolean isItemValidForSlot(int slotID, ItemStack itemstack) public boolean isItemValidForSlot(int slotID, ItemStack itemstack)
{ {
if(slotID == 0) if(slotID == 1)
{ {
return RecipeHandler.getItemToGasOutput(itemstack, false, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()) != null; return RecipeHandler.getItemToGasOutput(itemstack, false, Recipe.CHEMICAL_DISSOLUTION_CHAMBER.get()) != null;
} }
else if(slotID == 1) else if(slotID == 3)
{ {
return ChargeUtils.canBeDischarged(itemstack); return ChargeUtils.canBeDischarged(itemstack);
} }
@ -188,11 +190,11 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
{ {
if(side == MekanismUtils.getLeft(facing).ordinal()) if(side == MekanismUtils.getLeft(facing).ordinal())
{ {
return new int[] {0}; return new int[] {1};
} }
else if(side == 0 || side == 1) else if(side == 0 || side == 1)
{ {
return new int[] {1}; return new int[] {0};
} }
else if(side == MekanismUtils.getRight(facing).ordinal()) else if(side == MekanismUtils.getRight(facing).ordinal())
{ {
@ -386,4 +388,33 @@ public class TileEntityChemicalDissolutionChamber extends TileEntityElectricBloc
{ {
return 1; return 1;
} }
@Override
public int receiveGas(ForgeDirection side, GasStack stack)
{
if(canReceiveGas(side, stack.getGas()))
{
return injectTank.receive(stack, true);
}
return 0;
}
@Override
public GasStack drawGas(ForgeDirection side, int amount)
{
return null;
}
@Override
public boolean canReceiveGas(ForgeDirection side, Gas type)
{
return side == MekanismUtils.getLeft(facing) && type == GasRegistry.getGas("sulfuricAcid");
}
@Override
public boolean canDrawGas(ForgeDirection side, Gas type)
{
return false;
}
} }