feat: added UniversalElectricity compat
This commit is contained in:
parent
a09f0cfd16
commit
9de6a1e648
9 changed files with 322 additions and 6 deletions
|
@ -1,5 +1,6 @@
|
|||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven {
|
||||
name = "central"
|
||||
url = "https://maven.thorfusion.com/artifactory/central/"
|
||||
|
@ -31,7 +32,9 @@ repositories {
|
|||
name 'central'
|
||||
url 'https://maven.thorfusion.com/artifactory/central/'
|
||||
}
|
||||
|
||||
maven {
|
||||
url 'https://maven.tilera.xyz'
|
||||
}
|
||||
}
|
||||
|
||||
idea {
|
||||
|
@ -59,6 +62,7 @@ dependencies {
|
|||
compile "inventorytweaks:inventory-tweaks:1.7.10-1.60.0:api"
|
||||
compile "net.industrial-craft:industrialcraft-2:2.2.828-experimental:api"
|
||||
compile "mcp.mobius.waila:Waila:1.5.10_1.7.10:dev"
|
||||
compile "universalelectricity:basiccomponents:1.1.0:deobf"
|
||||
}
|
||||
|
||||
version = "${config.minecraft_version}-${config.mod_version}"
|
||||
|
|
|
@ -135,7 +135,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
|
|||
*
|
||||
*/
|
||||
@Mod(modid = "Mekanism", name = "Mekanism", version = "GRADLE_MODVERSION", guiFactory = "mekanism.client.gui.ConfigGuiFactory",
|
||||
dependencies = "after:ForgeMultipart;after:BuildCraft;after:BuildCraftAPI;after:IC2;after:CoFHCore;" +
|
||||
dependencies = "after:basiccomponents;after:ForgeMultipart;after:BuildCraft;after:BuildCraftAPI;after:IC2;after:CoFHCore;" +
|
||||
"after:ComputerCraft;after:Galacticraft;after:MineTweaker3")
|
||||
public class Mekanism
|
||||
{
|
||||
|
|
|
@ -11,6 +11,9 @@ import mekanism.api.energy.IStrictEnergyAcceptor;
|
|||
import mekanism.api.energy.IStrictEnergyStorage;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import universalelectricity.compat.IElectricityTileHandler;
|
||||
import universalelectricity.core.block.IConnector;
|
||||
import universalelectricity.core.block.IVoltage;
|
||||
import cofh.api.energy.IEnergyHandler;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.InterfaceList;
|
||||
|
@ -18,9 +21,12 @@ import cpw.mods.fml.common.Optional.InterfaceList;
|
|||
@InterfaceList({
|
||||
@Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = "IC2"),
|
||||
@Interface(iface = "ic2.api.energy.tile.IEnergySource", modid = "IC2"),
|
||||
@Interface(iface = "ic2.api.tile.IEnergyStorage", modid = "IC2")
|
||||
@Interface(iface = "ic2.api.tile.IEnergyStorage", modid = "IC2"),
|
||||
@Interface(iface = "universalelectricity.compat.IElectricityTileHandler", modid = "basiccomponents"),
|
||||
@Interface(iface = "universalelectricity.core.block.IConnector", modid = "basiccomponents"),
|
||||
@Interface(iface = "universalelectricity.core.block.IVoltage", modid = "basiccomponents")
|
||||
})
|
||||
public interface IEnergyWrapper extends IStrictEnergyStorage, IEnergyHandler, IEnergySink, IEnergySource, IEnergyStorage, IStrictEnergyAcceptor, ICableOutputter, IInventory
|
||||
public interface IEnergyWrapper extends IStrictEnergyStorage, IEnergyHandler, IEnergySink, IEnergySource, IEnergyStorage, IStrictEnergyAcceptor, ICableOutputter, IInventory, IConnector, IVoltage, IElectricityTileHandler
|
||||
{
|
||||
public EnumSet<ForgeDirection> getOutputtingSides();
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package mekanism.common.integration.ue;
|
||||
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import mekanism.common.base.IEnergyWrapper;
|
||||
|
||||
public abstract class UEDriverProxy {
|
||||
|
||||
public abstract void tick();
|
||||
|
||||
public abstract void invalidate();
|
||||
|
||||
public static UEDriverProxy createProxy(IEnergyWrapper wrapper) {
|
||||
if (Loader.isModLoaded("basiccomponents")) {
|
||||
return new UELoaded(wrapper);
|
||||
} else {
|
||||
return new UEUnloaded();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
24
src/main/java/mekanism/common/integration/ue/UELoaded.java
Normal file
24
src/main/java/mekanism/common/integration/ue/UELoaded.java
Normal file
|
@ -0,0 +1,24 @@
|
|||
package mekanism.common.integration.ue;
|
||||
|
||||
import mekanism.common.base.IEnergyWrapper;
|
||||
import universalelectricity.prefab.tile.ElectricTileDriver;
|
||||
|
||||
public class UELoaded extends UEDriverProxy {
|
||||
|
||||
private ElectricTileDriver driver;
|
||||
|
||||
public UELoaded(IEnergyWrapper wrapper) {
|
||||
driver = new ElectricTileDriver(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
driver.tick();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
driver.invalidate();
|
||||
}
|
||||
|
||||
}
|
15
src/main/java/mekanism/common/integration/ue/UEUnloaded.java
Normal file
15
src/main/java/mekanism/common/integration/ue/UEUnloaded.java
Normal file
|
@ -0,0 +1,15 @@
|
|||
package mekanism.common.integration.ue;
|
||||
|
||||
public class UEUnloaded extends UEDriverProxy {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -14,11 +14,13 @@ import mekanism.api.Coord4D;
|
|||
import mekanism.api.MekanismConfig.general;
|
||||
import mekanism.api.transmitters.ITransmitterTile;
|
||||
import mekanism.common.base.IEnergyWrapper;
|
||||
import mekanism.common.integration.ue.UEDriverProxy;
|
||||
import mekanism.common.util.MekanismUtils;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
|
||||
public abstract class TileEntityElectricBlock extends TileEntityContainerBlock implements IEnergyWrapper
|
||||
|
@ -35,6 +37,8 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
|
|||
/** Is this registered with IC2 */
|
||||
public boolean ic2Registered = false;
|
||||
|
||||
private UEDriverProxy driver;
|
||||
|
||||
/**
|
||||
* The base of all blocks that deal with electricity. It has a facing state, initialized state,
|
||||
* and a current amount of stored energy.
|
||||
|
@ -46,6 +50,7 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
|
|||
super(name);
|
||||
BASE_MAX_ENERGY = baseMaxEnergy;
|
||||
maxEnergy = BASE_MAX_ENERGY;
|
||||
driver = UEDriverProxy.createProxy(this);
|
||||
}
|
||||
|
||||
@Method(modid = "IC2")
|
||||
|
@ -91,6 +96,9 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
|
|||
{
|
||||
register();
|
||||
}
|
||||
if (!this.worldObj.isRemote) {
|
||||
driver.tick();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -169,7 +177,7 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
|
|||
{
|
||||
deregister();
|
||||
}
|
||||
|
||||
driver.invalidate();
|
||||
super.onChunkUnload();
|
||||
}
|
||||
|
||||
|
@ -177,7 +185,7 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
|
|||
public void invalidate()
|
||||
{
|
||||
super.invalidate();
|
||||
|
||||
driver.invalidate();
|
||||
if(MekanismUtils.useIC2())
|
||||
{
|
||||
deregister();
|
||||
|
@ -400,4 +408,78 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
|
|||
|
||||
return toUse;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canConnect(ForgeDirection side) {
|
||||
return getConsumingSides().contains(side) || getOutputtingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public double getVoltage() {
|
||||
return 120.0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canInsert() {
|
||||
return getConsumingSides().size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canExtract() {
|
||||
return getOutputtingSides().size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canInsertOn(ForgeDirection side) {
|
||||
return getConsumingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canExtractOn(ForgeDirection side) {
|
||||
return getOutputtingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public void insert(ElectricityPack pack, ForgeDirection side) {
|
||||
setEnergy(Math.min(getEnergy() + pack.getWatts(), getMaxEnergy()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public void extract(ElectricityPack pack, ForgeDirection side) {
|
||||
setEnergy(Math.max(getEnergy() - pack.getWatts(), 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public ElectricityPack getDemandedJoules() {
|
||||
if (canInsert())
|
||||
return new ElectricityPack((getMaxEnergy() - getEnergy()) / getVoltage(), getVoltage());
|
||||
else
|
||||
return new ElectricityPack();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public ElectricityPack getProvidedJoules() {
|
||||
if (canExtract())
|
||||
return new ElectricityPack(Math.min(getEnergy(), getMaxOutput()) / getVoltage(), getVoltage());
|
||||
else
|
||||
return new ElectricityPack();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public TileEntity getTile() {
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import mekanism.api.transmitters.ITransmitterTile;
|
|||
import mekanism.common.Mekanism;
|
||||
import mekanism.common.base.IActiveState;
|
||||
import mekanism.common.base.IEnergyWrapper;
|
||||
import mekanism.common.integration.ue.UEDriverProxy;
|
||||
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
|
||||
import mekanism.common.util.CableUtils;
|
||||
import mekanism.common.util.LangUtils;
|
||||
|
@ -29,6 +30,7 @@ import net.minecraft.tileentity.TileEntity;
|
|||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.InterfaceList;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
|
@ -45,9 +47,12 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
|
|||
/** false = input, true = output */
|
||||
public boolean mode;
|
||||
|
||||
private UEDriverProxy driver;
|
||||
|
||||
public TileEntityInductionPort()
|
||||
{
|
||||
super("InductionPort");
|
||||
driver = UEDriverProxy.createProxy(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -68,6 +73,7 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
|
|||
CableUtils.emit(this);
|
||||
structure.remainingOutput -= (prev-getEnergy());
|
||||
}
|
||||
driver.tick();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -195,6 +201,8 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
|
|||
deregister();
|
||||
}
|
||||
|
||||
driver.invalidate();
|
||||
|
||||
super.onChunkUnload();
|
||||
}
|
||||
|
||||
|
@ -203,6 +211,8 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
|
|||
{
|
||||
super.invalidate();
|
||||
|
||||
driver.invalidate();
|
||||
|
||||
if(MekanismUtils.useIC2())
|
||||
{
|
||||
deregister();
|
||||
|
@ -472,4 +482,78 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canConnect(ForgeDirection side) {
|
||||
return getConsumingSides().contains(side) || getOutputtingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public double getVoltage() {
|
||||
return 120.0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canInsert() {
|
||||
return getConsumingSides().size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canExtract() {
|
||||
return getOutputtingSides().size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canInsertOn(ForgeDirection side) {
|
||||
return getConsumingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canExtractOn(ForgeDirection side) {
|
||||
return getOutputtingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public void insert(ElectricityPack pack, ForgeDirection side) {
|
||||
setEnergy(Math.min(getEnergy() + pack.getWatts(), getMaxEnergy()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public void extract(ElectricityPack pack, ForgeDirection side) {
|
||||
setEnergy(Math.max(getEnergy() - pack.getWatts(), 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public ElectricityPack getDemandedJoules() {
|
||||
if (canInsert())
|
||||
return new ElectricityPack((getMaxEnergy() - getEnergy()) / getVoltage(), getVoltage());
|
||||
else
|
||||
return new ElectricityPack();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public ElectricityPack getProvidedJoules() {
|
||||
if (canExtract())
|
||||
return new ElectricityPack(Math.min(getEnergy(), getMaxOutput()) / getVoltage(), getVoltage());
|
||||
else
|
||||
return new ElectricityPack();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public TileEntity getTile() {
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
|
@ -10,6 +10,7 @@ import java.util.EnumSet;
|
|||
import mekanism.api.Coord4D;
|
||||
import mekanism.api.MekanismConfig.general;
|
||||
import mekanism.common.base.IEnergyWrapper;
|
||||
import mekanism.common.integration.ue.UEDriverProxy;
|
||||
import mekanism.common.tile.TileEntityGasTank.GasMode;
|
||||
import mekanism.common.util.CableUtils;
|
||||
import mekanism.common.util.LangUtils;
|
||||
|
@ -24,6 +25,7 @@ import net.minecraftforge.fluids.FluidRegistry;
|
|||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidTankInfo;
|
||||
import net.minecraftforge.fluids.IFluidHandler;
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
import cpw.mods.fml.common.Optional.Interface;
|
||||
import cpw.mods.fml.common.Optional.InterfaceList;
|
||||
import cpw.mods.fml.common.Optional.Method;
|
||||
|
@ -39,10 +41,13 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
|
|||
|
||||
public TurbineFluidTank fluidTank;
|
||||
|
||||
private UEDriverProxy driver;
|
||||
|
||||
public TileEntityTurbineValve()
|
||||
{
|
||||
super("TurbineValve");
|
||||
fluidTank = new TurbineFluidTank(this);
|
||||
driver = UEDriverProxy.createProxy(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -62,6 +67,7 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
|
|||
double prev = getEnergy();
|
||||
CableUtils.emit(this);
|
||||
}
|
||||
driver.tick();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -160,6 +166,8 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
|
|||
deregister();
|
||||
}
|
||||
|
||||
driver.invalidate();
|
||||
|
||||
super.onChunkUnload();
|
||||
}
|
||||
|
||||
|
@ -168,6 +176,8 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
|
|||
{
|
||||
super.invalidate();
|
||||
|
||||
driver.invalidate();
|
||||
|
||||
if(MekanismUtils.useIC2())
|
||||
{
|
||||
deregister();
|
||||
|
@ -407,4 +417,75 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
|
|||
{
|
||||
return LangUtils.localize("gui.industrialTurbine");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canConnect(ForgeDirection side) {
|
||||
return getOutputtingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public double getVoltage() {
|
||||
return 120.0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canInsert() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canExtract() {
|
||||
return getOutputtingSides().size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canInsertOn(ForgeDirection side) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public boolean canExtractOn(ForgeDirection side) {
|
||||
return getOutputtingSides().contains(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public void insert(ElectricityPack pack, ForgeDirection side) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public void extract(ElectricityPack pack, ForgeDirection side) {
|
||||
setEnergy(Math.max(getEnergy() - pack.getWatts(), 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public ElectricityPack getDemandedJoules() {
|
||||
return new ElectricityPack();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public ElectricityPack getProvidedJoules() {
|
||||
if (canExtract())
|
||||
return new ElectricityPack(Math.min(getEnergy(), getMaxOutput()) / getVoltage(), getVoltage());
|
||||
else
|
||||
return new ElectricityPack();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Method(modid = "basiccomponents")
|
||||
public TileEntity getTile() {
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue