aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/interfaces')
-rw-r--r--src/main/java/gregtech/api/interfaces/IIconContainer.java15
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IBasicEnergyContainer.java6
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java3
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IDebugableTileEntity.java20
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java12
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IGTEnet.java20
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java2
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IHasWorldObjectAndCoords.java5
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IIC2Enet.java17
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IMachineProgress.java4
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/IRedstoneEmitter.java7
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/ITurnable.java15
12 files changed, 112 insertions, 14 deletions
diff --git a/src/main/java/gregtech/api/interfaces/IIconContainer.java b/src/main/java/gregtech/api/interfaces/IIconContainer.java
index 0b185b387a..780edf18d6 100644
--- a/src/main/java/gregtech/api/interfaces/IIconContainer.java
+++ b/src/main/java/gregtech/api/interfaces/IIconContainer.java
@@ -1,5 +1,7 @@
package gregtech.api.interfaces;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
@@ -7,15 +9,28 @@ public interface IIconContainer {
/**
* @return A regular Icon.
*/
+ @SideOnly(Side.CLIENT)
IIcon getIcon();
/**
* @return Icon of the Overlay (or null if there is no Icon)
*/
+ @SideOnly(Side.CLIENT)
IIcon getOverlayIcon();
/**
+ * @return the Amount of Render Passes for this Icon.
+ */
+ @SideOnly(Side.CLIENT)
+ default int getIconPasses() {
+ return 1;
+ };
+
+ /**
* @return the Default Texture File for this Icon.
*/
+ @SideOnly(Side.CLIENT)
ResourceLocation getTextureFile();
+
+
}
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IBasicEnergyContainer.java b/src/main/java/gregtech/api/interfaces/tileentity/IBasicEnergyContainer.java
index 6998556fd0..ca3db3354e 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/IBasicEnergyContainer.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IBasicEnergyContainer.java
@@ -80,12 +80,12 @@ public interface IBasicEnergyContainer extends IEnergyConnected {
/**
* returns the amount of Steam contained in this Block, in EU units!
*/
- long getStoredSteam();
+ default long getStoredSteam() { return 0; }
/**
* returns the amount of Steam containable in this Block, in EU units!
*/
- long getSteamCapacity();
+ default long getSteamCapacity() { return 0; }
/**
* Increases stored Energy. Energy Base Value is in EU, even though it's Steam!
@@ -96,5 +96,5 @@ public interface IBasicEnergyContainer extends IEnergyConnected {
* <p/>
* And yes, you can't directly decrease the Steam of a Machine. That is done by decreaseStoredEnergyUnits
*/
- boolean increaseStoredSteam(long aEnergy, boolean aIgnoreTooMuchEnergy);
+ default boolean increaseStoredSteam(long aEnergy, boolean aIgnoreTooMuchEnergy) { return false; }
}
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java b/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java
index ebfae9d90e..e496479bed 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java
@@ -21,8 +21,9 @@ public interface ICoverable extends IRedstoneTileEntity, IHasInventory, IBasicEn
setCoverDataAtSide(aSide, ((ISerializableObject.LegacyCoverData) aData).get());
}
+ void setCoverIdAndDataAtSide(byte aSide, int aId, ISerializableObject aData);
void setCoverIDAtSide(byte aSide, int aID);
-
+ boolean setCoverIDAtSideNoUpdate(byte aSide, int aID);
void setCoverItemAtSide(byte aSide, ItemStack aCover);
@Deprecated
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IDebugableTileEntity.java b/src/main/java/gregtech/api/interfaces/tileentity/IDebugableTileEntity.java
new file mode 100644
index 0000000000..0063eb57c6
--- /dev/null
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IDebugableTileEntity.java
@@ -0,0 +1,20 @@
+package gregtech.api.interfaces.tileentity;
+
+import net.minecraft.entity.player.EntityPlayer;
+
+import java.util.ArrayList;
+
+public interface IDebugableTileEntity {
+ /**
+ * Returns a Debug Message, for a generic DebugItem
+ *
+ * @param aPlayer the Player, who rightclicked with his Debug Item
+ * @param aLogLevel the Log Level of the Debug Item.
+ * 0 = Obvious
+ * 1 = Visible for the regular Scanner
+ * 2 = Only visible to more advanced Scanners
+ * 3 = Debug ONLY
+ * @return a String-Array containing the DebugInfo, every Index is a separate line (0 = first Line)
+ */
+ ArrayList<String> getDebugInfo(EntityPlayer aPlayer, int aLogLevel);
+}
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java b/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java
index 2b67e680a4..702f19a89d 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IEnergyConnected.java
@@ -46,21 +46,21 @@ public interface IEnergyConnected extends IColoredTileEntity, IHasWorldObjectAnd
/**
* Utility for the Network
*/
- class Util {
+ final class Util {
/**
* Emits Energy to the E-net. Also compatible with adjacent IC2 TileEntities.
*
* @return the used Amperage.
*/
- public static final long emitEnergyToNetwork(long aVoltage, long aAmperage, IEnergyConnected aEmitter) {
+ public static long emitEnergyToNetwork(long aVoltage, long aAmperage, IEnergyConnected aEmitter) {
long rUsedAmperes = 0;
for (byte i = 0, j = 0; i < 6 && aAmperage > rUsedAmperes; i++) {
if (aEmitter.outputsEnergyTo(i)) {
j = GT_Utility.getOppositeSide(i);
- TileEntity tTileEntity = aEmitter.getTileEntityAtSide(i);
+ final TileEntity tTileEntity = aEmitter.getTileEntityAtSide(i);
if (tTileEntity instanceof IEnergyConnected) {
if (aEmitter.getColorization() >= 0) {
- byte tColor = ((IEnergyConnected) tTileEntity).getColorization();
+ final byte tColor = ((IEnergyConnected) tTileEntity).getColorization();
if (tColor >= 0 && tColor != aEmitter.getColorization()) continue;
}
rUsedAmperes += ((IEnergyConnected) tTileEntity).injectEnergyUnits(j, aVoltage, aAmperage - rUsedAmperes);
@@ -71,8 +71,8 @@ public interface IEnergyConnected extends IColoredTileEntity, IHasWorldObjectAnd
rUsedAmperes++;
}
} else if (GregTech_API.mOutputRF && tTileEntity instanceof IEnergyReceiver) {
- ForgeDirection tDirection = ForgeDirection.getOrientation(i).getOpposite();
- int rfOut = GT_Utility.safeInt(aVoltage * GregTech_API.mEUtoRF / 100);
+ final ForgeDirection tDirection = ForgeDirection.getOrientation(i).getOpposite();
+ final int rfOut = GT_Utility.safeInt(aVoltage * GregTech_API.mEUtoRF / 100);
if (((IEnergyReceiver) tTileEntity).receiveEnergy(tDirection, rfOut, true) == rfOut) {
((IEnergyReceiver) tTileEntity).receiveEnergy(tDirection, rfOut, false);
rUsedAmperes++;
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IGTEnet.java b/src/main/java/gregtech/api/interfaces/tileentity/IGTEnet.java
new file mode 100644
index 0000000000..cd4810eba6
--- /dev/null
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IGTEnet.java
@@ -0,0 +1,20 @@
+package gregtech.api.interfaces.tileentity;
+
+public interface IGTEnet {
+
+ /**
+ * @return true if this Device consumes Energy at all
+ */
+ default boolean isEnetInput() {
+ return false;
+ }
+
+ /**
+ *
+ * @return true if this Device emits Energy at all
+ */
+ default boolean isEnetOutput() {
+ return false;
+ }
+
+}
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java b/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java
index 7b3e3fee6c..8c6da608fd 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java
@@ -17,7 +17,7 @@ import java.util.UUID;
/**
* A simple compound Interface for all my TileEntities.
* <p/>
- * Also delivers most of the Informations about my TileEntities.
+ * Also delivers most of the Information about my TileEntities.
* <p/>
* It can cause Problems to include this Interface!
*/
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IHasWorldObjectAndCoords.java b/src/main/java/gregtech/api/interfaces/tileentity/IHasWorldObjectAndCoords.java
index f367b7c073..2464816045 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/IHasWorldObjectAndCoords.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IHasWorldObjectAndCoords.java
@@ -5,6 +5,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.fluids.IFluidHandler;
@@ -25,6 +26,10 @@ public interface IHasWorldObjectAndCoords {
int getZCoord();
+ default ChunkCoordinates getCoords() {
+ return new ChunkCoordinates(getXCoord(), getYCoord(), getZCoord());
+ }
+
boolean isServerSide();
boolean isClientSide();
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IIC2Enet.java b/src/main/java/gregtech/api/interfaces/tileentity/IIC2Enet.java
new file mode 100644
index 0000000000..ee3516dfac
--- /dev/null
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IIC2Enet.java
@@ -0,0 +1,17 @@
+package gregtech.api.interfaces.tileentity;
+
+/**
+ * IC2 Energy Compat
+ */
+public interface IIC2Enet {
+ /**
+ * Should this tile/block join the ic2 enet
+ */
+ boolean shouldJoinIc2Enet();
+
+ /**
+ * Update the ic2 enet
+ */
+ void doEnetUpdate();
+
+}
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IMachineProgress.java b/src/main/java/gregtech/api/interfaces/tileentity/IMachineProgress.java
index f5eeaf9318..0c342b8cfc 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/IMachineProgress.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IMachineProgress.java
@@ -49,13 +49,13 @@ public interface IMachineProgress extends IHasWorldObjectAndCoords {
* used to control Machines via Redstone Signal Strength by special Covers
* In case of 0 the Machine is very likely doing nothing, or is just not being controlled at all.
*/
- byte getWorkDataValue();
+ default byte getWorkDataValue() { return 0; }
/**
* used to control Machines via Redstone Signal Strength by special Covers
* only Values between 0 and 15!
*/
- void setWorkDataValue(byte aValue);
+ default void setWorkDataValue(byte aValue) {}
/**
* gives you the Active Status of the Machine
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IRedstoneEmitter.java b/src/main/java/gregtech/api/interfaces/tileentity/IRedstoneEmitter.java
index f9fff116f4..fc5aa460bf 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/IRedstoneEmitter.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/IRedstoneEmitter.java
@@ -34,4 +34,11 @@ public interface IRedstoneEmitter extends IHasWorldObjectAndCoords {
* Gets the Output for the comparator on the given Side
*/
byte getComparatorValue(byte aSide);
+
+ /**
+ * Get the redstone output signal strength for a given side
+ */
+ default byte getGeneralRS(byte aSide) {
+ return 0;
+ }
}
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/ITurnable.java b/src/main/java/gregtech/api/interfaces/tileentity/ITurnable.java
index 94888cdfb8..8c8ce443b0 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/ITurnable.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/ITurnable.java
@@ -1,6 +1,8 @@
package gregtech.api.interfaces.tileentity;
+import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES;
+
/**
* Implemented by all my Machines. However without any security checks, if the Players are even allowed to rotate it.
*/
@@ -15,7 +17,7 @@ public interface ITurnable {
/**
* Set the block's facing
*
- * @param facing facing to set the block to
+ * @param aSide facing to set the block to
*/
void setFrontFacing(byte aSide);
@@ -30,4 +32,15 @@ public interface ITurnable {
* Determine if the wrench can be used to set the block's facing.
*/
boolean isValidFacing(byte aSide);
+
+ /**
+ * Get the list of valid facings
+ */
+ default boolean[] getValidFacings() {
+ final boolean[] validFacings = new boolean[6];
+ for(byte facing : ALL_VALID_SIDES) {
+ validFacings[facing] = isValidFacing(facing);
+ }
+ return validFacings;
+ }
}