@nodecraft/rendermite 0.0.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (764) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +92 -0
  3. package/assets/README.md +17 -0
  4. package/assets/builtin/minecraft/atlases/misc.json +24 -0
  5. package/assets/builtin/minecraft/items/black_banner.json +12 -0
  6. package/assets/builtin/minecraft/items/black_shulker_box.json +6 -0
  7. package/assets/builtin/minecraft/items/blue_banner.json +12 -0
  8. package/assets/builtin/minecraft/items/blue_shulker_box.json +6 -0
  9. package/assets/builtin/minecraft/items/brown_banner.json +12 -0
  10. package/assets/builtin/minecraft/items/brown_shulker_box.json +6 -0
  11. package/assets/builtin/minecraft/items/chest.json +6 -0
  12. package/assets/builtin/minecraft/items/conduit.json +6 -0
  13. package/assets/builtin/minecraft/items/copper_chest.json +6 -0
  14. package/assets/builtin/minecraft/items/copper_golem_statue.json +6 -0
  15. package/assets/builtin/minecraft/items/creeper_head.json +6 -0
  16. package/assets/builtin/minecraft/items/cyan_banner.json +12 -0
  17. package/assets/builtin/minecraft/items/cyan_shulker_box.json +6 -0
  18. package/assets/builtin/minecraft/items/decorated_pot.json +6 -0
  19. package/assets/builtin/minecraft/items/dragon_head.json +6 -0
  20. package/assets/builtin/minecraft/items/ender_chest.json +6 -0
  21. package/assets/builtin/minecraft/items/exposed_copper_chest.json +6 -0
  22. package/assets/builtin/minecraft/items/exposed_copper_golem_statue.json +6 -0
  23. package/assets/builtin/minecraft/items/gray_banner.json +12 -0
  24. package/assets/builtin/minecraft/items/gray_shulker_box.json +6 -0
  25. package/assets/builtin/minecraft/items/green_banner.json +12 -0
  26. package/assets/builtin/minecraft/items/green_shulker_box.json +6 -0
  27. package/assets/builtin/minecraft/items/light_blue_banner.json +12 -0
  28. package/assets/builtin/minecraft/items/light_blue_shulker_box.json +6 -0
  29. package/assets/builtin/minecraft/items/light_gray_banner.json +12 -0
  30. package/assets/builtin/minecraft/items/light_gray_shulker_box.json +6 -0
  31. package/assets/builtin/minecraft/items/lime_banner.json +12 -0
  32. package/assets/builtin/minecraft/items/lime_shulker_box.json +6 -0
  33. package/assets/builtin/minecraft/items/magenta_banner.json +12 -0
  34. package/assets/builtin/minecraft/items/magenta_shulker_box.json +6 -0
  35. package/assets/builtin/minecraft/items/orange_banner.json +12 -0
  36. package/assets/builtin/minecraft/items/orange_shulker_box.json +6 -0
  37. package/assets/builtin/minecraft/items/oxidized_copper_chest.json +6 -0
  38. package/assets/builtin/minecraft/items/oxidized_copper_golem_statue.json +6 -0
  39. package/assets/builtin/minecraft/items/piglin_head.json +6 -0
  40. package/assets/builtin/minecraft/items/pink_banner.json +12 -0
  41. package/assets/builtin/minecraft/items/pink_shulker_box.json +6 -0
  42. package/assets/builtin/minecraft/items/player_head.json +6 -0
  43. package/assets/builtin/minecraft/items/purple_banner.json +12 -0
  44. package/assets/builtin/minecraft/items/purple_shulker_box.json +6 -0
  45. package/assets/builtin/minecraft/items/rc_filled_map_base.json +6 -0
  46. package/assets/builtin/minecraft/items/rc_filled_map_overlay.json +7 -0
  47. package/assets/builtin/minecraft/items/rc_firework_star_base.json +6 -0
  48. package/assets/builtin/minecraft/items/rc_firework_star_overlay.json +6 -0
  49. package/assets/builtin/minecraft/items/rc_potion_bottle.json +6 -0
  50. package/assets/builtin/minecraft/items/rc_potion_bottle_lingering.json +6 -0
  51. package/assets/builtin/minecraft/items/rc_potion_bottle_splash.json +6 -0
  52. package/assets/builtin/minecraft/items/rc_potion_content.json +6 -0
  53. package/assets/builtin/minecraft/items/rc_tipped_arrow_base.json +6 -0
  54. package/assets/builtin/minecraft/items/rc_tipped_arrow_head.json +6 -0
  55. package/assets/builtin/minecraft/items/red_banner.json +12 -0
  56. package/assets/builtin/minecraft/items/red_shulker_box.json +6 -0
  57. package/assets/builtin/minecraft/items/shield.json +6 -0
  58. package/assets/builtin/minecraft/items/shulker_box.json +6 -0
  59. package/assets/builtin/minecraft/items/skeleton_skull.json +6 -0
  60. package/assets/builtin/minecraft/items/trapped_chest.json +6 -0
  61. package/assets/builtin/minecraft/items/waxed_copper_chest.json +6 -0
  62. package/assets/builtin/minecraft/items/waxed_copper_golem_statue.json +6 -0
  63. package/assets/builtin/minecraft/items/waxed_exposed_copper_chest.json +6 -0
  64. package/assets/builtin/minecraft/items/waxed_exposed_copper_golem_statue.json +6 -0
  65. package/assets/builtin/minecraft/items/waxed_oxidized_copper_chest.json +6 -0
  66. package/assets/builtin/minecraft/items/waxed_oxidized_copper_golem_statue.json +6 -0
  67. package/assets/builtin/minecraft/items/waxed_weathered_copper_chest.json +6 -0
  68. package/assets/builtin/minecraft/items/waxed_weathered_copper_golem_statue.json +6 -0
  69. package/assets/builtin/minecraft/items/weathered_copper_chest.json +6 -0
  70. package/assets/builtin/minecraft/items/weathered_copper_golem_statue.json +6 -0
  71. package/assets/builtin/minecraft/items/white_banner.json +12 -0
  72. package/assets/builtin/minecraft/items/white_shulker_box.json +6 -0
  73. package/assets/builtin/minecraft/items/wither_skeleton_skull.json +6 -0
  74. package/assets/builtin/minecraft/items/yellow_banner.json +12 -0
  75. package/assets/builtin/minecraft/items/yellow_shulker_box.json +6 -0
  76. package/assets/builtin/minecraft/items/zombie_head.json +6 -0
  77. package/assets/builtin/minecraft/models/item/generated.json +30 -0
  78. package/assets/builtin/minecraft/textures/item/empty.png +0 -0
  79. package/assets/builtin/minecraft/textures/item/unknown.png +0 -0
  80. package/assets/builtin/mobheads/items/allay.json +6 -0
  81. package/assets/builtin/mobheads/items/armadillo.json +6 -0
  82. package/assets/builtin/mobheads/items/axolotl.json +6 -0
  83. package/assets/builtin/mobheads/items/bat.json +6 -0
  84. package/assets/builtin/mobheads/items/bee.json +6 -0
  85. package/assets/builtin/mobheads/items/blaze.json +6 -0
  86. package/assets/builtin/mobheads/items/bogged.json +6 -0
  87. package/assets/builtin/mobheads/items/breeze.json +6 -0
  88. package/assets/builtin/mobheads/items/camel.json +6 -0
  89. package/assets/builtin/mobheads/items/camel_husk.json +6 -0
  90. package/assets/builtin/mobheads/items/cat.json +6 -0
  91. package/assets/builtin/mobheads/items/cave_spider.json +6 -0
  92. package/assets/builtin/mobheads/items/chicken.json +6 -0
  93. package/assets/builtin/mobheads/items/cod.json +6 -0
  94. package/assets/builtin/mobheads/items/copper_golem.json +6 -0
  95. package/assets/builtin/mobheads/items/cow.json +6 -0
  96. package/assets/builtin/mobheads/items/creaking.json +6 -0
  97. package/assets/builtin/mobheads/items/creeper.json +6 -0
  98. package/assets/builtin/mobheads/items/dolphin.json +6 -0
  99. package/assets/builtin/mobheads/items/donkey.json +6 -0
  100. package/assets/builtin/mobheads/items/drowned.json +6 -0
  101. package/assets/builtin/mobheads/items/elder_guardian.json +6 -0
  102. package/assets/builtin/mobheads/items/ender_dragon.json +6 -0
  103. package/assets/builtin/mobheads/items/enderman.json +6 -0
  104. package/assets/builtin/mobheads/items/endermite.json +6 -0
  105. package/assets/builtin/mobheads/items/evoker.json +6 -0
  106. package/assets/builtin/mobheads/items/fox.json +6 -0
  107. package/assets/builtin/mobheads/items/frog.json +6 -0
  108. package/assets/builtin/mobheads/items/ghast.json +6 -0
  109. package/assets/builtin/mobheads/items/giant.json +6 -0
  110. package/assets/builtin/mobheads/items/glow_squid.json +6 -0
  111. package/assets/builtin/mobheads/items/goat.json +6 -0
  112. package/assets/builtin/mobheads/items/guardian.json +6 -0
  113. package/assets/builtin/mobheads/items/happy_ghast.json +6 -0
  114. package/assets/builtin/mobheads/items/hoglin.json +6 -0
  115. package/assets/builtin/mobheads/items/horse.json +6 -0
  116. package/assets/builtin/mobheads/items/husk.json +6 -0
  117. package/assets/builtin/mobheads/items/illusioner.json +6 -0
  118. package/assets/builtin/mobheads/items/iron_golem.json +6 -0
  119. package/assets/builtin/mobheads/items/llama.json +6 -0
  120. package/assets/builtin/mobheads/items/magma_cube.json +6 -0
  121. package/assets/builtin/mobheads/items/mannequin.json +6 -0
  122. package/assets/builtin/mobheads/items/mooshroom.json +6 -0
  123. package/assets/builtin/mobheads/items/mule.json +6 -0
  124. package/assets/builtin/mobheads/items/nautilus.json +6 -0
  125. package/assets/builtin/mobheads/items/ocelot.json +6 -0
  126. package/assets/builtin/mobheads/items/panda.json +6 -0
  127. package/assets/builtin/mobheads/items/parched.json +6 -0
  128. package/assets/builtin/mobheads/items/parrot.json +6 -0
  129. package/assets/builtin/mobheads/items/phantom.json +6 -0
  130. package/assets/builtin/mobheads/items/pig.json +6 -0
  131. package/assets/builtin/mobheads/items/piglin.json +6 -0
  132. package/assets/builtin/mobheads/items/piglin_brute.json +6 -0
  133. package/assets/builtin/mobheads/items/pillager.json +6 -0
  134. package/assets/builtin/mobheads/items/player.json +6 -0
  135. package/assets/builtin/mobheads/items/polar_bear.json +6 -0
  136. package/assets/builtin/mobheads/items/pufferfish.json +6 -0
  137. package/assets/builtin/mobheads/items/rabbit.json +6 -0
  138. package/assets/builtin/mobheads/items/ravager.json +6 -0
  139. package/assets/builtin/mobheads/items/salmon.json +6 -0
  140. package/assets/builtin/mobheads/items/sheep.json +6 -0
  141. package/assets/builtin/mobheads/items/shulker.json +6 -0
  142. package/assets/builtin/mobheads/items/silverfish.json +6 -0
  143. package/assets/builtin/mobheads/items/skeleton.json +6 -0
  144. package/assets/builtin/mobheads/items/skeleton_horse.json +6 -0
  145. package/assets/builtin/mobheads/items/slime.json +6 -0
  146. package/assets/builtin/mobheads/items/sniffer.json +6 -0
  147. package/assets/builtin/mobheads/items/snow_golem.json +6 -0
  148. package/assets/builtin/mobheads/items/spider.json +6 -0
  149. package/assets/builtin/mobheads/items/squid.json +6 -0
  150. package/assets/builtin/mobheads/items/stray.json +6 -0
  151. package/assets/builtin/mobheads/items/strider.json +6 -0
  152. package/assets/builtin/mobheads/items/sulfur_cube.json +6 -0
  153. package/assets/builtin/mobheads/items/tadpole.json +6 -0
  154. package/assets/builtin/mobheads/items/trader_llama.json +6 -0
  155. package/assets/builtin/mobheads/items/tropical_fish.json +14 -0
  156. package/assets/builtin/mobheads/items/turtle.json +6 -0
  157. package/assets/builtin/mobheads/items/vex.json +6 -0
  158. package/assets/builtin/mobheads/items/villager.json +6 -0
  159. package/assets/builtin/mobheads/items/vindicator.json +6 -0
  160. package/assets/builtin/mobheads/items/wandering_trader.json +6 -0
  161. package/assets/builtin/mobheads/items/warden.json +6 -0
  162. package/assets/builtin/mobheads/items/witch.json +6 -0
  163. package/assets/builtin/mobheads/items/wither.json +6 -0
  164. package/assets/builtin/mobheads/items/wither_skeleton.json +6 -0
  165. package/assets/builtin/mobheads/items/wolf.json +6 -0
  166. package/assets/builtin/mobheads/items/zoglin.json +6 -0
  167. package/assets/builtin/mobheads/items/zombie.json +6 -0
  168. package/assets/builtin/mobheads/items/zombie_horse.json +6 -0
  169. package/assets/builtin/mobheads/items/zombie_nautilus.json +6 -0
  170. package/assets/builtin/mobheads/items/zombie_villager.json +6 -0
  171. package/assets/builtin/mobheads/items/zombified_piglin.json +6 -0
  172. package/assets/builtin/mobheads/models/item/allay.json +6 -0
  173. package/assets/builtin/mobheads/models/item/armadillo.json +41 -0
  174. package/assets/builtin/mobheads/models/item/axolotl.json +36 -0
  175. package/assets/builtin/mobheads/models/item/base/camel.json +59 -0
  176. package/assets/builtin/mobheads/models/item/base/cat.json +52 -0
  177. package/assets/builtin/mobheads/models/item/base/cow.json +56 -0
  178. package/assets/builtin/mobheads/models/item/base/donkey.json +68 -0
  179. package/assets/builtin/mobheads/models/item/base/guardian.json +272 -0
  180. package/assets/builtin/mobheads/models/item/base/head_32_32.json +19 -0
  181. package/assets/builtin/mobheads/models/item/base/head_64_32.json +34 -0
  182. package/assets/builtin/mobheads/models/item/base/head_64_64.json +34 -0
  183. package/assets/builtin/mobheads/models/item/base/head_64_64_overlay.json +34 -0
  184. package/assets/builtin/mobheads/models/item/base/head_display.json +8 -0
  185. package/assets/builtin/mobheads/models/item/base/hoglin.json +81 -0
  186. package/assets/builtin/mobheads/models/item/base/horse.json +80 -0
  187. package/assets/builtin/mobheads/models/item/base/llama.json +64 -0
  188. package/assets/builtin/mobheads/models/item/base/nautilus.json +213 -0
  189. package/assets/builtin/mobheads/models/item/base/piglin.json +80 -0
  190. package/assets/builtin/mobheads/models/item/base/spider.json +32 -0
  191. package/assets/builtin/mobheads/models/item/base/squid.json +116 -0
  192. package/assets/builtin/mobheads/models/item/base/villager.json +43 -0
  193. package/assets/builtin/mobheads/models/item/bat.json +41 -0
  194. package/assets/builtin/mobheads/models/item/bee.json +59 -0
  195. package/assets/builtin/mobheads/models/item/blaze.json +6 -0
  196. package/assets/builtin/mobheads/models/item/bogged.json +113 -0
  197. package/assets/builtin/mobheads/models/item/breeze.json +49 -0
  198. package/assets/builtin/mobheads/models/item/camel.json +6 -0
  199. package/assets/builtin/mobheads/models/item/camel_husk.json +6 -0
  200. package/assets/builtin/mobheads/models/item/cat.json +6 -0
  201. package/assets/builtin/mobheads/models/item/cave_spider.json +6 -0
  202. package/assets/builtin/mobheads/models/item/chicken.json +62 -0
  203. package/assets/builtin/mobheads/models/item/cod.json +98 -0
  204. package/assets/builtin/mobheads/models/item/copper_golem.json +85 -0
  205. package/assets/builtin/mobheads/models/item/cow.json +6 -0
  206. package/assets/builtin/mobheads/models/item/creaking.json +120 -0
  207. package/assets/builtin/mobheads/models/item/creeper.json +6 -0
  208. package/assets/builtin/mobheads/models/item/dolphin.json +33 -0
  209. package/assets/builtin/mobheads/models/item/donkey.json +6 -0
  210. package/assets/builtin/mobheads/models/item/drowned.json +8 -0
  211. package/assets/builtin/mobheads/models/item/elder_guardian.json +6 -0
  212. package/assets/builtin/mobheads/models/item/ender_dragon.json +113 -0
  213. package/assets/builtin/mobheads/models/item/enderman.json +41 -0
  214. package/assets/builtin/mobheads/models/item/endermite.json +59 -0
  215. package/assets/builtin/mobheads/models/item/evoker.json +6 -0
  216. package/assets/builtin/mobheads/models/item/fox.json +55 -0
  217. package/assets/builtin/mobheads/models/item/frog.json +159 -0
  218. package/assets/builtin/mobheads/models/item/ghast.json +131 -0
  219. package/assets/builtin/mobheads/models/item/giant.json +6 -0
  220. package/assets/builtin/mobheads/models/item/glow_squid.json +6 -0
  221. package/assets/builtin/mobheads/models/item/goat.json +56 -0
  222. package/assets/builtin/mobheads/models/item/guardian.json +6 -0
  223. package/assets/builtin/mobheads/models/item/happy_ghast.json +131 -0
  224. package/assets/builtin/mobheads/models/item/hoglin.json +6 -0
  225. package/assets/builtin/mobheads/models/item/horse.json +6 -0
  226. package/assets/builtin/mobheads/models/item/husk.json +6 -0
  227. package/assets/builtin/mobheads/models/item/illusioner.json +6 -0
  228. package/assets/builtin/mobheads/models/item/iron_golem.json +34 -0
  229. package/assets/builtin/mobheads/models/item/llama.json +7 -0
  230. package/assets/builtin/mobheads/models/item/magma_cube.json +100 -0
  231. package/assets/builtin/mobheads/models/item/mooshroom.json +6 -0
  232. package/assets/builtin/mobheads/models/item/mule.json +6 -0
  233. package/assets/builtin/mobheads/models/item/nautilus.json +6 -0
  234. package/assets/builtin/mobheads/models/item/ocelot.json +6 -0
  235. package/assets/builtin/mobheads/models/item/panda.json +61 -0
  236. package/assets/builtin/mobheads/models/item/parched.json +6 -0
  237. package/assets/builtin/mobheads/models/item/parrot.json +73 -0
  238. package/assets/builtin/mobheads/models/item/phantom.json +33 -0
  239. package/assets/builtin/mobheads/models/item/pig.json +35 -0
  240. package/assets/builtin/mobheads/models/item/piglin.json +6 -0
  241. package/assets/builtin/mobheads/models/item/piglin_brute.json +6 -0
  242. package/assets/builtin/mobheads/models/item/pillager.json +6 -0
  243. package/assets/builtin/mobheads/models/item/player.json +6 -0
  244. package/assets/builtin/mobheads/models/item/polar_bear.json +61 -0
  245. package/assets/builtin/mobheads/models/item/pufferfish.json +113 -0
  246. package/assets/builtin/mobheads/models/item/rabbit.json +50 -0
  247. package/assets/builtin/mobheads/models/item/ravager.json +75 -0
  248. package/assets/builtin/mobheads/models/item/salmon.json +80 -0
  249. package/assets/builtin/mobheads/models/item/sheep.json +34 -0
  250. package/assets/builtin/mobheads/models/item/shulker.json +109 -0
  251. package/assets/builtin/mobheads/models/item/silverfish.json +148 -0
  252. package/assets/builtin/mobheads/models/item/skeleton.json +6 -0
  253. package/assets/builtin/mobheads/models/item/skeleton_horse.json +6 -0
  254. package/assets/builtin/mobheads/models/item/slime.json +69 -0
  255. package/assets/builtin/mobheads/models/item/sniffer.json +85 -0
  256. package/assets/builtin/mobheads/models/item/snow_golem.json +24 -0
  257. package/assets/builtin/mobheads/models/item/spider.json +6 -0
  258. package/assets/builtin/mobheads/models/item/squid.json +6 -0
  259. package/assets/builtin/mobheads/models/item/stray.json +8 -0
  260. package/assets/builtin/mobheads/models/item/strider.json +101 -0
  261. package/assets/builtin/mobheads/models/item/sulfur_cube.json +38 -0
  262. package/assets/builtin/mobheads/models/item/tadpole.json +31 -0
  263. package/assets/builtin/mobheads/models/item/trader_llama.json +7 -0
  264. package/assets/builtin/mobheads/models/item/tropical_fish.json +141 -0
  265. package/assets/builtin/mobheads/models/item/turtle.json +23 -0
  266. package/assets/builtin/mobheads/models/item/vex.json +23 -0
  267. package/assets/builtin/mobheads/models/item/villager.json +6 -0
  268. package/assets/builtin/mobheads/models/item/vindicator.json +6 -0
  269. package/assets/builtin/mobheads/models/item/wandering_trader.json +6 -0
  270. package/assets/builtin/mobheads/models/item/warden.json +92 -0
  271. package/assets/builtin/mobheads/models/item/witch.json +110 -0
  272. package/assets/builtin/mobheads/models/item/wither.json +22 -0
  273. package/assets/builtin/mobheads/models/item/wither_skeleton.json +6 -0
  274. package/assets/builtin/mobheads/models/item/wolf.json +59 -0
  275. package/assets/builtin/mobheads/models/item/zoglin.json +6 -0
  276. package/assets/builtin/mobheads/models/item/zombie.json +6 -0
  277. package/assets/builtin/mobheads/models/item/zombie_horse.json +6 -0
  278. package/assets/builtin/mobheads/models/item/zombie_nautilus.json +6 -0
  279. package/assets/builtin/mobheads/models/item/zombie_villager.json +6 -0
  280. package/assets/builtin/mobheads/models/item/zombified_piglin.json +6 -0
  281. package/assets/builtin/renderchest/atlases/items.json +9 -0
  282. package/assets/builtin/renderchest/items/empty.json +5 -0
  283. package/assets/builtin/renderchest/items/unknown.json +6 -0
  284. package/assets/builtin/renderchest/models/item/banner.json +50 -0
  285. package/assets/builtin/renderchest/models/item/chest/chest.json +6 -0
  286. package/assets/builtin/renderchest/models/item/chest/copper_chest.json +6 -0
  287. package/assets/builtin/renderchest/models/item/chest/ender_chest.json +6 -0
  288. package/assets/builtin/renderchest/models/item/chest/exposed_copper_chest.json +6 -0
  289. package/assets/builtin/renderchest/models/item/chest/oxidized_copper_chest.json +6 -0
  290. package/assets/builtin/renderchest/models/item/chest/trapped_chest.json +6 -0
  291. package/assets/builtin/renderchest/models/item/chest/weathered_copper_chest.json +6 -0
  292. package/assets/builtin/renderchest/models/item/chest.json +47 -0
  293. package/assets/builtin/renderchest/models/item/conduit.json +24 -0
  294. package/assets/builtin/renderchest/models/item/copper_golem_statue/copper_golem_statue.json +6 -0
  295. package/assets/builtin/renderchest/models/item/copper_golem_statue/exposed_copper_golem_statue.json +6 -0
  296. package/assets/builtin/renderchest/models/item/copper_golem_statue/oxidized_copper_golem_statue.json +6 -0
  297. package/assets/builtin/renderchest/models/item/copper_golem_statue/weathered_copper_golem_statue.json +6 -0
  298. package/assets/builtin/renderchest/models/item/copper_golem_statue.json +132 -0
  299. package/assets/builtin/renderchest/models/item/decorated_pot.json +69 -0
  300. package/assets/builtin/renderchest/models/item/decorated_pot_base.json +37 -0
  301. package/assets/builtin/renderchest/models/item/decorated_pot_overlay.json +14 -0
  302. package/assets/builtin/renderchest/models/item/empty.json +6 -0
  303. package/assets/builtin/renderchest/models/item/filled_map/base.json +6 -0
  304. package/assets/builtin/renderchest/models/item/filled_map/overlay.json +6 -0
  305. package/assets/builtin/renderchest/models/item/firework_star/base.json +6 -0
  306. package/assets/builtin/renderchest/models/item/firework_star/overlay.json +6 -0
  307. package/assets/builtin/renderchest/models/item/potion/arrow_base.json +6 -0
  308. package/assets/builtin/renderchest/models/item/potion/arrow_head.json +6 -0
  309. package/assets/builtin/renderchest/models/item/potion/bottle.json +6 -0
  310. package/assets/builtin/renderchest/models/item/potion/bottle_lingering.json +6 -0
  311. package/assets/builtin/renderchest/models/item/potion/bottle_splash.json +6 -0
  312. package/assets/builtin/renderchest/models/item/potion/content.json +6 -0
  313. package/assets/builtin/renderchest/models/item/shield.json +41 -0
  314. package/assets/builtin/renderchest/models/item/shulker_box/black_shulker_box.json +6 -0
  315. package/assets/builtin/renderchest/models/item/shulker_box/blue_shulker_box.json +6 -0
  316. package/assets/builtin/renderchest/models/item/shulker_box/brown_shulker_box.json +6 -0
  317. package/assets/builtin/renderchest/models/item/shulker_box/cyan_shulker_box.json +6 -0
  318. package/assets/builtin/renderchest/models/item/shulker_box/gray_shulker_box.json +6 -0
  319. package/assets/builtin/renderchest/models/item/shulker_box/green_shulker_box.json +6 -0
  320. package/assets/builtin/renderchest/models/item/shulker_box/light_blue_shulker_box.json +6 -0
  321. package/assets/builtin/renderchest/models/item/shulker_box/light_gray_shulker_box.json +6 -0
  322. package/assets/builtin/renderchest/models/item/shulker_box/lime_shulker_box.json +6 -0
  323. package/assets/builtin/renderchest/models/item/shulker_box/magenta_shulker_box.json +6 -0
  324. package/assets/builtin/renderchest/models/item/shulker_box/orange_shulker_box.json +6 -0
  325. package/assets/builtin/renderchest/models/item/shulker_box/pink_shulker_box.json +6 -0
  326. package/assets/builtin/renderchest/models/item/shulker_box/purple_shulker_box.json +6 -0
  327. package/assets/builtin/renderchest/models/item/shulker_box/red_shulker_box.json +6 -0
  328. package/assets/builtin/renderchest/models/item/shulker_box/shulker_box.json +6 -0
  329. package/assets/builtin/renderchest/models/item/shulker_box/white_shulker_box.json +6 -0
  330. package/assets/builtin/renderchest/models/item/shulker_box/yellow_shulker_box.json +6 -0
  331. package/assets/builtin/renderchest/models/item/shulker_box.json +98 -0
  332. package/assets/builtin/renderchest/models/item/unknown.json +6 -0
  333. package/assets/builtin/renderchest/textures/item/empty.png +0 -0
  334. package/assets/builtin/renderchest/textures/item/unknown.png +0 -0
  335. package/assets/builtin-bed-compat/minecraft/models/item/black_bed.json +6 -0
  336. package/assets/builtin-bed-compat/minecraft/models/item/blue_bed.json +6 -0
  337. package/assets/builtin-bed-compat/minecraft/models/item/brown_bed.json +6 -0
  338. package/assets/builtin-bed-compat/minecraft/models/item/cyan_bed.json +6 -0
  339. package/assets/builtin-bed-compat/minecraft/models/item/gray_bed.json +6 -0
  340. package/assets/builtin-bed-compat/minecraft/models/item/green_bed.json +6 -0
  341. package/assets/builtin-bed-compat/minecraft/models/item/light_blue_bed.json +6 -0
  342. package/assets/builtin-bed-compat/minecraft/models/item/light_gray_bed.json +6 -0
  343. package/assets/builtin-bed-compat/minecraft/models/item/lime_bed.json +6 -0
  344. package/assets/builtin-bed-compat/minecraft/models/item/magenta_bed.json +6 -0
  345. package/assets/builtin-bed-compat/minecraft/models/item/orange_bed.json +6 -0
  346. package/assets/builtin-bed-compat/minecraft/models/item/pink_bed.json +6 -0
  347. package/assets/builtin-bed-compat/minecraft/models/item/purple_bed.json +6 -0
  348. package/assets/builtin-bed-compat/minecraft/models/item/red_bed.json +6 -0
  349. package/assets/builtin-bed-compat/minecraft/models/item/white_bed.json +6 -0
  350. package/assets/builtin-bed-compat/minecraft/models/item/yellow_bed.json +6 -0
  351. package/assets/builtin-bed-compat/renderchest/models/item/bed.json +72 -0
  352. package/assets/builtin-legacy/minecraft/atlases/misc.json +19 -0
  353. package/assets/builtin-legacy/minecraft/models/item/black_banner.json +3 -0
  354. package/assets/builtin-legacy/minecraft/models/item/black_bed.json +6 -0
  355. package/assets/builtin-legacy/minecraft/models/item/black_shulker_box.json +6 -0
  356. package/assets/builtin-legacy/minecraft/models/item/blue_banner.json +3 -0
  357. package/assets/builtin-legacy/minecraft/models/item/blue_bed.json +6 -0
  358. package/assets/builtin-legacy/minecraft/models/item/blue_shulker_box.json +6 -0
  359. package/assets/builtin-legacy/minecraft/models/item/brown_banner.json +3 -0
  360. package/assets/builtin-legacy/minecraft/models/item/brown_bed.json +6 -0
  361. package/assets/builtin-legacy/minecraft/models/item/brown_shulker_box.json +6 -0
  362. package/assets/builtin-legacy/minecraft/models/item/chest.json +6 -0
  363. package/assets/builtin-legacy/minecraft/models/item/conduit.json +6 -0
  364. package/assets/builtin-legacy/minecraft/models/item/creeper_head.json +3 -0
  365. package/assets/builtin-legacy/minecraft/models/item/cyan_banner.json +3 -0
  366. package/assets/builtin-legacy/minecraft/models/item/cyan_bed.json +6 -0
  367. package/assets/builtin-legacy/minecraft/models/item/cyan_shulker_box.json +6 -0
  368. package/assets/builtin-legacy/minecraft/models/item/decorated_pot.json +3 -0
  369. package/assets/builtin-legacy/minecraft/models/item/dragon_head.json +3 -0
  370. package/assets/builtin-legacy/minecraft/models/item/empty.json +3 -0
  371. package/assets/builtin-legacy/minecraft/models/item/ender_chest.json +6 -0
  372. package/assets/builtin-legacy/minecraft/models/item/gray_banner.json +3 -0
  373. package/assets/builtin-legacy/minecraft/models/item/gray_bed.json +6 -0
  374. package/assets/builtin-legacy/minecraft/models/item/gray_shulker_box.json +6 -0
  375. package/assets/builtin-legacy/minecraft/models/item/green_banner.json +3 -0
  376. package/assets/builtin-legacy/minecraft/models/item/green_bed.json +6 -0
  377. package/assets/builtin-legacy/minecraft/models/item/green_shulker_box.json +6 -0
  378. package/assets/builtin-legacy/minecraft/models/item/light_blue_banner.json +3 -0
  379. package/assets/builtin-legacy/minecraft/models/item/light_blue_bed.json +6 -0
  380. package/assets/builtin-legacy/minecraft/models/item/light_blue_shulker_box.json +6 -0
  381. package/assets/builtin-legacy/minecraft/models/item/light_gray_banner.json +3 -0
  382. package/assets/builtin-legacy/minecraft/models/item/light_gray_bed.json +6 -0
  383. package/assets/builtin-legacy/minecraft/models/item/light_gray_shulker_box.json +6 -0
  384. package/assets/builtin-legacy/minecraft/models/item/lime_banner.json +3 -0
  385. package/assets/builtin-legacy/minecraft/models/item/lime_bed.json +6 -0
  386. package/assets/builtin-legacy/minecraft/models/item/lime_shulker_box.json +6 -0
  387. package/assets/builtin-legacy/minecraft/models/item/magenta_banner.json +3 -0
  388. package/assets/builtin-legacy/minecraft/models/item/magenta_bed.json +6 -0
  389. package/assets/builtin-legacy/minecraft/models/item/magenta_shulker_box.json +6 -0
  390. package/assets/builtin-legacy/minecraft/models/item/orange_banner.json +3 -0
  391. package/assets/builtin-legacy/minecraft/models/item/orange_bed.json +6 -0
  392. package/assets/builtin-legacy/minecraft/models/item/orange_shulker_box.json +6 -0
  393. package/assets/builtin-legacy/minecraft/models/item/piglin_head.json +3 -0
  394. package/assets/builtin-legacy/minecraft/models/item/pink_banner.json +3 -0
  395. package/assets/builtin-legacy/minecraft/models/item/pink_bed.json +6 -0
  396. package/assets/builtin-legacy/minecraft/models/item/pink_shulker_box.json +6 -0
  397. package/assets/builtin-legacy/minecraft/models/item/player_head.json +3 -0
  398. package/assets/builtin-legacy/minecraft/models/item/purple_banner.json +3 -0
  399. package/assets/builtin-legacy/minecraft/models/item/purple_bed.json +6 -0
  400. package/assets/builtin-legacy/minecraft/models/item/purple_shulker_box.json +6 -0
  401. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_amethyst_trim.json +7 -0
  402. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_base.json +6 -0
  403. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_copper_trim.json +7 -0
  404. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_diamond_trim.json +7 -0
  405. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_emerald_trim.json +7 -0
  406. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_gold_trim.json +7 -0
  407. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_iron_trim.json +7 -0
  408. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_lapis_trim.json +7 -0
  409. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_netherite_trim.json +7 -0
  410. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_overlay.json +6 -0
  411. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_quartz_trim.json +7 -0
  412. package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_redstone_trim.json +7 -0
  413. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_amethyst_trim.json +7 -0
  414. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_base.json +6 -0
  415. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_copper_trim.json +7 -0
  416. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_diamond_trim.json +7 -0
  417. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_emerald_trim.json +7 -0
  418. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_gold_trim.json +7 -0
  419. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_iron_trim.json +7 -0
  420. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_lapis_trim.json +7 -0
  421. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_netherite_trim.json +7 -0
  422. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_overlay.json +6 -0
  423. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_quartz_trim.json +7 -0
  424. package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_redstone_trim.json +7 -0
  425. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_amethyst_trim.json +7 -0
  426. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_base.json +6 -0
  427. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_copper_trim.json +7 -0
  428. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_diamond_trim.json +7 -0
  429. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_emerald_trim.json +7 -0
  430. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_gold_trim.json +7 -0
  431. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_iron_trim.json +7 -0
  432. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_lapis_trim.json +7 -0
  433. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_netherite_trim.json +7 -0
  434. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_overlay.json +6 -0
  435. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_quartz_trim.json +7 -0
  436. package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_redstone_trim.json +7 -0
  437. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_amethyst_trim.json +7 -0
  438. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_base.json +6 -0
  439. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_copper_trim.json +7 -0
  440. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_diamond_trim.json +7 -0
  441. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_emerald_trim.json +7 -0
  442. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_gold_trim.json +7 -0
  443. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_iron_trim.json +7 -0
  444. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_lapis_trim.json +7 -0
  445. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_netherite_trim.json +7 -0
  446. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_overlay.json +6 -0
  447. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_quartz_trim.json +7 -0
  448. package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_redstone_trim.json +7 -0
  449. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_angler_pottery_sherd.json +9 -0
  450. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_archer_pottery_sherd.json +9 -0
  451. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_arms_up_pottery_sherd.json +9 -0
  452. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_blade_pottery_sherd.json +9 -0
  453. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_brewer_pottery_sherd.json +9 -0
  454. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_brick.json +9 -0
  455. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_burn_pottery_sherd.json +9 -0
  456. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_danger_pottery_sherd.json +9 -0
  457. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_explorer_pottery_sherd.json +9 -0
  458. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_friend_pottery_sherd.json +9 -0
  459. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_heart_pottery_sherd.json +9 -0
  460. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_heartbreak_pottery_sherd.json +9 -0
  461. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_howl_pottery_sherd.json +9 -0
  462. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_miner_pottery_sherd.json +9 -0
  463. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_mourner_pottery_sherd.json +9 -0
  464. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_plenty_pottery_sherd.json +9 -0
  465. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_prize_pottery_sherd.json +9 -0
  466. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_sheaf_pottery_sherd.json +9 -0
  467. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_shelter_pottery_sherd.json +9 -0
  468. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_skull_pottery_sherd.json +9 -0
  469. package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_snort_pottery_sherd.json +9 -0
  470. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_angler_pottery_sherd.json +6 -0
  471. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_archer_pottery_sherd.json +6 -0
  472. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_arms_up_pottery_sherd.json +6 -0
  473. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_blade_pottery_sherd.json +6 -0
  474. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_brewer_pottery_sherd.json +6 -0
  475. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_brick.json +6 -0
  476. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_burn_pottery_sherd.json +6 -0
  477. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_danger_pottery_sherd.json +6 -0
  478. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_explorer_pottery_sherd.json +6 -0
  479. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_friend_pottery_sherd.json +6 -0
  480. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_heart_pottery_sherd.json +6 -0
  481. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_heartbreak_pottery_sherd.json +6 -0
  482. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_howl_pottery_sherd.json +6 -0
  483. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_miner_pottery_sherd.json +6 -0
  484. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_mourner_pottery_sherd.json +6 -0
  485. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_plenty_pottery_sherd.json +6 -0
  486. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_prize_pottery_sherd.json +6 -0
  487. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_sheaf_pottery_sherd.json +6 -0
  488. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_shelter_pottery_sherd.json +6 -0
  489. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_skull_pottery_sherd.json +6 -0
  490. package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_snort_pottery_sherd.json +6 -0
  491. package/assets/builtin-legacy/minecraft/models/item/rc_potion_bottle.json +6 -0
  492. package/assets/builtin-legacy/minecraft/models/item/rc_potion_bottle_lingering.json +6 -0
  493. package/assets/builtin-legacy/minecraft/models/item/rc_potion_bottle_splash.json +6 -0
  494. package/assets/builtin-legacy/minecraft/models/item/rc_potion_content.json +6 -0
  495. package/assets/builtin-legacy/minecraft/models/item/rc_tipped_arrow_base.json +6 -0
  496. package/assets/builtin-legacy/minecraft/models/item/rc_tipped_arrow_head.json +6 -0
  497. package/assets/builtin-legacy/minecraft/models/item/red_banner.json +3 -0
  498. package/assets/builtin-legacy/minecraft/models/item/red_bed.json +6 -0
  499. package/assets/builtin-legacy/minecraft/models/item/red_shulker_box.json +6 -0
  500. package/assets/builtin-legacy/minecraft/models/item/shield.json +6 -0
  501. package/assets/builtin-legacy/minecraft/models/item/shulker_box.json +6 -0
  502. package/assets/builtin-legacy/minecraft/models/item/skeleton_skull.json +3 -0
  503. package/assets/builtin-legacy/minecraft/models/item/trapped_chest.json +6 -0
  504. package/assets/builtin-legacy/minecraft/models/item/unknown.json +3 -0
  505. package/assets/builtin-legacy/minecraft/models/item/white_banner.json +3 -0
  506. package/assets/builtin-legacy/minecraft/models/item/white_bed.json +6 -0
  507. package/assets/builtin-legacy/minecraft/models/item/white_shulker_box.json +6 -0
  508. package/assets/builtin-legacy/minecraft/models/item/wither_skeleton_skull.json +3 -0
  509. package/assets/builtin-legacy/minecraft/models/item/yellow_banner.json +3 -0
  510. package/assets/builtin-legacy/minecraft/models/item/yellow_bed.json +6 -0
  511. package/assets/builtin-legacy/minecraft/models/item/yellow_shulker_box.json +6 -0
  512. package/assets/builtin-legacy/minecraft/models/item/zombie_head.json +3 -0
  513. package/assets/builtin-legacy/mobheads/models/item/allay.json +6 -0
  514. package/assets/builtin-legacy/mobheads/models/item/armadillo.json +41 -0
  515. package/assets/builtin-legacy/mobheads/models/item/axolotl.json +36 -0
  516. package/assets/builtin-legacy/mobheads/models/item/base/cat.json +52 -0
  517. package/assets/builtin-legacy/mobheads/models/item/base/cow.json +43 -0
  518. package/assets/builtin-legacy/mobheads/models/item/base/donkey.json +68 -0
  519. package/assets/builtin-legacy/mobheads/models/item/base/guardian.json +272 -0
  520. package/assets/builtin-legacy/mobheads/models/item/base/head_32_32.json +19 -0
  521. package/assets/builtin-legacy/mobheads/models/item/base/head_64_32.json +19 -0
  522. package/assets/builtin-legacy/mobheads/models/item/base/head_64_64.json +19 -0
  523. package/assets/builtin-legacy/mobheads/models/item/base/head_display.json +8 -0
  524. package/assets/builtin-legacy/mobheads/models/item/base/hoglin.json +81 -0
  525. package/assets/builtin-legacy/mobheads/models/item/base/horse.json +80 -0
  526. package/assets/builtin-legacy/mobheads/models/item/base/llama.json +64 -0
  527. package/assets/builtin-legacy/mobheads/models/item/base/piglin.json +80 -0
  528. package/assets/builtin-legacy/mobheads/models/item/base/spider.json +32 -0
  529. package/assets/builtin-legacy/mobheads/models/item/base/squid.json +116 -0
  530. package/assets/builtin-legacy/mobheads/models/item/base/villager.json +43 -0
  531. package/assets/builtin-legacy/mobheads/models/item/bat.json +41 -0
  532. package/assets/builtin-legacy/mobheads/models/item/bee.json +59 -0
  533. package/assets/builtin-legacy/mobheads/models/item/blaze.json +6 -0
  534. package/assets/builtin-legacy/mobheads/models/item/breeze.json +49 -0
  535. package/assets/builtin-legacy/mobheads/models/item/camel.json +62 -0
  536. package/assets/builtin-legacy/mobheads/models/item/cat.json +6 -0
  537. package/assets/builtin-legacy/mobheads/models/item/cave_spider.json +6 -0
  538. package/assets/builtin-legacy/mobheads/models/item/chicken.json +46 -0
  539. package/assets/builtin-legacy/mobheads/models/item/cod.json +98 -0
  540. package/assets/builtin-legacy/mobheads/models/item/cow.json +6 -0
  541. package/assets/builtin-legacy/mobheads/models/item/creeper.json +6 -0
  542. package/assets/builtin-legacy/mobheads/models/item/dolphin.json +33 -0
  543. package/assets/builtin-legacy/mobheads/models/item/donkey.json +6 -0
  544. package/assets/builtin-legacy/mobheads/models/item/drowned.json +35 -0
  545. package/assets/builtin-legacy/mobheads/models/item/elder_guardian.json +6 -0
  546. package/assets/builtin-legacy/mobheads/models/item/ender_dragon.json +113 -0
  547. package/assets/builtin-legacy/mobheads/models/item/enderman.json +41 -0
  548. package/assets/builtin-legacy/mobheads/models/item/endermite.json +59 -0
  549. package/assets/builtin-legacy/mobheads/models/item/evoker.json +6 -0
  550. package/assets/builtin-legacy/mobheads/models/item/fox.json +55 -0
  551. package/assets/builtin-legacy/mobheads/models/item/frog.json +159 -0
  552. package/assets/builtin-legacy/mobheads/models/item/ghast.json +131 -0
  553. package/assets/builtin-legacy/mobheads/models/item/giant.json +6 -0
  554. package/assets/builtin-legacy/mobheads/models/item/glow_squid.json +6 -0
  555. package/assets/builtin-legacy/mobheads/models/item/goat.json +56 -0
  556. package/assets/builtin-legacy/mobheads/models/item/guardian.json +6 -0
  557. package/assets/builtin-legacy/mobheads/models/item/hoglin.json +6 -0
  558. package/assets/builtin-legacy/mobheads/models/item/horse.json +6 -0
  559. package/assets/builtin-legacy/mobheads/models/item/husk.json +6 -0
  560. package/assets/builtin-legacy/mobheads/models/item/illusioner.json +6 -0
  561. package/assets/builtin-legacy/mobheads/models/item/iron_golem.json +34 -0
  562. package/assets/builtin-legacy/mobheads/models/item/llama.json +7 -0
  563. package/assets/builtin-legacy/mobheads/models/item/magma_cube.json +52 -0
  564. package/assets/builtin-legacy/mobheads/models/item/mooshroom.json +6 -0
  565. package/assets/builtin-legacy/mobheads/models/item/mule.json +6 -0
  566. package/assets/builtin-legacy/mobheads/models/item/ocelot.json +6 -0
  567. package/assets/builtin-legacy/mobheads/models/item/panda.json +61 -0
  568. package/assets/builtin-legacy/mobheads/models/item/parrot.json +73 -0
  569. package/assets/builtin-legacy/mobheads/models/item/phantom.json +33 -0
  570. package/assets/builtin-legacy/mobheads/models/item/pig.json +35 -0
  571. package/assets/builtin-legacy/mobheads/models/item/piglin.json +6 -0
  572. package/assets/builtin-legacy/mobheads/models/item/piglin_brute.json +6 -0
  573. package/assets/builtin-legacy/mobheads/models/item/pillager.json +6 -0
  574. package/assets/builtin-legacy/mobheads/models/item/player.json +6 -0
  575. package/assets/builtin-legacy/mobheads/models/item/polar_bear.json +61 -0
  576. package/assets/builtin-legacy/mobheads/models/item/pufferfish.json +113 -0
  577. package/assets/builtin-legacy/mobheads/models/item/rabbit.json +59 -0
  578. package/assets/builtin-legacy/mobheads/models/item/ravager.json +75 -0
  579. package/assets/builtin-legacy/mobheads/models/item/salmon.json +80 -0
  580. package/assets/builtin-legacy/mobheads/models/item/sheep.json +34 -0
  581. package/assets/builtin-legacy/mobheads/models/item/shulker.json +109 -0
  582. package/assets/builtin-legacy/mobheads/models/item/silverfish.json +148 -0
  583. package/assets/builtin-legacy/mobheads/models/item/skeleton.json +6 -0
  584. package/assets/builtin-legacy/mobheads/models/item/skeleton_horse.json +6 -0
  585. package/assets/builtin-legacy/mobheads/models/item/slime.json +69 -0
  586. package/assets/builtin-legacy/mobheads/models/item/sniffer.json +85 -0
  587. package/assets/builtin-legacy/mobheads/models/item/snow_golem.json +24 -0
  588. package/assets/builtin-legacy/mobheads/models/item/spider.json +6 -0
  589. package/assets/builtin-legacy/mobheads/models/item/squid.json +6 -0
  590. package/assets/builtin-legacy/mobheads/models/item/stray.json +35 -0
  591. package/assets/builtin-legacy/mobheads/models/item/strider.json +101 -0
  592. package/assets/builtin-legacy/mobheads/models/item/tadpole.json +31 -0
  593. package/assets/builtin-legacy/mobheads/models/item/trader_llama.json +7 -0
  594. package/assets/builtin-legacy/mobheads/models/item/tropical_fish.json +141 -0
  595. package/assets/builtin-legacy/mobheads/models/item/turtle.json +23 -0
  596. package/assets/builtin-legacy/mobheads/models/item/vex.json +23 -0
  597. package/assets/builtin-legacy/mobheads/models/item/villager.json +6 -0
  598. package/assets/builtin-legacy/mobheads/models/item/vindicator.json +6 -0
  599. package/assets/builtin-legacy/mobheads/models/item/wandering_trader.json +6 -0
  600. package/assets/builtin-legacy/mobheads/models/item/warden.json +92 -0
  601. package/assets/builtin-legacy/mobheads/models/item/witch.json +110 -0
  602. package/assets/builtin-legacy/mobheads/models/item/wither.json +22 -0
  603. package/assets/builtin-legacy/mobheads/models/item/wither_skeleton.json +6 -0
  604. package/assets/builtin-legacy/mobheads/models/item/wolf.json +59 -0
  605. package/assets/builtin-legacy/mobheads/models/item/zoglin.json +6 -0
  606. package/assets/builtin-legacy/mobheads/models/item/zombie.json +6 -0
  607. package/assets/builtin-legacy/mobheads/models/item/zombie_horse.json +6 -0
  608. package/assets/builtin-legacy/mobheads/models/item/zombie_villager.json +6 -0
  609. package/assets/builtin-legacy/mobheads/models/item/zombified_piglin.json +6 -0
  610. package/assets/builtin-legacy/renderchest/atlases/items.json +9 -0
  611. package/assets/builtin-legacy/renderchest/models/item/banner.json +53 -0
  612. package/assets/builtin-legacy/renderchest/models/item/bed.json +72 -0
  613. package/assets/builtin-legacy/renderchest/models/item/chest.json +49 -0
  614. package/assets/builtin-legacy/renderchest/models/item/conduit.json +24 -0
  615. package/assets/builtin-legacy/renderchest/models/item/decorated_pot.json +69 -0
  616. package/assets/builtin-legacy/renderchest/models/item/decorated_pot_base.json +34 -0
  617. package/assets/builtin-legacy/renderchest/models/item/decorated_pot_overlay.json +14 -0
  618. package/assets/builtin-legacy/renderchest/models/item/empty.json +6 -0
  619. package/assets/builtin-legacy/renderchest/models/item/shield.json +38 -0
  620. package/assets/builtin-legacy/renderchest/models/item/shulker_box.json +103 -0
  621. package/assets/builtin-legacy/renderchest/models/item/unknown.json +6 -0
  622. package/assets/builtin-legacy/renderchest/textures/item/empty.png +0 -0
  623. package/assets/builtin-legacy/renderchest/textures/item/unknown.png +0 -0
  624. package/dist/atlas/registry.d.ts +8 -0
  625. package/dist/atlas/registry.js +2 -0
  626. package/dist/atlas/sources.d.ts +2 -0
  627. package/dist/atlas/sources.js +2 -0
  628. package/dist/blend-CHP2-j9U.js +90 -0
  629. package/dist/blend-Qvrn6YgK.d.ts +36 -0
  630. package/dist/builtin-C8GZEN40.js +16 -0
  631. package/dist/builtin.d.ts +5 -0
  632. package/dist/builtin.js +2 -0
  633. package/dist/cli.d.ts +1 -0
  634. package/dist/cli.js +174 -0
  635. package/dist/compose-cph4bfdr.js +27 -0
  636. package/dist/definition-3MBm8ar_.js +117 -0
  637. package/dist/definition-BwX6Xxv0.d.ts +34 -0
  638. package/dist/discovery-BzaOti7l.js +91 -0
  639. package/dist/discovery-CmNYzKPr.d.ts +18 -0
  640. package/dist/download-D9aARBFp.js +34 -0
  641. package/dist/dynamic/generators.d.ts +2 -0
  642. package/dist/dynamic/generators.js +2 -0
  643. package/dist/encode-3u49i-eD.js +108 -0
  644. package/dist/encode-C5kdAm45.d.ts +34 -0
  645. package/dist/entity-fallback-CodtI6v8.js +265 -0
  646. package/dist/face-DC6cNMdz.d.ts +24 -0
  647. package/dist/face-Wfia-_Yx.js +92 -0
  648. package/dist/fluid-bucket-D-GpUQjg.js +88 -0
  649. package/dist/generators-CCB8h0mP.d.ts +23 -0
  650. package/dist/generators-CcVRG30y.js +145 -0
  651. package/dist/geo-B5VqGulc.js +333 -0
  652. package/dist/geometry-BSVmKx5b.d.ts +28 -0
  653. package/dist/geometry-uIDha8S4.js +229 -0
  654. package/dist/index.d.ts +20 -0
  655. package/dist/index.js +20 -0
  656. package/dist/item-styles-DJ3LWZS2.js +174 -0
  657. package/dist/items/definition.d.ts +2 -0
  658. package/dist/items/definition.js +2 -0
  659. package/dist/items/discovery.d.ts +2 -0
  660. package/dist/items/discovery.js +2 -0
  661. package/dist/jar-6T3xdgaL.d.ts +21 -0
  662. package/dist/jar-Bt3i0ls4.js +119 -0
  663. package/dist/legacy-reshape-CewShfF3.js +203 -0
  664. package/dist/legacy-tints-B09J0Rxh.js +169 -0
  665. package/dist/lighting--5myudVu.js +83 -0
  666. package/dist/lighting-3FGRC3Af.d.ts +42 -0
  667. package/dist/loader-C-eqwp3M.js +359 -0
  668. package/dist/loader-CBzn3Koc.js +228 -0
  669. package/dist/loader-TFFNV4Jl.d.ts +88 -0
  670. package/dist/loader-lCkMRDH4.d.ts +69 -0
  671. package/dist/locator-jDbdUeTd.d.ts +24 -0
  672. package/dist/locator-ycZzh_6z.js +54 -0
  673. package/dist/manager-CoZaeQTu.d.ts +88 -0
  674. package/dist/manager-dfI7b9N4.js +150 -0
  675. package/dist/minify-CIV6enbr.d.ts +11 -0
  676. package/dist/minify-bjMRmr5J.js +31 -0
  677. package/dist/models/loader.d.ts +2 -0
  678. package/dist/models/loader.js +2 -0
  679. package/dist/models/types.d.ts +2 -0
  680. package/dist/models/types.js +11 -0
  681. package/dist/mods/prepare.d.ts +2 -0
  682. package/dist/mods/prepare.js +2 -0
  683. package/dist/mods/synthesize.d.ts +10 -0
  684. package/dist/mods/synthesize.js +2 -0
  685. package/dist/output/encode.d.ts +2 -0
  686. package/dist/output/encode.js +2 -0
  687. package/dist/output/item-styles.d.ts +10 -0
  688. package/dist/output/item-styles.js +2 -0
  689. package/dist/output/minify.d.ts +2 -0
  690. package/dist/output/minify.js +2 -0
  691. package/dist/output/stylesheet.d.ts +2 -0
  692. package/dist/output/stylesheet.js +2 -0
  693. package/dist/prepare-Bvc5ve2m.js +68 -0
  694. package/dist/prepare-DROxBZp1.js +112 -0
  695. package/dist/prepare-DnnGGv9k.d.ts +25 -0
  696. package/dist/prepare-wfWtaz_X.d.ts +45 -0
  697. package/dist/rasterizer-ABgsWTYN.js +139 -0
  698. package/dist/rasterizer-CVOlRsuw.d.ts +41 -0
  699. package/dist/registry-C9E7jyzG.js +28 -0
  700. package/dist/render/blend.d.ts +2 -0
  701. package/dist/render/blend.js +2 -0
  702. package/dist/render/compose.d.ts +6 -0
  703. package/dist/render/compose.js +2 -0
  704. package/dist/render/entity-fallback.d.ts +30 -0
  705. package/dist/render/entity-fallback.js +2 -0
  706. package/dist/render/face.d.ts +2 -0
  707. package/dist/render/face.js +2 -0
  708. package/dist/render/fluid-bucket.d.ts +14 -0
  709. package/dist/render/fluid-bucket.js +2 -0
  710. package/dist/render/geo.d.ts +54 -0
  711. package/dist/render/geo.js +2 -0
  712. package/dist/render/geometry.d.ts +2 -0
  713. package/dist/render/geometry.js +2 -0
  714. package/dist/render/legacy-tints.d.ts +12 -0
  715. package/dist/render/legacy-tints.js +2 -0
  716. package/dist/render/lighting.d.ts +2 -0
  717. package/dist/render/lighting.js +2 -0
  718. package/dist/render/obj.d.ts +24 -0
  719. package/dist/render/obj.js +2 -0
  720. package/dist/render/rasterizer.d.ts +2 -0
  721. package/dist/render/rasterizer.js +2 -0
  722. package/dist/render/renderer.d.ts +2 -0
  723. package/dist/render/renderer.js +2 -0
  724. package/dist/render/tints.d.ts +2 -0
  725. package/dist/render/tints.js +2 -0
  726. package/dist/render/vector.d.ts +2 -0
  727. package/dist/render/vector.js +2 -0
  728. package/dist/renderer-CmOz6WI9.js +507 -0
  729. package/dist/renderer-DQfv6axF.d.ts +44 -0
  730. package/dist/resources/jar.d.ts +2 -0
  731. package/dist/resources/jar.js +2 -0
  732. package/dist/resources/locator.d.ts +2 -0
  733. package/dist/resources/locator.js +2 -0
  734. package/dist/resources/manager.d.ts +2 -0
  735. package/dist/resources/manager.js +2 -0
  736. package/dist/resources/synthetic.d.ts +2 -0
  737. package/dist/resources/synthetic.js +2 -0
  738. package/dist/run-BK7Q8WZ3.d.ts +54 -0
  739. package/dist/run-Dr6BfyN9.js +316 -0
  740. package/dist/run.d.ts +3 -0
  741. package/dist/run.js +3 -0
  742. package/dist/sources-Bxk-WOzH.js +202 -0
  743. package/dist/sources-DH9dk3KF.d.ts +104 -0
  744. package/dist/stylesheet-CovT3B2S.js +71 -0
  745. package/dist/stylesheet-i-t_7sZ7.d.ts +53 -0
  746. package/dist/synthesize-CRgSEmEp.js +128 -0
  747. package/dist/synthetic-CDsj--li.d.ts +34 -0
  748. package/dist/synthetic-DC2bSnGe.js +0 -0
  749. package/dist/textures/loader.d.ts +2 -0
  750. package/dist/textures/loader.js +2 -0
  751. package/dist/tints-FQlxTzUL.js +108 -0
  752. package/dist/tints-Fr6WoPaU.d.ts +22 -0
  753. package/dist/types-COGbtA1t.d.ts +69 -0
  754. package/dist/vector-CCxLae_T.js +190 -0
  755. package/dist/vector-DRKRi4--.d.ts +43 -0
  756. package/dist/versions/download.d.ts +9 -0
  757. package/dist/versions/download.js +2 -0
  758. package/dist/versions/legacy-reshape.d.ts +9 -0
  759. package/dist/versions/legacy-reshape.js +2 -0
  760. package/dist/versions/prepare.d.ts +2 -0
  761. package/dist/versions/prepare.js +2 -0
  762. package/dist/workers/pool.d.ts +23 -0
  763. package/dist/workers/pool.js +67 -0
  764. package/package.json +71 -22
@@ -0,0 +1,359 @@
1
+ import { n as ResourceLocator } from "./locator-ycZzh_6z.js";
2
+ //#region src/models/loader.ts
3
+ var ModelResolutionError = class extends Error {};
4
+ const MAX_PARENT_DEPTH = 64;
5
+ const MAX_TEXTURE_REF_DEPTH = 16;
6
+ /**
7
+ * Per-mod synthesizers for loaders whose geometry lives entirely in Java but
8
+ * whose icon shape is simple and stable enough to rebuild from the model json.
9
+ * Keyed on the EXACT loader id so an unknown mod's loader never gets a wrong
10
+ * guess — unhandled loaders keep the strip-and-fail-loud path below, and the
11
+ * run() fallback chain (block model, geo, entity, sprite) still applies.
12
+ * Adding a mod means adding an entry here plus a fixture test.
13
+ */
14
+ const MOD_LOADER_HANDLERS = {
15
+ "immersiveengineering:conf_sides": flattenConfSides,
16
+ "immersiveengineering:models/conveyor": flattenConveyor
17
+ };
18
+ /**
19
+ * Rewrite custom-loader models (forge/neoforge `loader` key) into drawable
20
+ * geometry. Left unhandled they fall back to a textureless parent and render
21
+ * as black squares — worse than failing, since the item still counts as having
22
+ * an icon (1,793 such icons in the old pipeline's modded run). Resolution
23
+ * order mirrors what each loader actually draws: the gui perspective IS the
24
+ * icon view; composite children draw first-to-last; fluid containers' real
25
+ * parent is loader-provided with no file behind it. OBJ loaders are left
26
+ * alone — their geometry is a different file format.
27
+ */
28
+ function flattenLoaderModel(json, depth = 0) {
29
+ const loader = extractLoaderType(json);
30
+ if (!loader || depth > 8) return json;
31
+ if (/obj$/i.test(loader)) {
32
+ const extended = json;
33
+ if (typeof extended.model === "string") {
34
+ const marked = withoutLoader(json);
35
+ marked.objModel = {
36
+ model: extended.model,
37
+ flipV: extended.flip_v ?? extended.flip_V ?? false
38
+ };
39
+ delete marked.model;
40
+ return marked;
41
+ }
42
+ return json;
43
+ }
44
+ const handler = MOD_LOADER_HANDLERS[loader];
45
+ if (handler) return handler(json);
46
+ const extended = json;
47
+ if (extended.perspectives?.gui && typeof extended.perspectives.gui === "object") return flattenLoaderModel(extended.perspectives.gui, depth + 1);
48
+ if (extended.base && typeof extended.base === "object") return flattenLoaderModel(extended.base, depth + 1);
49
+ if (typeof extended.childModel === "string") return { parent: extended.childModel };
50
+ if (extended.children && typeof extended.children === "object") {
51
+ const children = Object.values(extended.children);
52
+ const inline = children.filter((child) => typeof child === "object" && child !== null);
53
+ if (inline.length > 0 && inline.every((child) => Array.isArray(child.elements))) return {
54
+ ...withoutLoader(json),
55
+ children: void 0,
56
+ textures: Object.assign({}, ...inline.map((child) => child.textures), json.textures),
57
+ elements: inline.flatMap((child) => child.elements ?? [])
58
+ };
59
+ const first = children[0];
60
+ if (typeof first === "string") return { parent: first };
61
+ if (first && typeof first === "object") return flattenLoaderModel(first, depth + 1);
62
+ }
63
+ if (extended.inner_model && typeof extended.inner_model === "object") return flattenLoaderModel(extended.inner_model, depth + 1);
64
+ if (/fluid_container|bucket/i.test(loader)) {
65
+ const fluid = json.fluid;
66
+ const bucket = { parent: "minecraft:item/bucket" };
67
+ if (typeof fluid === "string" && fluid.length > 0 && !fluid.endsWith(":empty")) bucket.fluidContained = fluid;
68
+ return bucket;
69
+ }
70
+ return withoutLoader(json);
71
+ }
72
+ /** IE conveyor types whose belt texture is not simply `block/conveyor/<type>`. */
73
+ const CONVEYOR_BELTS = {
74
+ basic: "conveyor",
75
+ covered: "conveyor",
76
+ extract: "conveyor",
77
+ splitter: "split"
78
+ };
79
+ /**
80
+ * IE's conveyor loader builds its belt entirely in code, but the shape it
81
+ * draws for the icon is just a flat 16x2x16 belt with the type's (animated)
82
+ * belt texture on top. The display transform is inlined because the model
83
+ * json has no block/block parent to inherit the gui pose from.
84
+ */
85
+ function flattenConveyor(json) {
86
+ const conveyorType = json.conveyorType;
87
+ if (typeof conveyorType !== "string" || !conveyorType.includes(":")) return withoutLoader(json);
88
+ const [namespace, type] = conveyorType.split(":", 2);
89
+ const belt = `${namespace}:block/conveyor/${CONVEYOR_BELTS[type] ?? type}`;
90
+ const side = {
91
+ uv: [
92
+ 0,
93
+ 0,
94
+ 16,
95
+ 2
96
+ ],
97
+ texture: "#belt"
98
+ };
99
+ return {
100
+ gui_light: "side",
101
+ display: { gui: {
102
+ rotation: [
103
+ 30,
104
+ 225,
105
+ 0
106
+ ],
107
+ translation: [
108
+ 0,
109
+ 0,
110
+ 0
111
+ ],
112
+ scale: [
113
+ .625,
114
+ .625,
115
+ .625
116
+ ]
117
+ } },
118
+ textures: {
119
+ belt,
120
+ particle: belt
121
+ },
122
+ elements: [{
123
+ from: [
124
+ 0,
125
+ 0,
126
+ 0
127
+ ],
128
+ to: [
129
+ 16,
130
+ 2,
131
+ 16
132
+ ],
133
+ faces: {
134
+ up: {
135
+ uv: [
136
+ 0,
137
+ 0,
138
+ 16,
139
+ 16
140
+ ],
141
+ texture: "#belt"
142
+ },
143
+ down: {
144
+ uv: [
145
+ 0,
146
+ 0,
147
+ 16,
148
+ 16
149
+ ],
150
+ texture: "#belt"
151
+ },
152
+ north: side,
153
+ south: side,
154
+ east: side,
155
+ west: side
156
+ }
157
+ }]
158
+ };
159
+ }
160
+ /**
161
+ * IE's conf_sides loader picks per-face textures from `<base_name>` plus a
162
+ * side/io suffix at runtime; the icon always shows the unconfigured ("none")
163
+ * state, so a plain cube with those textures matches what the game draws.
164
+ */
165
+ function flattenConfSides(json) {
166
+ const { type, base_name: base } = json;
167
+ if (typeof base !== "string") return withoutLoader(json);
168
+ const faces = type === "side_top_bottom" ? {
169
+ up: `${base}_up_none`,
170
+ down: `${base}_down_none`,
171
+ side: `${base}_side_none`
172
+ } : type === "vertical" ? {
173
+ up: `${base}_up_none`,
174
+ down: `${base}_up_none`,
175
+ side: `${base}_side`
176
+ } : {
177
+ up: `${base}_side_none`,
178
+ down: `${base}_side_none`,
179
+ side: `${base}_side_none`
180
+ };
181
+ return {
182
+ parent: "minecraft:block/cube",
183
+ textures: {
184
+ particle: faces.side,
185
+ up: faces.up,
186
+ down: faces.down,
187
+ north: faces.side,
188
+ south: faces.side,
189
+ east: faces.side,
190
+ west: faces.side
191
+ }
192
+ };
193
+ }
194
+ function extractLoaderType(json) {
195
+ const record = json;
196
+ if (typeof record.loader === "string") return record.loader;
197
+ if (typeof record.loader === "object" && record.loader !== null) {
198
+ const type = record.loader.type;
199
+ return typeof type === "string" ? type : null;
200
+ }
201
+ return null;
202
+ }
203
+ function withoutLoader(json) {
204
+ const rest = { ...json };
205
+ delete rest.loader;
206
+ return rest;
207
+ }
208
+ function isBuiltinParent(parent) {
209
+ return parent.startsWith("builtin/") || parent.startsWith("minecraft:builtin/");
210
+ }
211
+ function normalizeBuiltin(parent) {
212
+ return parent.replace(/^minecraft:/, "");
213
+ }
214
+ /**
215
+ * Return the first complete JSON value in a string, tolerating trailing junk the way
216
+ * Gson does (IntegratedDynamics ships models with garbage after the closing brace).
217
+ * Returns null when no complete value exists.
218
+ */
219
+ function salvageJson(text) {
220
+ const start = text.search(/[[{]/);
221
+ if (start === -1) return null;
222
+ let depth = 0;
223
+ let inString = false;
224
+ let escaped = false;
225
+ for (let i = start; i < text.length; i++) {
226
+ const char = text[i];
227
+ if (inString) {
228
+ if (escaped) escaped = false;
229
+ else if (char === "\\") escaped = true;
230
+ else if (char === "\"") inString = false;
231
+ continue;
232
+ }
233
+ if (char === "\"") inString = true;
234
+ else if (char === "{" || char === "[") depth++;
235
+ else if (char === "}" || char === "]") {
236
+ depth--;
237
+ if (depth === 0) try {
238
+ return JSON.parse(text.slice(start, i + 1));
239
+ } catch {
240
+ return null;
241
+ }
242
+ }
243
+ }
244
+ return null;
245
+ }
246
+ var ModelLoader = class {
247
+ resources;
248
+ cache = /* @__PURE__ */ new Map();
249
+ constructor(resources) {
250
+ this.resources = resources;
251
+ }
252
+ async readModelJson(locator) {
253
+ const raw = await this.resources.getResource("model", locator);
254
+ if (raw === null) throw new ModelResolutionError(`Model not found: ${locator}`);
255
+ let json;
256
+ try {
257
+ json = JSON.parse(raw.toString("utf8"));
258
+ } catch {
259
+ const salvaged = salvageJson(raw.toString("utf8"));
260
+ if (salvaged === null) throw new ModelResolutionError(`Model is not valid JSON: ${locator}`);
261
+ json = salvaged;
262
+ }
263
+ return flattenLoaderModel(json);
264
+ }
265
+ async resolve(locator) {
266
+ const chain = [];
267
+ const seen = /* @__PURE__ */ new Set();
268
+ let current = locator;
269
+ let builtinParent = null;
270
+ while (current !== null) {
271
+ const key = current.toString();
272
+ if (seen.has(key)) throw new ModelResolutionError(`Model parent cycle at ${key} (from ${locator})`);
273
+ if (chain.length >= MAX_PARENT_DEPTH) throw new ModelResolutionError(`Model parent chain exceeds ${MAX_PARENT_DEPTH} at ${locator}`);
274
+ seen.add(key);
275
+ const json = await this.readModelJson(current);
276
+ chain.push({
277
+ locator: current,
278
+ json
279
+ });
280
+ if (json.parent === void 0) current = null;
281
+ else if (isBuiltinParent(json.parent)) {
282
+ builtinParent = normalizeBuiltin(json.parent);
283
+ current = null;
284
+ } else current = ResourceLocator.parse(json.parent);
285
+ }
286
+ const textures = {};
287
+ const display = {};
288
+ let elements = [];
289
+ let guiLight;
290
+ let elementsGuiLight;
291
+ for (let i = chain.length - 1; i >= 0; i--) {
292
+ const { json } = chain[i];
293
+ for (const [name, value] of Object.entries(json.textures ?? {})) textures[name] = typeof value === "object" && value !== null ? String(value.sprite ?? "") : value;
294
+ Object.assign(display, json.display);
295
+ if (json.gui_light !== void 0) guiLight = json.gui_light;
296
+ if (json.elements !== void 0) {
297
+ elements = json.elements;
298
+ elementsGuiLight = guiLight;
299
+ }
300
+ }
301
+ let obj;
302
+ for (const entry of chain) {
303
+ const marked = entry.json;
304
+ if (marked.objModel) {
305
+ obj = marked.objModel;
306
+ break;
307
+ }
308
+ }
309
+ let fluid;
310
+ for (const entry of chain) {
311
+ const marked = entry.json;
312
+ if (marked.fluidContained) {
313
+ fluid = marked.fluidContained;
314
+ break;
315
+ }
316
+ }
317
+ const defaultLight = builtinParent === "builtin/generated" ? "front" : "side";
318
+ return {
319
+ obj,
320
+ fluid,
321
+ locator,
322
+ builtinParent,
323
+ guiLight: guiLight ?? defaultLight,
324
+ elementsGuiLight: elementsGuiLight ?? defaultLight,
325
+ display,
326
+ textures,
327
+ elements,
328
+ chain: chain.map((entry) => entry.locator.toString())
329
+ };
330
+ }
331
+ /** Load and flatten a model by locator string (e.g. `minecraft:item/stone`). */
332
+ async load(locator) {
333
+ const parsed = typeof locator === "string" ? ResourceLocator.parse(locator) : locator;
334
+ const key = parsed.toString();
335
+ let pending = this.cache.get(key);
336
+ if (!pending) {
337
+ pending = this.resolve(parsed);
338
+ this.cache.set(key, pending);
339
+ }
340
+ return pending;
341
+ }
342
+ };
343
+ /**
344
+ * Resolve a texture variable (`#layer0`) through the merged texture map to a locator.
345
+ * Returns null for unresolved variables — the caller decides whether that fails the
346
+ * item or just the face.
347
+ */
348
+ function resolveTexture(model, reference) {
349
+ let value = reference;
350
+ for (let depth = 0; depth < MAX_TEXTURE_REF_DEPTH; depth++) {
351
+ if (!value.startsWith("#")) return ResourceLocator.tryParse(value);
352
+ const next = model.textures[value.slice(1)];
353
+ if (next === void 0) return null;
354
+ value = next;
355
+ }
356
+ return null;
357
+ }
358
+ //#endregion
359
+ export { salvageJson as a, resolveTexture as i, ModelResolutionError as n, flattenLoaderModel as r, ModelLoader as t };
@@ -0,0 +1,228 @@
1
+ import sharp from "sharp";
2
+ //#region src/textures/loader.ts
3
+ var TextureResolutionError = class extends Error {};
4
+ /**
5
+ * Animation-aware texture access: frame extraction over strips and grids with
6
+ * mcmeta frame lists, per-frame times, and interpolation (upstream semantics:
7
+ * cols = trunc(16/meta.width), frame count from geometry when no list).
8
+ */
9
+ var AnimatedTexture = class {
10
+ full;
11
+ meta;
12
+ columns;
13
+ frameCache = /* @__PURE__ */ new Map();
14
+ frameWidth;
15
+ frameHeight;
16
+ frameCount;
17
+ constructor(full, meta) {
18
+ this.full = full;
19
+ this.meta = meta;
20
+ const metaWidth = meta?.animation?.width ?? 16;
21
+ const metaHeight = meta?.animation?.height ?? 16;
22
+ this.columns = Math.max(1, Math.trunc(16 / metaWidth));
23
+ this.frameWidth = Math.round(full.width * (metaWidth / 16));
24
+ this.frameHeight = Math.round(this.frameWidth * (metaHeight / 16));
25
+ const frames = meta?.animation?.frames;
26
+ if (!meta?.animation) this.frameCount = 1;
27
+ else if (frames?.length) this.frameCount = frames.length;
28
+ else this.frameCount = Math.max(1, Math.round(full.height / this.frameHeight * this.columns));
29
+ }
30
+ get interpolated() {
31
+ return this.meta?.animation?.interpolate ?? false;
32
+ }
33
+ /** Total animation length in game ticks (1 for unanimated). */
34
+ get tickLength() {
35
+ if (!this.meta?.animation || this.frameCount <= 1) return 1;
36
+ const frameTime = this.meta.animation.frametime ?? 1;
37
+ const frames = this.meta.animation.frames;
38
+ if (frames?.length) {
39
+ let total = 0;
40
+ for (const frame of frames) total += typeof frame === "number" ? frameTime : frame.time ?? frameTime;
41
+ return total;
42
+ }
43
+ return this.frameCount * frameTime;
44
+ }
45
+ /** Which physical frame index shows at a tick, and the interpolation factor. */
46
+ resolveFrame(tick) {
47
+ const animation = this.meta?.animation;
48
+ if (!animation || this.frameCount <= 1) return {
49
+ frame: 0,
50
+ interpolation: 0
51
+ };
52
+ const frameTime = animation.frametime ?? 1;
53
+ const frames = animation.frames;
54
+ if (!frames?.length) return {
55
+ frame: Math.floor(tick / frameTime) % this.frameCount,
56
+ interpolation: tick % frameTime / frameTime
57
+ };
58
+ let remaining = tick % this.tickLength;
59
+ for (const entry of frames) {
60
+ const index = typeof entry === "number" ? entry : entry.index;
61
+ const time = typeof entry === "number" ? frameTime : entry.time ?? frameTime;
62
+ if (remaining < time) return {
63
+ frame: index,
64
+ interpolation: remaining / time
65
+ };
66
+ remaining -= time;
67
+ }
68
+ return {
69
+ frame: typeof frames[0] === "number" ? frames[0] : frames[0].index,
70
+ interpolation: 0
71
+ };
72
+ }
73
+ /** Crop one physical frame out of the strip/grid (memoized). */
74
+ frame(index) {
75
+ let cached = this.frameCache.get(index);
76
+ if (!cached) {
77
+ const left = index % this.columns * this.frameWidth;
78
+ const top = Math.floor(index / this.columns) * this.frameHeight;
79
+ const data = new Uint8ClampedArray(this.frameWidth * this.frameHeight * 4);
80
+ for (let y = 0; y < this.frameHeight; y++) {
81
+ const sourceStart = ((top + y) * this.full.width + left) * 4;
82
+ data.set(this.full.data.subarray(sourceStart, sourceStart + this.frameWidth * 4), y * this.frameWidth * 4);
83
+ }
84
+ cached = {
85
+ width: this.frameWidth,
86
+ height: this.frameHeight,
87
+ data
88
+ };
89
+ this.frameCache.set(index, cached);
90
+ }
91
+ return cached;
92
+ }
93
+ /** The image shown at a tick: the frame, interpolated toward the next when enabled. */
94
+ at(tick) {
95
+ const { frame, interpolation } = this.resolveFrame(tick);
96
+ const base = this.frame(frame);
97
+ if (!this.interpolated || interpolation === 0) return base;
98
+ const next = this.frame((frame + 1) % this.frameCount);
99
+ const data = new Uint8ClampedArray(base.data.length);
100
+ for (let i = 0; i < data.length; i++) data[i] = Math.round(base.data[i] + (next.data[i] - base.data[i]) * interpolation);
101
+ return {
102
+ width: base.width,
103
+ height: base.height,
104
+ data
105
+ };
106
+ }
107
+ };
108
+ var TextureLoader = class {
109
+ resources;
110
+ cache = /* @__PURE__ */ new Map();
111
+ atlas = null;
112
+ constructor(resources) {
113
+ this.resources = resources;
114
+ }
115
+ async decode(locator) {
116
+ let raw = await this.resources.getResource("texture", locator);
117
+ if (raw === null && this.atlas) {
118
+ const sprite = await this.atlas.resolve(locator);
119
+ if (sprite?.kind === "pixels") return sprite.texture;
120
+ if (sprite?.kind === "file") raw = await this.resources.getResource("texture", sprite.locator);
121
+ }
122
+ if (raw === null) return null;
123
+ let image;
124
+ try {
125
+ image = await sharp(raw).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
126
+ } catch (err) {
127
+ throw new TextureResolutionError(`Failed to decode texture ${locator}: ${err.message}`);
128
+ }
129
+ let texture = {
130
+ width: image.info.width,
131
+ height: image.info.height,
132
+ data: new Uint8ClampedArray(image.data.buffer, image.data.byteOffset, image.data.length)
133
+ };
134
+ const meta = await this.readMeta(locator);
135
+ const frame = frameSize(texture, meta);
136
+ if (frame.height !== texture.height || frame.width !== texture.width) texture = cropFrame(texture, frame.width, frame.height);
137
+ return texture;
138
+ }
139
+ async readMeta(locator) {
140
+ const raw = await this.resources.getResource("textureMeta", locator);
141
+ if (raw === null) return null;
142
+ try {
143
+ return JSON.parse(raw.toString("utf8"));
144
+ } catch {
145
+ return null;
146
+ }
147
+ }
148
+ /**
149
+ * Attach an atlas resolver, consulted when no texture file exists directly —
150
+ * the path that synthesizes paletted_permutations sprites (armor trims) and
151
+ * unstitch regions. Directory/single sources are effectively covered by the
152
+ * direct file lookup already.
153
+ */
154
+ setAtlasResolver(atlas) {
155
+ this.atlas = atlas;
156
+ this.cache.clear();
157
+ }
158
+ /**
159
+ * Load a texture with its animation metadata for multi-frame rendering.
160
+ * Returns null when the texture does not exist.
161
+ */
162
+ async loadAnimated(locator) {
163
+ const raw = await this.resources.getResource("texture", locator);
164
+ let full = null;
165
+ if (raw !== null) {
166
+ const image = await sharp(raw).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
167
+ full = {
168
+ width: image.info.width,
169
+ height: image.info.height,
170
+ data: new Uint8ClampedArray(image.data.buffer, image.data.byteOffset, image.data.length)
171
+ };
172
+ } else if (this.atlas) {
173
+ const sprite = await this.load(locator);
174
+ if (sprite) return new AnimatedTexture(sprite, null);
175
+ }
176
+ if (!full) return null;
177
+ return new AnimatedTexture(full, await this.readMeta(locator));
178
+ }
179
+ /**
180
+ * Load a texture's first animation frame (what a static icon shows).
181
+ * Returns null when the texture does not exist; the caller decides whether
182
+ * that fails the item or just the face.
183
+ */
184
+ async load(locator) {
185
+ const key = locator.toString();
186
+ let pending = this.cache.get(key);
187
+ if (!pending) {
188
+ pending = this.decode(locator);
189
+ this.cache.set(key, pending);
190
+ }
191
+ return pending;
192
+ }
193
+ };
194
+ /**
195
+ * The size of one animation frame. Vertical strips are the norm (frame = width x width);
196
+ * mcmeta may override with explicit width/height. Textures without animation metadata
197
+ * but taller than wide are still treated as strips, matching how icons of animated
198
+ * textures (water, fire, magma) have always been derived.
199
+ */
200
+ function frameSize(texture, meta) {
201
+ const animation = meta?.animation;
202
+ if (animation) return {
203
+ width: animation.width ?? texture.width,
204
+ height: animation.height ?? Math.min(texture.height, texture.width)
205
+ };
206
+ if (texture.height > texture.width && texture.height % texture.width === 0) return {
207
+ width: texture.width,
208
+ height: texture.width
209
+ };
210
+ return {
211
+ width: texture.width,
212
+ height: texture.height
213
+ };
214
+ }
215
+ function cropFrame(texture, width, height) {
216
+ const data = new Uint8ClampedArray(width * height * 4);
217
+ for (let y = 0; y < height; y++) {
218
+ const sourceStart = y * texture.width * 4;
219
+ data.set(texture.data.subarray(sourceStart, sourceStart + width * 4), y * width * 4);
220
+ }
221
+ return {
222
+ width,
223
+ height,
224
+ data
225
+ };
226
+ }
227
+ //#endregion
228
+ export { TextureLoader as n, TextureResolutionError as r, AnimatedTexture as t };
@@ -0,0 +1,88 @@
1
+ import { n as ResourceLocator } from "./locator-jDbdUeTd.js";
2
+ import { a as ResourceManager } from "./manager-CoZaeQTu.js";
3
+ //#region src/textures/loader.d.ts
4
+ /** Structural interface for atlas resolvers (avoids a circular module edge). */
5
+ interface AtlasResolverLike {
6
+ resolve(locator: ResourceLocator): Promise<{
7
+ kind: 'file';
8
+ locator: ResourceLocator;
9
+ } | {
10
+ kind: 'pixels';
11
+ texture: Texture;
12
+ } | null>;
13
+ }
14
+ /** Decoded texture pixels, always RGBA, 8-bit per channel. */
15
+ interface Texture {
16
+ width: number;
17
+ height: number;
18
+ /** RGBA, row-major, length = width * height * 4. */
19
+ data: Uint8ClampedArray;
20
+ }
21
+ interface TextureMeta {
22
+ animation?: {
23
+ frametime?: number;
24
+ frames?: Array<number | {
25
+ index: number;
26
+ time?: number;
27
+ }>;
28
+ interpolate?: boolean;
29
+ width?: number;
30
+ height?: number;
31
+ };
32
+ }
33
+ declare class TextureResolutionError extends Error {}
34
+ /**
35
+ * Animation-aware texture access: frame extraction over strips and grids with
36
+ * mcmeta frame lists, per-frame times, and interpolation (upstream semantics:
37
+ * cols = trunc(16/meta.width), frame count from geometry when no list).
38
+ */
39
+ declare class AnimatedTexture {
40
+ private readonly full;
41
+ private readonly meta;
42
+ private readonly columns;
43
+ private readonly frameCache;
44
+ readonly frameWidth: number;
45
+ readonly frameHeight: number;
46
+ readonly frameCount: number;
47
+ constructor(full: Texture, meta: TextureMeta | null);
48
+ get interpolated(): boolean;
49
+ /** Total animation length in game ticks (1 for unanimated). */
50
+ get tickLength(): number;
51
+ /** Which physical frame index shows at a tick, and the interpolation factor. */
52
+ resolveFrame(tick: number): {
53
+ frame: number;
54
+ interpolation: number;
55
+ };
56
+ /** Crop one physical frame out of the strip/grid (memoized). */
57
+ frame(index: number): Texture;
58
+ /** The image shown at a tick: the frame, interpolated toward the next when enabled. */
59
+ at(tick: number): Texture;
60
+ }
61
+ declare class TextureLoader {
62
+ private readonly resources;
63
+ private readonly cache;
64
+ private atlas;
65
+ constructor(resources: ResourceManager);
66
+ private decode;
67
+ private readMeta;
68
+ /**
69
+ * Attach an atlas resolver, consulted when no texture file exists directly —
70
+ * the path that synthesizes paletted_permutations sprites (armor trims) and
71
+ * unstitch regions. Directory/single sources are effectively covered by the
72
+ * direct file lookup already.
73
+ */
74
+ setAtlasResolver(atlas: AtlasResolverLike): void;
75
+ /**
76
+ * Load a texture with its animation metadata for multi-frame rendering.
77
+ * Returns null when the texture does not exist.
78
+ */
79
+ loadAnimated(locator: ResourceLocator): Promise<AnimatedTexture | null>;
80
+ /**
81
+ * Load a texture's first animation frame (what a static icon shows).
82
+ * Returns null when the texture does not exist; the caller decides whether
83
+ * that fails the item or just the face.
84
+ */
85
+ load(locator: ResourceLocator): Promise<Texture | null>;
86
+ }
87
+ //#endregion
88
+ export { TextureMeta as a, TextureLoader as i, AtlasResolverLike as n, TextureResolutionError as o, Texture as r, AnimatedTexture as t };