@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.
- package/LICENSE +25 -0
- package/README.md +92 -0
- package/assets/README.md +17 -0
- package/assets/builtin/minecraft/atlases/misc.json +24 -0
- package/assets/builtin/minecraft/items/black_banner.json +12 -0
- package/assets/builtin/minecraft/items/black_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/blue_banner.json +12 -0
- package/assets/builtin/minecraft/items/blue_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/brown_banner.json +12 -0
- package/assets/builtin/minecraft/items/brown_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/chest.json +6 -0
- package/assets/builtin/minecraft/items/conduit.json +6 -0
- package/assets/builtin/minecraft/items/copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/creeper_head.json +6 -0
- package/assets/builtin/minecraft/items/cyan_banner.json +12 -0
- package/assets/builtin/minecraft/items/cyan_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/decorated_pot.json +6 -0
- package/assets/builtin/minecraft/items/dragon_head.json +6 -0
- package/assets/builtin/minecraft/items/ender_chest.json +6 -0
- package/assets/builtin/minecraft/items/exposed_copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/exposed_copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/gray_banner.json +12 -0
- package/assets/builtin/minecraft/items/gray_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/green_banner.json +12 -0
- package/assets/builtin/minecraft/items/green_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/light_blue_banner.json +12 -0
- package/assets/builtin/minecraft/items/light_blue_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/light_gray_banner.json +12 -0
- package/assets/builtin/minecraft/items/light_gray_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/lime_banner.json +12 -0
- package/assets/builtin/minecraft/items/lime_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/magenta_banner.json +12 -0
- package/assets/builtin/minecraft/items/magenta_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/orange_banner.json +12 -0
- package/assets/builtin/minecraft/items/orange_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/oxidized_copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/oxidized_copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/piglin_head.json +6 -0
- package/assets/builtin/minecraft/items/pink_banner.json +12 -0
- package/assets/builtin/minecraft/items/pink_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/player_head.json +6 -0
- package/assets/builtin/minecraft/items/purple_banner.json +12 -0
- package/assets/builtin/minecraft/items/purple_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/rc_filled_map_base.json +6 -0
- package/assets/builtin/minecraft/items/rc_filled_map_overlay.json +7 -0
- package/assets/builtin/minecraft/items/rc_firework_star_base.json +6 -0
- package/assets/builtin/minecraft/items/rc_firework_star_overlay.json +6 -0
- package/assets/builtin/minecraft/items/rc_potion_bottle.json +6 -0
- package/assets/builtin/minecraft/items/rc_potion_bottle_lingering.json +6 -0
- package/assets/builtin/minecraft/items/rc_potion_bottle_splash.json +6 -0
- package/assets/builtin/minecraft/items/rc_potion_content.json +6 -0
- package/assets/builtin/minecraft/items/rc_tipped_arrow_base.json +6 -0
- package/assets/builtin/minecraft/items/rc_tipped_arrow_head.json +6 -0
- package/assets/builtin/minecraft/items/red_banner.json +12 -0
- package/assets/builtin/minecraft/items/red_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/shield.json +6 -0
- package/assets/builtin/minecraft/items/shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/skeleton_skull.json +6 -0
- package/assets/builtin/minecraft/items/trapped_chest.json +6 -0
- package/assets/builtin/minecraft/items/waxed_copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/waxed_copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/waxed_exposed_copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/waxed_exposed_copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/waxed_oxidized_copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/waxed_oxidized_copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/waxed_weathered_copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/waxed_weathered_copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/weathered_copper_chest.json +6 -0
- package/assets/builtin/minecraft/items/weathered_copper_golem_statue.json +6 -0
- package/assets/builtin/minecraft/items/white_banner.json +12 -0
- package/assets/builtin/minecraft/items/white_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/wither_skeleton_skull.json +6 -0
- package/assets/builtin/minecraft/items/yellow_banner.json +12 -0
- package/assets/builtin/minecraft/items/yellow_shulker_box.json +6 -0
- package/assets/builtin/minecraft/items/zombie_head.json +6 -0
- package/assets/builtin/minecraft/models/item/generated.json +30 -0
- package/assets/builtin/minecraft/textures/item/empty.png +0 -0
- package/assets/builtin/minecraft/textures/item/unknown.png +0 -0
- package/assets/builtin/mobheads/items/allay.json +6 -0
- package/assets/builtin/mobheads/items/armadillo.json +6 -0
- package/assets/builtin/mobheads/items/axolotl.json +6 -0
- package/assets/builtin/mobheads/items/bat.json +6 -0
- package/assets/builtin/mobheads/items/bee.json +6 -0
- package/assets/builtin/mobheads/items/blaze.json +6 -0
- package/assets/builtin/mobheads/items/bogged.json +6 -0
- package/assets/builtin/mobheads/items/breeze.json +6 -0
- package/assets/builtin/mobheads/items/camel.json +6 -0
- package/assets/builtin/mobheads/items/camel_husk.json +6 -0
- package/assets/builtin/mobheads/items/cat.json +6 -0
- package/assets/builtin/mobheads/items/cave_spider.json +6 -0
- package/assets/builtin/mobheads/items/chicken.json +6 -0
- package/assets/builtin/mobheads/items/cod.json +6 -0
- package/assets/builtin/mobheads/items/copper_golem.json +6 -0
- package/assets/builtin/mobheads/items/cow.json +6 -0
- package/assets/builtin/mobheads/items/creaking.json +6 -0
- package/assets/builtin/mobheads/items/creeper.json +6 -0
- package/assets/builtin/mobheads/items/dolphin.json +6 -0
- package/assets/builtin/mobheads/items/donkey.json +6 -0
- package/assets/builtin/mobheads/items/drowned.json +6 -0
- package/assets/builtin/mobheads/items/elder_guardian.json +6 -0
- package/assets/builtin/mobheads/items/ender_dragon.json +6 -0
- package/assets/builtin/mobheads/items/enderman.json +6 -0
- package/assets/builtin/mobheads/items/endermite.json +6 -0
- package/assets/builtin/mobheads/items/evoker.json +6 -0
- package/assets/builtin/mobheads/items/fox.json +6 -0
- package/assets/builtin/mobheads/items/frog.json +6 -0
- package/assets/builtin/mobheads/items/ghast.json +6 -0
- package/assets/builtin/mobheads/items/giant.json +6 -0
- package/assets/builtin/mobheads/items/glow_squid.json +6 -0
- package/assets/builtin/mobheads/items/goat.json +6 -0
- package/assets/builtin/mobheads/items/guardian.json +6 -0
- package/assets/builtin/mobheads/items/happy_ghast.json +6 -0
- package/assets/builtin/mobheads/items/hoglin.json +6 -0
- package/assets/builtin/mobheads/items/horse.json +6 -0
- package/assets/builtin/mobheads/items/husk.json +6 -0
- package/assets/builtin/mobheads/items/illusioner.json +6 -0
- package/assets/builtin/mobheads/items/iron_golem.json +6 -0
- package/assets/builtin/mobheads/items/llama.json +6 -0
- package/assets/builtin/mobheads/items/magma_cube.json +6 -0
- package/assets/builtin/mobheads/items/mannequin.json +6 -0
- package/assets/builtin/mobheads/items/mooshroom.json +6 -0
- package/assets/builtin/mobheads/items/mule.json +6 -0
- package/assets/builtin/mobheads/items/nautilus.json +6 -0
- package/assets/builtin/mobheads/items/ocelot.json +6 -0
- package/assets/builtin/mobheads/items/panda.json +6 -0
- package/assets/builtin/mobheads/items/parched.json +6 -0
- package/assets/builtin/mobheads/items/parrot.json +6 -0
- package/assets/builtin/mobheads/items/phantom.json +6 -0
- package/assets/builtin/mobheads/items/pig.json +6 -0
- package/assets/builtin/mobheads/items/piglin.json +6 -0
- package/assets/builtin/mobheads/items/piglin_brute.json +6 -0
- package/assets/builtin/mobheads/items/pillager.json +6 -0
- package/assets/builtin/mobheads/items/player.json +6 -0
- package/assets/builtin/mobheads/items/polar_bear.json +6 -0
- package/assets/builtin/mobheads/items/pufferfish.json +6 -0
- package/assets/builtin/mobheads/items/rabbit.json +6 -0
- package/assets/builtin/mobheads/items/ravager.json +6 -0
- package/assets/builtin/mobheads/items/salmon.json +6 -0
- package/assets/builtin/mobheads/items/sheep.json +6 -0
- package/assets/builtin/mobheads/items/shulker.json +6 -0
- package/assets/builtin/mobheads/items/silverfish.json +6 -0
- package/assets/builtin/mobheads/items/skeleton.json +6 -0
- package/assets/builtin/mobheads/items/skeleton_horse.json +6 -0
- package/assets/builtin/mobheads/items/slime.json +6 -0
- package/assets/builtin/mobheads/items/sniffer.json +6 -0
- package/assets/builtin/mobheads/items/snow_golem.json +6 -0
- package/assets/builtin/mobheads/items/spider.json +6 -0
- package/assets/builtin/mobheads/items/squid.json +6 -0
- package/assets/builtin/mobheads/items/stray.json +6 -0
- package/assets/builtin/mobheads/items/strider.json +6 -0
- package/assets/builtin/mobheads/items/sulfur_cube.json +6 -0
- package/assets/builtin/mobheads/items/tadpole.json +6 -0
- package/assets/builtin/mobheads/items/trader_llama.json +6 -0
- package/assets/builtin/mobheads/items/tropical_fish.json +14 -0
- package/assets/builtin/mobheads/items/turtle.json +6 -0
- package/assets/builtin/mobheads/items/vex.json +6 -0
- package/assets/builtin/mobheads/items/villager.json +6 -0
- package/assets/builtin/mobheads/items/vindicator.json +6 -0
- package/assets/builtin/mobheads/items/wandering_trader.json +6 -0
- package/assets/builtin/mobheads/items/warden.json +6 -0
- package/assets/builtin/mobheads/items/witch.json +6 -0
- package/assets/builtin/mobheads/items/wither.json +6 -0
- package/assets/builtin/mobheads/items/wither_skeleton.json +6 -0
- package/assets/builtin/mobheads/items/wolf.json +6 -0
- package/assets/builtin/mobheads/items/zoglin.json +6 -0
- package/assets/builtin/mobheads/items/zombie.json +6 -0
- package/assets/builtin/mobheads/items/zombie_horse.json +6 -0
- package/assets/builtin/mobheads/items/zombie_nautilus.json +6 -0
- package/assets/builtin/mobheads/items/zombie_villager.json +6 -0
- package/assets/builtin/mobheads/items/zombified_piglin.json +6 -0
- package/assets/builtin/mobheads/models/item/allay.json +6 -0
- package/assets/builtin/mobheads/models/item/armadillo.json +41 -0
- package/assets/builtin/mobheads/models/item/axolotl.json +36 -0
- package/assets/builtin/mobheads/models/item/base/camel.json +59 -0
- package/assets/builtin/mobheads/models/item/base/cat.json +52 -0
- package/assets/builtin/mobheads/models/item/base/cow.json +56 -0
- package/assets/builtin/mobheads/models/item/base/donkey.json +68 -0
- package/assets/builtin/mobheads/models/item/base/guardian.json +272 -0
- package/assets/builtin/mobheads/models/item/base/head_32_32.json +19 -0
- package/assets/builtin/mobheads/models/item/base/head_64_32.json +34 -0
- package/assets/builtin/mobheads/models/item/base/head_64_64.json +34 -0
- package/assets/builtin/mobheads/models/item/base/head_64_64_overlay.json +34 -0
- package/assets/builtin/mobheads/models/item/base/head_display.json +8 -0
- package/assets/builtin/mobheads/models/item/base/hoglin.json +81 -0
- package/assets/builtin/mobheads/models/item/base/horse.json +80 -0
- package/assets/builtin/mobheads/models/item/base/llama.json +64 -0
- package/assets/builtin/mobheads/models/item/base/nautilus.json +213 -0
- package/assets/builtin/mobheads/models/item/base/piglin.json +80 -0
- package/assets/builtin/mobheads/models/item/base/spider.json +32 -0
- package/assets/builtin/mobheads/models/item/base/squid.json +116 -0
- package/assets/builtin/mobheads/models/item/base/villager.json +43 -0
- package/assets/builtin/mobheads/models/item/bat.json +41 -0
- package/assets/builtin/mobheads/models/item/bee.json +59 -0
- package/assets/builtin/mobheads/models/item/blaze.json +6 -0
- package/assets/builtin/mobheads/models/item/bogged.json +113 -0
- package/assets/builtin/mobheads/models/item/breeze.json +49 -0
- package/assets/builtin/mobheads/models/item/camel.json +6 -0
- package/assets/builtin/mobheads/models/item/camel_husk.json +6 -0
- package/assets/builtin/mobheads/models/item/cat.json +6 -0
- package/assets/builtin/mobheads/models/item/cave_spider.json +6 -0
- package/assets/builtin/mobheads/models/item/chicken.json +62 -0
- package/assets/builtin/mobheads/models/item/cod.json +98 -0
- package/assets/builtin/mobheads/models/item/copper_golem.json +85 -0
- package/assets/builtin/mobheads/models/item/cow.json +6 -0
- package/assets/builtin/mobheads/models/item/creaking.json +120 -0
- package/assets/builtin/mobheads/models/item/creeper.json +6 -0
- package/assets/builtin/mobheads/models/item/dolphin.json +33 -0
- package/assets/builtin/mobheads/models/item/donkey.json +6 -0
- package/assets/builtin/mobheads/models/item/drowned.json +8 -0
- package/assets/builtin/mobheads/models/item/elder_guardian.json +6 -0
- package/assets/builtin/mobheads/models/item/ender_dragon.json +113 -0
- package/assets/builtin/mobheads/models/item/enderman.json +41 -0
- package/assets/builtin/mobheads/models/item/endermite.json +59 -0
- package/assets/builtin/mobheads/models/item/evoker.json +6 -0
- package/assets/builtin/mobheads/models/item/fox.json +55 -0
- package/assets/builtin/mobheads/models/item/frog.json +159 -0
- package/assets/builtin/mobheads/models/item/ghast.json +131 -0
- package/assets/builtin/mobheads/models/item/giant.json +6 -0
- package/assets/builtin/mobheads/models/item/glow_squid.json +6 -0
- package/assets/builtin/mobheads/models/item/goat.json +56 -0
- package/assets/builtin/mobheads/models/item/guardian.json +6 -0
- package/assets/builtin/mobheads/models/item/happy_ghast.json +131 -0
- package/assets/builtin/mobheads/models/item/hoglin.json +6 -0
- package/assets/builtin/mobheads/models/item/horse.json +6 -0
- package/assets/builtin/mobheads/models/item/husk.json +6 -0
- package/assets/builtin/mobheads/models/item/illusioner.json +6 -0
- package/assets/builtin/mobheads/models/item/iron_golem.json +34 -0
- package/assets/builtin/mobheads/models/item/llama.json +7 -0
- package/assets/builtin/mobheads/models/item/magma_cube.json +100 -0
- package/assets/builtin/mobheads/models/item/mooshroom.json +6 -0
- package/assets/builtin/mobheads/models/item/mule.json +6 -0
- package/assets/builtin/mobheads/models/item/nautilus.json +6 -0
- package/assets/builtin/mobheads/models/item/ocelot.json +6 -0
- package/assets/builtin/mobheads/models/item/panda.json +61 -0
- package/assets/builtin/mobheads/models/item/parched.json +6 -0
- package/assets/builtin/mobheads/models/item/parrot.json +73 -0
- package/assets/builtin/mobheads/models/item/phantom.json +33 -0
- package/assets/builtin/mobheads/models/item/pig.json +35 -0
- package/assets/builtin/mobheads/models/item/piglin.json +6 -0
- package/assets/builtin/mobheads/models/item/piglin_brute.json +6 -0
- package/assets/builtin/mobheads/models/item/pillager.json +6 -0
- package/assets/builtin/mobheads/models/item/player.json +6 -0
- package/assets/builtin/mobheads/models/item/polar_bear.json +61 -0
- package/assets/builtin/mobheads/models/item/pufferfish.json +113 -0
- package/assets/builtin/mobheads/models/item/rabbit.json +50 -0
- package/assets/builtin/mobheads/models/item/ravager.json +75 -0
- package/assets/builtin/mobheads/models/item/salmon.json +80 -0
- package/assets/builtin/mobheads/models/item/sheep.json +34 -0
- package/assets/builtin/mobheads/models/item/shulker.json +109 -0
- package/assets/builtin/mobheads/models/item/silverfish.json +148 -0
- package/assets/builtin/mobheads/models/item/skeleton.json +6 -0
- package/assets/builtin/mobheads/models/item/skeleton_horse.json +6 -0
- package/assets/builtin/mobheads/models/item/slime.json +69 -0
- package/assets/builtin/mobheads/models/item/sniffer.json +85 -0
- package/assets/builtin/mobheads/models/item/snow_golem.json +24 -0
- package/assets/builtin/mobheads/models/item/spider.json +6 -0
- package/assets/builtin/mobheads/models/item/squid.json +6 -0
- package/assets/builtin/mobheads/models/item/stray.json +8 -0
- package/assets/builtin/mobheads/models/item/strider.json +101 -0
- package/assets/builtin/mobheads/models/item/sulfur_cube.json +38 -0
- package/assets/builtin/mobheads/models/item/tadpole.json +31 -0
- package/assets/builtin/mobheads/models/item/trader_llama.json +7 -0
- package/assets/builtin/mobheads/models/item/tropical_fish.json +141 -0
- package/assets/builtin/mobheads/models/item/turtle.json +23 -0
- package/assets/builtin/mobheads/models/item/vex.json +23 -0
- package/assets/builtin/mobheads/models/item/villager.json +6 -0
- package/assets/builtin/mobheads/models/item/vindicator.json +6 -0
- package/assets/builtin/mobheads/models/item/wandering_trader.json +6 -0
- package/assets/builtin/mobheads/models/item/warden.json +92 -0
- package/assets/builtin/mobheads/models/item/witch.json +110 -0
- package/assets/builtin/mobheads/models/item/wither.json +22 -0
- package/assets/builtin/mobheads/models/item/wither_skeleton.json +6 -0
- package/assets/builtin/mobheads/models/item/wolf.json +59 -0
- package/assets/builtin/mobheads/models/item/zoglin.json +6 -0
- package/assets/builtin/mobheads/models/item/zombie.json +6 -0
- package/assets/builtin/mobheads/models/item/zombie_horse.json +6 -0
- package/assets/builtin/mobheads/models/item/zombie_nautilus.json +6 -0
- package/assets/builtin/mobheads/models/item/zombie_villager.json +6 -0
- package/assets/builtin/mobheads/models/item/zombified_piglin.json +6 -0
- package/assets/builtin/renderchest/atlases/items.json +9 -0
- package/assets/builtin/renderchest/items/empty.json +5 -0
- package/assets/builtin/renderchest/items/unknown.json +6 -0
- package/assets/builtin/renderchest/models/item/banner.json +50 -0
- package/assets/builtin/renderchest/models/item/chest/chest.json +6 -0
- package/assets/builtin/renderchest/models/item/chest/copper_chest.json +6 -0
- package/assets/builtin/renderchest/models/item/chest/ender_chest.json +6 -0
- package/assets/builtin/renderchest/models/item/chest/exposed_copper_chest.json +6 -0
- package/assets/builtin/renderchest/models/item/chest/oxidized_copper_chest.json +6 -0
- package/assets/builtin/renderchest/models/item/chest/trapped_chest.json +6 -0
- package/assets/builtin/renderchest/models/item/chest/weathered_copper_chest.json +6 -0
- package/assets/builtin/renderchest/models/item/chest.json +47 -0
- package/assets/builtin/renderchest/models/item/conduit.json +24 -0
- package/assets/builtin/renderchest/models/item/copper_golem_statue/copper_golem_statue.json +6 -0
- package/assets/builtin/renderchest/models/item/copper_golem_statue/exposed_copper_golem_statue.json +6 -0
- package/assets/builtin/renderchest/models/item/copper_golem_statue/oxidized_copper_golem_statue.json +6 -0
- package/assets/builtin/renderchest/models/item/copper_golem_statue/weathered_copper_golem_statue.json +6 -0
- package/assets/builtin/renderchest/models/item/copper_golem_statue.json +132 -0
- package/assets/builtin/renderchest/models/item/decorated_pot.json +69 -0
- package/assets/builtin/renderchest/models/item/decorated_pot_base.json +37 -0
- package/assets/builtin/renderchest/models/item/decorated_pot_overlay.json +14 -0
- package/assets/builtin/renderchest/models/item/empty.json +6 -0
- package/assets/builtin/renderchest/models/item/filled_map/base.json +6 -0
- package/assets/builtin/renderchest/models/item/filled_map/overlay.json +6 -0
- package/assets/builtin/renderchest/models/item/firework_star/base.json +6 -0
- package/assets/builtin/renderchest/models/item/firework_star/overlay.json +6 -0
- package/assets/builtin/renderchest/models/item/potion/arrow_base.json +6 -0
- package/assets/builtin/renderchest/models/item/potion/arrow_head.json +6 -0
- package/assets/builtin/renderchest/models/item/potion/bottle.json +6 -0
- package/assets/builtin/renderchest/models/item/potion/bottle_lingering.json +6 -0
- package/assets/builtin/renderchest/models/item/potion/bottle_splash.json +6 -0
- package/assets/builtin/renderchest/models/item/potion/content.json +6 -0
- package/assets/builtin/renderchest/models/item/shield.json +41 -0
- package/assets/builtin/renderchest/models/item/shulker_box/black_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/blue_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/brown_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/cyan_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/gray_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/green_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/light_blue_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/light_gray_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/lime_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/magenta_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/orange_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/pink_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/purple_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/red_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/white_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box/yellow_shulker_box.json +6 -0
- package/assets/builtin/renderchest/models/item/shulker_box.json +98 -0
- package/assets/builtin/renderchest/models/item/unknown.json +6 -0
- package/assets/builtin/renderchest/textures/item/empty.png +0 -0
- package/assets/builtin/renderchest/textures/item/unknown.png +0 -0
- package/assets/builtin-bed-compat/minecraft/models/item/black_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/blue_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/brown_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/cyan_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/gray_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/green_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/light_blue_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/light_gray_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/lime_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/magenta_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/orange_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/pink_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/purple_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/red_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/white_bed.json +6 -0
- package/assets/builtin-bed-compat/minecraft/models/item/yellow_bed.json +6 -0
- package/assets/builtin-bed-compat/renderchest/models/item/bed.json +72 -0
- package/assets/builtin-legacy/minecraft/atlases/misc.json +19 -0
- package/assets/builtin-legacy/minecraft/models/item/black_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/black_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/black_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/blue_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/blue_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/blue_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/brown_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/brown_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/brown_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/chest.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/conduit.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/creeper_head.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/cyan_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/cyan_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/cyan_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/decorated_pot.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/dragon_head.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/empty.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/ender_chest.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/gray_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/gray_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/gray_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/green_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/green_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/green_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/light_blue_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/light_blue_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/light_blue_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/light_gray_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/light_gray_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/light_gray_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/lime_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/lime_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/lime_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/magenta_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/magenta_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/magenta_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/orange_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/orange_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/orange_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/piglin_head.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/pink_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/pink_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/pink_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/player_head.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/purple_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/purple_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/purple_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_amethyst_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_base.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_copper_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_diamond_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_emerald_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_gold_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_iron_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_lapis_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_netherite_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_overlay.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_quartz_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_boots_redstone_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_amethyst_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_base.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_copper_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_diamond_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_emerald_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_gold_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_iron_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_lapis_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_netherite_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_overlay.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_quartz_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_chestplate_redstone_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_amethyst_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_base.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_copper_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_diamond_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_emerald_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_gold_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_iron_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_lapis_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_netherite_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_overlay.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_quartz_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_helmet_redstone_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_amethyst_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_base.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_copper_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_diamond_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_emerald_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_gold_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_iron_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_lapis_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_netherite_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_overlay.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_quartz_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_leather_leggings_redstone_trim.json +7 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_angler_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_archer_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_arms_up_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_blade_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_brewer_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_brick.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_burn_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_danger_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_explorer_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_friend_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_heart_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_heartbreak_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_howl_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_miner_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_mourner_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_plenty_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_prize_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_sheaf_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_shelter_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_skull_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_b_snort_pottery_sherd.json +9 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_angler_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_archer_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_arms_up_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_blade_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_brewer_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_brick.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_burn_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_danger_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_explorer_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_friend_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_heart_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_heartbreak_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_howl_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_miner_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_mourner_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_plenty_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_prize_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_sheaf_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_shelter_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_skull_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_pot_o_snort_pottery_sherd.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_potion_bottle.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_potion_bottle_lingering.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_potion_bottle_splash.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_potion_content.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_tipped_arrow_base.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/rc_tipped_arrow_head.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/red_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/red_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/red_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/shield.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/skeleton_skull.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/trapped_chest.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/unknown.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/white_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/white_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/white_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/wither_skeleton_skull.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/yellow_banner.json +3 -0
- package/assets/builtin-legacy/minecraft/models/item/yellow_bed.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/yellow_shulker_box.json +6 -0
- package/assets/builtin-legacy/minecraft/models/item/zombie_head.json +3 -0
- package/assets/builtin-legacy/mobheads/models/item/allay.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/armadillo.json +41 -0
- package/assets/builtin-legacy/mobheads/models/item/axolotl.json +36 -0
- package/assets/builtin-legacy/mobheads/models/item/base/cat.json +52 -0
- package/assets/builtin-legacy/mobheads/models/item/base/cow.json +43 -0
- package/assets/builtin-legacy/mobheads/models/item/base/donkey.json +68 -0
- package/assets/builtin-legacy/mobheads/models/item/base/guardian.json +272 -0
- package/assets/builtin-legacy/mobheads/models/item/base/head_32_32.json +19 -0
- package/assets/builtin-legacy/mobheads/models/item/base/head_64_32.json +19 -0
- package/assets/builtin-legacy/mobheads/models/item/base/head_64_64.json +19 -0
- package/assets/builtin-legacy/mobheads/models/item/base/head_display.json +8 -0
- package/assets/builtin-legacy/mobheads/models/item/base/hoglin.json +81 -0
- package/assets/builtin-legacy/mobheads/models/item/base/horse.json +80 -0
- package/assets/builtin-legacy/mobheads/models/item/base/llama.json +64 -0
- package/assets/builtin-legacy/mobheads/models/item/base/piglin.json +80 -0
- package/assets/builtin-legacy/mobheads/models/item/base/spider.json +32 -0
- package/assets/builtin-legacy/mobheads/models/item/base/squid.json +116 -0
- package/assets/builtin-legacy/mobheads/models/item/base/villager.json +43 -0
- package/assets/builtin-legacy/mobheads/models/item/bat.json +41 -0
- package/assets/builtin-legacy/mobheads/models/item/bee.json +59 -0
- package/assets/builtin-legacy/mobheads/models/item/blaze.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/breeze.json +49 -0
- package/assets/builtin-legacy/mobheads/models/item/camel.json +62 -0
- package/assets/builtin-legacy/mobheads/models/item/cat.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/cave_spider.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/chicken.json +46 -0
- package/assets/builtin-legacy/mobheads/models/item/cod.json +98 -0
- package/assets/builtin-legacy/mobheads/models/item/cow.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/creeper.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/dolphin.json +33 -0
- package/assets/builtin-legacy/mobheads/models/item/donkey.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/drowned.json +35 -0
- package/assets/builtin-legacy/mobheads/models/item/elder_guardian.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/ender_dragon.json +113 -0
- package/assets/builtin-legacy/mobheads/models/item/enderman.json +41 -0
- package/assets/builtin-legacy/mobheads/models/item/endermite.json +59 -0
- package/assets/builtin-legacy/mobheads/models/item/evoker.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/fox.json +55 -0
- package/assets/builtin-legacy/mobheads/models/item/frog.json +159 -0
- package/assets/builtin-legacy/mobheads/models/item/ghast.json +131 -0
- package/assets/builtin-legacy/mobheads/models/item/giant.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/glow_squid.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/goat.json +56 -0
- package/assets/builtin-legacy/mobheads/models/item/guardian.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/hoglin.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/horse.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/husk.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/illusioner.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/iron_golem.json +34 -0
- package/assets/builtin-legacy/mobheads/models/item/llama.json +7 -0
- package/assets/builtin-legacy/mobheads/models/item/magma_cube.json +52 -0
- package/assets/builtin-legacy/mobheads/models/item/mooshroom.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/mule.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/ocelot.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/panda.json +61 -0
- package/assets/builtin-legacy/mobheads/models/item/parrot.json +73 -0
- package/assets/builtin-legacy/mobheads/models/item/phantom.json +33 -0
- package/assets/builtin-legacy/mobheads/models/item/pig.json +35 -0
- package/assets/builtin-legacy/mobheads/models/item/piglin.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/piglin_brute.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/pillager.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/player.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/polar_bear.json +61 -0
- package/assets/builtin-legacy/mobheads/models/item/pufferfish.json +113 -0
- package/assets/builtin-legacy/mobheads/models/item/rabbit.json +59 -0
- package/assets/builtin-legacy/mobheads/models/item/ravager.json +75 -0
- package/assets/builtin-legacy/mobheads/models/item/salmon.json +80 -0
- package/assets/builtin-legacy/mobheads/models/item/sheep.json +34 -0
- package/assets/builtin-legacy/mobheads/models/item/shulker.json +109 -0
- package/assets/builtin-legacy/mobheads/models/item/silverfish.json +148 -0
- package/assets/builtin-legacy/mobheads/models/item/skeleton.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/skeleton_horse.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/slime.json +69 -0
- package/assets/builtin-legacy/mobheads/models/item/sniffer.json +85 -0
- package/assets/builtin-legacy/mobheads/models/item/snow_golem.json +24 -0
- package/assets/builtin-legacy/mobheads/models/item/spider.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/squid.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/stray.json +35 -0
- package/assets/builtin-legacy/mobheads/models/item/strider.json +101 -0
- package/assets/builtin-legacy/mobheads/models/item/tadpole.json +31 -0
- package/assets/builtin-legacy/mobheads/models/item/trader_llama.json +7 -0
- package/assets/builtin-legacy/mobheads/models/item/tropical_fish.json +141 -0
- package/assets/builtin-legacy/mobheads/models/item/turtle.json +23 -0
- package/assets/builtin-legacy/mobheads/models/item/vex.json +23 -0
- package/assets/builtin-legacy/mobheads/models/item/villager.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/vindicator.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/wandering_trader.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/warden.json +92 -0
- package/assets/builtin-legacy/mobheads/models/item/witch.json +110 -0
- package/assets/builtin-legacy/mobheads/models/item/wither.json +22 -0
- package/assets/builtin-legacy/mobheads/models/item/wither_skeleton.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/wolf.json +59 -0
- package/assets/builtin-legacy/mobheads/models/item/zoglin.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/zombie.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/zombie_horse.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/zombie_villager.json +6 -0
- package/assets/builtin-legacy/mobheads/models/item/zombified_piglin.json +6 -0
- package/assets/builtin-legacy/renderchest/atlases/items.json +9 -0
- package/assets/builtin-legacy/renderchest/models/item/banner.json +53 -0
- package/assets/builtin-legacy/renderchest/models/item/bed.json +72 -0
- package/assets/builtin-legacy/renderchest/models/item/chest.json +49 -0
- package/assets/builtin-legacy/renderchest/models/item/conduit.json +24 -0
- package/assets/builtin-legacy/renderchest/models/item/decorated_pot.json +69 -0
- package/assets/builtin-legacy/renderchest/models/item/decorated_pot_base.json +34 -0
- package/assets/builtin-legacy/renderchest/models/item/decorated_pot_overlay.json +14 -0
- package/assets/builtin-legacy/renderchest/models/item/empty.json +6 -0
- package/assets/builtin-legacy/renderchest/models/item/shield.json +38 -0
- package/assets/builtin-legacy/renderchest/models/item/shulker_box.json +103 -0
- package/assets/builtin-legacy/renderchest/models/item/unknown.json +6 -0
- package/assets/builtin-legacy/renderchest/textures/item/empty.png +0 -0
- package/assets/builtin-legacy/renderchest/textures/item/unknown.png +0 -0
- package/dist/atlas/registry.d.ts +8 -0
- package/dist/atlas/registry.js +2 -0
- package/dist/atlas/sources.d.ts +2 -0
- package/dist/atlas/sources.js +2 -0
- package/dist/blend-CHP2-j9U.js +90 -0
- package/dist/blend-Qvrn6YgK.d.ts +36 -0
- package/dist/builtin-C8GZEN40.js +16 -0
- package/dist/builtin.d.ts +5 -0
- package/dist/builtin.js +2 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +174 -0
- package/dist/compose-cph4bfdr.js +27 -0
- package/dist/definition-3MBm8ar_.js +117 -0
- package/dist/definition-BwX6Xxv0.d.ts +34 -0
- package/dist/discovery-BzaOti7l.js +91 -0
- package/dist/discovery-CmNYzKPr.d.ts +18 -0
- package/dist/download-D9aARBFp.js +34 -0
- package/dist/dynamic/generators.d.ts +2 -0
- package/dist/dynamic/generators.js +2 -0
- package/dist/encode-3u49i-eD.js +108 -0
- package/dist/encode-C5kdAm45.d.ts +34 -0
- package/dist/entity-fallback-CodtI6v8.js +265 -0
- package/dist/face-DC6cNMdz.d.ts +24 -0
- package/dist/face-Wfia-_Yx.js +92 -0
- package/dist/fluid-bucket-D-GpUQjg.js +88 -0
- package/dist/generators-CCB8h0mP.d.ts +23 -0
- package/dist/generators-CcVRG30y.js +145 -0
- package/dist/geo-B5VqGulc.js +333 -0
- package/dist/geometry-BSVmKx5b.d.ts +28 -0
- package/dist/geometry-uIDha8S4.js +229 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +20 -0
- package/dist/item-styles-DJ3LWZS2.js +174 -0
- package/dist/items/definition.d.ts +2 -0
- package/dist/items/definition.js +2 -0
- package/dist/items/discovery.d.ts +2 -0
- package/dist/items/discovery.js +2 -0
- package/dist/jar-6T3xdgaL.d.ts +21 -0
- package/dist/jar-Bt3i0ls4.js +119 -0
- package/dist/legacy-reshape-CewShfF3.js +203 -0
- package/dist/legacy-tints-B09J0Rxh.js +169 -0
- package/dist/lighting--5myudVu.js +83 -0
- package/dist/lighting-3FGRC3Af.d.ts +42 -0
- package/dist/loader-C-eqwp3M.js +359 -0
- package/dist/loader-CBzn3Koc.js +228 -0
- package/dist/loader-TFFNV4Jl.d.ts +88 -0
- package/dist/loader-lCkMRDH4.d.ts +69 -0
- package/dist/locator-jDbdUeTd.d.ts +24 -0
- package/dist/locator-ycZzh_6z.js +54 -0
- package/dist/manager-CoZaeQTu.d.ts +88 -0
- package/dist/manager-dfI7b9N4.js +150 -0
- package/dist/minify-CIV6enbr.d.ts +11 -0
- package/dist/minify-bjMRmr5J.js +31 -0
- package/dist/models/loader.d.ts +2 -0
- package/dist/models/loader.js +2 -0
- package/dist/models/types.d.ts +2 -0
- package/dist/models/types.js +11 -0
- package/dist/mods/prepare.d.ts +2 -0
- package/dist/mods/prepare.js +2 -0
- package/dist/mods/synthesize.d.ts +10 -0
- package/dist/mods/synthesize.js +2 -0
- package/dist/output/encode.d.ts +2 -0
- package/dist/output/encode.js +2 -0
- package/dist/output/item-styles.d.ts +10 -0
- package/dist/output/item-styles.js +2 -0
- package/dist/output/minify.d.ts +2 -0
- package/dist/output/minify.js +2 -0
- package/dist/output/stylesheet.d.ts +2 -0
- package/dist/output/stylesheet.js +2 -0
- package/dist/prepare-Bvc5ve2m.js +68 -0
- package/dist/prepare-DROxBZp1.js +112 -0
- package/dist/prepare-DnnGGv9k.d.ts +25 -0
- package/dist/prepare-wfWtaz_X.d.ts +45 -0
- package/dist/rasterizer-ABgsWTYN.js +139 -0
- package/dist/rasterizer-CVOlRsuw.d.ts +41 -0
- package/dist/registry-C9E7jyzG.js +28 -0
- package/dist/render/blend.d.ts +2 -0
- package/dist/render/blend.js +2 -0
- package/dist/render/compose.d.ts +6 -0
- package/dist/render/compose.js +2 -0
- package/dist/render/entity-fallback.d.ts +30 -0
- package/dist/render/entity-fallback.js +2 -0
- package/dist/render/face.d.ts +2 -0
- package/dist/render/face.js +2 -0
- package/dist/render/fluid-bucket.d.ts +14 -0
- package/dist/render/fluid-bucket.js +2 -0
- package/dist/render/geo.d.ts +54 -0
- package/dist/render/geo.js +2 -0
- package/dist/render/geometry.d.ts +2 -0
- package/dist/render/geometry.js +2 -0
- package/dist/render/legacy-tints.d.ts +12 -0
- package/dist/render/legacy-tints.js +2 -0
- package/dist/render/lighting.d.ts +2 -0
- package/dist/render/lighting.js +2 -0
- package/dist/render/obj.d.ts +24 -0
- package/dist/render/obj.js +2 -0
- package/dist/render/rasterizer.d.ts +2 -0
- package/dist/render/rasterizer.js +2 -0
- package/dist/render/renderer.d.ts +2 -0
- package/dist/render/renderer.js +2 -0
- package/dist/render/tints.d.ts +2 -0
- package/dist/render/tints.js +2 -0
- package/dist/render/vector.d.ts +2 -0
- package/dist/render/vector.js +2 -0
- package/dist/renderer-CmOz6WI9.js +507 -0
- package/dist/renderer-DQfv6axF.d.ts +44 -0
- package/dist/resources/jar.d.ts +2 -0
- package/dist/resources/jar.js +2 -0
- package/dist/resources/locator.d.ts +2 -0
- package/dist/resources/locator.js +2 -0
- package/dist/resources/manager.d.ts +2 -0
- package/dist/resources/manager.js +2 -0
- package/dist/resources/synthetic.d.ts +2 -0
- package/dist/resources/synthetic.js +2 -0
- package/dist/run-BK7Q8WZ3.d.ts +54 -0
- package/dist/run-Dr6BfyN9.js +316 -0
- package/dist/run.d.ts +3 -0
- package/dist/run.js +3 -0
- package/dist/sources-Bxk-WOzH.js +202 -0
- package/dist/sources-DH9dk3KF.d.ts +104 -0
- package/dist/stylesheet-CovT3B2S.js +71 -0
- package/dist/stylesheet-i-t_7sZ7.d.ts +53 -0
- package/dist/synthesize-CRgSEmEp.js +128 -0
- package/dist/synthetic-CDsj--li.d.ts +34 -0
- package/dist/synthetic-DC2bSnGe.js +0 -0
- package/dist/textures/loader.d.ts +2 -0
- package/dist/textures/loader.js +2 -0
- package/dist/tints-FQlxTzUL.js +108 -0
- package/dist/tints-Fr6WoPaU.d.ts +22 -0
- package/dist/types-COGbtA1t.d.ts +69 -0
- package/dist/vector-CCxLae_T.js +190 -0
- package/dist/vector-DRKRi4--.d.ts +43 -0
- package/dist/versions/download.d.ts +9 -0
- package/dist/versions/download.js +2 -0
- package/dist/versions/legacy-reshape.d.ts +9 -0
- package/dist/versions/legacy-reshape.js +2 -0
- package/dist/versions/prepare.d.ts +2 -0
- package/dist/versions/prepare.js +2 -0
- package/dist/workers/pool.d.ts +23 -0
- package/dist/workers/pool.js +67 -0
- 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,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 };
|