aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Textures.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Textures.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Textures.h')
-rw-r--r--Minecraft.Client/Textures.h287
1 files changed, 287 insertions, 0 deletions
diff --git a/Minecraft.Client/Textures.h b/Minecraft.Client/Textures.h
new file mode 100644
index 00000000..eb0799e2
--- /dev/null
+++ b/Minecraft.Client/Textures.h
@@ -0,0 +1,287 @@
+#pragma once
+#include "..\Minecraft.World\ArrayWithLength.h"
+
+class DynamicTexture;
+class BufferedImage;
+class HttpTexture;
+class MemTexture;
+class TexturePackRepository;
+class HttpTextureProcessor;
+class MemTextureProcessor;
+class Options;
+using namespace std;
+class IntBuffer;
+class PreStitchedTextureMap;
+
+
+typedef enum _TEXTURE_NAME
+{
+ TN__BLUR__MISC_PUMPKINBLUR,
+// TN__BLUR__MISC_VIGNETTE, // Not currently used
+ TN__CLAMP__MISC_SHADOW,
+// TN_ACHIEVEMENT_BG, // Not currently used
+ TN_ART_KZ,
+ TN_ENVIRONMENT_CLOUDS,
+ TN_ENVIRONMENT_RAIN,
+ TN_ENVIRONMENT_SNOW,
+ TN_GUI_GUI,
+ TN_GUI_ICONS,
+ TN_ITEM_ARROWS,
+ TN_ITEM_BOAT,
+ TN_ITEM_CART,
+ TN_ITEM_SIGN,
+ TN_MISC_MAPBG,
+ TN_MISC_MAPICONS,
+ TN_MISC_WATER,
+ TN_MISC_FOOTSTEP,
+ TN_MOB_SADDLE,
+ TN_MOB_SHEEP_FUR,
+ TN_MOB_SPIDER_EYES,
+ TN_PARTICLES,
+ TN_MOB_CHICKEN,
+ TN_MOB_COW,
+ TN_MOB_PIG,
+ TN_MOB_SHEEP,
+ TN_MOB_SQUID,
+ TN_MOB_WOLF,
+ TN_MOB_WOLF_TAME,
+ TN_MOB_WOLF_ANGRY,
+ TN_MOB_CREEPER,
+ TN_MOB_GHAST,
+ TN_MOB_GHAST_FIRE,
+ TN_MOB_ZOMBIE,
+ TN_MOB_PIGZOMBIE,
+ TN_MOB_SKELETON,
+ TN_MOB_SLIME,
+ TN_MOB_SPIDER,
+ TN_MOB_CHAR,
+ TN_MOB_CHAR1,
+ TN_MOB_CHAR2,
+ TN_MOB_CHAR3,
+ TN_MOB_CHAR4,
+ TN_MOB_CHAR5,
+ TN_MOB_CHAR6,
+ TN_MOB_CHAR7,
+ TN_TERRAIN_MOON,
+ TN_TERRAIN_SUN,
+ TN_POWERED_CREEPER,
+
+ // 1.8.2
+ TN_MOB_CAVE_SPIDER,
+ TN_MOB_ENDERMAN,
+ TN_MOB_SILVERFISH,
+ TN_MOB_ENDERMAN_EYES,
+ TN_MISC_EXPLOSION,
+ TN_ITEM_EXPERIENCE_ORB,
+ TN_TILE_CHEST,
+ TN_TILE_LARGE_CHEST,
+
+ // 1.3.2
+ TN_TILE_ENDER_CHEST,
+
+ // 1.0.1
+ TN_MOB_RED_COW,
+ TN_MOB_SNOWMAN,
+ TN_MOB_ENDERDRAGON,
+ TN_MOB_BLAZE,
+ TN_MOB_LAVA,
+ TN_MOB_VILLAGER_VILLAGER,
+ TN_MOB_VILLAGER_FARMER,
+ TN_MOB_VILLAGER_LIBRARIAN,
+ TN_MOB_VILLAGER_PRIEST,
+ TN_MOB_VILLAGER_SMITH,
+ TN_MOB_VILLAGER_BUTCHER,
+ TN_MOB_ENDERDRAGON_ENDERCRYSTAL,
+ TN_MOB_ENDERDRAGON_SHUFFLE,
+ TN_MOB_ENDERDRAGON_BEAM,
+ TN_MOB_ENDERDRAGON_ENDEREYES,
+ TN__BLUR__MISC_GLINT,
+ TN_ITEM_BOOK,
+ TN_MISC_TUNNEL,
+ TN_MISC_PARTICLEFIELD,
+ TN_TERRAIN_MOON_PHASES,
+
+ // 1.2.3
+ TN_MOB_OZELOT,
+ TN_MOB_CAT_BLACK,
+ TN_MOB_CAT_RED,
+ TN_MOB_CAT_SIAMESE,
+ TN_MOB_VILLAGER_GOLEM,
+ TN_MOB_WITHER_SKELETON,
+
+ // TU14
+ TN_MOB_WOLF_COLLAR,
+ TN_MOB_ZOMBIE_VILLAGER,
+
+#ifdef _LARGE_WORLDS
+ TN_MISC_ADDITIONALMAPICONS,
+#endif
+
+ TN_DEFAULT_FONT,
+ TN_ALT_FONT,
+
+/* TN_SP1,
+ TN_SP2,
+ TN_SP3,
+ TN_SPF,
+ TN_THST,
+ TN_THIR,
+ TN_THGO,
+ TN_THDI,
+ TN_GPAN,
+ TN_GPCO,
+ TN_GPEN,
+ TN_GPFO,
+ TN_GPTO,
+ TN_GPBA,
+ TN_GPFA,
+ TN_GPME,
+ TN_GPMF,
+ TN_GPMM,
+ TN_GPSE,
+ TN_AH_0006,
+ TN_AH_0003,
+ TN_AH_0007,
+ TN_AH_0005,
+ TN_AH_0004,
+ TN_AH_0001,
+ TN_AH_0002,
+ TN_AT_0001,
+ TN_AT_0002,
+ TN_AT_0003,
+ TN_AT_0004,
+ TN_AT_0005,
+ TN_AT_0006,
+ TN_AT_0007,
+ TN_AT_0008,
+ TN_AT_0009,
+ TN_AT_0010,
+ TN_AT_0011,
+ TN_AT_0012,
+ TN_AP_0001,
+ TN_AP_0002,
+ TN_AP_0003,
+ TN_AP_0004,
+ TN_AP_0005,
+ TN_AP_0006,
+ TN_AP_0007,
+ TN_AP_0009,
+ TN_AP_0010,
+ TN_AP_0011,
+ TN_AP_0012,
+ TN_AP_0013,
+ TN_AP_0014,
+ TN_AP_0015,
+ TN_AP_0016,
+ TN_AP_0017,
+ TN_AP_0018,
+ TN_AA_0001,
+ TN_AT_0013,
+ TN_AT_0014,
+ TN_AT_0015,
+ TN_AT_0016,
+ TN_AT_0017,
+ TN_AT_0018,
+ TN_AP_0019,
+ TN_AP_0020,
+ TN_AP_0021,
+ TN_AP_0022,
+ TN_AP_0023,
+ TN_AH_0008,
+ TN_AH_0009,*/
+
+ TN_GUI_ITEMS,
+ TN_TERRAIN,
+
+ TN_COUNT,
+
+}
+TEXTURE_NAME;
+
+class Textures
+{
+public:
+ static bool MIPMAP;
+ static C4JRender::eTextureFormat TEXTURE_FORMAT;
+
+private:
+ static wchar_t *preLoaded[TN_COUNT];
+ static int preLoadedIdx[TN_COUNT];
+
+ unordered_map<wstring, int> idMap;
+ unordered_map<wstring, intArray> pixelsMap;
+ unordered_map<int, BufferedImage *> loadedImages;
+ //IntBuffer *pixels; // 4J - removed so we don't have a permanent buffer kicking round using up 1MB
+
+ unordered_map<wstring, HttpTexture *> httpTextures;
+ // 4J-PB - Added for GTS textures
+ unordered_map<wstring,MemTexture *> memTextures;
+ Options *options;
+
+private:
+ TexturePackRepository *skins;
+ BufferedImage *missingNo;
+ PreStitchedTextureMap *terrain;
+ PreStitchedTextureMap *items;
+
+ int lastBoundId;
+public:
+ Textures(TexturePackRepository *skins, Options *options);
+
+private:
+ void loadIndexedTextures(); // 4J Added
+
+public:
+ intArray loadTexturePixels(TEXTURE_NAME texId, const wstring& resourceName);
+private:
+ intArray loadTexturePixels(BufferedImage *img);
+ intArray loadTexturePixels(BufferedImage *img, intArray pixels);
+ void setTextureFormat(const wstring& resourceName); // 4J added
+
+public:
+ void bindTexture(const wstring &resourceName);
+ void bindTexture(int resourceId); // 4J Added
+
+ // 4J Made public for use in XUI controls
+ void bind(int id);
+
+public:
+ void clearLastBoundId();
+
+private:
+ int loadTexture(TEXTURE_NAME texId, const wstring& resourceName);
+public:
+ int loadTexture(int idx); // 4J added
+ int getTexture(BufferedImage *img, C4JRender::eTextureFormat format = C4JRender::TEXTURE_FORMAT_RxGyBzAw, bool mipmap = true);
+ void loadTexture(BufferedImage *img, int id);
+ void loadTexture(BufferedImage *img, int id, bool blur, bool clamp);
+private:
+ intArray anaglyph(intArray rawPixels);
+public:
+ void replaceTexture(intArray rawPixels, int w, int h, int id);
+ void replaceTextureDirect(intArray rawPixels, int w, int h, int id); // 4J added as optimisation
+ void replaceTextureDirect(shortArray rawPixels, int w, int h, int id); // 4J added as optimisation
+ void releaseTexture(int id);
+ int loadHttpTexture(const wstring& url, const wstring& backup);
+ int loadHttpTexture(const wstring& url, int backup); // 4J added
+ bool hasHttpTexture(const wstring &url);
+ HttpTexture *addHttpTexture(const wstring& url, HttpTextureProcessor *processor);
+ void removeHttpTexture(const wstring& url);
+
+ // 4J-PB - for the GTS textures
+ int loadMemTexture(const wstring& url, const wstring& backup);
+ int loadMemTexture(const wstring& url, int backup);
+ MemTexture * addMemTexture(const wstring& url, MemTextureProcessor *processor);
+ //MemTexture * getMemTexture(const wstring& url, MemTextureProcessor *processor);
+ void removeMemTexture(const wstring& url);
+
+ void tick(bool updateTextures, bool tickDynamics = true); // 4J added updateTextures parameter & tickDynamics
+public:
+ void reloadAll();
+ void stitch();
+ Icon *getMissingIcon(int type);
+ BufferedImage *readImage(TEXTURE_NAME texId, const wstring& name); // Moved this to public for Font.cpp access
+ // check list of title update textures to see if we need to use the UPDATE: drive
+ static bool IsTUImage(TEXTURE_NAME texId, const wstring& name);
+ static bool IsOriginalImage(TEXTURE_NAME texId, const wstring& name);
+};