UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

1 lines 83.5 kB
"use strict";(self.webpackChunkmctools_app=self.webpackChunkmctools_app||[]).push([[956],{49956:(e,t,i)=>{i.d(t,{ContentGenerator:()=>Ze});var a=i(96997),r=i(44171),n=i(51044);function o(e){const t=e.startsWith("#")?e.slice(1):e;return{r:parseInt(t.slice(0,2),16)||128,g:parseInt(t.slice(2,4),16)||128,b:parseInt(t.slice(4,6),16)||128}}function s(e,t,i,a,r){const n=new Uint8Array(e*t*4),s=o(i),c=o(a);for(let i=0;i<t;i++)for(let t=0;t<e;t++){const a=4*(i*e+t),o=Math.floor(t/r)%2==Math.floor(i/r)%2?c:s;n[a]=o.r,n[a+1]=o.g,n[a+2]=o.b,n[a+3]=255}return n}class c{static createSolidColorPng(e,t,i){const{r:a,g:n,b:s}=o(i),c=r.A.createSolidColor(e,t,a,n,s,255);return r.A.encodeToPngSync(c.pixels,c.width,c.height)}static createCheckerboardPng(e,t,i,a,n=8){const o=s(e,t,i,a,n);return r.A.encodeToPngSync(o,e,t)||(64===e&&64===t?c.getPlaceholderTexture("entity"):16===e&&16===t?c.getPlaceholderTexture("block"):c.getPlaceholderTexture("entity"))}static async createCheckerboardPngAsync(e,t,i,a,n=8){const o=s(e,t,i,a,n),c=r.A.encodeToPngSync(o,e,t);if(c)return c;return await r.A.encodeToPngBrowser(o,e,t)||void 0}static getPlaceholderTexture(e){let t;switch(e){case"entity":default:t="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAeElEQVR4AeXBAQEAMAyDMI7yOt+FkLxtR5jESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzESZzEfbNUAv/+T/uYAAAAAElFTkSuQmCC";break;case"block":t="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAALElEQVR4AaXBAQEAMAyDMI7yOt9FkLxtRyCRRBJJJJFEEkkkkUQSSSSRRBJ9YpoCnyiF6V0AAAAASUVORK5CYII=";break;case"item":t="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAALUlEQVR4AaXBAQEAMAyDMI5/EXW6iyB5245AIokkkkgiiSSSSCKJJJJIIokk+ufpAv+MBfj8AAAAAElFTkSuQmCC"}return n.A.base64ToUint8Array(t)}}const l={sword:"0000000000000111000000000000133100000000000132310000000000132310000000000132210000000000132210000011000122210000001110122210000000011121210000000001111210000000000011110000000000011111100000000012101111000000111100001100000011100000000000001110000000000000",tool:"0000000000000000000000000230000000000000233000000000000233000000000000023000000000000002130003300000000231203320000000022213320000000022222220000000022200000000000023200000000000023200000000000023200000000000023200000000000022200000000000002200000000000000",helmet:"0000000000000000000000000000000000000000000000000000011111100000000012222221000000012333222210000001233222221000000122111122100000012111111210000001211111121000000121111112100000001100001100000000000000000000000000000000000000000000000000000000000000000000",chestplate:"0000000000000000000000000000000001111100001111100133210000133210013222100123221001222321122222100122233332222210011233322222211000013322222210000001232222221000000122222222100000012222222210000001222222221000000012222221000000000111111000000000000000000000",leggings:"0000000000000000000000000000000000001111111100000001333332221000000133222222100000013222222210000001322112221000000122100122100000012210012210000001221001221000000122100122100000012210012210000001221001221000000111100111100000000000000000000000000000000000",boots:"0000000000000000000000000000000000000000000000000000111001110000000133100133100000013310013210000001321001221000000122100122100000012210012210000012221001222100012222100122221001222110011222100111100000011110000000000000000000000000000000000000000000000000",food:"0000002200000000000002332000000000002322322200000002232332332000002332332322320002322322232332000232232222332200022332222322200000222222232332000002332332322200002322322232220000232232332320000002332322320000000022232220000000000002200000000000000000000000"},m={sword:"sword",pickaxe:"tool",axe:"tool",shovel:"tool",armor_helmet:"helmet",armor_chestplate:"chestplate",armor_leggings:"leggings",armor_boots:"boots",food:"food"};function d(e){return Math.max(0,Math.min(255,Math.round(e)))}class p{}class u{}class _{}class f{static entityTraits=new Map;static blockTraits=new Map;static itemTraits=new Map;static registerEntityTrait(e){this.entityTraits.set(e.id,e)}static registerBlockTrait(e){this.blockTraits.set(e.id,e)}static registerItemTrait(e){this.itemTraits.set(e.id,e)}static getEntityTrait(e){return this.entityTraits.get(e)}static getBlockTrait(e){return this.blockTraits.get(e)}static getItemTrait(e){return this.itemTraits.get(e)}static getAllEntityTraits(){return Array.from(this.entityTraits.values())}static getAllBlockTraits(){return Array.from(this.blockTraits.values())}static getAllItemTraits(){return Array.from(this.itemTraits.values())}static getEntityTraitsByCategory(e){return this.getAllEntityTraits().filter(t=>t.getData().category===e)}static getBlockTraitsByCategory(e){return this.getAllBlockTraits().filter(t=>t.getData().category===e)}static getItemTraitsByCategory(e){return this.getAllItemTraits().filter(t=>t.getData().category===e)}}class g extends p{get id(){return"humanoid"}getData(e){return{id:"humanoid",displayName:"Humanoid",description:"Bipedal humanoid body with arms and legs",category:"body_type",components:{"minecraft:can_climb":{},"minecraft:jump.static":{},"minecraft:movement.basic":{},"minecraft:navigation.walk":{can_path_over_water:!0,avoid_damage_blocks:!0}},resources:{animations:{walk:"animation.humanoid.walk",idle:"animation.humanoid.idle",attack:"animation.humanoid.attack"}}}}}class h extends p{get id(){return"quadruped"}getData(e){return{id:"quadruped",displayName:"Quadruped",description:"Four-legged animal body",category:"body_type",components:{"minecraft:can_climb":{},"minecraft:jump.static":{},"minecraft:movement.basic":{},"minecraft:navigation.walk":{can_path_over_water:!0,avoid_damage_blocks:!0}},resources:{animations:{walk:"animation.quadruped.walk",idle:"animation.quadruped.idle"}}}}}class y extends p{get id(){return"quadruped_small"}getData(e){return{id:"quadruped_small",displayName:"Small Quadruped",description:"Small four-legged animal (rabbit, cat size)",category:"body_type",components:{"minecraft:can_climb":{},"minecraft:jump.static":{jump_power:.6},"minecraft:movement.basic":{},"minecraft:navigation.walk":{can_path_over_water:!0,avoid_damage_blocks:!0},"minecraft:scale":{value:.5}}}}}class b extends p{get id(){return"flying"}getData(e){return{id:"flying",displayName:"Flying",description:"Can fly through the air",category:"body_type",components:{"minecraft:navigation.fly":{can_path_over_water:!0,can_path_over_lava:!1},"minecraft:can_fly":{},"minecraft:movement.fly":{}},resources:{animations:{fly:"animation.flying.fly",glide:"animation.flying.glide"}}}}}class v extends p{get id(){return"aquatic"}getData(e){return{id:"aquatic",displayName:"Aquatic",description:"Lives in water, can swim",category:"body_type",components:{"minecraft:navigation.swim":{can_path_over_water:!1,can_swim:!0,avoid_damage_blocks:!0},"minecraft:underwater_movement":{value:.3},"minecraft:movement.sway":{sway_amplitude:0},"minecraft:breathable":{total_supply:15,suffocate_time:0,breathes_water:!0,breathes_air:!1}}}}}class w extends p{get id(){return"arthropod"}getData(e){return{id:"arthropod",displayName:"Arthropod",description:"Insect or spider-like body",category:"body_type",components:{"minecraft:can_climb":{},"minecraft:mark_variant":{value:0},"minecraft:movement.basic":{},"minecraft:navigation.walk":{can_path_over_water:!0,avoid_damage_blocks:!0,can_walk_in_lava:!1}}}}}class k extends p{get id(){return"slime"}getData(e){return{id:"slime",displayName:"Slime",description:"Bouncy cube body",category:"body_type",components:{"minecraft:movement.sway":{sway_amplitude:0},"minecraft:movement.jump":{},"minecraft:jump.static":{},"minecraft:navigation.walk":{avoid_damage_blocks:!0}},resources:{animations:{move:"animation.slime.move"}}}}}class x extends p{get id(){return"hostile"}getData(e){return{id:"hostile",displayName:"Hostile",description:"Attacks players on sight",category:"behavior",components:{"minecraft:behavior.hurt_by_target":{priority:1},"minecraft:attack":{damage:e?.attackDamage??3}},componentGroups:{hostile_calm:{"minecraft:behavior.random_stroll":{priority:6,speed_multiplier:1},"minecraft:behavior.random_look_around":{priority:7}},hostile_angry:{"minecraft:behavior.nearest_attackable_target":{priority:2,must_see:!0,reselect_targets:!0,entity_types:[{filters:{test:"is_family",subject:"other",value:"player"},max_dist:35}]}}},events:{become_hostile:{add:{component_groups:["hostile_angry"]}},calm_down:{remove:{component_groups:["hostile_angry"]},add:{component_groups:["hostile_calm"]}}},spawnEvent:{add:{component_groups:["hostile_angry"]}}}}}class T extends p{get id(){return"passive"}getData(e){return{id:"passive",displayName:"Passive",description:"Flees when attacked, does not fight back",category:"behavior",components:{"minecraft:behavior.panic":{priority:1,speed_multiplier:1.25},"minecraft:behavior.random_stroll":{priority:6,speed_multiplier:1},"minecraft:behavior.random_look_around":{priority:7},"minecraft:behavior.look_at_player":{priority:8,look_distance:6}}}}}class z extends p{get id(){return"neutral"}getData(e){return{id:"neutral",displayName:"Neutral",description:"Only attacks when provoked",category:"behavior",components:{"minecraft:behavior.random_stroll":{priority:6,speed_multiplier:1},"minecraft:behavior.random_look_around":{priority:7}},componentGroups:{neutral_calm:{},neutral_angry:{"minecraft:behavior.hurt_by_target":{priority:1,alert_same_type:!0},"minecraft:behavior.nearest_attackable_target":{priority:2,entity_types:[{filters:{all_of:[{test:"is_family",subject:"other",value:"player"},{test:"has_component",subject:"self",value:"minecraft:angry"}]}}]},"minecraft:angry":{duration:25,broadcast_anger:!0,broadcast_range:20,calm_event:{event:"on_calm"}}}},events:{"minecraft:on_hurt":{add:{component_groups:["neutral_angry"]}},on_calm:{remove:{component_groups:["neutral_angry"]},add:{component_groups:["neutral_calm"]}}},spawnEvent:{add:{component_groups:["neutral_calm"]}}}}}class A extends p{get id(){return"boss"}getData(e){const t=e?.bossName??"Boss",i=e?.phases??3,a={},r={};for(let e=1;e<=i;e++)a[`phase_${e}`]={"minecraft:scale":{value:1+.1*(e-1)},"minecraft:movement":{value:.25+.05*(e-1)}},e<i&&(r[`enter_phase_${e+1}`]={remove:{component_groups:[`phase_${e}`]},add:{component_groups:[`phase_${e+1}`]}});return{id:"boss",displayName:"Boss",description:"Boss mob with health bar and phases",category:"behavior",components:{"minecraft:boss":{should_darken_sky:!0,hud_range:55,name:t},"minecraft:knockback_resistance":{value:1}},componentGroups:a,events:r,spawnEvent:{add:{component_groups:["phase_1"]}}}}}class $ extends p{get id(){return"wanders"}getData(e){return{id:"wanders",displayName:"Wanders",description:"Randomly wanders around",category:"behavior",components:{"minecraft:behavior.random_stroll":{priority:6,speed_multiplier:e?.speed??1},"minecraft:behavior.random_look_around":{priority:8},"minecraft:behavior.look_at_player":{priority:7,look_distance:6,probability:.02}}}}}class E extends p{get id(){return"flees_daylight"}getData(e){return{id:"flees_daylight",displayName:"Flees Daylight",description:"Seeks shelter from sunlight",category:"behavior",components:{"minecraft:behavior.flee_sun":{priority:2,speed_multiplier:e?.speed??1},"minecraft:navigation.walk":{can_path_over_water:!0,avoid_sun:!0}}}}}class S extends p{get id(){return"melee_attacker"}getData(e){const t=e?.damage??3;return{id:"melee_attacker",displayName:"Melee Attacker",description:"Attacks with close-range melee strikes",category:"combat",components:{"minecraft:behavior.melee_attack":{priority:3,speed_multiplier:e?.attackSpeed??1.2,track_target:!0},"minecraft:attack":{damage:t}},resources:{animations:{attack:"animation.humanoid.attack"}}}}}class C extends p{get id(){return"ranged_attacker"}getData(e){const t=e?.projectile??"minecraft:arrow";return{id:"ranged_attacker",displayName:"Ranged Attacker",description:"Attacks with ranged projectiles",category:"combat",components:{"minecraft:behavior.ranged_attack":{priority:3,attack_interval_min:1,attack_interval_max:3,attack_radius:e?.attackRadius??15},"minecraft:shooter":{def:t}}}}}class j extends p{get id(){return"exploder"}getData(e){const t=e?.power??3;return{id:"exploder",displayName:"Exploder",description:"Explodes when near its target",category:"combat",components:{},componentGroups:{exploder_idle:{"minecraft:behavior.nearest_attackable_target":{priority:1,entity_types:[{filters:{test:"is_family",subject:"other",value:"player"},max_dist:25}]}},exploder_fuse_lit:{"minecraft:explode":{fuse_length:e?.fuseTime??1.5,fuse_lit:!0,power:t,causes_fire:e?.causesFire??!1},"minecraft:behavior.melee_attack":{priority:2,speed_multiplier:1.5,track_target:!0,reach_multiplier:0}}},events:{start_exploding:{remove:{component_groups:["exploder_idle"]},add:{component_groups:["exploder_fuse_lit"]}},stop_exploding:{remove:{component_groups:["exploder_fuse_lit"]},add:{component_groups:["exploder_idle"]}}},spawnEvent:{add:{component_groups:["exploder_idle"]}},resources:{sounds:{fuse:"mob.creeper.say"}}}}}class D extends p{get id(){return"tameable"}getData(e){const t=e?.tameItems??["bone"];return{id:"tameable",displayName:"Tameable",description:"Can be tamed by the player with specific items",category:"interaction",components:{"minecraft:tameable":{probability:e?.tameChance??.33,tame_items:t,tame_event:{event:"on_tame",target:"self"}}},componentGroups:{wild:{"minecraft:behavior.avoid_mob_type":{priority:4,entity_types:[{filters:{test:"is_family",subject:"other",value:"player"},max_dist:8,walk_speed_multiplier:1,sprint_speed_multiplier:1}]}},tamed:{"minecraft:is_tamed":{},"minecraft:behavior.follow_owner":{priority:4,speed_multiplier:1,start_distance:10,stop_distance:2},"minecraft:behavior.owner_hurt_by_target":{priority:1},"minecraft:behavior.owner_hurt_target":{priority:2},"minecraft:sittable":{},"minecraft:behavior.stay_while_sitting":{priority:3}}},events:{on_tame:{remove:{component_groups:["wild"]},add:{component_groups:["tamed"]}}},spawnEvent:{add:{component_groups:["wild"]}}}}}class B extends p{get id(){return"rideable"}getData(e){const t=e?.seatCount??1,i=e?.controllable??!0,a=e?.requiresSaddle??!0,r={"minecraft:rideable":{seat_count:t,family_types:["player"],interact_text:"action.interact.ride.horse",seats:[{position:[0,1.1,-.2]}]}};i&&(r["minecraft:input_ground_controlled"]={});const n={},o={};return a?(n.unsaddled={},n.saddled={"minecraft:is_saddled":{},...r},o.on_saddle={remove:{component_groups:["unsaddled"]},add:{component_groups:["saddled"]}},{id:"rideable",displayName:"Rideable",description:"Can be ridden by the player",category:"interaction",components:{"minecraft:equippable":{slots:[{slot:0,item:"saddle",accepted_items:["saddle"],on_equip:{event:"on_saddle"}}]}},componentGroups:n,events:o,spawnEvent:{add:{component_groups:["unsaddled"]}}}):{id:"rideable",displayName:"Rideable",description:"Can be ridden by the player",category:"interaction",components:r}}}class M extends p{get id(){return"breedable"}getData(e){return{id:"breedable",displayName:"Breedable",description:"Can be bred to produce offspring",category:"interaction",components:{"minecraft:breedable":{require_tame:!1,breeds_with:{mate_type:"self",baby_type:"self"},breed_items:e?.breedItems??["wheat"]}}}}}class q extends p{get id(){return"leasable"}getData(e){return{id:"leasable",displayName:"Leasable",description:"Can be leashed with a lead",category:"interaction",components:{"minecraft:leashable":{soft_distance:4,hard_distance:6,max_distance:10}}}}}class I extends p{get id(){return"trader"}getData(e){return{id:"trader",displayName:"Trader",description:"Can trade with the player",category:"interaction",components:{"minecraft:trade_table":{display_name:"entity.trader.name",table:"trading/custom_trades.json"},"minecraft:economy_trade_table":{display_name:"entity.trader.name",table:"trading/custom_trades.json",new_screen:!0}}}}}class N extends p{get id(){return"undead"}getData(e){return{id:"undead",displayName:"Undead",description:"Takes damage from healing, heals from damage potions",category:"special",components:{"minecraft:type_family":{family:["undead","monster"]},"minecraft:burns_in_daylight":{}}}}}class P extends p{get id(){return"baby_variant"}getData(e){const t=e?.growUpTime??1200;return{id:"baby_variant",displayName:"Baby Variant",description:"Has baby/adult variants",category:"special",components:{"minecraft:ageable":{duration:t,grow_up:{event:"grow_up",target:"self"}}},componentGroups:{baby:{"minecraft:is_baby":{},"minecraft:scale":{value:.5},"minecraft:ageable":{duration:t,grow_up:{event:"grow_up",target:"self"}}},adult:{"minecraft:scale":{value:1}}},events:{grow_up:{remove:{component_groups:["baby"]},add:{component_groups:["adult"]}},spawn_baby:{add:{component_groups:["baby"]}}},spawnEvent:{randomize:[{weight:95,add:{component_groups:["adult"]}},{weight:5,add:{component_groups:["baby"]}}]}}}}class R extends p{get id(){return"teleporter"}getData(e){return{id:"teleporter",displayName:"Teleporter",description:"Can teleport",category:"special",components:{"minecraft:teleport":{random_teleports:!0,max_random_teleport_time:30,random_teleport_cube:[32,16,32],target_distance:16,target_teleport_chance:e?.teleportChance??.01,light_teleport_chance:.01}}}}}class F extends u{get id(){return"stone_material"}getData(e){return{id:"stone_material",displayName:"Stone Material",description:"Standard stone properties",category:"material",components:{"minecraft:destructible_by_mining":{seconds_to_destroy:e?.hardness??1.5},"minecraft:destructible_by_explosion":{explosion_resistance:6},"minecraft:map_color":"#808080"}}}}class L extends u{get id(){return"wood_material"}getData(e){return{id:"wood_material",displayName:"Wood Material",description:"Standard wood properties",category:"material",components:{"minecraft:destructible_by_mining":{seconds_to_destroy:e?.hardness??2},"minecraft:destructible_by_explosion":{explosion_resistance:3},"minecraft:flammable":{catch_chance_modifier:5,destroy_chance_modifier:20},"minecraft:map_color":"#8B4513"}}}}class Z extends u{get id(){return"metal_material"}getData(e){return{id:"metal_material",displayName:"Metal Material",description:"Strong and blast resistant",category:"material",components:{"minecraft:destructible_by_mining":{seconds_to_destroy:e?.hardness??5},"minecraft:destructible_by_explosion":{explosion_resistance:6},"minecraft:map_color":"#C0C0C0"}}}}class U extends u{get id(){return"soft_material"}getData(e){return{id:"soft_material",displayName:"Soft Material",description:"Easily breakable",category:"material",components:{"minecraft:destructible_by_mining":{seconds_to_destroy:e?.hardness??.5},"minecraft:destructible_by_explosion":{explosion_resistance:.5},"minecraft:map_color":"#D2B48C"}}}}class O extends u{get id(){return"door"}getData(e){return{id:"door",displayName:"Door",description:"Can be opened and closed",category:"interactive",components:{"minecraft:on_interact":{event:"toggle_open"},"minecraft:geometry":"geometry.door","minecraft:collision_box":{origin:[-8,0,-2],size:[16,32,4]},"minecraft:selection_box":{origin:[-8,0,-2],size:[16,32,4]}}}}}class G extends u{get id(){return"trapdoor"}getData(e){return{id:"trapdoor",displayName:"Trapdoor",description:"Horizontal door",category:"interactive",components:{"minecraft:on_interact":{event:"toggle_open"},"minecraft:geometry":"geometry.trapdoor","minecraft:collision_box":{origin:[-8,0,-8],size:[16,3,16]},"minecraft:selection_box":{origin:[-8,0,-8],size:[16,3,16]}}}}}class H extends u{get id(){return"button"}getData(e){return{id:"button",displayName:"Button",description:"Momentary switch",category:"interactive",components:{"minecraft:on_interact":{event:"pressed"},"minecraft:geometry":"geometry.button","minecraft:collision_box":!1,"minecraft:selection_box":{origin:[-2,0,-3],size:[4,2,6]}}}}}class Q extends u{get id(){return"lever"}getData(e){return{id:"lever",displayName:"Lever",description:"Toggle switch",category:"interactive",components:{"minecraft:on_interact":{event:"toggle"},"minecraft:geometry":"geometry.lever","minecraft:collision_box":!1,"minecraft:selection_box":{origin:[-3,0,-2],size:[6,10,4]}}}}}class J extends u{get id(){return"crafting_station"}getData(e){return{id:"crafting_station",displayName:"Crafting Station",description:"Allows crafting",category:"interactive",components:{"minecraft:crafting_table":{crafting_tags:e?.craftingTags??["crafting_table"],table_name:"container.crafting"}}}}}class K extends u{get id(){return"redstone_signal"}getData(e){return{id:"redstone_signal",displayName:"Redstone Signal",description:"Outputs redstone power",category:"interactive",components:{"minecraft:redstone_producer":{power:e?.redstonePower??15,connected_faces:["down","up","north","south","east","west"]},"minecraft:redstone_conductivity":{redstone_conductor:!0,allows_wire_to_step_down:!0}}}}}class V extends u{get id(){return"rotatable_horizontal"}getData(e){return{id:"rotatable_horizontal",displayName:"Rotatable Horizontal",description:"Can be placed in 4 directions",category:"placement",components:{"minecraft:transformation":{rotation:[0,0,0]}},properties:{"custom:direction":[0,1,2,3]},permutations:[{condition:"q.block_state('custom:direction') == 0",components:{"minecraft:transformation":{rotation:[0,0,0]}}},{condition:"q.block_state('custom:direction') == 1",components:{"minecraft:transformation":{rotation:[0,90,0]}}},{condition:"q.block_state('custom:direction') == 2",components:{"minecraft:transformation":{rotation:[0,180,0]}}},{condition:"q.block_state('custom:direction') == 3",components:{"minecraft:transformation":{rotation:[0,270,0]}}}]}}}class W extends u{get id(){return"rotatable_all"}getData(e){return{id:"rotatable_all",displayName:"Rotatable All",description:"Can be placed in 6 directions",category:"placement",components:{"minecraft:transformation":{rotation:[0,0,0]}},properties:{"custom:facing":["up","down","north","south","east","west"]},permutations:[{condition:"q.block_state('custom:facing') == 'up'",components:{"minecraft:transformation":{rotation:[0,0,0]}}},{condition:"q.block_state('custom:facing') == 'down'",components:{"minecraft:transformation":{rotation:[180,0,0]}}},{condition:"q.block_state('custom:facing') == 'north'",components:{"minecraft:transformation":{rotation:[90,0,0]}}},{condition:"q.block_state('custom:facing') == 'south'",components:{"minecraft:transformation":{rotation:[-90,0,0]}}},{condition:"q.block_state('custom:facing') == 'east'",components:{"minecraft:transformation":{rotation:[0,0,-90]}}},{condition:"q.block_state('custom:facing') == 'west'",components:{"minecraft:transformation":{rotation:[0,0,90]}}}]}}}const Y={format_version:"1.21.40","minecraft:geometry":[{description:{identifier:"geometry.slab",texture_width:16,texture_height:16},bones:[{name:"body",pivot:[0,0,0],cubes:[{origin:[-8,0,-8],size:[16,8,16],uv:{north:{uv:[0,8],uv_size:[16,8]},south:{uv:[0,8],uv_size:[16,8]},east:{uv:[0,8],uv_size:[16,8]},west:{uv:[0,8],uv_size:[16,8]},up:{uv:[0,0],uv_size:[16,16]},down:{uv:[0,0],uv_size:[16,16]}}}]}]}]};class X extends u{get id(){return"slab"}getData(e){return{id:"slab",displayName:"Slab",description:"Half-height block with top/bottom placement",category:"placement",components:{"minecraft:geometry":"geometry.slab","minecraft:collision_box":{origin:[-8,0,-8],size:[16,8,16]},"minecraft:selection_box":{origin:[-8,0,-8],size:[16,8,16]}},minecraftTraits:{"minecraft:placement_position":{enabled_states:["minecraft:vertical_half"]}},geometryFiles:[{path:"models/blocks/slab.geo.json",content:Y}],permutations:[{condition:"q.block_state('minecraft:vertical_half') == 'top'",components:{"minecraft:transformation":{translation:[0,.5,0]}}}]}}}const ee={format_version:"1.21.40","minecraft:geometry":[{description:{identifier:"geometry.stairs",texture_width:16,texture_height:16},bones:[{name:"body",pivot:[0,0,0],cubes:[{origin:[-8,0,-8],size:[16,8,16],uv:{north:{uv:[0,8],uv_size:[16,8]},south:{uv:[0,8],uv_size:[16,8]},east:{uv:[0,8],uv_size:[16,8]},west:{uv:[0,8],uv_size:[16,8]},up:{uv:[0,0],uv_size:[16,16]},down:{uv:[0,0],uv_size:[16,16]}}},{origin:[-8,8,0],size:[16,8,8],uv:{north:{uv:[0,0],uv_size:[16,8]},south:{uv:[0,0],uv_size:[16,8]},east:{uv:[8,0],uv_size:[8,8]},west:{uv:[0,0],uv_size:[8,8]},up:{uv:[0,0],uv_size:[16,8]},down:{uv:[0,0],uv_size:[16,8]}}}]}]}]};class te extends u{get id(){return"stairs"}getData(e){return{id:"stairs",displayName:"Stairs",description:"Stair-shaped block with directional placement and connections",category:"placement",components:{"minecraft:geometry":"geometry.stairs","minecraft:transformation":{rotation:[0,0,0]}},properties:{"custom:direction":[0,1,2,3]},minecraftTraits:{"minecraft:placement_position":{enabled_states:["minecraft:vertical_half"]},"minecraft:connection":{enabled_states:["minecraft:cardinal_connections"]}},geometryFiles:[{path:"models/blocks/stairs.geo.json",content:ee}],permutations:[{condition:"q.block_state('custom:direction') == 0 && q.block_state('minecraft:vertical_half') == 'bottom'",components:{"minecraft:transformation":{rotation:[0,0,0]}}},{condition:"q.block_state('custom:direction') == 1 && q.block_state('minecraft:vertical_half') == 'bottom'",components:{"minecraft:transformation":{rotation:[0,90,0]}}},{condition:"q.block_state('custom:direction') == 2 && q.block_state('minecraft:vertical_half') == 'bottom'",components:{"minecraft:transformation":{rotation:[0,180,0]}}},{condition:"q.block_state('custom:direction') == 3 && q.block_state('minecraft:vertical_half') == 'bottom'",components:{"minecraft:transformation":{rotation:[0,270,0]}}},{condition:"q.block_state('custom:direction') == 0 && q.block_state('minecraft:vertical_half') == 'top'",components:{"minecraft:transformation":{rotation:[180,0,0]}}},{condition:"q.block_state('custom:direction') == 1 && q.block_state('minecraft:vertical_half') == 'top'",components:{"minecraft:transformation":{rotation:[180,90,0]}}},{condition:"q.block_state('custom:direction') == 2 && q.block_state('minecraft:vertical_half') == 'top'",components:{"minecraft:transformation":{rotation:[180,180,0]}}},{condition:"q.block_state('custom:direction') == 3 && q.block_state('minecraft:vertical_half') == 'top'",components:{"minecraft:transformation":{rotation:[180,270,0]}}}]}}}const ie={format_version:"1.21.40","minecraft:geometry":[{description:{identifier:"geometry.fence",texture_width:16,texture_height:16},bones:[{name:"post",pivot:[0,0,0],cubes:[{origin:[-2,0,-2],size:[4,16,4],uv:{north:{uv:[6,0],uv_size:[4,16]},south:{uv:[6,0],uv_size:[4,16]},east:{uv:[6,0],uv_size:[4,16]},west:{uv:[6,0],uv_size:[4,16]},up:{uv:[6,6],uv_size:[4,4]},down:{uv:[6,6],uv_size:[4,4]}}}]},{name:"arm_north",pivot:[0,0,0],cubes:[{origin:[-1,6,-8],size:[2,3,6],uv:{north:{uv:[7,0],uv_size:[2,3]},south:{uv:[7,0],uv_size:[2,3]},east:{uv:[0,0],uv_size:[6,3]},west:{uv:[0,0],uv_size:[6,3]},up:{uv:[7,0],uv_size:[2,6]},down:{uv:[7,0],uv_size:[2,6]}}},{origin:[-1,12,-8],size:[2,3,6],uv:{north:{uv:[7,0],uv_size:[2,3]},south:{uv:[7,0],uv_size:[2,3]},east:{uv:[0,0],uv_size:[6,3]},west:{uv:[0,0],uv_size:[6,3]},up:{uv:[7,0],uv_size:[2,6]},down:{uv:[7,0],uv_size:[2,6]}}}]},{name:"arm_south",pivot:[0,0,0],cubes:[{origin:[-1,6,2],size:[2,3,6],uv:{north:{uv:[7,0],uv_size:[2,3]},south:{uv:[7,0],uv_size:[2,3]},east:{uv:[0,0],uv_size:[6,3]},west:{uv:[0,0],uv_size:[6,3]},up:{uv:[7,0],uv_size:[2,6]},down:{uv:[7,0],uv_size:[2,6]}}},{origin:[-1,12,2],size:[2,3,6],uv:{north:{uv:[7,0],uv_size:[2,3]},south:{uv:[7,0],uv_size:[2,3]},east:{uv:[0,0],uv_size:[6,3]},west:{uv:[0,0],uv_size:[6,3]},up:{uv:[7,0],uv_size:[2,6]},down:{uv:[7,0],uv_size:[2,6]}}}]},{name:"arm_east",pivot:[0,0,0],cubes:[{origin:[2,6,-1],size:[6,3,2],uv:{north:{uv:[0,0],uv_size:[6,3]},south:{uv:[0,0],uv_size:[6,3]},east:{uv:[7,0],uv_size:[2,3]},west:{uv:[7,0],uv_size:[2,3]},up:{uv:[0,7],uv_size:[6,2]},down:{uv:[0,7],uv_size:[6,2]}}},{origin:[2,12,-1],size:[6,3,2],uv:{north:{uv:[0,0],uv_size:[6,3]},south:{uv:[0,0],uv_size:[6,3]},east:{uv:[7,0],uv_size:[2,3]},west:{uv:[7,0],uv_size:[2,3]},up:{uv:[0,7],uv_size:[6,2]},down:{uv:[0,7],uv_size:[6,2]}}}]},{name:"arm_west",pivot:[0,0,0],cubes:[{origin:[-8,6,-1],size:[6,3,2],uv:{north:{uv:[0,0],uv_size:[6,3]},south:{uv:[0,0],uv_size:[6,3]},east:{uv:[7,0],uv_size:[2,3]},west:{uv:[7,0],uv_size:[2,3]},up:{uv:[0,7],uv_size:[6,2]},down:{uv:[0,7],uv_size:[6,2]}}},{origin:[-8,12,-1],size:[6,3,2],uv:{north:{uv:[0,0],uv_size:[6,3]},south:{uv:[0,0],uv_size:[6,3]},east:{uv:[7,0],uv_size:[2,3]},west:{uv:[7,0],uv_size:[2,3]},up:{uv:[0,7],uv_size:[6,2]},down:{uv:[0,7],uv_size:[6,2]}}}]}]}]};class ae extends u{get id(){return"fence"}getData(e){return{id:"fence",displayName:"Fence",description:"Fence post that connects to adjacent blocks",category:"shape",components:{"minecraft:geometry":{identifier:"geometry.fence",bone_visibility:{arm_north:"q.block_state('minecraft:north_connection') != 'none'",arm_south:"q.block_state('minecraft:south_connection') != 'none'",arm_east:"q.block_state('minecraft:east_connection') != 'none'",arm_west:"q.block_state('minecraft:west_connection') != 'none'"}},"minecraft:collision_box":{origin:[-2,0,-2],size:[4,24,4]},"minecraft:selection_box":{origin:[-2,0,-2],size:[4,16,4]},"minecraft:support":{shape:"fence"},"minecraft:connection_rule":{accepts_connections_from:"all",enabled_directions:["north","south","east","west"]}},minecraftTraits:{"minecraft:connection":{enabled_states:["minecraft:cardinal_connections"]}},geometryFiles:[{path:"models/blocks/fence.geo.json",content:ie}]}}}class re extends u{get id(){return"light_source"}getData(e){return{id:"light_source",displayName:"Light Source",description:"Emits light",category:"special",components:{"minecraft:light_emission":e?.lightLevel??15}}}}class ne extends u{get id(){return"variable_light"}getData(e){const t=e?.maxLightLevel??15;return{id:"variable_light",displayName:"Variable Light",description:"Light level can change",category:"special",components:{"minecraft:light_emission":0},properties:{"custom:light_level":Array.from({length:t+1},(e,t)=>t)},permutations:Array.from({length:t+1},(e,t)=>({condition:`q.block_state('custom:light_level') == ${t}`,components:{"minecraft:light_emission":t}}))}}}class oe extends u{get id(){return"passable"}getData(e){return{id:"passable",displayName:"Passable",description:"Entities can walk through",category:"special",components:{"minecraft:collision_box":!1}}}}class se extends u{get id(){return"transparent"}getData(e){return{id:"transparent",displayName:"Transparent",description:"Allows light through",category:"special",components:{"minecraft:light_dampening":0}}}}class ce extends u{get id(){return"gravity_affected"}getData(e){return{id:"gravity_affected",displayName:"Gravity Affected",description:"Falls when unsupported",category:"special",components:{"minecraft:on_placed":{event:"check_fall"}}}}}class le extends u{get id(){return"crop"}getData(e){const t=e?.growthStages??7;return{id:"crop",displayName:"Crop",description:"Can grow over time",category:"special",components:{"minecraft:collision_box":!1,"minecraft:tick":{interval_range:[10,20],looping:!0},"minecraft:random_ticking":{on_tick:{event:"grow"}}},properties:{"custom:growth_stage":Array.from({length:t+1},(e,t)=>t)},permutations:Array.from({length:t+1},(e,t)=>({condition:`q.block_state('custom:growth_stage') == ${t}`,components:{"minecraft:geometry":`geometry.crop_stage_${t}`}}))}}}class me extends u{get id(){return"flammable"}getData(e){return{id:"flammable",displayName:"Flammable",description:"Can catch fire and burn",category:"special",components:{"minecraft:flammable":{catch_chance_modifier:e?.catchChanceModifier??5,destroy_chance_modifier:e?.destroyChanceModifier??20}}}}}class de extends u{get id(){return"explosion_resistant"}getData(e){return{id:"explosion_resistant",displayName:"Explosion Resistant",description:"Highly resistant to explosions",category:"special",components:{"minecraft:destructible_by_explosion":{explosion_resistance:e?.explosionResistance??1200}}}}}class pe extends u{get id(){return"slippery"}getData(e){return{id:"slippery",displayName:"Slippery",description:"Low-friction surface, entities slide",category:"special",components:{"minecraft:friction":e?.friction??.1}}}}class ue extends _{get id(){return"sword"}getData(e){return{id:"sword",displayName:"Sword",description:"Melee weapon",category:"tool",components:{"minecraft:damage":{value:e?.damage??5},"minecraft:durability":{max_durability:e?.durability??250},"minecraft:hand_equipped":!0,"minecraft:enchantable":{value:10,slot:"sword"},"minecraft:can_destroy_in_creative":!1}}}}class _e extends _{get id(){return"pickaxe"}getData(e){const t=e?.miningSpeed??1.2;return{id:"pickaxe",displayName:"Pickaxe",description:"Mining tool",category:"tool",components:{"minecraft:durability":{max_durability:e?.durability??250},"minecraft:hand_equipped":!0,"minecraft:digger":{use_efficiency:!0,destroy_speeds:[{block:{tags:"q.any_tag('stone', 'metal', 'diamond_pick_diggable')"},speed:t}]},"minecraft:enchantable":{value:10,slot:"pickaxe"}}}}}class fe extends _{get id(){return"axe"}getData(e){const t=e?.miningSpeed??1.2;return{id:"axe",displayName:"Axe",description:"Chopping tool",category:"tool",components:{"minecraft:durability":{max_durability:e?.durability??250},"minecraft:hand_equipped":!0,"minecraft:digger":{use_efficiency:!0,destroy_speeds:[{block:{tags:"q.any_tag('wood', 'log')"},speed:t}]},"minecraft:enchantable":{value:10,slot:"axe"}}}}}class ge extends _{get id(){return"shovel"}getData(e){const t=e?.miningSpeed??1.2;return{id:"shovel",displayName:"Shovel",description:"Digging tool",category:"tool",components:{"minecraft:durability":{max_durability:e?.durability??250},"minecraft:hand_equipped":!0,"minecraft:digger":{use_efficiency:!0,destroy_speeds:[{block:{tags:"q.any_tag('dirt', 'sand', 'gravel', 'soul_sand', 'snow')"},speed:t}]},"minecraft:enchantable":{value:10,slot:"shovel"}}}}}class he extends _{get id(){return"hoe"}getData(e){return{id:"hoe",displayName:"Hoe",description:"Farming tool",category:"tool",components:{"minecraft:durability":{max_durability:e?.durability??250},"minecraft:hand_equipped":!0,"minecraft:enchantable":{value:10,slot:"hoe"}}}}}class ye extends _{get id(){return"helmet"}getData(e){return{id:"helmet",displayName:"Helmet",description:"Head armor",category:"armor",components:{"minecraft:armor":{protection:e?.protection??2},"minecraft:durability":{max_durability:e?.durability??165},"minecraft:wearable":{slot:"slot.armor.head",dispensable:!0},"minecraft:enchantable":{value:10,slot:"armor_head"}}}}}class be extends _{get id(){return"chestplate"}getData(e){return{id:"chestplate",displayName:"Chestplate",description:"Chest armor",category:"armor",components:{"minecraft:armor":{protection:e?.protection??6},"minecraft:durability":{max_durability:e?.durability??240},"minecraft:wearable":{slot:"slot.armor.chest",dispensable:!0},"minecraft:enchantable":{value:10,slot:"armor_torso"}}}}}class ve extends _{get id(){return"leggings"}getData(e){return{id:"leggings",displayName:"Leggings",description:"Leg armor",category:"armor",components:{"minecraft:armor":{protection:e?.protection??5},"minecraft:durability":{max_durability:e?.durability??225},"minecraft:wearable":{slot:"slot.armor.legs",dispensable:!0},"minecraft:enchantable":{value:10,slot:"armor_legs"}}}}}class we extends _{get id(){return"boots"}getData(e){return{id:"boots",displayName:"Boots",description:"Foot armor",category:"armor",components:{"minecraft:armor":{protection:e?.protection??2},"minecraft:durability":{max_durability:e?.durability??195},"minecraft:wearable":{slot:"slot.armor.feet",dispensable:!0},"minecraft:enchantable":{value:10,slot:"armor_feet"}}}}}class ke extends _{get id(){return"food"}getData(e){return{id:"food",displayName:"Food",description:"Can be eaten",category:"consumable",components:{"minecraft:food":{nutrition:e?.nutrition??4,saturation_modifier:e?.saturation??.6,can_always_eat:!1},"minecraft:use_modifiers":{use_duration:1.6}}}}}class xe extends _{get id(){return"drink"}getData(e){return{id:"drink",displayName:"Drink",description:"Can be drunk",category:"consumable",components:{"minecraft:food":{nutrition:e?.nutrition??0,saturation_modifier:0,can_always_eat:!0},"minecraft:use_modifiers":{use_duration:2}}}}}class Te extends _{get id(){return"throwable"}getData(e){return{id:"throwable",displayName:"Throwable",description:"Can be thrown",category:"special",components:{"minecraft:throwable":{do_swing_animation:!0,launch_power_scale:e?.launchPower??1,max_launch_power:1.5},"minecraft:projectile":{projectile_entity:"minecraft:snowball"}}}}}class ze extends _{get id(){return"stackable"}getData(e){return{id:"stackable",displayName:"Stackable",description:"Can stack to 64",category:"special",components:{"minecraft:max_stack_size":e?.maxStackSize??64}}}}class Ae extends _{get id(){return"non_stackable"}getData(e){return{id:"non_stackable",displayName:"Non-Stackable",description:"Cannot stack",category:"special",components:{"minecraft:max_stack_size":1}}}}class $e extends _{get id(){return"fuel"}getData(e){return{id:"fuel",displayName:"Fuel",description:"Can be used as fuel in a furnace",category:"special",components:{"minecraft:fuel":{duration:e?.burnDuration??200}}}}}class Ee extends _{get id(){return"glinting"}getData(e){return{id:"glinting",displayName:"Glinting",description:"Has enchantment glint effect",category:"special",components:{"minecraft:glint":!0}}}}class Se extends _{get id(){return"repairable"}getData(e){return{id:"repairable",displayName:"Repairable",description:"Can be repaired",category:"special",components:{"minecraft:repairable":{repair_items:(e?.repairItems??["minecraft:iron_ingot"]).map(e=>({items:[e],repair_amount:"context.other->q.remaining_durability + 0.05 * context.other->q.max_durability"}))}}}}}class Ce extends _{get id(){return"cooldown"}getData(e){const t=e?.cooldownDuration??1;return{id:"cooldown",displayName:"Cooldown",description:"Has a cooldown after use",category:"special",components:{"minecraft:cooldown":{category:e?.cooldownCategory??"attack",duration:t}}}}}class je extends _{get id(){return"music_disc"}getData(e){return{id:"music_disc",displayName:"Music Disc",description:"Can be played in a jukebox",category:"special",components:{"minecraft:record":{sound_event:e?.soundEvent??"record.13",duration:178,comparator_signal:1},"minecraft:max_stack_size":1}}}}var De=i(4885),Be=i(29779),Me=i(66555),qe=i(40267);const Ie={};let Ne=!1;const Pe={humanoid:{"minecraft:can_climb":{},"minecraft:jump.static":{}},quadruped:{"minecraft:can_climb":{},"minecraft:jump.static":{}},quadruped_small:{"minecraft:can_climb":{},"minecraft:jump.static":{}},flying:{"minecraft:navigation.fly":{can_path_over_water:!0,can_path_over_lava:!1},"minecraft:can_fly":{}},aquatic:{"minecraft:navigation.swim":{can_path_over_water:!1,can_swim:!0},"minecraft:underwater_movement":{value:.3},"minecraft:breathable":{total_supply:15,suffocate_time:0,breathes_water:!0,breathes_air:!1}},arthropod:{"minecraft:can_climb":{},"minecraft:mark_variant":{value:0}},slime:{"minecraft:movement.sway":{sway_amplitude:0}},hostile:{"minecraft:behavior.hurt_by_target":{priority:1},"minecraft:behavior.nearest_attackable_target":{priority:2,entity_types:[{filters:{test:"is_family",subject:"other",value:"player"}}]},"minecraft:attack":{damage:3}},passive:{"minecraft:behavior.panic":{priority:1,speed_multiplier:1.25}},neutral:{"minecraft:behavior.hurt_by_target":{priority:1,alert_same_type:!0}},boss:{"minecraft:boss":{should_darken_sky:!0,hud_range:55}},melee_attacker:{"minecraft:behavior.melee_attack":{priority:3,speed_multiplier:1.2,track_target:!0},"minecraft:attack":{damage:3}},ranged_attacker:{"minecraft:behavior.ranged_attack":{priority:3,attack_interval_min:1,attack_interval_max:3,attack_radius:15},"minecraft:shooter":{def:"minecraft:arrow"}},exploder:{"minecraft:explode":{fuse_length:1.5,fuse_lit:!1,power:3,causes_fire:!1}},trader:{"minecraft:trade_table":{},"minecraft:behavior.trade_with_player":{priority:1}},tameable:{"minecraft:tameable":{probability:.33,tame_items:["bone"]},"minecraft:is_tamed":{}},rideable:{"minecraft:rideable":{seat_count:1,family_types:["player"],interact_text:"action.interact.ride.horse",seats:[{position:[0,1.1,-.2]}]},"minecraft:input_ground_controlled":{}},breedable:{"minecraft:breedable":{require_tame:!1,breed_items:["wheat"],breeds_with:{mate_type:"self",baby_type:"self"}},"minecraft:behavior.breed":{priority:3,speed_multiplier:1}},leasable:{"minecraft:leashable":{soft_distance:4,hard_distance:6,max_distance:10}},undead:{"minecraft:burns_in_daylight":{},"minecraft:type_family":{family:["undead","monster"]}},illager:{"minecraft:type_family":{family:["illager","monster"]},"minecraft:behavior.raid_garden":{priority:5}},aquatic_only:{"minecraft:breathable":{total_supply:15,suffocate_time:-1,breathes_water:!0,breathes_air:!1,generates_bubbles:!1}},baby_variant:{"minecraft:is_baby":{},"minecraft:scale":{value:.5},"minecraft:ageable":{duration:1200,grow_up:{event:"minecraft:ageable_grow_up"}}},wanders:{"minecraft:behavior.random_stroll":{priority:6,speed_multiplier:1},"minecraft:behavior.random_look_around":{priority:7}},patrols:{"minecraft:behavior.move_to_poi":{priority:3,speed_multiplier:.6}},guards:{"minecraft:behavior.defend_village_target":{priority:1}},flees_daylight:{"minecraft:behavior.flee_sun":{priority:2,speed_multiplier:1}},teleporter:{"minecraft:teleport":{random_teleports:!0,max_random_teleport_time:30,random_teleport_cube:[32,16,32],target_distance:16,target_teleport_chance:.05}}},Re={solid:{},transparent:{"minecraft:material_instances":{"*":{render_method:"blend"}}},leaves:{"minecraft:material_instances":{"*":{render_method:"alpha_test"}},"minecraft:destructible_by_mining":{seconds_to_destroy:.2}},log:{"minecraft:destructible_by_mining":{seconds_to_destroy:2},"minecraft:flammable":{catch_chance_modifier:5,destroy_chance_modifier:5}},slab:{"minecraft:geometry":"minecraft:geometry.slab"},stairs:{"minecraft:geometry":"minecraft:geometry.stairs"},fence:{"minecraft:geometry":{identifier:"minecraft:geometry.fence"}},wall:{"minecraft:geometry":{identifier:"minecraft:geometry.wall"}},door:{"minecraft:geometry":{identifier:"minecraft:geometry.door"},"minecraft:on_interact":{event:"toggle_open"}},trapdoor:{"minecraft:geometry":{identifier:"minecraft:geometry.trapdoor"},"minecraft:on_interact":{event:"toggle_open"}},workstation:{},light_source:{"minecraft:light_emission":15},gravity:{"minecraft:gravity":{}},liquid:{"minecraft:material_instances":{"*":{render_method:"blend"}}},redstone_signal:{"minecraft:redstone_conductivity":{redstone_conductor:!0,allows_wire_to_step_down:!0}},redstone_receiver:{"minecraft:redstone_conductivity":{redstone_conductor:!0}},button:{"minecraft:geometry":{identifier:"minecraft:geometry.button"}},lever:{"minecraft:geometry":{identifier:"minecraft:geometry.lever"}},pressure_plate:{"minecraft:geometry":{identifier:"minecraft:geometry.pressure_plate"}},flammable:{"minecraft:flammable":{catch_chance_modifier:5,destroy_chance_modifier:20}},explosion_resistant:{"minecraft:destructible_by_explosion":{explosion_resistance:1200}},slippery:{"minecraft:friction":.1}},Fe={sword:{"minecraft:hand_equipped":!0,"minecraft:damage":4,"minecraft:enchantable":{slot:"sword",value:10}},pickaxe:{"minecraft:hand_equipped":!0,"minecraft:digger":{use_efficiency:!0,destroy_speeds:[{block:{tags:"q.any_tag('stone', 'metal')"},speed:4}]},"minecraft:enchantable":{slot:"pickaxe",value:10}},axe:{"minecraft:hand_equipped":!0,"minecraft:digger":{use_efficiency:!0,destroy_speeds:[{block:{tags:"q.any_tag('wood', 'pumpkin')"},speed:4}]},"minecraft:enchantable":{slot:"axe",value:10}},shovel:{"minecraft:hand_equipped":!0,"minecraft:digger":{use_efficiency:!0,destroy_speeds:[{block:{tags:"q.any_tag('dirt', 'sand', 'gravel')"},speed:4}]},"minecraft:enchantable":{slot:"shovel",value:10}},hoe:{"minecraft:hand_equipped":!0,"minecraft:enchantable":{slot:"hoe",value:10}},bow:{"minecraft:use_duration":72e3,"minecraft:enchantable":{slot:"bow",value:1}},crossbow:{"minecraft:use_duration":72e3,"minecraft:enchantable":{slot:"crossbow",value:1}},food:{"minecraft:food":{nutrition:4,saturation_modifier:"normal",can_always_eat:!1},"minecraft:use_duration":32},armor_helmet:{"minecraft:wearable":{slot:"slot.armor.head"},"minecraft:enchantable":{slot:"armor_head",value:10}},armor_chestplate:{"minecraft:wearable":{slot:"slot.armor.chest"},"minecraft:enchantable":{slot:"armor_torso",value:10}},armor_leggings:{"minecraft:wearable":{slot:"slot.armor.legs"},"minecraft:enchantable":{slot:"armor_legs",value:10}},armor_boots:{"minecraft:wearable":{slot:"slot.armor.feet"},"minecraft:enchantable":{slot:"armor_feet",value:10}},throwable:{"minecraft:throwable":{do_swing_animation:!0,launch_power_scale:1,max_launch_power:1},"minecraft:projectile":{projectile_entity:"minecraft:snowball"}},placeable:{"minecraft:block_placer":{block:"minecraft:stone"}}},Le={wander:{"minecraft:behavior.random_stroll":{priority:6,speed_multiplier:1}},swim:{"minecraft:behavior.random_swim":{priority:4,speed_multiplier:1}},fly_around:{"minecraft:behavior.random_fly":{priority:6,xz_dist:4,y_dist:2}},float:{"minecraft:behavior.float":{priority:0}},climb:{"minecraft:can_climb":{}},melee_attack:{"minecraft:behavior.melee_attack":{priority:3,speed_multiplier:1},"minecraft:attack":{damage:3}},ranged_attack:{"minecraft:behavior.ranged_attack":{priority:3,attack_radius:15}},target_players:{"minecraft:behavior.nearest_attackable_target":{priority:2,entity_types:[{filters:{test:"is_family",subject:"other",value:"player"}}]}},target_monsters:{"minecraft:behavior.nearest_attackable_target":{priority:2,entity_types:[{filters:{test:"is_family",subject:"other",value:"monster"}}]}},flee_when_hurt:{"minecraft:behavior.panic":{priority:1,speed_multiplier:1.25}},retaliate:{"minecraft:behavior.hurt_by_target":{priority:1}},follow_owner:{"minecraft:behavior.follow_owner":{priority:4,speed_multiplier:1,start_distance:10,stop_distance:2}},follow_parent:{"minecraft:behavior.follow_parent":{priority:5,speed_multiplier:1}},herd:{"minecraft:behavior.move_towards_dwelling_restriction":{priority:4}},avoid_players:{"minecraft:behavior.avoid_mob_type":{priority:1,entity_types:[{filters:{test:"is_family",subject:"other",value:"player"}}],max_dist:10,walk_speed_multiplier:.8,sprint_speed_multiplier:1.2}},look_at_player:{"minecraft:behavior.look_at_player":{priority:7,look_distance:6,probability:.02}},beg:{"minecraft:behavior.beg":{priority:8,look_distance:8,items:["bone"]}},tempt:{"minecraft:behavior.tempt":{priority:4,speed_multiplier:1,items:["wheat"]}},sit_command:{"minecraft:behavior.sit":{priority:2},"minecraft:sittable":{}},eat_grass:{"minecraft:behavior.eat_block":{priority:6,time_until_eat:1.8,eat_and_replace_block_pairs:[{eat_block:"grass",replace_block:"dirt"}]}},break_doors:{"minecraft:behavior.break_door":{priority:1}},open_doors:{"minecraft:behavior.open_door":{priority:6,close_door_after:!0}},pick_up_items:{"minecraft:behavior.pickup_items":{priority:7,max_dist:3}},sleep_in_bed:{"minecraft:behavior.sleep":{priority:3,speed_multiplier:1.2}},hide_from_sun:{"minecraft:behavior.flee_sun":{priority:2,speed_multiplier:1}},go_home_at_night:{"minecraft:behavior.go_home":{priority:4,speed_multiplier:1,goal_radius:1.5}},seek_water:{"minecraft:behavior.go_and_give_items_to_noteblock":{priority:5}},seek_land:{"minecraft:behavior.move_to_land":{priority:1,search_range:16}}};class Ze{_definition;_options;_namespace;_warnings=[];_errors=[];static _sanitizeIdForPath(e){return e.replace(/\0/g,"").replace(/\.\./g,"").replace(/[/\\]/g,"_").replace(/:/g,"_")}constructor(e){this._definition=e,this._options=e.options||{},this._namespace=e.namespace||"custom"}_validateTraitCombinations(){if(this._definition.entityTypes)for(const e of this._definition.entityTypes)e.traits&&e.traits.length>1&&this._validateEntityTraits(e.id,e.traits);if(this._definition.blockTypes)for(const e of this._definition.blockTypes)e.traits&&e.traits.length>1&&this._validateBlockTraits(e.id,e.traits);if(this._definition.itemTypes)for(const e of this._definition.itemTypes)e.traits&&e.traits.length>1&&this._validateItemTraits(e.id,e.traits)}_validateEntityTraits(e,t){const i=new Set(t);for(const a of t){const t=f.getEntityTrait(a);if(t){const r=t.getData();if(r.conflicts)for(const t of r.conflicts)i.has(t)&&this._warnings.push(`Entity '${e}': Trait '${a}' conflicts with '${t}'. These traits may produce unexpected behavior when combined.`)}}this._checkKnownEntityConflicts(e,i)}_validateBlockTraits(e,t){const i=new Set(t);for(const a of t){const t=f.getBlockTrait(a);if(t){const r=t.getData();if(r.conflicts)for(const t of r.conflicts)i.has(t)&&this._warnings.push(`Block '${e}': Trait '${a}' conflicts with '${t}'. These traits may produce unexpected behavior when combined.`)}}this._checkKnownBlockConflicts(e,i)}_validateItemTraits(e,t){const i=new Set(t);for(const a of t){const t=f.getItemTrait(a);if(t){const r=t.getData();if(r.conflicts)for(const t of r.conflicts)i.has(t)&&this._warnings.push(`Item '${e}': Trait '${a}' conflicts with '${t}'. These traits may produce unexpected behavior when combined.`)}}this._checkKnownItemConflicts(e,i)}_checkKnownEntityConflicts(e,t){const i=["hostile","passive","neutral"].filter(e=>t.has(e));i.length>1&&this._warnings.push(`Entity '${e}': Multiple behavior traits (${i.join(", ")}) are mutually exclusive. Only one behavior archetype should be used.`);const a=["humanoid","quadruped","quadruped_small","flying","aquatic","arthropod","slime"].filter(e=>t.has(e));a.length>1&&this._warnings.push(`Entity '${e}': Multiple body types (${a.join(", ")}) specified. Only one body type should be selected.`),t.has("aquatic")&&t.has("flying")&&this._warnings.push(`Entity '${e}': 'aquatic' and 'flying' traits may conflict. Consider using one or the other for cleaner behavior.`),t.has("undead")&&t.has("passive")&&this._warnings.push(`Entity '${e}': 'undead' trait is typically used with hostile entities, not passive ones.`)}_checkKnownBlockConflicts(e,t){const i=["slab","stairs","fence","wall"