@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,507 @@
1
+ import { n as ResourceLocator } from "./locator-ycZzh_6z.js";
2
+ import { c as normalize, g as transformVector, m as sub, n as displayMatrix, o as identity, r as dot, s as multiply, t as cross } from "./vector-CCxLae_T.js";
3
+ import { i as resolveTexture } from "./loader-C-eqwp3M.js";
4
+ import { a as tintTexture, n as cloneFloatTexture, r as darkenTexture, s as toFloatTexture, t as blendPixel } from "./blend-CHP2-j9U.js";
5
+ import { t as combineFaceBuffers } from "./compose-cph4bfdr.js";
6
+ import { i as phpRound, n as createFaceBuffer, r as drawTexturedTriangle, t as RowCursor } from "./rasterizer-ABgsWTYN.js";
7
+ import { n as renderFace, t as faceMaxZ } from "./face-Wfia-_Yx.js";
8
+ import { t as paintBucketFluid } from "./fluid-bucket-D-GpUQjg.js";
9
+ import { r as buildElementFaces } from "./geometry-uIDha8S4.js";
10
+ import { c as lightsForProfile } from "./lighting--5myudVu.js";
11
+ //#region src/render/obj.ts
12
+ /**
13
+ * Forge/NeoForge OBJ model rendering — the class the old pipeline left
14
+ * permanently broken ("the geometry is in a different file format"). Parses
15
+ * OBJ + MTL out of the asset tree and rasterizes the triangles through the
16
+ * same projection/lighting as JSON elements, with a z-tested shared buffer
17
+ * (per-triangle painter buffers would be quadratic in triangle count).
18
+ */
19
+ /** Parse OBJ text into triangles (polygon faces are fan-triangulated). */
20
+ function parseObj(text, flipV) {
21
+ const positions = [];
22
+ const uvs = [];
23
+ const triangles = [];
24
+ const materialLibs = [];
25
+ let material = "";
26
+ for (const rawLine of text.split("\n")) {
27
+ const line = rawLine.trim();
28
+ if (line === "" || line.startsWith("#")) continue;
29
+ const parts = line.split(/\s+/);
30
+ switch (parts[0]) {
31
+ case "v":
32
+ positions.push([
33
+ Number(parts[1]),
34
+ Number(parts[2]),
35
+ Number(parts[3])
36
+ ]);
37
+ break;
38
+ case "vt": {
39
+ const u = Number(parts[1]);
40
+ const v = Number(parts[2] ?? 0);
41
+ uvs.push([u, flipV ? 1 - v : v]);
42
+ break;
43
+ }
44
+ case "usemtl":
45
+ material = parts.slice(1).join(" ");
46
+ break;
47
+ case "mtllib":
48
+ materialLibs.push(parts.slice(1).join(" "));
49
+ break;
50
+ case "f": {
51
+ const corners = parts.slice(1).map((corner) => {
52
+ const [vIndex, vtIndex] = corner.split("/", 2);
53
+ const position = Number(vIndex);
54
+ const uvIndex = vtIndex === void 0 || vtIndex === "" ? 0 : Number(vtIndex);
55
+ const uv = uvIndex === 0 ? void 0 : uvs[uvIndex > 0 ? uvIndex - 1 : uvs.length + uvIndex];
56
+ return {
57
+ position: positions[position > 0 ? position - 1 : positions.length + position],
58
+ uv: uv ?? [0, 0]
59
+ };
60
+ });
61
+ for (let i = 2; i < corners.length; i++) {
62
+ if (!corners[0]?.position || !corners[i - 1]?.position || !corners[i]?.position) continue;
63
+ triangles.push({
64
+ positions: [
65
+ corners[0].position,
66
+ corners[i - 1].position,
67
+ corners[i].position
68
+ ],
69
+ uvs: [
70
+ corners[0].uv,
71
+ corners[i - 1].uv,
72
+ corners[i].uv
73
+ ],
74
+ material
75
+ });
76
+ }
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ return {
82
+ triangles,
83
+ materialLibs
84
+ };
85
+ }
86
+ /** map_Kd texture per material name out of an MTL library. */
87
+ function parseMtl(text) {
88
+ const materials = /* @__PURE__ */ new Map();
89
+ let current = "";
90
+ for (const rawLine of text.split("\n")) {
91
+ const parts = rawLine.trim().split(/\s+/);
92
+ if (parts[0] === "newmtl") current = parts.slice(1).join(" ");
93
+ else if (parts[0] === "map_Kd" && current) materials.set(current, parts.slice(1).join(" "));
94
+ }
95
+ return materials;
96
+ }
97
+ /**
98
+ * Resolve a material name to a texture locator: `#key` and MTL map_Kd values
99
+ * go through the model's texture map (Forge binds materials that way); bare
100
+ * names fall back to a direct locator.
101
+ */
102
+ function materialTexture(model, materials, material) {
103
+ const mapped = materials.get(material) ?? material;
104
+ if (mapped.startsWith("#")) return resolveTexture(model, mapped);
105
+ const viaMap = resolveTexture(model, `#${mapped}`);
106
+ if (viaMap) return viaMap;
107
+ return ResourceLocator.tryParse(mapped);
108
+ }
109
+ async function renderObjModel(model, resources, textures, options) {
110
+ if (!model.obj) throw new ItemRenderError(`renderObjModel called without obj geometry: ${model.locator}`);
111
+ const objLocator = ResourceLocator.parse(model.obj.model);
112
+ const objSource = await resources.getResource("raw", objLocator);
113
+ if (!objSource) throw new ItemRenderError(`OBJ file not found: ${model.obj.model} for ${model.locator}`);
114
+ const parsed = parseObj(objSource.toString("utf8"), model.obj.flipV);
115
+ if (parsed.triangles.length === 0) throw new ItemRenderError(`OBJ has no faces: ${model.obj.model}`);
116
+ const materials = /* @__PURE__ */ new Map();
117
+ const objDirectory = objLocator.path.split("/").slice(0, -1).join("/");
118
+ for (const lib of parsed.materialLibs) {
119
+ const libPath = lib.includes("/") ? lib : `${objDirectory}/${lib}`;
120
+ const libLocator = ResourceLocator.tryParse(`${objLocator.namespace}:${libPath}`);
121
+ const source = libLocator ? await resources.getResource("raw", libLocator) : null;
122
+ if (source) for (const [name, texture] of parseMtl(source.toString("utf8"))) materials.set(name, texture);
123
+ }
124
+ const lights = lightsForProfile(options.lightingProfile);
125
+ const light = model.elementsGuiLight === "side" ? lights.side : lights.front;
126
+ const gui = model.display.gui;
127
+ const guiMatrix = displayMatrix(gui?.rotation ?? [
128
+ 0,
129
+ 0,
130
+ 0
131
+ ], gui?.translation ?? [
132
+ 0,
133
+ 0,
134
+ 0
135
+ ], gui?.scale ?? [
136
+ 1,
137
+ 1,
138
+ 1
139
+ ]);
140
+ const transformation = multiply(guiMatrix, options.itemTransform ?? identity());
141
+ const renderSize = options.size * options.quality;
142
+ const out = createFaceBuffer(renderSize, renderSize);
143
+ const shaded = /* @__PURE__ */ new Map();
144
+ for (const triangle of parsed.triangles) {
145
+ const transformed = triangle.positions.map((position) => transformVector(transformation, position));
146
+ const rawNormal = cross(sub(transformed[1], transformed[0]), sub(transformed[2], transformed[0]));
147
+ if (rawNormal[0] === 0 && rawNormal[1] === 0 && rawNormal[2] === 0) continue;
148
+ const normal = normalize(rawNormal);
149
+ if (dot([
150
+ 0,
151
+ 0,
152
+ -1
153
+ ], normal) >= -.01) continue;
154
+ const level = light.lightLevelForNormal(normal);
155
+ const bucket = Math.round(level * 64);
156
+ const locator = materialTexture(model, materials, triangle.material);
157
+ if (!locator) throw new ItemRenderError(`Unresolvable OBJ material ${triangle.material} in ${model.locator}`);
158
+ const key = `${locator} ${bucket}`;
159
+ let texture = shaded.get(key);
160
+ if (!texture) {
161
+ const base = await textures.load(locator) ?? await textures.load(new ResourceLocator(locator.namespace, `item/${locator.path}`));
162
+ if (!base) throw new ItemRenderError(`Missing texture ${locator} referenced by ${model.obj.model}`);
163
+ texture = cloneFloatTexture(toFloatTexture(base));
164
+ darkenTexture(texture, 1 - bucket / 64, 0, 0, texture.width, texture.height);
165
+ shaded.set(key, texture);
166
+ }
167
+ const scratch = createFaceBuffer(renderSize, renderSize);
168
+ const cursor = new RowCursor();
169
+ const point = (index) => {
170
+ return {
171
+ x: phpRound((transformed[index][0] - .5) * renderSize + renderSize / 2),
172
+ y: phpRound(renderSize - ((transformed[index][1] - .5) * renderSize + renderSize / 2)),
173
+ u: triangle.uvs[index][0],
174
+ v: triangle.uvs[index][1],
175
+ depth: (transformed[index][2] + 1) / 3
176
+ };
177
+ };
178
+ drawTexturedTriangle(point(0), point(1), point(2), scratch, texture, cursor);
179
+ for (let pixel = 0; pixel < renderSize * renderSize; pixel++) {
180
+ const offset = pixel * 4;
181
+ const alpha = scratch.colors[offset + 3];
182
+ if (alpha <= 0) continue;
183
+ if (scratch.depths[pixel] >= out.depths[pixel] || out.colors[offset + 3] === 0) {
184
+ if (alpha >= 1 || out.colors[offset + 3] === 0) {
185
+ out.colors[offset] = scratch.colors[offset];
186
+ out.colors[offset + 1] = scratch.colors[offset + 1];
187
+ out.colors[offset + 2] = scratch.colors[offset + 2];
188
+ out.colors[offset + 3] = alpha;
189
+ } else blendPixel(out.colors, offset, scratch.colors[offset], scratch.colors[offset + 1], scratch.colors[offset + 2], alpha);
190
+ out.depths[pixel] = Math.max(out.depths[pixel], scratch.depths[pixel]);
191
+ }
192
+ }
193
+ }
194
+ return {
195
+ width: renderSize,
196
+ height: renderSize,
197
+ data: out.colors
198
+ };
199
+ }
200
+ //#endregion
201
+ //#region src/render/renderer.ts
202
+ /**
203
+ * Item rendering entry: flat generated items (2D layer compositing) and 3D
204
+ * element models (transform → rasterize → per-pixel composite), both rendered
205
+ * at size × quality then box-downscaled, matching upstream ItemRenderTask.
206
+ */
207
+ var ItemRenderError = class extends Error {};
208
+ const TICK_MS = 50;
209
+ const MAX_ANIMATION_FRAMES = 128;
210
+ function gcd(left, right) {
211
+ return right === 0 ? left : gcd(right, left % right);
212
+ }
213
+ /**
214
+ * Render every animation frame of a model (a single frame for unanimated
215
+ * items). The tick loop mirrors upstream: total ticks = lcm of the involved
216
+ * textures' lengths, identical frames are skipped, and interpolated textures
217
+ * are capped at 128 emitted frames.
218
+ */
219
+ async function renderModelFrames(model, textures, options) {
220
+ assertDrawable(model);
221
+ if (model.obj || model.fluid) return {
222
+ frames: [await renderModel(model, textures, options)],
223
+ delaysMs: [TICK_MS]
224
+ };
225
+ const references = /* @__PURE__ */ new Set();
226
+ if (model.builtinParent === "builtin/generated") {
227
+ for (const name of Object.keys(model.textures)) if (/^layer\d+$/.test(name)) references.add(`#${name}`);
228
+ } else for (const element of model.elements) for (const face of Object.values(element.faces)) if (face?.texture) references.add(face.texture);
229
+ const animated = /* @__PURE__ */ new Map();
230
+ const skipped = /* @__PURE__ */ new Set();
231
+ for (const reference of references) {
232
+ if (model.builtinParent !== "builtin/generated" && reference.startsWith("#") && resolveTexture(model, reference) === null) {
233
+ skipped.add(reference);
234
+ continue;
235
+ }
236
+ animated.set(reference, await loadAnimatedTexture(model, textures, reference));
237
+ }
238
+ let ticks = 1;
239
+ let interpolated = false;
240
+ for (const texture of animated.values()) {
241
+ ticks = ticks / gcd(ticks, texture.tickLength) * texture.tickLength;
242
+ interpolated ||= texture.interpolated;
243
+ }
244
+ const maxSkippable = interpolated ? Math.ceil(ticks / MAX_ANIMATION_FRAMES) : null;
245
+ const frames = [];
246
+ const emitTicks = [];
247
+ let lastKey = null;
248
+ let sinceLast = 0;
249
+ for (let tick = 0; tick < ticks; tick++) {
250
+ sinceLast++;
251
+ const key = animated.values().map((texture) => texture.resolveFrame(tick).frame).toArray().join(",");
252
+ if (lastKey !== null && key === lastKey && !interpolated && tick !== ticks - 1) continue;
253
+ if (lastKey !== null && interpolated && maxSkippable !== null && sinceLast < maxSkippable && key === lastKey) continue;
254
+ const supplier = async (reference) => {
255
+ if (skipped.has(reference)) return null;
256
+ const texture = animated.get(reference);
257
+ if (!texture) throw new ItemRenderError(`Untracked texture reference ${reference} in ${model.locator}`);
258
+ return texture.at(tick);
259
+ };
260
+ const renderSize = options.size * options.quality;
261
+ const full = model.builtinParent === "builtin/generated" ? await renderGeneratedItemWith(model, supplier, renderSize, options.tints) : await renderElementModelWith(model, supplier, renderSize, options);
262
+ frames.push(options.quality === 1 ? full : boxDownscale(full, options.quality));
263
+ emitTicks.push(tick);
264
+ lastKey = key;
265
+ sinceLast = 0;
266
+ }
267
+ return {
268
+ frames,
269
+ delaysMs: emitTicks.map((tick, index) => {
270
+ const next = index + 1 < emitTicks.length ? emitTicks[index + 1] : ticks;
271
+ return Math.max(TICK_MS, (next - tick) * TICK_MS);
272
+ })
273
+ };
274
+ }
275
+ async function loadAnimatedTexture(model, textures, reference) {
276
+ const locator = resolveTexture(model, reference);
277
+ if (locator) {
278
+ const texture = await textures.loadAnimated(locator);
279
+ if (texture) return texture;
280
+ }
281
+ if (!reference.startsWith("#") && model.textures[reference] !== void 0) {
282
+ const variable = resolveTexture(model, `#${reference}`);
283
+ if (variable) {
284
+ const texture = await textures.loadAnimated(variable);
285
+ if (texture) return texture;
286
+ }
287
+ }
288
+ throw new ItemRenderError(`Missing texture ${locator ?? reference} referenced by ${model.locator}`);
289
+ }
290
+ /**
291
+ * Models with neither generated layers nor elements have no drawable geometry
292
+ * (OBJ loaders, code-built block entities) — fail loudly rather than shipping
293
+ * a transparent icon that still counts as "has an icon" downstream.
294
+ */
295
+ function assertDrawable(model) {
296
+ if (model.obj) return;
297
+ if (model.builtinParent !== null && model.builtinParent !== "builtin/generated") throw new ItemRenderError(`Unsupported builtin parent ${model.builtinParent} in ${model.locator}`);
298
+ if (model.builtinParent === null && model.elements.length === 0) throw new ItemRenderError(`No drawable geometry in ${model.locator} (code-rendered model)`);
299
+ if (model.builtinParent === "builtin/generated" && !Object.keys(model.textures).some((name) => /^layer\d+$/.test(name))) throw new ItemRenderError(`Generated model without layers in ${model.locator} (would render invisible)`);
300
+ }
301
+ async function renderModel(model, textures, options) {
302
+ assertDrawable(model);
303
+ if (model.obj) {
304
+ if (!options.resources) throw new ItemRenderError(`OBJ model ${model.locator} needs RenderOptions.resources for file access`);
305
+ const full = await renderObjModel(model, options.resources, textures, options);
306
+ return options.quality === 1 ? full : boxDownscale(full, options.quality);
307
+ }
308
+ const renderSize = options.size * options.quality;
309
+ if (model.fluid && model.builtinParent === "builtin/generated") {
310
+ const filled = await renderFluidBucket(model, textures, renderSize, options.resources);
311
+ if (filled) return options.quality === 1 ? filled : boxDownscale(filled, options.quality);
312
+ }
313
+ const full = model.builtinParent === "builtin/generated" ? await renderGeneratedItem(model, textures, renderSize, options.tints) : await renderElementModel(model, textures, renderSize, options);
314
+ return options.quality === 1 ? full : boxDownscale(full, options.quality);
315
+ }
316
+ /**
317
+ * fluid_container buckets: bucket sprite with the contained fluid painted into
318
+ * the water-bucket fill region. Null when the fluid resolves to nothing, in
319
+ * which case the plain bucket renders as before.
320
+ */
321
+ async function renderFluidBucket(model, textures, renderSize, resources) {
322
+ const locator = resolveTexture(model, "#layer0");
323
+ const base = locator ? await textures.load(locator) : null;
324
+ if (!base || !model.fluid) return null;
325
+ const copy = {
326
+ width: base.width,
327
+ height: base.height,
328
+ data: new Uint8ClampedArray(base.data)
329
+ };
330
+ if (!await paintBucketFluid(copy, model.fluid, textures, resources)) return null;
331
+ return pointResize(toFloatTexture(copy), renderSize, renderSize);
332
+ }
333
+ async function loadTexture(model, textures, reference) {
334
+ const locator = resolveTexture(model, reference);
335
+ if (locator) {
336
+ const texture = await textures.load(locator);
337
+ if (texture) return {
338
+ locator,
339
+ texture
340
+ };
341
+ }
342
+ if (!reference.startsWith("#") && model.textures[reference] !== void 0) {
343
+ const variable = resolveTexture(model, `#${reference}`);
344
+ if (variable) {
345
+ const texture = await textures.load(variable);
346
+ if (texture) return {
347
+ locator: variable,
348
+ texture
349
+ };
350
+ }
351
+ }
352
+ throw new ItemRenderError(`Missing texture ${locator ?? reference} referenced by ${model.locator}`);
353
+ }
354
+ /**
355
+ * Flat generated item: numerically-sorted layerN textures, tinted by layer index,
356
+ * point-upscaled to the render size, source-over composited. GUI display transforms
357
+ * and lighting deliberately do not apply (upstream behavior).
358
+ */
359
+ async function renderGeneratedItem(model, textures, renderSize, tints) {
360
+ const supplier = async (reference) => {
361
+ return (await loadTexture(model, textures, reference)).texture;
362
+ };
363
+ return renderGeneratedItemWith(model, supplier, renderSize, tints);
364
+ }
365
+ async function renderGeneratedItemWith(model, supplier, renderSize, tints) {
366
+ const layerNames = Object.keys(model.textures).map((name) => /^layer(\d+)$/.exec(name)).filter((match) => match !== null).toSorted((a, b) => Number(a[1]) - Number(b[1]));
367
+ const out = new Float64Array(renderSize * renderSize * 4);
368
+ for (const match of layerNames) {
369
+ const layerIndex = Number(match[1]);
370
+ const texture = await supplier(`#${match[0]}`);
371
+ if (!texture) throw new ItemRenderError(`Missing texture #${match[0]} referenced by ${model.locator}`);
372
+ const float = toFloatTexture(texture);
373
+ const tint = tints?.[layerIndex] ?? null;
374
+ if (tint) tintTexture(float, tint.r, tint.g, tint.b);
375
+ const resized = pointResize(float, renderSize, renderSize);
376
+ for (let offset = 0; offset < out.length; offset += 4) {
377
+ const alpha = resized.data[offset + 3];
378
+ if (alpha > 0) blendPixel(out, offset, resized.data[offset], resized.data[offset + 1], resized.data[offset + 2], alpha);
379
+ }
380
+ }
381
+ return {
382
+ width: renderSize,
383
+ height: renderSize,
384
+ data: out
385
+ };
386
+ }
387
+ async function renderElementModel(model, textures, renderSize, options) {
388
+ const supplier = async (reference) => {
389
+ if (reference.startsWith("#") && resolveTexture(model, reference) === null) return null;
390
+ return (await loadTexture(model, textures, reference)).texture;
391
+ };
392
+ return renderElementModelWith(model, supplier, renderSize, options);
393
+ }
394
+ async function renderElementModelWith(model, supplier, renderSize, options) {
395
+ const lights = lightsForProfile(options.lightingProfile);
396
+ const light = model.elementsGuiLight === "side" ? lights.side : lights.front;
397
+ const faces = [];
398
+ let skippedFaces = 0;
399
+ for (const element of model.elements) for (const geometry of buildElementFaces(element)) {
400
+ const texture = await supplier(geometry.textureRef);
401
+ if (!texture) {
402
+ skippedFaces++;
403
+ continue;
404
+ }
405
+ faces.push({
406
+ geometry,
407
+ texture: toFloatTexture(texture),
408
+ light,
409
+ tint: geometry.tintIndex !== null ? options.tints?.[geometry.tintIndex] ?? null : null,
410
+ maxZ: faceMaxZ(geometry)
411
+ });
412
+ }
413
+ if (faces.length === 0 && skippedFaces > 0) throw new ItemRenderError(`Every face texture unresolved in ${model.locator} (would render invisible)`);
414
+ faces.sort((a, b) => a.maxZ - b.maxZ);
415
+ const gui = model.display.gui;
416
+ const guiMatrix = displayMatrix(gui?.rotation ?? [
417
+ 0,
418
+ 0,
419
+ 0
420
+ ], gui?.translation ?? [
421
+ 0,
422
+ 0,
423
+ 0
424
+ ], gui?.scale ?? [
425
+ 1,
426
+ 1,
427
+ 1
428
+ ]);
429
+ const transformation = multiply(guiMatrix, options.itemTransform ?? identity());
430
+ const buffers = [];
431
+ for (const face of faces) {
432
+ const buffer = renderFace(face, renderSize, renderSize, transformation);
433
+ if (buffer) buffers.push(buffer);
434
+ }
435
+ return combineFaceBuffers(renderSize, renderSize, buffers);
436
+ }
437
+ /** Nearest-neighbour resize matching Imagick FILTER_POINT (destination-center sampling). */
438
+ function pointResize(texture, width, height) {
439
+ const data = new Float64Array(width * height * 4);
440
+ for (let y = 0; y < height; y++) {
441
+ let srcY = Math.floor((y + .5) * texture.height / height);
442
+ srcY = srcY >= texture.height ? texture.height - 1 : srcY;
443
+ for (let x = 0; x < width; x++) {
444
+ let srcX = Math.floor((x + .5) * texture.width / width);
445
+ srcX = srcX >= texture.width ? texture.width - 1 : srcX;
446
+ const src = (srcY * texture.width + srcX) * 4;
447
+ const dst = (y * width + x) * 4;
448
+ data[dst] = texture.data[src];
449
+ data[dst + 1] = texture.data[src + 1];
450
+ data[dst + 2] = texture.data[src + 2];
451
+ data[dst + 3] = texture.data[src + 3];
452
+ }
453
+ }
454
+ return {
455
+ width,
456
+ height,
457
+ data
458
+ };
459
+ }
460
+ /**
461
+ * Box downscale matching ImageMagick 6 ResizeImage with an alpha channel: two
462
+ * passes (horizontal then vertical), each computing alpha-weighted colors
463
+ * (color = Σ(aᵢ·cᵢ)/Σ(aᵢ), alpha = mean) and storing every intermediate as a
464
+ * Q16 quantum with round-half-up. Verified against Imagick FILTER_BOX output.
465
+ */
466
+ function boxDownscale(texture, factor) {
467
+ return boxPass(boxPass(texture, factor, true), factor, false);
468
+ }
469
+ function boxPass(texture, factor, isHorizontal) {
470
+ const width = isHorizontal ? Math.round(texture.width / factor) : texture.width;
471
+ const height = isHorizontal ? texture.height : Math.round(texture.height / factor);
472
+ const data = new Float64Array(width * height * 4);
473
+ for (let y = 0; y < height; y++) for (let x = 0; x < width; x++) {
474
+ let r = 0;
475
+ let g = 0;
476
+ let b = 0;
477
+ let alphaSum = 0;
478
+ for (let i = 0; i < factor; i++) {
479
+ const srcX = isHorizontal ? x * factor + i : x;
480
+ const src = ((isHorizontal ? y : y * factor + i) * texture.width + srcX) * 4;
481
+ const alpha = Math.round(texture.data[src + 3] * 65535);
482
+ r += Math.round(texture.data[src] * 65535) * alpha;
483
+ g += Math.round(texture.data[src + 1] * 65535) * alpha;
484
+ b += Math.round(texture.data[src + 2] * 65535) * alpha;
485
+ alphaSum += alpha;
486
+ }
487
+ const dst = (y * width + x) * 4;
488
+ if (alphaSum > 0) {
489
+ data[dst] = clampQuantum(r / alphaSum) / 65535;
490
+ data[dst + 1] = clampQuantum(g / alphaSum) / 65535;
491
+ data[dst + 2] = clampQuantum(b / alphaSum) / 65535;
492
+ }
493
+ data[dst + 3] = clampQuantum(alphaSum / factor) / 65535;
494
+ }
495
+ return {
496
+ width,
497
+ height,
498
+ data
499
+ };
500
+ }
501
+ /** ClampToQuantum on a value already in quantum units: floor(x + 0.5), clamped. */
502
+ function clampQuantum(quantum) {
503
+ const rounded = Math.floor(quantum + .5);
504
+ return rounded < 0 ? 0 : Math.min(rounded, 65535);
505
+ }
506
+ //#endregion
507
+ export { renderModelFrames as a, renderObjModel as c, renderModel as i, boxDownscale as n, parseMtl as o, pointResize as r, parseObj as s, ItemRenderError as t };
@@ -0,0 +1,44 @@
1
+ import { a as ResourceManager } from "./manager-CoZaeQTu.js";
2
+ import { i as TextureLoader } from "./loader-TFFNV4Jl.js";
3
+ import { r as ResolvedModel } from "./loader-lCkMRDH4.js";
4
+ import { t as FloatTexture } from "./blend-Qvrn6YgK.js";
5
+ import { t as Mat4 } from "./vector-DRKRi4--.js";
6
+ import { a as LightingProfileName } from "./lighting-3FGRC3Af.js";
7
+ import { n as TintColor } from "./face-DC6cNMdz.js";
8
+ //#region src/render/renderer.d.ts
9
+ interface RenderOptions {
10
+ size: number;
11
+ quality: number;
12
+ lightingProfile: LightingProfileName;
13
+ /** Accumulated item-definition transformation (inner matrix). */
14
+ itemTransform?: Mat4;
15
+ /** Tint colors by index (face tintindex / generated layer number). */
16
+ tints?: Array<TintColor | null>;
17
+ /** Needed for OBJ models, which read .obj/.mtl files from the asset tree. */
18
+ resources?: ResourceManager;
19
+ }
20
+ declare class ItemRenderError extends Error {}
21
+ interface RenderedFrames {
22
+ frames: FloatTexture[];
23
+ /** Display duration per frame in milliseconds (50ms per game tick). */
24
+ delaysMs: number[];
25
+ }
26
+ /**
27
+ * Render every animation frame of a model (a single frame for unanimated
28
+ * items). The tick loop mirrors upstream: total ticks = lcm of the involved
29
+ * textures' lengths, identical frames are skipped, and interpolated textures
30
+ * are capped at 128 emitted frames.
31
+ */
32
+ declare function renderModelFrames(model: ResolvedModel, textures: TextureLoader, options: RenderOptions): Promise<RenderedFrames>;
33
+ declare function renderModel(model: ResolvedModel, textures: TextureLoader, options: RenderOptions): Promise<FloatTexture>;
34
+ /** Nearest-neighbour resize matching Imagick FILTER_POINT (destination-center sampling). */
35
+ declare function pointResize(texture: FloatTexture, width: number, height: number): FloatTexture;
36
+ /**
37
+ * Box downscale matching ImageMagick 6 ResizeImage with an alpha channel: two
38
+ * passes (horizontal then vertical), each computing alpha-weighted colors
39
+ * (color = Σ(aᵢ·cᵢ)/Σ(aᵢ), alpha = mean) and storing every intermediate as a
40
+ * Q16 quantum with round-half-up. Verified against Imagick FILTER_BOX output.
41
+ */
42
+ declare function boxDownscale(texture: FloatTexture, factor: number): FloatTexture;
43
+ //#endregion
44
+ export { pointResize as a, boxDownscale as i, RenderOptions as n, renderModel as o, RenderedFrames as r, renderModelFrames as s, ItemRenderError as t };
@@ -0,0 +1,2 @@
1
+ import { n as UnsafeJarError, r as isUnsafeEntryPath, t as JarResourceManager } from "../jar-6T3xdgaL.js";
2
+ export { JarResourceManager, UnsafeJarError, isUnsafeEntryPath };
@@ -0,0 +1,2 @@
1
+ import { n as UnsafeJarError, r as isUnsafeEntryPath, t as JarResourceManager } from "../jar-Bt3i0ls4.js";
2
+ export { JarResourceManager, UnsafeJarError, isUnsafeEntryPath };
@@ -0,0 +1,2 @@
1
+ import { n as ResourceLocator, t as InvalidResourceLocatorError } from "../locator-jDbdUeTd.js";
2
+ export { InvalidResourceLocatorError, ResourceLocator };
@@ -0,0 +1,2 @@
1
+ import { n as ResourceLocator, t as InvalidResourceLocatorError } from "../locator-ycZzh_6z.js";
2
+ export { InvalidResourceLocatorError, ResourceLocator };
@@ -0,0 +1,2 @@
1
+ import { a as ResourceManager, i as ResourceKindName, n as LayeredResourceManager, r as ResourceKind, t as FolderResourceManager } from "../manager-CoZaeQTu.js";
2
+ export { FolderResourceManager, LayeredResourceManager, ResourceKind, ResourceKindName, ResourceManager };
@@ -0,0 +1,2 @@
1
+ import { n as LayeredResourceManager, r as ResourceKind, t as FolderResourceManager } from "../manager-dfI7b9N4.js";
2
+ export { FolderResourceManager, LayeredResourceManager, ResourceKind };
@@ -0,0 +1,2 @@
1
+ import { n as MapResourceManager, t as KindFilteredResourceManager } from "../synthetic-CDsj--li.js";
2
+ export { KindFilteredResourceManager, MapResourceManager };
@@ -0,0 +1,2 @@
1
+ import { n as MapResourceManager, t as KindFilteredResourceManager } from "../synthetic-DC2bSnGe.js";
2
+ export { KindFilteredResourceManager, MapResourceManager };
@@ -0,0 +1,54 @@
1
+ import { a as ResourceManager } from "./manager-CoZaeQTu.js";
2
+ import { a as LightingProfileName } from "./lighting-3FGRC3Af.js";
3
+ //#region src/run.d.ts
4
+ interface RunOptions {
5
+ resources: ResourceManager;
6
+ /**
7
+ * Path to a renderchest-style builtin pack (`<dir>/<ns>/…`). Layered ABOVE
8
+ * user assets, matching upstream: its item overrides (chests, banners,
9
+ * shulkers, heads) shadow vanilla's code-drawn items.
10
+ */
11
+ builtin?: string;
12
+ output: string;
13
+ namespaces?: string[];
14
+ size?: number;
15
+ quality?: number;
16
+ prefix?: string;
17
+ format?: 'webp' | 'avif';
18
+ fallback?: boolean;
19
+ /** Also emit animated GIFs for legacy browsers. */
20
+ gif?: boolean;
21
+ /** Also emit AVIF (animated where libvips supports it, else first frame). */
22
+ avif?: boolean;
23
+ /** Minify the stylesheet via lightningcss (default true). */
24
+ minify?: boolean;
25
+ /** In-flight items (encode overlaps on libvips' threadpool; default 8). */
26
+ concurrency?: number;
27
+ lightingProfile?: LightingProfileName;
28
+ itemList?: boolean;
29
+ onProgress?: (done: number, total: number, id: string, error?: string) => void;
30
+ }
31
+ interface ItemFailure {
32
+ id: string;
33
+ error: string;
34
+ }
35
+ interface RunResult {
36
+ rendered: string[];
37
+ failed: ItemFailure[];
38
+ /**
39
+ * Items whose real model is code-rendered (no drawable geometry) but which
40
+ * ship a flat item sprite we rendered instead. Reported, never silent.
41
+ */
42
+ spriteFallbacks: string[];
43
+ /**
44
+ * Ids whose model is a parent template other item models extend (spectrum's
45
+ * handheld_oversized) — not real items, so their failure is reported apart
46
+ * from genuine misses.
47
+ */
48
+ skippedTemplates: string[];
49
+ /** Image files actually written, the only trustworthy success signal. */
50
+ writtenFiles: number;
51
+ }
52
+ declare function run(options: RunOptions): Promise<RunResult>;
53
+ //#endregion
54
+ export { run as i, RunOptions as n, RunResult as r, ItemFailure as t };