feat: added UniversalElectricity compat

This commit is contained in:
Timo Ley 2022-11-01 18:47:33 +01:00
parent a09f0cfd16
commit 9de6a1e648
9 changed files with 322 additions and 6 deletions

View file

@ -1,5 +1,6 @@
buildscript { buildscript {
repositories { repositories {
mavenCentral()
maven { maven {
name = "central" name = "central"
url = "https://maven.thorfusion.com/artifactory/central/" url = "https://maven.thorfusion.com/artifactory/central/"
@ -31,7 +32,9 @@ repositories {
name 'central' name 'central'
url 'https://maven.thorfusion.com/artifactory/central/' url 'https://maven.thorfusion.com/artifactory/central/'
} }
maven {
url 'https://maven.tilera.xyz'
}
} }
idea { idea {
@ -59,6 +62,7 @@ dependencies {
compile "inventorytweaks:inventory-tweaks:1.7.10-1.60.0:api" compile "inventorytweaks:inventory-tweaks:1.7.10-1.60.0:api"
compile "net.industrial-craft:industrialcraft-2:2.2.828-experimental: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 "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}" version = "${config.minecraft_version}-${config.mod_version}"

View file

@ -135,7 +135,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
* *
*/ */
@Mod(modid = "Mekanism", name = "Mekanism", version = "GRADLE_MODVERSION", guiFactory = "mekanism.client.gui.ConfigGuiFactory", @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") "after:ComputerCraft;after:Galacticraft;after:MineTweaker3")
public class Mekanism public class Mekanism
{ {

View file

@ -11,6 +11,9 @@ import mekanism.api.energy.IStrictEnergyAcceptor;
import mekanism.api.energy.IStrictEnergyStorage; import mekanism.api.energy.IStrictEnergyStorage;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraftforge.common.util.ForgeDirection; 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 cofh.api.energy.IEnergyHandler;
import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList; import cpw.mods.fml.common.Optional.InterfaceList;
@ -18,9 +21,12 @@ import cpw.mods.fml.common.Optional.InterfaceList;
@InterfaceList({ @InterfaceList({
@Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = "IC2"), @Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = "IC2"),
@Interface(iface = "ic2.api.energy.tile.IEnergySource", 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(); public EnumSet<ForgeDirection> getOutputtingSides();

View file

@ -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();
}
}
}

View 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();
}
}

View file

@ -0,0 +1,15 @@
package mekanism.common.integration.ue;
public class UEUnloaded extends UEDriverProxy {
@Override
public void tick() {
}
@Override
public void invalidate() {
}
}

View file

@ -14,11 +14,13 @@ import mekanism.api.Coord4D;
import mekanism.api.MekanismConfig.general; import mekanism.api.MekanismConfig.general;
import mekanism.api.transmitters.ITransmitterTile; import mekanism.api.transmitters.ITransmitterTile;
import mekanism.common.base.IEnergyWrapper; import mekanism.common.base.IEnergyWrapper;
import mekanism.common.integration.ue.UEDriverProxy;
import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import universalelectricity.core.electricity.ElectricityPack;
import cpw.mods.fml.common.Optional.Method; import cpw.mods.fml.common.Optional.Method;
public abstract class TileEntityElectricBlock extends TileEntityContainerBlock implements IEnergyWrapper public abstract class TileEntityElectricBlock extends TileEntityContainerBlock implements IEnergyWrapper
@ -35,6 +37,8 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
/** Is this registered with IC2 */ /** Is this registered with IC2 */
public boolean ic2Registered = false; public boolean ic2Registered = false;
private UEDriverProxy driver;
/** /**
* The base of all blocks that deal with electricity. It has a facing state, initialized state, * The base of all blocks that deal with electricity. It has a facing state, initialized state,
* and a current amount of stored energy. * and a current amount of stored energy.
@ -46,6 +50,7 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
super(name); super(name);
BASE_MAX_ENERGY = baseMaxEnergy; BASE_MAX_ENERGY = baseMaxEnergy;
maxEnergy = BASE_MAX_ENERGY; maxEnergy = BASE_MAX_ENERGY;
driver = UEDriverProxy.createProxy(this);
} }
@Method(modid = "IC2") @Method(modid = "IC2")
@ -91,6 +96,9 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
{ {
register(); register();
} }
if (!this.worldObj.isRemote) {
driver.tick();
}
} }
@Override @Override
@ -169,7 +177,7 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
{ {
deregister(); deregister();
} }
driver.invalidate();
super.onChunkUnload(); super.onChunkUnload();
} }
@ -177,7 +185,7 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
public void invalidate() public void invalidate()
{ {
super.invalidate(); super.invalidate();
driver.invalidate();
if(MekanismUtils.useIC2()) if(MekanismUtils.useIC2())
{ {
deregister(); deregister();
@ -400,4 +408,78 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i
return toUse; 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;
}
} }

View file

@ -19,6 +19,7 @@ import mekanism.api.transmitters.ITransmitterTile;
import mekanism.common.Mekanism; import mekanism.common.Mekanism;
import mekanism.common.base.IActiveState; import mekanism.common.base.IActiveState;
import mekanism.common.base.IEnergyWrapper; import mekanism.common.base.IEnergyWrapper;
import mekanism.common.integration.ue.UEDriverProxy;
import mekanism.common.network.PacketTileEntity.TileEntityMessage; import mekanism.common.network.PacketTileEntity.TileEntityMessage;
import mekanism.common.util.CableUtils; import mekanism.common.util.CableUtils;
import mekanism.common.util.LangUtils; import mekanism.common.util.LangUtils;
@ -29,6 +30,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentText;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import universalelectricity.core.electricity.ElectricityPack;
import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList; import cpw.mods.fml.common.Optional.InterfaceList;
import cpw.mods.fml.common.Optional.Method; import cpw.mods.fml.common.Optional.Method;
@ -45,9 +47,12 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
/** false = input, true = output */ /** false = input, true = output */
public boolean mode; public boolean mode;
private UEDriverProxy driver;
public TileEntityInductionPort() public TileEntityInductionPort()
{ {
super("InductionPort"); super("InductionPort");
driver = UEDriverProxy.createProxy(this);
} }
@Override @Override
@ -68,6 +73,7 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
CableUtils.emit(this); CableUtils.emit(this);
structure.remainingOutput -= (prev-getEnergy()); structure.remainingOutput -= (prev-getEnergy());
} }
driver.tick();
} }
} }
@ -195,6 +201,8 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
deregister(); deregister();
} }
driver.invalidate();
super.onChunkUnload(); super.onChunkUnload();
} }
@ -203,6 +211,8 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
{ {
super.invalidate(); super.invalidate();
driver.invalidate();
if(MekanismUtils.useIC2()) if(MekanismUtils.useIC2())
{ {
deregister(); deregister();
@ -472,4 +482,78 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement
{ {
return false; 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;
}
} }

View file

@ -10,6 +10,7 @@ import java.util.EnumSet;
import mekanism.api.Coord4D; import mekanism.api.Coord4D;
import mekanism.api.MekanismConfig.general; import mekanism.api.MekanismConfig.general;
import mekanism.common.base.IEnergyWrapper; import mekanism.common.base.IEnergyWrapper;
import mekanism.common.integration.ue.UEDriverProxy;
import mekanism.common.tile.TileEntityGasTank.GasMode; import mekanism.common.tile.TileEntityGasTank.GasMode;
import mekanism.common.util.CableUtils; import mekanism.common.util.CableUtils;
import mekanism.common.util.LangUtils; import mekanism.common.util.LangUtils;
@ -24,6 +25,7 @@ import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import universalelectricity.core.electricity.ElectricityPack;
import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList; import cpw.mods.fml.common.Optional.InterfaceList;
import cpw.mods.fml.common.Optional.Method; import cpw.mods.fml.common.Optional.Method;
@ -39,10 +41,13 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
public TurbineFluidTank fluidTank; public TurbineFluidTank fluidTank;
private UEDriverProxy driver;
public TileEntityTurbineValve() public TileEntityTurbineValve()
{ {
super("TurbineValve"); super("TurbineValve");
fluidTank = new TurbineFluidTank(this); fluidTank = new TurbineFluidTank(this);
driver = UEDriverProxy.createProxy(this);
} }
@Override @Override
@ -62,6 +67,7 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
double prev = getEnergy(); double prev = getEnergy();
CableUtils.emit(this); CableUtils.emit(this);
} }
driver.tick();
} }
} }
@ -160,6 +166,8 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
deregister(); deregister();
} }
driver.invalidate();
super.onChunkUnload(); super.onChunkUnload();
} }
@ -168,6 +176,8 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
{ {
super.invalidate(); super.invalidate();
driver.invalidate();
if(MekanismUtils.useIC2()) if(MekanismUtils.useIC2())
{ {
deregister(); deregister();
@ -407,4 +417,75 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I
{ {
return LangUtils.localize("gui.industrialTurbine"); 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;
}
} }