Package logisticspipes.proxy.ic2

Source Code of logisticspipes.proxy.ic2.IC2Proxy

package logisticspipes.proxy.ic2;

import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergyTile;
import ic2.api.item.IC2Items;
import ic2.api.item.IElectricItem;
import ic2.api.recipe.Recipes;
import logisticspipes.LogisticsPipes;
import logisticspipes.blocks.LogisticsSolidBlock;
import logisticspipes.items.ItemModule;
import logisticspipes.items.ItemUpgrade;
import logisticspipes.proxy.MainProxy;
import logisticspipes.proxy.interfaces.ICraftingParts;
import logisticspipes.proxy.interfaces.IIC2Proxy;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;


public class IC2Proxy implements IIC2Proxy {

  /**
   * @return Boolean, true if itemstack is a ic2 electric item.
   * @param stack The stack to check.
   */
  @Override
  public boolean isElectricItem(ItemStack stack) {
    return stack != null && (stack.getItem() instanceof IElectricItem);
  }

  /**
   * @return Boolean, true if stack is the same type of ic2 electric item as template.
   * @param stack The stack to check
   * @param template The stack to compare to
   */
  @Override
  public boolean isSimilarElectricItem(ItemStack stack, ItemStack template) {
    if (stack == null || template == null || !isElectricItem(template)) return false;
    if (((IElectricItem) template.getItem()).getEmptyItem(stack) == stack.getItem()) return true;
    if (((IElectricItem) template.getItem()).getChargedItem(stack) == stack.getItem()) return true;
    return false;
  }

  /**
   * @return Int value of current charge on electric item.
   * @param stack The stack to get charge for.
   */
  private double getCharge(ItemStack stack) {
    if ((stack.getItem() instanceof IElectricItem) && stack.hasTagCompound()) {
      return stack.getTagCompound().getDouble("charge");
    } else {
      return 0;
    }
  }

  /**
   * @return Int value of maximum charge on electric item.
   * @param stack The stack to get max charge for.
   */
  private double getMaxCharge(ItemStack stack) {
    if (!(stack.getItem() instanceof IElectricItem)) return 0;
    return ((IElectricItem) stack.getItem()).getMaxCharge(stack);
  }

  /**
   * @return Boolean, true if electric item is fully charged.
   * @param stack The stack to check if its fully charged.
   */
  @Override
  public boolean isFullyCharged(ItemStack stack) {
    if (!isElectricItem(stack)) return false;
    if (((IElectricItem) stack.getItem()).getChargedItem(stack) != stack.getItem()) return false;
    double charge = getCharge(stack);
    double maxCharge = getMaxCharge(stack);
    return charge == maxCharge;
  }
 
  /**
   * @return Boolean, true if electric item is fully discharged.
   * @param stack The stack to check if its fully discharged.
   */
  @Override
  public boolean isFullyDischarged(ItemStack stack) {
    if (!isElectricItem(stack)) return false;
    if (((IElectricItem) stack.getItem()).getEmptyItem(stack) != stack.getItem()) return false;
    double charge = getCharge(stack);
    return charge == 0;
  }
 
  /**
   * @return Boolean, true if electric item contains charge but is not full.
   * @param stack The stack to check if its partially charged.
   */
  @Override
  public boolean isPartiallyCharged(ItemStack stack) {
    if (!isElectricItem(stack)) return false;
    if (((IElectricItem) stack.getItem()).getChargedItem(stack) != stack.getItem()) return false;
    double charge = getCharge(stack);
    double maxCharge = getMaxCharge(stack);
    return charge != maxCharge;
  }
 
  /**
   * Adds crafting recipes to "IC2 Crafting"
   */
  @Override
  public void addCraftingRecipes(ICraftingParts parts) {
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICBUFFER), new Object[] {
      "CGC",
      "rBr",
      "CrC",
      Character.valueOf('C'), IC2Items.getItem("advancedCircuit"),
      Character.valueOf('G'), parts.getGearTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICBUFFER), new Object[] {
      " G ",
      "rBr",
      "CrC",
      Character.valueOf('C'), IC2Items.getItem("advancedCircuit"),
      Character.valueOf('G'), parts.getChipTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });


    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICMANAGER), new Object[] {
      "CGD",
      "rBr",
      "DrC",
      Character.valueOf('C'), IC2Items.getItem("electronicCircuit"),
      Character.valueOf('D'), IC2Items.getItem("reBattery"),
      Character.valueOf('G'), parts.getGearTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICMANAGER), new Object[] {
      "CGD",
      "rBr",
      "DrC",
      Character.valueOf('C'), IC2Items.getItem("electronicCircuit"),
      Character.valueOf('D'), IC2Items.getItem("chargedReBattery"),
      Character.valueOf('G'), parts.getGearTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICMANAGER), new Object[] {
      "CGc",
      "rBr",
      "DrC",
      Character.valueOf('C'), IC2Items.getItem("electronicCircuit"),
      Character.valueOf('c'), IC2Items.getItem("reBattery"),
      Character.valueOf('D'), IC2Items.getItem("chargedReBattery"),
      Character.valueOf('G'), parts.getGearTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICMANAGER), new Object[] {
      "CGc",
      "rBr",
      "DrC",
      Character.valueOf('C'), IC2Items.getItem("electronicCircuit"),
      Character.valueOf('c'), IC2Items.getItem("chargedReBattery"),
      Character.valueOf('D'), IC2Items.getItem("reBattery"),
      Character.valueOf('G'), parts.getGearTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });

    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICMANAGER), new Object[] {
      " G ",
      "rBr",
      "DrC",
      Character.valueOf('C'), IC2Items.getItem("electronicCircuit"),
      Character.valueOf('D'), IC2Items.getItem("reBattery"),
      Character.valueOf('G'), parts.getChipTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.ELECTRICMANAGER), new Object[] {
      " G ",
      "rBr",
      "DrC",
      Character.valueOf('C'), IC2Items.getItem("electronicCircuit"),
      Character.valueOf('D'), IC2Items.getItem("chargedReBattery"),
      Character.valueOf('G'), parts.getChipTear2(),
      Character.valueOf('r'), Items.redstone,
      Character.valueOf('B'), new ItemStack(LogisticsPipes.ModuleItem, 1, ItemModule.BLANK)
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_IC2_LV_SUPPLIER), new Object[] {
      "PSP",
      "OBO",
      "PTP",
      Character.valueOf('B'), new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_TRANSPORTATION),
      Character.valueOf('S'), IC2Items.getItem("energyStorageUpgrade"),
      Character.valueOf('O'), IC2Items.getItem("overclockerUpgrade"),
      Character.valueOf('T'), IC2Items.getItem("transformerUpgrade"),
      Character.valueOf('P'), Items.paper
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_IC2_MV_SUPPLIER), new Object[] {
      "PSP",
      "OBO",
      "PTP",
      Character.valueOf('B'), new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_IC2_LV_SUPPLIER),
      Character.valueOf('S'), IC2Items.getItem("energyStorageUpgrade"),
      Character.valueOf('O'), IC2Items.getItem("overclockerUpgrade"),
      Character.valueOf('T'), IC2Items.getItem("transformerUpgrade"),
      Character.valueOf('P'), Items.paper
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_IC2_HV_SUPPLIER), new Object[] {
      "PSP",
      "OBO",
      "PTP",
      Character.valueOf('B'), new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_IC2_MV_SUPPLIER),
      Character.valueOf('S'), IC2Items.getItem("energyStorageUpgrade"),
      Character.valueOf('O'), IC2Items.getItem("overclockerUpgrade"),
      Character.valueOf('T'), IC2Items.getItem("transformerUpgrade"),
      Character.valueOf('P'), Items.paper
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_IC2_EV_SUPPLIER), new Object[] {
      "PSP",
      "OBO",
      "PTP",
      Character.valueOf('B'), new ItemStack(LogisticsPipes.UpgradeItem, 1, ItemUpgrade.POWER_IC2_HV_SUPPLIER),
      Character.valueOf('S'), IC2Items.getItem("energyStorageUpgrade"),
      Character.valueOf('O'), IC2Items.getItem("overclockerUpgrade"),
      Character.valueOf('T'), IC2Items.getItem("transformerUpgrade"),
      Character.valueOf('P'), Items.paper
    });
   
    Recipes.advRecipes.addRecipe(new ItemStack(LogisticsPipes.LogisticsSolidBlock, 1, LogisticsSolidBlock.LOGISTICS_IC2_POWERPROVIDER), new Object[] {
      "PSP",
      "OBO",
      "PTP",
      Character.valueOf('B'), Blocks.redstone_block,
      Character.valueOf('S'), IC2Items.getItem("energyStorageUpgrade"),
      Character.valueOf('O'), IC2Items.getItem("overclockerUpgrade"),
      Character.valueOf('T'), IC2Items.getItem("transformerUpgrade"),
      Character.valueOf('P'), Items.paper
    });
  }
 
  /**
   * Registers an TileEntity to the IC2 EnergyNet
   * @param has to be an instance of IEnergyTile
  */
  @Override
  public void registerToEneryNet(TileEntity tile) {
    if(MainProxy.isServer(tile.getWorldObj())) {
      MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile));
    }
  }

  /**
   * Removes an TileEntity from the IC2 EnergyNet
   * @param has to be an instance of IEnergyTile
  */
  @Override
  public void unregisterToEneryNet(TileEntity tile) {
    if(MainProxy.isServer(tile.getWorldObj())) {
      MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile));
    }
  }

  /**
   * @return If IC2 is loaded, returns true.
   */
  @Override
  public boolean hasIC2() {
    return true;
  }

  @Override
  public boolean acceptsEnergyFrom(TileEntity energy, TileEntity tile , ForgeDirection opposite) {
    return ((IEnergySink)energy).acceptsEnergyFrom(tile, opposite);
  }

  @Override
  public boolean isEnergySink(TileEntity tile) {
    return tile instanceof IEnergySink;
  }

  @Override
  public double demandedEnergyUnits(TileEntity tile) {
    return ((IEnergySink)tile).getDemandedEnergy();
  }

  @Override
  public double injectEnergyUnits(TileEntity tile, ForgeDirection opposite, double d) {
    return ((IEnergySink)tile).injectEnergy(opposite, d, 1); //TODO check the voltage
  }}
TOP

Related Classes of logisticspipes.proxy.ic2.IC2Proxy

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.