Package mekanism.common.tile

Source Code of mekanism.common.tile.TileEntityChemicalInjectionChamber

package mekanism.common.tile;

import java.util.Map;

import mekanism.api.gas.Gas;
import mekanism.api.gas.GasRegistry;
import mekanism.api.gas.GasStack;
import mekanism.api.gas.GasTransmission;
import mekanism.api.gas.IGasHandler;
import mekanism.api.gas.IGasItem;
import mekanism.api.gas.ITubeConnection;
import mekanism.common.Mekanism;
import mekanism.common.block.BlockMachine.MachineType;
import mekanism.common.recipe.RecipeHandler.Recipe;
import mekanism.common.util.MekanismUtils;

import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;

public class TileEntityChemicalInjectionChamber extends TileEntityAdvancedElectricMachine implements IGasHandler, ITubeConnection
{
  public TileEntityChemicalInjectionChamber()
  {
    super("ChemicalInjectionChamber.ogg", "ChemicalInjectionChamber", Mekanism.chemicalInjectionChamberUsage, 1, 200, MachineType.CHEMICAL_INJECTION_CHAMBER.baseEnergy);
  }

  @Override
  public Map getRecipes()
  {
    return Recipe.CHEMICAL_INJECTION_CHAMBER.get();
  }

  @Override
  public GasStack getItemGas(ItemStack itemstack)
  {
    if(MekanismUtils.getOreDictName(itemstack).contains("dustSulfur")) return new GasStack(GasRegistry.getGas("sulfuricAcid"), 2);
    if(MekanismUtils.getOreDictName(itemstack).contains("dustSalt")) return new GasStack(GasRegistry.getGas("hydrogenChloride"), 2);
    if(Block.getBlockFromItem(itemstack.getItem()) == Mekanism.GasTank && ((IGasItem)itemstack.getItem()).getGas(itemstack) != null &&
        isValidGas(((IGasItem)itemstack.getItem()).getGas(itemstack).getGas())) return new GasStack(GasRegistry.getGas("sulfuricAcid"), 1);

    return null;
  }

  @Override
  public int receiveGas(ForgeDirection side, GasStack stack)
  {
    if(isValidGas(stack.getGas()))
    {
      return gasTank.receive(stack, true);
    }

    return 0;
  }

  @Override
  public boolean canReceiveGas(ForgeDirection side, Gas type)
  {
    return isValidGas(type);
  }

  @Override
  public void handleSecondaryFuel()
  {
    if(inventory[1] != null && gasTank.getNeeded() > 0 && inventory[1].getItem() instanceof IGasItem)
    {
      GasStack gas = ((IGasItem)inventory[1].getItem()).getGas(inventory[1]);

      if(gas != null && isValidGas(gas.getGas()))
      {
        GasStack removed = GasTransmission.removeGas(inventory[1], gasTank.getGasType(), gasTank.getNeeded());
        gasTank.receive(removed, true);
      }

      return;
    }

    super.handleSecondaryFuel();
  }

  @Override
  public boolean canTubeConnect(ForgeDirection side)
  {
    return true;
  }

  @Override
  public boolean isValidGas(Gas gas)
  {
    return gas == GasRegistry.getGas("sulfuricAcid") || gas == GasRegistry.getGas("water") || gas == GasRegistry.getGas("hydrogenChloride");
  }
}
TOP

Related Classes of mekanism.common.tile.TileEntityChemicalInjectionChamber

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.