/** * Copyright (c) Lambda Innovation, 2013-2016 * This file is part of the AcademyCraft mod. * https://github.com/LambdaInnovation/AcademyCraft * Licensed under GPLv3, see project root for more information. */ package cn.academy.support.ic2; import cn.academy.core.block.TileGeneratorBase; import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergySink; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; import static cn.academy.support.ic2.IC2Support.eu2if; import static cn.academy.support.ic2.IC2Support.if2eu; /** * * @author KSkun */ public class TileEUInput extends TileGeneratorBase implements IEnergySink { private boolean isRegistered = false; public TileEUInput() { super("ac_eu_input", 0, 2000, 100); } @Override public double getGeneration(double required) { return 0; } @Override public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) { return true; } @Override public double getDemandedEnergy() { return bufferSize - getEnergy(); } @Override public int getSinkTier() { return 2; } @Override public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) { return if2eu(addEnergy(eu2if(amount))); } @Override public void updateEntity() { if(!isRegistered && !getWorldObj().isRemote) { isRegistered = !MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); } super.updateEntity(); } @Override public void onChunkUnload() { if(!isRegistered && !getWorldObj().isRemote) { MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); } super.onChunkUnload(); } @Override public void invalidate() { if(!isRegistered && !getWorldObj().isRemote) { MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); } super.invalidate(); } }