diff --git a/build.gradle b/build.gradle index b10543750..010d602bb 100644 --- a/build.gradle +++ b/build.gradle @@ -62,7 +62,8 @@ 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" + compile "universalelectricity:basiccomponents:2.0.0:deobf" + compile "universalelectricity:universalelectricity:5.1.0:deobf" } version = "${config.minecraft_version}-${config.mod_version}" @@ -149,6 +150,12 @@ task generatorsJar(type: Jar) { } } +task deobfJar(type: Jar) { + dependsOn processResources + from sourceSets.main.output + classifier = 'deobf' +} + coreJar.dependsOn('reobf') toolsJar.dependsOn('reobf') generatorsJar.dependsOn('reobf') diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 78c13f277..49ddf551a 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -60,6 +60,7 @@ import mekanism.common.frequency.Frequency; import mekanism.common.frequency.FrequencyManager; import mekanism.common.integration.MekanismHooks; import mekanism.common.integration.OreDictManager; +import mekanism.common.integration.UECompatModule; import mekanism.common.multiblock.MultiblockManager; import mekanism.common.multipart.MultipartMekanism; import mekanism.common.network.PacketDataRequest.DataRequestMessage; @@ -109,6 +110,7 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.RecipeSorter; import net.minecraftforge.oredict.RecipeSorter.Category; +import universalelectricity.api.CompatibilityModule; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -136,7 +138,7 @@ import cpw.mods.fml.common.registry.GameRegistry; * */ @Mod(modid = "Mekanism", name = "Mekanism", version = "GRADLE_MODVERSION", guiFactory = "mekanism.client.gui.ConfigGuiFactory", - dependencies = "after:basiccomponents;after:ForgeMultipart;after:BuildCraft;after:BuildCraftAPI;after:IC2;after:CoFHCore;" + + dependencies = "after:universalelectricity;after:ForgeMultipart;after:BuildCraft;after:BuildCraftAPI;after:IC2;after:CoFHCore;" + "after:ComputerCraft;after:Galacticraft;after:MineTweaker3") public class Mekanism { @@ -1187,6 +1189,10 @@ public class Mekanism GasRegistry.register(new OreGas(name.toLowerCase(), "oregas." + name.toLowerCase()).setCleanGas(clean).setVisible(false)); } + if (Loader.isModLoaded("universalelectricity")) { + CompatibilityModule.register(new UECompatModule()); + } + Mekanism.proxy.preInit(); //Register blocks and items diff --git a/src/main/java/mekanism/common/base/IEnergyWrapper.java b/src/main/java/mekanism/common/base/IEnergyWrapper.java index d5a839b4a..e1df80f7e 100644 --- a/src/main/java/mekanism/common/base/IEnergyWrapper.java +++ b/src/main/java/mekanism/common/base/IEnergyWrapper.java @@ -11,9 +11,6 @@ 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; @@ -21,12 +18,9 @@ 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 = "universalelectricity.compat.IElectricityTileHandler", modid = "basiccomponents"), - @Interface(iface = "universalelectricity.core.block.IConnector", modid = "basiccomponents"), - @Interface(iface = "universalelectricity.core.block.IVoltage", modid = "basiccomponents") + @Interface(iface = "ic2.api.tile.IEnergyStorage", modid = "IC2") }) -public interface IEnergyWrapper extends IStrictEnergyStorage, IEnergyHandler, IEnergySink, IEnergySource, IEnergyStorage, IStrictEnergyAcceptor, ICableOutputter, IInventory, IConnector, IVoltage, IElectricityTileHandler +public interface IEnergyWrapper extends IStrictEnergyStorage, IEnergyHandler, IEnergySink, IEnergySource, IEnergyStorage, IStrictEnergyAcceptor, ICableOutputter, IInventory { public EnumSet getOutputtingSides(); diff --git a/src/main/java/mekanism/common/integration/UECompatModule.java b/src/main/java/mekanism/common/integration/UECompatModule.java new file mode 100644 index 000000000..f7765270f --- /dev/null +++ b/src/main/java/mekanism/common/integration/UECompatModule.java @@ -0,0 +1,161 @@ +package mekanism.common.integration; + +import mekanism.api.energy.ICableOutputter; +import mekanism.api.energy.IEnergizedItem; +import mekanism.api.energy.IStrictEnergyAcceptor; +import mekanism.api.energy.IStrictEnergyStorage; +import mekanism.common.base.IEnergyWrapper; +import mekanism.common.multipart.PartUniversalCable; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.ForgeDirection; +import universalelectricity.api.CompatibilityModule; + +public class UECompatModule extends CompatibilityModule { + + @Override + public double doReceiveEnergy(Object handler, ForgeDirection direction, double energy, boolean doReceive) { + if (doCanReceive(handler, direction)) { + IStrictEnergyAcceptor acceptor = (IStrictEnergyAcceptor) handler; + return acceptor.transferEnergyToAcceptor(direction, energy); + } + return 0; + } + + @Override + public double doExtractEnergy(Object handler, ForgeDirection direction, double energy, boolean doExtract) { + if (doCanExtract(handler, direction) && handler instanceof IStrictEnergyStorage) { + double provided = doGetProvidedJoules(handler); + double toExtract = Math.min(provided, energy); + if (doExtract) { + IStrictEnergyStorage storage = (IStrictEnergyStorage) handler; + storage.setEnergy(storage.getEnergy() - toExtract); + } + return toExtract; + } + return 0; + } + + @Override + public double doChargeItem(ItemStack itemStack, double joules, boolean docharge) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double doDischargeItem(ItemStack itemStack, double joules, boolean doDischarge) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean doIsHandler(Object obj) { + if (obj instanceof PartUniversalCable) return false; + return obj instanceof IStrictEnergyAcceptor || (obj instanceof ICableOutputter && obj instanceof IStrictEnergyStorage) || obj instanceof IEnergizedItem; + } + + @Override + public boolean doIsEnergyContainer(Object obj) { + return obj instanceof IStrictEnergyStorage; + } + + @Override + public double doGetEnergy(Object obj, ForgeDirection direction) { + if (obj instanceof IStrictEnergyStorage) { + return ((IStrictEnergyStorage)obj).getEnergy(); + } + return 0; + } + + @Override + public boolean doCanConnect(Object obj, ForgeDirection direction, Object source) { + if (obj instanceof IStrictEnergyAcceptor && ((IStrictEnergyAcceptor)obj).canReceiveEnergy(direction)) { + return true; + } else if (obj instanceof ICableOutputter && ((ICableOutputter)obj).canOutputTo(direction)) { + return true; + } + return false; + } + + @Override + public ItemStack doGetItemWithCharge(ItemStack itemStack, double energy) { + IEnergizedItem item = (IEnergizedItem) itemStack.getItem(); + ItemStack copy = itemStack.copy(); + item.setEnergy(copy, energy); + return copy; + } + + @Override + public double doGetMaxEnergy(Object handler, ForgeDirection direction) { + if (handler instanceof IStrictEnergyStorage) { + return ((IStrictEnergyStorage)handler).getMaxEnergy(); + } + return 0; + } + + @Override + public double doGetEnergyItem(ItemStack is) { + IEnergizedItem item = (IEnergizedItem) is.getItem(); + return item.getEnergy(is); + } + + @Override + public double doGetMaxEnergyItem(ItemStack is) { + IEnergizedItem item = (IEnergizedItem) is.getItem(); + return item.getMaxEnergy(is); + } + + @Override + public double doGetInputVoltage(Object handler) { + return 960.0; + } + + @Override + public double doGetOutputVoltage(Object handler) { + return 120.0; + } + + @Override + public boolean doCanReceive(Object handler, ForgeDirection side) { + if (!(handler instanceof IStrictEnergyAcceptor)) return false; + + if (side != ForgeDirection.UNKNOWN) { + return ((IStrictEnergyAcceptor)handler).canReceiveEnergy(side); + } + + return true; + } + + @Override + public boolean doCanExtract(Object handler, ForgeDirection side) { + if (!(handler instanceof ICableOutputter)) return false; + + if (side != ForgeDirection.UNKNOWN) { + return ((ICableOutputter)handler).canOutputTo(side); + } + + return true; + } + + @Override + public double doGetDemandedJoules(Object handler) { + if (handler instanceof IStrictEnergyAcceptor) { + IStrictEnergyAcceptor acceptor = (IStrictEnergyAcceptor) handler; + return acceptor.getMaxEnergy() - acceptor.getEnergy(); + } + return 0; + } + + @Override + public double doGetProvidedJoules(Object handler) { + double maxOutput = 10000.0; + if (handler instanceof IEnergyWrapper) { + maxOutput = ((IEnergyWrapper)handler).getMaxOutput(); + } + if (handler instanceof IStrictEnergyStorage && handler instanceof ICableOutputter) { + IStrictEnergyStorage storage = (IStrictEnergyStorage) handler; + return Math.min(storage.getEnergy(), maxOutput); + } + return 0; + } + +} diff --git a/src/main/java/mekanism/common/integration/ue/UEDriverProxy.java b/src/main/java/mekanism/common/integration/ue/UEDriverProxy.java deleted file mode 100644 index 9e79a3e75..000000000 --- a/src/main/java/mekanism/common/integration/ue/UEDriverProxy.java +++ /dev/null @@ -1,20 +0,0 @@ -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(); - } - } - -} diff --git a/src/main/java/mekanism/common/integration/ue/UELoaded.java b/src/main/java/mekanism/common/integration/ue/UELoaded.java deleted file mode 100644 index 02cc19e5f..000000000 --- a/src/main/java/mekanism/common/integration/ue/UELoaded.java +++ /dev/null @@ -1,24 +0,0 @@ -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(); - } - -} diff --git a/src/main/java/mekanism/common/integration/ue/UEUnloaded.java b/src/main/java/mekanism/common/integration/ue/UEUnloaded.java deleted file mode 100644 index 698bc4349..000000000 --- a/src/main/java/mekanism/common/integration/ue/UEUnloaded.java +++ /dev/null @@ -1,15 +0,0 @@ -package mekanism.common.integration.ue; - -public class UEUnloaded extends UEDriverProxy { - - @Override - public void tick() { - - } - - @Override - public void invalidate() { - - } - -} diff --git a/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java b/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java index 3f0c4f4af..4d512e6e9 100644 --- a/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java +++ b/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java @@ -14,13 +14,11 @@ 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 @@ -37,8 +35,6 @@ 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. @@ -50,7 +46,6 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i super(name); BASE_MAX_ENERGY = baseMaxEnergy; maxEnergy = BASE_MAX_ENERGY; - driver = UEDriverProxy.createProxy(this); } @Method(modid = "IC2") @@ -96,9 +91,6 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i { register(); } - if (!this.worldObj.isRemote) { - driver.tick(); - } } @Override @@ -177,7 +169,6 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i { deregister(); } - driver.invalidate(); super.onChunkUnload(); } @@ -185,7 +176,6 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i public void invalidate() { super.invalidate(); - driver.invalidate(); if(MekanismUtils.useIC2()) { deregister(); @@ -409,77 +399,4 @@ 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; - } - } diff --git a/src/main/java/mekanism/common/tile/TileEntityInductionPort.java b/src/main/java/mekanism/common/tile/TileEntityInductionPort.java index 03470c5a3..252f98ce5 100644 --- a/src/main/java/mekanism/common/tile/TileEntityInductionPort.java +++ b/src/main/java/mekanism/common/tile/TileEntityInductionPort.java @@ -19,7 +19,6 @@ 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; @@ -47,12 +46,9 @@ 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 @@ -73,7 +69,6 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement CableUtils.emit(this); structure.remainingOutput -= (prev-getEnergy()); } - driver.tick(); } } @@ -201,8 +196,6 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement deregister(); } - driver.invalidate(); - super.onChunkUnload(); } @@ -211,8 +204,6 @@ public class TileEntityInductionPort extends TileEntityInductionCasing implement { super.invalidate(); - driver.invalidate(); - if(MekanismUtils.useIC2()) { deregister(); @@ -483,77 +474,4 @@ 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; - } - } \ No newline at end of file diff --git a/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineValve.java b/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineValve.java index f9622f496..ef8cf6d44 100644 --- a/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineValve.java +++ b/src/main/java/mekanism/generators/common/tile/turbine/TileEntityTurbineValve.java @@ -10,7 +10,6 @@ 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; @@ -25,7 +24,6 @@ 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; @@ -41,13 +39,10 @@ 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 @@ -67,7 +62,6 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I double prev = getEnergy(); CableUtils.emit(this); } - driver.tick(); } } @@ -166,8 +160,6 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I deregister(); } - driver.invalidate(); - super.onChunkUnload(); } @@ -176,8 +168,6 @@ public class TileEntityTurbineValve extends TileEntityTurbineCasing implements I { super.invalidate(); - driver.invalidate(); - if(MekanismUtils.useIC2()) { deregister(); @@ -418,74 +408,4 @@ 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; - } - }