From b1ac2dc90ec6847e5a328fb12a3ece3b670df33c Mon Sep 17 00:00:00 2001 From: Léa Gris Date: Thu, 1 Sep 2022 13:17:27 +0200 Subject: impl(covers): functional covers uses machine casing (#1317) * impl(covers): functional covers uses machine casing - Functional covers now will let see the casing, when placed on machines. - When placed on pipes or frames, they continue to use their own tiered casing as they used to. * impr(cover): restore backward compat interface to cover registgration Registering covers with the old interface works again. Legacy cover registration just produce covers that renders the old way without transparency over machine casing. Removed the useless GT_Cover_Cased class and added the feature to the GT_CoverBehavior class, maintaining the old constructor alongside the new constructor with an overlay texture. * impr(covers): deprecate old constructors Delete totally redundant and unused EnergyOnly cover Keeps other unused covers as TODO reimplementation tasks * impr(covers): fludStorageMonitor overlay - Re-add FluidStorageMonitor fluid-texture overlay - Allow light-emitting fluids to render as glow texture. * impr(covers): Expand foreground texture support to GT_Cover_FacadeBase * spotlessapply --- .../api/metatileentity/CoverableTileEntity.java | 15 +++++++++++++-- .../java/gregtech/api/util/GT_CoverBehavior.java | 7 ++++++- .../java/gregtech/api/util/GT_CoverBehaviorBase.java | 20 ++++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) (limited to 'src/main/java/gregtech/api') diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index 6c61ae8599..caf3c1b15f 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -164,8 +164,19 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov if (GT_Mod.instance.isClientSide() && (GT_Client.hideValue & 0x1) != 0) { return Textures.BlockIcons.HIDDEN_TEXTURE[0]; // See through } - final ITexture coverTexture = getCoverBehaviorAtSideNew(aSide) - .getSpecialCoverTexture(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this); + GT_CoverBehaviorBase coverBehavior = getCoverBehaviorAtSideNew(aSide); + final ITexture coverTexture; + if (coverBehavior != null) { + if (!(this instanceof BaseMetaPipeEntity)) { + coverTexture = coverBehavior.getSpecialCoverFGTexture( + aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this); + } else { + coverTexture = coverBehavior.getSpecialCoverTexture( + aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this); + } + } else { + coverTexture = null; + } return coverTexture != null ? coverTexture : GregTech_API.sCovers.get(new GT_ItemStack(getCoverIDAtSide(aSide))); diff --git a/src/main/java/gregtech/api/util/GT_CoverBehavior.java b/src/main/java/gregtech/api/util/GT_CoverBehavior.java index de1514c956..595e421147 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehavior.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehavior.java @@ -3,6 +3,7 @@ package gregtech.api.util; import static gregtech.api.enums.GT_Values.E; import gregtech.api.enums.GT_Values; +import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.net.GT_Packet_TileEntityCoverGUI; import net.minecraft.entity.player.EntityPlayer; @@ -19,7 +20,11 @@ public abstract class GT_CoverBehavior extends GT_CoverBehaviorBase { public EntityPlayer lastPlayer = null; private final Class typeToken; + private final ITexture coverFGTexture; protected GT_CoverBehaviorBase(Class typeToken) { + this(typeToken, null); + } + + protected GT_CoverBehaviorBase(Class typeToken, ITexture coverTexture) { this.typeToken = typeToken; + this.coverFGTexture = coverTexture; } public abstract T createDataObject(int aLegacyData); @@ -87,6 +93,15 @@ public abstract class GT_CoverBehaviorBase { return getDisplayStackImpl(aCoverID, forceCast(aCoverVariable)); } + /** + * Get the special foreground cover texture associated with this cover. Return null if one should use the texture passed to + * {@link gregtech.api.GregTech_API#registerCover(ItemStack, ITexture, GT_CoverBehaviorBase)} or its overloads. + */ + public final ITexture getSpecialCoverFGTexture( + byte aSide, int aCoverID, ISerializableObject aCoverVariable, ICoverable aTileEntity) { + return getSpecialCoverFGTextureImpl(aSide, aCoverID, forceCast(aCoverVariable), aTileEntity); + } + /** * Get the special cover texture associated with this cover. Return null if one should use the texture passed to * {@link gregtech.api.GregTech_API#registerCover(ItemStack, ITexture, GT_CoverBehaviorBase)} or its overloads. @@ -380,6 +395,11 @@ public abstract class GT_CoverBehaviorBase { return GT_Utility.intToStack(aCoverID); } + protected ITexture getSpecialCoverFGTextureImpl( + byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) { + return coverFGTexture; + } + protected ITexture getSpecialCoverTextureImpl(byte aSide, int aCoverID, T aCoverVariable, ICoverable aTileEntity) { return null; } -- cgit