package com.amadornes.framez.compat.ic2; import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergySink; import java.util.Collection; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; import uk.co.qmunity.lib.vec.IWorldLocation; import com.amadornes.framez.api.modifier.IMotorModifier; import com.amadornes.framez.api.modifier.IMotorModifierPower; import com.amadornes.framez.api.movement.IMotor; import com.amadornes.jtraits.ITrait; import com.amadornes.jtraits.JTrait; public class MotorModifierEU implements IMotorModifierPower { @Override public String getType() { return "eu"; } @Override public boolean isCompatibleWith(IMotorModifier mod) { return true; } @Override public boolean isValidCombination(Collection<IMotorModifier> combination) { return true; } @Override public Class<? extends ITrait> getTraitClass() { return TMotorEU.class; } public static abstract class TMotorEU extends JTrait<IMotor> implements IMotor, IEnergySink { @Override public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) { return true; } @Override public double getDemandedEnergy() { return ((IMotor) this).getEnergyBufferSize() - ((IMotor) this).getEnergyBuffer(); } @Override public int getSinkTier() { return 4; } @Override public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) { return amount - ((IMotor) this).injectPower(amount, false); } @Override public void onFirstTick() { // FIXME _super.onFirstTick(); if (!((IWorldLocation) this).getWorld().isRemote) MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); } @Override public void onUnload() { // FIXME _super.onUnload(); if (!((IWorldLocation) this).getWorld().isRemote) MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); } } }