aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity/implementations
diff options
context:
space:
mode:
authorBlood-Asp <bloodasphendrik@gmail.com>2017-09-03 15:54:24 +0200
committerGitHub <noreply@github.com>2017-09-03 15:54:24 +0200
commitec1460d2da67e95e8b8ba00d88fa17b24c7d63b9 (patch)
treef09b69e32f604a0d832f6026fc350982fda468b9 /src/main/java/gregtech/api/metatileentity/implementations
parenta377bcea632bf80abb74d33b4814e62c456dcbb8 (diff)
parent8eade43a195ac74ee28880d8833eeaf7dbd7d64f (diff)
downloadGT5-Unofficial-ec1460d2da67e95e8b8ba00d88fa17b24c7d63b9.tar.gz
GT5-Unofficial-ec1460d2da67e95e8b8ba00d88fa17b24c7d63b9.tar.bz2
GT5-Unofficial-ec1460d2da67e95e8b8ba00d88fa17b24c7d63b9.zip
Merge pull request #1184 from GTNewHorizons/texture_overhaul
Texture overhaul
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/implementations')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch.java71
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java21
2 files changed, 76 insertions, 16 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch.java
index d33b71bc73..fe21e8a3c2 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch.java
@@ -1,13 +1,17 @@
package gregtech.api.metatileentity.implementations;
+import gregtech.GT_Mod;
+import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import net.minecraft.nbt.NBTTagCompound;
public abstract class GT_MetaTileEntity_Hatch extends GT_MetaTileEntity_BasicTank {
-
+ @Deprecated //Use texture changing method
public byte mMachineBlock = 0;
+ private byte mTexturePage = 0;
+ private byte actualTexture = 0;
public GT_MetaTileEntity_Hatch(int aID, String aName, String aNameRegional, int aTier, int aInvSlotCount, String aDescription, ITexture... aTextures) {
super(aID, aName, aNameRegional, aTier, aInvSlotCount, aDescription, aTextures);
@@ -40,29 +44,72 @@ public abstract class GT_MetaTileEntity_Hatch extends GT_MetaTileEntity_BasicTan
@Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
- return aSide != aFacing ? mMachineBlock > 0 ? new ITexture[]{Textures.BlockIcons.CASING_BLOCKS[mMachineBlock]} : new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[mTier][aColorIndex + 1]} : mMachineBlock > 0 ? aActive ? getTexturesActive(Textures.BlockIcons.CASING_BLOCKS[mMachineBlock]) : getTexturesInactive(Textures.BlockIcons.CASING_BLOCKS[mMachineBlock]) : aActive ? getTexturesActive(Textures.BlockIcons.MACHINE_CASINGS[mTier][aColorIndex + 1]) : getTexturesInactive(Textures.BlockIcons.MACHINE_CASINGS[mTier][aColorIndex + 1]);
+ int textureIndex=actualTexture|(mTexturePage<<7);//Shift seven since one page is 128 textures!
+ int texturePointer=(byte)(actualTexture&0x7F);//just to be sure, from my testing the 8th bit cannot be set clientside
+ return aSide != aFacing ?
+ textureIndex > 0 ?
+ new ITexture[]{Textures.BlockIcons.casingTexturePages[mTexturePage][texturePointer]} :
+ new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[mTier][aColorIndex + 1]} :
+ textureIndex > 0 ?
+ aActive ?
+ getTexturesActive(Textures.BlockIcons.casingTexturePages[mTexturePage][texturePointer]) :
+ getTexturesInactive(Textures.BlockIcons.casingTexturePages[mTexturePage][texturePointer]) :
+ aActive ?
+ getTexturesActive(Textures.BlockIcons.MACHINE_CASINGS[mTier][aColorIndex + 1]) :
+ getTexturesInactive(Textures.BlockIcons.MACHINE_CASINGS[mTier][aColorIndex + 1]);
}
@Override
public void saveNBTData(NBTTagCompound aNBT) {
super.saveNBTData(aNBT);
- aNBT.setByte("mMachineBlock", mMachineBlock);
+ aNBT.setByte("mMachineBlock", actualTexture);
+ aNBT.setByte("mTexturePage", mTexturePage);
}
@Override
public void loadNBTData(NBTTagCompound aNBT) {
super.loadNBTData(aNBT);
- mMachineBlock = aNBT.getByte("mMachineBlock");
+ actualTexture=aNBT.getByte("mMachineBlock");
+ mTexturePage=aNBT.getByte("mTexturePage");
+
+ if(mTexturePage!=0 && GT_Values.GT.isServerSide())
+ actualTexture|=0x80;//<- lets just hope no one needs the correct value for that on server
+ mMachineBlock=actualTexture;
+ }
+
+ public final void updateTexture(int textureIndex){
+ onValueUpdate((byte) textureIndex);
+ onTexturePageUpdate((byte) (textureIndex>>7));
+ }
+
+ public final void updateTexture(byte texturePage, byte machineBlock){
+ onValueUpdate(machineBlock);
+ onTexturePageUpdate(texturePage);
}
@Override
public final void onValueUpdate(byte aValue) {
- mMachineBlock = (byte) (aValue & 127);
+ actualTexture=(byte)(aValue & 0x7F);
+ mMachineBlock=actualTexture;
+ mTexturePage=0;
}
@Override
public final byte getUpdateData() {
- return (byte) (mMachineBlock & 127);
+ return (byte)(actualTexture & 0x7F);
+ }
+
+ public final void onTexturePageUpdate(byte aValue) {
+ mTexturePage = (byte)(aValue & 0x7F);
+ if(mTexturePage!=0 && getBaseMetaTileEntity().isServerSide()) {//just to be sure
+ mMachineBlock|=0x80;//<- lets just hope no one needs the correct value for that on server
+ actualTexture=mMachineBlock;
+ }
+ //set last bit to allow working of the page reset-er to 0 in rare case when texture id is the same but page changes to 0
+ }
+
+ public final byte getTexturePage() {
+ return (byte)(mTexturePage & 0x7F);
}
@Override
@@ -94,4 +141,16 @@ public abstract class GT_MetaTileEntity_Hatch extends GT_MetaTileEntity_BasicTan
public boolean displaysStackSize() {
return false;
}
+
+ @Override
+ public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {//in that method since it is usually not overriden, especially for hatches.
+ if(actualTexture!=mMachineBlock){//revert to page 0 on edition of the field - old code way
+ actualTexture=(byte)(mMachineBlock & 0x7F);
+ mMachineBlock=actualTexture;//clear last bit in mMachineBlock since now we are at page 0 after the direct field change
+ mTexturePage=0;//assuming old code only supports page 0
+ }
+ super.onPreTick(aBaseMetaTileEntity, aTick);
+ }
+
+ //To change to other page -> use the setter method -> updateTexture
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
index f0fb16f6d7..fd6b144d84 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
@@ -724,8 +724,9 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
if (aTileEntity == null) return false;
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) return false;
- if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch)
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch) {
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
+ }
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input)
return mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus)
@@ -750,7 +751,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) return false;
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Maintenance) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
return mMaintenanceHatches.add((GT_MetaTileEntity_Hatch_Maintenance) aMetaTileEntity);
}
return false;
@@ -763,7 +764,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) return false;
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Energy) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
return mEnergyHatches.add((GT_MetaTileEntity_Hatch_Energy) aMetaTileEntity);
}
return false;
@@ -774,7 +775,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) return false;
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Dynamo) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
return mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo) aMetaTileEntity);
}
return false;
@@ -785,7 +786,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) return false;
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Muffler) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
return mMufflerHatches.add((GT_MetaTileEntity_Hatch_Muffler) aMetaTileEntity);
}
return false;
@@ -796,12 +797,12 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) return false;
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Input) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity).mRecipeMap = getRecipeMap();
return mInputHatches.add((GT_MetaTileEntity_Hatch_Input) aMetaTileEntity);
}
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_InputBus) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity).mRecipeMap = getRecipeMap();
return mInputBusses.add((GT_MetaTileEntity_Hatch_InputBus) aMetaTileEntity);
}
@@ -813,11 +814,11 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity == null) return false;
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Output) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
return mOutputHatches.add((GT_MetaTileEntity_Hatch_Output) aMetaTileEntity);
}
if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_OutputBus) {
- ((GT_MetaTileEntity_Hatch) aMetaTileEntity).mMachineBlock = (byte) aBaseCasingIndex;
+ ((GT_MetaTileEntity_Hatch) aMetaTileEntity).updateTexture(aBaseCasingIndex);
return mOutputBusses.add((GT_MetaTileEntity_Hatch_OutputBus) aMetaTileEntity);
}
return false;