feat: improve legacy controller energy logic
This commit is contained in:
parent
44655d2596
commit
f03609f69d
|
@ -24,6 +24,7 @@ import appeng.core.sync.packets.PacketMEInventoryUpdate;
|
|||
import appeng.tile.inventory.AppEngInternalInventory;
|
||||
import appeng.tile.inventory.IAEAppEngInventory;
|
||||
import appeng.tile.inventory.InvOperation;
|
||||
import appeng.tile.legacy.TileLegacyController;
|
||||
import appeng.util.Platform;
|
||||
import appeng.util.item.AEItemStack;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -92,7 +93,11 @@ public class ContainerController extends AEBaseContainer implements IAEAppEngInv
|
|||
if (eg != null) {
|
||||
this.setAverageAddition((long) (100.0 * eg.getAvgPowerInjection()));
|
||||
this.setPowerUsage((long) (100.0 * eg.getAvgPowerUsage()));
|
||||
this.setCurrentPower((long) (100.0 * eg.getStoredPower()));
|
||||
if (host instanceof TileLegacyController) {
|
||||
this.setCurrentPower((long)(100.0 * ((TileLegacyController)host).getAECurrentPower()));
|
||||
} else {
|
||||
this.setCurrentPower((long) (100.0 * eg.getStoredPower()));
|
||||
}
|
||||
this.setMaxPower((long) (100.0 * eg.getMaxStoredPower()));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package appeng.tile.legacy;
|
||||
|
||||
import appeng.api.config.AccessRestriction;
|
||||
import appeng.api.config.Actionable;
|
||||
import appeng.api.events.LocatableEventAnnounce;
|
||||
import appeng.api.events.LocatableEventAnnounce.LocatableEvent;
|
||||
|
@ -27,9 +28,10 @@ public class TileLegacyController extends AENetworkPowerTile implements ILocatab
|
|||
public int powerLevel;
|
||||
public int lastPowerLevel;
|
||||
|
||||
public TileLegacyController() { //TODO Fix power storage
|
||||
public TileLegacyController() {
|
||||
this.setInternalMaxPower(10000);
|
||||
this.setInternalPublicPowerStorage(true);
|
||||
this.setInternalPowerFlow(AccessRestriction.READ_WRITE);
|
||||
this.getProxy().setIdlePowerUsage(6.0);
|
||||
difference++;
|
||||
this.controllerKey = System.currentTimeMillis() * 10 + difference;
|
||||
|
@ -65,27 +67,32 @@ public class TileLegacyController extends AENetworkPowerTile implements ILocatab
|
|||
}
|
||||
|
||||
@Override
|
||||
protected double getFunnelPowerDemand(final double maxReceived) {
|
||||
try {
|
||||
return this.getProxy().getEnergy().getEnergyDemand(10000);
|
||||
} catch (final GridAccessException e) {
|
||||
protected double getFunnelPowerDemand( final double maxReceived )
|
||||
{
|
||||
try
|
||||
{
|
||||
return this.getProxy().getEnergy().getEnergyDemand( 10000 ) + super.getFunnelPowerDemand(maxReceived);
|
||||
}
|
||||
catch( final GridAccessException e )
|
||||
{
|
||||
// no grid? use local...
|
||||
return super.getFunnelPowerDemand(maxReceived);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected double funnelPowerIntoStorage(final double power, final Actionable mode) {
|
||||
try {
|
||||
final double ret = this.getProxy().getEnergy().injectPower(power, mode);
|
||||
if (mode == Actionable.SIMULATE) {
|
||||
return ret;
|
||||
protected double funnelPowerIntoStorage( final double power, final Actionable mode )
|
||||
{
|
||||
double ret = this.injectAEPower(power, mode);
|
||||
if (ret > 0) {
|
||||
try
|
||||
{
|
||||
ret = this.getProxy().getEnergy().injectPower( ret, mode );
|
||||
} catch (final GridAccessException e) {
|
||||
// :P
|
||||
}
|
||||
return 0;
|
||||
} catch (final GridAccessException e) {
|
||||
// no grid? use local...
|
||||
return super.funnelPowerIntoStorage(power, mode);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void updatePowerLevel() {
|
||||
|
|
|
@ -19,6 +19,9 @@
|
|||
package appeng.tile.networking;
|
||||
|
||||
import appeng.api.config.Actionable;
|
||||
import appeng.api.networking.IControllerCache;
|
||||
import appeng.api.networking.IGridHost;
|
||||
import appeng.api.networking.energy.IAEPowerStorage;
|
||||
import appeng.api.networking.energy.IEnergyGrid;
|
||||
import appeng.api.util.AECableType;
|
||||
import appeng.me.GridAccessException;
|
||||
|
@ -73,7 +76,15 @@ public class TileEnergyAcceptor extends AENetworkPowerTile {
|
|||
protected double funnelPowerIntoStorage(final double power, final Actionable mode) {
|
||||
try {
|
||||
final IEnergyGrid grid = this.getProxy().getEnergy();
|
||||
final double leftOver = grid.injectPower(power, mode);
|
||||
final IControllerCache cgc = this.getProxy().getGrid().getCache(IControllerCache.class);
|
||||
double leftOver = power;
|
||||
if (cgc.hasController()) {
|
||||
IGridHost controller = cgc.getController();
|
||||
if (controller instanceof IAEPowerStorage) {
|
||||
leftOver = ((IAEPowerStorage)controller).injectAEPower(leftOver, mode);
|
||||
}
|
||||
}
|
||||
leftOver = grid.injectPower(leftOver, mode);
|
||||
if (mode == Actionable.SIMULATE) {
|
||||
return leftOver;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue