diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f18d6826..ede0bdc4f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,10 @@ ### 1.0.3 - Fixed item loading issue (raoulvdberge) +- Added integration for Forge energy (raoulvdberge) - Solderer now accepts items from any side, allowing easier automation (raoulvdberge) - Solderer is now intelligent about items in slots, and will only accept an item if it is part of a recipe (raoulvdberge) +- Updated to Forge 2088 (raoulvdberge) ### 1.0.2 - Fixed processing patterns not handling item insertion sometimes (raoulvdberge) diff --git a/src/main/java/refinedstorage/integration/forgeenergy/ControllerEnergyForge.java b/src/main/java/refinedstorage/integration/forgeenergy/ControllerEnergyForge.java new file mode 100755 index 000000000..a6a31f2e7 --- /dev/null +++ b/src/main/java/refinedstorage/integration/forgeenergy/ControllerEnergyForge.java @@ -0,0 +1,42 @@ +package refinedstorage.integration.forgeenergy; + +import net.minecraftforge.energy.IEnergyStorage; +import refinedstorage.tile.TileController; + +public class ControllerEnergyForge implements IEnergyStorage { + private TileController controller; + + public ControllerEnergyForge(TileController controller) { + this.controller = controller; + } + + @Override + public int receiveEnergy(int maxReceive, boolean simulate) { + return controller.getEnergy().receiveEnergy(maxReceive, simulate); + } + + @Override + public int extractEnergy(int maxExtract, boolean simulate) { + return controller.getEnergy().extractEnergy(maxExtract, simulate); + } + + @Override + public int getEnergyStored() { + return controller.getEnergy().getEnergyStored(); + } + + @Override + public int getMaxEnergyStored() { + return controller.getEnergy().getMaxEnergyStored(); + } + + @Override + public boolean canExtract() { + return false; + } + + @Override + public boolean canReceive() { + return true; + } +} diff --git a/src/main/java/refinedstorage/integration/forgeenergy/WirelessGridEnergyForge.java b/src/main/java/refinedstorage/integration/forgeenergy/WirelessGridEnergyForge.java new file mode 100755 index 000000000..02dd99c58 --- /dev/null +++ b/src/main/java/refinedstorage/integration/forgeenergy/WirelessGridEnergyForge.java @@ -0,0 +1,43 @@ +package refinedstorage.integration.forgeenergy; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.energy.IEnergyStorage; +import refinedstorage.RefinedStorageItems; + +public class WirelessGridEnergyForge implements IEnergyStorage { + private ItemStack stack; + + public WirelessGridEnergyForge(ItemStack stack) { + this.stack = stack; + } + + @Override + public int receiveEnergy(int maxReceive, boolean simulate) { + return RefinedStorageItems.WIRELESS_GRID.receiveEnergy(stack, maxReceive, simulate); + } + + @Override + public int extractEnergy(int maxExtract, boolean simulate) { + return RefinedStorageItems.WIRELESS_GRID.extractEnergy(stack, maxExtract, simulate); + } + + @Override + public int getEnergyStored() { + return RefinedStorageItems.WIRELESS_GRID.getEnergyStored(stack); + } + + @Override + public int getMaxEnergyStored() { + return RefinedStorageItems.WIRELESS_GRID.getMaxEnergyStored(stack); + } + + @Override + public boolean canExtract() { + return true; + } + + @Override + public boolean canReceive() { + return true; + } +} diff --git a/src/main/java/refinedstorage/integration/tesla/WirelessGridEnergyTesla.java b/src/main/java/refinedstorage/integration/tesla/WirelessGridEnergyTesla.java index 9a469e7f2..4fd7cb0b5 100755 --- a/src/main/java/refinedstorage/integration/tesla/WirelessGridEnergyTesla.java +++ b/src/main/java/refinedstorage/integration/tesla/WirelessGridEnergyTesla.java @@ -3,29 +3,27 @@ package refinedstorage.integration.tesla; import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaHolder; import net.minecraft.item.ItemStack; -import refinedstorage.item.ItemWirelessGrid; +import refinedstorage.RefinedStorageItems; public class WirelessGridEnergyTesla implements ITeslaHolder, ITeslaConsumer { - private ItemWirelessGrid wirelessGrid; private ItemStack stack; - public WirelessGridEnergyTesla(ItemWirelessGrid wirelessGrid, ItemStack stack) { - this.wirelessGrid = wirelessGrid; + public WirelessGridEnergyTesla(ItemStack stack) { this.stack = stack; } @Override public long getStoredPower() { - return wirelessGrid.getEnergyStored(stack); + return RefinedStorageItems.WIRELESS_GRID.getEnergyStored(stack); } @Override public long getCapacity() { - return wirelessGrid.getMaxEnergyStored(stack); + return RefinedStorageItems.WIRELESS_GRID.getMaxEnergyStored(stack); } @Override public long givePower(long power, boolean simulated) { - return wirelessGrid.receiveEnergy(stack, (int) power, simulated); + return RefinedStorageItems.WIRELESS_GRID.receiveEnergy(stack, (int) power, simulated); } } diff --git a/src/main/java/refinedstorage/item/ItemWirelessGrid.java b/src/main/java/refinedstorage/item/ItemWirelessGrid.java index eaed4ff35..3b161d39b 100755 --- a/src/main/java/refinedstorage/item/ItemWirelessGrid.java +++ b/src/main/java/refinedstorage/item/ItemWirelessGrid.java @@ -20,9 +20,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.fml.common.Optional; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageBlocks; +import refinedstorage.integration.forgeenergy.WirelessGridEnergyForge; import refinedstorage.integration.ic2.IntegrationIC2; import refinedstorage.integration.tesla.IntegrationTesla; import refinedstorage.integration.tesla.WirelessGridEnergyTesla; @@ -293,13 +295,18 @@ public class ItemWirelessGrid extends ItemEnergyContainer implements ISpecialEle @Override public boolean hasCapability(Capability capability, @Nullable EnumFacing facing) { - return IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER); + return capability == CapabilityEnergy.ENERGY || + (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)); } @Override public T getCapability(Capability capability, @Nullable EnumFacing facing) { + if (capability == CapabilityEnergy.ENERGY) { + return (T) new WirelessGridEnergyForge(stack); + } + if (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) { - return (T) new WirelessGridEnergyTesla(ItemWirelessGrid.this, stack); + return (T) new WirelessGridEnergyTesla(stack); } return null; diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index d5dd79973..f7c82255c 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -16,6 +16,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.Constants; +import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorage; @@ -47,6 +48,7 @@ import refinedstorage.block.BlockController; import refinedstorage.block.EnumControllerType; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; +import refinedstorage.integration.forgeenergy.ControllerEnergyForge; import refinedstorage.integration.ic2.ControllerEnergyIC2; import refinedstorage.integration.ic2.ControllerEnergyIC2None; import refinedstorage.integration.ic2.IControllerEnergyIC2; @@ -184,6 +186,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private List craftingTasksToRead = new ArrayList<>(); private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controllerCapacity); + private ControllerEnergyForge energyForge = new ControllerEnergyForge(this); private IControllerEnergyIC2 energyEU; private ControllerEnergyTesla energyTesla; @@ -827,6 +830,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public T getCapability(Capability capability, EnumFacing facing) { + if (capability == CapabilityEnergy.ENERGY) { + return (T) energyForge; + } + if (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) { return (T) energyTesla; } @@ -836,6 +843,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public boolean hasCapability(Capability capability, EnumFacing facing) { - return (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) || super.hasCapability(capability, facing); + return capability == CapabilityEnergy.ENERGY + || (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) + || super.hasCapability(capability, facing); } }