diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2022-08-19 00:18:26 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-18 18:18:26 +0200 |
commit | 6c82842b56e9f613760c6b0cff6480af2e2ddb07 (patch) | |
tree | a3ac74162d8057960032403d2a354bccf0e345c3 /src/main/java/gregtech/api | |
parent | 27a68fdf779e6ab8aa6ff5b48c0977855709c3ad (diff) | |
download | GT5-Unofficial-6c82842b56e9f613760c6b0cff6480af2e2ddb07.tar.gz GT5-Unofficial-6c82842b56e9f613760c6b0cff6480af2e2ddb07.tar.bz2 GT5-Unofficial-6c82842b56e9f613760c6b0cff6480af2e2ddb07.zip |
no more magical texture index (#1249)
* no more magical texture index
* add a reverse map for fxxk sake
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r-- | src/main/java/gregtech/api/enums/Textures.java | 21 | ||||
-rw-r--r-- | src/main/java/gregtech/api/interfaces/IHasIndexedTexture.java | 15 | ||||
-rw-r--r-- | src/main/java/gregtech/api/util/GT_Utility.java | 7 |
3 files changed, 42 insertions, 1 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. */ |