#2438: Added Tesla support with same conversion ratio as RF.
This commit is contained in:
@@ -20,3 +20,4 @@ waila_version=1.7.0-B3_1.9.4
|
|||||||
# Provided APIs #
|
# Provided APIs #
|
||||||
#########################################################
|
#########################################################
|
||||||
jei_version=3.12.7.312
|
jei_version=3.12.7.312
|
||||||
|
tesla_version=1.10.2-1.2.1.49
|
||||||
|
|||||||
@@ -28,6 +28,11 @@ repositories {
|
|||||||
name = "JEI repo"
|
name = "JEI repo"
|
||||||
url "http://dvs1.progwml6.com/files/maven"
|
url "http://dvs1.progwml6.com/files/maven"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maven {
|
||||||
|
name = "Tesla repo"
|
||||||
|
url "http://maven.epoxide.xyz"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
@@ -41,6 +46,7 @@ dependencies {
|
|||||||
// compile against provided APIs
|
// compile against provided APIs
|
||||||
compileOnly "mezz.jei:jei_${minecraft_version}:${jei_version}:api"
|
compileOnly "mezz.jei:jei_${minecraft_version}:${jei_version}:api"
|
||||||
compileOnly "mcp.mobius.waila:Waila:${waila_version}"
|
compileOnly "mcp.mobius.waila:Waila:${waila_version}"
|
||||||
|
compileOnly "net.darkhax.tesla:Tesla:${tesla_version}"
|
||||||
|
|
||||||
// at runtime, use the full JEI jar
|
// at runtime, use the full JEI jar
|
||||||
runtime "mezz.jei:jei_${minecraft_version}:${jei_version}"
|
runtime "mezz.jei:jei_${minecraft_version}:${jei_version}"
|
||||||
|
|||||||
@@ -22,9 +22,11 @@ package appeng.tile.powersink;
|
|||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.darkhax.tesla.api.ITeslaConsumer;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
import net.minecraftforge.common.capabilities.CapabilityInject;
|
||||||
import net.minecraftforge.energy.CapabilityEnergy;
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
|
||||||
@@ -41,6 +43,9 @@ import appeng.tile.events.TileEventType;
|
|||||||
|
|
||||||
public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowerStorage, IExternalPowerSink
|
public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowerStorage, IExternalPowerSink
|
||||||
{
|
{
|
||||||
|
@CapabilityInject(ITeslaConsumer.class)
|
||||||
|
private static Capability<ITeslaConsumer> teslaConsumerCapability;
|
||||||
|
|
||||||
// values that determine general function, are set by inheriting classes if
|
// values that determine general function, are set by inheriting classes if
|
||||||
// needed. These should generally remain static.
|
// needed. These should generally remain static.
|
||||||
private double internalMaxPower = 10000;
|
private double internalMaxPower = 10000;
|
||||||
@@ -50,10 +55,14 @@ public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowe
|
|||||||
private double internalCurrentPower = 0;
|
private double internalCurrentPower = 0;
|
||||||
private EnumSet<EnumFacing> internalPowerSides = EnumSet.allOf( EnumFacing.class );
|
private EnumSet<EnumFacing> internalPowerSides = EnumSet.allOf( EnumFacing.class );
|
||||||
private final IEnergyStorage forgeEnergyAdapter;
|
private final IEnergyStorage forgeEnergyAdapter;
|
||||||
|
private Object teslaEnergyAdapter;
|
||||||
|
|
||||||
public AERootPoweredTile()
|
public AERootPoweredTile()
|
||||||
{
|
{
|
||||||
forgeEnergyAdapter = new ForgeEnergyAdapter( this );
|
forgeEnergyAdapter = new ForgeEnergyAdapter( this );
|
||||||
|
if ( teslaConsumerCapability != null ) {
|
||||||
|
teslaEnergyAdapter = new TeslaEnergyAdapter( this );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected EnumSet<EnumFacing> getPowerSides()
|
protected EnumSet<EnumFacing> getPowerSides()
|
||||||
@@ -252,6 +261,13 @@ public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowe
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( capability == teslaConsumerCapability )
|
||||||
|
{
|
||||||
|
if( this.getPowerSides().contains( facing ) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return super.hasCapability( capability, facing );
|
return super.hasCapability( capability, facing );
|
||||||
}
|
}
|
||||||
@@ -267,6 +283,13 @@ public abstract class AERootPoweredTile extends AEBaseInvTile implements IAEPowe
|
|||||||
return (T) forgeEnergyAdapter;
|
return (T) forgeEnergyAdapter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( capability == teslaConsumerCapability )
|
||||||
|
{
|
||||||
|
if( this.getPowerSides().contains( facing ) )
|
||||||
|
{
|
||||||
|
return (T) teslaEnergyAdapter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return super.getCapability( capability, facing );
|
return super.getCapability( capability, facing );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package appeng.tile.powersink;
|
||||||
|
|
||||||
|
|
||||||
|
import net.darkhax.tesla.api.ITeslaConsumer;
|
||||||
|
|
||||||
|
import appeng.api.config.PowerUnits;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adapts an {@link IExternalPowerSink} to Forges {@link net.darkhax.tesla.api.ITeslaConsumer}.
|
||||||
|
*/
|
||||||
|
class TeslaEnergyAdapter implements ITeslaConsumer
|
||||||
|
{
|
||||||
|
|
||||||
|
private final IExternalPowerSink sink;
|
||||||
|
|
||||||
|
TeslaEnergyAdapter( IExternalPowerSink sink )
|
||||||
|
{
|
||||||
|
this.sink = sink;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long givePower( long power, boolean simulated )
|
||||||
|
{
|
||||||
|
// Cut it down to what we can represent in a double
|
||||||
|
double powerDbl = (double) power;
|
||||||
|
|
||||||
|
double networkDemand = sink.getExternalPowerDemand( PowerUnits.RF, powerDbl );
|
||||||
|
long used = (long) Math.min( powerDbl, networkDemand );
|
||||||
|
|
||||||
|
if( !simulated )
|
||||||
|
{
|
||||||
|
sink.injectExternalPower( PowerUnits.RF, used );
|
||||||
|
}
|
||||||
|
|
||||||
|
return used;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user