Applied-Energistics-2-tiler.../src/main/java/appeng/tile/legacy/TileLegacyController.java

79 lines
2.5 KiB
Java
Raw Normal View History

package appeng.tile.legacy;
import appeng.api.config.Actionable;
import appeng.me.GridAccessException;
import appeng.tile.grid.AENetworkPowerTile;
import appeng.tile.inventory.AppEngInternalInventory;
import appeng.tile.inventory.InvOperation;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection;
public class TileLegacyController extends AENetworkPowerTile {
2022-12-02 17:40:47 +01:00
private static final IInventory NULL_INVENTORY = new AppEngInternalInventory(null, 0);
private static final int[] ACCESSIBLE_SLOTS_BY_SIDE = {};
public TileLegacyController() { //TODO Fix power storage
2022-12-02 17:40:47 +01:00
this.setInternalMaxPower(10000);
this.setInternalPublicPowerStorage(true);
this.getProxy().setIdlePowerUsage(6.0);
}
@Override
public IInventory getInternalInventory() {
return NULL_INVENTORY;
}
@Override
2022-12-02 17:40:47 +01:00
public void onChangeInventory(
IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added
) {}
@Override
public int[] getAccessibleSlotsBySide(ForgeDirection whichSide) {
return ACCESSIBLE_SLOTS_BY_SIDE;
}
@Override
2022-12-02 17:40:47 +01:00
protected double getFunnelPowerDemand(final double maxReceived) {
updateMeta();
2022-12-02 17:40:47 +01:00
try {
return this.getProxy().getEnergy().getEnergyDemand(10000);
} catch (final GridAccessException e) {
// no grid? use local...
2022-12-02 17:40:47 +01:00
return super.getFunnelPowerDemand(maxReceived);
}
}
@Override
2022-12-02 17:40:47 +01:00
protected double funnelPowerIntoStorage(final double power, final Actionable mode) {
updateMeta();
2022-12-02 17:40:47 +01:00
try {
final double ret = this.getProxy().getEnergy().injectPower(power, mode);
if (mode == Actionable.SIMULATE) {
return ret;
}
return 0;
2022-12-02 17:40:47 +01:00
} catch (final GridAccessException e) {
// no grid? use local...
2022-12-02 17:40:47 +01:00
return super.funnelPowerIntoStorage(power, mode);
}
}
public void updateMeta() {
2022-12-02 17:40:47 +01:00
int meta = (int
) Math.ceil((5.0 * this.getInternalCurrentPower() / this.getInternalMaxPower()));
if (meta < 0) {
meta = 0;
} else if (meta > 5) {
meta = 5;
}
if (getProxy().isActive() && getInternalCurrentPower() == 0.0) {
meta = 6;
}
2022-12-02 17:40:47 +01:00
this.worldObj.setBlockMetadataWithNotify(
this.xCoord, this.yCoord, this.zCoord, meta, 2
);
}
}