From 56f2269f4af6d2130bdb2b6e6ac6e13bce89e47b Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sat, 22 Apr 2023 22:33:35 -0700 Subject: Forge direction (#1895) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ForgeDirection Also refactor the clusterfuck that was `getCoordinateScan` Co-authored by: Jason Mitchell * Fix rendering of Frame Boxes Frame boxes needed their own implementation of getTexture with int connexion mask, which is returning an error texture for the MetaTileEntity, because pipes (FrameBox **is** a pipe) do use this method to return different textures based on connexion status. --------- Co-authored-by: Léa Gris --- .../api/multitileentity/MultiTileEntityBlock.java | 128 ++++++------ .../MultiTileEntityBlockInternal.java | 5 +- .../MultiTileEntityItemInternal.java | 97 ++++----- .../api/multitileentity/base/MultiTileEntity.java | 232 ++++++++++----------- .../base/NonTickableMultiTileEntity.java | 11 +- .../base/TickableMultiTileEntity.java | 3 +- .../interfaces/IMultiBlockController.java | 12 +- .../interfaces/IMultiBlockEnergy.java | 10 +- .../interfaces/IMultiBlockInventory.java | 7 +- .../interfaces/IMultiBlockPart.java | 3 +- .../interfaces/IMultiTileEntity.java | 39 ++-- .../machine/MultiTileBasicMachine.java | 38 ++-- .../multiblock/base/Controller.java | 98 +++++---- .../multiblock/base/MultiBlockPart.java | 145 ++++++------- .../multiblock/base/WallShareablePart.java | 17 +- 15 files changed, 416 insertions(+), 429 deletions(-) (limited to 'src/main/java/gregtech/api/multitileentity') diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java index b81961af95..7d1c74b1bc 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlock.java @@ -1,6 +1,5 @@ package gregtech.api.multitileentity; -import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES; import static gregtech.api.enums.GT_Values.OFFX; import static gregtech.api.enums.GT_Values.OFFY; import static gregtech.api.enums.GT_Values.OFFZ; @@ -46,7 +45,6 @@ import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTech_API; -import gregtech.api.enums.GT_Values; import gregtech.api.enums.ItemList; import gregtech.api.enums.Textures; import gregtech.api.interfaces.IDebugableBlock; @@ -66,7 +64,6 @@ import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_ShouldCheck import gregtech.api.objects.XSTR; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Util; -import gregtech.api.util.GT_Utility; import gregtech.common.covers.CoverInfo; import gregtech.common.render.GT_MultiTile_Renderer; @@ -229,13 +226,13 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(IBlockAccess aIBlockAccess, int aX, int aY, int aZ, int aSide) { + public IIcon getIcon(IBlockAccess aIBlockAccess, int aX, int aY, int aZ, int ordinalSide) { return Textures.BlockIcons.MACHINE_LV_SIDE.getIcon(); } @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(int aSide, int aMeta) { + public IIcon getIcon(int ordinalSide, int aMeta) { return Textures.BlockIcons.MACHINE_LV_SIDE.getIcon(); } @@ -252,24 +249,22 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @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() + return aTileEntity instanceof IMultiTileEntity mte ? mte.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() + return aTileEntity instanceof IMultiTileEntity mte ? mte.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); + if (aTileEntity instanceof IMultiTileEntity mte) { + mte.setBlockBoundsBasedOnState(this); return; } super.setBlockBoundsBasedOnState(blockAccess, aX, aY, aZ); @@ -300,21 +295,20 @@ 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 change) change.onNeighborBlockChange(aWorld, aBlock); if (aTileEntity == null) aWorld.setBlockToAir(aX, aY, aZ); } @Override public final void onBlockAdded(World aWorld, int aX, int aY, int aZ) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - if (aTileEntity instanceof IMultiTileEntity) ((IMultiTileEntity) aTileEntity).onBlockAdded(); + if (aTileEntity instanceof IMultiTileEntity mte) mte.onBlockAdded(); } @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() + return aTileEntity instanceof IMultiTileEntity mte && mte.privateAccess() && !((IMultiTileEntity) aTileEntity).playerOwnsThis(aPlayer, true) ? -1.0F : super.getPlayerRelativeBlockHardness(aPlayer, aWorld, aX, aY, aZ); } @@ -322,47 +316,47 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil @Override public final void onBlockClicked(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - if (aTileEntity instanceof IMultiTileEntity) ((IMultiTileEntity) aTileEntity).onLeftClick(aPlayer); + if (aTileEntity instanceof IMultiTileEntity mte) mte.onLeftClick(aPlayer); else super.onBlockClicked(aWorld, aX, aY, aZ, aPlayer); } @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 ordinalSide, + 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 mte + && mte.onBlockActivated(aPlayer, ForgeDirection.getOrientation(ordinalSide), aHitX, aHitY, aHitZ); } @Override - public final int isProvidingWeakPower(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { + public final int isProvidingWeakPower(IBlockAccess aWorld, int aX, int aY, int aZ, int ordinalSide) { 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 power + ? power.isProvidingWeakPower(ForgeDirection.getOrientation(ordinalSide)) + : super.isProvidingWeakPower(aWorld, aX, aY, aZ, ordinalSide); } @Override - public final int isProvidingStrongPower(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { + public final int isProvidingStrongPower(IBlockAccess aWorld, int aX, int aY, int aZ, int ordinalSide) { 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 power + ? power.isProvidingStrongPower(ForgeDirection.getOrientation(ordinalSide)) + : super.isProvidingStrongPower(aWorld, aX, aY, aZ, ordinalSide); } @Override - public final boolean shouldCheckWeakPower(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { + public final boolean shouldCheckWeakPower(IBlockAccess aWorld, int aX, int aY, int aZ, int ordinalSide) { final TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ); - return aTileEntity instanceof IMTE_ShouldCheckWeakPower - ? ((IMTE_ShouldCheckWeakPower) aTileEntity).shouldCheckWeakPower((byte) aSide) + return aTileEntity instanceof IMTE_ShouldCheckWeakPower power + ? power.shouldCheckWeakPower(ForgeDirection.getOrientation(ordinalSide)) : 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() + return aTileEntity instanceof IMTE_GetWeakChanges changes ? changes.getWeakChanges() : super.getWeakChanges(aWorld, aX, aY, aZ); } @@ -379,32 +373,33 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil final ArrayList tList = ((IMultiTileEntity) aTileEntity).getDrops(aFortune, aSilkTouch); aChance = ForgeEventFactory .fireBlockHarvesting(tList, aWorld, this, aX, aY, aZ, aMeta, aFortune, aChance, aSilkTouch, aPlayer); - for (ItemStack tStack : tList) + for (final ItemStack tStack : tList) if (XSTR.XSTR_INSTANCE.nextFloat() <= aChance) dropBlockAsItem(aWorld, aX, aY, aZ, tStack); } } @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]); + public final boolean shouldSideBeRendered(IBlockAccess aWorld, int aX, int aY, int aZ, int ordinalSide) { + final TileEntity aTileEntity = aWorld + .getTileEntity(aX - OFFX[ordinalSide], aY - OFFY[ordinalSide], aZ - OFFZ[ordinalSide]); return aTileEntity instanceof IMultiTileEntity - ? ((IMultiTileEntity) aTileEntity).shouldSideBeRendered((byte) aSide) - : super.shouldSideBeRendered(aWorld, aX, aY, aZ, aSide); + ? ((IMultiTileEntity) aTileEntity).shouldSideBeRendered(ForgeDirection.getOrientation(ordinalSide)) + : super.shouldSideBeRendered(aWorld, aX, aY, aZ, ordinalSide); } @Override - public Block getFacade(IBlockAccess aWorld, int aX, int aY, int aZ, int side) { + public Block getFacade(IBlockAccess aWorld, int aX, int aY, int aZ, int ordinalSide) { final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof CoverableTileEntity tile) { - final byte aSide = (byte) side; - if (side != -1) { - final Block facadeBlock = tile.getCoverInfoAtSide(aSide) + final ForgeDirection side = ForgeDirection.getOrientation(ordinalSide); + if (ordinalSide != -1) { + final Block facadeBlock = tile.getCoverInfoAtSide(side) .getFacadeBlock(); 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 tSide : ALL_VALID_SIDES) { + for (final ForgeDirection tSide : ForgeDirection.VALID_DIRECTIONS) { final Block facadeBlock = tile.getCoverInfoAtSide(tSide) .getFacadeBlock(); if (facadeBlock != null) { @@ -417,18 +412,18 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public int getFacadeMetadata(IBlockAccess aWorld, int aX, int aY, int aZ, int side) { + public int getFacadeMetadata(IBlockAccess aWorld, int aX, int aY, int aZ, int ordinalSide) { final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof CoverableTileEntity tile) { - final byte aSide = (byte) side; - if (side != -1) { - final CoverInfo coverInfo = tile.getCoverInfoAtSide(aSide); + final ForgeDirection side = ForgeDirection.getOrientation(ordinalSide); + if (ordinalSide != -1) { + final CoverInfo coverInfo = tile.getCoverInfoAtSide(side); final Block facadeBlock = coverInfo.getFacadeBlock(); if (facadeBlock != null) return coverInfo.getFacadeMeta(); } 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 tSide : ALL_VALID_SIDES) { + for (final ForgeDirection tSide : ForgeDirection.VALID_DIRECTIONS) { final CoverInfo coverInfo = tile.getCoverInfoAtSide(tSide); final Block facadeBlock = coverInfo.getFacadeBlock(); if (facadeBlock != null) { @@ -477,13 +472,14 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final int getComparatorInputOverride(World aWorld, int aX, int aY, int aZ, int aSide) { + public final int getComparatorInputOverride(World aWorld, int aX, int aY, int aZ, int ordinalSide) { 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 override + ? override.getComparatorInputOverride(ForgeDirection.getOrientation(ordinalSide)) + : aTileEntity instanceof IMTE_IsProvidingWeakPower power ? power.isProvidingWeakPower( + ForgeDirection.getOrientation(ordinalSide) + .getOpposite()) + : super.getComparatorInputOverride(aWorld, aX, aY, aZ, ordinalSide); } @Override @@ -497,12 +493,9 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final boolean isSideSolid(IBlockAccess aWorld, int aX, int aY, int aZ, ForgeDirection aSide) { + public final boolean isSideSolid(IBlockAccess aWorld, int aX, int aY, int aZ, ForgeDirection side) { 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 mte ? mte.isSideSolid(side) : mOpaque; } @Override @@ -566,15 +559,14 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil } @Override - public final boolean canConnectRedstone(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) { + public final boolean canConnectRedstone(IBlockAccess aWorld, int aX, int aY, int aZ, int ordinalSide) { return true; } @Override - public final boolean recolourBlock(World aWorld, int aX, int aY, int aZ, ForgeDirection aSide, int aColor) { + public final boolean recolourBlock(World aWorld, int aX, int aY, int aZ, ForgeDirection side, 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 mte && mte.recolourBlock(side, (byte) aColor); } @Override @@ -627,12 +619,12 @@ public class MultiTileEntityBlock extends Block implements IDebugableBlock, ITil public void receiveCoverData(IMultiTileEntity mte, int aCover0, int aCover1, int aCover2, int aCover3, int aCover4, int aCover5) { boolean updated; - updated = mte.setCoverIDAtSideNoUpdate((byte) 0, aCover0); - updated |= mte.setCoverIDAtSideNoUpdate((byte) 1, aCover1); - updated |= mte.setCoverIDAtSideNoUpdate((byte) 2, aCover2); - updated |= mte.setCoverIDAtSideNoUpdate((byte) 3, aCover3); - updated |= mte.setCoverIDAtSideNoUpdate((byte) 4, aCover4); - updated |= mte.setCoverIDAtSideNoUpdate((byte) 5, aCover5); + updated = mte.setCoverIDAtSideNoUpdate(ForgeDirection.DOWN, aCover0); + updated |= mte.setCoverIDAtSideNoUpdate(ForgeDirection.UP, aCover1); + updated |= mte.setCoverIDAtSideNoUpdate(ForgeDirection.NORTH, aCover2); + updated |= mte.setCoverIDAtSideNoUpdate(ForgeDirection.SOUTH, aCover3); + updated |= mte.setCoverIDAtSideNoUpdate(ForgeDirection.WEST, aCover4); + updated |= mte.setCoverIDAtSideNoUpdate(ForgeDirection.EAST, aCover5); if (updated) { mte.issueBlockUpdate(); diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java index a3637e4626..17e217ae7e 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityBlockInternal.java @@ -10,6 +10,7 @@ import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import gregtech.api.GregTech_API; import gregtech.api.multitileentity.interfaces.IMultiTileEntity; @@ -45,8 +46,8 @@ public class MultiTileEntityBlockInternal extends Block { 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) { + public boolean placeBlock(World aWorld, int aX, int aY, int aZ, ForgeDirection side, short aMetaData, + NBTTagCompound aNBT, boolean aCauseBlockUpdates, boolean aForcePlacement) { final MultiTileEntityContainer aMTEContainer = mMultiTileEntityRegistry .getNewTileEntityContainer(aWorld, aX, aY, aZ, aMetaData, aNBT); if (aMTEContainer == null) return false; diff --git a/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java b/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java index a37fa9956e..07a9124df4 100644 --- a/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java +++ b/src/main/java/gregtech/api/multitileentity/MultiTileEntityItemInternal.java @@ -19,13 +19,13 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTech_API; -import gregtech.api.enums.GT_Values; import gregtech.api.metatileentity.CoverableTileEntity; import gregtech.api.multitileentity.interfaces.IItemUpdatable; import gregtech.api.multitileentity.interfaces.IMultiTileEntity; @@ -83,25 +83,27 @@ 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 ordinalSide, float aHitX, float aHitY, float aHitZ) { if (aY < 0 || aY > aWorld.getHeight()) return false; try { + ForgeDirection side = ForgeDirection.getOrientation(ordinalSide); final Block tClickedBlock = aWorld.getBlock(aX, aY, aZ); if (tClickedBlock instanceof BlockSnow && (aWorld.getBlockMetadata(aX, aY, aZ) & 7) < 1) { - aSide = SIDE_TOP; + ordinalSide = SIDE_TOP; + side = ForgeDirection.UP; } 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]; + aX += side.offsetX; + aY += side.offsetY; + aZ += side.offsetZ; } 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))) + || !mBlock.canReplace(aWorld, aX, aY, aZ, ordinalSide, aStack)) return false; + if (aStack.stackSize == 0 || (aPlayer != null && !aPlayer.canPlayerEdit(aX, aY, aZ, ordinalSide, aStack))) return false; final MultiTileEntityContainer aMTEContainer = mBlock.mMultiTileEntityRegistry @@ -109,30 +111,29 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont if (aMTEContainer != null && (aPlayer == null || aPlayer.isSneaking() - || !(aMTEContainer.mTileEntity instanceof IMTE_OnlyPlaceableWhenSneaking) - || !((IMTE_OnlyPlaceableWhenSneaking) aMTEContainer.mTileEntity).onlyPlaceableWhenSneaking()) + || !(aMTEContainer.mTileEntity instanceof IMTE_OnlyPlaceableWhenSneaking mteSNeaking) + || !mteSNeaking.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)) + || (aMTEContainer.mTileEntity instanceof IMTE_IgnoreEntityCollisionWhenPlacing mteIgnoreCollision + && mteIgnoreCollision.ignoreEntityCollisionWhenPlacing( + aStack, + aPlayer, + aWorld, + aX, + aY, + aZ, + side, + aHitX, + aHitY, + aHitZ))) + && (!(aMTEContainer.mTileEntity instanceof IMTE_CanPlace mteCanPlace) + || mteCanPlace.canPlace(aStack, aPlayer, aWorld, aX, aY, aZ, side, 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)) { + .onPlaced(aStack, aPlayer, aWorld, aX, aY, aZ, side, aHitX, aHitY, aHitZ)) { aWorld.playSoundEffect( aX + 0.5, aY + 0.5, @@ -145,9 +146,8 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont GT_FML_LOGGER.error("onPlaced", e); } try { - if (aMTEContainer.mTileEntity instanceof IMTE_HasMultiBlockMachineRelevantData - && (((IMTE_HasMultiBlockMachineRelevantData) aMTEContainer.mTileEntity) - .hasMultiBlockMachineRelevantData())) { + if (aMTEContainer.mTileEntity instanceof IMTE_HasMultiBlockMachineRelevantData mteData + && (mteData.hasMultiBlockMachineRelevantData())) { GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ); } } catch (Throwable e) { @@ -187,8 +187,8 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont if (tContainer == null) return; final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry .getNewTileEntityContainer(aStack); - if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IItemUpdatable) { - ((IItemUpdatable) tTileEntityContainer.mTileEntity).updateItemStack(aStack); + if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IItemUpdatable itemUpdatable) { + itemUpdatable.updateItemStack(aStack); } } @@ -198,8 +198,8 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont if (tContainer == null) return; final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry .getNewTileEntityContainer(aStack); - if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IItemUpdatable) { - ((IItemUpdatable) tTileEntityContainer.mTileEntity).updateItemStack(aStack, aWorld, aX, aY, aZ); + if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IItemUpdatable itemUpdatable) { + itemUpdatable.updateItemStack(aStack, aWorld, aX, aY, aZ); } } @@ -209,9 +209,9 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont if (tContainer == null) return 1; final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry .getNewTileEntityContainer(aStack); - if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IMTE_GetMaxStackSize) { - return ((IMTE_GetMaxStackSize) tTileEntityContainer.mTileEntity) - .getMaxStackSize(aStack, tContainer.mStackSize); + if (tTileEntityContainer != null + && tTileEntityContainer.mTileEntity instanceof IMTE_GetMaxStackSize maxStackSize) { + return maxStackSize.getMaxStackSize(aStack, tContainer.mStackSize); } return tContainer.mStackSize; } @@ -225,8 +225,9 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont public FluidStack getFluid(ItemStack aStack) { final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry .getNewTileEntityContainer(aStack); - if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final FluidStack rFluid = ((IFluidContainerItem) tTileEntityContainer.mTileEntity).getFluid(aStack); + if (tTileEntityContainer != null + && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem fluidContainerItem) { + final FluidStack rFluid = fluidContainerItem.getFluid(aStack); updateItemStack(aStack); return rFluid; } @@ -237,8 +238,9 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont public int getCapacity(ItemStack aStack) { final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry .getNewTileEntityContainer(aStack); - if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final int rCapacity = ((IFluidContainerItem) tTileEntityContainer.mTileEntity).getCapacity(aStack); + if (tTileEntityContainer != null + && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem fluidContainerItem) { + final int rCapacity = fluidContainerItem.getCapacity(aStack); updateItemStack(aStack); return rCapacity; } @@ -249,8 +251,9 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont public int fill(ItemStack aStack, FluidStack aFluid, boolean aDoFill) { final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry .getNewTileEntityContainer(aStack); - if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final int tFilled = ((IFluidContainerItem) tTileEntityContainer.mTileEntity).fill(aStack, aFluid, aDoFill); + if (tTileEntityContainer != null + && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem fluidContainerItem) { + final int tFilled = fluidContainerItem.fill(aStack, aFluid, aDoFill); updateItemStack(aStack); return tFilled; } @@ -261,9 +264,9 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont public FluidStack drain(ItemStack aStack, int aMaxDrain, boolean aDoDrain) { final MultiTileEntityContainer tTileEntityContainer = mBlock.mMultiTileEntityRegistry .getNewTileEntityContainer(aStack); - if (tTileEntityContainer != null && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem) { - final FluidStack rFluid = ((IFluidContainerItem) tTileEntityContainer.mTileEntity) - .drain(aStack, aMaxDrain, aDoDrain); + if (tTileEntityContainer != null + && tTileEntityContainer.mTileEntity instanceof IFluidContainerItem fluidContainerItem) { + final FluidStack rFluid = fluidContainerItem.drain(aStack, aMaxDrain, aDoDrain); updateItemStack(aStack); return rFluid; } @@ -271,7 +274,7 @@ public class MultiTileEntityItemInternal extends ItemBlock implements IFluidCont } @Override - public boolean func_150936_a /* canPlaceAtSide */(World aWorld, int aX, int aY, int aZ, int aSide, + public boolean func_150936_a /* canPlaceAtSide */(World aWorld, int aX, int aY, int aZ, int ordinalSide, EntityPlayer aPlayer, ItemStack aStack) { return true; } diff --git a/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java index 4312f99ce7..027d666a66 100644 --- a/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/MultiTileEntity.java @@ -1,7 +1,7 @@ package gregtech.api.multitileentity.base; import static gregtech.GT_Mod.GT_FML_LOGGER; -import static gregtech.api.enums.GT_Values.OPOS; +import static gregtech.api.enums.GT_Values.NBT; import static gregtech.api.enums.GT_Values.VALID_SIDES; import java.io.IOException; @@ -201,7 +201,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public ITexture[] getTexture(Block ignoredBlock, byte ignoredSide) { + public ITexture[] getTexture(Block ignoredBlock, ForgeDirection ignoredSide) { // We are not going to be using this return null; } @@ -361,34 +361,34 @@ public abstract class MultiTileEntity extends CoverableTileEntity 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 (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { + if (getBlockAtSide(side) + .isNormalCube(worldObj, xCoord + side.offsetX, yCoord + side.offsetY, zCoord + side.offsetZ)) { + worldObj.notifyBlocksOfNeighborChange( + xCoord + side.offsetX, + yCoord + side.offsetY, + zCoord + side.offsetZ, + tBlock, + side.getOpposite() + .ordinal()); + } } } needsBlockUpdate = false; } @Override - public boolean shouldSideBeRendered(byte aSide) { - final TileEntity tTileEntity = getTileEntityAtSideAndDistance(aSide, 1); + public boolean shouldSideBeRendered(ForgeDirection side) { + final TileEntity tTileEntity = getTileEntityAtSideAndDistance(side, 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 mte ? !mte.isSurfaceOpaque(side.getOpposite()) + : !getBlockAtSide(side).isOpaqueCube(); } @Override - public boolean isSurfaceOpaque(byte aSide) { + public boolean isSurfaceOpaque(ForgeDirection side) { return true; } @@ -430,13 +430,13 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public boolean isFacingValid(byte aFacing) { + public boolean isFacingValid(ForgeDirection facing) { return false; } @Override - public byte getFrontFacing() { - return (byte) facing.ordinal(); + public ForgeDirection getFrontFacing() { + return facing; } /** @@ -445,9 +445,9 @@ public abstract class MultiTileEntity extends CoverableTileEntity * @return Whether the facing was changed */ @Override - public boolean setMainFacing(byte aSide) { - if (!isValidFacing(aSide)) return false; - facing = ForgeDirection.getOrientation(aSide); + public boolean setMainFacing(ForgeDirection side) { + if (!isValidFacing(side)) return false; + facing = side; issueClientUpdate(); issueBlockUpdate(); @@ -471,14 +471,13 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public byte getBackFacing() { - return (byte) facing.getOpposite() - .ordinal(); + public ForgeDirection getBackFacing() { + return facing.getOpposite(); } @Override - public boolean isValidFacing(byte aSide) { - return aSide >= 0 && aSide <= 6 && getValidFacings()[aSide]; + public boolean isValidFacing(ForgeDirection side) { + return side != ForgeDirection.UNKNOWN && getValidFacings()[side.ordinal()]; } @Override @@ -487,8 +486,8 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public void issueCoverUpdate(byte aSide) { - super.issueCoverUpdate(aSide); + public void issueCoverUpdate(ForgeDirection side) { + super.issueCoverUpdate(side); issueClientUpdate(); } @@ -643,7 +642,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public boolean allowCoverOnSide(byte aSide, GT_ItemStack aCoverID) { + public boolean allowCoverOnSide(ForgeDirection side, GT_ItemStack aCoverID) { return true; } @@ -707,10 +706,9 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public boolean onPlaced(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, byte aSide, - float aHitX, float aHitY, float aHitZ) { - facing = ForgeDirection - .getOrientation(getSideForPlayerPlacing(aPlayer, (byte) facing.ordinal(), getValidFacings())); + public boolean onPlaced(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, + ForgeDirection side, float aHitX, float aHitY, float aHitZ) { + facing = getSideForPlayerPlacing(aPlayer, facing, getValidFacings()); onFacingChange(); return true; } @@ -725,9 +723,9 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public boolean onBlockActivated(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) { + public boolean onBlockActivated(EntityPlayer aPlayer, ForgeDirection side, float aX, float aY, float aZ) { try { - return allowRightclick(aPlayer) && onRightClick(aPlayer, aSide, aX, aY, aZ); + return allowRightclick(aPlayer) && onRightClick(aPlayer, side, aX, aY, aZ); } catch (Throwable e) { GT_FML_LOGGER.error("onBlockActivated Failed", e); e.printStackTrace(GT_Log.err); @@ -736,24 +734,25 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public boolean onRightClick(EntityPlayer aPlayer, byte aSide, float aX, float aY, float aZ) { + public boolean onRightClick(EntityPlayer aPlayer, ForgeDirection side, float aX, float aY, float aZ) { if (isClientSide()) { // 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 ForgeDirection tSide = (getCoverIDAtSide(side) == 0) + ? GT_Utility.determineWrenchingSide(side, aX, aY, aZ) + : side; return (getCoverBehaviorAtSideNew(tSide).hasCoverGUI()); - } else if (getCoverBehaviorAtSideNew(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) { + } else if (getCoverBehaviorAtSideNew(side).onCoverRightclickClient(side, this, aPlayer, aX, aY, aZ)) { return true; } - if (!getCoverInfoAtSide(aSide).isGUIClickable()) return false; + if (!getCoverInfoAtSide(side).isGUIClickable()) return false; } if (isServerSide()) { if (!privateAccess() || aPlayer.getDisplayName() .equalsIgnoreCase(getOwnerName())) { final ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem(); - final byte wrenchSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ); + final ForgeDirection wrenchSide = GT_Utility.determineWrenchingSide(side, aX, aY, aZ); if (tCurrentItem != null) { if (getColorization() >= 0 @@ -773,7 +772,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sWireCutterList)) return onWireCutterRightClick(aPlayer, tCurrentItem, wrenchSide, aX, aY, aZ); - final byte coverSide = getCoverIDAtSide(aSide) == 0 ? wrenchSide : aSide; + final ForgeDirection coverSide = getCoverIDAtSide(side) == 0 ? wrenchSide : side; if (getCoverIDAtSide(coverSide) == 0) { if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sCovers.keySet())) { @@ -806,47 +805,46 @@ public abstract class MultiTileEntity extends CoverableTileEntity xCoord, yCoord, zCoord); - dropCover(coverSide, aSide, false); + dropCover(coverSide, side, 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), + side = (getCoverIDAtSide(side) == 0) ? GT_Utility.determineWrenchingSide(side, aX, aY, aZ) : side; + return getCoverIDAtSide(side) > 0 && getCoverBehaviorAtSideNew(side).onCoverShiftRightClick( + side, + getCoverIDAtSide(side), + getComplexCoverDataAtSide(side), this, aPlayer); } - if (getCoverBehaviorAtSideNew(aSide).onCoverRightClick( - aSide, - getCoverIDAtSide(aSide), - getComplexCoverDataAtSide(aSide), + if (getCoverBehaviorAtSideNew(side).onCoverRightClick( + side, + getCoverIDAtSide(side), + getComplexCoverDataAtSide(side), this, aPlayer, aX, aY, aZ)) return true; - if (!getCoverInfoAtSide(aSide).isGUIClickable()) return false; + if (!getCoverInfoAtSide(side).isGUIClickable()) return false; - return openModularUi(aPlayer, aSide); + return openModularUi(aPlayer, side); } } return false; } - public boolean hasGui(byte aSide) { + public boolean hasGui(ForgeDirection side) { return false; } - boolean openModularUi(EntityPlayer aPlayer, byte aSide) { - if (!hasGui(aSide) || !isServerSide()) { + boolean openModularUi(EntityPlayer aPlayer, ForgeDirection side) { + if (!hasGui(side) || !isServerSide()) { System.out.println("No GUI or Not Serverside"); return false; } @@ -856,8 +854,8 @@ public abstract class MultiTileEntity extends CoverableTileEntity return true; } - public boolean onWrenchRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, - float aZ) { + public boolean onWrenchRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, ForgeDirection 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); @@ -865,8 +863,8 @@ public abstract class MultiTileEntity extends CoverableTileEntity return true; } - public boolean onScrewdriverRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, - float aY, float aZ) { + public boolean onScrewdriverRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, ForgeDirection wrenchSide, + float aX, float aY, float aZ) { if (GT_ModHandler.damageOrDechargeItem(tCurrentItem, 1, 200, aPlayer)) { setCoverDataAtSide( wrenchSide, @@ -885,26 +883,26 @@ public abstract class MultiTileEntity extends CoverableTileEntity return true; } - public boolean onHammerRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, byte wrenchSide, float aX, float aY, - float aZ) { + public boolean onHammerRightClick(EntityPlayer aPlayer, ItemStack tCurrentItem, ForgeDirection 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, ForgeDirection 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, ForgeDirection 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, ForgeDirection wrenchSide, + float aX, float aY, float aZ) { return true; } @@ -923,7 +921,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity public void onExploded(Explosion aExplosion) {} @Override - public boolean isSideSolid(byte aSide) { + public boolean isSideSolid(ForgeDirection side) { return true; } @@ -949,7 +947,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public boolean recolourBlock(byte aSide, byte aColor) { + public boolean recolourBlock(ForgeDirection side, byte aColor) { // if (aColor > 15 || aColor < -1) aColor = -1; // if(paint((byte) (aColor + 1))) { //// updateClientData(); @@ -994,12 +992,12 @@ public abstract class MultiTileEntity extends CoverableTileEntity color); packet.setCoverData( - getCoverInfoAtSide((byte) 0).getCoverID(), - getCoverInfoAtSide((byte) 1).getCoverID(), - getCoverInfoAtSide((byte) 2).getCoverID(), - getCoverInfoAtSide((byte) 3).getCoverID(), - getCoverInfoAtSide((byte) 4).getCoverID(), - getCoverInfoAtSide((byte) 5).getCoverID()); + getCoverInfoAtSide(ForgeDirection.DOWN).getCoverID(), + getCoverInfoAtSide(ForgeDirection.UP).getCoverID(), + getCoverInfoAtSide(ForgeDirection.NORTH).getCoverID(), + getCoverInfoAtSide(ForgeDirection.SOUTH).getCoverID(), + getCoverInfoAtSide(ForgeDirection.WEST).getCoverID(), + getCoverInfoAtSide(ForgeDirection.EAST).getCoverID()); packet.setRedstoneData( (byte) (((mSidedRedstone[0] > 0) ? 1 : 0) | ((mSidedRedstone[1] > 0) ? 2 : 0) @@ -1077,14 +1075,10 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public void getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, + public void getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - super.getWailaBody(itemStack, currenttip, accessor, config); - currenttip.add( - String.format( - "Facing: %s", - ForgeDirection.getOrientation(getFrontFacing()) - .name())); + super.getWailaBody(itemStack, currentTip, accessor, config); + currentTip.add(String.format("Facing: %s", getFrontFacing().name())); } @Override @@ -1125,37 +1119,37 @@ public abstract class MultiTileEntity extends CoverableTileEntity * 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) { + protected IFluidTank getFluidTankFillable(ForgeDirection side, FluidStack aFluidToFill) { return null; } - protected IFluidTank getFluidTankDrainable(byte aSide, FluidStack aFluidToDrain) { + protected IFluidTank getFluidTankDrainable(ForgeDirection side, FluidStack aFluidToDrain) { return null; } - protected IFluidTank[] getFluidTanks(byte aSide) { + protected IFluidTank[] getFluidTanks(ForgeDirection side) { return GT_Values.emptyFluidTank; } - public boolean isLiquidInput(byte aSide) { + public boolean isLiquidInput(ForgeDirection side) { return true; } - public boolean isLiquidOutput(byte aSide) { + public boolean isLiquidOutput(ForgeDirection side) { 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(aDirection, 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); + final IFluidTank tTank = getFluidTankDrainable(aDirection, aFluid); if (tTank == null || tTank.getFluid() == null || tTank.getFluidAmount() == 0 || !tTank.getFluid() @@ -1167,7 +1161,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity @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(aDirection, null); if (tTank == null || tTank.getFluid() == null || tTank.getFluidAmount() == 0) return null; return tTank.drain(aAmountToDrain, aDoDrain); } @@ -1175,7 +1169,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity @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(aDirection, new FluidStack(aFluid, 0)); return tTank != null && (tTank.getFluid() == null || tTank.getFluid() .getFluid() == aFluid); } @@ -1183,14 +1177,14 @@ public abstract class MultiTileEntity extends CoverableTileEntity @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(aDirection, 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(aDirection); 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]); @@ -1246,7 +1240,7 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public boolean drainEnergyUnits(byte aSide, long aVoltage, long aAmperage) { + public boolean drainEnergyUnits(ForgeDirection side, long aVoltage, long aAmperage) { return false; } @@ -1271,17 +1265,17 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public long injectEnergyUnits(byte aSide, long aVoltage, long aAmperage) { + public long injectEnergyUnits(ForgeDirection side, long aVoltage, long aAmperage) { return 0; } @Override - public boolean inputEnergyFrom(byte aSide) { + public boolean inputEnergyFrom(ForgeDirection side) { return false; } @Override - public boolean outputsEnergyTo(byte aSide) { + public boolean outputsEnergyTo(ForgeDirection side) { return false; } @@ -1321,17 +1315,17 @@ public abstract class MultiTileEntity extends CoverableTileEntity } @Override - public int[] getAccessibleSlotsFromSide(int aSide) { + public int[] getAccessibleSlotsFromSide(int ordinalSide) { return GT_Values.emptyIntArray; } @Override - public boolean canInsertItem(int aSlot, ItemStack aStack, int aSide) { + public boolean canInsertItem(int aSlot, ItemStack aStack, int ordinalSide) { return false; } @Override - public boolean canExtractItem(int aSlot, ItemStack aStack, int aSide) { + public boolean canExtractItem(int aSlot, ItemStack aStack, int ordinalSide) { return false; } @@ -1379,28 +1373,28 @@ public abstract class MultiTileEntity extends CoverableTileEntity * Cover Helpers */ - public boolean coverLetsFluidIn(byte aSide, Fluid aFluid) { - return getCoverInfoAtSide(aSide).letsFluidIn(aFluid); + public boolean coverLetsFluidIn(ForgeDirection side, Fluid aFluid) { + return getCoverInfoAtSide(side).letsFluidIn(aFluid); } - public boolean coverLetsFluidOut(byte aSide, Fluid aFluid) { - return getCoverInfoAtSide(aSide).letsFluidOut(aFluid); + public boolean coverLetsFluidOut(ForgeDirection side, Fluid aFluid) { + return getCoverInfoAtSide(side).letsFluidOut(aFluid); } - public boolean coverLetsEnergyIn(byte aSide) { - return getCoverInfoAtSide(aSide).letsEnergyIn(); + public boolean coverLetsEnergyIn(ForgeDirection side) { + return getCoverInfoAtSide(side).letsEnergyIn(); } - public boolean coverLetsEnergyOut(byte aSide) { - return getCoverInfoAtSide(aSide).letsEnergyOut(); + public boolean coverLetsEnergyOut(ForgeDirection side) { + return getCoverInfoAtSide(side).letsEnergyOut(); } - public boolean coverLetsItemsIn(byte aSide, int aSlot) { - return getCoverInfoAtSide(aSide).letsItemsIn(aSlot); + public boolean coverLetsItemsIn(ForgeDirection side, int aSlot) { + return getCoverInfoAtSide(side).letsItemsIn(aSlot); } - public boolean coverLetsItemsOut(byte aSide, int aSlot) { - return getCoverInfoAtSide(aSide).letsItemsOut(aSlot); + public boolean coverLetsItemsOut(ForgeDirection side, int aSlot) { + return getCoverInfoAtSide(side).letsItemsOut(aSlot); } @Override diff --git a/src/main/java/gregtech/api/multitileentity/base/NonTickableMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/NonTickableMultiTileEntity.java index 90c931239a..0ad4d9004e 100644 --- a/src/main/java/gregtech/api/multitileentity/base/NonTickableMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/NonTickableMultiTileEntity.java @@ -4,6 +4,7 @@ import static gregtech.api.enums.GT_Values.NW; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.Packet; +import net.minecraftforge.common.util.ForgeDirection; import gregtech.api.net.GT_Packet_SendCoverData; import gregtech.api.util.ISerializableObject; @@ -34,13 +35,13 @@ public abstract class NonTickableMultiTileEntity extends MultiTileEntity { } @Override - public void issueCoverUpdate(byte aSide) { + public void issueCoverUpdate(ForgeDirection side) { if (!mConstructed) { // Queue these up and send them with the description packet - super.issueCoverUpdate(aSide); + super.issueCoverUpdate(side); } else { // Otherwise, send the data right away - final CoverInfo coverInfo = getCoverInfoAtSide(aSide); + final CoverInfo coverInfo = getCoverInfoAtSide(side); NW.sendPacketToAllPlayersInRange(worldObj, new GT_Packet_SendCoverData(coverInfo, this), xCoord, zCoord); // Just in case @@ -49,9 +50,9 @@ public abstract class NonTickableMultiTileEntity extends MultiTileEntity { } @Override - public void receiveCoverData(byte aCoverSide, int aCoverID, ISerializableObject aCoverData, + public void receiveCoverData(ForgeDirection coverSide, int aCoverID, ISerializableObject aCoverData, EntityPlayerMP aPlayer) { - super.receiveCoverData(aCoverSide, aCoverID, aCoverData, aPlayer); + super.receiveCoverData(coverSide, 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/TickableMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/TickableMultiTileEntity.java index 4fa06ff6b4..d61f32813f 100644 --- a/src/main/java/gregtech/api/multitileentity/base/TickableMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/TickableMultiTileEntity.java @@ -5,6 +5,7 @@ import static gregtech.GT_Mod.GT_FML_LOGGER; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; import gregtech.api.multitileentity.interfaces.IMultiTileEntity.IMTE_OnNeighborBlockChange; import gregtech.api.util.GT_Log; @@ -106,7 +107,7 @@ public abstract class TickableMultiTileEntity extends MultiTileEntity implements } @Override - public byte getComparatorValue(byte aSide) { + public byte getComparatorValue(ForgeDirection side) { 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 1168f8e7ce..6f508ab6f5 100644 --- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java +++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockController.java @@ -19,17 +19,17 @@ public interface IMultiBlockController extends IMultiTileEntity, IMultiBlockFlui @Override ChunkCoordinates getCoords(); - FluidStack getDrainableFluid(byte aSide); + FluidStack getDrainableFluid(ForgeDirection side); - FluidStack getDrainableFluid(byte aSide, Fluid fluid); + FluidStack getDrainableFluid(ForgeDirection side, Fluid fluid); - boolean isLiquidInput(byte aSide); + boolean isLiquidInput(ForgeDirection side); - boolean isLiquidOutput(byte aSide); + boolean isLiquidOutput(ForgeDirection side); - void registerCoveredPartOnSide(final int aSide, IMultiBlockPart part); + void registerCoveredPartOnSide(final ForgeDirection side, IMultiBlockPart part); - void unregisterCoveredPartOnSide(final int aSide, IMultiBlockPart part); + void unregisterCoveredPartOnSide(final ForgeDirection side, IMultiBlockPart part); void registerInventory(String aName, String aID, int aInventorySize, int aType); diff --git a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java index 598c057882..d6d8bf5310 100644 --- a/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java +++ b/src/main/java/gregtech/api/multitileentity/interfaces/IMultiBlockEnergy.java @@ -1,5 +1,7 @@ package gregtech.api.multitileentity.interfaces; +import net.minecraftforge.common.util.ForgeDirection; + import gregtech.api.multitileentity.multiblock.base.MultiBlockPart; interface IMultiBlockEnergy { @@ -22,9 +24,9 @@ interface IMultiBlockEnergy { boolean increaseStoredEnergyUnits(MultiBlockPart aPart, long aEnergy, boolean aIgnoreTooMuchEnergy); - boolean drainEnergyUnits(MultiBlockPart aPart, byte aSide, long aVoltage, long aAmperage); + boolean drainEnergyUnits(MultiBlockPart aPart, ForgeDirection side, long aVoltage, long aAmperage); - long injectEnergyUnits(MultiBlockPart aPart, byte aSide, long aVoltage, long aAmperage); + long injectEnergyUnits(MultiBlockPart aPart, ForgeDirection side, long aVoltage, long aAmperage); long getAverageElectricInput(MultiBlockPart aPart); @@ -34,7 +36,7 @@ interface IMultiBlockEnergy { long getEUCapacity(MultiBlockPart aPart); - boolean inputEnergyFrom(MultiBlockPart aPart, byte aSide); + boolean inputEnergyFrom(MultiBlockPart aPart, ForgeDirection side); - boolean outputsEnergyTo(MultiBlockPart aPart, byte aSide); + boolean outputsEnergyTo(MultiBlockPart aPart