diff --git a/CHANGELOG.md b/CHANGELOG.md index 79f3e6686..d31773b26 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Added a debug storage disk - Added tooltip to solderer progress bar that shows progress percentage - Added support for the Tesla energy system +- Added support for the IC2 (EU) energy system - Tweaked grid GUI ### 0.8.3 diff --git a/build.gradle b/build.gradle index 04b70b3a2..91e72e259 100755 --- a/build.gradle +++ b/build.gradle @@ -30,11 +30,16 @@ repositories { maven { url "http://maven.epoxide.xyz" } + maven { + name = "ic2" + url = "http://maven.ic2.player.to/" + } } dependencies { deobfCompile "mezz.jei:jei_1.10:3.7.+" compile "net.darkhax.tesla:Tesla:1.9.4-1.1.0.24" + compile "net.industrial-craft:industrialcraft-2:2.6.7-ex110:api" } processResources { diff --git a/src/main/java/refinedstorage/item/ItemWirelessGrid.java b/src/main/java/refinedstorage/item/ItemWirelessGrid.java index 29e8e3b94..daf562e7c 100755 --- a/src/main/java/refinedstorage/item/ItemWirelessGrid.java +++ b/src/main/java/refinedstorage/item/ItemWirelessGrid.java @@ -1,6 +1,8 @@ package refinedstorage.item; import cofh.api.energy.ItemEnergyContainer; +import ic2.api.item.IElectricItemManager; +import ic2.api.item.ISpecialElectricItem; import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.capability.TeslaCapabilities; @@ -28,7 +30,7 @@ import refinedstorage.tile.grid.TileGrid; import javax.annotation.Nullable; import java.util.List; -public class ItemWirelessGrid extends ItemEnergyContainer { +public class ItemWirelessGrid extends ItemEnergyContainer implements ISpecialElectricItem, IElectricItemManager { public static final int TYPE_NORMAL = 0; public static final int TYPE_CREATIVE = 1; @@ -220,6 +222,56 @@ public class ItemWirelessGrid extends ItemEnergyContainer { return getUnlocalizedName() + "." + stack.getItemDamage(); } + @Override + public IElectricItemManager getManager(ItemStack stack) { + return this; + } + + @Override + public double charge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate) { + return receiveEnergy(stack, (int) amount, simulate); + } + + @Override + public double discharge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) { + return extractEnergy(stack, (int) amount, simulate); + } + + @Override + public double getCharge(ItemStack stack) { + return getEnergyStored(stack); + } + + @Override + public double getMaxCharge(ItemStack stack) { + return getMaxEnergyStored(stack); + } + + @Override + public boolean canUse(ItemStack stack, double amount) { + return true; + } + + @Override + public boolean use(ItemStack stack, double amount, EntityLivingBase entity) { + return true; + } + + @Override + public void chargeFromArmor(ItemStack stack, EntityLivingBase entity) { + // NO OP + } + + @Override + public String getToolTip(ItemStack stack) { + return null; + } + + @Override + public int getTier(ItemStack stack) { + return Integer.MAX_VALUE; + } + class TeslaEnergy implements ITeslaHolder, ITeslaConsumer { private ItemStack stack; diff --git a/src/main/java/refinedstorage/tile/controller/TileController.java b/src/main/java/refinedstorage/tile/controller/TileController.java index fbe23beb7..6ccb180f0 100755 --- a/src/main/java/refinedstorage/tile/controller/TileController.java +++ b/src/main/java/refinedstorage/tile/controller/TileController.java @@ -2,6 +2,7 @@ package refinedstorage.tile.controller; import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyReceiver; +import ic2.api.energy.prefab.BasicSink; import io.netty.buffer.ByteBuf; import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaHolder; @@ -97,6 +98,19 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private List craftingTasksToCancel = new ArrayList(); private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controller); + private BasicSink ic2Energy = new BasicSink(this, energy.getMaxEnergyStored(), Integer.MAX_VALUE) { + @Override + public double getDemandedEnergy() { + return Math.max(0.0D, (double) energy.getMaxEnergyStored() - (double) energy.getEnergyStored()); + } + + @Override + public double injectEnergy(EnumFacing directionFrom, double amount, double voltage) { + energy.setEnergyStored(energy.getEnergyStored() + (int) amount); + + return 0.0D; + } + }; private int energyUsage; private int lastEnergyDisplay; @@ -128,6 +142,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public void update() { if (!worldObj.isRemote) { + ic2Energy.update(); + for (INetworkNode node : nodesToAdd) { nodes.add(node); @@ -222,6 +238,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR super.update(); } + @Override + public void invalidate() { + super.invalidate(); + + ic2Energy.invalidate(); + } + @Override public List getNodes() { return nodes; @@ -262,6 +285,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public void onChunkUnload() { disconnectNodes(); + + ic2Energy.invalidate(); } public IGroupedStorage getStorage() {