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.AppEngInternalInventory;
|
||||||
import appeng.tile.inventory.IAEAppEngInventory;
|
import appeng.tile.inventory.IAEAppEngInventory;
|
||||||
import appeng.tile.inventory.InvOperation;
|
import appeng.tile.inventory.InvOperation;
|
||||||
|
import appeng.tile.legacy.TileLegacyController;
|
||||||
import appeng.util.Platform;
|
import appeng.util.Platform;
|
||||||
import appeng.util.item.AEItemStack;
|
import appeng.util.item.AEItemStack;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -92,7 +93,11 @@ public class ContainerController extends AEBaseContainer implements IAEAppEngInv
|
||||||
if (eg != null) {
|
if (eg != null) {
|
||||||
this.setAverageAddition((long) (100.0 * eg.getAvgPowerInjection()));
|
this.setAverageAddition((long) (100.0 * eg.getAvgPowerInjection()));
|
||||||
this.setPowerUsage((long) (100.0 * eg.getAvgPowerUsage()));
|
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()));
|
this.setMaxPower((long) (100.0 * eg.getMaxStoredPower()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package appeng.tile.legacy;
|
package appeng.tile.legacy;
|
||||||
|
|
||||||
|
import appeng.api.config.AccessRestriction;
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
import appeng.api.events.LocatableEventAnnounce;
|
import appeng.api.events.LocatableEventAnnounce;
|
||||||
import appeng.api.events.LocatableEventAnnounce.LocatableEvent;
|
import appeng.api.events.LocatableEventAnnounce.LocatableEvent;
|
||||||
|
@ -27,9 +28,10 @@ public class TileLegacyController extends AENetworkPowerTile implements ILocatab
|
||||||
public int powerLevel;
|
public int powerLevel;
|
||||||
public int lastPowerLevel;
|
public int lastPowerLevel;
|
||||||
|
|
||||||
public TileLegacyController() { //TODO Fix power storage
|
public TileLegacyController() {
|
||||||
this.setInternalMaxPower(10000);
|
this.setInternalMaxPower(10000);
|
||||||
this.setInternalPublicPowerStorage(true);
|
this.setInternalPublicPowerStorage(true);
|
||||||
|
this.setInternalPowerFlow(AccessRestriction.READ_WRITE);
|
||||||
this.getProxy().setIdlePowerUsage(6.0);
|
this.getProxy().setIdlePowerUsage(6.0);
|
||||||
difference++;
|
difference++;
|
||||||
this.controllerKey = System.currentTimeMillis() * 10 + difference;
|
this.controllerKey = System.currentTimeMillis() * 10 + difference;
|
||||||
|
@ -65,27 +67,32 @@ public class TileLegacyController extends AENetworkPowerTile implements ILocatab
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected double getFunnelPowerDemand(final double maxReceived) {
|
protected double getFunnelPowerDemand( final double maxReceived )
|
||||||
try {
|
{
|
||||||
return this.getProxy().getEnergy().getEnergyDemand(10000);
|
try
|
||||||
} catch (final GridAccessException e) {
|
{
|
||||||
|
return this.getProxy().getEnergy().getEnergyDemand( 10000 ) + super.getFunnelPowerDemand(maxReceived);
|
||||||
|
}
|
||||||
|
catch( final GridAccessException e )
|
||||||
|
{
|
||||||
// no grid? use local...
|
// no grid? use local...
|
||||||
return super.getFunnelPowerDemand(maxReceived);
|
return super.getFunnelPowerDemand(maxReceived);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected double funnelPowerIntoStorage(final double power, final Actionable mode) {
|
protected double funnelPowerIntoStorage( final double power, final Actionable mode )
|
||||||
try {
|
{
|
||||||
final double ret = this.getProxy().getEnergy().injectPower(power, mode);
|
double ret = this.injectAEPower(power, mode);
|
||||||
if (mode == Actionable.SIMULATE) {
|
if (ret > 0) {
|
||||||
return ret;
|
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() {
|
public void updatePowerLevel() {
|
||||||
|
|
|
@ -19,6 +19,9 @@
|
||||||
package appeng.tile.networking;
|
package appeng.tile.networking;
|
||||||
|
|
||||||
import appeng.api.config.Actionable;
|
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.networking.energy.IEnergyGrid;
|
||||||
import appeng.api.util.AECableType;
|
import appeng.api.util.AECableType;
|
||||||
import appeng.me.GridAccessException;
|
import appeng.me.GridAccessException;
|
||||||
|
@ -73,7 +76,15 @@ public class TileEnergyAcceptor extends AENetworkPowerTile {
|
||||||
protected double funnelPowerIntoStorage(final double power, final Actionable mode) {
|
protected double funnelPowerIntoStorage(final double power, final Actionable mode) {
|
||||||
try {
|
try {
|
||||||
final IEnergyGrid grid = this.getProxy().getEnergy();
|
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) {
|
if (mode == Actionable.SIMULATE) {
|
||||||
return leftOver;
|
return leftOver;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue