aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/multitileentity/interfaces
diff options
context:
space:
mode:
authorJason Mitchell <mitchej@gmail.com>2022-04-03 15:18:47 -0700
committerJason Mitchell <mitchej+github@gmail.com>2022-07-22 12:57:20 -0700
commitd1a386dcbd42c7746cf68b9356a23e874fdcde39 (patch)
tree04fb7036260267461221063f936ed430a8723017 /src/main/java/gregtech/api/multitileentity/interfaces
parent04bf6e3b1af510cf305fdf5a3f763ecdfe054c1a (diff)
downloadGT5-Unofficial-d1a386dcbd42c7746cf68b9356a23e874fdcde39.tar.gz
GT5-Unofficial-d1a386dcbd42c7746cf68b9356a23e874fdcde39.tar.bz2
GT5-Unofficial-d1a386dcbd42c7746cf68b9356a23e874fdcde39.zip
MultiTileEntity MultiBlocks
Diffstat (limited to 'src/main/java/gregtech/api/multitileentity/interfaces')
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java19
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java23
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockFluidHandler.java16
-rw-r--r--src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockInventory.java28
4 files changed, 86 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java
new file mode 100644
index 0000000000..95b369847f
--- /dev/null
+++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java
@@ -0,0 +1,19 @@
+package gregtech.api.multitileentity.interfaces;
+
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraftforge.fluids.FluidStack;
+
+public interface IMultiBlockController extends IMultiTileEntity, IMultiBlockFluidHandler, IMultiBlockInventory, IMultiBlockEnergy {
+ boolean checkStructure(boolean aForceReset);
+
+ /** Set the structure as having changed, and trigger an update */
+ void onStructureChange();
+
+ @Override ChunkCoordinates getCoords();
+
+ FluidStack getDrainableFluid(byte aSide);
+
+ boolean isLiquidInput(byte aSide);
+ boolean isLiquidOutput(byte aSide);
+
+}
diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java
new file mode 100644
index 0000000000..3e9892d3bd
--- /dev/null
+++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java
@@ -0,0 +1,23 @@
+package gregtech.api.multitileentity.interfaces;
+
+import gregtech.api.multitileentity.multiblock.base.MultiBlockPart;
+
+interface IMultiBlockEnergy {
+ boolean isUniversalEnergyStored (MultiBlockPart aPart, long aEnergyAmount);
+ long getUniversalEnergyStored (MultiBlockPart aPart);
+ long getUniversalEnergyCapacity (MultiBlockPart aPart);
+ long getOutputAmperage (MultiBlockPart aPart);
+ long getOutputVoltage (MultiBlockPart aPart);
+ long getInputAmperage (MultiBlockPart aPart);
+ long getInputVoltage (MultiBlockPart aPart);
+ boolean decreaseStoredEnergyUnits (MultiBlockPart aPart, long aEnergy, boolean aIgnoreTooLittleEnergy);
+ boolean increaseStoredEnergyUnits (MultiBlockPart aPart, long aEnergy, boolean aIgnoreTooMuchEnergy);
+ boolean drainEnergyUnits (MultiBlockPart aPart, byte aSide, long aVoltage, long aAmperage);
+ long injectEnergyUnits (MultiBlockPart aPart, byte aSide, long aVoltage, long aAmperage);
+ long getAverageElectricInput (MultiBlockPart aPart);
+ long getAverageElectricOutput (MultiBlockPart aPart);
+ long getStoredEU (MultiBlockPart aPart);
+ long getEUCapacity (MultiBlockPart aPart);
+ boolean inputEnergyFrom (MultiBlockPart aPart, byte aSide);
+ boolean outputsEnergyTo (MultiBlockPart aPart, byte aSide);
+}
diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockFluidHandler.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockFluidHandler.java
new file mode 100644
index 0000000000..4935ad49ab
--- /dev/null
+++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockFluidHandler.java
@@ -0,0 +1,16 @@
+package gregtech.api.multitileentity.interfaces;
+
+import gregtech.api.multitileentity.multiblock.base.MultiBlockPart;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.FluidTankInfo;
+
+public interface IMultiBlockFluidHandler {
+ int fill (MultiBlockPart aPart, ForgeDirection aDirection, FluidStack aFluid, boolean aDoFill);
+ FluidStack drain (MultiBlockPart aPart, ForgeDirection aDirection, FluidStack aFluid, boolean aDoDrain);
+ FluidStack drain (MultiBlockPart aPart, ForgeDirection aDirection, int aAmountToDrain, boolean aDoDrain);
+ boolean canFill (MultiBlockPart aPart, ForgeDirection aDirection, Fluid aFluid);
+ boolean canDrain (MultiBlockPart aPart, ForgeDirection aDirection, Fluid aFluid);
+ FluidTankInfo[] getTankInfo (MultiBlockPart aPart, ForgeDirection aDirection);
+}
diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockInventory.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockInventory.java
new file mode 100644
index 0000000000..4df5a11cc0
--- /dev/null
+++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockInventory.java
@@ -0,0 +1,28 @@
+package gregtech.api.multitileentity.interfaces;
+
+import gregtech.api.multitileentity.multiblock.base.MultiBlockPart;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+public interface IMultiBlockInventory {
+ boolean hasInventoryBeenModified (MultiBlockPart aPart);
+ boolean isValidSlot (MultiBlockPart aPart, int aIndex);
+ boolean addStackToSlot (MultiBlockPart aPart, int aIndex, ItemStack aStack);
+ boolean addStackToSlot (MultiBlockPart aPart, int aIndex, ItemStack aStack, int aAmount);
+ int[] getAccessibleSlotsFromSide (MultiBlockPart aPart, byte aSide);
+ boolean canInsertItem (MultiBlockPart aPart, int aSlot, ItemStack aStack, byte aSide);
+ boolean canExtractItem (MultiBlockPart aPart, int aSlot, ItemStack aStack, byte aSide);
+ int getSizeInventory (MultiBlockPart aPart);
+ ItemStack getStackInSlot (MultiBlockPart aPart, int aSlot);
+ ItemStack decrStackSize (MultiBlockPart aPart, int aSlot, int aDecrement);
+ ItemStack getStackInSlotOnClosing (MultiBlockPart aPart, int aSlot);
+ void setInventorySlotContents (MultiBlockPart aPart, int aSlot, ItemStack aStack);
+ String getInventoryName (MultiBlockPart aPart);
+ boolean hasCustomInventoryName (MultiBlockPart aPart);
+ int getInventoryStackLimit (MultiBlockPart aPart);
+ void markDirty (MultiBlockPart aPart);
+ boolean isUseableByPlayer (MultiBlockPart aPart, EntityPlayer aPlayer);
+ void openInventory (MultiBlockPart aPart);
+ void closeInventory (MultiBlockPart aPart);
+ boolean isItemValidForSlot (MultiBlockPart aPart, int aSlot, ItemStack aStack);
+}