aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java15
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehavior.java7
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java20
3 files changed, 39 insertions, 3 deletions
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<ISerializabl
public EntityPlayer lastPlayer = null;
public GT_CoverBehavior() {
- super(ISerializableObject.LegacyCoverData.class);
+ this(null);
+ }
+
+ public GT_CoverBehavior(ITexture coverTexture) {
+ super(ISerializableObject.LegacyCoverData.class, coverTexture);
}
private static int convert(ISerializableObject.LegacyCoverData data) {
diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java
index 470a250ee7..efbff79957 100644
--- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java
+++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java
@@ -25,9 +25,15 @@ public abstract class GT_CoverBehaviorBase<T extends ISerializableObject> {
public EntityPlayer lastPlayer = null;
private final Class<T> typeToken;
+ private final ITexture coverFGTexture;
protected GT_CoverBehaviorBase(Class<T> typeToken) {
+ this(typeToken, null);
+ }
+
+ protected GT_CoverBehaviorBase(Class<T> typeToken, ITexture coverTexture) {
this.typeToken = typeToken;
+ this.coverFGTexture = coverTexture;
}
public abstract T createDataObject(int aLegacyData);
@@ -88,6 +94,15 @@ public abstract class GT_CoverBehaviorBase<T extends ISerializableObject> {
}
/**
+ * 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<T extends ISerializableObject> {
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;
}