diff options
author | Jason Mitchell <mitchej@gmail.com> | 2022-04-03 15:18:47 -0700 |
---|---|---|
committer | Jason Mitchell <mitchej+github@gmail.com> | 2022-07-22 12:57:20 -0700 |
commit | d1a386dcbd42c7746cf68b9356a23e874fdcde39 (patch) | |
tree | 04fb7036260267461221063f936ed430a8723017 /src/main/java/gregtech/api/multitileentity/interfaces | |
parent | 04bf6e3b1af510cf305fdf5a3f763ecdfe054c1a (diff) | |
download | GT5-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')
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); +} |