fix mod name

implement GTCEU Energy adapter
This commit is contained in:
PrototypeTrousers
2022-01-20 20:02:26 -03:00
parent 0d096944cc
commit df28a5520f
5 changed files with 112 additions and 5 deletions
@@ -57,10 +57,16 @@ public class TileEnergyAcceptor extends AENetworkPowerTile
}
catch( final GridAccessException e )
{
return this.getInternalMaxPower();
return 0;
}
}
@Override
public double getInternalMaxPower()
{
return getFunnelPowerDemand( Long.MAX_VALUE );
}
@Override
protected double funnelPowerIntoStorage( final double power, final Actionable mode )
{
@@ -53,7 +53,7 @@ public abstract class AEBasePoweredTile extends AEBaseInvTile implements IAEPowe
private EnumSet<EnumFacing> internalPowerSides = EnumSet.allOf( EnumFacing.class );
private final IEnergyStorage forgeEnergyAdapter;
private Object teslaEnergyAdapter;
private GTCEEnergyAdapter gtceEnergyAdapter = null;
private IC2PowerSink ic2Sink;
public AEBasePoweredTile()
@@ -63,6 +63,11 @@ public abstract class AEBasePoweredTile extends AEBaseInvTile implements IAEPowe
{
this.teslaEnergyAdapter = new TeslaEnergyAdapter( this );
}
if( Capabilities.GTCE_ENERGY != null )
{
this.gtceEnergyAdapter = new GTCEEnergyAdapter( this );
}
this.ic2Sink = Integrations.ic2().createPowerSink( this, this );
this.ic2Sink.setValidFaces( this.internalPowerSides );
}
@@ -284,6 +289,13 @@ public abstract class AEBasePoweredTile extends AEBaseInvTile implements IAEPowe
return true;
}
}
else if( capability == Capabilities.GTCE_ENERGY )
{
if( this.getPowerSides().contains( facing ) )
{
return true;
}
}
return super.hasCapability( capability, facing );
}
@@ -306,7 +318,14 @@ public abstract class AEBasePoweredTile extends AEBaseInvTile implements IAEPowe
return (T) this.teslaEnergyAdapter;
}
}
else if( capability == Capabilities.GTCE_ENERGY )
{
if( this.getPowerSides().contains( facing ) )
{
return (T) this.gtceEnergyAdapter;
}
}
return super.getCapability( capability, facing );
}
@@ -0,0 +1,67 @@
package appeng.tile.powersink;
import appeng.api.config.Actionable;
import appeng.api.config.PowerUnits;
import gregtech.api.capability.IEnergyContainer;
import net.minecraft.util.EnumFacing;
public class GTCEEnergyAdapter implements IEnergyContainer
{
private final IExternalPowerSink sink;
GTCEEnergyAdapter( IExternalPowerSink sink )
{
this.sink = sink;
}
@Override
public long acceptEnergyFromNetwork( EnumFacing enumFacing, long voltage, long amperage )
{
final double overflow = this.sink.injectExternalPower( PowerUnits.GTCEU, (double) voltage, Actionable.MODULATE );
return (long) ( voltage - overflow );
}
@Override
public boolean inputsEnergy( EnumFacing enumFacing )
{
return true;
}
@Override
public long changeEnergy( long l )
{
return 0;
}
@Override
public long getEnergyStored()
{
return (long) Math.floor( PowerUnits.AE.convertTo( PowerUnits.GTCEU, this.sink.getAECurrentPower() ) );
}
@Override
public long getEnergyCapacity()
{
return (long) Math.floor( PowerUnits.AE.convertTo( PowerUnits.GTCEU, this.sink.getAEMaxPower() ) );
}
@Override
public long getInputAmperage()
{
return 0;
}
@Override
public long getInputVoltage()
{
return 0;
}
@Override
public long getEnergyCanBeInserted()
{
return this.getEnergyCapacity() - this.getEnergyStored();
}
}