Skip to content

Commit

Permalink
1.12 port of the 1.10.2 rewrite
Browse files Browse the repository at this point in the history
- RF-based exchangers are disabled by default as the supported tech mods
are not out for 1.12 yet
- Still using code-based recipes rather than JSON for now
  • Loading branch information
Jacky1356400 committed Jun 23, 2017
1 parent a82a6d9 commit 20135aa
Show file tree
Hide file tree
Showing 182 changed files with 4,101 additions and 837 deletions.
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx3G
mc_version=1.12
forge_version=14.21.0.2327
mod_version=1.0.2
mappings_version=20170614
forge_version=14.21.0.2338
mod_version=1.1
mappings_version=20170615
11 changes: 11 additions & 0 deletions src/main/java/cofh/api/CoFHAPIProps.java
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.5.0";

}
159 changes: 159 additions & 0 deletions src/main/java/cofh/api/energy/EnergyStorage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
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;
}

}
20 changes: 20 additions & 0 deletions src/main/java/cofh/api/energy/IEnergyConnection.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
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);

}
45 changes: 45 additions & 0 deletions src/main/java/cofh/api/energy/IEnergyContainerItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
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);

}
26 changes: 26 additions & 0 deletions src/main/java/cofh/api/energy/IEnergyHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
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);

}
24 changes: 24 additions & 0 deletions src/main/java/cofh/api/energy/IEnergyProvider.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
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);

}
24 changes: 24 additions & 0 deletions src/main/java/cofh/api/energy/IEnergyReceiver.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
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);

}
41 changes: 41 additions & 0 deletions src/main/java/cofh/api/energy/IEnergyStorage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
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.
*
* 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();

}
Loading

0 comments on commit 20135aa

Please sign in to comment.