diff options
author | Jason Mitchell <mitchej@gmail.com> | 2022-07-29 10:23:45 -0700 |
---|---|---|
committer | Jason Mitchell <mitchej+github@gmail.com> | 2022-08-26 07:42:48 -0700 |
commit | eb95711aadb0066e70440111f93167f6164e6da8 (patch) | |
tree | 2aeb301130661e382d0f8a02a861ec66c9bc243d /src/main/java/gregtech/api/multitileentity/base | |
parent | 68619f5c654f8a44f499f79b859a26787d778a18 (diff) | |
download | GT5-Unofficial-eb95711aadb0066e70440111f93167f6164e6da8.tar.gz GT5-Unofficial-eb95711aadb0066e70440111f93167f6164e6da8.tar.bz2 GT5-Unofficial-eb95711aadb0066e70440111f93167f6164e6da8.zip |
WIP Texture support
Diffstat (limited to 'src/main/java/gregtech/api/multitileentity/base')
-rw-r--r-- | src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java b/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java index f479b8150f..96a04b6147 100644 --- a/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java +++ b/src/main/java/gregtech/api/multitileentity/base/BaseMultiTileEntity.java @@ -7,6 +7,8 @@ import gregtech.api.GregTech_API; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; import gregtech.api.enums.SoundResource; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregtechWailaProvider; import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords; @@ -20,11 +22,14 @@ import gregtech.api.net.GT_Packet_New; import gregtech.api.net.GT_Packet_TileEntity; import gregtech.api.objects.GT_ItemStack; import gregtech.api.objects.XSTR; +import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Log; import gregtech.api.util.GT_ModHandler; 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 mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; @@ -53,17 +58,20 @@ import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidTank; import java.util.ArrayList; -import java.util.Arrays; 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 IIconContainer[] mTextures = emptyIconContainerArray, 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}; @@ -151,6 +159,21 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements readCoverNBT(aNBT); readMultiTileNBT(aNBT); + if(GregTech_API.sBlockIcons == null && aNBT.hasKey(NBT.TEXTURE)) { + // Loading the registry + final String textureName = aNBT.getString(NBT.TEXTURE); + mTextures = new IIconContainer[] { + new Textures.BlockIcons.CustomIcon("machines/multiblockparts/"+textureName+"/bottom"), + new Textures.BlockIcons.CustomIcon("machines/multiblockparts/"+textureName+"/top"), + new Textures.BlockIcons.CustomIcon("machines/multiblockparts/"+textureName+"/side"), + }; + } else { + // Loading an instance + final TileEntity tCanonicalTileEntity = MultiTileEntityRegistry.getCanonicalTileEntity(getMultiTileEntityRegistryID(), getMultiTileEntityID()); + if(tCanonicalTileEntity instanceof BaseMultiTileEntity) + mTextures = ((BaseMultiTileEntity)tCanonicalTileEntity).mTextures; + } + 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}; @@ -298,14 +321,21 @@ public abstract class BaseMultiTileEntity extends CoverableTileEntity implements final ITexture[] textureUncovered = getTexture(aBlock, aSide, true, aRenderPass); if (coverTexture != null) { - final ITexture[] textureCovered = Arrays.copyOf(textureUncovered, textureUncovered.length + 1); - textureCovered[textureUncovered.length] = coverTexture; - return textureCovered; + return new ITexture[]{ + GT_MultiTexture.get(textureUncovered), + coverTexture + }; } else { return textureUncovered; } } + @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])}; + } + @Override public void setCustomName(String aName) { mCustomName = aName; |