diff --git a/src/main/java/cofh/api/CoFHAPIProps.java b/src/main/java/cofh/api/CoFHAPIProps.java deleted file mode 100755 index becea23e0..000000000 --- a/src/main/java/cofh/api/CoFHAPIProps.java +++ /dev/null @@ -1,11 +0,0 @@ -package cofh.api; - -public class CoFHAPIProps { - - private CoFHAPIProps() { - - } - - public static final String VERSION = "1.8.9R1.2.0B1"; - -} diff --git a/src/main/java/cofh/api/energy/EnergyStorage.java b/src/main/java/cofh/api/energy/EnergyStorage.java deleted file mode 100755 index d5e34000c..000000000 --- a/src/main/java/cofh/api/energy/EnergyStorage.java +++ /dev/null @@ -1,161 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.nbt.NBTTagCompound; - -/** - * Reference implementation of {@link IEnergyStorage}. Use/extend this or implement your own. - * - * @author King Lemming - */ -public class EnergyStorage implements IEnergyStorage { - - protected int energy; - protected int capacity; - protected int maxReceive; - protected int maxExtract; - - public EnergyStorage(int capacity) { - - this(capacity, capacity, capacity); - } - - public EnergyStorage(int capacity, int maxTransfer) { - - this(capacity, maxTransfer, maxTransfer); - } - - public EnergyStorage(int capacity, int maxReceive, int maxExtract) { - - this.capacity = capacity; - this.maxReceive = maxReceive; - this.maxExtract = maxExtract; - } - - public EnergyStorage readFromNBT(NBTTagCompound nbt) { - - this.energy = nbt.getInteger("Energy"); - - if (energy > capacity) { - energy = capacity; - } - return this; - } - - public NBTTagCompound writeToNBT(NBTTagCompound nbt) { - - if (energy < 0) { - energy = 0; - } - nbt.setInteger("Energy", energy); - return nbt; - } - - public EnergyStorage setCapacity(int capacity) { - - this.capacity = capacity; - - if (energy > capacity) { - energy = capacity; - } - return this; - } - - public EnergyStorage setMaxTransfer(int maxTransfer) { - - setMaxReceive(maxTransfer); - setMaxExtract(maxTransfer); - return this; - } - - public EnergyStorage setMaxReceive(int maxReceive) { - - this.maxReceive = maxReceive; - return this; - } - - public EnergyStorage setMaxExtract(int maxExtract) { - - this.maxExtract = maxExtract; - return this; - } - - public int getMaxReceive() { - - return maxReceive; - } - - public int getMaxExtract() { - - return maxExtract; - } - - /** - * This function is included to allow for server to client sync. Do not call this externally to the containing Tile Entity, as not all IEnergyHandlers - * are guaranteed to have it. - * - * @param energy - */ - public void setEnergyStored(int energy) { - - this.energy = energy; - - if (this.energy > capacity) { - this.energy = capacity; - } else if (this.energy < 0) { - this.energy = 0; - } - } - - /** - * This function is included to allow the containing tile to directly and efficiently modify the energy contained in the EnergyStorage. Do not rely on this - * externally, as not all IEnergyHandlers are guaranteed to have it. - * - * @param energy - */ - public void modifyEnergyStored(int energy) { - - this.energy += energy; - - if (this.energy > capacity) { - this.energy = capacity; - } else if (this.energy < 0) { - this.energy = 0; - } - } - - /* IEnergyStorage */ - @Override - public int receiveEnergy(int maxReceive, boolean simulate) { - - int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive)); - - if (!simulate) { - energy += energyReceived; - } - return energyReceived; - } - - @Override - public int extractEnergy(int maxExtract, boolean simulate) { - - int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract)); - - if (!simulate) { - energy -= energyExtracted; - } - return energyExtracted; - } - - @Override - public int getEnergyStored() { - - return energy; - } - - @Override - public int getMaxEnergyStored() { - - return capacity; - } - -} diff --git a/src/main/java/cofh/api/energy/IEnergyConnection.java b/src/main/java/cofh/api/energy/IEnergyConnection.java deleted file mode 100755 index b33a9d90a..000000000 --- a/src/main/java/cofh/api/energy/IEnergyConnection.java +++ /dev/null @@ -1,21 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.util.EnumFacing; - - -/** - * Implement this interface on TileEntities which should connect to energy transportation blocks. This is intended for blocks which generate energy but do not - * accept it; otherwise just use IEnergyHandler. - *

- * Note that {@link IEnergyHandler} is an extension of this. - * - * @author King Lemming - */ -public interface IEnergyConnection { - - /** - * Returns TRUE if the TileEntity can connect on a given side. - */ - boolean canConnectEnergy(EnumFacing from); - -} diff --git a/src/main/java/cofh/api/energy/IEnergyContainerItem.java b/src/main/java/cofh/api/energy/IEnergyContainerItem.java deleted file mode 100755 index f5d2ebfd9..000000000 --- a/src/main/java/cofh/api/energy/IEnergyContainerItem.java +++ /dev/null @@ -1,45 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.item.ItemStack; - -/** - * Implement this interface on Item classes that support external manipulation of their internal energy storages. - *

- * A reference implementation is provided {@link ItemEnergyContainer}. - * - * @author King Lemming - */ -public interface IEnergyContainerItem { - - /** - * Adds energy to a container item. Returns the quantity of energy that was accepted. This should always return 0 if the item cannot be externally charged. - * - * @param container ItemStack to be charged. - * @param maxReceive Maximum amount of energy to be sent into the item. - * @param simulate If TRUE, the charge will only be simulated. - * @return Amount of energy that was (or would have been, if simulated) received by the item. - */ - int receiveEnergy(ItemStack container, int maxReceive, boolean simulate); - - /** - * Removes energy from a container item. Returns the quantity of energy that was removed. This should always return 0 if the item cannot be externally - * discharged. - * - * @param container ItemStack to be discharged. - * @param maxExtract Maximum amount of energy to be extracted from the item. - * @param simulate If TRUE, the discharge will only be simulated. - * @return Amount of energy that was (or would have been, if simulated) extracted from the item. - */ - int extractEnergy(ItemStack container, int maxExtract, boolean simulate); - - /** - * Get the amount of energy currently stored in the container item. - */ - int getEnergyStored(ItemStack container); - - /** - * Get the max amount of energy that can be stored in the container item. - */ - int getMaxEnergyStored(ItemStack container); - -} diff --git a/src/main/java/cofh/api/energy/IEnergyHandler.java b/src/main/java/cofh/api/energy/IEnergyHandler.java deleted file mode 100755 index 1d5dc5576..000000000 --- a/src/main/java/cofh/api/energy/IEnergyHandler.java +++ /dev/null @@ -1,26 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.util.EnumFacing; - -/** - * Implement this interface on Tile Entities which should handle energy, generally storing it in one or more internal {@link IEnergyStorage} objects. - *

- * A reference implementation is provided {@link TileEnergyHandler}. - *

- * Note that {@link IEnergyReceiver} and {@link IEnergyProvider} are extensions of this. - * - * @author King Lemming - */ -public interface IEnergyHandler extends IEnergyConnection { - - /** - * Returns the amount of energy currently stored. - */ - int getEnergyStored(EnumFacing from); - - /** - * Returns the maximum amount of energy that can be stored. - */ - int getMaxEnergyStored(EnumFacing from); - -} diff --git a/src/main/java/cofh/api/energy/IEnergyProvider.java b/src/main/java/cofh/api/energy/IEnergyProvider.java deleted file mode 100755 index 784726a04..000000000 --- a/src/main/java/cofh/api/energy/IEnergyProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.util.EnumFacing; - - -/** - * Implement this interface on Tile Entities which should provide energy, generally storing it in one or more internal {@link IEnergyStorage} objects. - *

- * A reference implementation is provided {@link TileEnergyHandler}. - * - * @author King Lemming - */ -public interface IEnergyProvider extends IEnergyHandler { - - /** - * Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider. - * - * @param from Orientation the energy is extracted from. - * @param maxExtract Maximum amount of energy to extract. - * @param simulate If TRUE, the extraction will only be simulated. - * @return Amount of energy that was (or would have been, if simulated) extracted. - */ - int extractEnergy(EnumFacing from, int maxExtract, boolean simulate); - -} diff --git a/src/main/java/cofh/api/energy/IEnergyReceiver.java b/src/main/java/cofh/api/energy/IEnergyReceiver.java deleted file mode 100755 index c2b654029..000000000 --- a/src/main/java/cofh/api/energy/IEnergyReceiver.java +++ /dev/null @@ -1,25 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.util.EnumFacing; - - -/** - * Implement this interface on Tile Entities which should receive energy, generally storing it in one or more internal {@link IEnergyStorage} objects. - *

- * A reference implementation is provided {@link TileEnergyHandler}. - * - * @author King Lemming - */ -public interface IEnergyReceiver extends IEnergyHandler { - - /** - * Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver. - * - * @param from Orientation the energy is received from. - * @param maxReceive Maximum amount of energy to receive. - * @param simulate If TRUE, the charge will only be simulated. - * @return Amount of energy that was (or would have been, if simulated) received. - */ - int receiveEnergy(EnumFacing from, int maxReceive, boolean simulate); - -} diff --git a/src/main/java/cofh/api/energy/IEnergyStorage.java b/src/main/java/cofh/api/energy/IEnergyStorage.java deleted file mode 100755 index b69f1df79..000000000 --- a/src/main/java/cofh/api/energy/IEnergyStorage.java +++ /dev/null @@ -1,41 +0,0 @@ -package cofh.api.energy; - -/** - * An energy storage is the unit of interaction with Energy inventories.
- * This is not to be implemented on TileEntities. This is for internal use only. - *

- * A reference implementation can be found at {@link EnergyStorage}. - * - * @author King Lemming - */ -public interface IEnergyStorage { - - /** - * Adds energy to the storage. Returns quantity of energy that was accepted. - * - * @param maxReceive Maximum amount of energy to be inserted. - * @param simulate If TRUE, the insertion will only be simulated. - * @return Amount of energy that was (or would have been, if simulated) accepted by the storage. - */ - int receiveEnergy(int maxReceive, boolean simulate); - - /** - * Removes energy from the storage. Returns quantity of energy that was removed. - * - * @param maxExtract Maximum amount of energy to be extracted. - * @param simulate If TRUE, the extraction will only be simulated. - * @return Amount of energy that was (or would have been, if simulated) extracted from the storage. - */ - int extractEnergy(int maxExtract, boolean simulate); - - /** - * Returns the amount of energy currently stored. - */ - int getEnergyStored(); - - /** - * Returns the maximum amount of energy that can be stored. - */ - int getMaxEnergyStored(); - -} diff --git a/src/main/java/cofh/api/energy/ItemEnergyContainer.java b/src/main/java/cofh/api/energy/ItemEnergyContainer.java deleted file mode 100755 index bdca3f0d5..000000000 --- a/src/main/java/cofh/api/energy/ItemEnergyContainer.java +++ /dev/null @@ -1,112 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; - -/** - * Reference implementation of {@link IEnergyContainerItem}. Use/extend this or implement your own. - * - * @author King Lemming - */ -public class ItemEnergyContainer extends Item implements IEnergyContainerItem { - - protected int capacity; - protected int maxReceive; - protected int maxExtract; - - public ItemEnergyContainer() { - - } - - public ItemEnergyContainer(int capacity) { - - this(capacity, capacity, capacity); - } - - public ItemEnergyContainer(int capacity, int maxTransfer) { - - this(capacity, maxTransfer, maxTransfer); - } - - public ItemEnergyContainer(int capacity, int maxReceive, int maxExtract) { - - this.capacity = capacity; - this.maxReceive = maxReceive; - this.maxExtract = maxExtract; - } - - public ItemEnergyContainer setCapacity(int capacity) { - - this.capacity = capacity; - return this; - } - - public ItemEnergyContainer setMaxTransfer(int maxTransfer) { - - setMaxReceive(maxTransfer); - setMaxExtract(maxTransfer); - return this; - } - - public ItemEnergyContainer setMaxReceive(int maxReceive) { - - this.maxReceive = maxReceive; - return this; - } - - public ItemEnergyContainer setMaxExtract(int maxExtract) { - - this.maxExtract = maxExtract; - return this; - } - - /* IEnergyContainerItem */ - @Override - public int receiveEnergy(ItemStack container, int maxReceive, boolean simulate) { - - if (!container.hasTagCompound()) { - container.setTagCompound(new NBTTagCompound()); - } - int energy = container.getTagCompound().getInteger("Energy"); - int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive)); - - if (!simulate) { - energy += energyReceived; - container.getTagCompound().setInteger("Energy", energy); - } - return energyReceived; - } - - @Override - public int extractEnergy(ItemStack container, int maxExtract, boolean simulate) { - - if (container.getTagCompound() == null || !container.getTagCompound().hasKey("Energy")) { - return 0; - } - int energy = container.getTagCompound().getInteger("Energy"); - int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract)); - - if (!simulate) { - energy -= energyExtracted; - container.getTagCompound().setInteger("Energy", energy); - } - return energyExtracted; - } - - @Override - public int getEnergyStored(ItemStack container) { - - if (container.getTagCompound() == null || !container.getTagCompound().hasKey("Energy")) { - return 0; - } - return container.getTagCompound().getInteger("Energy"); - } - - @Override - public int getMaxEnergyStored(ItemStack container) { - - return capacity; - } - -} diff --git a/src/main/java/cofh/api/energy/TileEnergyHandler.java b/src/main/java/cofh/api/energy/TileEnergyHandler.java deleted file mode 100755 index 77c7ec787..000000000 --- a/src/main/java/cofh/api/energy/TileEnergyHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -package cofh.api.energy; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumFacing; - -/** - * Reference implementation of {@link IEnergyReceiver} and {@link IEnergyProvider}. Use/extend this or implement your own. - *

- * This class is really meant to summarize how each interface is properly used. - * - * @author King Lemming - */ -public class TileEnergyHandler extends TileEntity implements IEnergyReceiver, IEnergyProvider { - - protected EnergyStorage storage = new EnergyStorage(32000); - - @Override - public void readFromNBT(NBTTagCompound nbt) { - - super.readFromNBT(nbt); - storage.readFromNBT(nbt); - } - - @Override - public NBTTagCompound writeToNBT(NBTTagCompound nbt) { - - super.writeToNBT(nbt); - storage.writeToNBT(nbt); - return nbt; - } - - /* IEnergyConnection */ - @Override - public boolean canConnectEnergy(EnumFacing from) { - - return true; - } - - /* IEnergyReceiver */ - @Override - public int receiveEnergy(EnumFacing from, int maxReceive, boolean simulate) { - - return storage.receiveEnergy(maxReceive, simulate); - } - - /* IEnergyProvider */ - @Override - public int extractEnergy(EnumFacing from, int maxExtract, boolean simulate) { - - return storage.extractEnergy(maxExtract, simulate); - } - - /* IEnergyHandler */ - @Override - public int getEnergyStored(EnumFacing from) { - - return storage.getEnergyStored(); - } - - @Override - public int getMaxEnergyStored(EnumFacing from) { - - return storage.getMaxEnergyStored(); - } - -} diff --git a/src/main/java/cofh/api/energy/package-info.java b/src/main/java/cofh/api/energy/package-info.java deleted file mode 100755 index 21dca2485..000000000 --- a/src/main/java/cofh/api/energy/package-info.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * (C) 2014-2016 Team CoFH / CoFH / Cult of the Full Hub - * http://www.teamcofh.com - */ -@API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHAPI", provides = "CoFHAPI|energy") -package cofh.api.energy; - -import cofh.api.CoFHAPIProps; -import net.minecraftforge.fml.common.API; - diff --git a/src/main/java/cofh/api/package-info.java b/src/main/java/cofh/api/package-info.java deleted file mode 100755 index e2847daad..000000000 --- a/src/main/java/cofh/api/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -/** - * (C) 2014-2016 Team CoFH / CoFH / Cult of the Full Hub - * http://www.teamcofh.com - */ -@API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHLib", provides = "CoFHAPI") -package cofh.api; - -import net.minecraftforge.fml.common.API; - diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java index b42841aab..5002c9221 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java @@ -1,6 +1,5 @@ package com.raoulvdberge.refinedstorage.api.network; -import cofh.api.energy.EnergyStorage; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler; @@ -25,11 +24,6 @@ import java.util.List; * Represents a network master, usually is a controller. */ public interface INetworkMaster { - /** - * @return the energy storage of this network - */ - EnergyStorage getEnergy(); - /** * @return the energy usage per tick of this network */ diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java index fb80ba305..5759db6f9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java @@ -2,17 +2,17 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSGui; -import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; -import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; import net.minecraft.world.World; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; public class NetworkItemWirelessCraftingMonitor implements INetworkItem { private INetworkItemHandler handler; @@ -32,7 +32,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem { @Override public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) { - if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE && RSItems.WIRELESS_CRAFTING_MONITOR.getEnergyStored(stack) <= RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage) { + if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage) { return false; } @@ -47,11 +47,11 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem { public void drainEnergy(int energy) { if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE) { - ItemWirelessGrid item = RSItems.WIRELESS_GRID; + IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null); - item.extractEnergy(stack, energy, false); + energyStorage.extractEnergy(energy, false); - if (item.getEnergyStored(stack) <= 0) { + if (energyStorage.getEnergyStored() <= 0) { handler.onClose(player); player.closeScreen(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java index 2bffcaa2d..66656fadf 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java @@ -2,7 +2,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSGui; -import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; @@ -12,6 +11,8 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; import net.minecraft.world.World; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; public class NetworkItemWirelessGrid implements INetworkItem { private INetworkItemHandler handler; @@ -31,7 +32,7 @@ public class NetworkItemWirelessGrid implements INetworkItem { @Override public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) { - if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE && RSItems.WIRELESS_GRID.getEnergyStored(stack) <= RS.INSTANCE.config.wirelessGridOpenUsage) { + if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessGridOpenUsage) { return false; } @@ -46,11 +47,11 @@ public class NetworkItemWirelessGrid implements INetworkItem { public void drainEnergy(int energy) { if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) { - ItemWirelessGrid item = RSItems.WIRELESS_GRID; + IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null); - item.extractEnergy(stack, energy, false); + energyStorage.extractEnergy(energy, false); - if (item.getEnergyStored(stack) <= 0) { + if (energyStorage.getEnergyStored() <= 0) { handler.onClose(player); player.closeScreen(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java index b1cf49d1a..d87d33747 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java @@ -94,7 +94,7 @@ public class BlockController extends BlockBase { NBTTagCompound tag = stack.getTagCompound(); if (tag != null && tag.hasKey(TileController.NBT_ENERGY)) { - controller.getEnergy().receiveEnergy(tag.getInteger(TileController.NBT_ENERGY), false); + controller.getEnergy().setEnergyStored(tag.getInteger(TileController.NBT_ENERGY)); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ControllerEnergyForge.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ControllerEnergyForge.java index a0ad337ad..75fe3bfb9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ControllerEnergyForge.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/ControllerEnergyForge.java @@ -1,42 +1,18 @@ package com.raoulvdberge.refinedstorage.integration.forgeenergy; -import com.raoulvdberge.refinedstorage.tile.TileController; -import net.minecraftforge.energy.IEnergyStorage; +import com.raoulvdberge.refinedstorage.RS; +import net.minecraftforge.energy.EnergyStorage; -public class ControllerEnergyForge implements IEnergyStorage { - private TileController controller; - - public ControllerEnergyForge(TileController controller) { - this.controller = controller; +public class ControllerEnergyForge extends EnergyStorage { + public ControllerEnergyForge() { + super(RS.INSTANCE.config.controllerCapacity, Integer.MAX_VALUE, 0); } - @Override - public int receiveEnergy(int maxReceive, boolean simulate) { - return controller.getEnergy().receiveEnergy(maxReceive, simulate); + public void setMaxEnergyStored(int capacity) { + this.capacity = capacity; } - @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; + public void setEnergyStored(int energy) { + this.energy = energy; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/NetworkItemEnergyForge.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/NetworkItemEnergyForge.java index 762cfbcd5..93e4dd741 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/NetworkItemEnergyForge.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/forgeenergy/NetworkItemEnergyForge.java @@ -1,43 +1,47 @@ package com.raoulvdberge.refinedstorage.integration.forgeenergy; -import com.raoulvdberge.refinedstorage.RSItems; import net.minecraft.item.ItemStack; -import net.minecraftforge.energy.IEnergyStorage; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.energy.EnergyStorage; + +public class NetworkItemEnergyForge extends EnergyStorage { + private static final String NBT_ENERGY = "Energy"; -public class NetworkItemEnergyForge implements IEnergyStorage { private ItemStack stack; - public NetworkItemEnergyForge(ItemStack stack) { + public NetworkItemEnergyForge(ItemStack stack, int capacity) { + super(capacity, Integer.MAX_VALUE, Integer.MAX_VALUE); + this.stack = stack; } @Override public int receiveEnergy(int maxReceive, boolean simulate) { - return RSItems.WIRELESS_GRID.receiveEnergy(stack, maxReceive, simulate); + int received = super.receiveEnergy(maxReceive, simulate); + + if (received > 0 && !simulate) { + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } + + stack.getTagCompound().setInteger(NBT_ENERGY, getEnergyStored()); + } + + return received; } @Override public int extractEnergy(int maxExtract, boolean simulate) { - return RSItems.WIRELESS_GRID.extractEnergy(stack, maxExtract, simulate); - } + int extracted = super.extractEnergy(maxExtract, simulate); - @Override - public int getEnergyStored() { - return RSItems.WIRELESS_GRID.getEnergyStored(stack); - } + if (extracted > 0 && !simulate) { + if (!stack.hasTagCompound()) { + stack.setTagCompound(new NBTTagCompound()); + } - @Override - public int getMaxEnergyStored() { - return RSItems.WIRELESS_GRID.getMaxEnergyStored(stack); - } + stack.getTagCompound().setInteger(NBT_ENERGY, getEnergyStored()); + } - @Override - public boolean canExtract() { - return true; - } - - @Override - public boolean canReceive() { - return true; + return extracted; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ControllerEnergyTesla.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ControllerEnergyTesla.java index 271b19243..de70b7129 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ControllerEnergyTesla.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/ControllerEnergyTesla.java @@ -1,13 +1,13 @@ package com.raoulvdberge.refinedstorage.integration.tesla; -import cofh.api.energy.EnergyStorage; +import com.raoulvdberge.refinedstorage.integration.forgeenergy.ControllerEnergyForge; import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaHolder; public class ControllerEnergyTesla implements ITeslaHolder, ITeslaConsumer { - private EnergyStorage energy; + private ControllerEnergyForge energy; - public ControllerEnergyTesla(EnergyStorage energy) { + public ControllerEnergyTesla(ControllerEnergyForge energy) { this.energy = energy; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/NetworkItemEnergyTesla.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/NetworkItemEnergyTesla.java index 836f383cd..88d54c542 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/NetworkItemEnergyTesla.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/tesla/NetworkItemEnergyTesla.java @@ -1,9 +1,9 @@ package com.raoulvdberge.refinedstorage.integration.tesla; -import com.raoulvdberge.refinedstorage.RSItems; import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaHolder; import net.minecraft.item.ItemStack; +import net.minecraftforge.energy.CapabilityEnergy; public class NetworkItemEnergyTesla implements ITeslaHolder, ITeslaConsumer { private ItemStack stack; @@ -14,16 +14,16 @@ public class NetworkItemEnergyTesla implements ITeslaHolder, ITeslaConsumer { @Override public long getStoredPower() { - return RSItems.WIRELESS_GRID.getEnergyStored(stack); + return stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored(); } @Override public long getCapacity() { - return RSItems.WIRELESS_GRID.getMaxEnergyStored(stack); + return stack.getCapability(CapabilityEnergy.ENERGY, null).getMaxEnergyStored(); } @Override public long givePower(long power, boolean simulated) { - return RSItems.WIRELESS_GRID.receiveEnergy(stack, (int) power, simulated); + return stack.getCapability(CapabilityEnergy.ENERGY, null).receiveEnergy((int) power, simulated); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java index 63630d484..e02cf4224 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java @@ -1,7 +1,5 @@ package com.raoulvdberge.refinedstorage.item; -import cofh.api.energy.ItemEnergyContainer; -import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider; import com.raoulvdberge.refinedstorage.integration.forgeenergy.NetworkItemEnergyForge; @@ -25,11 +23,12 @@ 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.energy.IEnergyStorage; import javax.annotation.Nullable; import java.util.List; -public abstract class ItemNetworkItem extends ItemEnergyContainer implements INetworkItemProvider { +public abstract class ItemNetworkItem extends ItemBase implements INetworkItemProvider { public static final int TYPE_NORMAL = 0; public static final int TYPE_CREATIVE = 1; @@ -39,13 +38,12 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe private static final String NBT_DIMENSION_ID = "DimensionID"; public ItemNetworkItem(String name) { - super(3200); + super(name); - setRegistryName(RS.ID, name); setMaxDamage(3200); setMaxStackSize(1); setHasSubtypes(true); - setCreativeTab(RS.INSTANCE.tab); + addPropertyOverride(new ResourceLocation("connected"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f); } @@ -89,7 +87,9 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe @Override public double getDurabilityForDisplay(ItemStack stack) { - return 1D - ((double) getEnergyStored(stack) / (double) getMaxEnergyStored(stack)); + IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); + + return 1D - ((double) energy.getEnergyStored() / (double) energy.getMaxEnergyStored()); } @Override @@ -107,7 +107,10 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe list.add(new ItemStack(item, 1, TYPE_NORMAL)); ItemStack fullyCharged = new ItemStack(item, 1, TYPE_NORMAL); - receiveEnergy(fullyCharged, getMaxEnergyStored(fullyCharged), false); + + IEnergyStorage energy = fullyCharged.getCapability(CapabilityEnergy.ENERGY, null); + energy.receiveEnergy(energy.getMaxEnergyStored(), false); + list.add(fullyCharged); list.add(new ItemStack(item, 1, TYPE_CREATIVE)); @@ -118,7 +121,9 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe super.addInformation(stack, player, tooltip, advanced); if (stack.getItemDamage() != TYPE_CREATIVE) { - tooltip.add(I18n.format("misc.refinedstorage:energy_stored", getEnergyStored(stack), getMaxEnergyStored(stack))); + IEnergyStorage energy = stack.getCapability(CapabilityEnergy.ENERGY, null); + + tooltip.add(I18n.format("misc.refinedstorage:energy_stored", energy.getEnergyStored(), energy.getMaxEnergyStored())); } if (isValid(stack)) { @@ -187,16 +192,6 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe return super.shouldCauseReequipAnimation(oldStack, newStack, slotChanged); } - @Override - public String getUnlocalizedName() { - return "item." + RS.ID + ":" + getRegistryName().getResourcePath(); - } - - @Override - public String getUnlocalizedName(ItemStack stack) { - return getUnlocalizedName() + "." + stack.getItemDamage(); - } - public boolean isValid(ItemStack stack) { return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_CONTROLLER_X) @@ -221,7 +216,7 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe @Override public T getCapability(Capability capability, @Nullable EnumFacing facing) { if (capability == CapabilityEnergy.ENERGY) { - return (T) new NetworkItemEnergyForge(stack); + return (T) new NetworkItemEnergyForge(stack, 3200); } if (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java index 5ead857c6..25f850c1c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java @@ -1,7 +1,5 @@ package com.raoulvdberge.refinedstorage.tile; -import cofh.api.energy.EnergyStorage; -import cofh.api.energy.IEnergyReceiver; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSUtils; @@ -76,7 +74,7 @@ import javax.annotation.Nullable; import java.util.*; import java.util.stream.Collectors; -public class TileController extends TileBase implements INetworkMaster, IEnergyReceiver, IRedstoneConfigurable { +public class TileController extends TileBase implements INetworkMaster, IRedstoneConfigurable { public static final TileDataParameter REDSTONE_MODE = RedstoneMode.createParameter(); public static final TileDataParameter ENERGY_USAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { @@ -89,14 +87,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR public static final TileDataParameter ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { @Override public Integer getValue(TileController tile) { - return tile.getEnergy().getEnergyStored(); + return tile.energy.getEnergyStored(); } }); public static final TileDataParameter ENERGY_CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer() { @Override public Integer getValue(TileController tile) { - return tile.getEnergy().getMaxEnergyStored(); + return tile.energy.getMaxEnergyStored(); } }); @@ -176,8 +174,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private List craftingTasksToCancel = new ArrayList<>(); private List craftingTasksToRead = new ArrayList<>(); - private EnergyStorage energy = new EnergyStorage(RS.INSTANCE.config.controllerCapacity); - private ControllerEnergyForge energyForge = new ControllerEnergyForge(this); + private ControllerEnergyForge energy = new ControllerEnergyForge(); private ControllerEnergyTesla energyTesla; private int lastEnergyDisplay; @@ -202,14 +199,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR } } - @Override - public BlockPos getPosition() { - return pos; + public ControllerEnergyForge getEnergy() { + return energy; } @Override - public EnergyStorage getEnergy() { - return energy; + public BlockPos getPosition() { + return pos; } @Override @@ -810,7 +806,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); - energy.readFromNBT(tag); + if (tag.hasKey(NBT_ENERGY)) { + energy.setEnergyStored(tag.getInteger(NBT_ENERGY)); + } redstoneMode = RedstoneMode.read(tag); @@ -843,7 +841,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR public NBTTagCompound writeToNBT(NBTTagCompound tag) { super.writeToNBT(tag); - energy.writeToNBT(tag); + tag.setInteger(NBT_ENERGY, energy.getEnergyStored()); redstoneMode.write(tag); @@ -882,22 +880,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public void readUpdate(NBTTagCompound tag) { - energy.setCapacity(tag.getInteger(NBT_ENERGY_CAPACITY)); + energy.setMaxEnergyStored(tag.getInteger(NBT_ENERGY_CAPACITY)); energy.setEnergyStored(tag.getInteger(NBT_ENERGY)); super.readUpdate(tag); } - @Override - public int receiveEnergy(EnumFacing from, int maxReceive, boolean simulate) { - return energy.receiveEnergy(maxReceive, simulate); - } - - @Override - public int getEnergyStored(EnumFacing from) { - return energy.getEnergyStored(); - } - public static int getEnergyScaled(int stored, int capacity, int scale) { return (int) ((float) stored / (float) capacity * (float) scale); } @@ -906,16 +894,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR return getEnergyScaled(energy.getEnergyStored(), energy.getMaxEnergyStored(), 7); } - @Override - public int getMaxEnergyStored(EnumFacing from) { - return energy.getMaxEnergyStored(); - } - - @Override - public boolean canConnectEnergy(EnumFacing from) { - return true; - } - @Override public RedstoneMode getRedstoneMode() { return redstoneMode; @@ -952,7 +930,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public T getCapability(Capability capability, EnumFacing facing) { if (capability == CapabilityEnergy.ENERGY) { - return (T) energyForge; + return (T) energy; } if (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) {