diff options
author | Raven Szewczyk <git@eigenraven.me> | 2022-08-27 10:19:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-27 11:19:57 +0200 |
commit | 6f31720697bcc351421a4d86ba3bf749375dd12c (patch) | |
tree | 3adf8f318f22c892d74cd7c9d30b6dd3f11f11bd /src/main/java/gregtech/api/multitileentity | |
parent | c3eac50decd33ee2be8703dfb2ecf9cdc31c2b67 (diff) | |
download | GT5-Unofficial-6f31720697bcc351421a4d86ba3bf749375dd12c.tar.gz GT5-Unofficial-6f31720697bcc351421a4d86ba3bf749375dd12c.tar.bz2 GT5-Unofficial-6f31720697bcc351421a4d86ba3bf749375dd12c.zip |
Update buildscript & apply spotless (#1306)
* Update dependencies
* Update buildscript, apply spotless
Diffstat (limited to 'src/main/java/gregtech/api/multitileentity')
19 files changed, 1484 insertions, 817 deletions
diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java index 7129fd0aab..876fa50f0b 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java @@ -1,5 +1,12 @@ package gregtech.api.multitileentity; +import static gregtech.api.enums.GT_Values.OFFX; +import static gregtech.api.enums.GT_Values.OFFY; +import static gregtech.api.enums.GT_Values.OFFZ; +import static gregtech.api.util.GT_Util.LAST_BROKEN_TILEENTITY; +import static gregtech.api.util.GT_Util.getTileEntity; +import static gregtech.api.util.GT_Util.setTileEntity; + import com.cricketcraft.chisel.api.IFacade; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; @@ -30,6 +37,11 @@ import gregtech.api.util.GT_Util; import gregtech.api.util.GT_Utility; import gregtech.common.render.GT_Renderer_Block; import gregtech.common.render.IRenderedBlock; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; @@ -55,23 +67,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.ForgeEventFactory; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static gregtech.api.enums.GT_Values.OFFX; -import static gregtech.api.enums.GT_Values.OFFY; -import static gregtech.api.enums.GT_Values.OFFZ; -import static gregtech.api.util.GT_Util.LAST_BROKEN_TILEENTITY; -import static gregtech.api.util.GT_Util.getTileEntity; -import static gregtech.api.util.GT_Util.setTileEntity; - /* * MultiTileEntityBlock ported from GT6 */ -public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITileEntityProvider, IRenderedBlock, IFacade { +public class MultiTileEntityBlock extends Block + implements IDebugableBlock, ITileEntityProvider, IRenderedBlock, IFacade { protected static final Map<String, MultiTileEntityBlock> MULTI_BLOCK_MAP = new HashMap<>(); private static boolean LOCK = false; @@ -79,9 +79,18 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil protected final int mHarvestLevelOffset, mHarvestLevelMinimum, mHarvestLevelMaximum; protected final boolean mOpaque, mNormalCube; - public static String getName(String aMaterialName, SoundType aSoundType, String aTool, int aHarvestLevelOffset, int aHarvestLevelMinimum, int aHarvestLevelMaximum, boolean aOpaque, boolean aNormalCube) { - return "gt.block.multiblock." + aMaterialName + "." + aSoundType.soundName + "." + aTool + "." + aHarvestLevelOffset + "." + aHarvestLevelMinimum + "." + aHarvestLevelMaximum + "." + aOpaque + "." + aNormalCube; - + public static String getName( + String aMaterialName, + SoundType aSoundType, + String aTool, + int aHarvestLevelOffset, + int aHarvestLevelMinimum, + int aHarvestLevelMaximum, + boolean aOpaque, + boolean aNormalCube) { + return "gt.block.multiblock." + aMaterialName + "." + aSoundType.soundName + "." + aTool + "." + + aHarvestLevelOffset + "." + aHarvestLevelMinimum + "." + aHarvestLevelMaximum + "." + aOpaque + "." + + aNormalCube; } /** * @param aMaterialName the Name of the vanilla Material Field. In case this is not a vanilla Material, insert the Name you want to give your own Material instead. @@ -95,17 +104,65 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil * @param aNormalCube if this Block is a normal Cube (for Redstone Stuff). */ public static MultiTileEntityBlock getOrCreate( - String aModID, String aMaterialName, Material aMaterial, SoundType aSoundType, String aTool, int aHarvestLevelOffset, int aHarvestLevelMinimum, - int aHarvestLevelMaximum, boolean aOpaque, boolean aNormalCube - ) { - final MultiTileEntityBlock rBlock = MULTI_BLOCK_MAP.get(aModID + ":" + getName(aMaterialName, aSoundType, aTool = aTool.toLowerCase(), aHarvestLevelOffset, aHarvestLevelMinimum, aHarvestLevelMaximum, aOpaque, aNormalCube)); - return rBlock == null ? new MultiTileEntityBlock(aModID, aMaterialName, aMaterial, aSoundType, aTool, aHarvestLevelOffset, aHarvestLevelMinimum, aHarvestLevelMaximum, aOpaque, aNormalCube) : rBlock; - } - protected MultiTileEntityBlock(String aModID, String aMaterialName, Material aMaterial, SoundType aSoundType, String aTool, int aHarvestLevelOffset, int aHarvestLevelMinimum, int aHarvestLevelMaximum, boolean aOpaque, boolean aNormalCube) { + String aModID, + String aMaterialName, + Material aMaterial, + SoundType aSoundType, + String aTool, + int aHarvestLevelOffset, + int aHarvestLevelMinimum, + int aHarvestLevelMaximum, + boolean aOpaque, + boolean aNormalCube) { + final MultiTileEntityBlock rBlock = MULTI_BLOCK_MAP.get(aModID + ":" + + getName( + aMaterialName, + aSoundType, + aTool = aTool.toLowerCase(), + aHarvestLevelOffset, + aHarvestLevelMinimum, + aHarvestLevelMaximum, + aOpaque, + aNormalCube)); + return rBlock == null + ? new MultiTileEntityBlock( + aModID, + aMaterialName, + aMaterial, + aSoundType, + aTool, + aHarvestLevelOffset, + aHarvestLevelMinimum, + aHarvestLevelMaximum, + aOpaque, + aNormalCube) + : rBlock; + } + + protected MultiTileEntityBlock( + String aModID, + String aMaterialName, + Material aMaterial, + SoundType aSoundType, + String aTool, + int aHarvestLevelOffset, + int aHarvestLevelMinimum, + int aHarvestLevelMaximum, + boolean aOpaque, + boolean aNormalCube) { super(aMaterial); - if(GregTech_API.sPreloadFinished) throw new IllegalStateException("Blocks can only be initialized within preInit!"); - - mNameInternal = getName(aMaterialName, aSoundType, aTool, aHarvestLevelOffset, aHarvestLevelMinimum, aHarvestLevelMaximum, aOpaque, aNormalCube); + if (GregTech_API.sPreloadFinished) + throw new IllegalStateException("Blocks can only be initialized within preInit!"); + + mNameInternal = getName( + aMaterialName, + aSoundType, + aTool, + aHarvestLevelOffset, + aHarvestLevelMinimum, + aHarvestLevelMaximum, + aOpaque, + aNormalCube); GameRegistry.registerBlock(this, ItemBlock.class, mNameInternal); MULTI_BLOCK_MAP.put(aModID + ":" + mNameInternal, this); @@ -121,16 +178,17 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil opaque = isOpaqueCube(); lightOpacity = isOpaqueCube() ? 255 : 0; - } @Override public final void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMetaData) { final TileEntity aTileEntity = getTileEntity(aWorld, aX, aY, aZ, true); if (aTileEntity != null) LAST_BROKEN_TILEENTITY.set(aTileEntity); - if (aTileEntity == null || !aTileEntity.shouldRefresh(this, aBlock, aMetaData, aMetaData, aWorld, aX, aY, aZ)) return; - if (aTileEntity instanceof IMTE_BreakBlock && ((IMTE_BreakBlock)aTileEntity).breakBlock()) return; - if (aTileEntity instanceof IMTE_HasMultiBlockMachineRelevantData && ((IMTE_HasMultiBlockMachineRelevantData)aTileEntity).hasMultiBlockMachineRelevantData()) + if (aTileEntity == null || !aTileEntity.shouldRefresh(this, aBlock, aMetaData, aMetaData, aWorld, aX, aY, aZ)) + return; + if (aTileEntity instanceof IMTE_BreakBlock && ((IMTE_BreakBlock) aTileEntity).breakBlock()) return; + if (aTileEntity instanceof IMTE_HasMultiBlockMachineRelevantData + && ((IMTE_HasMultiBlockMachineRelevantData) aTileEntity).hasMultiBlockMachineRelevantData()) GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); aWorld.removeTileEntity(aX, aY, aZ); @@ -146,7 +204,7 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final boolean func_149730_j/*isFullBlock*/() { + public final boolean func_149730_j /*isFullBlock*/() { return mOpaque; } @@ -168,7 +226,9 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override public final float getBlockHardness(World aWorld, int aX, int aY, int aZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMTE_GetBlockHardness ? ((IMTE_GetBlockHardness) aTileEntity).getBlockHardness() : 1.0F; + return aTileEntity instanceof IMTE_GetBlockHardness + ? ((IMTE_GetBlockHardness) aTileEntity).getBlockHardness() + : 1.0F; } @SideOnly(Side.CLIENT) @@ -185,31 +245,35 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override @SuppressWarnings("unchecked") - public final void addCollisionBoxesToList(World aWorld, int aX, int aY, int aZ, AxisAlignedBB aAABB, List aList, Entity aEntity) { + public final void addCollisionBoxesToList( + World aWorld, int aX, int aY, int aZ, AxisAlignedBB aAABB, List aList, Entity aEntity) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - if (aTileEntity instanceof IMultiTileEntity) ((IMultiTileEntity) aTileEntity).addCollisionBoxesToList(aAABB, aList, aEntity); + if (aTileEntity instanceof IMultiTileEntity) + ((IMultiTileEntity) aTileEntity).addCollisionBoxesToList(aAABB, aList, aEntity); else super.addCollisionBoxesToList(aWorld, aX, aY, aZ, aAABB, aList, aEntity); } @Override public final AxisAlignedBB getCollisionBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMultiTileEntity ? ((IMultiTileEntity) aTileEntity).getCollisionBoundingBoxFromPool() - : aTileEntity == null ? null : super.getCollisionBoundingBoxFromPool(aWorld, aX, aY, aZ); + return aTileEntity instanceof IMultiTileEntity + ? ((IMultiTileEntity) aTileEntity).getCollisionBoundingBoxFromPool() + : aTileEntity == null ? null : super.getCollisionBoundingBoxFromPool(aWorld, aX, aY, aZ); } @Override public final AxisAlignedBB getSelectedBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMultiTileEntity ? ((IMultiTileEntity) aTileEntity).getSelectedBoundingBoxFromPool() - : super.getSelectedBoundingBoxFromPool(aWorld, aX, aY, aZ); + return aTileEntity instanceof IMultiTileEntity + ? ((IMultiTileEntity) aTileEntity).getSelectedBoundingBoxFromPool() + : super.getSelectedBoundingBoxFromPool(aWorld, aX, aY, aZ); } @Override public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int aX, int aY, int aZ) { final TileEntity aTileEntity = blockAccess.getTileEntity(aX, aY, aZ); if (aTileEntity instanceof IMultiTileEntity) { - ((IMultiTileEntity)aTileEntity).setBlockBoundsBasedOnState(this); + ((IMultiTileEntity) aTileEntity).setBlockBoundsBasedOnState(this); return; } super.setBlockBoundsBasedOnState(blockAccess, aX, aY, aZ); @@ -221,11 +285,13 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final void onNeighborChange(IBlockAccess aWorld, int aX, int aY, int aZ, int aTileX, int aTileY, int aTileZ) { + public final void onNeighborChange( + IBlockAccess aWorld, int aX, int aY, int aZ, int aTileX, int aTileY, int aTileZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (!LOCK) { LOCK = true; - if (aTileEntity instanceof BaseTileEntity) ((BaseTileEntity) aTileEntity).onAdjacentBlockChange(aTileX, aTileY, aTileZ); + if (aTileEntity instanceof BaseTileEntity) + ((BaseTileEntity) aTileEntity).onAdjacentBlockChange(aTileX, aTileY, aTileZ); LOCK = false; } } @@ -238,7 +304,8 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil if (aTileEntity instanceof BaseTileEntity) ((BaseTileEntity) aTileEntity).onAdjacentBlockChange(aX, aY, aZ); LOCK = false; } - if (aTileEntity instanceof IMTE_OnNeighborBlockChange) ((IMTE_OnNeighborBlockChange) aTileEntity).onNeighborBlockChange(aWorld, aBlock); + if (aTileEntity instanceof IMTE_OnNeighborBlockChange) + ((IMTE_OnNeighborBlockChange) aTileEntity).onNeighborBlockChange(aWorld, aBlock); if (aTileEntity == null) aWorld.setBlockToAir(aX, aY, aZ); } @@ -251,8 +318,11 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override public float getPlayerRelativeBlockHardness(EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMultiTileEntity && ((IMultiTileEntity) aTileEntity).privateAccess() && !((IMultiTileEntity) aTileEntity).playerOwnsThis(aPlayer, true) ? -1.0F - : super.getPlayerRelativeBlockHardness(aPlayer, aWorld, aX, aY, aZ); + return aTileEntity instanceof IMultiTileEntity + && ((IMultiTileEntity) aTileEntity).privateAccess() + && !((IMultiTileEntity) aTileEntity).playerOwnsThis(aPlayer, true) + ? -1.0F + : super.getPlayerRelativeBlockHardness(aPlayer, aWorld, aX, aY, aZ); } @Override @@ -263,42 +333,54 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public boolean onBlockActivated(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer, int aSide, float aHitX, float aHitY, float aHitZ) { + public boolean onBlockActivated( + World aWorld, + int aX, + int aY, + int aZ, + EntityPlayer aPlayer, + int aSide, + float aHitX, + float aHitY, + float aHitZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (aPlayer != null && ItemList.TC_Thaumometer.isStackEqual(aPlayer.getHeldItem(), true, true)) return false; - return aTileEntity instanceof IMultiTileEntity && ((IMultiTileEntity) aTileEntity).onBlockActivated(aPlayer, (byte)aSide, aHitX, aHitY, aHitZ); + return aTileEntity instanceof IMultiTileEntity + && ((IMultiTileEntity) aTileEntity).onBlockActivated(aPlayer, (byte) aSide, aHitX, aHitY, aHitZ); } @Override public final int isProvidingWeakPower(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMTE_IsProvidingWeakPower ? ((IMTE_IsProvidingWeakPower) aTileEntity).isProvidingWeakPower((byte)aSide) : - super.isProvidingWeakPower(aWorld, aX, aY, aZ, aSide); + return aTileEntity instanceof IMTE_IsProvidingWeakPower + ? ((IMTE_IsProvidingWeakPower) aTileEntity).isProvidingWeakPower((byte) aSide) + : super.isProvidingWeakPower(aWorld, aX, aY, aZ, aSide); } @Override public final int isProvidingStrongPower(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMTE_IsProvidingStrongPower ? ((IMTE_IsProvidingStrongPower) aTileEntity).isProvidingStrongPower((byte)aSide) - : super.isProvidingStrongPower(aWorld, aX, aY, aZ, aSide); + return aTileEntity instanceof IMTE_IsProvidingStrongPower + ? ((IMTE_IsProvidingStrongPower) aTileEntity).isProvidingStrongPower((byte) aSide) + : super.isProvidingStrongPower(aWorld, aX, aY, aZ, aSide); } - @Override public final boolean shouldCheckWeakPower(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMTE_ShouldCheckWeakPower ? ((IMTE_ShouldCheckWeakPower) aTileEntity).shouldCheckWeakPower((byte)aSide) - : isNormalCube(aWorld, aX, aY, aZ); + return aTileEntity instanceof IMTE_ShouldCheckWeakPower + ? ((IMTE_ShouldCheckWeakPower) aTileEntity).shouldCheckWeakPower((byte) aSide) + : isNormalCube(aWorld, aX, aY, aZ); } @Override public final boolean getWeakChanges(IBlockAccess aWorld, int aX, int aY, int aZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMTE_GetWeakChanges ? ((IMTE_GetWeakChanges) aTileEntity).getWeakChanges() - : super.getWeakChanges(aWorld, aX, aY, aZ); + return aTileEntity instanceof IMTE_GetWeakChanges + ? ((IMTE_GetWeakChanges) aTileEntity).getWeakChanges() + : super.getWeakChanges(aWorld, aX, aY, aZ); } - @Override public final void harvestBlock(World aWorld, EntityPlayer aPlayer, int aX, int aY, int aZ, int aMeta) { if (aPlayer == null) aPlayer = harvesters.get(); @@ -310,8 +392,10 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil final TileEntity aTileEntity = getTileEntity(aWorld, aX, aY, aZ, true); if (aTileEntity instanceof IMultiTileEntity) { final ArrayList<ItemStack> tList = ((IMultiTileEntity) aTileEntity).getDrops(aFortune, aSilkTouch); - aChance = ForgeEventFactory.fireBlockHarvesting(tList, aWorld, this, aX, aY, aZ, aMeta, aFortune, aChance, aSilkTouch, aPlayer); - for (ItemStack tStack : tList) if (XSTR.XSTR_INSTANCE.nextFloat() <= aChance) dropBlockAsItem(aWorld, aX, aY, aZ, tStack); + aChance = ForgeEventFactory.fireBlockHarvesting( + tList, aWorld, this, aX, aY, aZ, aMeta, aFortune, aChance, aSilkTouch, aPlayer); + for (ItemStack tStack : tList) + if (XSTR.XSTR_INSTANCE.nextFloat() <= aChance) dropBlockAsItem(aWorld, aX, aY, aZ, tStack); } } @@ -355,7 +439,9 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override public final boolean shouldSideBeRendered(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { final TileEntity aTileEntity = aWorld.getTileEntity(aX - OFFX[aSide], aY - OFFY[aSide], aZ - OFFZ[aSide]); - return aTileEntity instanceof IMultiTileEntity ? ((IMultiTileEntity) aTileEntity).shouldSideBeRendered((byte)aSide) : super.shouldSideBeRendered(aWorld, aX, aY, aZ, aSide); + return aTileEntity instanceof IMultiTileEntity + ? ((IMultiTileEntity) aTileEntity).shouldSideBeRendered((byte) aSide) + : super.shouldSideBeRendered(aWorld, aX, aY, aZ, aSide); } @Override @@ -365,13 +451,16 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil final byte aSide = (byte) side; final CoverableTileEntity tile = (CoverableTileEntity) tTileEntity; if (side != -1) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide).getFacadeBlock(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide) + .getFacadeBlock( + aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); if (facadeBlock != null) return facadeBlock; } else { // we do not allow more than one type of facade per block, so no need to check every side // see comment in gregtech.common.covers.GT_Cover_FacadeBase.isCoverPlaceable for (byte i = 0; i < 6; i++) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i).getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i) + .getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); if (facadeBlock != null) { return facadeBlock; } @@ -388,16 +477,22 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil final byte aSide = (byte) side; final CoverableTileEntity tile = (CoverableTileEntity) tTileEntity; if (side != -1) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide).getFacadeBlock(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(aSide) + .getFacadeBlock( + aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); if (facadeBlock != null) - return tile.getCoverBehaviorAtSideNew(aSide).getFacadeMeta(aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); + return tile.getCoverBehaviorAtSideNew(aSide) + .getFacadeMeta( + aSide, tile.getCoverIDAtSide(aSide), tile.getComplexCoverDataAtSide(aSide), tile); } else { // we do not allow more than one type of facade per block, so no need to check every side // see comment in gregtech.common.covers.GT_Cover_FacadeBase.isCoverPlaceable for (byte i = 0; i < 6; i++) { - final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i).getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + final Block facadeBlock = tile.getCoverBehaviorAtSideNew(i) + .getFacadeBlock(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); if (facadeBlock != null) { - return tile.getCoverBehaviorAtSideNew(i).getFacadeMeta(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); + return tile.getCoverBehaviorAtSideNew(i) + .getFacadeMeta(i, tile.getCoverIDAtSide(i), tile.getComplexCoverDataAtSide(i), tile); } } } @@ -432,7 +527,9 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final void getSubBlocks(Item aItem, CreativeTabs aCreativeTab, List aList) {/**/} + public final void getSubBlocks(Item aItem, CreativeTabs aCreativeTab, List aList) { + /**/ + } @Override public boolean hasComparatorInputOverride() { @@ -442,13 +539,18 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override public final int getComparatorInputOverride(World aWorld, int aX, int aY, int aZ, int aSide) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMTE_GetComparatorInputOverride ? ((IMTE_GetComparatorInputOverride) aTileEntity).getComparatorInputOverride((byte)aSide) - : aTileEntity instanceof IMTE_IsProvidingWeakPower ? ((IMTE_IsProvidingWeakPower) aTileEntity).isProvidingWeakPower(GT_Utility.getOppositeSide(aSide)) - : super.getComparatorInputOverride(aWorld, aX, aY, aZ, aSide); + return aTileEntity instanceof IMTE_GetComparatorInputOverride + ? ((IMTE_GetComparatorInputOverride) aTileEntity).getComparatorInputOverride((byte) aSide) + : aTileEntity instanceof IMTE_IsProvidingWeakPower + ? ((IMTE_IsProvidingWeakPower) aTileEntity) + .isProvidingWeakPower(GT_Utility.getOppositeSide(aSide)) + : super.getComparatorInputOverride(aWorld, aX, aY, aZ, aSide); } @Override - public final void registerBlockIcons(IIconRegister aIconRegister) {/**/} + public final void registerBlockIcons(IIconRegister aIconRegister) { + /**/ + } @Override public final boolean isNormalCube(IBlockAccess aWorld, int aX, int aY, int aZ) { @@ -458,7 +560,10 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override public final boolean isSideSolid(IBlockAccess aWorld, int aX, int aY, int aZ, ForgeDirection aSide) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMultiTileEntity ? ((IMultiTileEntity) aTileEntity).isSideSolid((byte)(aSide != null ? aSide.ordinal() : GT_Values.SIDE_UNKNOWN)) : mOpaque; + return aTileEntity instanceof IMultiTileEntity + ? ((IMultiTileEntity) aTileEntity) + .isSideSolid((byte) (aSide != null ? aSide.ordinal() : GT_Values.SIDE_UNKNOWN)) + : mOpaque; } @Override @@ -484,7 +589,8 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final ArrayList<ItemStack> getDrops(World aWorld, int aX, int aY, int aZ, int aUnusableMetaData, int aFortune) { + public final ArrayList<ItemStack> getDrops( + World aWorld, int aX, int aY, int aZ, int aUnusableMetaData, int aFortune) { final TileEntity aTileEntity = getTileEntity(aWorld, aX, aY, aZ, true); if (aTileEntity instanceof IMultiTileEntity) return ((IMultiTileEntity) aTileEntity).getDrops(aFortune, false); return new ArrayList<>(); @@ -496,10 +602,20 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final float getExplosionResistance(Entity aExploder, World aWorld, int aX, int aY, int aZ, double aExplosionX, double aExplosionY, double aExplosionZ) { + public final float getExplosionResistance( + Entity aExploder, + World aWorld, + int aX, + int aY, + int aZ, + double aExplosionX, + double aExplosionY, + double aExplosionZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMultiTileEntity ? ((IMultiTileEntity) aTileEntity).getExplosionResistance(aExploder, aExplosionX, aExplosionY, aExplosionZ) - : 1.0F; + return aTileEntity instanceof IMultiTileEntity + ? ((IMultiTileEntity) aTileEntity) + .getExplosionResistance(aExploder, aExplosionX, aExplosionY, aExplosionZ) + : 1.0F; } @Override @@ -508,10 +624,11 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil final TileEntity aTileEntity = getTileEntity(aWorld, aX, aY, aZ, true); if (aTileEntity != null) LAST_BROKEN_TILEENTITY.set(aTileEntity); if (aTileEntity instanceof IMultiTileEntity) { - GT_Log.exp.printf("Explosion at : %d | %d | %d DIMID: %s due to near explosion!%n", aX, aY, aZ, aWorld.provider.dimensionId); + GT_Log.exp.printf( + "Explosion at : %d | %d | %d DIMID: %s due to near explosion!%n", + aX, aY, aZ, aWorld.provider.dimensionId); ((IMultiTileEntity) aTileEntity).onExploded(aExplosion); - } - else aWorld.setBlockToAir(aX, aY, aZ); + } else aWorld.setBlockToAir(aX, aY, aZ); } @Override @@ -522,7 +639,8 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override public final boolean recolourBlock(World aWorld, int aX, int aY, int aZ, ForgeDirection aSide, int aColor) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMultiTileEntity && ((IMultiTileEntity) aTileEntity).recolourBlock((byte)aSide.ordinal(), (byte) aColor); + return aTileEntity instanceof IMultiTileEntity + && ((IMultiTileEntity) aTileEntity).recolourBlock((byte) aSide.ordinal(), (byte) aColor); } @Override @@ -540,9 +658,9 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil return getHarvestTool(aMeta).equals(aType); } - @Override - public final ItemStack getPickBlock(MovingObjectPosition aTarget, World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) { + public final ItemStack getPickBlock( + MovingObjectPosition aTarget, World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); return aTileEntity instanceof IMultiTileEntity ? ((IMultiTileEntity) aTileEntity).getPickBlock(aTarget) : null; } @@ -553,17 +671,32 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil return aTileEntity instanceof IMultiTileEntity ? ((IMultiTileEntity) aTileEntity).getPickBlock(aTarget) : null; } - public final void receiveMultiTileEntityData( - IBlockAccess aWorld, int aX, short aY, int aZ, short aRID, short aID, int aCover0, int aCover1, int aCover2, int aCover3, int aCover4, int aCover5, - byte aTextureData, byte aTexturePage, byte aUpdateData, byte aRedstoneData, byte aColorData - ) { + IBlockAccess aWorld, + int aX, + short aY, + int aZ, + short aRID, + short aID, + int aCover0, + int aCover1, + int aCover2, + int aCover3, + int aCover4, + int aCover5, + byte aTextureData, + byte aTexturePage, + byte aUpdateData, + byte aRedstoneData, + byte aColorData) { if (!(aWorld instanceof World)) return; final IMultiTileEntity te; TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - if (!(aTileEntity instanceof IMultiTileEntity) || ((IMultiTileEntity) aTileEntity).getMultiTileEntityRegistryID() != aRID || ((IMultiTileEntity) aTileEntity).getMultiTileEntityID() != aID) { + if (!(aTileEntity instanceof IMultiTileEntity) + || ((IMultiTileEntity) aTileEntity).getMultiTileEntityRegistryID() != aRID + || ((IMultiTileEntity) aTileEntity).getMultiTileEntityID() != aID) { final MultiTileEntityRegistry tRegistry = MultiTileEntityRegistry.getRegistry(aRID); if (tRegistry == null) return; @@ -574,18 +707,17 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil te = (IMultiTileEntity) aTileEntity; boolean updated; - updated = te.setCoverIDAtSideNoUpdate((byte) 0, aCover0); + updated = te.setCoverIDAtSideNoUpdate((byte) 0, aCover0); updated |= te.setCoverIDAtSideNoUpdate((byte) 1, aCover1); updated |= te.setCoverIDAtSideNoUpdate((byte) 2, aCover2); updated |= te.setCoverIDAtSideNoUpdate((byte) 3, aCover3); updated |= te.setCoverIDAtSideNoUpdate((byte) 4, aCover4); updated |= te.setCoverIDAtSideNoUpdate((byte) 5, aCover5); - if(updated) { + if (updated) { te.issueBlockUpdate(); } - te.receiveClientEvent(GregTechTileClientEvents.CHANGE_COMMON_DATA, aTextureData); te.receiveClientEvent(GregTechTileClientEvents.CHANGE_CUSTOM_DATA, aUpdateData & 0x7F); te.receiveClientEvent(GregTechTileClientEvents.CHANGE_CUSTOM_DATA, aTexturePage | 0x80); @@ -593,12 +725,13 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil te.receiveClientEvent(GregTechTileClientEvents.CHANGE_REDSTONE_OUTPUT, aRedstoneData); } - @Override public final TileEntity createTileEntity(World aWorld, int aMeta) { return null; } @Override - public TileEntity createNewTileEntity(World world, int i) { return null; } + public TileEntity createNewTileEntity(World world, int i) { + return null; + } } diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java index 852ffa3c8e..f388944bb4 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java @@ -1,5 +1,8 @@ package gregtech.api.multitileentity; +import static gregtech.GT_Mod.GT_FML_LOGGER; +import static gregtech.api.util.GT_Util.setTileEntity; + import gregtech.api.GregTech_API; import gregtech.api.interfaces.ITexture; import gregtech.api.multitileentity.interfaces.IMultiTileEntity; @@ -17,9 +20,6 @@ import net.minecraft.util.StatCollector; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import static gregtech.GT_Mod.GT_FML_LOGGER; -import static gregtech.api.util.GT_Util.setTileEntity; - public class MultiTileEntityBlockInternal extends Block implements IRenderedBlock { public MultiTileEntityRegistry mMultiTileEntityRegistry; @@ -28,47 +28,73 @@ public class MultiTileEntityBlockInternal extends Block implements IRenderedBloc } @Override - public void registerBlockIcons(IIconRegister aIconRegister) { /* Do Nothing */ } + public void registerBlockIcons(IIconRegister aIconRegister) { + /* Do Nothing */ + } @Override public int getRenderType() { return GT_Renderer_Block.INSTANCE == null ? super.getRenderType() : GT_Renderer_Block.INSTANCE.mRenderID; } - @Override public final String getUnlocalizedName() {return mMultiTileEntityRegistry.mNameInternal;} - @Override public final String getLocalizedName() {return StatCollector.translateToLocal(mMultiTileEntityRegistry.mNameInternal + ".name");} - public boolean placeBlock(World aWorld, int aX, int aY, int aZ, byte aSide, short aMetaData, NBTTagCompound aNBT, boolean aCauseBlockUpdates, boolean aForcePlacement) { - final MultiTileEntityContainer aMTEContainer = mMultiTileEntityRegistry.getNewTileEntityContainer(aWorld, aX, aY, aZ, aMetaData, aNBT); + @Override + public final String getUnlocalizedName() { + return mMultiTileEntityRegistry.mNameInternal; + } + + @Override + public final String getLocalizedName() { + return StatCollector.translateToLocal(mMultiTileEntityRegistry.mNameInternal + ".name"); + } + + public boolean placeBlock( + World aWorld, + int aX, + int aY, + int aZ, + byte aSide, + short aMetaData, + NBTTagCompound aNBT, + boolean aCauseBlockUpdates, + boolean aForcePlacement) { + final MultiTileEntityContainer aMTEContainer = + mMultiTileEntityRegistry.getNewTileEntityContainer(aWorld, aX, aY, aZ, aMetaData, aNBT); if (aMTEContainer == null) return false; final Block tReplacedBlock = aWorld.getBlock(aX, aY, aZ); - // This is some complicated bullshit Greg had to do to make his MTEs work right. // Set Block with reverse MetaData first. - aWorld.setBlock(aX, aY, aZ, aMTEContainer.mBlock, 15-aMTEContainer.mBlockMetaData, 2); - // Make sure the Block has been set, yes I know setBlock has a true/false return value, but guess what, it is not reliable in 0.0001% of cases! -Greg - if (aWorld.getBlock(aX, aY, aZ) != aMTEContainer.mBlock) {aWorld.setBlock(aX, aY, aZ, Blocks.air, 0, 0); return false;} + aWorld.setBlock(aX, aY, aZ, aMTEContainer.mBlock, 15 - aMTEContainer.mBlockMetaData, 2); + // Make sure the Block has been set, yes I know setBlock has a true/false return value, but guess what, it is + // not reliable in 0.0001% of cases! -Greg + if (aWorld.getBlock(aX, aY, aZ) != aMTEContainer.mBlock) { + aWorld.setBlock(aX, aY, aZ, Blocks.air, 0, 0); + return false; + } // TileEntity should not refresh yet! -Greg - ((IMultiTileEntity)aMTEContainer.mTileEntity).setShouldRefresh(false); + ((IMultiTileEntity) aMTEContainer.mTileEntity).setShouldRefresh(false); // Fake-Set the TileEntity first, bypassing a lot of checks. -Greg setTileEntity(aWorld, aX, aY, aZ, (TileEntity) aMTEContainer.mTileEntity, false); // Now set the Block with the REAL MetaData. -Greg setTileEntity(aWorld, aX, aY, aZ, aMTEContainer.mBlock, aMTEContainer.mBlockMetaData, 0, false); // When the TileEntity is set now it SHOULD refresh! -Greg - ((IMultiTileEntity)aMTEContainer.mTileEntity).setShouldRefresh(true); + ((IMultiTileEntity) aMTEContainer.mTileEntity).setShouldRefresh(true); // But make sure again that the Block we have set was actually set properly, because 0.0001%! -Greg - if (aWorld.getBlock(aX, aY, aZ) != aMTEContainer.mBlock) {aWorld.setBlock(aX, aY, aZ, Blocks.air, 0, 0); return false;} + if (aWorld.getBlock(aX, aY, aZ) != aMTEContainer.mBlock) { + aWorld.setBlock(aX, aY, aZ, Blocks.air, 0, 0); + return false; + } // And finally properly set the TileEntity for real! -Greg setTileEntity(aWorld, aX, aY, aZ, (TileEntity) aMTEContainer.mTileEntity, aCauseBlockUpdates); // Yep, all this just to set one Block and its TileEntity properly... -Greg - try { if (aMTEContainer.mTileEntity instanceof IMTE_HasMultiBlockMachineRelevantData) { - if (((IMTE_HasMultiBlockMachineRelevantData)aMTEContainer.mTileEntity).hasMultiBlockMachineRelevantData()) GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); + if (((IMTE_HasMultiBlockMachineRelevantData) aMTEContainer.mTileEntity) + .hasMultiBlockMachineRelevantData()) GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); } - } catch(Throwable e) { + } catch (Throwable e) { GT_FML_LOGGER.error("causeMachineUpdate", e); } @@ -77,20 +103,19 @@ public class MultiTileEntityBlockInternal extends Block implements IRenderedBloc aWorld.notifyBlockChange(aX, aY, aZ, tReplacedBlock); aWorld.func_147453_f(aX, aY, aZ, aMTEContainer.mBlock); } - } catch(Throwable e) { + } catch (Throwable e) { GT_FML_LOGGER.error("aCauseBlockUpdates", e); } try { - ((IMultiTileEntity)aMTEContainer.mTileEntity).onTileEntityPlaced(); - } catch(Throwable e) { + ((IMultiTileEntity) aMTEContainer.mTileEntity).onTileEntityPlaced(); + } catch (Throwable e) { GT_FML_LOGGER.error("onTileEntityPlaced", e); } - try { - aWorld.func_147451_t/*updateAllLightTypes*/(aX, aY, aZ); - } catch(Throwable e) { + aWorld.func_147451_t /*updateAllLightTypes*/(aX, aY, aZ); + } catch (Throwable e) { GT_FML_LOGGER.error("updateAllLightTypes", e); } return true; @@ -125,7 +150,7 @@ public class MultiTileEntityBlockInternal extends Block implements IRenderedBloc @Override public IRenderedBlock passRenderingToObject(ItemStack aStack) { final TileEntity tTileEntity = mMultiTileEntityRegistry.getNewTileEntity(aStack); - return tTileEntity instanceof IRenderedBlock ? (IRenderedBlock)tTileEntity : null; + return tTileEntity instanceof IRenderedBlock ? (IRenderedBlock) tTileEntity : null; } @Override diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java index 563d2fc462..c66ec30481 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityClassContainer.java @@ -1,16 +1,14 @@ package gregtech.api.multitileentity; +import static gregtech.api.enums.GT_Values.NBT; + import gregtech.api.enums.Materials; import gregtech.api.multitileentity.base.BaseMultiTileEntity; import gregtech.api.util.GT_Util; -import net.minecraft.block.material.Material; +import java.lang.ref.WeakReference; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Tuple; -import java.lang.ref.WeakReference; - -import static gregtech.api.enums.GT_Values.NBT; - public class MultiTileEntityClassContainer { private final WeakReference<MultiTileEntityRegistry> mRegistry; private String mLocalized; @@ -27,8 +25,8 @@ public class MultiTileEntityClassContainer { public byte mStackSize = 64; public boolean mHidden = false; - - public MultiTileEntityClassContainer(MultiTileEntityRegistry aRegistry, int aID, Class<? extends BaseMultiTileEntity> aClass) { + public MultiTileEntityClassContainer( + MultiTileEntityRegistry aRegistry, int aID, Class<? extends BaseMultiTileEntity> aClass) { /* Start the Builder */ mRegistry = new WeakReference<>(aRegistry); mID = (short) aID; @@ -41,9 +39,16 @@ public class MultiTileEntityClassContainer { final MultiTileEntityRegistry registry = mRegistry.get(); if (mParameters.hasKey(NBT.MATERIAL) && !mParameters.hasKey(NBT.COLOR)) - mParameters.setInteger(NBT.COLOR, GT_Util.getRGBInt(Materials.get(mParameters.getString(NBT.MATERIAL)).getRGBA())); - - try {mCanonicalTileEntity = mClass.newInstance();} catch (Throwable e) {throw new IllegalArgumentException(e);} + mParameters.setInteger( + NBT.COLOR, + GT_Util.getRGBInt( + Materials.get(mParameters.getString(NBT.MATERIAL)).getRGBA())); + + try { + mCanonicalTileEntity = mClass.newInstance(); + } catch (Throwable e) { + throw new IllegalArgumentException(e); + } mCanonicalTileEntity.initFromNBT(mParameters, mID, (short) -1); return registry != null && registry.add(this.mLocalized, this.mCategoryName, this) != null; @@ -86,8 +91,7 @@ public class MultiTileEntityClassContainer { public MultiTileEntityClassContainer material(Materials aMaterial) { // Sets the material, and the color from the material, if not already set mParameters.setString(NBT.MATERIAL, aMaterial.toString()); - if (!mParameters.hasKey(NBT.COLOR)) - mParameters.setInteger(NBT.COLOR, GT_Util.getRGBInt(aMaterial.getRGBA())); + if (!mParameters.hasKey(NBT.COLOR)) mParameters.setInteger(NBT.COLOR, GT_Util.getRGBInt(aMaterial.getRGBA())); return this; } @@ -116,5 +120,4 @@ public class MultiTileEntityClassContainer { mParameters = GT_Util.fuseNBT(mParameters, GT_Util.makeNBT(aTags)); return this; } - } diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java index 1c037a45e1..b209c95990 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityContainer.java @@ -1,11 +1,11 @@ package gregtech.api.multitileentity; +import static gregtech.api.util.GT_Util.setTileEntity; + import gregtech.api.multitileentity.interfaces.IMultiTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import static gregtech.api.util.GT_Util.setTileEntity; - public class MultiTileEntityContainer { public final TileEntity mTileEntity; public final MultiTileEntityBlock mBlock; @@ -16,12 +16,13 @@ public class MultiTileEntityContainer { mTileEntity = aTileEntity; mBlock = aBlock; } + public void setMultiTile(World aWorld, int aX, int aY, int aZ) { // This is some complicated Bullshit Greg had to do to make his MTEs work right. - ((IMultiTileEntity)mTileEntity).setShouldRefresh(false); + ((IMultiTileEntity) mTileEntity).setShouldRefresh(false); setTileEntity(aWorld, aX, aY, aZ, mTileEntity, false); setTileEntity(aWorld, aX, aY, aZ, mBlock, mBlockMetaData, 0, false); - ((IMultiTileEntity)mTileEntity).setShouldRefresh(true); + ((IMultiTileEntity) mTileEntity).setShouldRefresh(true); setTileEntity(aWorld, aX, aY, aZ, mTileEntity, true); } } diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java index 897dbf7991..4d7c6be262 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java @@ -1,5 +1,8 @@ package gregtech.api.multitileentity; +import static gregtech.GT_Mod.GT_FML_LOGGER; +import static gregtech.api.enums.GT_Values.SIDE_TOP; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTech_API; @@ -8,11 +11,12 @@ import gregtech.api.metatileentity.CoverableTileEntity; import gregtech.api.multitileentity.interfaces.IItemUpdatable; import gregtech.api.multitileentity.interfaces.IMultiTileEntity; import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_AddToolTips; +import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_CanPlace; import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_GetMaxStackSize; import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_HasMultiBlockMachineRelevantData; -import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_OnlyPlaceableWhenSneaking; import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_IgnoreEntityCollisionWhenPlacing; -import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_CanPlace; +import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_OnlyPlaceableWhenSneaking; +import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.BlockSnow; import net.minecraft.client.renderer.texture.IIconRegister; @@ -30,12 +34,6 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; -import java.util.List; - -import static gregtech.GT_Mod.GT_FML_LOGGER; -import static gregtech.api.enums.GT_Values.SIDE_TOP; -import static gregtech.api.util.GT_Util.setTileEntity; - public class MultiTileEntityItemInternal extends ItemBlock implements IFluidContainerItem, IItemUpdatable { public final MultiTileEntityBlockInternal mBlock; @@ -43,12 +41,14 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont super(aBlock); setMaxDamage(0); setHasSubtypes(true); - mBlock = (MultiTileEntityBlockInternal)aBlock; + mBlock = (MultiTileEntityBlockInternal) aBlock; } + @Override @SuppressWarnings("unchecked") public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer == null) { aList.add("INVALID ITEM!"); return; @@ -65,14 +65,14 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont // TODO: Add anything else relevant } - @Override @SideOnly(Side.CLIENT) @SuppressWarnings("unchecked") public void getSubItems(Item aItem, CreativeTabs aTab, List aList) { for (MultiTileEntityClassContainer tClass : mBlock.mMultiTileEntityRegistry.mRegistrations) { if (!tClass.mHidden) { - if (((IMultiTileEntity) tClass.mCanonicalTileEntity).getSubItems(mBlock, aItem, aTab, aList, tClass.mID)) { + if (((IMultiTileEntity) tClass.mCanonicalTileEntity) + .getSubItems(mBlock, aItem, aTab, aList, tClass.mID)) { aList.add(mBlock.mMultiTileEntityRegistry.getItem(tClass.mID)); } } @@ -80,48 +80,85 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont } @Override - public boolean onItemUse(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float aHitX, float aHitY, float aHitZ) { + public boolean onItemUse( + ItemStack aStack, + EntityPlayer aPlayer, + World aWorld, + int aX, + int aY, + int aZ, + int aSide, + float aHitX, + float aHitY, + float aHitZ) { if (aY < 0 || aY > aWorld.getHeight()) return false; try { final Block tClickedBlock = aWorld.getBlock(aX, aY, aZ); if (tClickedBlock instanceof BlockSnow && (aWorld.getBlockMetadata(aX, aY, aZ) & 7) < 1) { aSide = SIDE_TOP; - } else if (tClickedBlock != Blocks.vine && tClickedBlock != Blocks.tallgrass && tClickedBlock != Blocks.deadbush && !tClickedBlock.isReplaceable(aWorld, aX, aY, aZ)) { + } else if (tClickedBlock != Blocks.vine + && tClickedBlock != Blocks.tallgrass + && tClickedBlock != Blocks.deadbush + && !tClickedBlock.isReplaceable(aWorld, aX, aY, aZ)) { aX += GT_Values.OFFX[aSide]; aY += GT_Values.OFFY[aSide]; aZ += GT_Values.OFFZ[aSide]; } final Block tReplacedBlock = aWorld.getBlock(aX, aY, aZ); - if (!tReplacedBlock.isReplaceable(aWorld, aX, aY, aZ) || !mBlock.canReplace(aWorld, aX, aY, aZ, aSide, aStack)) return false; - if (aStack.stackSize == 0 || (aPlayer != null && !aPlayer.canPlayerEdit(aX, aY, aZ, aSide, aStack))) return false; + if (!tReplacedBlock.isReplaceable(aWorld, aX, aY, aZ) + || !mBlock.canReplace(aWorld, aX, aY, aZ, aSide, aStack)) return false; + if (aStack.stackSize == 0 || (aPlayer != null && !aPlayer.canPlayerEdit(aX, aY, aZ, aSide, aStack))) + return false; - final MultiTileEntityContainer aMTEContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aWorld, aX, aY, aZ, aStack); + final MultiTileEntityContainer aMTEContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aWorld, aX, aY, aZ, aStack); if (aMTEContainer != null - && (aPlayer == null || aPlayer.isSneaking() || !(aMTEContainer.mTileEntity instanceof IMTE_OnlyPlaceableWhenSneaking) || !((IMTE_OnlyPlaceableWhenSneaking) aMTEContainer.mTileEntity).onlyPlaceableWhenSneaking()) - && ( - aWorld.checkNoEntityCollision(AxisAlignedBB.getBoundingBox(aX, aY, aZ, aX+1, aY+1, aZ+1)) - || (aMTEContainer.mTileEntity instanceof IMTE_IgnoreEntityCollisionWhenPlacing && ((IMTE_IgnoreEntityCollisionWhenPlacing)aMTEContainer.mTileEntity).ignoreEntityCollisionWhenPlacing(aStack, aPlayer, aWorld, aX, aY, aZ, (byte)aSide, aHitX, aHitY, aHitZ)) - ) - && (!(aMTEContainer.mTileEntity instanceof IMTE_CanPlace) || ((IMTE_CanPlace)aMTEContainer.mTileEntity).canPlace(aStack, aPlayer, aWorld, aX, aY, aZ, (byte)aSide, aHitX, aHitY, aHitZ)) - && aWorld.setBlock(aX, aY, aZ, aMTEContainer.mBlock, 15 - aMTEContainer.mBlockMetaData, 2)) - { + && (aPlayer == null + || aPlayer.isSneaking() + || !(aMTEContainer.mTileEntity instanceof IMTE_OnlyPlaceableWhenSneaking) + || !((IMTE_OnlyPlaceableWhenSneaking) aMTEContainer.mTileEntity) + .onlyPlaceableWhenSneaking()) + && (aWorld.checkNoEntityCollision(AxisAlignedBB.getBoundingBox(aX, aY, aZ, aX + 1, aY + 1, aZ + 1)) + || (aMTEContainer.mTileEntity instanceof IMTE_IgnoreEntityCollisionWhenPlacing + && ((IMTE_IgnoreEntityCollisionWhenPlacing) aMTEContainer.mTileEntity) + .ignoreEntityCollisionWhenPlacing( + aStack, + aPlayer, + aWorld, + aX, + aY, + aZ, + (byte) aSide, + aHitX, + aHitY, + aHitZ))) + && (!(aMTEContainer.mTileEntity instanceof IMTE_CanPlace) + || ((IMTE_CanPlace) aMTEContainer.mTileEntity) + .canPlace(aStack, aPlayer, aWorld, aX, aY, aZ, (byte) aSide, aHitX, aHitY, aHitZ)) + && aWorld.setBlock(aX, aY, aZ, aMTEContainer.mBlock, 15 - aMTEContainer.mBlockMetaData, 2)) { aMTEContainer.setMultiTile(aWorld, aX, aY, aZ); try { - if (((IMultiTileEntity) aMTEContainer.mTileEntity).onPlaced(aStack, aPlayer, aWorld, aX, aY, aZ, (byte) aSide, aHitX, aHitY, aHitZ)) { + if (((IMultiTileEntity) aMTEContainer.mTileEntity) + .onPlaced(aStack, aPlayer, aWorld, aX, aY, aZ, (byte) aSide, aHitX, aHitY, aHitZ)) { aWorld.playSoundEffect( - aX + 0.5, aY + 0.5, aZ + 0.5, aMTEContainer.mBlock.stepSound.func_150496_b(), (aMTEContainer.mBlock.stepSound.getVolume() + 1) / 2, - aMTEContainer.mBlock.stepSound.getPitch() * 0.8F - ); + aX + 0.5, + aY + 0.5, + aZ + 0.5, + aMTEContainer.mBlock.stepSound.func_150496_b(), + (aMTEContainer.mBlock.stepSound.getVolume() + 1) / 2, + aMTEContainer.mBlock.stepSound.getPitch() * 0.8F); } } catch (Throwable e) { GT_FML_LOGGER.error("onPlaced", e); } try { - if (aMTEContainer.mTileEntity instanceof IMTE_HasMultiBlockMachineRelevantData && (((IMTE_HasMultiBlockMachineRelevantData) aMTEContainer.mTileEntity).hasMultiBlockMachineRelevantData())) { - GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); + if (aMTEContainer.mTileEntity instanceof IMTE_HasMultiBlockMachineRelevantData + && (((IMTE_HasMultiBlockMachineRelevantData) aMTEContainer.mTileEntity) + .hasMultiBlockMachineRelevantData())) { + GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); } } catch (Throwable e) { GT_FML_LOGGER.error("causeMachineUpdate", e); @@ -129,18 +166,18 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont try { if (!aWorld.isRemote) { aWorld.notifyBlockChange(aX, aY, aZ, tReplacedBlock); - aWorld.func_147453_f/*updateNeighborsAboutBlockChange*/(aX, aY, aZ, aMTEContainer.mBlock); + aWorld.func_147453_f /*updateNeighborsAboutBlockChange*/(aX, aY, aZ, aMTEContainer.mBlock); } } catch (Throwable e) { GT_FML_LOGGER.error("notifyBlockChange", e); } try { - ((IMultiTileEntity)aMTEContainer.mTileEntity).onTileEntityPlaced(); + ((IMultiTileEntity) aMTEContainer.mTileEntity).onTileEntityPlaced(); } catch (Throwable e) { GT_FML_LOGGER.error("onTileEntityPlaced", e); } try { - aWorld.func_147451_t/*updateAllLightTypes*/(aX, aY, aZ); + aWorld.func_147451_t /*updateAllLightTypes*/(aX, aY, aZ); } catch (Throwable e) { GT_FML_LOGGER.error("updateAllLightTypes", e); } @@ -158,18 +195,21 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont public void updateItemStack(ItemStack aStack) { final MultiTileEntityClassContainer tContainer = mBlock.mMultiTileEntityRegistry.getClassContainer(aStack); if (tContainer == null) return; - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IItemUpdatable) { - ((IItemUpdatable)tTileEntityContainer.mTileEntity).updateItemStack(aStack); + ((IItemUpdatable) tTileEntityContainer.mTileEntity).updateItemStack(aStack); } } + @Override public void updateItemStack(ItemStack aStack, World aWorld, int aX, int aY, int aZ) { final MultiTileEntityClassContainer tContainer = mBlock.mMultiTileEntityRegistry.getClassContainer(aStack); if (tContainer == null) return; - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IItemUpdatable) { - ((IItemUpdatable)tTileEntityContainer.mTileEntity).updateItemStack(aStack, aWorld, aX, aY, aZ); + ((IItemUpdatable) tTileEntityContainer.mTileEntity).updateItemStack(aStack, aWorld, aX, aY, aZ); } } @@ -177,9 +217,11 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont public int getItemStackLimit(ItemStack aStack) { final MultiTileEntityClassContainer tContainer = mBlock.mMultiTileEntityRegistry.getClassContainer(aStack); if (tContainer == null) return 1; - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IMTE_GetMaxStackSize) { - return ((IMTE_GetMaxStackSize)tTileEntityContainer.mTileEntity).getMaxStackSize(aStack, tContainer.mStackSize); + return ((IMTE_GetMaxStackSize) tTileEntityContainer.mTileEntity) + .getMaxStackSize(aStack, tContainer.mStackSize); } return tContainer.mStackSize; } @@ -191,9 +233,10 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont @Override public FluidStack getFluid(ItemStack aStack) { - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final FluidStack rFluid = ((IFluidContainerItem)tTileEntityContainer.mTileEntity).getFluid(aStack); + final FluidStack rFluid = ((IFluidContainerItem) tTileEntityContainer.mTileEntity).getFluid(aStack); updateItemStack(aStack); return rFluid; } @@ -202,9 +245,10 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont @Override public int getCapacity(ItemStack aStack) { - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final int rCapacity = ((IFluidContainerItem)tTileEntityContainer.mTileEntity).getCapacity(aStack); + final int rCapacity = ((IFluidContainerItem) tTileEntityContainer.mTileEntity).getCapacity(aStack); updateItemStack(aStack); return rCapacity; } @@ -213,9 +257,10 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont @Override public int fill(ItemStack aStack, FluidStack aFluid, boolean aDoFill) { - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final int tFilled = ((IFluidContainerItem)tTileEntityContainer.mTileEntity).fill(aStack, aFluid, aDoFill); + final int tFilled = ((IFluidContainerItem) tTileEntityContainer.mTileEntity).fill(aStack, aFluid, aDoFill); updateItemStack(aStack); return tFilled; } @@ -224,9 +269,11 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont @Override public FluidStack drain(ItemStack aStack, int aMaxDrain, boolean aDoDrain) { - final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); + final MultiTileEntityContainer tTileEntityContainer = + mBlock.mMultiTileEntityRegistry.getNewTileEntityContainer(aStack); if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final FluidStack rFluid = ((IFluidContainerItem)tTileEntityContainer.mTileEntity).drain(aStack, aMaxDrain, aDoDrain); + final FluidStack rFluid = + ((IFluidContainerItem) tTileEntityContainer.mTileEntity).drain(aStack, aMaxDrain, aDoDrain); updateItemStack(aStack); return rFluid; } @@ -234,7 +281,8 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont } @Override - public boolean func_150936_a/*canPlaceAtSide*/(World aWorld, int aX, int aY, int aZ, int aSide, EntityPlayer aPlayer, ItemStack aStack) { + public boolean func_150936_a /*canPlaceAtSide*/( + World aWorld, int aX, int aY, int aZ, int aSide, EntityPlayer aPlayer, ItemStack aStack) { return true; } @@ -273,7 +321,7 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont @Override public final boolean getShareTag() { - return true; // just to be sure + return true; // just to be sure } @Override diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java index 0bb9af1daa..b212a51384 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityRegistry.java @@ -1,5 +1,7 @@ package gregtech.api.multitileentity; +import static gregtech.GT_Mod.GT_FML_LOGGER; + import appeng.core.CreativeTab; import com.gtnewhorizon.gtnhlib.util.map.ItemStackMap; import cpw.mods.fml.common.registry.GameRegistry; @@ -10,6 +12,11 @@ import gregtech.api.multitileentity.interfaces.IMultiTileEntity; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Util; import gregtech.api.util.GT_Utility; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; import net.minecraft.block.Block; import net.minecraft.init.Items; import net.minecraft.item.Item; @@ -20,14 +27,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -import static gregtech.GT_Mod.GT_FML_LOGGER; - public class MultiTileEntityRegistry { private static final HashMap<String, MultiTileEntityRegistry> NAMED_REGISTRIES = new HashMap<>(); @@ -42,7 +41,8 @@ public class MultiTileEntityRegistry { public final String mNameInternal; public final MultiTileEntityBlockInternal mBlock; - private static MultiTileEntityBlockInternal regblock(String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { + private static MultiTileEntityBlockInternal regblock( + String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { GameRegistry.registerBlock(aBlock, aItemClass == null ? ItemBlock.class : aItemClass, aNameInternal); return aBlock; } @@ -57,7 +57,8 @@ public class MultiTileEntityRegistry { /** * @param aNameInternal the internal Name of the Item */ - public MultiTileEntityRegistry(String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { + public MultiTileEntityRegistry( + String aNameInternal, MultiTileEntityBlockInternal aBlock, Class<? extends ItemBlock> aItemClass) { this(aNameInternal, regblock(aNameInternal, aBlock, aItemClass)); } @@ -65,7 +66,9 @@ public class MultiTileEntityRegistry { * @param aNameInternal the internal Name of the Item */ public MultiTileEntityRegistry(String aNameInternal, MultiTileEntityBlockInternal aBlock) { - if (!GregTech_API.sPreloadStarted || GregTech_API.sPreloadFinished) throw new IllegalStateException("The MultiTileEntity Registry must be initialised during Preload Phase and not before"); + if (!GregTech_API.sPreloadStarted || GregTech_API.sPreloadFinished) + throw new IllegalStateException( + "The MultiTileEntity Registry must be initialised during Preload Phase and not before"); mNameInternal = aNameInternal; mBlock = aBlock; mBlock.mMultiTileEntityRegistry = this; @@ -84,6 +87,7 @@ public class MultiTileEntityRegistry { public static MultiTileEntityRegistry getRegistry(int aRegistryID) { return REGISTRIES.get(new ItemStack(Item.getItemById(aRegistryID), 1, GT_Values.W)); } + public static MultiTileEntityRegistry getRegistry(String aRegistryName) { return NAMED_REGISTRIES.get(aRegistryName); } @@ -116,18 +120,23 @@ public class MultiTileEntityRegistry { tFailed = true; } if (mRegistry.containsKey(aClassContainer.mID)) { - GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class Container uses occupied MetaData! (" + aClassContainer.mID + ")"); + GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: Class Container uses occupied MetaData! (" + + aClassContainer.mID + ")"); tFailed = true; } } if (tFailed) { GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: STACKTRACE START"); - int i = 0; for (StackTraceElement tElement : new Exception().getStackTrace()) if (i++<5 && !tElement.getClassName().startsWith("sun")) GT_FML_LOGGER.error("\tat " + tElement); else break; + int i = 0; + for (StackTraceElement tElement : new Exception().getStackTrace()) + if (i++ < 5 && !tElement.getClassName().startsWith("sun")) GT_FML_LOGGER.error("\tat " + tElement); + else break; GT_FML_LOGGER.error("MULTI-TILE REGISTRY ERROR: STACKTRACE END"); return null; } - GT_LanguageManager.addStringLocalization(mNameInternal+"."+aClassContainer.mID+".name", aLocalised, false); + GT_LanguageManager.addStringLocalization( + mNameInternal + "." + aClassContainer.mID + ".name", aLocalised, false); mRegistry.put(aClassContainer.mID, aClassContainer); mLastRegisteredID = aClassContainer.mID; mRegistrations.add(aClassContainer); @@ -135,34 +144,49 @@ public class MultiTileEntityRegistry { if (sRegisteredTileEntities.add(aClassContainer.mCanonicalTileEntity.getClass())) { aClassContainer.mCanonicalTileEntity.onRegistrationFirst(this, aClassContainer.mID); } -// // TODO: Recipe -// if (aRecipe != null && aRecipe.length > 1) { -// if (aRecipe[0] instanceof Object[]) aRecipe = (Object[])aRecipe[0]; -// if (aRecipe.length > 2) CR.shaped(getItem(aClassContainer.mID), CR.DEF_REV_NCC, aRecipe); -// } -// // A simple special case to make it easier to add a Machine to Recipe Lists without having to worry about anything. -// String tRecipeMapName = aClassContainer.mParameters.getString(NBT_RECIPEMAP); -// if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} -// tRecipeMapName = aClassContainer.mParameters.getString(NBT_FUELMAP); -// if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} -// + // // TODO: Recipe + // if (aRecipe != null && aRecipe.length > 1) { + // if (aRecipe[0] instanceof Object[]) aRecipe = (Object[])aRecipe[0]; + // if (aRecipe.length > 2) CR.shaped(getItem(aClassContainer.mID), CR.DEF_REV_NCC, aRecipe); + // } + // // A simple special case to make it easier to add a Machine to Recipe Lists without having to worry + // about anything. + // String tRecipeMapName = aClassContainer.mParameters.getString(NBT_RECIPEMAP); + // if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = + // RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) + // tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} + // tRecipeMapName = aClassContainer.mParameters.getString(NBT_FUELMAP); + // if (GT_Utility.isStringValid(tRecipeMapName)) {RecipeMap tMap = + // RecipeMap.RECIPE_MAPS.get(tRecipeMapName); if (tMap != null) + // tMap.mRecipeMachineList.add(getItem(aClassContainer.mID));} + // return getItem(aClassContainer.mID); } public short mLastRegisteredID = GT_Values.W; + public ItemStack getItem() { + return getItem(mLastRegisteredID, 1, null); + } - public ItemStack getItem() {return getItem(mLastRegisteredID, 1, null);} - public ItemStack getItem(int aID) {return getItem(aID, 1, null);} - public ItemStack getItem(int aID, NBTTagCompound aNBT) {return getItem(aID, 1, aNBT);} - public ItemStack getItem(int aID, long aAmount) {return getItem(aID, aAmount, null);} + public ItemStack getItem(int aID) { + return getItem(aID, 1, null); + } + + public ItemStack getItem(int aID, NBTTagCompound aNBT) { + return getItem(aID, 1, aNBT); + } + + public ItemStack getItem(int aID, long aAmount) { + return getItem(aID, aAmount, null); + } public ItemStack getItem(int aID, long aAmount, NBTTagCompound aNBT) { - final ItemStack rStack = new ItemStack(mBlock, (int)aAmount, aID); + final ItemStack rStack = new ItemStack(mBlock, (int) aAmount, aID); if (aNBT == null || aNBT.hasNoTags()) { aNBT = new NBTTagCompound(); final MultiTileEntityContainer tTileEntityContainer = getNewTileEntityContainer(aID, aNBT); - if (tTileEntityContainer != null) ((IMultiTileEntity)tTileEntityContainer.mTileEntity).writeItemNBT(aNBT); + if (tTileEntityContainer != null) ((IMultiTileEntity) tTileEntityContainer.mTileEntity).writeItemNBT(aNBT); } rStack.setTagCompound(aNBT); return rStack; @@ -185,16 +209,26 @@ public class MultiTileEntityRegistry { return tContainer == null ? null : (TileEntity) tContainer.mTileEntity; } - public MultiTileEntityContainer getNewTileEntityContainer(World aWorld, int aX, int aY, int aZ, int aID, NBTTagCompound aNBT) { + public MultiTileEntityContainer getNewTileEntityContainer( + World aWorld, int aX, int aY, int aZ, int aID, NBTTagCompound aNBT) { final MultiTileEntityClassContainer tClass = mRegistry.get((short) aID); if (tClass == null || tClass.mBlock == null) return null; - final MultiTileEntityContainer rContainer = new MultiTileEntityContainer((TileEntity) GT_Utility.callConstructor(tClass.mClass, -1, null, true), tClass.mBlock, tClass.mBlockMetaData); + final MultiTileEntityContainer rContainer = new MultiTileEntityContainer( + (TileEntity) GT_Utility.callConstructor(tClass.mClass, -1, null, true), + tClass.mBlock, + tClass.mBlockMetaData); if (rContainer.mTileEntity == null) return null; rContainer.mTileEntity.setWorldObj(aWorld); rContainer.mTileEntity.xCoord = aX; rContainer.mTileEntity.yCoord = aY; rContainer.mTileEntity.zCoord = aZ; - ((IMultiTileEntity) rContainer.mTileEntity).initFromNBT(aNBT == null || aNBT.hasNoTags() ? tClass.mParameters : GT_Util.fuseNBT(aNBT, tClass.mParameters), (short) aID, (short) Block.getIdFromBlock(mBlock)); + ((IMultiTileEntity) rContainer.mTileEntity) + .initFromNBT( + aNBT == null || aNBT.hasNoTags() + ? tClass.mParameters + : GT_Util.fuseNBT(aNBT, tClass.mParameters), + (short) aID, + (short) Block.getIdFromBlock(mBlock)); return rContainer; } @@ -204,12 +238,14 @@ public class MultiTileEntityRegistry { } public TileEntity getNewTileEntity(ItemStack aStack) { - final MultiTileEntityContainer tContainer = getNewTileEntityContainer(null, 0, 0, 0, Items.feather.getDamage(aStack), aStack.getTagCompound()); + final MultiTileEntityContainer tContainer = + getNewTileEntityContainer(null, 0, 0, 0, Items.feather.getDamage(aStack), aStack.getTagCompound()); return tContainer == null ? null : tContainer.mTileEntity; } public TileEntity getNewTileEntity(World aWorld, int aX, int aY, int aZ, ItemStack aStack) { - final MultiTileEntityContainer tContainer = getNewTileEntityContainer(aWorld, aX, aY, aZ, Items.feather.getDamage(aStack), aStack.getTagCompound()); + final MultiTileEntityContainer tContainer = + getNewTileEntityContainer(aWorld, aX, aY, aZ, Items.feather.getDamage(aStack), aStack.getTagCompound()); return tContainer == null ? null : tContainer.mTileEntity; } @@ -224,5 +260,4 @@ public class MultiTileEntityRegistry { public MultiTileEntityContainer getNewTileEntityContainer(int aID, NBTTagCompound aNBT) { return getNewTileEntityContainer(null, 0, 0, 0, aID, aNBT); } - } diff --git a/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java index 50c43c9764..18dc310bb7 100644 --- a/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java @@ -1,5 +1,12 @@ package gregtech.api.multitileentity.base; +import static gregtech.GT_Mod.GT_FML_LOGGER; +import static gregtech.api.enums.GT_Values.NBT; +import static gregtech.api.enums.GT_Values.OPOS; +import static gregtech.api.enums.GT_Values.SIDE_WEST; +import static gregtech.api.enums.GT_Values.VALID_SIDES; +import static gregtech.api.enums.GT_Values.emptyIconContainerArray; + import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -14,10 +21,10 @@ import gregtech.api.interfaces.tileentity.IGregtechWailaProvider; import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords; import gregtech.api.metatileentity.CoverableTileEntity; import gregtech.api.metatileentity.GregTechTileClientEvents; -import gregtech.api.multitileentity.interfaces.IMultiTileEntity; import gregtech.api.multitileentity.MultiTileEntityBlockInternal; import gregtech.api.multitileentity.MultiTileEntityClassContainer; import gregtech.api.multitileentity.MultiTileEntityRegistry; +import gregtech.api.multitileentity.interfaces.IMultiTileEntity; import gregtech.api.net.GT_Packet_New; import gregtech.api.net.GT_Packet_TileEntity; import gregtech.api.objects.GT_ItemStack; @@ -29,8 +36,10 @@ import gregtech.api.util.GT_Util; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import gregtech.common.render.GT_MultiTexture; -import gregtech.common.render.GT_RenderedTexture; import gregtech.common.render.IRenderedBlock; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; import net.minecraft.block.Block; @@ -57,35 +66,27 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidTank; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import static gregtech.GT_Mod.GT_FML_LOGGER; -import static gregtech.api.enums.GT_Values.emptyIconContainerArray; -import static gregtech.api.enums.GT_Values.NBT; -import static gregtech.api.enums.GT_Values.OPOS; -import static gregtech.api.enums.GT_Values.SIDE_WEST; -import static gregtech.api.enums.GT_Values.VALID_SIDES; - -public abstract class BaseMultiTileEntity extends CoverableTileEntity implements IMultiTileEntity, IHasWorldObjectAndCoords, IRenderedBlock, IGregtechWailaProvider { +public abstract class BaseMultiTileEntity extends CoverableTileEntity + implements IMultiTileEntity, IHasWorldObjectAndCoords, IRenderedBlock, IGregtechWailaProvider { public IIconContainer[] mTextures = emptyIconContainerArray; -// public IIconContainer[] mTexturesFront = emptyIconContainerArray; + // public IIconContainer[] mTexturesFront = emptyIconContainerArray; // Makes a Bounding Box without having to constantly specify the Offset Coordinates. protected static final float[] PX_BOX = {0, 0, 0, 1, 1, 1}; public Materials mMaterial = Materials._NULL; - protected final boolean mIsTicking; // If this TileEntity is ticking at all + protected final boolean mIsTicking; // If this TileEntity is ticking at all - protected boolean mShouldRefresh = true; // This Variable checks if this TileEntity should refresh when the Block is being set. That way you can turn this check off any time you need it. - protected boolean mDoesBlockUpdate = false; // This Variable is for a buffered Block Update. - protected boolean mForceFullSelectionBoxes = false; // This Variable is for forcing the Selection Box to be full. + protected boolean mShouldRefresh = + true; // This Variable checks if this TileEntity should refresh when the Block is being set. That way you + // can turn this check off any time you need it. + protected boolean mDoesBlockUpdate = false; // This Variable is for a buffered Block Update. + protected boolean mForceFullSelectionBoxes = false; // This Variable is for forcing the Selection Box to be full. protected boolean mNeedsUpdate = false; protected boolean mInventoryChanged = false; protected boolean mIsPainted = false; - protected byte mFacing = SIDE_WEST; // Default to WEST, so it renders facing Left in the inventory + protected byte mFacing = SIDE_WEST; // Default to WEST, so it renders facing Left in the inventory protected byte mColor; protected int mRGBa = GT_Values.UNCOLORED; private short mMTEID = GT_Values.W, mMTERegistry = GT_Values.W; @@ -127,18 +128,19 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements // Loading the registry final String textureName = aNBT.getString(NBT.TEXTURE); mTextures = new IIconContainer[] { - new Textures.BlockIcons.CustomIcon("multitileentity/base/"+textureName+"/bottom"), - new Textures.BlockIcons.CustomIcon("multitileentity/base/"+textureName+"/top"), - new Textures.BlockIcons.CustomIcon("multitileentity/base/"+textureName+"/side"), + new Textures.BlockIcons.CustomIcon("multitileentity/base/" + textureName + "/bottom"), + new Textures.BlockIcons.CustomIcon("multitileentity/base/" + textureName + "/top"), + new Textures.BlockIcons.CustomIcon("multitileentity/base/" + textureName + "/side"), }; } @Override public void copyTextures() { // Loading an instance - final TileEntity tCanonicalTileEntity = MultiTileEntityRegistry.getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID()); - if(tCanonicalTileEntity instanceof BaseMultiTileEntity) - mTextures = ((BaseMultiTileEntity)tCanonicalTileEntity).mTextures; + final TileEntity tCanonicalTileEntity = + MultiTileEntityRegistry.getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID()); + if (tCanonicalTileEntity instanceof BaseMultiTileEntity) + mTextures = ((BaseMultiTileEntity) tCanonicalTileEntity).mTextures; } @Override @@ -153,7 +155,8 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements if (tRegistry != null) { final MultiTileEntityClassContainer tClass = tRegistry.getClassContainer(mMTEID); if (tClass != null) { - // Add the Default Parameters. Useful for things that differ between different tiers/types of the same machine + // Add the Default Parameters. Useful for things that differ between different tiers/types of the + // same machine aNBT = GT_Util.fuseNBT(aNBT, tClass.mParameters); } } @@ -163,7 +166,8 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements if (aNBT.hasKey("y")) yCoord = aNBT.getInteger("y"); if (aNBT.hasKey("z")) zCoord = aNBT.getInteger("z"); // read the custom Name. - if (aNBT.hasKey(NBT.DISPAY)) mCustomName = aNBT.getCompoundTag(NBT.DISPAY).getString(NBT.CUSTOM_NAME); + if (aNBT.hasKey(NBT.DISPAY)) + mCustomName = aNBT.getCompoundTag(NBT.DISPAY).getString(NBT.CUSTOM_NAME); // And now everything else. try { @@ -173,7 +177,7 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements mOwnerName = aNBT.getString(NBT.OWNER); try { mOwnerUuid = UUID.fromString(aNBT.getString(NBT.OWNER_UUID)); - } catch (IllegalArgumentException e){ + } catch (IllegalArgumentException e) { mOwnerUuid = null; } if (aNBT.hasKey(NBT.LOCK_UPGRADE)) mLockUpgrade = aNBT.getBoolean(NBT.LOCK_UPGRADE); @@ -182,15 +186,15 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements readCoverNBT(aNBT); readMultiTileNBT(aNBT); - if(GregTech_API.sBlockIcons == null && aNBT.hasKey(NBT.TEXTURE)) { + if (GregTech_API.sBlockIcons == null && aNBT.hasKey(NBT.TEXTURE)) { loadTextureNBT(aNBT); } else { copyTextures(); } if (mCoverData == null || mCoverData.length != 6) mCoverData = new ISerializableObject[6]; - if (mCoverSides.length != 6) mCoverSides = new int[]{0, 0, 0, 0, 0, 0}; - if (mSidedRedstone.length != 6) mSidedRedstone = new byte[]{15, 15, 15, 15, 15, 15}; + if (mCoverSides.length != 6) mCoverSides = new int[] {0, 0, 0, 0, 0, 0}; + if (mSidedRedstone.length != 6) mSidedRedstone = new byte[] {15, 15, 15, 15, 15, 15}; updateCoverBehavior(); @@ -246,7 +250,6 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements return aNBT; } - @Override public long getTimer() { return 0; @@ -259,7 +262,9 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements @Override public TileEntity getTileEntity(int aX, int aY, int aZ) { - if (worldObj == null || (ignoreUnloadedChunks && crossedChunkBorder(aX, aZ) && !worldObj.blockExists(aX, aY, aZ))) return null; + if (worldObj == null + || (ignoreUnloadedChunks && crossedChunkBorder(aX, aZ) && !worldObj.blockExists(aX, aY, aZ))) + return null; return GT_Util.getTileEntity(worldObj, aX, aY, aZ, true); } @@ -269,7 +274,8 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } @Override - public boolean shouldRefresh(Block aOldBlock, Block aNewBlock, int aOldMeta, int aNewMeta, World aWorld, int aX, int aY, int aZ) { + public boolean shouldRefresh( + Block aOldBlock, Block aNewBlock, int aOldMeta, int aNewMeta, World aWorld, int aX, int aY, int aZ) { return mShouldRefresh || aOldBlock != aNewBlock; } @@ -282,13 +288,22 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements public void doBlockUpdate() { final Block tBlock = getBlock(getCoords()); worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, tBlock); - if (this instanceof IMTE_IsProvidingStrongPower) for (byte tSide : GT_Values.ALL_VALID_SIDES) { - if (getBlockAtSide(tSide).isNormalCube(worldObj, xCoord + GT_Values.OFFX[tSide], yCoord + GT_Values.OFFY[tSide], zCoord + GT_Values.OFFZ[tSide])) { - worldObj.notifyBlocksOfNeighborChange( - xCoord + GT_Values.OFFX[tSide], yCoord + GT_Values.OFFY[tSide], zCoord + GT_Values.OFFZ[tSide], tBlock, OPOS[tSide] - ); + if (this instanceof IMTE_IsProvidingStrongPower) + for (byte tSide : GT_Values.ALL_VALID_SIDES) { + if (getBlockAtSide(tSide) + .isNormalCube( + worldObj, + xCoord + GT_Values.OFFX[tSide], + yCoord + GT_Values.OFFY[tSide], + zCoord + GT_Values.OFFZ[tSide])) { + worldObj.notifyBlocksOfNeighborChange( + xCoord + GT_Values.OFFX[tSide], + yCoord + GT_Values.OFFY[tSide], + zCoord + GT_Values.OFFZ[tSide], + tBlock, + OPOS[tSide]); + } } - } mDoesBlockUpdate = false; } @@ -297,7 +312,9 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements final TileEntity tTileEntity = getTileEntityAtSideAndDistance(aSide, 1); // TODO: check to an interface // if (getBlockAtSide(aSide) == Blocks.glass) return false; - return tTileEntity instanceof IMultiTileEntity ? !((IMultiTileEntity) tTileEntity).isSurfaceOpaque(OPOS[aSide]) : !getBlockAtSide(aSide).isOpaqueCube(); + return tTileEntity instanceof IMultiTileEntity + ? !((IMultiTileEntity) tTileEntity).isSurfaceOpaque(OPOS[aSide]) + : !getBlockAtSide(aSide).isOpaqueCube(); } @Override @@ -317,37 +334,55 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements return this; } - @Override public int getRenderPasses(Block aBlock) {return 1;} - @Override public boolean usesRenderPass(int aRenderPass) {return true;} - @Override public boolean setBlockBounds(Block aBlock, int aRenderPass) {return false;} - @Override public boolean renderItem(Block aBlock, RenderBlocks aRenderer) {return false;} - @Override public boolean renderBlock(Block aBlock, RenderBlocks aRenderer, IBlockAccess aWorld, int aX, int aY, int aZ) {return false;} + @Override + public int getRenderPasses(Block aBlock) { + return 1; + } + + @Override + public boolean usesRenderPass(int aRenderPass) { + return true; + } + + @Override + public boolean setBlockBounds(Block aBlock, int aRenderPass) { + return false; + } + + @Override + public boolean renderItem(Block aBlock, RenderBlocks aRenderer) { + return false; + } + + @Override + public boolean renderBlock(Block aBlock, RenderBlocks aRenderer, IBlockAccess aWorld, int aX, int aY, int aZ) { + return false; + } @Override public ITexture[] getTexture(Block aBlock, byte aSide) { return getTexture(aBlock, aSide, 1, VALID_SIDES); } - @Override public final ITexture[] getTexture(Block aBlock, byte aSide, int aRenderPass, boolean[] aShouldSideBeRendered) { + @Override + public final ITexture[] getTexture(Block aBlock, byte aSide, int aRenderPass, boolean[] aShouldSideBeRendered) { if (!aShouldSideBeRendered[aSide]) return null; final ITexture coverTexture = getCoverTexture(aSide); final ITexture[] textureUncovered = getTexture(aBlock, aSide, true, aRenderPass); if (coverTexture != null) { - return new ITexture[]{ - GT_MultiTexture.get(textureUncovered), - coverTexture - }; + return new ITexture[] {GT_MultiTexture.get(textureUncovered), coverTexture}; } else { return textureUncovered; } } - @Override public ITexture[] getTexture(Block aBlock, byte aSide, boolean isActive, int aRenderPass) { + @Override + public ITexture[] getTexture(Block aBlock, byte aSide, boolean isActive, int aRenderPass) { // Top, bottom or side - aSide = (byte)Math.min(aSide, 2); - return new ITexture[]{TextureFactory.of(mTextures[aSide], GT_Util.getRGBaArray(mRGBa))}; + aSide = (byte) Math.min(aSide, 2); + return new ITexture[] {TextureFactory.of(mTextures[aSide], GT_Util.getRGBaArray(mRGBa))}; } @Override @@ -403,7 +438,7 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements */ @Override public boolean setMainFacing(byte aSide) { - if(!isValidFacing(aSide)) return false; + if (!isValidFacing(aSide)) return false; mFacing = aSide; issueClientUpdate(); @@ -450,20 +485,35 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements public AxisAlignedBB box(double[] aBox) { return AxisAlignedBB.getBoundingBox( - xCoord + aBox[0], yCoord + aBox[1], zCoord + aBox[2], xCoord + aBox[3], yCoord + aBox[4], zCoord + aBox[5] - ); - } - - public boolean box(AxisAlignedBB aAABB, List<AxisAlignedBB> aList, double aMinX, double aMinY, double aMinZ, double aMaxX, double aMaxY, double aMaxZ) { + xCoord + aBox[0], + yCoord + aBox[1], + zCoord + aBox[2], + xCoord + aBox[3], + yCoord + aBox[4], + zCoord + aBox[5]); + } + + public boolean box( + AxisAlignedBB aAABB, + List<AxisAlignedBB> aList, + double aMinX, + double aMinY, + double aMinZ, + double aMaxX, + double aMaxY, + double aMaxZ) { final AxisAlignedBB tBox = box(aMinX, aMinY, aMinZ, aMaxX, aMaxY, aMaxZ); return tBox.intersectsWith(aAABB) && aList.add(tBox); } @Override - public void onFacingChange() {/*Do nothing*/} + public void onFacingChange() { + /*Do nothing*/ + } public AxisAlignedBB box(double aMinX, double aMinY, double aMinZ, double aMaxX, double aMaxY, double aMaxZ) { - return AxisAlignedBB.getBoundingBox(xCoord + aMinX, yCoord + aMinY, zCoord + aMinZ, xCoord + aMaxX, yCoord + aMaxY, zCoord + aMaxZ); + return AxisAlignedBB.getBoundingBox( + xCoord + aMinX, yCoord + aMinY, zCoord + aMinZ, xCoord + aMaxX, yCoord + aMaxY, zCoord + aMaxZ); } @Override @@ -477,7 +527,9 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } @Override - public void onMachineBlockUpdate() {/*Do nothing*/} + public void onMachineBlockUpdate() { + /*Do nothing*/ + } public boolean box(AxisAlignedBB aAABB, List<AxisAlignedBB> aList, float[] aBox) { final AxisAlignedBB tBox = box(aBox[0], aBox[1], aBox[2], aBox[3], aBox[4], aBox[5]); @@ -490,7 +542,13 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } public AxisAlignedBB box(float[] aBox) { - return AxisAlignedBB.getBoundingBox(xCoord + aBox[0], yCoord + aBox[1], zCoord + aBox[2], xCoord + aBox[3], yCoord + aBox[4], zCoord + aBox[5]); + return AxisAlignedBB.getBoundingBox( + xCoord + aBox[0], + yCoord + aBox[1], + zCoord + aBox[2], + xCoord + aBox[3], + yCoord + aBox[4], + zCoord + aBox[5]); } public boolean box(Block aBlock) { @@ -513,16 +571,15 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } public boolean box(Block aBlock, double[] aBox) { - aBlock.setBlockBounds((float) aBox[0], (float) aBox[1], (float) aBox[2], (float) aBox[3], (float) aBox[4], (float) aBox[5]); + aBlock.setBlockBounds( + (float) aBox[0], (float) aBox[1], (float) aBox[2], (float) aBox[3], (float) aBox[4], (float) aBox[5]); return true; } - protected void markBlockForUpdate() { worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - //worldObj.func_147479_m(xCoord, yCoord, zCoord); + // worldObj.func_147479_m(xCoord, yCoord, zCoord); mNeedsUpdate = false; - } public boolean box(Block aBlock, float[] aBox) { @@ -535,7 +592,8 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements /* empty */ } - public boolean box(Block aBlock, double aMinX, double aMinY, double aMinZ, double aMaxX, double aMaxY, double aMaxZ) { + public boolean box( + Block aBlock, double aMinX, double aMinY, double aMinZ, double aMaxX, double aMaxY, double aMaxZ) { aBlock.setBlockBounds((float) aMinX, (float) aMinY, (float) aMinZ, (float) aMaxX, (float) aMaxY, (float) aMaxZ); return true; } @@ -612,9 +670,7 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } @Override - public void onBlockAdded() { - - } + public void onBlockAdded() {} @Override public String getOwnerName() { @@ -639,7 +695,17 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } @Override - public boolean onPlaced(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, byte aSide, float aHitX, float aHitY, float aHitZ) { + public boolean onPlaced( + ItemStack aStack, + EntityPlayer aPlayer, + World aWorld, + int aX, + int aY, + int aZ, + byte aSide, + float aHitX, + float aHitY, + float aHitZ) { mFacing = getSideForPlayerPlacing(aPlayer, mFacing, getValidFacings()); onFacingChange(); return true; @@ -658,23 +724,26 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements public boolean onBlockActivated(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) { try { return allowRightclick(aPlayer) && onRightClick(aPlayer, aSide, aX, aY, aZ); - } catch(Throwable e) { + } catch (Throwable e) { e.printStackTrace(GT_Log.err); return true; } } + @Override public boolean onRightClick(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) { if (isClientSide()) { - //Configure Cover, sneak can also be: screwdriver, wrench, side cutter, soldering iron + // Configure Cover, sneak can also be: screwdriver, wrench, side cutter, soldering iron if (aPlayer.isSneaking()) { - final byte tSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; + final byte tSide = + (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; return (getCoverBehaviorAtSideNew(tSide).hasCoverGUI()); } else if (getCoverBehaviorAtSideNew(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) { return true; } - if (!getCoverBehaviorAtSideNew(aSide).isGUIClickable(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) + if (!getCoverBehaviorAtSideNew(aSide) + .isGUIClickable(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) return false; } if (isServerSide()) { @@ -682,27 +751,35 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements final ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem(); final byte wrenchSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ); - if(tCurrentItem != null) { - if (getColorization() >= 0 && GT_Utility.areStacksEqual(new ItemStack(Items.water_bucket, 1), tCurrentItem)) { + if (tCurrentItem != null) { + if (getColorization() >= 0 + && GT_Utility.areStacksEqual(new ItemStack(Items.water_bucket, 1), tCurrentItem)) { // TODO (Colorization) } - if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sWrenchList)) return onWrenchRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); - if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sScrewdriverList)) return onScrewdriverRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); - if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sHardHammerList)) return onHammerRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); - if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sSoftHammerList)) return onMalletRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); - if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sSolderingToolList)) return onSolderingRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); - if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sWireCutterList)) return onWireCutterRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); + if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sWrenchList)) + return onWrenchRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); + if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sScrewdriverList)) + return onScrewdriverRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); + if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sHardHammerList)) + return onHammerRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); + if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sSoftHammerList)) + return onMalletRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); + if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sSolderingToolList)) + return onSolderingRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); + if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sWireCutterList)) + return onWireCutterRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); final byte coverSide = getCoverIDAtSide(aSide) == 0 ? wrenchSide : aSide; if (getCoverIDAtSide(coverSide) == 0) { if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sCovers.keySet())) { - if (GregTech_API.getCoverBehaviorNew(tCurrentItem).isCoverPlaceable(coverSide, tCurrentItem, this) && - allowCoverOnSide(coverSide, new GT_ItemStack(tCurrentItem))) - { + if (GregTech_API.getCoverBehaviorNew(tCurrentItem) + .isCoverPlaceable(coverSide, tCurrentItem, this) + && allowCoverOnSide(coverSide, new GT_ItemStack(tCurrentItem))) { setCoverItemAtSide(coverSide, tCurrentItem); if (!aPlayer.capabilities.isCreativeMode) tCurrentItem.stackSize--; - GT_Utility.sendSoundToPlayers(worldObj, SoundResource.IC2_TOOLS_WRENCH, 1.0F, -1, xCoord, yCoord, zCoord); + GT_Utility.sendSoundToPlayers( + worldObj, SoundResource.IC2_TOOLS_WRENCH, 1.0F, -1, xCoord, yCoord, zCoord); issueClientUpdate(); } sendCoverDataIfNeeded(); @@ -711,63 +788,97 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } else { if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sCrowbarList)) { if (GT_ModHandler.damageOrDechargeItem(tCurrentItem, 1, 1000, aPlayer)) { - GT_Utility.sendSoundToPlayers(worldObj, SoundResource.RANDOM_BREAK, 1.0F, -1, xCoord, yCoord, zCoord); + GT_Utility.sendSoundToPlayers( + worldObj, SoundResource.RANDOM_BREAK, 1.0F, -1, xCoord, yCoord, zCoord); dropCover(coverSide, aSide, false); } sendCoverDataIfNeeded(); return true; } } - } else if (aPlayer.isSneaking()) { //Sneak click, no tool -> open cover config if possible. - aSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; - return getCoverIDAtSide(aSide) > 0 && getCoverBehaviorAtSideNew(aSide).onCoverShiftRightClick(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this, aPlayer); + } else if (aPlayer.isSneaking()) { // Sneak click, no tool -> open cover config if possible. + aSide = (getCoverIDAtSide(aSide) == 0) + ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) + : aSide; + return getCoverIDAtSide(aSide) > 0 + && getCoverBehaviorAtSideNew(aSide) + .onCoverShiftRightClick( + aSide, + getCoverIDAtSide(aSide), + getComplexCoverDataAtSide(aSide), + this, + aPlayer); } - if (getCoverBehaviorAtSideNew(aSide).onCoverRightClick(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this, aPlayer, aX, aY, aZ)) - return true; - - if (!getCoverBehaviorAtSideNew(aSide).isGUIClickable(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) + if (getCoverBehaviorAtSideNew(aSide) + .onCoverRightClick( + aSide, + getCoverIDAtSide(aSide), + getComplexCoverDataAtSide(aSide), + this, + aPlayer, + aX, + aY, + aZ)) return true; + + if (!getCoverBehaviorAtSideNew(aSide) + .isGUIClickable(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) return false; - - } } return false; } - public boolean onWrenchRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { - if(setMainFacing(wrenchSide)) { + public boolean onWrenchRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + if (setMainFacing(wrenchSide)) { GT_ModHandler.damageOrDechargeItem(tCurrentItem, 1, 1000, aPlayer); GT_Utility.sendSoundToPlayers(worldObj, SoundResource.IC2_TOOLS_WRENCH, 1.0F, -1, xCoord, yCoord, zCoord); } return true; } - public boolean onScrewdriverRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + public boolean onScrewdriverRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { if (GT_ModHandler.damageOrDechargeItem(tCurrentItem, 1, 200, aPlayer)) { - setCoverDataAtSide(wrenchSide, getCoverBehaviorAtSideNew(wrenchSide).onCoverScrewdriverClick(wrenchSide, getCoverIDAtSide(wrenchSide), getComplexCoverDataAtSide(wrenchSide), this, aPlayer, aX, aY, aZ)); + setCoverDataAtSide( + wrenchSide, + getCoverBehaviorAtSideNew(wrenchSide) + .onCoverScrewdriverClick( + wrenchSide, + getCoverIDAtSide(wrenchSide), + getComplexCoverDataAtSide(wrenchSide), + this, + aPlayer, + aX, + aY, + aZ)); // TODO: Update connections! GT_Utility.sendSoundToPlayers(worldObj, SoundResource.IC2_TOOLS_WRENCH, 1.0F, -1, xCoord, yCoord, zCoord); } return true; } - public boolean onHammerRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + public boolean onHammerRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { return true; } - public boolean onMalletRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + public boolean onMalletRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { return true; } - public boolean onSolderingRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + public boolean onSolderingRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { return true; } - public boolean onWireCutterRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + public boolean onWireCutterRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { return true; } @@ -783,9 +894,7 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } @Override - public void onExploded(Explosion aExplosion) { - - } + public void onExploded(Explosion aExplosion) {} @Override public boolean isSideSolid(byte aSide) { @@ -800,28 +909,26 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements return rList; } - @Override - public boolean getSubItems(MultiTileEntityBlockInternal aBlock, Item aItem, CreativeTabs aTab, List<ItemStack> aList, short aID) { + public boolean getSubItems( + MultiTileEntityBlockInternal aBlock, Item aItem, CreativeTabs aTab, List<ItemStack> aList, short aID) { return true; } - @Override public boolean recolourBlock(byte aSide, byte aColor) { -// if (aColor > 15 || aColor < -1) aColor = -1; -// if(paint((byte) (aColor + 1))) { -//// updateClientData(); -//// causeBlockUpdate(); -// return true; -// } -// if (unpaint()) {updateClientData(); causeBlockUpdate(); return T;} -// mColor = (byte) (aColor + 1); -//// if (canAccessData()) mMetaTileEntity.onColorChangeServer(aColor); + // if (aColor > 15 || aColor < -1) aColor = -1; + // if(paint((byte) (aColor + 1))) { + //// updateClientData(); + //// causeBlockUpdate(); + // return true; + // } + // if (unpaint()) {updateClientData(); causeBlockUpdate(); return T;} + // mColor = (byte) (aColor + 1); + //// if (canAccessData()) mMetaTileEntity.onColorChangeServer(aColor); return false; } - @Override public boolean playerOwnsThis(EntityPlayer aPlayer, boolean aCheckPrecicely) { if (aCheckPrecicely || privateAccess() || (mOwnerName.length() == 0)) @@ -829,8 +936,10 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements setOwnerName(aPlayer.getDisplayName()); setOwnerUuid(aPlayer.getUniqueID()); } else - return !privateAccess() || aPlayer.getDisplayName().equals("Player") || mOwnerName.equals("Player") || mOwnerName.equals( - aPlayer.getDisplayName()); + return !privateAccess() + || aPlayer.getDisplayName().equals("Player") + || mOwnerName.equals("Player") + || mOwnerName.equals(aPlayer.getDisplayName()); return true; } @@ -848,15 +957,27 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements */ public GT_Packet_New getClientDataPacket() { return new GT_Packet_TileEntity( - xCoord, (short) yCoord, zCoord, - getMultiTileEntityRegistryID(), getMultiTileEntityID(), - mCoverSides[0], mCoverSides[1], mCoverSides[2], mCoverSides[3], mCoverSides[4], mCoverSides[5], - (byte) ((mFacing & 7) | (mRedstone ? 16 : 0)), - (byte) getTextureData(), /*getTexturePage()*/ - (byte) 0, /*getUpdateData()*/ - (byte) (((mSidedRedstone[0] > 0) ? 1 : 0) | ((mSidedRedstone[1] > 0) ? 2 : 0) | ((mSidedRedstone[2] > 0) ? 4 : 0) | ((mSidedRedstone[3] > 0) ? 8 : 0) | ((mSidedRedstone[4] > 0) ? 16 : 0) | ((mSidedRedstone[5] > 0) ? 32 : 0)), - mColor - ); + xCoord, + (short) yCoord, + zCoord, + getMultiTileEntityRegistryID(), + getMultiTileEntityID(), + mCoverSides[0], + mCoverSides[1], + mCoverSides[2], + mCoverSides[3], + mCoverSides[4], + mCoverSides[5], + (byte) ((mFacing & 7) | (mRedstone ? 16 : 0)), + (byte) getTextureData(), /*getTexturePage()*/ + (byte) 0, /*getUpdateData()*/ + (byte) (((mSidedRedstone[0] > 0) ? 1 : 0) + | ((mSidedRedstone[1] > 0) ? 2 : 0) + | ((mSidedRedstone[2] > 0) ? 4 : 0) + | ((mSidedRedstone[3] > 0) ? 8 : 0) + | ((mSidedRedstone[4] > 0) ? 16 : 0) + | ((mSidedRedstone[5] > 0) ? 32 : 0)), + mColor); } @Override @@ -866,29 +987,34 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements } @Override - public void getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + public void getWailaBody( + ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { super.getWailaBody(itemStack, currenttip, accessor, config); - currenttip.add(String.format("Facing: %s", ForgeDirection.getOrientation(getFrontFacing()).name())); + currenttip.add(String.format( + "Facing: %s", ForgeDirection.getOrientation(getFrontFacing()).name())); } @Override - public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) { + public void getWailaNBTData( + EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) { super.getWailaNBTData(player, tile, tag, world, x, y, z); } - @Override - public void sendClientData( EntityPlayerMP aPlayer) { - if(worldObj == null || worldObj.isRemote) return; + public void sendClientData(EntityPlayerMP aPlayer) { + if (worldObj == null || worldObj.isRemote) return; final GT_Packet_New tPacket = getClientDataPacket(); - if(aPlayer == null) { + if (aPlayer == null) { GT_Values.NW.sendPacketToAllPlayersInRange(worldObj, tPacket, getXCoord(), getZCoord()); } else { GT_Values.NW.sendToPlayer(tPacket, aPlayer); } sendCoverDataIfNeeded(); } - public void setTextureData(byte aValue) {/*Do nothing*/} + + public void setTextureData(byte aValue) { + /*Do nothing*/ + } @Override public boolean receiveClientEvent(int aEventID, int aValue) { @@ -898,15 +1024,15 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements switch (aEventID) { case GregTechTileClientEvents.CHANGE_COMMON_DATA: mFacing = (byte) (aValue & 7); - //mActive = ((aValue & 8) != 0); + // mActive = ((aValue & 8) != 0); mRedstone = ((aValue & 16) != 0); - //mLockUpgrade = ((aValue&32) != 0); - //mWorks = ((aValue & 64) != 0); + // mLockUpgrade = ((aValue&32) != 0); + // mWorks = ((aValue & 64) != 0); break; case GregTechTileClientEvents.CHANGE_CUSTOM_DATA: if ((aValue & 0x80) != 0) // Is texture index - setTextureData((byte) (aValue & 0x7F)); - //else if (mMetaTileEntity instanceof GT_MetaTileEntity_Hatch)//is texture page and hatch + setTextureData((byte) (aValue & 0x7F)); + // else if (mMetaTileEntity instanceof GT_MetaTileEntity_Hatch)//is texture page and hatch // ((GT_MetaTileEntity_Hatch) mMetaTileEntity).onTexturePageUpdate((byte) (aValue & 0x7F)); break; case GregTechTileClientEvents.CHANGE_COLOR: @@ -921,21 +1047,21 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements mSidedRedstone[4] = (byte) ((aValue & 16) == 16 ? 15 : 0); mSidedRedstone[5] = (byte) ((aValue & 32) == 32 ? 15 : 0); break; -// case GregTechTileClientEvents.DO_SOUND: -// if (mTickTimer > 20) -// doSound((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); -// break; -// case GregTechTileClientEvents.START_SOUND_LOOP: -// if (mTickTimer > 20) -// startSoundLoop((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); -// break; -// case GregTechTileClientEvents.STOP_SOUND_LOOP: -// if (mTickTimer > 20) -// stopSoundLoop((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); -// break; -// case GregTechTileClientEvents.CHANGE_LIGHT: -// mLightValue = (byte) aValue; -// break; + // case GregTechTileClientEvents.DO_SOUND: + // if (mTickTimer > 20) + // doSound((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + // break; + // case GregTechTileClientEvents.START_SOUND_LOOP: + // if (mTickTimer > 20) + // startSoundLoop((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + // break; + // case GregTechTileClientEvents.STOP_SOUND_LOOP: + // if (mTickTimer > 20) + // stopSoundLoop((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5); + // break; + // case GregTechTileClientEvents.CHANGE_LIGHT: + // mLightValue = (byte) aValue; + // break; } } return true; @@ -950,10 +1076,10 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements public ArrayList<String> getDebugInfo(EntityPlayer aPlayer, int aLogLevel) { final ArrayList<String> tList = new ArrayList<>(); if (aLogLevel > 2) { - tList.add("MultiTileRegistry-ID: " + EnumChatFormatting.BLUE + mMTERegistry + EnumChatFormatting.RESET + " MultiTile-ID: " + EnumChatFormatting.BLUE + mMTEID + EnumChatFormatting.RESET); + tList.add("MultiTileRegistry-ID: " + EnumChatFormatting.BLUE + mMTERegistry + EnumChatFormatting.RESET + + " MultiTile-ID: " + EnumChatFormatting.BLUE + mMTEID + EnumChatFormatting.RESET); } - if(joinedIc2Enet) - tList.add("Joined IC2 ENet"); + if (joinedIc2Enet) tList.add("Joined IC2 ENet"); addDebugInfo(aPlayer, aLogLevel, tList); @@ -967,33 +1093,48 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements /** * Fluid - A Default implementation of the Fluid Tank behaviour, so that every TileEntity can use this to simplify its Code. */ - protected IFluidTank getFluidTankFillable(byte aSide, FluidStack aFluidToFill) {return null;} - protected IFluidTank getFluidTankDrainable(byte aSide, FluidStack aFluidToDrain) {return null;} - protected IFluidTank[] getFluidTanks(byte aSide) { return GT_Values.emptyFluidTank; } + protected IFluidTank getFluidTankFillable(byte aSide, FluidStack aFluidToFill) { + return null; + } - public boolean isLiquidInput(byte aSide) {return true;} + protected IFluidTank getFluidTankDrainable(byte aSide, FluidStack aFluidToDrain) { + return null; + } - public boolean isLiquidOutput(byte aSide) {return true;} + protected IFluidTank[] getFluidTanks(byte aSide) { + return GT_Values.emptyFluidTank; + } + + public boolean isLiquidInput(byte aSide) { + return true; + } + + public boolean isLiquidOutput(byte aSide) { + return true; + } @Override public int fill(ForgeDirection aDirection, FluidStack aFluid, boolean aDoFill) { if (aFluid == null || aFluid.amount <= 0) return 0; - final IFluidTank tTank = getFluidTankFillable((byte)aDirection.ordinal(), aFluid); + final IFluidTank tTank = getFluidTankFillable((byte) aDirection.ordinal(), aFluid); return (tTank == null) ? 0 : tTank.fill(aFluid, aDoFill); } @Override public FluidStack drain(ForgeDirection aDirection, FluidStack aFluid, boolean aDoDrain) { if (aFluid == null || aFluid.amount <= 0) return null; - final IFluidTank tTank = getFluidTankDrainable((byte)aDirection.ordinal(), aFluid); - if (tTank == null || tTank.getFluid() == null || tTank.getFluidAmount() == 0 || !tTank.getFluid().isFluidEqual(aFluid)) return null; + final IFluidTank tTank = getFluidTankDrainable((byte) aDirection.ordinal(), aFluid); + if (tTank == null + || tTank.getFluid() == null + || tTank.getFluidAmount() == 0 + || !tTank.getFluid().isFluidEqual(aFluid)) return null; return tTank.drain(aFluid.amount, aDoDrain); } @Override public FluidStack drain(ForgeDirection aDirection, int aAmountToDrain, boolean aDoDrain) { if (aAmountToDrain <= 0) return null; - final IFluidTank tTank = getFluidTankDrainable((byte)aDirection.ordinal(), null); + final IFluidTank tTank = getFluidTankDrainable((byte) aDirection.ordinal(), null); if (tTank == null || tTank.getFluid() == null || tTank.getFluidAmount() == 0) return null; return tTank.drain(aAmountToDrain, aDoDrain); } @@ -1001,20 +1142,20 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements @Override public boolean canFill(ForgeDirection aDirection, Fluid aFluid) { if (aFluid == null) return false; - final IFluidTank tTank = getFluidTankFillable((byte)aDirection.ordinal(), new FluidStack(aFluid, 0)); + final IFluidTank tTank = getFluidTankFillable((byte) aDirection.ordinal(), new FluidStack(aFluid, 0)); return tTank != null && (tTank.getFluid() == null || tTank.getFluid().getFluid() == aFluid); } @Override public boolean canDrain(ForgeDirection aDirection, Fluid aFluid) { if (aFluid == null) return false; - final IFluidTank tTank = getFluidTankDrainable((byte)aDirection.ordinal(), new FluidStack(aFluid, 0)); + final IFluidTank tTank = getFluidTankDrainable((byte) aDirection.ordinal(), new FluidStack(aFluid, 0)); return tTank != null && (tTank.getFluid() != null && tTank.getFluid().getFluid() == aFluid); } @Override public FluidTankInfo[] getTankInfo(ForgeDirection aDirection) { - final IFluidTank[] tTanks = getFluidTanks((byte)aDirection.ordinal()); + final IFluidTank[] tTanks = getFluidTanks((byte) aDirection.ordinal()); if (tTanks == null || tTanks.length <= 0) return GT_Values.emptyFluidTankInfo; final FluidTankInfo[] rInfo = new FluidTankInfo[tTanks.length]; for (int i = 0; i < tTanks.length; i++) rInfo[i] = new FluidTankInfo(tTanks[i]); @@ -1024,69 +1165,210 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements /** * Energy - Do nothing by Default */ - @Override public boolean isUniversalEnergyStored(long aEnergyAmount) { return false; } - @Override public long getUniversalEnergyStored() { return 0; } - @Override public long getUniversalEnergyCapacity() { return 0; } - @Override public long getOutputAmperage() { return 0; } - @Override public long getOutputVoltage() { return 0; } - @Override public long getInputAmperage() { return 0; } - @Override public long getInputVoltage() { return 0; } - @Override public boolean decreaseStoredEnergyUnits(long aEnergy, boolean aIgnoreTooLessEnergy) { return false; } - @Override public boolean increaseStoredEnergyUnits(long aEnergy, boolean aIgnoreTooMuchEnergy) { return false; } - @Override public boolean drainEnergyUnits(byte aSide, long aVoltage, long aAmperage) { return false; } - @Override public long getAverageElectricInput() { return 0; } - @Override public long getAverageElectricOutput() { return 0; } - @Override public long getStoredEU() { return 0; } - @Override public long getEUCapacity() { return 0; } - @Override public long injectEnergyUnits(byte aSide, long aVoltage, long aAmperage) { return 0; } - @Override public boolean inputEnergyFrom(byte aSide) { return false; } - @Override public boolean outputsEnergyTo(byte aSide) { return false; } + @Override + public boolean isUniversalEnergyStored(long aEnergyAmount) { + return false; + } + + @Override + public long getUniversalEnergyStored() { + return 0; + } + + @Override + public long getUniversalEnergyCapacity() { + return 0; + } + + @Override + public long getOutputAmperage() { + return 0; + } + + @Override + public long getOutputVoltage() { + return 0; + } + + @Override + public long getInputAmperage() { + return 0; + } + + @Override + public long getInputVoltage() { + return 0; + } + + @Override + public boolean decreaseStoredEnergyUnits(long aEnergy, boolean aIgnoreTooLessEnergy) { + return false; + } + + @Override + public boolean increaseStoredEnergyUnits(long aEnergy, boolean aIgnoreTooMuchEnergy) { + return false; + } + + @Override + public boolean drainEnergyUnits(byte aSide, long aVoltage, long aAmperage) { + return false; + } + + @Override + public long getAverageElectricInput() { + return 0; + } + + @Override + public long getAverageElectricOutput() { + return 0; + } + + @Override + public long getStoredEU() { + return 0; + } + + @Override + public long getEUCapacity() { + return 0; + } + + @Override + public long injectEnergyUnits(byte aSide, long aVoltage, long aAmperage) { + return 0; + } + + @Override + public boolean inputEnergyFrom(byte aSide) { + return false; + } + + @Override + public boolean outputsEnergyTo(byte aSide) { + return false; + } /** * Inventory - Do nothing by default */ - @Override public void openInventory() { /* Do nothing */ } - @Override public void closeInventory() { /* Do nothing */ } - @Override public boolean hasInventoryBeenModified() { return false; } - @Override public boolean isValidSlot(int aIndex) { return false; } - @Override public boolean addStackToSlot(int aIndex, ItemStack aStack) { return false; } - @Override public boolean addStackToSlot(int aIndex, ItemStack aStack, int aAmount) { return false; } - @Override public int[] getAccessibleSlotsFromSide(int aSide) { return GT_Values.emptyIntArray; } - @Override public boolean canInsertItem(int aSlot, ItemStack aStack, int aSide) { return false; } - @Override public boolean canExtractItem(int aSlot, ItemStack aStack, int aSide) { return false; } - @Override public int getSizeInventory() { return 0; } - @Override public ItemStack getStackInSlot(int aSlot) { return null; } - @Override public ItemStack decrStackSize(int aSlot, int aDecrement) { return null; } - @Override public ItemStack getStackInSlotOnClosing(int aSlot) { return null; } - @Override public void setInventorySlotContents(int aSlot, ItemStack aStack) { /* Do nothing */ } - @Override public int getInventoryStackLimit() { return 0; } - @Override public boolean isItemValidForSlot(int aSlot, ItemStack aStack) { return false; } - @Override public void markInventoryBeenModified() { mInventoryChanged = true; } + @Override + public void openInventory() { + /* Do nothing */ + } + @Override + public void closeInventory() { + /* Do nothing */ + } + + @Override + public boolean hasInventoryBeenModified() { + return false; + } + + @Override + public boolean isValidSlot(int aIndex) { + return false; + } + + @Override + public boolean addStackToSlot(int aIndex, ItemStack aStack) { + return false; + } + + @Override + public boolean addStackToSlot(int aIndex, ItemStack aStack, int aAmount) { + return false; + } + + @Override + public int[] getAccessibleSlotsFromSide(int aSide) { + return GT_Values.emptyIntArray; + } + + @Override + public boolean canInsertItem(int aSlot, ItemStack aStack, int aSide) { + return false; + } + + @Override + public boolean canExtractItem(int aSlot, ItemStack aStack, int aSide) { + return false; + } + + @Override + public int getSizeInventory() { + return 0; + } + + @Override + public ItemStack getStackInSlot(int aSlot) { + return null; + } + + @Override + public ItemStack decrStackSize(int aSlot, int aDecrement) { + return null; + } + + @Override + public ItemStack getStackInSlotOnClosing(int aSlot) { + return null; + } + + @Override + public void setInventorySlotContents(int aSlot, ItemStack aStack) { + /* Do nothing */ + } + + @Override + public int getInventoryStackLimit() { + return 0; + } + + @Override + public boolean isItemValidForSlot(int aSlot, ItemStack aStack) { + return false; + } + + @Override + public void markInventoryBeenModified() { + mInventoryChanged = true; + } /* * Cover Helpers */ public boolean coverLetsFluidIn(byte aSide, Fluid aFluid) { - return getCoverBehaviorAtSideNew(aSide).letsFluidIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aFluid, this); + return getCoverBehaviorAtSideNew(aSide) + .letsFluidIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aFluid, this); } + public boolean coverLetsFluidOut(byte aSide, Fluid aFluid) { - return getCoverBehaviorAtSideNew(aSide).letsFluidOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aFluid, this); + return getCoverBehaviorAtSideNew(aSide) + .letsFluidOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aFluid, this); } public boolean coverLetsEnergyIn(byte aSide) { - return getCoverBehaviorAtSideNew(aSide).letsEnergyIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this); + return getCoverBehaviorAtSideNew(aSide) + .letsEnergyIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this); } + public boolean coverLetsEnergyOut(byte aSide) { - return getCoverBehaviorAtSideNew(aSide).letsEnergyOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this); + return getCoverBehaviorAtSideNew(aSide) + .letsEnergyOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this); } public boolean coverLetsItemsIn(byte aSide, int aSlot) { - return getCoverBehaviorAtSideNew(aSide).letsItemsIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aSlot, this); + return getCoverBehaviorAtSideNew(aSide) + .letsItemsIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aSlot, this); } + public boolean coverLetsItemsOut(byte aSide, int aSlot) { - return getCoverBehaviorAtSideNew(aSide).letsItemsOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aSlot,this); + return getCoverBehaviorAtSideNew(aSide) + .letsItemsOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), aSlot, this); } - } diff --git a/src/main/java/gregtech/api/multitileentity/base/BaseNontickableMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/BaseNontickableMultiTileEntity.java index 2e689a6bae..bc6f2439ea 100644 --- a/src/main/java/gregtech/api/multitileentity/base/BaseNontickableMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/BaseNontickableMultiTileEntity.java @@ -1,20 +1,22 @@ package gregtech.api.multitileentity.base; + +import static gregtech.api.enums.GT_Values.NW; + import gregtech.api.net.GT_Packet_SendCoverData; import gregtech.api.util.ISerializableObject; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.Packet; -import static gregtech.api.enums.GT_Values.NW; - public abstract class BaseNontickableMultiTileEntity extends BaseMultiTileEntity { boolean mConstructed = false; // Keeps track of whether this TE has been constructed and placed in the world + public BaseNontickableMultiTileEntity() { super(false); } @Override public void issueClientUpdate() { - if(worldObj != null && !worldObj.isRemote) sendClientData(null); + if (worldObj != null && !worldObj.isRemote) sendClientData(null); } @Override @@ -30,26 +32,26 @@ public abstract class BaseNontickableMultiTileEntity extends BaseMultiTileEntity @Override public void issueCoverUpdate(byte aSide) { - if(!mConstructed) { + if (!mConstructed) { // Queue these up and send them with the description packet super.issueCoverUpdate(aSide); } else { // Otherwise, send the data right away NW.sendPacketToAllPlayersInRange( - worldObj, - new GT_Packet_SendCoverData(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this), - xCoord, zCoord - ); + worldObj, + new GT_Packet_SendCoverData(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this), + xCoord, + zCoord); // Just in case mCoverNeedUpdate[aSide] = false; } } @Override - public void receiveCoverData(byte aCoverSide, int aCoverID, ISerializableObject aCoverData, EntityPlayerMP aPlayer) { + public void receiveCoverData( + byte aCoverSide, int aCoverID, ISerializableObject aCoverData, EntityPlayerMP aPlayer) { super.receiveCoverData(aCoverSide, aCoverID, aCoverData, aPlayer); // We don't get ticked so issue the texture update right away issueTextureUpdate(); } - } diff --git a/src/main/java/gregtech/api/multitileentity/base/BaseTickableMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/BaseTickableMultiTileEntity.java index c8bc04557f..4945fbc62e 100644 --- a/src/main/java/gregtech/api/multitileentity/base/BaseTickableMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/BaseTickableMultiTileEntity.java @@ -1,5 +1,7 @@ package gregtech.api.multitileentity.base; +import static gregtech.GT_Mod.GT_FML_LOGGER; + import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_OnNeighborBlockChange; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Util; @@ -7,8 +9,6 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; -import static gregtech.GT_Mod.GT_FML_LOGGER; - public abstract class BaseTickableMultiTileEntity extends BaseMultiTileEntity implements IMTE_OnNeighborBlockChange { /** Variable for seeing if the Tick Function is called right now. */ public boolean mIsRunningTick = false; @@ -19,7 +19,6 @@ public abstract class BaseTickableMultiTileEntity extends BaseMultiTileEntity im /** Variable for updating Data to the Client */ private boolean mSendClientData = false; - public BaseTickableMultiTileEntity() { super(true); } @@ -42,7 +41,7 @@ public abstract class BaseTickableMultiTileEntity extends BaseMultiTileEntity im if (!isServerSide) { if (mNeedsUpdate) { worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - //worldObj.func_147479_m(xCoord, yCoord, zCoord); + // worldObj.func_147479_m(xCoord, yCoord, zCoord); mNeedsUpdate = false; } } @@ -84,16 +83,24 @@ public abstract class BaseTickableMultiTileEntity extends BaseMultiTileEntity im } /** The first part of the Tick. */ - public void onPreTick(long aTick, boolean isServerSide) { /*Do nothing*/ } + public void onPreTick(long aTick, boolean isServerSide) { + /*Do nothing*/ + } /** The regular Tick. */ - public void onTick(long aTimer, boolean isServerSide) { /*Do nothing*/ } + public void onTick(long aTimer, boolean isServerSide) { + /*Do nothing*/ + } /** The absolute last part of the Tick. */ - public void onPostTick(long aTick, boolean isServerSide) { /*Do nothing*/ } + public void onPostTick(long aTick, boolean isServerSide) { + /*Do nothing*/ + } /** Gets called when there is an Exception happening during one of the Tick Functions. */ - public void onTickFailed(long aTimer, boolean isServerSide) { /*Do nothing*/ } + public void onTickFailed(long aTimer, boolean isServerSide) { + /*Do nothing*/ + } @Override public void onNeighborBlockChange(World aWorld, Block aBlock) { @@ -109,5 +116,4 @@ public abstract class BaseTickableMultiTileEntity extends BaseMultiTileEntity im public byte getComparatorValue(byte aSide) { return 0; } - } diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java index 95b369847f..74d1252eeb 100644 --- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java +++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java @@ -3,17 +3,19 @@ package gregtech.api.multitileentity.interfaces; import net.minecraft.util.ChunkCoordinates; import net.minecraftforge.fluids.FluidStack; -public interface IMultiBlockController extends IMultiTileEntity, IMultiBlockFluidHandler, IMultiBlockInventory, IMultiBlockEnergy { +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(); + @Override + ChunkCoordinates getCoords(); FluidStack getDrainableFluid(byte aSide); boolean isLiquidInput(byte aSide); - boolean isLiquidOutput(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 index 3e9892d3bd..4ffd725df5 100644 --- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java +++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java @@ -3,21 +3,37 @@ 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); + 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 index 4935ad49ab..e5d2e4f691 100644 --- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockFluidHandler.java +++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockFluidHandler.java @@ -7,10 +7,15 @@ 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); + 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 index 4df5a11cc0..7e3777fe90 100644 --- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockInventory.java +++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockInventory.java @@ -5,24 +5,43 @@ 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); + 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); } diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java index d601d8abd2..f5278d47b4 100644 --- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiTileEntity.java @@ -1,5 +1,7 @@ package gregtech.api.multitileentity.interfaces; +import static gregtech.api.enums.GT_Values.MOD_ID_APC; + import cpw.mods.fml.common.Optional; import gregtech.api.interfaces.tileentity.IBasicEnergyContainer; import gregtech.api.interfaces.tileentity.ICoverable; @@ -12,6 +14,9 @@ import gregtech.api.interfaces.tileentity.ITurnable; import gregtech.api.multitileentity.MultiTileEntityBlockInternal; import gregtech.api.multitileentity.MultiTileEntityItemInternal; import gregtech.api.multitileentity.MultiTileEntityRegistry; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -26,18 +31,22 @@ import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.fluids.IFluidHandler; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import static gregtech.api.enums.GT_Values.MOD_ID_APC; - /* * Heavily inspired by GT6 */ -public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, ITurnable, IHasInventory, IEnergyConnected, IBasicEnergyContainer, IFluidHandler, ITexturedTileEntity, IDebugableTileEntity { +public interface IMultiTileEntity + extends IHasWorldObjectAndCoords, + ICoverable, + ITurnable, + IHasInventory, + IEnergyConnected, + IBasicEnergyContainer, + IFluidHandler, + ITexturedTileEntity, + IDebugableTileEntity { /** Those two IDs HAVE to be saved inside the NBT of the TileEntity itself. They get set by the Registry itself, when the TileEntity is placed. */ short getMultiTileEntityID(); + short getMultiTileEntityRegistryID(); /** Called by the Registry with the default NBT Parameters and the two IDs you have to save, when the TileEntity is created. aNBT may be null, take that into account if you decide to call the regular readFromNBT Function from here. */ void initFromNBT(NBTTagCompound aNBT, short aMTEID, short aMTERegistry); @@ -45,6 +54,7 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, NBTTagCompound writeItemNBT(NBTTagCompound aNBT); /** Sets the Item Display Name. Use null to reset it. */ void setCustomName(String aName); + String getCustomName(); /** return the internal Name of this TileEntity to be registered. */ @@ -61,21 +71,29 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, boolean isDead(); void loadTextureNBT(NBTTagCompound aNBT); + void copyTextures(); void issueClientUpdate(); - void sendClientData( EntityPlayerMP aPlayer); + + void sendClientData(EntityPlayerMP aPlayer); + boolean receiveClientEvent(int aEventID, int aValue); void setShouldRefresh(boolean aShouldRefresh); void addCollisionBoxesToList(AxisAlignedBB aAABB, List<AxisAlignedBB> aList, Entity aEntity); + AxisAlignedBB getCollisionBoundingBoxFromPool(); + AxisAlignedBB getSelectedBoundingBoxFromPool(); + void setBlockBoundsBasedOnState(Block aBlock); void onBlockAdded(); + boolean playerOwnsThis(EntityPlayer aPlayer, boolean aCheckPrecicely); + boolean privateAccess(); /** @return the amount of Time this TileEntity has been loaded. */ @@ -104,8 +122,11 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, * Paintable Support */ boolean unpaint(); + boolean isPainted(); + boolean paint(int aRGB); + int getPaint(); /** @@ -113,19 +134,28 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, * @return Whether the facing was changed */ boolean setMainFacing(byte aSide); + boolean isFacingValid(byte aFacing); - void onFacingChange(); - @Override default void setFrontFacing(byte aSide) { setMainFacing(aSide); } + void onFacingChange(); + @Override + default void setFrontFacing(byte aSide) { + setMainFacing(aSide); + } boolean shouldTriggerBlockUpdate(); + void onMachineBlockUpdate(); boolean allowInteraction(Entity aEntity); - default void onLeftClick(EntityPlayer aPlayer) { /* do nothing */ } + + default void onLeftClick(EntityPlayer aPlayer) { + /* do nothing */ + } boolean onBlockActivated(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ); + boolean onRightClick(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ); ArrayList<ItemStack> getDrops(int aFortune, boolean aSilkTouch); @@ -133,13 +163,16 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, boolean isSideSolid(byte aSide); float getExplosionResistance(Entity aExploder, double aExplosionX, double aExplosionY, double aExplosionZ); + float getExplosionResistance(); + void onExploded(Explosion aExplosion); boolean recolourBlock(byte aSide, byte aColor); /** Adds to the Creative Tab. return false to prevent it from being added. */ - boolean getSubItems(MultiTileEntityBlockInternal aBlock, Item aItem, CreativeTabs aTab, List<ItemStack> aList, short aID); + boolean getSubItems( + MultiTileEntityBlockInternal aBlock, Item aItem, CreativeTabs aTab, List<ItemStack> aList, short aID); ItemStack getPickBlock(MovingObjectPosition aTarget); @@ -147,9 +180,19 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, boolean isSurfaceOpaque(byte aSide); - boolean onPlaced(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, byte aSide, float aHitX, float aHitY, float aHitZ); + boolean onPlaced( + ItemStack aStack, + EntityPlayer aPlayer, + World aWorld, + int aX, + int aY, + int aZ, + byte aSide, + float aHitX, + float aHitY, + float aHitZ); -// ItemStack getPickBlock(MovingObjectPosition aTarget); + // ItemStack getPickBlock(MovingObjectPosition aTarget); /* * Various Sub Interfaces from GT6 @@ -177,7 +220,6 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, boolean getWeakChanges(); } - interface IMTE_GetComparatorInputOverride extends IMultiTileEntity { int getComparatorInputOverride(byte aSide); } @@ -208,15 +250,34 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, interface IMTE_IgnoreEntityCollisionWhenPlacing extends IMultiTileEntity { /** Return true to ignore the Player standing in the way of placing this Block; useful for things like pipes/wires. */ - boolean ignoreEntityCollisionWhenPlacing(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, byte aSide, float aHitX, float aHitY, float aHitZ); + boolean ignoreEntityCollisionWhenPlacing( + ItemStack aStack, + EntityPlayer aPlayer, + World aWorld, + int aX, + int aY, + int aZ, + byte aSide, + float aHitX, + float aHitY, + float aHitZ); } interface IMTE_CanPlace extends IMultiTileEntity { /** Return false if this TileEntity cannot be placed at that Location. */ - boolean canPlace(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, byte aSide, float aHitX, float aHitY, float aHitZ); + boolean canPlace( + ItemStack aStack, + EntityPlayer aPlayer, + World aWorld, + int aX, + int aY, + int aZ, + byte aSide, + float aHitX, + float aHitY, + float aHitZ); } - interface IMTE_GetMaxStackSize extends IMultiTileEntity { /** Gets the Max Stacksize of this Item. */ byte getMaxStackSize(ItemStack aStack, byte aDefault); @@ -226,5 +287,4 @@ public interface IMultiTileEntity extends IHasWorldObjectAndCoords, ICoverable, /** Adds ToolTips to the Item. */ void addToolTips(List<String> aList, ItemStack aStack, boolean aF3_H); } - } diff --git a/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java b/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java index 9fcbaa235f..767026b286 100644 --- a/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java +++ b/src/main/java/gregtech/api/multitileentity/machine/MultiTileBasicMachine.java @@ -1,5 +1,8 @@ package gregtech.api.multitileentity.machine; +import static com.google.common.primitives.Ints.saturatedCast; +import static gregtech.api.enums.GT_Values.emptyIconContainerArray; + import gregtech.api.enums.GT_Values; import gregtech.api.enums.GT_Values.NBT; import gregtech.api.enums.Textures; @@ -8,7 +11,6 @@ import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.ITexture; import gregtech.api.multitileentity.MultiTileEntityRegistry; import gregtech.api.multitileentity.base.BaseTickableMultiTileEntity; -import gregtech.api.multitileentity.multiblock.base.MultiBlockPart; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Util; import gregtech.api.util.GT_Utility; @@ -21,10 +23,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidTank; -import static com.google.common.primitives.Ints.saturatedCast; -import static gregtech.api.enums.GT_Values.emptyIconContainerArray; - -public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { +public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { private static final String TEXTURE_LOCATION = "multitileentity/machines/"; public IIconContainer[] mTexturesInactive = emptyIconContainerArray; public IIconContainer[] mTexturesActive = emptyIconContainerArray; @@ -43,14 +42,13 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { return "gt.multitileentity.machine.basic"; } - @Override public void writeMultiTileNBT(NBTTagCompound aNBT) { super.writeMultiTileNBT(aNBT); if (mParallel > 0) aNBT.setInteger(NBT.PARALLEL, mParallel); if (mActive) aNBT.setBoolean(NBT.ACTIVE, mActive); - } + @Override public void readMultiTileNBT(NBTTagCompound aNBT) { super.readMultiTileNBT(aNBT); @@ -58,7 +56,7 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { if (aNBT.hasKey(NBT.ACTIVE)) mActive = aNBT.getBoolean(NBT.ACTIVE); mInventory = getDefaultInventory(aNBT); - if(mInventory != null) { + if (mInventory != null) { final NBTTagList tList = aNBT.getTagList(NBT.INV_LIST, 10); for (int i = 0; i < tList.tagCount(); i++) { final NBTTagCompound tNBT = tList.getCompoundTagAt(i); @@ -75,19 +73,25 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { mOutputFluids = new FluidStack[getFluidOutputCount()]; mOutputItems = new ItemStack[getItemOutputCount()]; - // TODO: See if we need the adjustable map here `.setCapacity(mRecipes, mParallel * 2L)` in place of the `setCapacityMultiplier` - for (int i = 0; i < mTanksInput.length; i++) mTanksInput[i] = new FluidTankGT(tCapacity).setCapacityMultiplier(mParallel * 2L).readFromNBT(aNBT, NBT.TANK_IN + i); - for (int i = 0; i < mTanksOutput.length; i++) mTanksOutput[i] = new FluidTankGT().readFromNBT(aNBT, NBT.TANK_OUT + i); - for (int i = 0; i < mOutputFluids.length; i++) mOutputFluids[i] = FluidStack.loadFluidStackFromNBT(aNBT.getCompoundTag(NBT.FLUID_OUT + "." + i)); - for (int i = 0; i < mOutputItems.length; i++) mOutputItems[i] = ItemStack.loadItemStackFromNBT(aNBT.getCompoundTag(NBT.INV_OUT + "." + i)); - + // TODO: See if we need the adjustable map here `.setCapacity(mRecipes, mParallel * 2L)` in place of the + // `setCapacityMultiplier` + for (int i = 0; i < mTanksInput.length; i++) + mTanksInput[i] = new FluidTankGT(tCapacity) + .setCapacityMultiplier(mParallel * 2L) + .readFromNBT(aNBT, NBT.TANK_IN + i); + for (int i = 0; i < mTanksOutput.length; i++) + mTanksOutput[i] = new FluidTankGT().readFromNBT(aNBT, NBT.TANK_OUT + i); + for (int i = 0; i < mOutputFluids.length; i++) + mOutputFluids[i] = FluidStack.loadFluidStackFromNBT(aNBT.getCompoundTag(NBT.FLUID_OUT + "." + i)); + for (int i = 0; i < mOutputItems.length; i++) + mOutputItems[i] = ItemStack.loadItemStackFromNBT(aNBT.getCompoundTag(NBT.INV_OUT + "." + i)); } @Override public void loadTextureNBT(NBTTagCompound aNBT) { // Loading the registry final String textureName = aNBT.getString(NBT.TEXTURE); - mTextures = new IIconContainer[]{ + mTextures = new IIconContainer[] { new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/bottom"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/top"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/left"), @@ -95,7 +99,7 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/right"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/side") }; - mTexturesInactive = new IIconContainer[]{ + mTexturesInactive = new IIconContainer[] { new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/inactive/bottom"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/inactive/top"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/inactive/left"), @@ -103,7 +107,7 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/inactive/right"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/inactive/back") }; - mTexturesActive = new IIconContainer[]{ + mTexturesActive = new IIconContainer[] { new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/active/bottom"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/active/top"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/active/left"), @@ -111,38 +115,35 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/active/right"), new Textures.BlockIcons.CustomIcon(TEXTURE_LOCATION + textureName + "/overlay/active/back") }; - } @Override public void copyTextures() { // Loading an instance - final TileEntity tCanonicalTileEntity = MultiTileEntityRegistry.getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID()); - if(tCanonicalTileEntity instanceof MultiTileBasicMachine){ - mTextures = ((MultiTileBasicMachine)tCanonicalTileEntity).mTextures; - mTexturesInactive = ((MultiTileBasicMachine)tCanonicalTileEntity).mTexturesInactive; - mTexturesActive = ((MultiTileBasicMachine)tCanonicalTileEntity).mTexturesActive; + final TileEntity tCanonicalTileEntity = + MultiTileEntityRegistry.getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID()); + if (tCanonicalTileEntity instanceof MultiTileBasicMachine) { + mTextures = ((MultiTileBasicMachine) tCanonicalTileEntity).mTextures; + mTexturesInactive = ((MultiTileBasicMachine) tCanonicalTileEntity).mTexturesInactive; + mTexturesActive = ((MultiTileBasicMachine) tCanonicalTileEntity).mTexturesActive; } else { mTextures = mTexturesInactive = mTexturesActive = emptyIconContainerArray; } } - - @Override public ITexture[] getTexture(Block aBlock, byte aSide, boolean isActive, int aRenderPass) { - return new ITexture[]{ + return new ITexture[] { TextureFactory.of(mTextures[GT_Values.FACING_ROTATIONS[mFacing][aSide]], GT_Util.getRGBaArray(mRGBa)), - TextureFactory.of((mActive ? mTexturesActive : mTexturesInactive)[GT_Values.FACING_ROTATIONS[mFacing][aSide]]) + TextureFactory.of( + (mActive ? mTexturesActive : mTexturesInactive)[GT_Values.FACING_ROTATIONS[mFacing][aSide]]) }; } - /* * Fluids */ - /** * The number of fluid (input) slots available for this machine */ @@ -162,29 +163,26 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { return tSize > 0 ? new ItemStack[tSize] : GT_Values.emptyItemStackArray; } - @Override - public void setLightValue(byte aLightValue) { - - } + public void setLightValue(byte aLightValue) {} @Override public String getInventoryName() { final String name = getCustomName(); - if(name != null) return name; + if (name != null) return name; final MultiTileEntityRegistry tRegistry = MultiTileEntityRegistry.getRegistry(getMultiTileEntityRegistryID()); return tRegistry == null ? getClass().getName() : tRegistry.getLocal(getMultiTileEntityID()); } - @Override public boolean isUseableByPlayer(EntityPlayer aPlayer) { - return playerOwnsThis(aPlayer, false) && mTickTimer > 40 && - getTileEntityOffset(0, 0, 0) == this && - aPlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64 && allowInteraction(aPlayer); + return playerOwnsThis(aPlayer, false) + && mTickTimer > 40 + && getTileEntityOffset(0, 0, 0) == this + && aPlayer.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 64 + && allowInteraction(aPlayer); } - @Override public boolean isLiquidInput(byte aSide) { return aSide != mFacing; @@ -195,20 +193,19 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { return aSide != mFacing; } - @Override protected IFluidTank[] getFluidTanks(byte aSide) { final boolean fluidInput = isLiquidInput(aSide); final boolean fluidOutput = isLiquidOutput(aSide); - if(fluidInput && fluidOutput) { - final IFluidTank[] rTanks = new IFluidTank[ mTanksInput.length + mTanksOutput.length]; + if (fluidInput && fluidOutput) { + final IFluidTank[] rTanks = new IFluidTank[mTanksInput.length + mTanksOutput.length]; System.arraycopy(mTanksInput, 0, rTanks, 0, mTanksInput.length); System.arraycopy(mTanksOutput, 0, rTanks, mTanksInput.length, mTanksOutput.length); return rTanks; - } else if(fluidInput) { + } else if (fluidInput) { return mTanksInput; - } else if(fluidOutput) { + } else if (fluidOutput) { return mTanksOutput; } return GT_Values.emptyFluidTank; @@ -216,19 +213,19 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { @Override public IFluidTank getFluidTankFillable(byte aSide, FluidStack aFluidToFill) { - if(!isLiquidInput(aSide)) return null; + if (!isLiquidInput(aSide)) return null; for (FluidTankGT tankGT : mTanksInput) if (tankGT.contains(aFluidToFill)) return tankGT; -// if (!mRecipes.containsInput(aFluidToFill, this, slot(mRecipes.mInputItemsCount + mRecipes.mOutputItemsCount))) return null; + // if (!mRecipes.containsInput(aFluidToFill, this, slot(mRecipes.mInputItemsCount + + // mRecipes.mOutputItemsCount))) return null; for (FluidTankGT fluidTankGT : mTanksInput) if (fluidTankGT.isEmpty()) return fluidTankGT; return null; } @Override protected IFluidTank getFluidTankDrainable(byte aSide, FluidStack aFluidToDrain) { - if(!isLiquidOutput(aSide)) return null; + if (!isLiquidOutput(aSide)) return null; for (FluidTankGT fluidTankGT : mTanksOutput) - if (aFluidToDrain == null ? fluidTankGT.has() : fluidTankGT.contains(aFluidToDrain)) - return fluidTankGT; + if (aFluidToDrain == null ? fluidTankGT.has() : fluidTankGT.contains(aFluidToDrain)) return fluidTankGT; return null; } @@ -282,7 +279,6 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { return 1; } - public boolean isEnergyInputSide(byte aSide) { return true; } @@ -295,8 +291,9 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { public boolean inputEnergyFrom(byte aSide) { if (aSide == GT_Values.SIDE_UNKNOWN) return true; if (aSide >= 0 && aSide < 6) { - if(isInvalid()) return false; - if (!getCoverBehaviorAtSideNew(aSide).letsEnergyIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) return false; + if (isInvalid()) return false; + if (!getCoverBehaviorAtSideNew(aSide) + .letsEnergyIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) return false; if (isEnetInput()) return isEnergyInputSide(aSide); } return false; @@ -307,7 +304,9 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { if (aSide == GT_Values.SIDE_UNKNOWN) return true; if (aSide >= 0 && aSide < 6) { if (isInvalid()) return false; - if (!getCoverBehaviorAtSideNew(aSide).letsEnergyOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) return false; + if (!getCoverBehaviorAtSideNew(aSide) + .letsEnergyOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) + return false; if (isEnetOutput()) return isEnergyOutputSide(aSide); } return false; @@ -317,7 +316,8 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { * Inventory */ - @Override public boolean hasInventoryBeenModified() { + @Override + public boolean hasInventoryBeenModified() { return mInventoryChanged; } @@ -344,5 +344,4 @@ public class MultiTileBasicMachine extends BaseTickableMultiTileEntity { public int getItemOutputCount() { return 2; } - } diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockController.java b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockController.java index afd8f9577f..bb01f0b4fa 100644 --- a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockController.java +++ b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockController.java @@ -1,5 +1,8 @@ package gregtech.api.multitileentity.multiblock.base; +import static gregtech.GT_Mod.GT_FML_LOGGER; +import static gregtech.api.enums.GT_Values.NBT; + import com.gtnewhorizon.structurelib.StructureLibAPI; import com.gtnewhorizon.structurelib.alignment.IAlignment; import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits; @@ -29,12 +32,16 @@ import gregtech.api.multitileentity.machine.MultiTileBasicMachine; import gregtech.api.objects.GT_ItemStack; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; -import net.minecraft.util.Tuple; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; @@ -45,26 +52,23 @@ import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.input.Keyboard; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import static gregtech.GT_Mod.GT_FML_LOGGER; -import static gregtech.api.enums.GT_Values.NBT; - public abstract class MultiBlockController<T extends MultiBlockController<T>> extends MultiTileBasicMachine - implements IAlignment, IConstructable, IMultiBlockController, IDescribable, IMachineProgress, IMultiBlockFluidHandler, IMultiBlockInventory, IMTE_AddToolTips -{ + implements IAlignment, + IConstructable, + IMultiBlockController, + IDescribable, + IMachineProgress, + IMultiBlockFluidHandler, + IMultiBlockInventory, + IMTE_AddToolTips { private static final Map<Integer, GT_Multiblock_Tooltip_Builder> tooltip = new ConcurrentHashMap<>(); protected BuildState buildState = new BuildState(); - // The 0th slot is the default inventory of the MultiBlock; any other has been added by an Inventory Extender of sorts + // The 0th slot is the default inventory of the MultiBlock; any other has been added by an Inventory Extender of + // sorts protected List<ItemStack[]> multiBlockInventory = new ArrayList<>(); - private int mMaxProgresstime = 0, mProgresstime = 0; private boolean mStructureOkay = false, mStructureChanged = false; private boolean mWorks = true, mWorkUpdate = false, mWasShutdown = false, mActive = false; @@ -76,7 +80,6 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex /** Meta ID of the required casing */ public abstract short getCasingMeta(); - /** * Create the tooltip for this multi block controller. */ @@ -106,7 +109,6 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex */ public abstract boolean checkRecipe(ItemStack aStack); - @Override public void writeMultiTileNBT(NBTTagCompound aNBT) { super.writeMultiTileNBT(aNBT); @@ -120,16 +122,16 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex public void readMultiTileNBT(NBTTagCompound aNBT) { super.readMultiTileNBT(aNBT); - // Multiblock inventories are a collection of inventories. The first inventory is the default internal inventory, + // Multiblock inventories are a collection of inventories. The first inventory is the default internal + // inventory, // and the others are added by inventory extending blocks. - if(mInventory != null) multiBlockInventory.add(mInventory); + if (mInventory != null) multiBlockInventory.add(mInventory); mStructureOkay = aNBT.getBoolean(NBT.STRUCTURE_OK); mExtendedFacing = ExtendedFacing.of( - ForgeDirection.getOrientation(getFrontFacing()), - Rotation.byIndex(aNBT.getByte(NBT.ROTATION)), - Flip.byIndex(aNBT.getByte(NBT.FLIP)) - ); + ForgeDirection.getOrientation(getFrontFacing()), + Rotation.byIndex(aNBT.getByte(NBT.ROTATION)), + Flip.byIndex(aNBT.getByte(NBT.FLIP))); } @Override @@ -157,18 +159,17 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex protected GT_Multiblock_Tooltip_Builder getTooltip() { return createTooltip(); -// final int tooltipId = getToolTipID(); -// final GT_Multiblock_Tooltip_Builder tt = tooltip.get(tooltipId); -// if (tt == null) { -// return tooltip.computeIfAbsent(tooltipId, k -> createTooltip()); -// } -// return tt; + // final int tooltipId = getToolTipID(); + // final GT_Multiblock_Tooltip_Builder tt = tooltip.get(tooltipId); + // if (tt == null) { + // return tooltip.computeIfAbsent(tooltipId, k -> createTooltip()); + // } + // return tt; } - @Override public boolean checkStructure(boolean aForceReset) { - if(!isServerSide()) return mStructureOkay; + if (!isServerSide()) return mStructureOkay; // Only trigger an update if forced (from onPostTick, generally), or if the structure has changed if ((mStructureChanged || aForceReset)) { @@ -199,21 +200,46 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex * All these offsets can be negative. */ protected final boolean checkPiece(String piece, int horizontalOffset, int verticalOffset, int depthOffset) { - return getCastedStructureDefinition().check( - this, piece, getWorld(), getExtendedFacing(), getXCoord(), getYCoord(), getZCoord(), horizontalOffset, verticalOffset, - depthOffset, !mStructureOkay - ); + return getCastedStructureDefinition() + .check( + this, + piece, + getWorld(), + getExtendedFacing(), + getXCoord(), + getYCoord(), + getZCoord(), + horizontalOffset, + verticalOffset, + depthOffset, + !mStructureOkay); } public final boolean buildPiece(String piece, ItemStack trigger, boolean hintsOnly, Vec3Impl offset) { return buildPiece(piece, trigger, hintsOnly, offset.get0(), offset.get1(), offset.get2()); } - protected final boolean buildPiece(String piece, ItemStack trigger, boolean hintOnly, int horizontalOffset, int verticalOffset, int depthOffset) { - return getCastedStructureDefinition().buildOrHints( - this, trigger, piece, getWorld(), getExtendedFacing(), getXCoord(), getYCoord(), getZCoord(), horizontalOffset, - verticalOffset, depthOffset, hintOnly - ); + protected final boolean buildPiece( + String piece, + ItemStack trigger, + boolean hintOnly, + int horizontalOffset, + int verticalOffset, + int depthOffset) { + return getCastedStructureDefinition() + .buildOrHints( + this, + trigger, + piece, + getWorld(), + getExtendedFacing(), + getXCoord(), + getYCoord(), + getZCoord(), + horizontalOffset, + verticalOffset, + depthOffset, + hintOnly); } @SuppressWarnings("unchecked") @@ -230,13 +256,14 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex public void setExtendedFacing(ExtendedFacing newExtendedFacing) { if (mExtendedFacing != newExtendedFacing) { onStructureChange(); - if (mStructureOkay) - stopMachine(); + if (mStructureOkay) stopMachine(); mExtendedFacing = newExtendedFacing; mStructureOkay = false; if (isServerSide()) { StructureLibAPI.sendAlignment( - this, new NetworkRegistry.TargetPoint(getWorld().provider.dimensionId, getXCoord(), getYCoord(), getZCoord(), 512)); + this, + new NetworkRegistry.TargetPoint( + getWorld().provider.dimensionId, getXCoord(), getYCoord(), getZCoord(), 512)); } else { issueTextureUpdate(); } @@ -244,11 +271,13 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex } @Override - public boolean onWrenchRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + public boolean onWrenchRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { if (wrenchSide != getFrontFacing()) return super.onWrenchRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); if (aPlayer.isSneaking()) { - // we won't be allowing horizontal flips, as it can be perfectly emulated by rotating twice and flipping horizontally + // we won't be allowing horizontal flips, as it can be perfectly emulated by rotating twice and flipping + // horizontally // allowing an extra round of flip make it hard to draw meaningful flip markers in GT_Proxy#drawGrid toolSetFlip(getFlip().isHorizontallyFlipped() ? Flip.NONE : Flip.HORIZONTAL); } else { @@ -260,10 +289,8 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex @Override public void onFirstTick(boolean aIsServerSide) { super.onFirstTick(aIsServerSide); - if (aIsServerSide) - checkStructure(true); - else - StructureLibAPI.queryAlignment(this); + if (aIsServerSide) checkStructure(true); + else StructureLibAPI.queryAlignment(this); } @Override @@ -325,8 +352,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex @Override public FluidStack getDrainableFluid(byte aSide) { final IFluidTank tank = getFluidTankDrainable(aSide, null); - return tank == null ? null : tank.getFluid(); - + return tank == null ? null : tank.getFluid(); } /** @@ -393,6 +419,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex * Utility class to keep track of the build state of a multiblock */ boolean building = false; + Vec3Impl currentOffset; public void startBuilding(Vec3Impl structureOffset) { @@ -437,7 +464,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex public <S> IStructureElement<S> addMultiTileCasing(int aRegistryID, int aBlockMeta, int aModes) { return new IStructureElement<S>() { - private final short[] DEFAULT = new short[]{255, 255, 255, 0}; + private final short[] DEFAULT = new short[] {255, 255, 255, 0}; private IIcon[] mIcons = null; @Override @@ -446,7 +473,8 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex if (!(tileEntity instanceof MultiBlockPart)) return false; final MultiBlockPart part = (MultiBlockPart) tileEntity; - if (aRegistryID != part.getMultiTileEntityRegistryID() || aBlockMeta != part.getMultiTileEntityID()) return false; + if (aRegistryID != part.getMultiTileEntityRegistryID() || aBlockMeta != part.getMultiTileEntityID()) + return false; final IMultiBlockController tTarget = part.getTarget(false); if (tTarget != null && tTarget != MultiBlockController.this) return false; @@ -460,27 +488,28 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex if (mIcons == null) { mIcons = new IIcon[6]; Arrays.fill(mIcons, TextureSet.SET_NONE.mTextures[OrePrefixes.block.mTextureIndex].getIcon()); -// Arrays.fill(mIcons, getTexture(aCasing); -// for (int i = 0; i < 6; i++) { -// mIcons[i] = aCasing.getIcon(i, aMeta); -// } + // Arrays.fill(mIcons, getTexture(aCasing); + // for (int i = 0; i < 6; i++) { + // mIcons[i] = aCasing.getIcon(i, aMeta); + // } } final short[] RGBA = DEFAULT; StructureLibAPI.hintParticleTinted(world, x, y, z, mIcons, RGBA); -// StructureLibAPI.hintParticle(world, x, y, z, aCasing, aMeta); + // StructureLibAPI.hintParticle(world, x, y, z, aCasing, aMeta); return true; } @Override public boolean placeBlock(S t, World world, int x, int y, int z, ItemStack trigger) { final MultiTileEntityRegistry tRegistry = MultiTileEntityRegistry.getRegistry(aRegistryID); - final MultiTileEntityContainer tContainer = tRegistry.getNewTileEntityContainer(world, x, y, z, aBlockMeta, null); - if(tContainer == null) { + final MultiTileEntityContainer tContainer = + tRegistry.getNewTileEntityContainer(world, x, y, z, aBlockMeta, null); + if (tContainer == null) { GT_FML_LOGGER.error("NULL CONTAINER"); return false; } - final IMultiTileEntity te = ((IMultiTileEntity)tContainer.mTileEntity); - if(!(te instanceof MultiBlockPart)) { + final IMultiTileEntity te = ((IMultiTileEntity) tContainer.mTileEntity); + if (!(te instanceof MultiBlockPart)) { GT_FML_LOGGER.error("Not a multiblock part"); return false; } @@ -501,15 +530,22 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex /** * Fluid - MultiBlock related Fluid Tank behaviour. */ + protected IFluidTank getFluidTankFillable(MultiBlockPart aPart, byte aSide, FluidStack aFluidToFill) { + return getFluidTankFillable(aSide, aFluidToFill); + } - protected IFluidTank getFluidTankFillable(MultiBlockPart aPart, byte aSide, FluidStack aFluidToFill) {return getFluidTankFillable(aSide, aFluidToFill);} - protected IFluidTank getFluidTankDrainable(MultiBlockPart aPart, byte aSide, FluidStack aFluidToDrain) {return getFluidTankDrainable(aSide, aFluidToDrain);} - protected IFluidTank[] getFluidTanks(MultiBlockPart aPart, byte aSide) {return getFluidTanks(aSide);} + protected IFluidTank getFluidTankDrainable(MultiBlockPart aPart, byte aSide, FluidStack aFluidToDrain) { + return getFluidTankDrainable(aSide, aFluidToDrain); + } + + protected IFluidTank[] getFluidTanks(MultiBlockPart aPart, byte aSide) { + return getFluidTanks(aSide); + } @Override public int fill(MultiBlockPart aPart, ForgeDirection aDirection, FluidStack aFluid, boolean aDoFill) { if (aFluid == null || aFluid.amount <= 0) return 0; - final IFluidTank tTank = getFluidTankFillable(aPart, (byte)aDirection.ordinal(), aFluid); + final IFluidTank tTank = getFluidTankFillable(aPart, (byte) aDirection.ordinal(), aFluid); if (tTank == null) return 0; final int rFilledAmount = tTank.fill(aFluid, aDoFill); if (rFilledAmount > 0 && aDoFill) mInventoryChanged = true; @@ -519,8 +555,11 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex @Override public FluidStack drain(MultiBlockPart aPart, ForgeDirection aDirection, FluidStack aFluid, boolean aDoDrain) { if (aFluid == null || aFluid.amount <= 0) return null; - final IFluidTank tTank = getFluidTankDrainable(aPart, (byte)aDirection.ordinal(), aFluid); - if (tTank == null || tTank.getFluid() == null || tTank.getFluidAmount() == 0 || !tTank.getFluid().isFluidEqual(aFluid)) return null; + final IFluidTank tTank = getFluidTankDrainable(aPart, (byte) aDirection.ordinal(), aFluid); + if (tTank == null + || tTank.getFluid() == null + || tTank.getFluidAmount() == 0 + || !tTank.getFluid().isFluidEqual(aFluid)) return null; final FluidStack rDrained = tTank.drain(aFluid.amount, aDoDrain); if (rDrained != null && aDoDrain) markInventoryBeenModified(); return rDrained; @@ -529,7 +568,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex @Override public FluidStack drain(MultiBlockPart aPart, ForgeDirection aDirection, int aAmountToDrain, boolean aDoDrain) { if (aAmountToDrain <= 0) return null; - final IFluidTank tTank = getFluidTankDrainable(aPart, (byte)aDirection.ordinal(), null); + final IFluidTank tTank = getFluidTankDrainable(aPart, (byte) aDirection.ordinal(), null); if (tTank == null || tTank.getFluid() == null || tTank.getFluidAmount() == 0) return null; final FluidStack rDrained = tTank.drain(aAmountToDrain, aDoDrain); if (rDrained != null && aDoDrain) markInventoryBeenModified(); @@ -539,20 +578,20 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex @Override public boolean canFill(MultiBlockPart aPart, ForgeDirection aDirection, Fluid aFluid) { if (aFluid == null) return false; - final IFluidTank tTank = getFluidTankFillable(aPart, (byte)aDirection.ordinal(), new FluidStack(aFluid, 0)); + final IFluidTank tTank = getFluidTankFillable(aPart, (byte) aDirection.ordinal(), new FluidStack(aFluid, 0)); return tTank != null && (tTank.getFluid() == null || tTank.getFluid().getFluid() == aFluid); } @Override public boolean canDrain(MultiBlockPart aPart, ForgeDirection aDirection, Fluid aFluid) { if (aFluid == null) return false; - final IFluidTank tTank = getFluidTankDrainable(aPart, (byte)aDirection.ordinal(), new FluidStack(aFluid, 0)); + final IFluidTank tTank = getFluidTankDrainable(aPart, (byte) aDirection.ordinal(), new FluidStack(aFluid, 0)); return tTank != null && (tTank.getFluid() != null && tTank.getFluid().getFluid() == aFluid); } @Override public FluidTankInfo[] getTankInfo(MultiBlockPart aPart, ForgeDirection aDirection) { - final IFluidTank[] tTanks = getFluidTanks(aPart, (byte)aDirection.ordinal()); + final IFluidTank[] tTanks = getFluidTanks(aPart, (byte) aDirection.ordinal()); if (tTanks == null || tTanks.length <= 0) return GT_Values.emptyFluidTankInfo; final FluidTankInfo[] rInfo = new FluidTankInfo[tTanks.length]; for (int i = 0; i < tTanks.length; i++) rInfo[i] = new FluidTankInfo(tTanks[i]); @@ -562,7 +601,6 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex /** * Energy - MultiBlock related Energy behavior */ - @Override public boolean isUniversalEnergyStored(MultiBlockPart aPart, long aEnergyAmount) { return getUniversalEnergyStored(aPart) >= aEnergyAmount; @@ -642,7 +680,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex public boolean inputEnergyFrom(MultiBlockPart aPart, byte aSide) { if (aSide == GT_Values.SIDE_UNKNOWN) return true; if (aSide >= 0 && aSide < 6) { - if(isInvalid()) return false; + if (isInvalid()) return false; if (isEnetInput()) return isEnergyInputSide(aSide); } return false; @@ -661,8 +699,6 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex /** * Item - MultiBlock related Item behaviour. */ - - @Override public boolean hasInventoryBeenModified(MultiBlockPart aPart) { // TODO: MultiInventory - Figure this out based on locked & the part @@ -688,7 +724,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex if (lockedInventory != -1) return new ImmutablePair<>(multiBlockInventory.get(lockedInventory), aSlot); int start = 0; - for(ItemStack[] inv : multiBlockInventory) { + for (ItemStack[] inv : multiBlockInventory) { if (aSlot > start && aSlot < start + inv.length) { return new ImmutablePair<>(inv, aSlot - start); } @@ -703,42 +739,43 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex final int lockedInventory = aPart.getLockedInventory(); int start = 0; - if(lockedInventory == -1) { + if (lockedInventory == -1) { for (ItemStack[] inv : multiBlockInventory) { for (int i = start; i < inv.length + start; i++) tList.add(i); start += inv.length; } } else { final int len = multiBlockInventory.get(lockedInventory).length; - for(int i = 0; i < len ; i++) tList.add(i); + for (int i = 0; i < len; i++) tList.add(i); } return tList.toArray(); } - @Override public boolean canInsertItem(MultiBlockPart aPart, int aSlot, ItemStack aStack, byte aSide) { final int lockedInventory = aPart.getLockedInventory(), tSlot; final ItemStack[] inv; - if(lockedInventory == -1) { + if (lockedInventory == -1) { final Pair<ItemStack[], Integer> tInv = getInventory(lockedInventory, aSlot); - if(tInv == null) return false; + if (tInv == null) return false; inv = tInv.getLeft(); tSlot = tInv.getRight(); } else { inv = multiBlockInventory.get(lockedInventory); tSlot = aSlot; } - return inv[tSlot] == null || GT_Utility.areStacksEqual(aStack, inv[tSlot]); //&& allowPutStack(getBaseMetaTileEntity(), aIndex, (byte) aSide, aStack) + return inv[tSlot] == null + || GT_Utility.areStacksEqual( + aStack, inv[tSlot]); // && allowPutStack(getBaseMetaTileEntity(), aIndex, (byte) aSide, aStack) } @Override public boolean canExtractItem(MultiBlockPart aPart, int aSlot, ItemStack aStack, byte aSide) { final int lockedInventory = aPart.getLockedInventory(), tSlot; final ItemStack[] inv; - if(lockedInventory == -1) { + if (lockedInventory == -1) { final Pair<ItemStack[], Integer> tInv = getInventory(lockedInventory, aSlot); - if(tInv == null) return false; + if (tInv == null) return false; inv = tInv.getLeft(); tSlot = tInv.getRight(); } else { @@ -751,7 +788,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex @Override public int getSizeInventory(MultiBlockPart aPart) { final int lockedInventory = aPart.getLockedInventory(); - if(lockedInventory == -1) { + if (lockedInventory == -1) { int len = 0; for (ItemStack[] inv : multiBlockInventory) len += inv.length; return len; @@ -764,9 +801,9 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex public ItemStack getStackInSlot(MultiBlockPart aPart, int aSlot) { final int lockedInventory = aPart.getLockedInventory(), tSlot; final ItemStack[] inv; - if(lockedInventory == -1) { + if (lockedInventory == -1) { final Pair<ItemStack[], Integer> tInv = getInventory(lockedInventory, aSlot); - if(tInv == null) return null; + if (tInv == null) return null; inv = tInv.getLeft(); tSlot = tInv.getRight(); } else { @@ -785,8 +822,7 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex setInventorySlotContents(aSlot, null); } else { rStack = tStack.splitStack(aDecrement); - if (tStack.stackSize == 0) - setInventorySlotContents(aSlot, null); + if (tStack.stackSize == 0) setInventorySlotContents(aSlot, null); } } return rStack; @@ -833,7 +869,8 @@ public abstract class MultiBlockController<T extends MultiBlockController<T>> ex @Override public void markDirty(MultiBlockPart aPart) { // TODO: MultiInventory - Consider the part? - markDirty(); markInventoryBeenModified(); + markDirty(); + markInventoryBeenModified(); } @Override diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java index 6c36798197..628992a931 100644 --- a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java +++ b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlockPart.java @@ -1,20 +1,36 @@ package gregtech.api.multitileentity.multiblock.base; +import static com.google.common.math.LongMath.log2; +import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; +import static gregtech.api.enums.GT_Values.B; +import static gregtech.api.enums.GT_Values.NBT; +import static gregtech.api.enums.GT_Values.SIDE_UNKNOWN; +import static gregtech.api.enums.Textures.BlockIcons.FLUID_IN_SIGN; +import static gregtech.api.enums.Textures.BlockIcons.FLUID_OUT_SIGN; +import static gregtech.api.enums.Textures.BlockIcons.ITEM_IN_SIGN; +import static gregtech.api.enums.Textures.BlockIcons.ITEM_OUT_SIGN; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ENERGY_IN_MULTI; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ENERGY_OUT_MULTI; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE_IN; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE_OUT; +import static org.apache.commons.lang3.ObjectUtils.firstNonNull; + import gregtech.api.enums.GT_Values; import gregtech.api.enums.Textures; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.ITexture; import gregtech.api.multitileentity.MultiTileEntityRegistry; -import gregtech.api.multitileentity.base.BaseMultiTileEntity; import gregtech.api.multitileentity.base.BaseNontickableMultiTileEntity; import gregtech.api.multitileentity.interfaces.IMultiBlockController; import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_BreakBlock; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_CoverBehaviorBase; -import gregtech.api.util.GT_Util; import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; -import gregtech.common.render.GT_MultiTexture; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; import net.minecraft.block.Block; @@ -29,44 +45,23 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import static com.google.common.math.LongMath.log2; -import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; -import static gregtech.api.enums.GT_Values.B; -import static gregtech.api.enums.GT_Values.NBT; -import static gregtech.api.enums.GT_Values.SIDE_UNKNOWN; -import static gregtech.api.enums.Textures.BlockIcons.FLUID_IN_SIGN; -import static gregtech.api.enums.Textures.BlockIcons.FLUID_OUT_SIGN; -import static gregtech.api.enums.Textures.BlockIcons.ITEM_IN_SIGN; -import static gregtech.api.enums.Textures.BlockIcons.ITEM_OUT_SIGN; -import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ENERGY_IN_MULTI; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_ENERGY_OUT_MULTI; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE_IN; -import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_PIPE_OUT; -import static org.apache.commons.lang3.ObjectUtils.firstNonNull; - public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IMTE_BreakBlock { - public static final int - NOTHING = 0, - ENERGY_IN = B[0], - ENERGY_OUT = B[1], - FLUID_IN = B[2], - FLUID_OUT = B[3], - ITEM_IN = B[4], - ITEM_OUT = B[5]; + public static final int NOTHING = 0, + ENERGY_IN = B[0], + ENERGY_OUT = B[1], + FLUID_IN = B[2], + FLUID_OUT = B[3], + ITEM_IN = B[4], + ITEM_OUT = B[5]; - protected final List<Integer> BASIC_MODES = new ArrayList<>(Arrays.asList(NOTHING, ENERGY_IN, ENERGY_OUT, FLUID_IN, FLUID_OUT, ITEM_IN, ITEM_OUT)); + protected final List<Integer> BASIC_MODES = + new ArrayList<>(Arrays.asList(NOTHING, ENERGY_IN, ENERGY_OUT, FLUID_IN, FLUID_OUT, ITEM_IN, ITEM_OUT)); protected ChunkCoordinates mTargetPos = null; protected IMultiBlockController mTarget = null; - protected int mAllowedModes = NOTHING; // BITMASK - Modes allowed for this part - protected byte mMode = 0; // Mode selected for this part + protected int mAllowedModes = NOTHING; // BITMASK - Modes allowed for this part + protected byte mMode = 0; // Mode selected for this part /** * What Part Tier is this part? All Basic Casings are Tier 1, and will allow: @@ -89,7 +84,7 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override protected void addDebugInfo(EntityPlayer aPlayer, int aLogLevel, ArrayList<String> tList) { final IMultiBlockController controller = getTarget(false); - if(controller != null) { + if (controller != null) { tList.add("Has controller"); } else { tList.add("No Controller"); @@ -98,7 +93,8 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM } @Override - public void getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + public void getWailaBody( + ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { super.getWailaBody(itemStack, currenttip, accessor, config); currenttip.add(String.format("Mode: %s", getModeName(mMode))); } @@ -109,17 +105,15 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM if (worldObj.blockExists(mTargetPos.posX, mTargetPos.posY, mTargetPos.posZ)) { final TileEntity te = worldObj.getTileEntity(mTargetPos.posX, mTargetPos.posY, mTargetPos.posZ); if (te instanceof IMultiBlockController) { - mTarget = (IMultiBlockController)te; + mTarget = (IMultiBlockController) te; } else { mTargetPos = null; } } } - if(aCheckValidity) { + if (aCheckValidity) { return mTarget != null && mTarget.checkStructure(false) ? mTarget : null; - } - else - return mTarget; + } else return mTarget; } @Override @@ -127,9 +121,9 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM if (aNBT.hasKey(NBT.ALLOWED_MODES)) mAllowedModes = aNBT.getInteger(NBT.ALLOWED_MODES); if (aNBT.hasKey(NBT.MODE)) mMode = aNBT.getByte(NBT.MODE); if (aNBT.hasKey(NBT.TARGET)) { - mTargetPos = new ChunkCoordinates(aNBT.getInteger(NBT.TARGET_X), aNBT.getShort(NBT.TARGET_Y), aNBT.getInteger(NBT.TARGET_Z)); + mTargetPos = new ChunkCoordinates( + aNBT.getInteger(NBT.TARGET_X), aNBT.getShort(NBT.TARGET_Y), aNBT.getInteger(NBT.TARGET_Z)); } - } @Override @@ -139,7 +133,7 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM if (mTargetPos != null) { aNBT.setBoolean(NBT.TARGET, true); aNBT.setInteger(NBT.TARGET_X, mTargetPos.posX); - aNBT.setShort(NBT.TARGET_Y, (short)mTargetPos.posY); + aNBT.setShort(NBT.TARGET_Y, (short) mTargetPos.posY); aNBT.setInteger(NBT.TARGET_Z, mTargetPos.posZ); } } @@ -155,9 +149,8 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM * Returns true if the part has any of the modes provided, and that mode is the currently selected mode */ public boolean modeSelected(int... aModes) { - for(int aMode : aModes) { - if (hasMode(aMode) && mMode == getModeOrdinal(aMode)) - return true; + for (int aMode : aModes) { + if (hasMode(aMode) && mMode == getModeOrdinal(aMode)) return true; } return false; } @@ -174,10 +167,10 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM for (byte tSide : ALL_VALID_SIDES) { final TileEntity te = getTileEntityAtSide(tSide); if (te instanceof MultiBlockPart) { - final IMultiBlockController tController = ((MultiBlockPart)te).getTarget(false); + final IMultiBlockController tController = ((MultiBlockPart) te).getTarget(false); if (tController != null) tController.onStructureChange(); } else if (te instanceof IMultiBlockController) { - ((IMultiBlockController)te).onStructureChange(); + ((IMultiBlockController) te).onStructureChange(); } } } @@ -192,51 +185,55 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM mMode = aData; } - @Override public void loadTextureNBT(NBTTagCompound aNBT) { // Loading the registry final String textureName = aNBT.getString(NBT.TEXTURE); mTextures = new IIconContainer[] { - new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/"+textureName+"/bottom"), - new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/"+textureName+"/top"), - new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/"+textureName+"/side"), - new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/"+textureName+"/overlay/bottom"), - new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/"+textureName+"/overlay/top"), - new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/"+textureName+"/overlay/side") + new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/" + textureName + "/bottom"), + new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/" + textureName + "/top"), + new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/" + textureName + "/side"), + new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/" + textureName + "/overlay/bottom"), + new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/" + textureName + "/overlay/top"), + new Textures.BlockIcons.CustomIcon("multitileentity/multiblockparts/" + textureName + "/overlay/side") }; } @Override public void copyTextures() { // Loading an instance - final TileEntity tCanonicalTileEntity = MultiTileEntityRegistry.getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID()); - if(tCanonicalTileEntity instanceof MultiBlockPart) - mTextures = ((MultiBlockPart)tCanonicalTileEntity).mTextures; + final TileEntity tCanonicalTileEntity = + MultiTileEntityRegistry.getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID()); + if (tCanonicalTileEntity instanceof MultiBlockPart) + mTextures = ((MultiBlockPart) tCanonicalTileEntity).mTextures; } - @Override public ITexture[] getTexture(Block aBlock, byte aSide, boolean isActive, int aRenderPass) { // For normal parts - texture comes from BaseMTE; overlay based on current mode // TODO(MTE) - For Advanced parts they might come from somewhere else final ITexture baseTexture = TextureFactory.of(super.getTexture(aBlock, aSide, isActive, aRenderPass)); - if(mMode != 0 && aSide == mFacing) { - if(mMode == getModeOrdinal(ITEM_IN)) - return new ITexture[]{ baseTexture, TextureFactory.of(OVERLAY_PIPE_IN), TextureFactory.of(ITEM_IN_SIGN) }; - if(mMode == getModeOrdinal(ITEM_OUT)) - return new ITexture[]{ baseTexture, TextureFactory.of(OVERLAY_PIPE_OUT), TextureFactory.of(ITEM_OUT_SIGN) }; - if(mMode == getModeOrdinal(FLUID_IN)) - return new ITexture[]{ baseTexture, TextureFactory.of(OVERLAY_PIPE_IN), TextureFactory.of(FLUID_IN_SIGN) }; - if(mMode == getModeOrdinal(FLUID_OUT)) - return new ITexture[]{ baseTexture, TextureFactory.of(OVERLAY_PIPE_OUT), TextureFactory.of(FLUID_OUT_SIGN) }; - if(mMode == getModeOrdinal(ENERGY_IN)) - return new ITexture[]{ baseTexture, TextureFactory.of(OVERLAY_ENERGY_IN_MULTI)}; - if(mMode == getModeOrdinal(ENERGY_OUT)) - return new ITexture[]{ baseTexture, TextureFactory.of(OVERLAY_ENERGY_OUT_MULTI)}; - + if (mMode != 0 && aSide == mFacing) { + if (mMode == getModeOrdinal(ITEM_IN)) + return new ITexture[] {baseTexture, TextureFactory.of(OVERLAY_PIPE_IN), TextureFactory.of(ITEM_IN_SIGN) + }; + if (mMode == getModeOrdinal(ITEM_OUT)) + return new ITexture[] { + baseTexture, TextureFactory.of(OVERLAY_PIPE_OUT), TextureFactory.of(ITEM_OUT_SIGN) + }; + if (mMode == getModeOrdinal(FLUID_IN)) + return new ITexture[] {baseTexture, TextureFactory.of(OVERLAY_PIPE_IN), TextureFactory.of(FLUID_IN_SIGN) + }; + if (mMode == getModeOrdinal(FLUID_OUT)) + return new ITexture[] { + baseTexture, TextureFactory.of(OVERLAY_PIPE_OUT), TextureFactory.of(FLUID_OUT_SIGN) + }; + if (mMode == getModeOrdinal(ENERGY_IN)) + return new ITexture[] {baseTexture, TextureFactory.of(OVERLAY_ENERGY_IN_MULTI)}; + if (mMode == getModeOrdinal(ENERGY_OUT)) + return new ITexture[] {baseTexture, TextureFactory.of(OVERLAY_ENERGY_OUT_MULTI)}; } - return new ITexture[]{ baseTexture }; + return new ITexture[] {baseTexture}; } @Override @@ -245,46 +242,38 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM } protected String getModeName(int aMode) { - if(aMode == NOTHING) - return "Nothing"; - if(aMode == getModeOrdinal(ITEM_IN)) - return "Item Input"; - if(aMode == getModeOrdinal(ITEM_OUT)) - return "Item Output"; - if(aMode == getModeOrdinal(FLUID_IN)) - return "Fluid Input"; - if(aMode == getModeOrdinal(FLUID_OUT)) - return "Fluid Output"; - if(aMode == getModeOrdinal(ENERGY_IN)) - return "Energy Input"; - if(aMode == getModeOrdinal(ENERGY_OUT)) - return "Energy Output"; + if (aMode == NOTHING) return "Nothing"; + if (aMode == getModeOrdinal(ITEM_IN)) return "Item Input"; + if (aMode == getModeOrdinal(ITEM_OUT)) return "Item Output"; + if (aMode == getModeOrdinal(FLUID_IN)) return "Fluid Input"; + if (aMode == getModeOrdinal(FLUID_OUT)) return "Fluid Output"; + if (aMode == getModeOrdinal(ENERGY_IN)) return "Energy Input"; + if (aMode == getModeOrdinal(ENERGY_OUT)) return "Energy Output"; return "Unknown"; } protected byte getModeOrdinal(int aMode) { // log2 returns the bit position of the only bit set, add 1 to account for 0 being NOTHING // NOTE: Must be a power of 2 (single bit) - return (byte)(log2(aMode, RoundingMode.UNNECESSARY) + 1); + return (byte) (log2(aMode, RoundingMode.UNNECESSARY) + 1); } + protected byte getNextAllowedMode(List<Integer> allowedModes) { - if(mAllowedModes == NOTHING) - return NOTHING; + if (mAllowedModes == NOTHING) return NOTHING; final int numModes = allowedModes.size(); - for(byte i = 1 ; i <= numModes ; i++) { - final byte curMode = (byte)((mMode + i) % numModes); - if(curMode == NOTHING || hasMode(1 << (curMode - 1))) - return curMode; + for (byte i = 1; i <= numModes; i++) { + final byte curMode = (byte) ((mMode + i) % numModes); + if (curMode == NOTHING || hasMode(1 << (curMode - 1))) return curMode; } // Nothing valid found return 0; } @Override - public boolean onMalletRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { - if(mAllowedModes == NOTHING) - return true; + public boolean onMalletRightClick( + EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, float aZ) { + if (mAllowedModes == NOTHING) return true; mMode = getNextAllowedMode(BASIC_MODES); GT_Utility.sendChatToPlayer(aPlayer, "Mode set to `" + getModeName(mMode) + "' (" + mMode + ")"); @@ -293,17 +282,15 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM } @Override - public void setLightValue(byte aLightValue) { - - } + public void setLightValue(byte aLightValue) {} @Override public byte getComparatorValue(byte aSide) { return 0; } - - @Override public String getTileEntityName() { + @Override + public String getTileEntityName() { return "gt.multitileentity.multiblock.part"; } @@ -318,8 +305,9 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public int fill(ForgeDirection aDirection, FluidStack aFluidStack, boolean aDoFill) { if (!modeSelected(FLUID_IN)) return 0; - final byte aSide = (byte)aDirection.ordinal(); - if(aDirection != ForgeDirection.UNKNOWN && (aSide != mFacing || !coverLetsFluidIn(aSide, aFluidStack == null ? null : aFluidStack.getFluid()))) + final byte aSide = (byte) aDirection.ordinal(); + if (aDirection != ForgeDirection.UNKNOWN + && (aSide != mFacing || !coverLetsFluidIn(aSide, aFluidStack == null ? null : aFluidStack.getFluid()))) return 0; final IMultiBlockController controller = getTarget(true); return controller == null ? 0 : controller.fill(this, aDirection, aFluidStack, aDoFill); @@ -328,8 +316,9 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public FluidStack drain(ForgeDirection aDirection, FluidStack aFluidStack, boolean aDoDrain) { if (!modeSelected(FLUID_OUT)) return null; - final byte aSide = (byte)aDirection.ordinal(); - if(aDirection != ForgeDirection.UNKNOWN && (aSide != mFacing || !coverLetsFluidOut(aSide, aFluidStack == null ? null : aFluidStack.getFluid()))) + final byte aSide = (byte) aDirection.ordinal(); + if (aDirection != ForgeDirection.UNKNOWN + && (aSide != mFacing || !coverLetsFluidOut(aSide, aFluidStack == null ? null : aFluidStack.getFluid()))) return null; final IMultiBlockController controller = getTarget(true); return controller == null ? null : controller.drain(this, aDirection, aFluidStack, aDoDrain); @@ -338,11 +327,12 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public FluidStack drain(ForgeDirection aDirection, int aAmountToDrain, boolean aDoDrain) { if (!modeSelected(FLUID_OUT)) return null; - final byte aSide = (byte)aDirection.ordinal(); + final byte aSide = (byte) aDirection.ordinal(); final IMultiBlockController controller = getTarget(true); if (controller == null) return null; final FluidStack aFluidStack = controller.getDrainableFluid(aSide); - if(aDirection != ForgeDirection.UNKNOWN && (aSide != mFacing || !coverLetsFluidOut(aSide, aFluidStack == null ? null : aFluidStack.getFluid()))) + if (aDirection != ForgeDirection.UNKNOWN + && (aSide != mFacing || !coverLetsFluidOut(aSide, aFluidStack == null ? null : aFluidStack.getFluid()))) return null; return controller.drain(this, aDirection, aAmountToDrain, aDoDrain); } @@ -350,8 +340,8 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public boolean canFill(ForgeDirection aDirection, Fluid aFluid) { if (!modeSelected(FLUID_IN)) return false; - final byte aSide = (byte)aDirection.ordinal(); - if(aDirection != ForgeDirection.UNKNOWN && (aSide != mFacing || !coverLetsFluidIn(aSide, aFluid))) + final byte aSide = (byte) aDirection.ordinal(); + if (aDirection != ForgeDirection.UNKNOWN && (aSide != mFacing || !coverLetsFluidIn(aSide, aFluid))) return false; final IMultiBlockController controller = getTarget(true); return controller != null && controller.canFill(this, aDirection, aFluid); @@ -360,8 +350,8 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public boolean canDrain(ForgeDirection aDirection, Fluid aFluid) { if (!modeSelected(FLUID_OUT)) return false; - final byte aSide = (byte)aDirection.ordinal(); - if(aDirection != ForgeDirection.UNKNOWN && (aSide != mFacing || !coverLetsFluidOut(aSide, aFluid))) + final byte aSide = (byte) aDirection.ordinal(); + if (aDirection != ForgeDirection.UNKNOWN && (aSide != mFacing || !coverLetsFluidOut(aSide, aFluid))) return false; final IMultiBlockController controller = getTarget(true); return controller != null && controller.canDrain(this, aDirection, aFluid); @@ -370,16 +360,18 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public FluidTankInfo[] getTankInfo(ForgeDirection aDirection) { final byte aSide = (byte) aDirection.ordinal(); - if (!modeSelected(FLUID_IN, FLUID_OUT) || (aSide != SIDE_UNKNOWN && aSide != mFacing)) return GT_Values.emptyFluidTankInfo; + if (!modeSelected(FLUID_IN, FLUID_OUT) || (aSide != SIDE_UNKNOWN && aSide != mFacing)) + return GT_Values.emptyFluidTankInfo; final IMultiBlockController controller = getTarget(true); - if(controller == null) return GT_Values.emptyFluidTankInfo; + if (controller == null) return GT_Values.emptyFluidTankInfo; final GT_CoverBehaviorBase<?> tCover = getCoverBehaviorAtSideNew(aSide); final int coverId = getCoverIDAtSide(aSide); final ISerializableObject complexCoverData = getComplexCoverDataAtSide(aSide); - if((controller.isLiquidInput(aSide) && tCover.letsFluidIn(aSide, coverId, complexCoverData, null, controller)) || - (controller.isLiquidOutput(aSide) && tCover.letsFluidOut(aSide, coverId, complexCoverData, null, controller))) + if ((controller.isLiquidInput(aSide) && tCover.letsFluidIn(aSide, coverId, complexCoverData, null, controller)) + || (controller.isLiquidOutput(aSide) + && tCover.letsFluidOut(aSide, coverId, complexCoverData, null, controller))) return controller.getTankInfo(this, aDirection); return GT_Values.emptyFluidTankInfo; @@ -388,7 +380,6 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM /** * Energy - Depending on the part type - proxy to the multiblock controller, if we have one */ - @Override public boolean isEnetInput() { return modeSelected(ENERGY_IN); @@ -404,7 +395,6 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM if (!modeSelected(ENERGY_OUT, ENERGY_IN)) return false; final IMultiBlockController controller = getTarget(true); return controller != null && controller.isUniversalEnergyStored(this, aEnergyAmount); - } @Override @@ -453,37 +443,41 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM public boolean decreaseStoredEnergyUnits(long aEnergy, boolean aIgnoreTooLittleEnergy) { if (!modeSelected(ENERGY_IN)) return false; final IMultiBlockController controller = getTarget(true); - return controller != null && hasMode(ENERGY_OUT) && controller.decreaseStoredEnergyUnits(this, aEnergy, aIgnoreTooLittleEnergy); + return controller != null + && hasMode(ENERGY_OUT) + && controller.decreaseStoredEnergyUnits(this, aEnergy, aIgnoreTooLittleEnergy); } @Override public boolean increaseStoredEnergyUnits(long aEnergy, boolean aIgnoreTooMuchEnergy) { if (!modeSelected(ENERGY_IN)) return false; final IMultiBlockController controller = getTarget(true); - return controller != null && hasMode(ENERGY_IN) && controller.increaseStoredEnergyUnits(this, aEnergy, aIgnoreTooMuchEnergy); + return controller != null + && hasMode(ENERGY_IN) + && controller.increaseStoredEnergyUnits(this, aEnergy, aIgnoreTooMuchEnergy); } @Override public boolean drainEnergyUnits(byte aSide, long aVoltage, long aAmperage) { - if(!modeSelected(ENERGY_OUT) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyOut(aSide)))) return false; + if (!modeSelected(ENERGY_OUT) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyOut(aSide)))) + return false; final IMultiBlockController controller = getTarget(true); return controller != null && controller.drainEnergyUnits(this, aSide, aVoltage, aAmperage); } - @Override public long injectEnergyUnits(byte aSide, long aVoltage, long aAmperage) { - if (!modeSelected(ENERGY_IN) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyIn(aSide)))) return 0; + if (!modeSelected(ENERGY_IN) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyIn(aSide)))) + return 0; final IMultiBlockController controller = getTarget(true); return controller != null ? controller.injectEnergyUnits(this, aSide, aVoltage, aAmperage) : 0; } - @Override public long getAverageElectricInput() { if (!modeSelected(ENERGY_IN)) return 0; final IMultiBlockController controller = getTarget(true); - return controller != null? controller.getAverageElectricInput(this) : 0; + return controller != null ? controller.getAverageElectricInput(this) : 0; } @Override @@ -509,13 +503,16 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public boolean inputEnergyFrom(byte aSide) { - if (!modeSelected(ENERGY_IN) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyIn(aSide)))) return false; + if (!modeSelected(ENERGY_IN) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyIn(aSide)))) + return false; final IMultiBlockController controller = getTarget(true); return controller != null && controller.inputEnergyFrom(this, aSide); } + @Override public boolean outputsEnergyTo(byte aSide) { - if(!modeSelected(ENERGY_OUT) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyOut(aSide)))) return false; + if (!modeSelected(ENERGY_OUT) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsEnergyOut(aSide)))) + return false; final IMultiBlockController controller = getTarget(true); return controller != null && controller.outputsEnergyTo(this, aSide); } @@ -525,7 +522,6 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM /** * Inventory - Depending on the part type - proxy to the multiblock controller, if we have one */ - @Override public boolean hasInventoryBeenModified() { final IMultiBlockController controller = getTarget(true); @@ -552,23 +548,28 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM return (controller != null && controller.addStackToSlot(this, aIndex, aStack, aAmount)); } - @Override public int[] getAccessibleSlotsFromSide(int aSide) { - if (!modeSelected(ITEM_IN, ITEM_OUT) || (mFacing != SIDE_UNKNOWN && mFacing != aSide)) return GT_Values.emptyIntArray; + if (!modeSelected(ITEM_IN, ITEM_OUT) || (mFacing != SIDE_UNKNOWN && mFacing != aSide)) + return GT_Values.emptyIntArray; final IMultiBlockController controller = getTarget(true); return controller != null ? controller.getAccessibleSlotsFromSide(this, (byte) aSide) : GT_Values.emptyIntArray; } @Override public boolean canInsertItem(int aSlot, ItemStack aStack, int aSide) { - if (!modeSelected(ITEM_IN) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsItemsIn((byte)aSide, aSlot)))) return false; + if (!modeSelected(ITEM_IN) + || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsItemsIn((byte) aSide, aSlot)))) + return false; final IMultiBlockController controller = getTarget(true); return (controller != null && controller.canInsertItem(this, aSlot, aStack, (byte) aSide)); } + @Override public boolean canExtractItem(int aSlot, ItemStack aStack, int aSide) { - if (!modeSelected(ITEM_OUT) || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsItemsOut((byte)aSide, aSlot)))) return false; + if (!modeSelected(ITEM_OUT) + || (mFacing != SIDE_UNKNOWN && (mFacing != aSide || !coverLetsItemsOut((byte) aSide, aSlot)))) + return false; final IMultiBlockController controller = getTarget(true); return (controller != null && controller.canExtractItem(this, aSlot, aStack, (byte) aSide)); } @@ -603,14 +604,13 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM @Override public void setInventorySlotContents(int aSlot, ItemStack aStack) { final IMultiBlockController controller = getTarget(true); - if(controller != null) controller.setInventorySlotContents(this, aSlot, aStack); + if (controller != null) controller.setInventorySlotContents(this, aSlot, aStack); } @Override public String getInventoryName() { final IMultiBlockController controller = getTarget(true); - if(controller != null) - return controller.getInventoryName(this); + if (controller != null) return controller.getInventoryName(this); return firstNonNull(getCustomName(), getTileEntityName()); } @@ -620,7 +620,6 @@ public class MultiBlockPart extends BaseNontickableMultiTileEntity implements IM return controller != null ? controller.getInventoryStackLimit(this) : 0; } - @Override public boolean isItemValidForSlot(int aSlot, ItemStack aStack) { final IMultiBlockController controller = getTarget(true); diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlock_Stackable.java b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlock_Stackable.java index f19d3156fa..92931bc4db 100644 --- a/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlock_Stackable.java +++ b/src/main/java/gregtech/api/multitileentity/multiblock/base/MultiBlock_Stackable.java @@ -1,7 +1,6 @@ package gregtech.api.multitileentity.multiblock.base; import com.gtnewhorizon.structurelib.util.Vec3Impl; - import net.minecraft.item.ItemStack; public abstract class MultiBlock_Stackable<T extends MultiBlock_Stackable<T>> extends MultiBlockController<T> { @@ -25,7 +24,7 @@ public abstract class MultiBlock_Stackable<T extends MultiBlock_Stackable<T>> ex buildPiece(STACKABLE_MIDDLE, trigger, hintsOnly, buildState.getCurrentOffset()); buildState.addOffset(getPerStackOffset()); } - if(hasTop()) { + if (hasTop()) { buildState.addOffset(getAfterLastStackOffset()); buildPiece(STACKABLE_TOP, trigger, hintsOnly, buildState.stopBuilding()); } else { @@ -86,8 +85,7 @@ public abstract class MultiBlock_Stackable<T extends MultiBlock_Stackable<T>> ex int stackCount = 0; buildState.startBuilding(getStartingStructureOffset()); - if (!checkPiece(STACKABLE_BOTTOM, buildState.getCurrentOffset())) - return buildState.failBuilding(); + if (!checkPiece(STACKABLE_BOTTOM, buildState.getCurrentOffset())) return buildState.failBuilding(); buildState.addOffset(getStartingStackOffset()); @@ -99,8 +97,7 @@ public abstract class MultiBlock_Stackable<T extends MultiBlock_Stackable<T>> ex break; } } - if (stackCount < getMinStacks()) - return buildState.failBuilding(); + if (stackCount < getMinStacks()) return buildState.failBuilding(); buildState.addOffset(getAfterLastStackOffset()); return checkPiece(STACKABLE_TOP, buildState.stopBuilding()); @@ -110,5 +107,4 @@ public abstract class MultiBlock_Stackable<T extends MultiBlock_Stackable<T>> ex public boolean checkRecipe(ItemStack aStack) { return false; } - } diff --git a/src/main/java/gregtech/api/multitileentity/multiblock/casing/CasingBehaviorBase.java b/src/main/java/gregtech/api/multitileentity/multiblock/casing/CasingBehaviorBase.java index 8c507db88c..b4b69e0b21 100644 --- a/src/main/java/gregtech/api/multitileentity/multiblock/casing/CasingBehaviorBase.java +++ b/src/main/java/gregtech/api/multitileentity/multiblock/casing/CasingBehaviorBase.java @@ -13,5 +13,4 @@ package gregtech.api.multitileentity.multiblock.casing; * - etc, etc. * */ -public class CasingBehaviorBase { -} +public class CasingBehaviorBase {} |