@nodecraft/rendermite 0.0.1 → 1.0.0
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 +91 -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-BDB_VIHN.d.ts +31 -0
- package/dist/encode-BdTHbOp-.js +86 -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-CEaRhk4A.js +298 -0
- package/dist/run-D2XL05Zl.d.ts +54 -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,359 @@
|
|
|
1
|
+
import { n as ResourceLocator } from "./locator-ycZzh_6z.js";
|
|
2
|
+
//#region src/models/loader.ts
|
|
3
|
+
var ModelResolutionError = class extends Error {};
|
|
4
|
+
const MAX_PARENT_DEPTH = 64;
|
|
5
|
+
const MAX_TEXTURE_REF_DEPTH = 16;
|
|
6
|
+
/**
|
|
7
|
+
* Per-mod synthesizers for loaders whose geometry lives entirely in Java but
|
|
8
|
+
* whose icon shape is simple and stable enough to rebuild from the model json.
|
|
9
|
+
* Keyed on the EXACT loader id so an unknown mod's loader never gets a wrong
|
|
10
|
+
* guess — unhandled loaders keep the strip-and-fail-loud path below, and the
|
|
11
|
+
* run() fallback chain (block model, geo, entity, sprite) still applies.
|
|
12
|
+
* Adding a mod means adding an entry here plus a fixture test.
|
|
13
|
+
*/
|
|
14
|
+
const MOD_LOADER_HANDLERS = {
|
|
15
|
+
"immersiveengineering:conf_sides": flattenConfSides,
|
|
16
|
+
"immersiveengineering:models/conveyor": flattenConveyor
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Rewrite custom-loader models (forge/neoforge `loader` key) into drawable
|
|
20
|
+
* geometry. Left unhandled they fall back to a textureless parent and render
|
|
21
|
+
* as black squares — worse than failing, since the item still counts as having
|
|
22
|
+
* an icon (1,793 such icons in the old pipeline's modded run). Resolution
|
|
23
|
+
* order mirrors what each loader actually draws: the gui perspective IS the
|
|
24
|
+
* icon view; composite children draw first-to-last; fluid containers' real
|
|
25
|
+
* parent is loader-provided with no file behind it. OBJ loaders are left
|
|
26
|
+
* alone — their geometry is a different file format.
|
|
27
|
+
*/
|
|
28
|
+
function flattenLoaderModel(json, depth = 0) {
|
|
29
|
+
const loader = extractLoaderType(json);
|
|
30
|
+
if (!loader || depth > 8) return json;
|
|
31
|
+
if (/obj$/i.test(loader)) {
|
|
32
|
+
const extended = json;
|
|
33
|
+
if (typeof extended.model === "string") {
|
|
34
|
+
const marked = withoutLoader(json);
|
|
35
|
+
marked.objModel = {
|
|
36
|
+
model: extended.model,
|
|
37
|
+
flipV: extended.flip_v ?? extended.flip_V ?? false
|
|
38
|
+
};
|
|
39
|
+
delete marked.model;
|
|
40
|
+
return marked;
|
|
41
|
+
}
|
|
42
|
+
return json;
|
|
43
|
+
}
|
|
44
|
+
const handler = MOD_LOADER_HANDLERS[loader];
|
|
45
|
+
if (handler) return handler(json);
|
|
46
|
+
const extended = json;
|
|
47
|
+
if (extended.perspectives?.gui && typeof extended.perspectives.gui === "object") return flattenLoaderModel(extended.perspectives.gui, depth + 1);
|
|
48
|
+
if (extended.base && typeof extended.base === "object") return flattenLoaderModel(extended.base, depth + 1);
|
|
49
|
+
if (typeof extended.childModel === "string") return { parent: extended.childModel };
|
|
50
|
+
if (extended.children && typeof extended.children === "object") {
|
|
51
|
+
const children = Object.values(extended.children);
|
|
52
|
+
const inline = children.filter((child) => typeof child === "object" && child !== null);
|
|
53
|
+
if (inline.length > 0 && inline.every((child) => Array.isArray(child.elements))) return {
|
|
54
|
+
...withoutLoader(json),
|
|
55
|
+
children: void 0,
|
|
56
|
+
textures: Object.assign({}, ...inline.map((child) => child.textures), json.textures),
|
|
57
|
+
elements: inline.flatMap((child) => child.elements ?? [])
|
|
58
|
+
};
|
|
59
|
+
const first = children[0];
|
|
60
|
+
if (typeof first === "string") return { parent: first };
|
|
61
|
+
if (first && typeof first === "object") return flattenLoaderModel(first, depth + 1);
|
|
62
|
+
}
|
|
63
|
+
if (extended.inner_model && typeof extended.inner_model === "object") return flattenLoaderModel(extended.inner_model, depth + 1);
|
|
64
|
+
if (/fluid_container|bucket/i.test(loader)) {
|
|
65
|
+
const fluid = json.fluid;
|
|
66
|
+
const bucket = { parent: "minecraft:item/bucket" };
|
|
67
|
+
if (typeof fluid === "string" && fluid.length > 0 && !fluid.endsWith(":empty")) bucket.fluidContained = fluid;
|
|
68
|
+
return bucket;
|
|
69
|
+
}
|
|
70
|
+
return withoutLoader(json);
|
|
71
|
+
}
|
|
72
|
+
/** IE conveyor types whose belt texture is not simply `block/conveyor/<type>`. */
|
|
73
|
+
const CONVEYOR_BELTS = {
|
|
74
|
+
basic: "conveyor",
|
|
75
|
+
covered: "conveyor",
|
|
76
|
+
extract: "conveyor",
|
|
77
|
+
splitter: "split"
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* IE's conveyor loader builds its belt entirely in code, but the shape it
|
|
81
|
+
* draws for the icon is just a flat 16x2x16 belt with the type's (animated)
|
|
82
|
+
* belt texture on top. The display transform is inlined because the model
|
|
83
|
+
* json has no block/block parent to inherit the gui pose from.
|
|
84
|
+
*/
|
|
85
|
+
function flattenConveyor(json) {
|
|
86
|
+
const conveyorType = json.conveyorType;
|
|
87
|
+
if (typeof conveyorType !== "string" || !conveyorType.includes(":")) return withoutLoader(json);
|
|
88
|
+
const [namespace, type] = conveyorType.split(":", 2);
|
|
89
|
+
const belt = `${namespace}:block/conveyor/${CONVEYOR_BELTS[type] ?? type}`;
|
|
90
|
+
const side = {
|
|
91
|
+
uv: [
|
|
92
|
+
0,
|
|
93
|
+
0,
|
|
94
|
+
16,
|
|
95
|
+
2
|
|
96
|
+
],
|
|
97
|
+
texture: "#belt"
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
gui_light: "side",
|
|
101
|
+
display: { gui: {
|
|
102
|
+
rotation: [
|
|
103
|
+
30,
|
|
104
|
+
225,
|
|
105
|
+
0
|
|
106
|
+
],
|
|
107
|
+
translation: [
|
|
108
|
+
0,
|
|
109
|
+
0,
|
|
110
|
+
0
|
|
111
|
+
],
|
|
112
|
+
scale: [
|
|
113
|
+
.625,
|
|
114
|
+
.625,
|
|
115
|
+
.625
|
|
116
|
+
]
|
|
117
|
+
} },
|
|
118
|
+
textures: {
|
|
119
|
+
belt,
|
|
120
|
+
particle: belt
|
|
121
|
+
},
|
|
122
|
+
elements: [{
|
|
123
|
+
from: [
|
|
124
|
+
0,
|
|
125
|
+
0,
|
|
126
|
+
0
|
|
127
|
+
],
|
|
128
|
+
to: [
|
|
129
|
+
16,
|
|
130
|
+
2,
|
|
131
|
+
16
|
|
132
|
+
],
|
|
133
|
+
faces: {
|
|
134
|
+
up: {
|
|
135
|
+
uv: [
|
|
136
|
+
0,
|
|
137
|
+
0,
|
|
138
|
+
16,
|
|
139
|
+
16
|
|
140
|
+
],
|
|
141
|
+
texture: "#belt"
|
|
142
|
+
},
|
|
143
|
+
down: {
|
|
144
|
+
uv: [
|
|
145
|
+
0,
|
|
146
|
+
0,
|
|
147
|
+
16,
|
|
148
|
+
16
|
|
149
|
+
],
|
|
150
|
+
texture: "#belt"
|
|
151
|
+
},
|
|
152
|
+
north: side,
|
|
153
|
+
south: side,
|
|
154
|
+
east: side,
|
|
155
|
+
west: side
|
|
156
|
+
}
|
|
157
|
+
}]
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* IE's conf_sides loader picks per-face textures from `<base_name>` plus a
|
|
162
|
+
* side/io suffix at runtime; the icon always shows the unconfigured ("none")
|
|
163
|
+
* state, so a plain cube with those textures matches what the game draws.
|
|
164
|
+
*/
|
|
165
|
+
function flattenConfSides(json) {
|
|
166
|
+
const { type, base_name: base } = json;
|
|
167
|
+
if (typeof base !== "string") return withoutLoader(json);
|
|
168
|
+
const faces = type === "side_top_bottom" ? {
|
|
169
|
+
up: `${base}_up_none`,
|
|
170
|
+
down: `${base}_down_none`,
|
|
171
|
+
side: `${base}_side_none`
|
|
172
|
+
} : type === "vertical" ? {
|
|
173
|
+
up: `${base}_up_none`,
|
|
174
|
+
down: `${base}_up_none`,
|
|
175
|
+
side: `${base}_side`
|
|
176
|
+
} : {
|
|
177
|
+
up: `${base}_side_none`,
|
|
178
|
+
down: `${base}_side_none`,
|
|
179
|
+
side: `${base}_side_none`
|
|
180
|
+
};
|
|
181
|
+
return {
|
|
182
|
+
parent: "minecraft:block/cube",
|
|
183
|
+
textures: {
|
|
184
|
+
particle: faces.side,
|
|
185
|
+
up: faces.up,
|
|
186
|
+
down: faces.down,
|
|
187
|
+
north: faces.side,
|
|
188
|
+
south: faces.side,
|
|
189
|
+
east: faces.side,
|
|
190
|
+
west: faces.side
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function extractLoaderType(json) {
|
|
195
|
+
const record = json;
|
|
196
|
+
if (typeof record.loader === "string") return record.loader;
|
|
197
|
+
if (typeof record.loader === "object" && record.loader !== null) {
|
|
198
|
+
const type = record.loader.type;
|
|
199
|
+
return typeof type === "string" ? type : null;
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
function withoutLoader(json) {
|
|
204
|
+
const rest = { ...json };
|
|
205
|
+
delete rest.loader;
|
|
206
|
+
return rest;
|
|
207
|
+
}
|
|
208
|
+
function isBuiltinParent(parent) {
|
|
209
|
+
return parent.startsWith("builtin/") || parent.startsWith("minecraft:builtin/");
|
|
210
|
+
}
|
|
211
|
+
function normalizeBuiltin(parent) {
|
|
212
|
+
return parent.replace(/^minecraft:/, "");
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Return the first complete JSON value in a string, tolerating trailing junk the way
|
|
216
|
+
* Gson does (IntegratedDynamics ships models with garbage after the closing brace).
|
|
217
|
+
* Returns null when no complete value exists.
|
|
218
|
+
*/
|
|
219
|
+
function salvageJson(text) {
|
|
220
|
+
const start = text.search(/[[{]/);
|
|
221
|
+
if (start === -1) return null;
|
|
222
|
+
let depth = 0;
|
|
223
|
+
let inString = false;
|
|
224
|
+
let escaped = false;
|
|
225
|
+
for (let i = start; i < text.length; i++) {
|
|
226
|
+
const char = text[i];
|
|
227
|
+
if (inString) {
|
|
228
|
+
if (escaped) escaped = false;
|
|
229
|
+
else if (char === "\\") escaped = true;
|
|
230
|
+
else if (char === "\"") inString = false;
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (char === "\"") inString = true;
|
|
234
|
+
else if (char === "{" || char === "[") depth++;
|
|
235
|
+
else if (char === "}" || char === "]") {
|
|
236
|
+
depth--;
|
|
237
|
+
if (depth === 0) try {
|
|
238
|
+
return JSON.parse(text.slice(start, i + 1));
|
|
239
|
+
} catch {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
var ModelLoader = class {
|
|
247
|
+
resources;
|
|
248
|
+
cache = /* @__PURE__ */ new Map();
|
|
249
|
+
constructor(resources) {
|
|
250
|
+
this.resources = resources;
|
|
251
|
+
}
|
|
252
|
+
async readModelJson(locator) {
|
|
253
|
+
const raw = await this.resources.getResource("model", locator);
|
|
254
|
+
if (raw === null) throw new ModelResolutionError(`Model not found: ${locator}`);
|
|
255
|
+
let json;
|
|
256
|
+
try {
|
|
257
|
+
json = JSON.parse(raw.toString("utf8"));
|
|
258
|
+
} catch {
|
|
259
|
+
const salvaged = salvageJson(raw.toString("utf8"));
|
|
260
|
+
if (salvaged === null) throw new ModelResolutionError(`Model is not valid JSON: ${locator}`);
|
|
261
|
+
json = salvaged;
|
|
262
|
+
}
|
|
263
|
+
return flattenLoaderModel(json);
|
|
264
|
+
}
|
|
265
|
+
async resolve(locator) {
|
|
266
|
+
const chain = [];
|
|
267
|
+
const seen = /* @__PURE__ */ new Set();
|
|
268
|
+
let current = locator;
|
|
269
|
+
let builtinParent = null;
|
|
270
|
+
while (current !== null) {
|
|
271
|
+
const key = current.toString();
|
|
272
|
+
if (seen.has(key)) throw new ModelResolutionError(`Model parent cycle at ${key} (from ${locator})`);
|
|
273
|
+
if (chain.length >= MAX_PARENT_DEPTH) throw new ModelResolutionError(`Model parent chain exceeds ${MAX_PARENT_DEPTH} at ${locator}`);
|
|
274
|
+
seen.add(key);
|
|
275
|
+
const json = await this.readModelJson(current);
|
|
276
|
+
chain.push({
|
|
277
|
+
locator: current,
|
|
278
|
+
json
|
|
279
|
+
});
|
|
280
|
+
if (json.parent === void 0) current = null;
|
|
281
|
+
else if (isBuiltinParent(json.parent)) {
|
|
282
|
+
builtinParent = normalizeBuiltin(json.parent);
|
|
283
|
+
current = null;
|
|
284
|
+
} else current = ResourceLocator.parse(json.parent);
|
|
285
|
+
}
|
|
286
|
+
const textures = {};
|
|
287
|
+
const display = {};
|
|
288
|
+
let elements = [];
|
|
289
|
+
let guiLight;
|
|
290
|
+
let elementsGuiLight;
|
|
291
|
+
for (let i = chain.length - 1; i >= 0; i--) {
|
|
292
|
+
const { json } = chain[i];
|
|
293
|
+
for (const [name, value] of Object.entries(json.textures ?? {})) textures[name] = typeof value === "object" && value !== null ? String(value.sprite ?? "") : value;
|
|
294
|
+
Object.assign(display, json.display);
|
|
295
|
+
if (json.gui_light !== void 0) guiLight = json.gui_light;
|
|
296
|
+
if (json.elements !== void 0) {
|
|
297
|
+
elements = json.elements;
|
|
298
|
+
elementsGuiLight = guiLight;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
let obj;
|
|
302
|
+
for (const entry of chain) {
|
|
303
|
+
const marked = entry.json;
|
|
304
|
+
if (marked.objModel) {
|
|
305
|
+
obj = marked.objModel;
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
let fluid;
|
|
310
|
+
for (const entry of chain) {
|
|
311
|
+
const marked = entry.json;
|
|
312
|
+
if (marked.fluidContained) {
|
|
313
|
+
fluid = marked.fluidContained;
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
const defaultLight = builtinParent === "builtin/generated" ? "front" : "side";
|
|
318
|
+
return {
|
|
319
|
+
obj,
|
|
320
|
+
fluid,
|
|
321
|
+
locator,
|
|
322
|
+
builtinParent,
|
|
323
|
+
guiLight: guiLight ?? defaultLight,
|
|
324
|
+
elementsGuiLight: elementsGuiLight ?? defaultLight,
|
|
325
|
+
display,
|
|
326
|
+
textures,
|
|
327
|
+
elements,
|
|
328
|
+
chain: chain.map((entry) => entry.locator.toString())
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
/** Load and flatten a model by locator string (e.g. `minecraft:item/stone`). */
|
|
332
|
+
async load(locator) {
|
|
333
|
+
const parsed = typeof locator === "string" ? ResourceLocator.parse(locator) : locator;
|
|
334
|
+
const key = parsed.toString();
|
|
335
|
+
let pending = this.cache.get(key);
|
|
336
|
+
if (!pending) {
|
|
337
|
+
pending = this.resolve(parsed);
|
|
338
|
+
this.cache.set(key, pending);
|
|
339
|
+
}
|
|
340
|
+
return pending;
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
/**
|
|
344
|
+
* Resolve a texture variable (`#layer0`) through the merged texture map to a locator.
|
|
345
|
+
* Returns null for unresolved variables — the caller decides whether that fails the
|
|
346
|
+
* item or just the face.
|
|
347
|
+
*/
|
|
348
|
+
function resolveTexture(model, reference) {
|
|
349
|
+
let value = reference;
|
|
350
|
+
for (let depth = 0; depth < MAX_TEXTURE_REF_DEPTH; depth++) {
|
|
351
|
+
if (!value.startsWith("#")) return ResourceLocator.tryParse(value);
|
|
352
|
+
const next = model.textures[value.slice(1)];
|
|
353
|
+
if (next === void 0) return null;
|
|
354
|
+
value = next;
|
|
355
|
+
}
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
//#endregion
|
|
359
|
+
export { salvageJson as a, resolveTexture as i, ModelResolutionError as n, flattenLoaderModel as r, ModelLoader as t };
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import sharp from "sharp";
|
|
2
|
+
//#region src/textures/loader.ts
|
|
3
|
+
var TextureResolutionError = class extends Error {};
|
|
4
|
+
/**
|
|
5
|
+
* Animation-aware texture access: frame extraction over strips and grids with
|
|
6
|
+
* mcmeta frame lists, per-frame times, and interpolation (upstream semantics:
|
|
7
|
+
* cols = trunc(16/meta.width), frame count from geometry when no list).
|
|
8
|
+
*/
|
|
9
|
+
var AnimatedTexture = class {
|
|
10
|
+
full;
|
|
11
|
+
meta;
|
|
12
|
+
columns;
|
|
13
|
+
frameCache = /* @__PURE__ */ new Map();
|
|
14
|
+
frameWidth;
|
|
15
|
+
frameHeight;
|
|
16
|
+
frameCount;
|
|
17
|
+
constructor(full, meta) {
|
|
18
|
+
this.full = full;
|
|
19
|
+
this.meta = meta;
|
|
20
|
+
const metaWidth = meta?.animation?.width ?? 16;
|
|
21
|
+
const metaHeight = meta?.animation?.height ?? 16;
|
|
22
|
+
this.columns = Math.max(1, Math.trunc(16 / metaWidth));
|
|
23
|
+
this.frameWidth = Math.round(full.width * (metaWidth / 16));
|
|
24
|
+
this.frameHeight = Math.round(this.frameWidth * (metaHeight / 16));
|
|
25
|
+
const frames = meta?.animation?.frames;
|
|
26
|
+
if (!meta?.animation) this.frameCount = 1;
|
|
27
|
+
else if (frames?.length) this.frameCount = frames.length;
|
|
28
|
+
else this.frameCount = Math.max(1, Math.round(full.height / this.frameHeight * this.columns));
|
|
29
|
+
}
|
|
30
|
+
get interpolated() {
|
|
31
|
+
return this.meta?.animation?.interpolate ?? false;
|
|
32
|
+
}
|
|
33
|
+
/** Total animation length in game ticks (1 for unanimated). */
|
|
34
|
+
get tickLength() {
|
|
35
|
+
if (!this.meta?.animation || this.frameCount <= 1) return 1;
|
|
36
|
+
const frameTime = this.meta.animation.frametime ?? 1;
|
|
37
|
+
const frames = this.meta.animation.frames;
|
|
38
|
+
if (frames?.length) {
|
|
39
|
+
let total = 0;
|
|
40
|
+
for (const frame of frames) total += typeof frame === "number" ? frameTime : frame.time ?? frameTime;
|
|
41
|
+
return total;
|
|
42
|
+
}
|
|
43
|
+
return this.frameCount * frameTime;
|
|
44
|
+
}
|
|
45
|
+
/** Which physical frame index shows at a tick, and the interpolation factor. */
|
|
46
|
+
resolveFrame(tick) {
|
|
47
|
+
const animation = this.meta?.animation;
|
|
48
|
+
if (!animation || this.frameCount <= 1) return {
|
|
49
|
+
frame: 0,
|
|
50
|
+
interpolation: 0
|
|
51
|
+
};
|
|
52
|
+
const frameTime = animation.frametime ?? 1;
|
|
53
|
+
const frames = animation.frames;
|
|
54
|
+
if (!frames?.length) return {
|
|
55
|
+
frame: Math.floor(tick / frameTime) % this.frameCount,
|
|
56
|
+
interpolation: tick % frameTime / frameTime
|
|
57
|
+
};
|
|
58
|
+
let remaining = tick % this.tickLength;
|
|
59
|
+
for (const entry of frames) {
|
|
60
|
+
const index = typeof entry === "number" ? entry : entry.index;
|
|
61
|
+
const time = typeof entry === "number" ? frameTime : entry.time ?? frameTime;
|
|
62
|
+
if (remaining < time) return {
|
|
63
|
+
frame: index,
|
|
64
|
+
interpolation: remaining / time
|
|
65
|
+
};
|
|
66
|
+
remaining -= time;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
frame: typeof frames[0] === "number" ? frames[0] : frames[0].index,
|
|
70
|
+
interpolation: 0
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/** Crop one physical frame out of the strip/grid (memoized). */
|
|
74
|
+
frame(index) {
|
|
75
|
+
let cached = this.frameCache.get(index);
|
|
76
|
+
if (!cached) {
|
|
77
|
+
const left = index % this.columns * this.frameWidth;
|
|
78
|
+
const top = Math.floor(index / this.columns) * this.frameHeight;
|
|
79
|
+
const data = new Uint8ClampedArray(this.frameWidth * this.frameHeight * 4);
|
|
80
|
+
for (let y = 0; y < this.frameHeight; y++) {
|
|
81
|
+
const sourceStart = ((top + y) * this.full.width + left) * 4;
|
|
82
|
+
data.set(this.full.data.subarray(sourceStart, sourceStart + this.frameWidth * 4), y * this.frameWidth * 4);
|
|
83
|
+
}
|
|
84
|
+
cached = {
|
|
85
|
+
width: this.frameWidth,
|
|
86
|
+
height: this.frameHeight,
|
|
87
|
+
data
|
|
88
|
+
};
|
|
89
|
+
this.frameCache.set(index, cached);
|
|
90
|
+
}
|
|
91
|
+
return cached;
|
|
92
|
+
}
|
|
93
|
+
/** The image shown at a tick: the frame, interpolated toward the next when enabled. */
|
|
94
|
+
at(tick) {
|
|
95
|
+
const { frame, interpolation } = this.resolveFrame(tick);
|
|
96
|
+
const base = this.frame(frame);
|
|
97
|
+
if (!this.interpolated || interpolation === 0) return base;
|
|
98
|
+
const next = this.frame((frame + 1) % this.frameCount);
|
|
99
|
+
const data = new Uint8ClampedArray(base.data.length);
|
|
100
|
+
for (let i = 0; i < data.length; i++) data[i] = Math.round(base.data[i] + (next.data[i] - base.data[i]) * interpolation);
|
|
101
|
+
return {
|
|
102
|
+
width: base.width,
|
|
103
|
+
height: base.height,
|
|
104
|
+
data
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
var TextureLoader = class {
|
|
109
|
+
resources;
|
|
110
|
+
cache = /* @__PURE__ */ new Map();
|
|
111
|
+
atlas = null;
|
|
112
|
+
constructor(resources) {
|
|
113
|
+
this.resources = resources;
|
|
114
|
+
}
|
|
115
|
+
async decode(locator) {
|
|
116
|
+
let raw = await this.resources.getResource("texture", locator);
|
|
117
|
+
if (raw === null && this.atlas) {
|
|
118
|
+
const sprite = await this.atlas.resolve(locator);
|
|
119
|
+
if (sprite?.kind === "pixels") return sprite.texture;
|
|
120
|
+
if (sprite?.kind === "file") raw = await this.resources.getResource("texture", sprite.locator);
|
|
121
|
+
}
|
|
122
|
+
if (raw === null) return null;
|
|
123
|
+
let image;
|
|
124
|
+
try {
|
|
125
|
+
image = await sharp(raw).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
|
|
126
|
+
} catch (err) {
|
|
127
|
+
throw new TextureResolutionError(`Failed to decode texture ${locator}: ${err.message}`);
|
|
128
|
+
}
|
|
129
|
+
let texture = {
|
|
130
|
+
width: image.info.width,
|
|
131
|
+
height: image.info.height,
|
|
132
|
+
data: new Uint8ClampedArray(image.data.buffer, image.data.byteOffset, image.data.length)
|
|
133
|
+
};
|
|
134
|
+
const meta = await this.readMeta(locator);
|
|
135
|
+
const frame = frameSize(texture, meta);
|
|
136
|
+
if (frame.height !== texture.height || frame.width !== texture.width) texture = cropFrame(texture, frame.width, frame.height);
|
|
137
|
+
return texture;
|
|
138
|
+
}
|
|
139
|
+
async readMeta(locator) {
|
|
140
|
+
const raw = await this.resources.getResource("textureMeta", locator);
|
|
141
|
+
if (raw === null) return null;
|
|
142
|
+
try {
|
|
143
|
+
return JSON.parse(raw.toString("utf8"));
|
|
144
|
+
} catch {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Attach an atlas resolver, consulted when no texture file exists directly —
|
|
150
|
+
* the path that synthesizes paletted_permutations sprites (armor trims) and
|
|
151
|
+
* unstitch regions. Directory/single sources are effectively covered by the
|
|
152
|
+
* direct file lookup already.
|
|
153
|
+
*/
|
|
154
|
+
setAtlasResolver(atlas) {
|
|
155
|
+
this.atlas = atlas;
|
|
156
|
+
this.cache.clear();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Load a texture with its animation metadata for multi-frame rendering.
|
|
160
|
+
* Returns null when the texture does not exist.
|
|
161
|
+
*/
|
|
162
|
+
async loadAnimated(locator) {
|
|
163
|
+
const raw = await this.resources.getResource("texture", locator);
|
|
164
|
+
let full = null;
|
|
165
|
+
if (raw !== null) {
|
|
166
|
+
const image = await sharp(raw).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
|
|
167
|
+
full = {
|
|
168
|
+
width: image.info.width,
|
|
169
|
+
height: image.info.height,
|
|
170
|
+
data: new Uint8ClampedArray(image.data.buffer, image.data.byteOffset, image.data.length)
|
|
171
|
+
};
|
|
172
|
+
} else if (this.atlas) {
|
|
173
|
+
const sprite = await this.load(locator);
|
|
174
|
+
if (sprite) return new AnimatedTexture(sprite, null);
|
|
175
|
+
}
|
|
176
|
+
if (!full) return null;
|
|
177
|
+
return new AnimatedTexture(full, await this.readMeta(locator));
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Load a texture's first animation frame (what a static icon shows).
|
|
181
|
+
* Returns null when the texture does not exist; the caller decides whether
|
|
182
|
+
* that fails the item or just the face.
|
|
183
|
+
*/
|
|
184
|
+
async load(locator) {
|
|
185
|
+
const key = locator.toString();
|
|
186
|
+
let pending = this.cache.get(key);
|
|
187
|
+
if (!pending) {
|
|
188
|
+
pending = this.decode(locator);
|
|
189
|
+
this.cache.set(key, pending);
|
|
190
|
+
}
|
|
191
|
+
return pending;
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* The size of one animation frame. Vertical strips are the norm (frame = width x width);
|
|
196
|
+
* mcmeta may override with explicit width/height. Textures without animation metadata
|
|
197
|
+
* but taller than wide are still treated as strips, matching how icons of animated
|
|
198
|
+
* textures (water, fire, magma) have always been derived.
|
|
199
|
+
*/
|
|
200
|
+
function frameSize(texture, meta) {
|
|
201
|
+
const animation = meta?.animation;
|
|
202
|
+
if (animation) return {
|
|
203
|
+
width: animation.width ?? texture.width,
|
|
204
|
+
height: animation.height ?? Math.min(texture.height, texture.width)
|
|
205
|
+
};
|
|
206
|
+
if (texture.height > texture.width && texture.height % texture.width === 0) return {
|
|
207
|
+
width: texture.width,
|
|
208
|
+
height: texture.width
|
|
209
|
+
};
|
|
210
|
+
return {
|
|
211
|
+
width: texture.width,
|
|
212
|
+
height: texture.height
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
function cropFrame(texture, width, height) {
|
|
216
|
+
const data = new Uint8ClampedArray(width * height * 4);
|
|
217
|
+
for (let y = 0; y < height; y++) {
|
|
218
|
+
const sourceStart = y * texture.width * 4;
|
|
219
|
+
data.set(texture.data.subarray(sourceStart, sourceStart + width * 4), y * width * 4);
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
width,
|
|
223
|
+
height,
|
|
224
|
+
data
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//#endregion
|
|
228
|
+
export { TextureLoader as n, TextureResolutionError as r, AnimatedTexture as t };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { n as ResourceLocator } from "./locator-jDbdUeTd.js";
|
|
2
|
+
import { a as ResourceManager } from "./manager-CoZaeQTu.js";
|
|
3
|
+
//#region src/textures/loader.d.ts
|
|
4
|
+
/** Structural interface for atlas resolvers (avoids a circular module edge). */
|
|
5
|
+
interface AtlasResolverLike {
|
|
6
|
+
resolve(locator: ResourceLocator): Promise<{
|
|
7
|
+
kind: 'file';
|
|
8
|
+
locator: ResourceLocator;
|
|
9
|
+
} | {
|
|
10
|
+
kind: 'pixels';
|
|
11
|
+
texture: Texture;
|
|
12
|
+
} | null>;
|
|
13
|
+
}
|
|
14
|
+
/** Decoded texture pixels, always RGBA, 8-bit per channel. */
|
|
15
|
+
interface Texture {
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
/** RGBA, row-major, length = width * height * 4. */
|
|
19
|
+
data: Uint8ClampedArray;
|
|
20
|
+
}
|
|
21
|
+
interface TextureMeta {
|
|
22
|
+
animation?: {
|
|
23
|
+
frametime?: number;
|
|
24
|
+
frames?: Array<number | {
|
|
25
|
+
index: number;
|
|
26
|
+
time?: number;
|
|
27
|
+
}>;
|
|
28
|
+
interpolate?: boolean;
|
|
29
|
+
width?: number;
|
|
30
|
+
height?: number;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
declare class TextureResolutionError extends Error {}
|
|
34
|
+
/**
|
|
35
|
+
* Animation-aware texture access: frame extraction over strips and grids with
|
|
36
|
+
* mcmeta frame lists, per-frame times, and interpolation (upstream semantics:
|
|
37
|
+
* cols = trunc(16/meta.width), frame count from geometry when no list).
|
|
38
|
+
*/
|
|
39
|
+
declare class AnimatedTexture {
|
|
40
|
+
private readonly full;
|
|
41
|
+
private readonly meta;
|
|
42
|
+
private readonly columns;
|
|
43
|
+
private readonly frameCache;
|
|
44
|
+
readonly frameWidth: number;
|
|
45
|
+
readonly frameHeight: number;
|
|
46
|
+
readonly frameCount: number;
|
|
47
|
+
constructor(full: Texture, meta: TextureMeta | null);
|
|
48
|
+
get interpolated(): boolean;
|
|
49
|
+
/** Total animation length in game ticks (1 for unanimated). */
|
|
50
|
+
get tickLength(): number;
|
|
51
|
+
/** Which physical frame index shows at a tick, and the interpolation factor. */
|
|
52
|
+
resolveFrame(tick: number): {
|
|
53
|
+
frame: number;
|
|
54
|
+
interpolation: number;
|
|
55
|
+
};
|
|
56
|
+
/** Crop one physical frame out of the strip/grid (memoized). */
|
|
57
|
+
frame(index: number): Texture;
|
|
58
|
+
/** The image shown at a tick: the frame, interpolated toward the next when enabled. */
|
|
59
|
+
at(tick: number): Texture;
|
|
60
|
+
}
|
|
61
|
+
declare class TextureLoader {
|
|
62
|
+
private readonly resources;
|
|
63
|
+
private readonly cache;
|
|
64
|
+
private atlas;
|
|
65
|
+
constructor(resources: ResourceManager);
|
|
66
|
+
private decode;
|
|
67
|
+
private readMeta;
|
|
68
|
+
/**
|
|
69
|
+
* Attach an atlas resolver, consulted when no texture file exists directly —
|
|
70
|
+
* the path that synthesizes paletted_permutations sprites (armor trims) and
|
|
71
|
+
* unstitch regions. Directory/single sources are effectively covered by the
|
|
72
|
+
* direct file lookup already.
|
|
73
|
+
*/
|
|
74
|
+
setAtlasResolver(atlas: AtlasResolverLike): void;
|
|
75
|
+
/**
|
|
76
|
+
* Load a texture with its animation metadata for multi-frame rendering.
|
|
77
|
+
* Returns null when the texture does not exist.
|
|
78
|
+
*/
|
|
79
|
+
loadAnimated(locator: ResourceLocator): Promise<AnimatedTexture | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Load a texture's first animation frame (what a static icon shows).
|
|
82
|
+
* Returns null when the texture does not exist; the caller decides whether
|
|
83
|
+
* that fails the item or just the face.
|
|
84
|
+
*/
|
|
85
|
+
load(locator: ResourceLocator): Promise<Texture | null>;
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { TextureMeta as a, TextureLoader as i, AtlasResolverLike as n, TextureResolutionError as o, Texture as r, AnimatedTexture as t };
|