From 3293f1e1813b11da4bc2fef3042298e952d3a044 Mon Sep 17 00:00:00 2001 From: Jacobwasbeast Date: Mon, 9 Mar 2026 00:27:28 -0500 Subject: [PATCH] feat(api): add missing block/item placeholder textures - Add mod_assets for weaveloader.api:missing_block and missing_item - CopyModAssets target to deploy placeholders to mods/WeaveLoader.API/assets/ - WorldIdRemap: use placeholder icons instead of bedrock/apple --- WeaveLoader.API/WeaveLoader.API.csproj | 8 ++++++++ WeaveLoader.API/mod_assets/README.md | 10 ++++++++++ .../mod_assets/blocks/missing_block.png | Bin 0 -> 2685 bytes .../mod_assets/items/missing_item.png | Bin 0 -> 3347 bytes WeaveLoaderRuntime/src/WorldIdRemap.cpp | 4 ++-- 5 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 WeaveLoader.API/mod_assets/README.md create mode 100644 WeaveLoader.API/mod_assets/blocks/missing_block.png create mode 100644 WeaveLoader.API/mod_assets/items/missing_item.png diff --git a/WeaveLoader.API/WeaveLoader.API.csproj b/WeaveLoader.API/WeaveLoader.API.csproj index aec1805..8d097bf 100644 --- a/WeaveLoader.API/WeaveLoader.API.csproj +++ b/WeaveLoader.API/WeaveLoader.API.csproj @@ -13,4 +13,12 @@ false + + + + + + + + diff --git a/WeaveLoader.API/mod_assets/README.md b/WeaveLoader.API/mod_assets/README.md new file mode 100644 index 0000000..00139c2 --- /dev/null +++ b/WeaveLoader.API/mod_assets/README.md @@ -0,0 +1,10 @@ +# WeaveLoader.API Mod Assets + +Placeholder textures for the missing block and missing item (unresolved mod content). +Stored in `mod_assets/` to avoid conflict with the `Assets/` C# source folder (Windows case-insensitivity). +Copied to `assets/blocks/` and `assets/items/` in the build output. + +- **Blocks:** `mod_assets/blocks/missing_block.png` → icon `weaveloader.api:missing_block` +- **Items:** `mod_assets/items/missing_item.png` → icon `weaveloader.api:missing_item` + +These are used when a world contains blocks or items from mods that are no longer installed. diff --git a/WeaveLoader.API/mod_assets/blocks/missing_block.png b/WeaveLoader.API/mod_assets/blocks/missing_block.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d9aefdf84c427af22653184d5b8af67bba35eb GIT binary patch literal 2685 zcmb7GeLPe9A79f0TdGTb6xEuz_TFzSXcll zgbFAssYIq^sW?<^To!hZ9|Kg1mV(A|sC-@kg^MU4iWA+54pLo66t+SX%?k4Hdhd)` z9I6;a3qH zg2xm@A#o^&O2u%>`{0lY{t#WJeBVAM1b`!eJsku-rpv_$iYUd1e6*rZd`96hjwl@c zH+gVm3>}m2%NbMx`IpE%-hZb{rJuB+L_Om%A>NDnNeh1^PzEQ;As`4+B5?{KXIOauyCWTF@qTlmZJm9!HEVk@z#JZ7NZ@xzb!_G{$IuDTs|vijLz?iVFUR4|Cdl~ zV2qSH!bb}OYeIL1Eh22A0i!DoGe(ypB*QkL0$X_}j-T00AdK4pV`DmIJP8Dwt#Ml$ z?P>)U^{d)97TRo2uN5m9hF0_`D{?Lib}?2~^{@Yz^g?n?UcnJXL|}J!TUt%(5k+XW zPeb_Tx{Oz^-pG#lzD|70-q$v`esAO9-Z$*khKKTVB74*Pn1?5fMAo~jZrvKl-sHu4 zddVaZjbkpHaiAo*Q)u6Fw7o23xTEHd#dpt0{Fxc`CLz}h{0$n*dV}*4zFo9Ec%HS| zy5m^Ggp7Va&hp2md3n$u%y9Aq^=hec{JfO4FHP-iX_nsr^*eo!+2#)y0>|r54!UKX z@4okB{6No@OOD1vW`bP%o!)YXy414Lt^Kx-8jsIEn|*zLqGPDfHmY|`X>1UOZa+6^ zrB~6pyYFg}Ta9bEkA98^ZZ9^!T1}o=wVw~>9J8#onVsHeKtI_!(#kdaecJhe*4>ku zGzPt4Av6uybVbvvQm;xM-xFCYj15$aG77-T`>riPXJhh{m(HeC&RrE}xNf-V>)sVR zQV7X*F$0TDZT4e7UIucXa3z62HpZ`UgrePM1cF|euZLT(IIZtL*EXAb5;D4uz3r~z zENFaCObE<1GN{|kw%k%X@dZi3r;H=xm;PD5$41qh`1W$yKlWDSG?T?we@^MClI;0) zReea+bJC`;+z2;Tb@^W!n_f-n)Z+t_?ceD443i(GaNNv7EA}2} zD8Eu_cvq1ABDT<~KKIeW zmfbb zTOP&;pEm9CFD>+QXNOE-PTh(HM;G09#g5Orw!I`qw2)Dpqce;zXx>?sJR-&%%> ztxfebb1!uNofNtK$Bv8Q-){H4c+0+2`skh9K{?*|`!GAd+8L2o46U!&ZsT`#K3(^! z^<-#QLwvfZ;%bzm>s!s`io`WQr~9~2&$J)5T_r&pN&boJbIot&u52^2wkvx^j8n|{ zfjqr;((Y60ttQQD$RV4q&nPH(y+7?BsnbstFWD4cZMAwjd3(D>Lvfutq6@qR@(c6} zHa=}pRd;vhOV3@LKXu_DT?8yiyh-nTMOHsnG`)N4OwEc1ME29lKPm~47r}! zQ!=-?@KE{kjH!-hhixTGjz9KLE{Q$$%DG3EIM&+l7jL?!L?6t4@l+Gb?fi?hC8eGb#Yo`acojr`O^uS64NI|qlR_+tl}-{_xg>d zo){v+8aSVk?G&XqiMNSL546rS^Y;f=9zL`4#tCc0WOk-;PH5OhxaalD^Mef*DSG}U W;IHdl{G#xGjlP~sJ<8ozZ}<~I!wfwD literal 0 HcmV?d00001 diff --git a/WeaveLoader.API/mod_assets/items/missing_item.png b/WeaveLoader.API/mod_assets/items/missing_item.png new file mode 100644 index 0000000000000000000000000000000000000000..b8a13cea903221f47d4383f30c4bc22c4e096b66 GIT binary patch literal 3347 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 literal 0 HcmV?d00001 diff --git a/WeaveLoaderRuntime/src/WorldIdRemap.cpp b/WeaveLoaderRuntime/src/WorldIdRemap.cpp index 63fd5af..d7d0b4d 100644 --- a/WeaveLoaderRuntime/src/WorldIdRemap.cpp +++ b/WeaveLoaderRuntime/src/WorldIdRemap.cpp @@ -662,7 +662,7 @@ namespace WorldIdRemap 1.0f, 1.0f, 1, - L"bedrock", + L"weaveloader.api:missing_block", 0.0f, 15, kMissingBlockDescriptionId); @@ -676,7 +676,7 @@ namespace WorldIdRemap missingItemId, 64, 0, - L"apple", + L"weaveloader.api:missing_item", kMissingItemDescriptionId); IdRegistry::Instance().SetMissingFallback(IdRegistry::Type::Item, missingItemId); }