aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/enums/Textures.java21
-rw-r--r--src/main/java/gregtech/api/interfaces/IHasIndexedTexture.java15
-rw-r--r--src/main/java/gregtech/api/util/GT_Utility.java7
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings1.java14
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings2.java15
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings3.java11
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings4.java11
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings5.java17
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings6.java14
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings8.java13
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java19
11 files changed, 109 insertions, 48 deletions
diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java
index cacbc42b25..08beb1a25d 100644
--- a/src/main/java/gregtech/api/enums/Textures.java
+++ b/src/main/java/gregtech/api/enums/Textures.java
@@ -9,6 +9,9 @@ import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
+import java.util.HashMap;
+import java.util.Map;
+
import static gregtech.api.enums.GT_Values.RES_PATH_BLOCK;
import static gregtech.api.enums.GT_Values.RES_PATH_ITEM;
@@ -1964,8 +1967,16 @@ public class Textures {
public static ITexture[][] MACHINE_CASINGS = new ITexture[15][17];
/**
* by Default pages are null
+ * page 0: 0-63 GT casing 1-4, 64-127 GT++
+ * page 1: 0-15 GT casing 5, 22-26 GS dyson swarm, 48-57 GT casing 8, 63 EMT, 80-95 GT reinforced blocks,
+ * 96 casing 2 meta 6, 97 error casing
+ * page 8: 0-111 TecTech, 112-127 GT casing 6
+ * page 12: 0-127 GlodBlock
+ * page 42: 0-126 glee8e, 127 KekzTech LSC base
*/
public static ITexture[][] casingTexturePages = new ITexture[128][];//page holder so we don't make an short long array
+ public static final int ERROR_TEXTURE_INDEX = (1 << 7) + 97;
+ private static final Map<ITexture, Integer> reverseMap = new HashMap<>();
static {
for (byte i = 0; i < MACHINE_CASINGS.length; i++)
@@ -1978,6 +1989,7 @@ public class Textures {
//adds some known pages, modders also can do it...
GT_Utility.addTexturePage((byte) 1);
GT_Utility.addTexturePage((byte) 8);
+ setCasingTextureForId(ERROR_TEXTURE_INDEX, ERROR_RENDERING[0]);
}
protected IIcon mIcon;
@@ -1991,11 +2003,18 @@ public class Textures {
}
public static void setCasingTextureForId(int id, ITexture iTexture) {
- casingTexturePages[(id >> 7) & 0x7f][id & 0x7f] = iTexture;
+ casingTexturePages[(byte) ((id >> 7) & 0x7f)][(byte) (id & 0x7f)] = iTexture;
+ reverseMap.put(iTexture, id);
}
public static void setCasingTexture(byte page, byte index, ITexture iTexture) {
casingTexturePages[page][index] = iTexture;
+ reverseMap.put(iTexture, (page << 7) + index);
+ }
+
+ public static int getTextureIndex(ITexture texture) {
+ Integer id = reverseMap.get(texture);
+ return id == null ? ERROR_TEXTURE_INDEX : id;
}
@Override
diff --git a/src/main/java/gregtech/api/interfaces/IHasIndexedTexture.java b/src/main/java/gregtech/api/interfaces/IHasIndexedTexture.java
new file mode 100644
index 0000000000..7401d35323
--- /dev/null
+++ b/src/main/java/gregtech/api/interfaces/IHasIndexedTexture.java
@@ -0,0 +1,15 @@
+package gregtech.api.interfaces;
+
+/**
+ * To be implemented on blocks. Usually machine casing blocks.
+ */
+public interface IHasIndexedTexture {
+ /**
+ * Returns the statically mapped texture for this casing. Return
+ * {@link gregtech.api.enums.Textures.BlockIcons#ERROR_TEXTURE_INDEX} if meta maps to a nonexistent block, or the
+ * block does not have a statically mapped texture.
+ * @param aMeta block meta
+ * @return texture index into {@link gregtech.api.enums.Textures.BlockIcons#casingTexturePages}
+ */
+ int getTextureIndex(int aMeta);
+}
diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java
index a1ad2e317c..b03c3ab13e 100644
--- a/src/main/java/gregtech/api/util/GT_Utility.java
+++ b/src/main/java/gregtech/api/util/GT_Utility.java
@@ -18,6 +18,7 @@ import gregtech.api.enums.*;
import gregtech.api.events.BlockScanningEvent;
import gregtech.api.interfaces.IBlockContainer;
import gregtech.api.interfaces.IDebugableBlock;
+import gregtech.api.interfaces.IHasIndexedTexture;
import gregtech.api.interfaces.IProjectileItem;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IBasicEnergyContainer;
@@ -3246,6 +3247,12 @@ public class GT_Utility {
return base;
}
+ public static int getCasingTextureIndex(Block block, int meta) {
+ if (block instanceof IHasIndexedTexture)
+ return ((IHasIndexedTexture) block).getTextureIndex(meta);
+ return Textures.BlockIcons.ERROR_TEXTURE_INDEX;
+ }
+
@AutoValue
public abstract static class ItemId {
/** This method copies NBT, as it is mutable. */
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings1.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings1.java
index edbdacdfbd..5ed40ec1a3 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings1.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings1.java
@@ -1,16 +1,12 @@
package gregtech.common.blocks;
-import gregtech.api.GregTech_API;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
-import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
-import static gregtech.api.enums.GT_Values.RES_PATH_BLOCK;
-
public class GT_Block_Casings1 extends GT_Block_Casings_Abstract {
/**
@@ -29,10 +25,7 @@ public class GT_Block_Casings1 extends GT_Block_Casings_Abstract {
public GT_Block_Casings1() {
- super(GT_Item_Casings1.class, "gt.blockcasings", GT_Material_Casings.INSTANCE);
- for (int i = 0; i < 16; i++) {
- Textures.BlockIcons.casingTexturePages[0][i] = TextureFactory.of(this, i);
- }
+ super(GT_Item_Casings1.class, "gt.blockcasings", GT_Material_Casings.INSTANCE, 16);
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "ULV Machine Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "LV Machine Casing");
@@ -69,6 +62,11 @@ public class GT_Block_Casings1 extends GT_Block_Casings_Abstract {
}
@Override
+ public int getTextureIndex(int aMeta) {
+ return aMeta;
+ }
+
+ @Override
public IIcon getIcon(int aSide, int aMeta) {
if ((aMeta >= 0) && (aMeta < 16)) {
switch (aMeta) {
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings2.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings2.java
index f4f478b7be..1b6ac42ee2 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings2.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings2.java
@@ -15,12 +15,7 @@ import net.minecraftforge.common.util.ForgeDirection;
public class GT_Block_Casings2 extends GT_Block_Casings_Abstract {
public GT_Block_Casings2() {
- super(GT_Item_Casings2.class, "gt.blockcasings2", GT_Material_Casings.INSTANCE);
- for (int i = 0; i < 16; i++) {
- if (i != 6) {
- Textures.BlockIcons.casingTexturePages[0][(i + 16)] = TextureFactory.of(this, i);
- }
- }
+ super(GT_Item_Casings2.class, "gt.blockcasings2", GT_Material_Casings.INSTANCE, 96);
//Special handler for Pyrolyse Oven Casing on hatches...
Textures.BlockIcons.casingTexturePages[0][22] = TextureFactory.of(Block.getBlockFromItem(ItemList.Casing_ULV.get(1).getItem()), 0, ForgeDirection.UNKNOWN, Dyes.MACHINE_METAL.mRGBa);
@@ -56,8 +51,12 @@ public class GT_Block_Casings2 extends GT_Block_Casings_Abstract {
ItemList.Casing_Pipe_Steel.set(new ItemStack(this, 1, 13));
ItemList.Casing_Pipe_Titanium.set(new ItemStack(this, 1, 14));
ItemList.Casing_Pipe_TungstenSteel.set(new ItemStack(this, 1, 15));
-
-}
+ }
+
+ @Override
+ public int getTextureIndex(int aMeta) {
+ return aMeta == 6 ? ((1 << 7) + 96) : aMeta + 16;
+ }
@Override
public IIcon getIcon(int aSide, int aMeta) {
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings3.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings3.java
index 81be342822..cc9bbd25f8 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings3.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings3.java
@@ -2,17 +2,13 @@ package gregtech.common.blocks;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
-import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
public class GT_Block_Casings3 extends GT_Block_Casings_Abstract {
public GT_Block_Casings3() {
- super(GT_Item_Casings3.class, "gt.blockcasings3", GT_Material_Casings.INSTANCE);
- for (byte i = 0; i < 16; i = (byte) (i + 1)) {
- Textures.BlockIcons.casingTexturePages[0][(i + 32)] = TextureFactory.of(this, i);
- }
+ super(GT_Item_Casings3.class, "gt.blockcasings3", GT_Material_Casings.INSTANCE, 16);
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Yellow Stripes Block");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Yellow Stripes Block");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Radioactive Hazard Sign Block");
@@ -48,6 +44,11 @@ public class GT_Block_Casings3 extends GT_Block_Casings_Abstract {
}
@Override
+ public int getTextureIndex(int aMeta) {
+ return aMeta + 32;
+ }
+
+ @Override
public IIcon getIcon(int aSide, int aMeta) {
switch (aMeta) {
case 0:
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings4.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings4.java
index cef115f0c0..90f568b73f 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings4.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings4.java
@@ -6,7 +6,6 @@ import gregtech.GT_Mod;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_RenderingWorld;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbine;
@@ -34,10 +33,7 @@ public class GT_Block_Casings4 extends GT_Block_Casings_Abstract {
public static boolean mConnectedMachineTextures = true;
public GT_Block_Casings4() {
- super(GT_Item_Casings4.class, "gt.blockcasings4", GT_Material_Casings.INSTANCE);
- for (byte i = 0; i < 16; i = (byte) (i + 1)) {
- Textures.BlockIcons.casingTexturePages[0][i + 48] = TextureFactory.of(this, i);
- }
+ super(GT_Item_Casings4.class, "gt.blockcasings4", GT_Material_Casings.INSTANCE, 16);
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Robust Tungstensteel Machine Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Clean Stainless Steel Machine Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Stable Titanium Machine Casing");
@@ -75,6 +71,11 @@ public class GT_Block_Casings4 extends GT_Block_Casings_Abstract {
}
@Override
+ public int getTextureIndex(int aMeta) {
+ return aMeta + 48;
+ }
+
+ @Override
public IIcon getIcon(int aSide, int aMeta) {
switch (aMeta) {
case 0:
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java
index bfa4e40212..4de58c3a35 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings5.java
@@ -6,7 +6,6 @@ import gregtech.api.enums.HeatingCoilLevel;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IHeatingCoil;
-import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
@@ -18,10 +17,7 @@ import static gregtech.api.enums.HeatingCoilLevel.*;
public class GT_Block_Casings5 extends GT_Block_Casings_Abstract implements IHeatingCoil {
public GT_Block_Casings5() {
- super(GT_Item_Casings5.class, "gt.blockcasings5", GT_Material_Casings.INSTANCE);
- for (byte i = 0; i < 16; i = (byte) (i + 1)) {
- Textures.BlockIcons.casingTexturePages[1][i] = TextureFactory.of(this, i);
- }
+ super(GT_Item_Casings5.class, "gt.blockcasings5", GT_Material_Casings.INSTANCE, 16);
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Cupronickel Coil Block");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Kanthal Coil Block");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Nichrome Coil Block");
@@ -37,7 +33,7 @@ public class GT_Block_Casings5 extends GT_Block_Casings_Abstract implements IHea
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".12.name", "Hypogen Coil Block");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".13.name", "Eternal Coil Block");
-
+
ItemList.Casing_Coil_Cupronickel.set(new ItemStack(this, 1, 0));
ItemList.Casing_Coil_Kanthal.set(new ItemStack(this, 1, 1));
ItemList.Casing_Coil_Nichrome.set(new ItemStack(this, 1, 2));
@@ -55,6 +51,11 @@ public class GT_Block_Casings5 extends GT_Block_Casings_Abstract implements IHea
}
@Override
+ public int getTextureIndex(int aMeta) {
+ return (1 << 7 ) | aMeta;
+ }
+
+ @Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int aSide, int aMeta) {
switch (aMeta) {
@@ -161,8 +162,8 @@ public class GT_Block_Casings5 extends GT_Block_Casings_Abstract implements IHea
return 0;
}
}
-
-
+
+
@Override
public HeatingCoilLevel getCoilHeat(int meta) {
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings6.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings6.java
index 96b7890fd7..6843673e2b 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings6.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings6.java
@@ -4,7 +4,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
-import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
@@ -12,11 +11,8 @@ import net.minecraft.world.IBlockAccess;
public class GT_Block_Casings6 extends GT_Block_Casings_Abstract {
public GT_Block_Casings6() {
- super(GT_Item_Casings6.class, "gt.blockcasings6", GT_Material_Casings.INSTANCE);
- for (int i = 0; i < 16; i = (i + 1)) {
- Textures.BlockIcons.casingTexturePages[8][i + 112] = TextureFactory.of(this, i);
- }
-
+ super(GT_Item_Casings6.class, "gt.blockcasings6", GT_Material_Casings.INSTANCE, 16);
+
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Hermetic Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Hermetic Casing I");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Hermetic Casing II");
@@ -51,6 +47,12 @@ public class GT_Block_Casings6 extends GT_Block_Casings_Abstract {
ItemList.Casing_Tank_14.set(new ItemStack(this, 1, 14));
ItemList.Casing_Tank_15.set(new ItemStack(this, 1, 15));
}
+
+ @Override
+ public int getTextureIndex(int aMeta) {
+ return (8 << 7) | (aMeta + 112);
+ }
+
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int aSide, int aMeta) {
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings8.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings8.java
index 989be62017..e8ccc47b3d 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings8.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings8.java
@@ -2,11 +2,9 @@ package gregtech.common.blocks;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import gregtech.GT_Mod;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_RenderingWorld;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbine;
@@ -20,14 +18,12 @@ public class GT_Block_Casings8 extends GT_Block_Casings_Abstract {
//WATCH OUT FOR TEXTURE ID's
public GT_Block_Casings8() {
- super(GT_Item_Casings8.class, "gt.blockcasings8", GT_Material_Casings.INSTANCE);
+ super(GT_Item_Casings8.class, "gt.blockcasings8", GT_Material_Casings.INSTANCE, 10);
/*
* DO NOT USE INDEX 15 !
* USED HERE: https://github.com/GTNewHorizons/Electro-Magic-Tools/pull/17
*/
- for (int i = 0; i < 10; i = (i + 1)) {
- Textures.BlockIcons.casingTexturePages[1][i+48] = TextureFactory.of(this, i);
- }
+
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Chemically Inert Machine Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "PTFE Pipe Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Mining Neutronium Casing");
@@ -52,6 +48,11 @@ public class GT_Block_Casings8 extends GT_Block_Casings_Abstract {
}
@Override
+ public int getTextureIndex(int aMeta) {
+ return (1 << 7) | (aMeta + 48);
+ }
+
+ @Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int aSide, int aMeta) {
switch (aMeta) {
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java
index 072259f2ee..7045949920 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java
@@ -3,7 +3,9 @@ package gregtech.common.blocks;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.Textures;
import gregtech.api.items.GT_Generic_Block;
+import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_LanguageManager;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@@ -21,7 +23,7 @@ import net.minecraft.world.World;
import java.util.List;
-public abstract class GT_Block_Casings_Abstract extends GT_Generic_Block {
+public abstract class GT_Block_Casings_Abstract extends GT_Generic_Block implements gregtech.api.interfaces.IHasIndexedTexture {
public GT_Block_Casings_Abstract(Class<? extends ItemBlock> aItemClass, String aName, Material aMaterial) {
super(aItemClass, aName, aMaterial);
setStepSound(soundTypeMetal);
@@ -30,6 +32,13 @@ public abstract class GT_Block_Casings_Abstract extends GT_Generic_Block {
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + 32767 + ".name", "Any Sub Block of this");
}
+ public GT_Block_Casings_Abstract(Class<? extends ItemBlock> aItemClass, String aName, Material aMaterial, int aMaxMeta) {
+ this(aItemClass, aName, aMaterial);
+ for (int i = 0; i < aMaxMeta; i++) {
+ Textures.BlockIcons.setCasingTextureForId(getTextureIndex(i), TextureFactory.of(this, i));
+ }
+ }
+
@Override
public String getHarvestTool(int aMeta) {
return "wrench";
@@ -117,4 +126,12 @@ public abstract class GT_Block_Casings_Abstract extends GT_Generic_Block {
if (!aStack.getDisplayName().contains(".name")) aList.add(aStack);
}
}
+
+ /**
+ * Provide a fallback to subclasses in addons.
+ */
+ @Override
+ public int getTextureIndex(int aMeta) {
+ return Textures.BlockIcons.ERROR_TEXTURE_INDEX;
+ }
}