Package thaumic.tinkerer.common.block.tile.transvector

Source Code of thaumic.tinkerer.common.block.tile.transvector.TileTransvectorInterface

/**
* This class was created by <Vazkii>. It's distributed as
* part of the ThaumicTinkerer Mod.
*
* ThaumicTinkerer is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
* ThaumicTinkerer is a Derivative Work on Thaumcraft 4.
* Thaumcraft 4 (c) Azanor 2012
* (http://www.minecraftforum.net/topic/1585216-)
*
* File Created @ [8 Sep 2013, 19:01:20 (GMT)]
*/
package thaumic.tinkerer.common.block.tile.transvector;

import buildcraft.api.power.IPowerReceptor;
import buildcraft.api.power.PowerHandler;
import buildcraft.api.power.PowerHandler.PowerReceiver;

import cofh.api.energy.IEnergyHandler;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Optional;
import dan200.computercraft.api.lua.ILuaContext;
import dan200.computercraft.api.peripheral.IComputerAccess;
import dan200.computercraft.api.peripheral.IPeripheral;
import ic2.api.energy.tile.IEnergyAcceptor;
import ic2.api.energy.tile.IEnergySink;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.aspects.IAspectContainer;
import thaumcraft.api.aspects.IEssentiaTransport;
import thaumic.tinkerer.common.compat.IndustrialcraftUnloadHelper;
import thaumic.tinkerer.common.lib.LibFeatures;

@Optional.InterfaceList({@Optional.Interface(iface = "dan200.computercraft.api.peripheral.IPeripheral", modid = "ComputerCraft"),
        @Optional.Interface(iface = "buildcraft.api.power.IPowerReceptor", modid = "BuildCraft|Energy"),
        @Optional.Interface(iface = "cofh.api.energy.IEnergyHandler", modid = "CoFHLib"),
        @Optional.Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = "IC2")})

public class TileTransvectorInterface extends TileTransvector implements ISidedInventory, IEnergySink, IFluidHandler, IPowerReceptor, IEnergyHandler, IAspectContainer, IEssentiaTransport, IPeripheral {

    public boolean addedToICEnergyNet = false;

    @Override
    public void updateEntity() {
        if (worldObj.getTotalWorldTime() % 100 == 0) {
            worldObj.notifyBlockChange(xCoord, yCoord, zCoord, worldObj.getBlock(xCoord, yCoord, zCoord));
        }
        if (!addedToICEnergyNet && !worldObj.isRemote && Loader.isModLoaded("IC2")) {

            IndustrialcraftUnloadHelper.addToIC2EnergyNet(this);
            addedToICEnergyNet = true;
        }
    }

    @Override
    public int getMaxDistance() {
        return LibFeatures.INTERFACE_DISTANCE;
    }

    @Override
    public void invalidate() {
        if (Loader.isModLoaded("IC2")) {
            IndustrialcraftUnloadHelper.removeFromIC2EnergyNet(this);
        }
        super.invalidate();
    }

    @Override
    public void onChunkUnload() {

        if (Loader.isModLoaded("IC2")) {
            IndustrialcraftUnloadHelper.removeFromIC2EnergyNet(this);
        }
    }

    @Override
    public void markDirty() {
        super.markDirty();
        TileEntity tile = getTile();
        if (tile != null)
            tile.markDirty();
    }

    @Override
    public int getSizeInventory() {
        TileEntity tile = getTile();
        return tile instanceof IInventory ? ((IInventory) tile).getSizeInventory() : 0;
    }

    @Override
    public ItemStack getStackInSlot(int i) {
        TileEntity tile = getTile();
        return tile instanceof IInventory ? ((IInventory) tile).getStackInSlot(i) : null;
    }

    @Override
    public ItemStack decrStackSize(int i, int j) {
        TileEntity tile = getTile();
        return tile instanceof IInventory ? ((IInventory) tile).decrStackSize(i, j) : null;
    }

    @Override
    public ItemStack getStackInSlotOnClosing(int i) {
        TileEntity tile = getTile();
        return tile instanceof IInventory ? ((IInventory) tile).getStackInSlotOnClosing(i) : null;
    }

    @Override
    public void setInventorySlotContents(int i, ItemStack itemstack) {
        TileEntity tile = getTile();
        if (tile instanceof IInventory)
            ((IInventory) tile).setInventorySlotContents(i, itemstack);
    }

    @Override
    public String getInventoryName() {
        TileEntity tile = getTile();
        return tile instanceof IInventory ? ((IInventory) tile).getInventoryName() : "";
    }

    @Override
    public boolean hasCustomInventoryName() {
        TileEntity tile = getTile();
        return tile instanceof IInventory && ((IInventory) tile).hasCustomInventoryName();
    }

    @Override
    public int getInventoryStackLimit() {
        TileEntity tile = getTile();
        return tile instanceof IInventory ? ((IInventory) tile).getInventoryStackLimit() : 0;
    }

    @Override
    public boolean isUseableByPlayer(EntityPlayer entityplayer) {
        TileEntity tile = getTile();
        return tile instanceof IInventory && ((IInventory) tile).isUseableByPlayer(entityplayer);
    }

    @Override
    public void openInventory() {
        TileEntity tile = getTile();
        if (tile instanceof IInventory)
            ((IInventory) tile).openInventory();
    }

    @Override
    public void closeInventory() {
        TileEntity tile = getTile();
        if (tile instanceof IInventory)
            ((IInventory) tile).closeInventory();
    }

    @Override
    public boolean isItemValidForSlot(int i, ItemStack itemstack) {
        TileEntity tile = getTile();
        return tile instanceof IInventory && ((IInventory) tile).isItemValidForSlot(i, itemstack);
    }

    @Override
    public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
        TileEntity tile = getTile();
        return tile instanceof IFluidHandler ? ((IFluidHandler) tile).fill(from, resource, doFill) : 0;
    }

    @Override
    public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
        TileEntity tile = getTile();
        return tile instanceof IFluidHandler ? ((IFluidHandler) tile).drain(from, resource, doDrain) : null;
    }

    @Override
    public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
        TileEntity tile = getTile();
        return tile instanceof IFluidHandler ? ((IFluidHandler) tile).drain(from, maxDrain, doDrain) : null;
    }

    @Override
    public boolean canFill(ForgeDirection from, Fluid fluid) {
        TileEntity tile = getTile();
        return tile instanceof IFluidHandler && ((IFluidHandler) tile).canFill(from, fluid);
    }

    @Override
    public boolean canDrain(ForgeDirection from, Fluid fluid) {
        TileEntity tile = getTile();
        return tile instanceof IFluidHandler && ((IFluidHandler) tile).canDrain(from, fluid);
    }

    @Override
    public FluidTankInfo[] getTankInfo(ForgeDirection from) {
        TileEntity tile = getTile();
        return tile instanceof IFluidHandler ? ((IFluidHandler) tile).getTankInfo(from) : null;
    }

    @Override
    public int[] getAccessibleSlotsFromSide(int var1) {
        TileEntity tile = getTile();
        return tile instanceof ISidedInventory ? ((ISidedInventory) tile).getAccessibleSlotsFromSide(var1) : tile instanceof IInventory ? buildSlotsForLinearInventory((IInventory) tile) : new int[0];
    }

    @Override
    public boolean canInsertItem(int i, ItemStack itemstack, int j) {
        TileEntity tile = getTile();
        return tile instanceof ISidedInventory ? ((ISidedInventory) tile).canInsertItem(i, itemstack, j) : tile instanceof IInventory;
    }

    @Override
    public boolean canExtractItem(int i, ItemStack itemstack, int j) {
        TileEntity tile = getTile();
        return tile instanceof ISidedInventory ? ((ISidedInventory) tile).canExtractItem(i, itemstack, j) : tile instanceof IInventory;
    }

    public static int[] buildSlotsForLinearInventory(IInventory inv) {
        int[] slots = new int[inv.getSizeInventory()];
        for (int i = 0; i < slots.length; i++)
            slots[i] = i;

        return slots;
    }

    @Override
    @Optional.Method(modid = "BuildCraft|Energy")
    public PowerReceiver getPowerReceiver(ForgeDirection side) {
        TileEntity tile = getTile();
        return tile instanceof IPowerReceptor ? ((IPowerReceptor) tile).getPowerReceiver(side) : null;
    }

    @Override
    @Optional.Method(modid = "BuildCraft|Energy")
    public void doWork(PowerHandler workProvider) {
        TileEntity tile = getTile();
        if (tile instanceof IPowerReceptor)
            ((IPowerReceptor) tile).doWork(workProvider);
    }

    @Override
    public World getWorld() {
        return worldObj;
    }

    @Optional.Method(modid = "IC2")
    @Override
    public double getDemandedEnergy() {
        TileEntity tile = getTile();
        return tile instanceof IEnergySink ? ((IEnergySink) tile).getDemandedEnergy() : 0;
    }


    @Optional.Method(modid = "IC2")
    @Override
    public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) {

        TileEntity tile = getTile();
        return tile instanceof IEnergySink ? ((IEnergySink) tile).injectEnergy(directionFrom, amount, voltage) : 0;
    }


    @Optional.Method(modid = "IC2")
    @Override
    public int getSinkTier() {
        TileEntity tile = getTile();
        return tile instanceof IEnergySink ? ((IEnergySink) tile).getSinkTier() : 0;
    }


    @Override
    @Optional.Method(modid = "CoFHLib")
    public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
        TileEntity tile = getTile();
        return tile instanceof IEnergyHandler ? ((IEnergyHandler) tile).receiveEnergy(from, maxReceive, simulate) : 0;
    }

    @Override
    @Optional.Method(modid = "CoFHLib")
    public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
        TileEntity tile = getTile();
        return tile instanceof IEnergyHandler ? ((IEnergyHandler) tile).extractEnergy(from, maxExtract, simulate) : 0;
    }


    @Override
    @Optional.Method(modid = "CoFHLib")
    public int getEnergyStored(ForgeDirection from) {
        TileEntity tile = getTile();
        return tile instanceof IEnergyHandler ? ((IEnergyHandler) tile).getEnergyStored(from) : 0;
    }

    @Override
    @Optional.Method(modid = "CoFHLib")
    public int getMaxEnergyStored(ForgeDirection from) {
        TileEntity tile = getTile();
        return tile instanceof IEnergyHandler ? ((IEnergyHandler) tile).getMaxEnergyStored(from) : 0;
    }

    @Override
    @Optional.Method(modid = "CoFHLib")
    public boolean canConnectEnergy(ForgeDirection from) {
        TileEntity tile = getTile();
        return tile instanceof IEnergyHandler ? ((IEnergyHandler) tile).canConnectEnergy(from) : false;
    }

    @Override
    public AspectList getAspects() {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer ? ((IAspectContainer) tile).getAspects() : null;
    }

    @Override
    public void setAspects(AspectList paramAspectList) {
        TileEntity tile = getTile();
        if (tile != null)
            ((IAspectContainer) tile).setAspects(paramAspectList);
    }

    @Override
    public boolean doesContainerAccept(Aspect paramAspect) {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer && ((IAspectContainer) tile).doesContainerAccept(paramAspect);
    }

    @Override
    public int addToContainer(Aspect paramAspect, int paramInt) {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer ? ((IAspectContainer) tile).addToContainer(paramAspect, paramInt) : 0;
    }

    @Override
    public boolean takeFromContainer(Aspect paramAspect, int paramInt) {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer && ((IAspectContainer) tile).takeFromContainer(paramAspect, paramInt);
    }

    @Override
    public boolean takeFromContainer(AspectList paramAspectList) {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer && ((IAspectContainer) tile).takeFromContainer(paramAspectList);
    }

    @Override
    public boolean doesContainerContainAmount(Aspect paramAspect, int paramInt) {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer && ((IAspectContainer) tile).doesContainerContainAmount(paramAspect, paramInt);
    }

    @Override
    public boolean doesContainerContain(AspectList paramAspectList) {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer && ((IAspectContainer) tile).doesContainerContain(paramAspectList);
    }

    @Override
    public int containerContains(Aspect paramAspect) {
        TileEntity tile = getTile();
        return tile instanceof IAspectContainer ? ((IAspectContainer) tile).containerContains(paramAspect) : 0;
    }

    @Override
    public boolean isConnectable(ForgeDirection forgeDirection) {
        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport && ((IEssentiaTransport) tile).isConnectable(forgeDirection);
    }

    @Override
    public boolean canInputFrom(ForgeDirection forgeDirection) {
        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport && ((IEssentiaTransport) tile).canInputFrom(forgeDirection);
    }

    @Override
    public boolean canOutputTo(ForgeDirection forgeDirection) {
        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport && ((IEssentiaTransport) tile).canOutputTo(forgeDirection);
    }

    @Override
    public void setSuction(Aspect paramAspect, int paramInt) {
        TileEntity tile = getTile();
        if (tile instanceof IEssentiaTransport)
            ((IEssentiaTransport) tile).setSuction(paramAspect, paramInt);
    }

    @Override
    public Aspect getSuctionType(ForgeDirection forgeDirection) {
        return null;
    }

    @Override
    public int getSuctionAmount(ForgeDirection forgeDirection) {
        return 0;
    }

    @Override
    public int takeEssentia(Aspect paramAspect, int paramInt, ForgeDirection forgeDirection) {
        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport ? ((IEssentiaTransport) tile).takeEssentia(paramAspect, paramInt, forgeDirection) : 0;
    }

    @Override
    public int getMinimumSuction() {
        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport ? ((IEssentiaTransport) tile).getMinimumSuction() : 0;
    }

    @Override
    public boolean renderExtendedTube() {
        return false;
    }

    @Override
    public int addEssentia(Aspect arg0, int arg1, ForgeDirection forgeDirection) {
        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport ? ((IEssentiaTransport) tile).addEssentia(arg0, arg1, forgeDirection) : 0;
    }

    @Override
    public Aspect getEssentiaType(ForgeDirection forgeDirection) {

        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport ? ((IEssentiaTransport) tile).getEssentiaType(forgeDirection) : null;
    }

    @Override
    public int getEssentiaAmount(ForgeDirection forgeDirection) {
        TileEntity tile = getTile();
        return tile instanceof IEssentiaTransport ? ((IEssentiaTransport) tile).getEssentiaAmount(forgeDirection) : 0;
    }

    @Override
    @Optional.Method(modid = "ComputerCraft")
    public String getType() {
        return getTile() instanceof IPeripheral ? ((IPeripheral) getTile()).getType() : "Transvector Interface Unconnected Peripherad";
    }

    @Override
    @Optional.Method(modid = "ComputerCraft")
    public String[] getMethodNames() {
        return getTile() instanceof IPeripheral ? ((IPeripheral) getTile()).getMethodNames() : new String[0];
    }

    @Override
    @Optional.Method(modid = "ComputerCraft")
    public Object[] callMethod(IComputerAccess computer, ILuaContext context, int method, Object[] arguments) throws Exception {
        return getTile() instanceof IPeripheral ? ((IPeripheral) getTile()).callMethod(computer, context, method, arguments) : new Object[0];
    }

    @Override

    public void attach(IComputerAccess computer) {
        if (getTile() instanceof IPeripheral) {
            ((IPeripheral) getTile()).attach(computer);
        }
    }

    @Override
    @Optional.Method(modid = "ComputerCraft")
    public void detach(IComputerAccess computer) {
        if (getTile() instanceof IPeripheral) {
            ((IPeripheral) getTile()).detach(computer);
        }
    }

    @Override
    @Optional.Method(modid = "ComputerCraft")
    public boolean equals(IPeripheral other) {
        return this.equals((Object) other);
    }


    @Optional.Method(modid = "IC2")
    @Override
    public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) {
        TileEntity tile = getTile();
        return tile instanceof IEnergyAcceptor ? ((IEnergySink) tile).acceptsEnergyFrom(emitter, direction) : false;
    }
}
TOP

Related Classes of thaumic.tinkerer.common.block.tile.transvector.TileTransvectorInterface

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.