Drop support for RF

This commit is contained in:
Raoul Van den Berge
2016-11-26 23:18:57 +01:00
parent 90d501924b
commit 21cfd6cd20
22 changed files with 85 additions and 690 deletions

View File

@@ -1,11 +0,0 @@
package cofh.api;
public class CoFHAPIProps {
private CoFHAPIProps() {
}
public static final String VERSION = "1.8.9R1.2.0B1";
}

View File

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

View File

@@ -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.
* <p>
* 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);
}

View File

@@ -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.
* <p>
* 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);
}

View File

@@ -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.
* <p>
* A reference implementation is provided {@link TileEnergyHandler}.
* <p>
* 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);
}

View File

@@ -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.
* <p>
* 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);
}

View File

@@ -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.
* <p>
* 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);
}

View File

@@ -1,41 +0,0 @@
package cofh.api.energy;
/**
* An energy storage is the unit of interaction with Energy inventories.<br>
* This is not to be implemented on TileEntities. This is for internal use only.
* <p>
* 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();
}

View File

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

View File

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

View File

@@ -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;

View File

@@ -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;

View File

@@ -1,6 +1,5 @@
package com.raoulvdberge.refinedstorage.api.network; package com.raoulvdberge.refinedstorage.api.network;
import cofh.api.energy.EnergyStorage;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler; import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
@@ -25,11 +24,6 @@ import java.util.List;
* Represents a network master, usually is a controller. * Represents a network master, usually is a controller.
*/ */
public interface INetworkMaster { public interface INetworkMaster {
/**
* @return the energy storage of this network
*/
EnergyStorage getEnergy();
/** /**
* @return the energy usage per tick of this network * @return the energy usage per tick of this network
*/ */

View File

@@ -2,17 +2,17 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
public class NetworkItemWirelessCraftingMonitor implements INetworkItem { public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
private INetworkItemHandler handler; private INetworkItemHandler handler;
@@ -32,7 +32,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
@Override @Override
public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) { 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; return false;
} }
@@ -47,11 +47,11 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
public void drainEnergy(int energy) { public void drainEnergy(int energy) {
if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE) { 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); handler.onClose(player);
player.closeScreen(); player.closeScreen();

View File

@@ -2,7 +2,6 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.item;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; 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.item.ItemStack;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
public class NetworkItemWirelessGrid implements INetworkItem { public class NetworkItemWirelessGrid implements INetworkItem {
private INetworkItemHandler handler; private INetworkItemHandler handler;
@@ -31,7 +32,7 @@ public class NetworkItemWirelessGrid implements INetworkItem {
@Override @Override
public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) { 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; return false;
} }
@@ -46,11 +47,11 @@ public class NetworkItemWirelessGrid implements INetworkItem {
public void drainEnergy(int energy) { public void drainEnergy(int energy) {
if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) { 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); handler.onClose(player);
player.closeScreen(); player.closeScreen();

View File

@@ -94,7 +94,7 @@ public class BlockController extends BlockBase {
NBTTagCompound tag = stack.getTagCompound(); NBTTagCompound tag = stack.getTagCompound();
if (tag != null && tag.hasKey(TileController.NBT_ENERGY)) { 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));
} }
} }

View File

@@ -1,42 +1,18 @@
package com.raoulvdberge.refinedstorage.integration.forgeenergy; package com.raoulvdberge.refinedstorage.integration.forgeenergy;
import com.raoulvdberge.refinedstorage.tile.TileController; import com.raoulvdberge.refinedstorage.RS;
import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.energy.EnergyStorage;
public class ControllerEnergyForge implements IEnergyStorage { public class ControllerEnergyForge extends EnergyStorage {
private TileController controller; public ControllerEnergyForge() {
super(RS.INSTANCE.config.controllerCapacity, Integer.MAX_VALUE, 0);
public ControllerEnergyForge(TileController controller) {
this.controller = controller;
} }
@Override public void setMaxEnergyStored(int capacity) {
public int receiveEnergy(int maxReceive, boolean simulate) { this.capacity = capacity;
return controller.getEnergy().receiveEnergy(maxReceive, simulate);
} }
@Override public void setEnergyStored(int energy) {
public int extractEnergy(int maxExtract, boolean simulate) { this.energy = energy;
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;
} }
} }

View File

@@ -1,43 +1,47 @@
package com.raoulvdberge.refinedstorage.integration.forgeenergy; package com.raoulvdberge.refinedstorage.integration.forgeenergy;
import com.raoulvdberge.refinedstorage.RSItems;
import net.minecraft.item.ItemStack; 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; private ItemStack stack;
public NetworkItemEnergyForge(ItemStack stack) { public NetworkItemEnergyForge(ItemStack stack, int capacity) {
super(capacity, Integer.MAX_VALUE, Integer.MAX_VALUE);
this.stack = stack; this.stack = stack;
} }
@Override @Override
public int receiveEnergy(int maxReceive, boolean simulate) { 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 @Override
public int extractEnergy(int maxExtract, boolean simulate) { public int extractEnergy(int maxExtract, boolean simulate) {
return RSItems.WIRELESS_GRID.extractEnergy(stack, maxExtract, simulate); int extracted = super.extractEnergy(maxExtract, simulate);
}
@Override if (extracted > 0 && !simulate) {
public int getEnergyStored() { if (!stack.hasTagCompound()) {
return RSItems.WIRELESS_GRID.getEnergyStored(stack); stack.setTagCompound(new NBTTagCompound());
} }
@Override stack.getTagCompound().setInteger(NBT_ENERGY, getEnergyStored());
public int getMaxEnergyStored() { }
return RSItems.WIRELESS_GRID.getMaxEnergyStored(stack);
}
@Override return extracted;
public boolean canExtract() {
return true;
}
@Override
public boolean canReceive() {
return true;
} }
} }

View File

@@ -1,13 +1,13 @@
package com.raoulvdberge.refinedstorage.integration.tesla; 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.ITeslaConsumer;
import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.api.ITeslaHolder;
public class ControllerEnergyTesla implements ITeslaHolder, ITeslaConsumer { public class ControllerEnergyTesla implements ITeslaHolder, ITeslaConsumer {
private EnergyStorage energy; private ControllerEnergyForge energy;
public ControllerEnergyTesla(EnergyStorage energy) { public ControllerEnergyTesla(ControllerEnergyForge energy) {
this.energy = energy; this.energy = energy;
} }

View File

@@ -1,9 +1,9 @@
package com.raoulvdberge.refinedstorage.integration.tesla; package com.raoulvdberge.refinedstorage.integration.tesla;
import com.raoulvdberge.refinedstorage.RSItems;
import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaConsumer;
import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.api.ITeslaHolder;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.energy.CapabilityEnergy;
public class NetworkItemEnergyTesla implements ITeslaHolder, ITeslaConsumer { public class NetworkItemEnergyTesla implements ITeslaHolder, ITeslaConsumer {
private ItemStack stack; private ItemStack stack;
@@ -14,16 +14,16 @@ public class NetworkItemEnergyTesla implements ITeslaHolder, ITeslaConsumer {
@Override @Override
public long getStoredPower() { public long getStoredPower() {
return RSItems.WIRELESS_GRID.getEnergyStored(stack); return stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored();
} }
@Override @Override
public long getCapacity() { public long getCapacity() {
return RSItems.WIRELESS_GRID.getMaxEnergyStored(stack); return stack.getCapability(CapabilityEnergy.ENERGY, null).getMaxEnergyStored();
} }
@Override @Override
public long givePower(long power, boolean simulated) { 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);
} }
} }

View File

@@ -1,7 +1,5 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item;
import cofh.api.energy.ItemEnergyContainer;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider;
import com.raoulvdberge.refinedstorage.integration.forgeenergy.NetworkItemEnergyForge; 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.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; 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_NORMAL = 0;
public static final int TYPE_CREATIVE = 1; 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"; private static final String NBT_DIMENSION_ID = "DimensionID";
public ItemNetworkItem(String name) { public ItemNetworkItem(String name) {
super(3200); super(name);
setRegistryName(RS.ID, name);
setMaxDamage(3200); setMaxDamage(3200);
setMaxStackSize(1); setMaxStackSize(1);
setHasSubtypes(true); setHasSubtypes(true);
setCreativeTab(RS.INSTANCE.tab);
addPropertyOverride(new ResourceLocation("connected"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f); 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 @Override
public double getDurabilityForDisplay(ItemStack stack) { 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 @Override
@@ -107,7 +107,10 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe
list.add(new ItemStack(item, 1, TYPE_NORMAL)); list.add(new ItemStack(item, 1, TYPE_NORMAL));
ItemStack fullyCharged = 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(fullyCharged);
list.add(new ItemStack(item, 1, TYPE_CREATIVE)); 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); super.addInformation(stack, player, tooltip, advanced);
if (stack.getItemDamage() != TYPE_CREATIVE) { 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)) { if (isValid(stack)) {
@@ -187,16 +192,6 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe
return super.shouldCauseReequipAnimation(oldStack, newStack, slotChanged); 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) { public boolean isValid(ItemStack stack) {
return stack.hasTagCompound() return stack.hasTagCompound()
&& stack.getTagCompound().hasKey(NBT_CONTROLLER_X) && stack.getTagCompound().hasKey(NBT_CONTROLLER_X)
@@ -221,7 +216,7 @@ public abstract class ItemNetworkItem extends ItemEnergyContainer implements INe
@Override @Override
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) { public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
if (capability == CapabilityEnergy.ENERGY) { 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)) { if (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) {

View File

@@ -1,7 +1,5 @@
package com.raoulvdberge.refinedstorage.tile; package com.raoulvdberge.refinedstorage.tile;
import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyReceiver;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSUtils; import com.raoulvdberge.refinedstorage.RSUtils;
@@ -76,7 +74,7 @@ import javax.annotation.Nullable;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; 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<Integer> REDSTONE_MODE = RedstoneMode.createParameter(); public static final TileDataParameter<Integer> REDSTONE_MODE = RedstoneMode.createParameter();
public static final TileDataParameter<Integer> ENERGY_USAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileController>() { public static final TileDataParameter<Integer> ENERGY_USAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileController>() {
@@ -89,14 +87,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
public static final TileDataParameter<Integer> ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileController>() { public static final TileDataParameter<Integer> ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileController>() {
@Override @Override
public Integer getValue(TileController tile) { public Integer getValue(TileController tile) {
return tile.getEnergy().getEnergyStored(); return tile.energy.getEnergyStored();
} }
}); });
public static final TileDataParameter<Integer> ENERGY_CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileController>() { public static final TileDataParameter<Integer> ENERGY_CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileController>() {
@Override @Override
public Integer getValue(TileController tile) { 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<ICraftingTask> craftingTasksToCancel = new ArrayList<>(); private List<ICraftingTask> craftingTasksToCancel = new ArrayList<>();
private List<NBTTagCompound> craftingTasksToRead = new ArrayList<>(); private List<NBTTagCompound> craftingTasksToRead = new ArrayList<>();
private EnergyStorage energy = new EnergyStorage(RS.INSTANCE.config.controllerCapacity); private ControllerEnergyForge energy = new ControllerEnergyForge();
private ControllerEnergyForge energyForge = new ControllerEnergyForge(this);
private ControllerEnergyTesla energyTesla; private ControllerEnergyTesla energyTesla;
private int lastEnergyDisplay; private int lastEnergyDisplay;
@@ -202,14 +199,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
} }
} }
@Override public ControllerEnergyForge getEnergy() {
public BlockPos getPosition() { return energy;
return pos;
} }
@Override @Override
public EnergyStorage getEnergy() { public BlockPos getPosition() {
return energy; return pos;
} }
@Override @Override
@@ -810,7 +806,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
public void readFromNBT(NBTTagCompound tag) { public void readFromNBT(NBTTagCompound tag) {
super.readFromNBT(tag); super.readFromNBT(tag);
energy.readFromNBT(tag); if (tag.hasKey(NBT_ENERGY)) {
energy.setEnergyStored(tag.getInteger(NBT_ENERGY));
}
redstoneMode = RedstoneMode.read(tag); redstoneMode = RedstoneMode.read(tag);
@@ -843,7 +841,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
public NBTTagCompound writeToNBT(NBTTagCompound tag) { public NBTTagCompound writeToNBT(NBTTagCompound tag) {
super.writeToNBT(tag); super.writeToNBT(tag);
energy.writeToNBT(tag); tag.setInteger(NBT_ENERGY, energy.getEnergyStored());
redstoneMode.write(tag); redstoneMode.write(tag);
@@ -882,22 +880,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public void readUpdate(NBTTagCompound tag) { 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)); energy.setEnergyStored(tag.getInteger(NBT_ENERGY));
super.readUpdate(tag); 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) { public static int getEnergyScaled(int stored, int capacity, int scale) {
return (int) ((float) stored / (float) capacity * (float) 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); 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 @Override
public RedstoneMode getRedstoneMode() { public RedstoneMode getRedstoneMode() {
return redstoneMode; return redstoneMode;
@@ -952,7 +930,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) { public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == CapabilityEnergy.ENERGY) { if (capability == CapabilityEnergy.ENERGY) {
return (T) energyForge; return (T) energy;
} }
if (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) { if (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) {