/** * 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.TileReceiverBase; import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergySource; 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 TileEUOutput extends TileReceiverBase implements IEnergySource { private boolean isRegistered = false; public TileEUOutput() { super("ac_eu_output", 0, 2000, 100); } @Override public boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction) { return true; } @Override public double getOfferedEnergy() { return if2eu(energy); } @Override public void drawEnergy(double amount) { energy -= eu2if(amount); if(energy < 0d) energy = 0d; } @Override public int getSourceTier() { return 2; } @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(); } }