-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bundle RF API, don't depend on CoFH Core being installed
- Loading branch information
1 parent
7a433b8
commit a52319f
Showing
13 changed files
with
618 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package cofh.api; | ||
|
||
public class CoFHAPIProps { | ||
|
||
private CoFHAPIProps() { | ||
|
||
} | ||
|
||
public static final String VERSION = "1.7.10R1.0.1"; | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
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 void setCapacity(int capacity) { | ||
|
||
this.capacity = capacity; | ||
|
||
if (energy > capacity) { | ||
energy = capacity; | ||
} | ||
} | ||
|
||
public void setMaxTransfer(int maxTransfer) { | ||
|
||
setMaxReceive(maxTransfer); | ||
setMaxExtract(maxTransfer); | ||
} | ||
|
||
public void setMaxReceive(int maxReceive) { | ||
|
||
this.maxReceive = maxReceive; | ||
} | ||
|
||
public void setMaxExtract(int maxExtract) { | ||
|
||
this.maxExtract = maxExtract; | ||
} | ||
|
||
public int getMaxReceive() { | ||
|
||
return maxReceive; | ||
} | ||
|
||
public int getMaxExtract() { | ||
|
||
return maxExtract; | ||
} | ||
|
||
/** | ||
* This function is included to allow for server -> 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; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package cofh.api.energy; | ||
|
||
import net.minecraftforge.common.util.ForgeDirection; | ||
|
||
/** | ||
* 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(ForgeDirection from); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
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); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package cofh.api.energy; | ||
|
||
import net.minecraftforge.common.util.ForgeDirection; | ||
|
||
/** | ||
* 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}. | ||
* | ||
* @author King Lemming | ||
* | ||
*/ | ||
public interface IEnergyHandler extends IEnergyProvider, IEnergyReceiver { | ||
|
||
// merely a convenience interface (remove these methods in 1.8; provided here for back-compat via compiler doing things) | ||
|
||
/** | ||
* 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. | ||
*/ | ||
@Override | ||
int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate); | ||
|
||
/** | ||
* 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. | ||
*/ | ||
@Override | ||
int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate); | ||
|
||
|
||
/** | ||
* Returns the amount of energy currently stored. | ||
*/ | ||
@Override | ||
int getEnergyStored(ForgeDirection from); | ||
|
||
/** | ||
* Returns the maximum amount of energy that can be stored. | ||
*/ | ||
@Override | ||
int getMaxEnergyStored(ForgeDirection from); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package cofh.api.energy; | ||
|
||
import net.minecraftforge.common.util.ForgeDirection; | ||
|
||
/** | ||
* 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 IEnergyConnection { | ||
|
||
/** | ||
* 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(ForgeDirection from, int maxExtract, boolean simulate); | ||
|
||
/** | ||
* Returns the amount of energy currently stored. | ||
*/ | ||
int getEnergyStored(ForgeDirection from); | ||
|
||
/** | ||
* Returns the maximum amount of energy that can be stored. | ||
*/ | ||
int getMaxEnergyStored(ForgeDirection from); | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package cofh.api.energy; | ||
|
||
import net.minecraftforge.common.util.ForgeDirection; | ||
|
||
/** | ||
* 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 IEnergyConnection { | ||
|
||
/** | ||
* 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(ForgeDirection from, int maxReceive, boolean simulate); | ||
|
||
/** | ||
* Returns the amount of energy currently stored. | ||
*/ | ||
int getEnergyStored(ForgeDirection from); | ||
|
||
/** | ||
* Returns the maximum amount of energy that can be stored. | ||
*/ | ||
int getMaxEnergyStored(ForgeDirection from); | ||
|
||
} |
Oops, something went wrong.