minecraft-renderer 0.1.56 → 0.1.58

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.
@@ -4048,7 +4048,7 @@ void main() {
4048
4048
  `;K_=6,pd={LX_BITS:4,LY_BITS:4,LZ_BITS:4,FACE_BITS:3,TINT_BITS:8,AO_BITS_PER_CORNER:2,NUM_CORNERS:4,LX_SHIFT:0,LY_SHIFT:4,LZ_SHIFT:8,FACE_SHIFT:12,TINT_SHIFT:15,AO_SHIFT:23,TRANSPARENT_SHIFT:31},W2e={TEX_INDEX_BITS:12,DIAGONAL_FLAG_SHIFT:12,SECTION_Y_SHIFT:13,SECTION_Y_BITS:5,EMPTY_SHIFT:18,SPARE_BITS:13}});var Z_,j2e=Nn(()=>{"use strict";f();m();h();Z_=class{atlasWidth;atlasHeight;tileSize;tilesPerRow;maxTiles;valid;constructor(e){this.atlasWidth=e.width,this.atlasHeight=e.height,this.tileSize=e.tileSize,this.tilesPerRow=Math.floor(this.atlasWidth/this.tileSize),this.maxTiles=this.tilesPerRow*Math.floor(this.atlasHeight/this.tileSize),this.valid=this.atlasWidth===1024&&this.atlasHeight===1024&&this.tileSize===16&&this.maxTiles<=4096}isValid(){return this.valid}getTilesPerRow(){return this.tilesPerRow}tileIndexFromPixelCoords(e,t){if(!this.valid)return-1;let n=Math.floor(e/this.tileSize),r=Math.floor(t/this.tileSize);if(n<0||n>=this.tilesPerRow||r<0)return-1;let s=r*this.tilesPerRow+n;return s>=this.maxTiles?-1:s}tileIndexFromTextureEntry(e){return!this.valid||e.su!==this.tileSize||e.sv!==this.tileSize?-1:this.tileIndexFromPixelCoords(e.u,e.v)}tileIndexFromTextureName(e,t){if(!this.valid)return-1;let n=t.textures[e];if(!n&&e.includes(":")&&(n=t.textures[e.split(":")[1]]),!n&&e.includes("/")&&(n=t.textures[e.split("/")[1]]),n||(n=t.textures[`block/${e}`]),!n){let r=e.replace(/^block\//,"");n=t.textures[r]}return n?this.tileIndexFromTextureEntry(n):-1}}});var Q_,$2e=Nn(()=>{"use strict";f();m();h();yt();Q_=class i{entries=[{r:1,g:1,b:1}];colorToIndex=new Map;categoryBiomeToIndex=new Map;texture=null;ready=!1;packColor(e,t,n){let r=Math.round(e*255),s=Math.round(t*255),o=Math.round(n*255);return r<<16|s<<8|o}add(e,t,n,r,s){let o=this.packColor(e,t,n),a=`${r}:${s}`,l=this.categoryBiomeToIndex.get(a);if(l!==void 0)return l;let c=this.colorToIndex.get(o);if(c!==void 0)return this.categoryBiomeToIndex.set(a,c),c;let d=this.entries.length;return this.entries.push({r:e,g:t,b:n}),this.colorToIndex.set(o,d),this.categoryBiomeToIndex.set(a,d),d}getTintIndex(e,t,n,r){return e===void 0?0:e===0?t==="redstone_wire"?this.categoryBiomeToIndex.get(`redstone:${n.power}`)??this.categoryBiomeToIndex.get("redstone:0")??0:t==="birch_leaves"||t==="spruce_leaves"||t==="lily_pad"?this.categoryBiomeToIndex.get(`constant:${t}`)??this.categoryBiomeToIndex.get("constant:default")??0:t.includes("leaves")||t==="vine"?this.categoryBiomeToIndex.get(`foliage:${r}`)??this.categoryBiomeToIndex.get("foliage:plains")??0:this.categoryBiomeToIndex.get(`grass:${r}`)??this.categoryBiomeToIndex.get("grass:plains")??0:0}getEntry(e){return this.entries[e]??this.entries[0]}get size(){return this.entries.length}buildTextureData(){let e=new Float32Array(1024);for(let t=0;t<this.entries.length&&t<256;t++){let n=this.entries[t];e[t*4]=n.r,e[t*4+1]=n.g,e[t*4+2]=n.b,e[t*4+3]=1}return e}createTexture(){this.texture&&(this.texture.dispose(),this.texture=null,this.ready=!1);let e=this.buildTextureData(),t=new uo(e,256,1,Zr,es);return t.minFilter=Qe,t.magFilter=Qe,t.wrapS=gn,t.wrapT=gn,t.needsUpdate=!0,this.texture=t,this.ready=!0,t}getTexture(){return this.texture}isReady(){return this.ready}static fromTintsData(e){let t=new i;function n(r){let s=(r>>16&255)/255,o=(r>>8&255)/255,a=(r&255)/255;return[s,o,a]}if(e.grass){let r=n(e.grass.default);for(let{keys:s,color:o}of e.grass.data??[]){let a=n(o);for(let l of s)t.add(a[0],a[1],a[2],"grass",l)}t.add(r[0],r[1],r[2],"grass","plains")}if(e.foliage){let r=n(e.foliage.default);for(let{keys:s,color:o}of e.foliage.data??[]){let a=n(o);for(let l of s)t.add(a[0],a[1],a[2],"foliage",l)}t.add(r[0],r[1],r[2],"foliage","plains")}if(e.redstone){let r=n(e.redstone.default);for(let{keys:s,color:o}of e.redstone.data??[]){let a=n(o);for(let l of s)t.add(a[0],a[1],a[2],"redstone",l)}t.add(r[0],r[1],r[2],"redstone","0")}if(e.constant){let r=n(e.constant.default);for(let{keys:s,color:o}of e.constant.data??[]){let a=n(o);for(let l of s)t.add(a[0],a[1],a[2],"constant",l)}t.add(r[0],r[1],r[2],"constant","default")}return t}}});function Zqe(){let i=globalThis.loadedData?.tints;return i||(X2e||(X2e=!0,console.warn("[shaderCubeBridge] loadedData.tints missing; shader cubes use legacy path")),null)}function n4(){let i=Zqe();if(!i)return null;if(e4||(e4=Q_.fromTintsData(i),e4.createTexture()),!_T){let e=Fm.latest??Fm;_T=new Z_({width:e.width,height:e.height,tileSize:e.tileSize??16,suSv:e.suSv??16,textures:e.textures??{}})}return{tintPalette:e4,textureIndexMapping:_T}}function Y2e(){return 1<<W2e.EMPTY_SHIFT>>>0}var t4,e4,_T,X2e,nh=Nn(()=>{"use strict";f();m();h();Ix();vd();j2e();$2e();t4=4,e4=null,_T=null,X2e=!1});function Qqe(i,e){let t=new go,n=new Float32Array(K_*3);t.setAttribute("position",new ht(n,3));let r=new Uint32Array(e),s=new Uint32Array(e),o=new Uint32Array(e),a=new Uint32Array(e),l=t4;for(let c=0;c<e;c++)r[c]=i[c*l],s[c]=i[c*l+1],o[c]=i[c*l+2],a[c]=i[c*l+3];return t.setAttribute("a_w0",new Ar(r,1)),t.setAttribute("a_w1",new Ar(s,1)),t.setAttribute("a_w2",new Ar(o,1)),t.setAttribute("a_w3",new Ar(a,1)),t.instanceCount=e,t.boundingBox=new Vn(new K(-8,-8,-8),new K(8,8,8)),t.boundingSphere=new $n(new K(0,0,0),Math.sqrt(3*8**2)),t}function eGe(i){i.raycast=(e,t)=>{let{geometry:n}=i;if(!n.boundingBox||(J2e.copy(n.boundingBox).applyMatrix4(i.matrixWorld),!e.ray.intersectBox(J2e,yT)))return;let r=e.ray.origin.distanceTo(yT);t.push({distance:r,point:yT.clone(),object:i})}}function r4(i,e){let t=Qqe(i.words,i.count),n=new je(t,e);return n.name="shaderMesh",n.matrixAutoUpdate=!1,n.frustumCulled=!1,eGe(n),n}function bT(i){i.geometry.dispose()}var J2e,yT,xT=Nn(()=>{"use strict";f();m();h();yt();vd();nh();J2e=new Vn,yT=new K});var n3e={};ro(n3e,{applyWorldGeometryExport:()=>rGe,createMeshesFromExport:()=>e3e,downloadWorldGeometry:()=>wT,exportWorldGeometry:()=>Z2e,loadTextureFromDataUrl:()=>t3e,loadWorldGeometryFromUrl:()=>tGe});function Z2e(i,e,t,n=!1){let r=[];for(let[o,a]of Object.entries(i.sectionObjects)){let l=a.children.find(y=>y.name==="mesh");if(!l?.geometry)continue;let{geometry:c}=l,d=c.getAttribute("position"),u=c.getAttribute("normal"),p=c.getAttribute("color"),v=c.getAttribute("uv"),_=c.index;if(!d||!_)continue;let b=i.sceneOrigin.getWorldPosition(l);r.push({key:o,position:{x:b?.x??i.sceneOrigin.toWorldX(l.position.x),y:b?.y??i.sceneOrigin.toWorldY(l.position.y),z:b?.z??i.sceneOrigin.toWorldZ(l.position.z)},geometry:{positions:[...d.array],normals:u?[...u.array]:[],colors:p?[...p.array]:[],uvs:v?[...v.array]:[],indices:[..._.array]}})}let s={version:i.version??"unknown",exportedAt:new Date().toISOString(),camera:{position:e,rotation:t},sections:r};if(n&&i.material.map){let o=document.createElement("canvas"),a=i.material.map,{image:l}=a;l&&(o.width=l.width,o.height=l.height,o.getContext("2d").drawImage(l,0,0),s.textureAtlasDataUrl=o.toDataURL("image/png"))}return s}function wT(i,e,t,n="world-geometry.json",r=!1){let s=Z2e(i,e,t,r),o=JSON.stringify(s),a=new Blob([o],{type:"application/json"}),l=URL.createObjectURL(a),c=document.createElement("a");c.href=l,c.download=n,c.click(),URL.revokeObjectURL(l)}async function tGe(i){let e=await fetch(i);if(!e.ok)throw new Error(`Failed to fetch world geometry: ${e.statusText}`);return e.json()}function Q2e(i){let e=i.map??i.map;if(!e)return null;let t=J_();t.uniforms.u_atlas.value=e;let n=n4();if(!n)return null;let{tintPalette:r}=n;return r.isReady()||r.createTexture(),t.uniforms.u_tintPalette.value=r.getTexture(),t}function e3e(i,e,t){let n=[],r=t??Q2e(e);for(let s of i.sections){let o=new at;if(o.name="chunk",s.geometry.positions.length>0&&s.geometry.indices.length>0){let c=new it;c.setAttribute("position",new qe(s.geometry.positions,3)),s.geometry.normals.length&&c.setAttribute("normal",new qe(s.geometry.normals,3)),s.geometry.colors.length&&c.setAttribute("color",new qe(s.geometry.colors,3)),s.geometry.uvs.length&&c.setAttribute("uv",new qe(s.geometry.uvs,2));let u=Math.max(...s.geometry.indices)>65535?Uint32Array:Uint16Array;c.setIndex(new ht(new u(s.geometry.indices),1));let p=new je(c,e);p.position.set(s.position.x,s.position.y,s.position.z),p.name="mesh",o.add(p)}let l=s.shaderCubes;if(l&&l.count>0&&r){let c=r4(l,r);c.position.set(s.position.x,s.position.y,s.position.z),o.add(c)}o.children.length>0&&n.push(o)}return n}async function t3e(i){return new Promise((e,t)=>{let n=new Image;n.onload=()=>{let r=new Gt(n);r.magFilter=Qe,r.minFilter=Qe,r.needsUpdate=!0,r.flipY=!1,e(r)},n.onerror=t,n.src=i})}async function rGe(i,e){let{scene:t,renderUpdateEmitter:n,material:r}=i,s=t.getObjectByName(K2e);s&&(t.remove(s),nGe(s));let o=!!e.textureAtlasDataUrl,a;if(o&&e.textureAtlasDataUrl){let u=await t3e(e.textureAtlasDataUrl);a=new is({map:u,vertexColors:!0,transparent:!0,alphaTest:.1}),a.name="geometry-export-material"}else a=r;let l=e.sections.some(u=>(u.shaderCubes?.count??0)>0)?Q2e(a):null,c=e3e(e,a,l),d=new at;d.name=K2e,o&&(d.userData.geometryExportMaterial=a);for(let u of c)d.add(u);return t.add(d),n.emit("update"),c.length}var K2e,nGe,ET=Nn(()=>{"use strict";f();m();h();yt();nh();vd();xT();K2e="geometry-export-root";nGe=i=>{i.traverse(t=>{t.isMesh&&t.geometry?.dispose()});let e=i.userData?.geometryExportMaterial;e&&(e.map?.dispose?.(),e.dispose?.())}});var g4=S((l3n,B3e)=>{f();m();h();var{Vec3:L3e}=ga(),Ir={UNKNOWN:-999,BOTTOM:0,TOP:1,NORTH:2,SOUTH:3,WEST:4,EAST:5},v4=class{constructor(e,t,n){this.maxDistance=Math.floor(n),this.startx=e,this.starty=t,this.x=2,this.y=-1,this.layer=1,this.leg=-1}next(){if(this.leg===-1)return this.leg=0,new L3e(this.startx,0,this.starty);if(this.leg===0){if(this.maxDistance===1)return null;this.x--,this.y++,this.x===0&&(this.leg=1)}else if(this.leg===1)this.x--,this.y--,this.y===0&&(this.leg=2);else if(this.leg===2)this.x++,this.y--,this.x===0&&(this.leg=3);else if(this.leg===3&&(this.x++,this.y++,this.y===0&&(this.x++,this.leg=0,this.layer++,this.layer===this.maxDistance)))return null;return new L3e(this.startx+this.x,0,this.starty+this.y)}},qT=class{constructor(e,t){this.start=e.floored(),this.maxDistance=t,this.apothem=1,this.x=-1,this.y=-1,this.z=-1,this.L=this.apothem,this.R=this.L+1}next(){if(this.apothem>this.maxDistance)return null;this.R-=1,this.R<0&&(this.L-=1,this.L<0&&(this.z+=2,this.z>1&&(this.y+=2,this.y>1&&(this.x+=2,this.x>1&&(this.apothem+=1,this.x=-1),this.y=-1),this.z=-1),this.L=this.apothem),this.R=this.L);let e=this.x*this.R,t=this.y*(this.apothem-this.L),n=this.z*(this.apothem-(Math.abs(e)+Math.abs(t)));return this.start.offset(e,t,n)}},GT=class{constructor(e,t,n){this.block={x:Math.floor(e.x),y:Math.floor(e.y),z:Math.floor(e.z),face:Ir.UNKNOWN},this.pos=e,this.dir=t,this.invDirX=t.x===0?Number.MAX_VALUE:1/t.x,this.invDirY=t.y===0?Number.MAX_VALUE:1/t.y,this.invDirZ=t.z===0?Number.MAX_VALUE:1/t.z,this.stepX=Math.sign(t.x),this.stepY=Math.sign(t.y),this.stepZ=Math.sign(t.z),this.tDeltaX=t.x===0?Number.MAX_VALUE:Math.abs(1/t.x),this.tDeltaY=t.y===0?Number.MAX_VALUE:Math.abs(1/t.y),this.tDeltaZ=t.z===0?Number.MAX_VALUE:Math.abs(1/t.z),this.tMaxX=t.x===0?Number.MAX_VALUE:Math.abs((this.block.x+(t.x>0?1:0)-e.x)/t.x),this.tMaxY=t.y===0?Number.MAX_VALUE:Math.abs((this.block.y+(t.y>0?1:0)-e.y)/t.y),this.tMaxZ=t.z===0?Number.MAX_VALUE:Math.abs((this.block.z+(t.z>0?1:0)-e.z)/t.z),this.maxDistance=n}intersect(e,t){let n=Number.MAX_VALUE,r=Ir.UNKNOWN,s=this.pos.minus(t);for(let o of e){let a=(o[this.invDirX>0?0:3]-s.x)*this.invDirX,l=(o[this.invDirX>0?3:0]-s.x)*this.invDirX,c=(o[this.invDirY>0?1:4]-s.y)*this.invDirY,d=(o[this.invDirY>0?4:1]-s.y)*this.invDirY,u=this.stepX>0?Ir.WEST:Ir.EAST;if(a>d||c>l)continue;c>a&&(a=c,u=this.stepY>0?Ir.BOTTOM:Ir.TOP),d<l&&(l=d);let p=(o[this.invDirZ>0?2:5]-s.z)*this.invDirZ,v=(o[this.invDirZ>0?5:2]-s.z)*this.invDirZ;a>v||p>l||(p>a&&(a=p,u=this.stepZ>0?Ir.NORTH:Ir.SOUTH),v<l&&(l=v),a<n&&(n=a,r=u))}return n===Number.MAX_VALUE?null:{pos:this.pos.plus(this.dir.scaled(n)),face:r}}next(){return Math.min(Math.min(this.tMaxX,this.tMaxY),this.tMaxZ)>this.maxDistance?null:(this.tMaxX<this.tMaxY?this.tMaxX<this.tMaxZ?(this.block.x+=this.stepX,this.tMaxX+=this.tDeltaX,this.block.face=this.stepX>0?Ir.WEST:Ir.EAST):(this.block.z+=this.stepZ,this.tMaxZ+=this.tDeltaZ,this.block.face=this.stepZ>0?Ir.NORTH:Ir.SOUTH):this.tMaxY<this.tMaxZ?(this.block.y+=this.stepY,this.tMaxY+=this.tDeltaY,this.block.face=this.stepY>0?Ir.BOTTOM:Ir.TOP):(this.block.z+=this.stepZ,this.tMaxZ+=this.tDeltaZ,this.block.face=this.stepZ>0?Ir.NORTH:Ir.SOUTH),this.block)}},WT=class{constructor(e,t){this.start=e,this.maxDistance=t,this.NUMBER_OF_POINTS=Math.floor(Math.pow((Math.floor(t)-.5)*2,2)),this.di=1,this.dj=0,this.segment_length=1,this.i=0,this.j=0,this.segment_passed=0,this.k=0}next(){if(this.k>=this.NUMBER_OF_POINTS)return null;let e=this.start.offset(this.i,0,this.j);if(this.i+=this.di,this.j+=this.dj,this.segment_passed+=1,this.segment_passed===this.segment_length){this.segment_passed=0;let t=this.di;this.di=-this.dj,this.dj=t,this.dj===0&&(this.segment_length+=1)}return this.k+=1,e}};B3e.exports={ManhattanIterator:v4,ManathanIterator:v4,OctahedronIterator:qT,RaycastIterator:GT,SpiralIterator2d:WT,BlockFace:Ir}});var N3e=S((f3n,O3e)=>{f();m();h();var{Vec3:o2}=ga(),{EventEmitter:PGe}=(Rs(),Qn(Nl)),{RaycastIterator:LGe}=g4();function li(i){return new o2(Math.floor(i.x)&15,Math.floor(i.y),Math.floor(i.z)&15)}var jT=class extends PGe{constructor(e){super(),this.async=e}initialize(e,t,n,r=256,s=new o2(0,0,0)){function o(d,u,p){return!(d>=n||d<0||p>=t||p<0||u>=r||u<0)}let a=li(s),l=Math.ceil((t+a.z)/16),c=Math.ceil((n+a.x)/16);for(let d=0;d<l;d++){let u=d+Math.floor(s.z/16);for(let p=0;p<c;p++){let v=p+Math.floor(s.x/16),_=this.getColumn(v,u),b=p*16-a.x,y=d*16-a.z;_.initialize((g,w,x)=>o(g+b,w-s.y,x+y)?e(g+b,w-s.y,x+y):null),this.setColumn(v,u,_)}}}raycast(e,t,n,r=null){let s=new LGe(e,t,n),o=e;for(;o;){let a=new o2(o.x,o.y,o.z),l=this.getBlock(a);if(l)if(r){if(r(l,s))return l}else{let c=s.intersect([...l.shapes,...l.interactionShapes??[]],a);if(c)return l.face=c.face,l.intersect=c.pos,l}o=s.next()}return null}_emitBlockUpdate(e,t,n){e.position=n.floored(),t.position=e.position,this.emit("blockUpdate",e,t),this.emit(`blockUpdate:${n}`,e,t)}unloadColumn(e,t){this.async.unloadColumn(e,t);let n=new o2(e*16,0,t*16);this.emit("chunkColumnUnload",n)}getColumns(){return this.async.getColumns()}getColumn(e,t){return this.async.getLoadedColumn(e,t)}getColumnAt(e){return this.async.getLoadedColumnAt(e)}setColumn(e,t,n,r=!0){this.async.setLoadedColumn(e,t,n,r);let s=new o2(e*16,0,t*16);this.emit("chunkColumnLoad",s)}getBlock(e){let t=this.getColumnAt(e);if(!t)return null;let n=t.getBlock(li(e));return n.position=e.floored(),n}getBlockStateId(e){let t=this.getColumnAt(e);return t?t.getBlockStateId(li(e)):0}getBlockType(e){let t=this.getColumnAt(e);return t?t.getBlockType(li(e)):0}getBlockData(e){let t=this.getColumnAt(e);return t?t.getBlockData(li(e)):0}getBlockLight(e){let t=this.getColumnAt(e);return t?t.getBlockLight(li(e)):0}getSkyLight(e){let t=this.getColumnAt(e);return t?t.getSkyLight(li(e)):0}getBiome(e){let t=this.getColumnAt(e);return t?t.getBiome(li(e)):0}setBlock(e,t){let n=this.getColumnAt(e);if(!n)return;let r=li(e),s=n.getBlock(r);n.setBlock(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,t,e)}setBlockStateId(e,t){let n=this.getColumnAt(e);if(!n)return;let r=li(e),s=n.getBlock(r);n.setBlockStateId(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}setBlockType(e,t){let n=this.getColumnAt(e);if(!n)return;let r=li(e),s=n.getBlock(r);n.setBlockType(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}setBlockData(e,t){let n=this.getColumnAt(e);if(!n)return;let r=li(e),s=n.getBlock(r);n.setBlockData(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}setBlockLight(e,t){let n=this.getColumnAt(e);if(!n)return;let r=li(e),s=n.getBlock(r);n.setBlockLight(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}setSkyLight(e,t){let n=this.getColumnAt(e);if(!n)return;let r=li(e),s=n.getBlock(r);n.setSkyLight(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}setBiome(e,t){let n=this.getColumnAt(e);if(!n)return;let r=li(e),s=n.getBlock(r);n.setBiome(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}};O3e.exports=jT});var U3e=S((v3n,D3e)=>{f();m();h();var{Vec3:l2}=ga(),{EventEmitter:BGe}=(Rs(),Qn(Nl)),{RaycastIterator:OGe}=g4(),NGe=N3e(),{once:DGe}=(Rs(),Qn(Nl));function a2(i,e){return i+","+e}function ci(i){return new l2(Math.floor(i.x)&15,Math.floor(i.y),Math.floor(i.z)&15)}var $T=class extends BGe{constructor(e,t=null,n=1e3){super(),this.savingQueue=new Map,this.unloadQueue=new Map,this.finishedSaving=Promise.resolve(),this.currentlySaving=!1,this.columns={},this.chunkGenerator=e,this.storageProvider=t,this.savingInterval=n,this.sync=new NGe(this),t&&n!==0&&this.startSaving()}initialize(e,t,n,r=256,s=new l2(0,0,0)){function o(u,p,v){return!(u>=n||u<0||v>=t||v<0||p>=r||p<0)}let a=[],l=ci(s),c=Math.ceil((t+l.z)/16),d=Math.ceil((n+l.x)/16);for(let u=0;u<c;u++){let p=u+Math.floor(s.z/16);for(let v=0;v<d;v++){let _=v+Math.floor(s.x/16);a.push(this.getColumn(_,p).then(b=>{let y=v*16-l.x,g=u*16-l.z;return b.initialize((w,x,E)=>o(w+y,x-s.y,E+g)?e(w+y,x-s.y,E+g):null),this.setColumn(_,p,b)}).then(()=>({chunkX:_,chunkZ:p})))}}return Promise.all(a)}async raycast(e,t,n,r=null){let s=new OGe(e,t,n),o=e;for(;o;){let a=new l2(o.x,o.y,o.z),l=await this.getBlock(a);if(l&&(!r||r(l))){let c=s.intersect([...l.shapes,...l.interactionShapes??[]],a);if(c)return l.face=c.face,l.intersect=c.pos,l}o=s.next()}return null}getLoadedColumn(e,t){let n=a2(e,t);return this.columns[n]}async getColumn(e,t){await Promise.resolve();let n=a2(e,t);if(!this.columns[n]){let r=null;if(this.storageProvider!=null){let o=await this.storageProvider.load(e,t);o!=null&&(r=o)}let s=r!=null;!s&&this.chunkGenerator&&(r=await this.chunkGenerator(e,t)),r!=null&&await this.setColumn(e,t,r,!s)}return this.columns[n]}_emitBlockUpdate(e,t,n){e.position=n.floored(),t.position=e.position,this.emit("blockUpdate",e,t),this.emit(`blockUpdate:${n}`,e,t)}setLoadedColumn(e,t,n,r=!0){let s=a2(e,t);this.columns[s]=n;let o=new l2(e*16,0,t*16);this.emit("chunkColumnLoad",o),this.storageProvider&&r&&this.queueSaving(e,t)}async setColumn(e,t,n,r=!0){await Promise.resolve(),this.setLoadedColumn(e,t,n,r)}unloadColumn(e,t){let n=a2(e,t);this.storageProvider&&this.savingQueue.has(n)?this.unloadQueue.set(n,{chunkX:e,chunkZ:t}):this.forceUnloadColumn(n,e,t)}forceUnloadColumn(e,t,n){this.unloadQueue.has(e)&&this.unloadQueue.delete(e),delete this.columns[e];let r=new l2(t*16,0,n*16);this.emit("chunkColumnUnload",r)}async saveNow(){if(this.savingQueue.size!==0){for(let[e,{chunkX:t,chunkZ:n}]of this.savingQueue.entries())this.finishedSaving=Promise.all([this.finishedSaving,this.storageProvider.save(t,n,this.columns[e])]);await this.finishedSaving,this.savingQueue.clear();for(let[e,{chunkX:t,chunkZ:n}]of this.unloadQueue.entries())this.forceUnloadColumn(e,t,n);this.emit("doneSaving")}}startSaving(){this.savingInt=setInterval(async()=>{this.currentlySaving===!1&&(this.currentlySaving=!0,await this.saveNow(),this.currentlySaving=!1)},this.savingInterval)}async waitSaving(){await this.saveNow(),this.savingQueue.size>0&&await DGe(this,"doneSaving"),await this.finishedSaving}stopSaving(){clearInterval(this.savingInt)}queueSaving(e,t){this.savingQueue.set(a2(e,t),{chunkX:e,chunkZ:t})}saveAt(e){let t=Math.floor(e.x/16),n=Math.floor(e.z/16);this.storageProvider&&this.queueSaving(t,n)}getColumns(){return Object.entries(this.columns).map(([e,t])=>{let n=e.split(",");return{chunkX:n[0],chunkZ:n[1],column:t}})}getLoadedColumnAt(e){let t=Math.floor(e.x/16),n=Math.floor(e.z/16);return this.getLoadedColumn(t,n)}async getColumnAt(e){let t=Math.floor(e.x/16),n=Math.floor(e.z/16);return this.getColumn(t,n)}async setBlock(e,t){let n=await this.getColumnAt(e),r=ci(e),s=n.getBlock(r);n.setBlock(r,t),this.saveAt(e),this._emitBlockUpdate(s,t,e)}async getBlock(e){let t=(await this.getColumnAt(e)).getBlock(ci(e));return t.position=e.floored(),t}async getBlockStateId(e){return(await this.getColumnAt(e)).getBlockStateId(ci(e))}async getBlockType(e){return(await this.getColumnAt(e)).getBlockType(ci(e))}async getBlockData(e){return(await this.getColumnAt(e)).getBlockData(ci(e))}async getBlockLight(e){return(await this.getColumnAt(e)).getBlockLight(ci(e))}async getSkyLight(e){return(await this.getColumnAt(e)).getSkyLight(ci(e))}async getBiome(e){return(await this.getColumnAt(e)).getBiome(ci(e))}async setBlockStateId(e,t){let n=await this.getColumnAt(e),r=ci(e),s=n.getBlock(r);n.setBlockStateId(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}async setBlockType(e,t){let n=await this.getColumnAt(e),r=ci(e),s=n.getBlock(r);n.setBlockType(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}async setBlockData(e,t){let n=await this.getColumnAt(e),r=ci(e),s=n.getBlock(r);n.setBlockData(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}async setBlockLight(e,t){let n=await this.getColumnAt(e),r=ci(e),s=n.getBlock(r);n.setBlockLight(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}async setSkyLight(e,t){let n=await this.getColumnAt(e),r=ci(e),s=n.getBlock(r);n.setSkyLight(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}async setBiome(e,t){let n=await this.getColumnAt(e),r=ci(e),s=n.getBlock(r);n.setBiome(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}};function UGe(i){return $T}D3e.exports=UGe});var V3e=S((b3n,XT)=>{f();m();h();XT.exports=U3e();XT.exports.iterators=g4()});var nl=S((S3n,F3e)=>{f();m();h();var YT=i=>`${i.x},${i.y},${i.z}`,JT=class{constructor(e){this.registry=e,this.blockEntities={},this.minY=0}getSection(e){return this.sections[e.y-this.minY>>4]}getSectionAtIndex(e){let t=this.minY>>4;return this.sections[e-t]}getBiomeId(e){return this.getBiome(e)}setBiomeId(e,t){this.setBiome(e,t)}getBiomeData(e){let t=this.getBiome(e);return this.registry[t]}getBiomeColor(e){let{color:t}=this.getBiomeData(e),n=t>>16,r=t>>8&255,s=t&255;return{r:n,g:r,b:s}}setBiomeColor(){throw new Error("Cannot change biome color, update the biome instead")}getBlockEntity(e){return this.blockEntities[YT(e)]}setBlockEntity(e,t){this.blockEntities[YT(e)]=t}removeBlockEntity(e){delete this.blockEntities[YT(e)]}loadBlockEntities(e){for(let t of e)this.setBlockEntity({x:t.x.value,y:t.y.value,z:t.z.value},t)}};F3e.exports=JT});var lh=S((T3n,rl)=>{f();m();h();var c2=function(i,e){return e%1?i.readUInt8(Math.floor(e))&15:i.readUInt8(e)>>4},ZT=function(i,e,t){if(e>=16)throw new Error("value is out of bounds");var n=Math.floor(t);t%1?i.writeUInt8(c2(i,n)<<4|e,n):i.writeUInt8(e<<4|c2(i,t),n)},KT=function(i,e){return e%1?i.readUInt8(Math.floor(e))>>4:i.readUInt8(e)&15},VGe=function(i,e,t){if(e>=16)throw new Error("value is out of bounds");var n=Math.floor(t);t%1?i.writeUInt8(e<<4|KT(i,Math.floor(t)),n):i.writeUInt8(KT(i,n)<<4|e,n)};rl.exports.read=c2;rl.exports.readUInt4=c2;rl.exports.write=ZT;rl.exports.writeUInt4=ZT;rl.exports.readUInt4BE=c2;rl.exports.writeUInt4BE=ZT;rl.exports.readUInt4LE=KT;rl.exports.writeUInt4LE=VGe});var W3e=S((P3n,G3e)=>{f();m();h();var{readUInt4LE:z3e,writeUInt4LE:_4}=lh(),P0=16,L0=16,xd=16,QT=function(i){return i.x+P0*(i.z+L0*i.y)},ch=function(i){return QT(i)*2},H3e=function(i){return QT(i)*.5+P0*L0*xd*2},q3e=function(i){return QT(i)*.5+P0*L0*xd/2*5},dh=class i{constructor(e=!0){let t=i.sectionSize(e);this.data=Buffer.alloc(t),this.data.fill(0)}toJson(){return this.data.toJSON()}static fromJson(e){let t=new i;return t.data=Buffer.from(e),t}static sectionSize(e=!0){return P0*L0*xd*(e?3:5/2)}initialize(e){let t=P0*L0*xd/2*5,n=P0*L0*xd*2,r=0;for(let s=0;s<xd;s++)for(let o=0;o<P0;o++)for(let a=0;a<L0;a++,r++){let l=e(a,s,o,r);l!=null&&(this.data.writeUInt16LE(l.type<<4|l.metadata,r*2),_4(this.data,l.light,r*.5+n),_4(this.data,l.skyLight,r*.5+t))}}getBiomeColor(e){return{r:0,g:0,b:0}}setBiomeColor(e,t,n,r){}getBlockStateId(e){let t=ch(e);return this.data.readUInt16LE(t)}getBlockType(e){let t=ch(e);return this.data.readUInt16LE(t)>>4}getBlockData(e){let t=ch(e);return this.data.readUInt16LE(t)&15}getBlockLight(e){let t=H3e(e);return z3e(this.data,t)}getSkyLight(e){let t=q3e(e);return z3e(this.data,t)}setBlockStateId(e,t){let n=ch(e);this.data.writeUInt16LE(t,n)}setBlockType(e,t){let n=ch(e),r=this.getBlockData(e);this.data.writeUInt16LE(t<<4|r,n)}setBlockData(e,t){let n=ch(e),r=this.getBlockType(e);this.data.writeUInt16LE(r<<4|t,n)}setBlockLight(e,t){let n=H3e(e);_4(this.data,t,n)}setSkyLight(e,t){let n=q3e(e);_4(this.data,t,n)}dump(){return this.data}load(e,t=!0){let n=i.sectionSize(t);if(!Buffer.isBuffer(e))throw new Error("Data must be a buffer");if(e.length!==n)throw new Error(`Data buffer not correct size (was ${e.length}, expected ${n})`);this.data=e}};dh.w=P0;dh.l=L0;dh.sh=xd;G3e.exports=dh});var K3e=S((N3n,J3e)=>{f();m();h();var FGe=nl(),wd=W3e(),zGe=ga().Vec3,j3e=256,eI=256,{w:Wn,l:Kn,sh:Ei}=wd,Si=eI>>4;J3e.exports=i=>{let e=si()(i);return class Y3e extends FGe{static get section(){return wd}static get w(){return Wn}static get l(){return Kn}static get h(){return eI}static get version(){return i.version}constructor(){super(i),this.skyLightSent=!0,this.minY=0,this.worldHeight=eI,this.sections=new Array(Si);for(let n=0;n<Si;n++)this.sections[n]=new wd;this.biome=Buffer.alloc(j3e)}toJson(){return JSON.stringify({skyLightSent:this.skyLightSent,biome:this.biome.toJSON(),blockEntities:this.blockEntities,sections:this.sections.map(n=>n.toJson())})}static fromJson(n){let r=JSON.parse(n),s=new Y3e;return s.skyLightSent=r.skyLightSent,s.biome=Buffer.from(r.biome),s.blockEntities=r.blockEntities,s.sections=r.sections.map(o=>wd.fromJson(o)),s}initialize(n){let r=0;for(let s=0;s<Si;s++)this.sections[s].initialize((o,a,l,c)=>{let d=n(o,a%Ei,l,c);if(d!=null)return a===0&&Si===0&&(this.biome.writeUInt8(d.biome.id||0,r),r++),d})}getBlock(n){let r=new e(this.getBlockType(n),this.getBiome(n),this.getBlockData(n));return r.light=this.getBlockLight(n),r.skyLight=this.getSkyLight(n),r.entity=this.getBlockEntity(n),r}setBlock(n,r){d2(r.type)&&this.setBlockType(n,r.type),d2(r.metadata)&&this.setBlockData(n,r.metadata),d2(r.biome)&&this.setBiome(n,r.biome.id),d2(r.skyLight)&&this.skyLightSent&&this.setSkyLight(n,r.skyLight),d2(r.light)&&this.setBlockLight(n,r.light),r.entity?this.setBlockEntity(n,r.entity):this.removeBlockEntity(n)}_getSection(n){return this.sections[n.y>>4]}getBlockStateId(n){let r=this._getSection(n);return r?r.getBlockStateId(B0(n)):0}getBlockType(n){let r=this._getSection(n);return r?r.getBlockType(B0(n)):0}getBlockData(n){let r=this._getSection(n);return r?r.getBlockData(B0(n)):0}getBlockLight(n){let r=this._getSection(n);return r?r.getBlockLight(B0(n)):0}getSkyLight(n){if(!this.skyLightSent)return 0;let r=this._getSection(n);return r?r.getSkyLight(B0(n)):15}getBiome(n){let r=$3e(n);return this.biome.readUInt8(r)}setBlockStateId(n,r){let s=this._getSection(n);return s&&s.setBlockStateId(B0(n),r)}setBlockType(n,r){let s=this.getBlockData(n);this.setBlockStateId(n,r<<4|s)}setBlockData(n,r){let s=this.getBlockType(n);this.setBlockStateId(n,s<<4|r)}setBlockLight(n,r){let s=this._getSection(n);return s&&s.setBlockLight(B0(n),r)}setSkyLight(n,r){let s=this._getSection(n);return s&&s.setSkyLight(B0(n),r)}setBiome(n,r){let s=$3e(n);this.biome.writeUInt8(r,s)}dumpBiomes(){}dumpLight(){}loadLight(){}dumpLightNew(){return{sections:this.sections.map(n=>n.toJson())}}loadLightNew(n){this.sections=n.sections.map(r=>wd.fromJson(r))}loadBiomes(){}dump(n=65535,r=!0){let s=wd.sectionSize(this.skyLightSent&&r),{chunkIncluded:o,chunkCount:a}=X3e(n),l=a*s+j3e,c=Buffer.alloc(l),d=0,u=Wn*Kn*Si*a*2,p=this.skyLightSent&&r?Wn*Kn*Si*a/2*5:void 0;for(let v=0;v<Si;v++)o[v]&&(d+=this.sections[v].dump().copy(c,d,0,Wn*Kn*Ei*2),u+=this.sections[v].dump().copy(c,u,Wn*Kn*Ei*2,Wn*Kn*Ei*2+Wn*Kn*Ei/2),this.skyLightSent&&r&&(p+=this.sections[v].dump().copy(c,p,Wn*Kn*Ei/2*5,Wn*Kn*Ei/2*5+Wn*Kn*Ei/2)));return this.biome.copy(c,Wn*Kn*Si*a*(this.skyLightSent&&r?3:5/2)),c}load(n,r=65535,s=!0,o=!0){if(!Buffer.isBuffer(n))throw new Error("Data must be a buffer");this.skyLightSent=s;let a=wd.sectionSize(s),{chunkIncluded:l,chunkCount:c}=X3e(r),d=0,u=Wn*Kn*Si*c*2,p=this.skyLightSent?Wn*Kn*Si*c/2*5:void 0;for(let _=0;_<Si;_++)if(l[_]){let b=Buffer.alloc(a);d+=n.copy(b,0,d,d+Wn*Kn*Ei*2),u+=n.copy(b,Wn*Kn*Ei*2,u,u+Wn*Kn*Ei/2),this.skyLightSent&&(p+=n.copy(b,Wn*Kn*Ei*5/2,p,p+Wn*Kn*Ei/2)),this.sections[_].load(b,s)}o&&n.copy(this.biome,0,Wn*Kn*Si*c*(s?3:5/2));let v=a*c+(o?Wn*Kn:0);if(n.length!==v)throw new Error(`Data buffer not correct size (was ${n.length}, expected ${v})`)}getMask(){return 65535}}};var d2=function(i){return i!==void 0},$3e=function(i){return i.z*Wn+i.x};function B0(i){return i.modulus(new zGe(Wn,Kn,Ei))}function X3e(i){let e=new Array(Si),t=0;for(let n=0;n<Si;++n)e[n]=i&1<<n,e[n]&&t++;return{chunkIncluded:e,chunkCount:t}}});var mr=S((F3n,Z3e)=>{f();m();h();Z3e.exports={CHUNK_HEIGHT:256,CHUNK_WIDTH:16,SECTION_HEIGHT:16,SECTION_WIDTH:16,BLOCK_SECTION_VOLUME:4096,NUM_SECTIONS:16,MIN_BITS_PER_BLOCK:4,MAX_BITS_PER_BLOCK:8,GLOBAL_BITS_PER_BLOCK:16,BIOME_SECTION_VOLUME:64,MIN_BITS_PER_BIOME:1,MAX_BITS_PER_BIOME:3,GLOBAL_BITS_PER_BIOME:6}});var nve=S(il=>{"use strict";f();m();h();Object.defineProperty(il,"__esModule",{value:!0});var Q3e=(bs(),Qn(io)),Ed={INVALID_ENCODING:"Invalid encoding provided. Please specify a valid encoding the internal Node.js Buffer supports.",INVALID_SMARTBUFFER_SIZE:"Invalid size provided. Size must be a valid integer greater than zero.",INVALID_SMARTBUFFER_BUFFER:"Invalid Buffer provided in SmartBufferOptions.",INVALID_SMARTBUFFER_OBJECT:"Invalid SmartBufferOptions object supplied to SmartBuffer constructor or factory methods.",INVALID_OFFSET:"An invalid offset value was provided.",INVALID_OFFSET_NON_NUMBER:"An invalid offset value was provided. A numeric value is required.",INVALID_LENGTH:"An invalid length value was provided.",INVALID_LENGTH_NON_NUMBER:"An invalid length value was provived. A numeric value is required.",INVALID_TARGET_OFFSET:"Target offset is beyond the bounds of the internal SmartBuffer data.",INVALID_TARGET_LENGTH:"Specified length value moves cursor beyong the bounds of the internal SmartBuffer data.",INVALID_READ_BEYOND_BOUNDS:"Attempted to read beyond the bounds of the managed data.",INVALID_WRITE_BEYOND_BOUNDS:"Attempted to write beyond the bounds of the managed data."};il.ERRORS=Ed;function HGe(i){if(!Q3e.Buffer.isEncoding(i))throw new Error(Ed.INVALID_ENCODING)}il.checkEncoding=HGe;function eve(i){return typeof i=="number"&&isFinite(i)&&jGe(i)}il.isFiniteInteger=eve;function tve(i,e){if(typeof i=="number"){if(!eve(i)||i<0)throw new Error(e?Ed.INVALID_OFFSET:Ed.INVALID_LENGTH)}else throw new Error(e?Ed.INVALID_OFFSET_NON_NUMBER:Ed.INVALID_LENGTH_NON_NUMBER)}function qGe(i){tve(i,!1)}il.checkLengthValue=qGe;function GGe(i){tve(i,!0)}il.checkOffsetValue=GGe;function WGe(i,e){if(i<0||i>e.length)throw new Error(Ed.INVALID_TARGET_OFFSET)}il.checkTargetOffset=WGe;function jGe(i){return typeof i=="number"&&isFinite(i)&&Math.floor(i)===i}function $Ge(i){if(typeof BigInt>"u")throw new Error("Platform does not support JS BigInt type.");if(typeof Q3e.Buffer.prototype[i]>"u")throw new Error(`Platform does not support Buffer.prototype.${i}.`)}il.bigIntAndBufferInt64Check=$Ge});var O0=S(nI=>{"use strict";f();m();h();Object.defineProperty(nI,"__esModule",{value:!0});var Nt=nve(),rve=4096,XGe="utf8",tI=class i{constructor(e){if(this.length=0,this._encoding=XGe,this._writeOffset=0,this._readOffset=0,i.isSmartBufferOptions(e))if(e.encoding&&(Nt.checkEncoding(e.encoding),this._encoding=e.encoding),e.size)if(Nt.isFiniteInteger(e.size)&&e.size>0)this._buff=Buffer.allocUnsafe(e.size);else throw new Error(Nt.ERRORS.INVALID_SMARTBUFFER_SIZE);else if(e.buff)if(Buffer.isBuffer(e.buff))this._buff=e.buff,this.length=e.buff.length;else throw new Error(Nt.ERRORS.INVALID_SMARTBUFFER_BUFFER);else this._buff=Buffer.allocUnsafe(rve);else{if(typeof e<"u")throw new Error(Nt.ERRORS.INVALID_SMARTBUFFER_OBJECT);this._buff=Buffer.allocUnsafe(rve)}}static fromSize(e,t){return new this({size:e,encoding:t})}static fromBuffer(e,t){return new this({buff:e,encoding:t})}static fromOptions(e){return new this(e)}static isSmartBufferOptions(e){let t=e;return t&&(t.encoding!==void 0||t.size!==void 0||t.buff!==void 0)}readInt8(e){return this._readNumberValue(Buffer.prototype.readInt8,1,e)}readInt16BE(e){return this._readNumberValue(Buffer.prototype.readInt16BE,2,e)}readInt16LE(e){return this._readNumberValue(Buffer.prototype.readInt16LE,2,e)}readInt32BE(e){return this._readNumberValue(Buffer.prototype.readInt32BE,4,e)}readInt32LE(e){return this._readNumberValue(Buffer.prototype.readInt32LE,4,e)}readBigInt64BE(e){return Nt.bigIntAndBufferInt64Check("readBigInt64BE"),this._readNumberValue(Buffer.prototype.readBigInt64BE,8,e)}readBigInt64LE(e){return Nt.bigIntAndBufferInt64Check("readBigInt64LE"),this._readNumberValue(Buffer.prototype.readBigInt64LE,8,e)}writeInt8(e,t){return this._writeNumberValue(Buffer.prototype.writeInt8,1,e,t),this}insertInt8(e,t){return this._insertNumberValue(Buffer.prototype.writeInt8,1,e,t)}writeInt16BE(e,t){return this._writeNumberValue(Buffer.prototype.writeInt16BE,2,e,t)}insertInt16BE(e,t){return this._insertNumberValue(Buffer.prototype.writeInt16BE,2,e,t)}writeInt16LE(e,t){return this._writeNumberValue(Buffer.prototype.writeInt16LE,2,e,t)}insertInt16LE(e,t){return this._insertNumberValue(Buffer.prototype.writeInt16LE,2,e,t)}writeInt32BE(e,t){return this._writeNumberValue(Buffer.prototype.writeInt32BE,4,e,t)}insertInt32BE(e,t){return this._insertNumberValue(Buffer.prototype.writeInt32BE,4,e,t)}writeInt32LE(e,t){return this._writeNumberValue(Buffer.prototype.writeInt32LE,4,e,t)}insertInt32LE(e,t){return this._insertNumberValue(Buffer.prototype.writeInt32LE,4,e,t)}writeBigInt64BE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigInt64BE"),this._writeNumberValue(Buffer.prototype.writeBigInt64BE,8,e,t)}insertBigInt64BE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigInt64BE"),this._insertNumberValue(Buffer.prototype.writeBigInt64BE,8,e,t)}writeBigInt64LE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigInt64LE"),this._writeNumberValue(Buffer.prototype.writeBigInt64LE,8,e,t)}insertBigInt64LE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigInt64LE"),this._insertNumberValue(Buffer.prototype.writeBigInt64LE,8,e,t)}readUInt8(e){return this._readNumberValue(Buffer.prototype.readUInt8,1,e)}readUInt16BE(e){return this._readNumberValue(Buffer.prototype.readUInt16BE,2,e)}readUInt16LE(e){return this._readNumberValue(Buffer.prototype.readUInt16LE,2,e)}readUInt32BE(e){return this._readNumberValue(Buffer.prototype.readUInt32BE,4,e)}readUInt32LE(e){return this._readNumberValue(Buffer.prototype.readUInt32LE,4,e)}readBigUInt64BE(e){return Nt.bigIntAndBufferInt64Check("readBigUInt64BE"),this._readNumberValue(Buffer.prototype.readBigUInt64BE,8,e)}readBigUInt64LE(e){return Nt.bigIntAndBufferInt64Check("readBigUInt64LE"),this._readNumberValue(Buffer.prototype.readBigUInt64LE,8,e)}writeUInt8(e,t){return this._writeNumberValue(Buffer.prototype.writeUInt8,1,e,t)}insertUInt8(e,t){return this._insertNumberValue(Buffer.prototype.writeUInt8,1,e,t)}writeUInt16BE(e,t){return this._writeNumberValue(Buffer.prototype.writeUInt16BE,2,e,t)}insertUInt16BE(e,t){return this._insertNumberValue(Buffer.prototype.writeUInt16BE,2,e,t)}writeUInt16LE(e,t){return this._writeNumberValue(Buffer.prototype.writeUInt16LE,2,e,t)}insertUInt16LE(e,t){return this._insertNumberValue(Buffer.prototype.writeUInt16LE,2,e,t)}writeUInt32BE(e,t){return this._writeNumberValue(Buffer.prototype.writeUInt32BE,4,e,t)}insertUInt32BE(e,t){return this._insertNumberValue(Buffer.prototype.writeUInt32BE,4,e,t)}writeUInt32LE(e,t){return this._writeNumberValue(Buffer.prototype.writeUInt32LE,4,e,t)}insertUInt32LE(e,t){return this._insertNumberValue(Buffer.prototype.writeUInt32LE,4,e,t)}writeBigUInt64BE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigUInt64BE"),this._writeNumberValue(Buffer.prototype.writeBigUInt64BE,8,e,t)}insertBigUInt64BE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigUInt64BE"),this._insertNumberValue(Buffer.prototype.writeBigUInt64BE,8,e,t)}writeBigUInt64LE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigUInt64LE"),this._writeNumberValue(Buffer.prototype.writeBigUInt64LE,8,e,t)}insertBigUInt64LE(e,t){return Nt.bigIntAndBufferInt64Check("writeBigUInt64LE"),this._insertNumberValue(Buffer.prototype.writeBigUInt64LE,8,e,t)}readFloatBE(e){return this._readNumberValue(Buffer.prototype.readFloatBE,4,e)}readFloatLE(e){return this._readNumberValue(Buffer.prototype.readFloatLE,4,e)}writeFloatBE(e,t){return this._writeNumberValue(Buffer.prototype.writeFloatBE,4,e,t)}insertFloatBE(e,t){return this._insertNumberValue(Buffer.prototype.writeFloatBE,4,e,t)}writeFloatLE(e,t){return this._writeNumberValue(Buffer.prototype.writeFloatLE,4,e,t)}insertFloatLE(e,t){return this._insertNumberValue(Buffer.prototype.writeFloatLE,4,e,t)}readDoubleBE(e){return this._readNumberValue(Buffer.prototype.readDoubleBE,8,e)}readDoubleLE(e){return this._readNumberValue(Buffer.prototype.readDoubleLE,8,e)}writeDoubleBE(e,t){return this._writeNumberValue(Buffer.prototype.writeDoubleBE,8,e,t)}insertDoubleBE(e,t){return this._insertNumberValue(Buffer.prototype.writeDoubleBE,8,e,t)}writeDoubleLE(e,t){return this._writeNumberValue(Buffer.prototype.writeDoubleLE,8,e,t)}insertDoubleLE(e,t){return this._insertNumberValue(Buffer.prototype.writeDoubleLE,8,e,t)}readString(e,t){let n;typeof e=="number"?(Nt.checkLengthValue(e),n=Math.min(e,this.length-this._readOffset)):(t=e,n=this.length-this._readOffset),typeof t<"u"&&Nt.checkEncoding(t);let r=this._buff.slice(this._readOffset,this._readOffset+n).toString(t||this._encoding);return this._readOffset+=n,r}insertString(e,t,n){return Nt.checkOffsetValue(t),this._handleString(e,!0,t,n)}writeString(e,t,n){return this._handleString(e,!1,t,n)}readStringNT(e){typeof e<"u"&&Nt.checkEncoding(e);let t=this.length;for(let r=this._readOffset;r<this.length;r++)if(this._buff[r]===0){t=r;break}let n=this._buff.slice(this._readOffset,t);return this._readOffset=t+1,n.toString(e||this._encoding)}insertStringNT(e,t,n){return Nt.checkOffsetValue(t),this.insertString(e,t,n),this.insertUInt8(0,t+e.length),this}writeStringNT(e,t,n){return this.writeString(e,t,n),this.writeUInt8(0,typeof t=="number"?t+e.length:this.writeOffset),this}readBuffer(e){typeof e<"u"&&Nt.checkLengthValue(e);let t=typeof e=="number"?e:this.length,n=Math.min(this.length,this._readOffset+t),r=this._buff.slice(this._readOffset,n);return this._readOffset=n,r}insertBuffer(e,t){return Nt.checkOffsetValue(t),this._handleBuffer(e,!0,t)}writeBuffer(e,t){return this._handleBuffer(e,!1,t)}readBufferNT(){let e=this.length;for(let n=this._readOffset;n<this.length;n++)if(this._buff[n]===0){e=n;break}let t=this._buff.slice(this._readOffset,e);return this._readOffset=e+1,t}insertBufferNT(e,t){return Nt.checkOffsetValue(t),this.insertBuffer(e,t),this.insertUInt8(0,t+e.length),this}writeBufferNT(e,t){return typeof t<"u"&&Nt.checkOffsetValue(t),this.writeBuffer(e,t),this.writeUInt8(0,typeof t=="number"?t+e.length:this._writeOffset),this}clear(){return this._writeOffset=0,this._readOffset=0,this.length=0,this}remaining(){return this.length-this._readOffset}get readOffset(){return this._readOffset}set readOffset(e){Nt.checkOffsetValue(e),Nt.checkTargetOffset(e,this),this._readOffset=e}get writeOffset(){return this._writeOffset}set writeOffset(e){Nt.checkOffsetValue(e),Nt.checkTargetOffset(e,this),this._writeOffset=e}get encoding(){return this._encoding}set encoding(e){Nt.checkEncoding(e),this._encoding=e}get internalBuffer(){return this._buff}toBuffer(){return this._buff.slice(0,this.length)}toString(e){let t=typeof e=="string"?e:this._encoding;return Nt.checkEncoding(t),this._buff.toString(t,0,this.length)}destroy(){return this.clear(),this}_handleString(e,t,n,r){let s=this._writeOffset,o=this._encoding;typeof n=="number"?s=n:typeof n=="string"&&(Nt.checkEncoding(n),o=n),typeof r=="string"&&(Nt.checkEncoding(r),o=r);let a=Buffer.byteLength(e,o);return t?this.ensureInsertable(a,s):this._ensureWriteable(a,s),this._buff.write(e,s,a,o),t?this._writeOffset+=a:typeof n=="number"?this._writeOffset=Math.max(this._writeOffset,s+a):this._writeOffset+=a,this}_handleBuffer(e,t,n){let r=typeof n=="number"?n:this._writeOffset;return t?this.ensureInsertable(e.length,r):this._ensureWriteable(e.length,r),e.copy(this._buff,r),t?this._writeOffset+=e.length:typeof n=="number"?this._writeOffset=Math.max(this._writeOffset,r+e.length):this._writeOffset+=e.length,this}ensureReadable(e,t){let n=this._readOffset;if(typeof t<"u"&&(Nt.checkOffsetValue(t),n=t),n<0||n+e>this.length)throw new Error(Nt.ERRORS.INVALID_READ_BEYOND_BOUNDS)}ensureInsertable(e,t){Nt.checkOffsetValue(t),this._ensureCapacity(this.length+e),t<this.length&&this._buff.copy(this._buff,t+e,t,this._buff.length),t+e>this.length?this.length=t+e:this.length+=e}_ensureWriteable(e,t){let n=typeof t=="number"?t:this._writeOffset;this._ensureCapacity(n+e),n+e>this.length&&(this.length=n+e)}_ensureCapacity(e){let t=this._buff.length;if(e>t){let n=this._buff,r=t*3/2+1;r<e&&(r=e),this._buff=Buffer.allocUnsafe(r),n.copy(this._buff,0,0,t)}}_readNumberValue(e,t,n){this.ensureReadable(t,n);let r=e.call(this._buff,typeof n=="number"?n:this._readOffset);return typeof n>"u"&&(this._readOffset+=t),r}_insertNumberValue(e,t,n,r){return Nt.checkOffsetValue(r),this.ensureInsertable(t,r),e.call(this._buff,n,r),this._writeOffset+=t,this}_writeNumberValue(e,t,n,r){if(typeof r=="number"){if(r<0)throw new Error(Nt.ERRORS.INVALID_WRITE_BEYOND_BOUNDS);Nt.checkOffsetValue(r)}let s=typeof r=="number"?r:this._writeOffset;return this._ensureWriteable(t,s),e.call(this._buff,n,s),typeof r=="number"?this._writeOffset=Math.max(this._writeOffset,s+t):this._writeOffset+=t,this}};nI.SmartBuffer=tI});var $r=S((Z3n,ive)=>{f();m();h();function YGe(i){return 32-Math.clz32(i)}ive.exports=YGe});var Sd=S((nvn,sve)=>{f();m();h();var JGe=$r(),rI=class i{constructor(e){if(e===null)return;e.data||(e.data=new Uint32Array(Math.ceil(e.capacity*e.bitsPerValue/64)*2));let t=(1<<e.bitsPerValue)-1;this.data=e.data.buffer?new Uint32Array(e.data.buffer):Uint32Array.from(e.data),this.capacity=e.capacity,this.bitsPerValue=e.bitsPerValue,this.valueMask=t}toJson(){return JSON.stringify({data:Array.from(this.data),capacity:this.capacity,bitsPerValue:this.bitsPerValue,valueMask:this.valueMask})}static fromJson(e){return new i(JSON.parse(e))}toArray(){let e=[];for(let t=0;t<this.capacity;t++)e.push(this.get(t));return e}static fromArray(e,t){let n=[],r=0,s=0,o=0;for(;r<e.length;)s|=e[r]<<o,o+=t,o>32&&(n.push(s&4294967295),o-=32,s=e[r]>>>t-o),r++;o>0&&n.push(s);let a=new i(null);return a.data=n,a.capacity=e.length,a.bitsPerValue=t,a.valueMask=(1<<t)-1,a}get(e){let t=e*this.bitsPerValue,n=t>>>5,r=this.data[n],s=t&31,o=r>>>s;if(s+this.bitsPerValue>32){let l=this.data[n+1];o|=l<<32-s}return o&this.valueMask}set(e,t){let n=e*this.bitsPerValue,r=n>>>5,s=n&31;this.data[r]=(this.data[r]&~(this.valueMask<<s)|(t&this.valueMask)<<s)>>>0;let o=s+this.bitsPerValue;o>32&&(this.data[r+1]=(this.data[r+1]&~((1<<o-32)-1)|t>>32-s)>>>0)}resizeTo(e){let t=new i({bitsPerValue:e,capacity:this.capacity});for(let n=0;n<this.capacity;++n){let r=this.get(n);if(JGe(r)>e)throw new Error("existing value in BitArray can't fit in new bits per value");t.set(n,r)}return t}length(){return this.data.length/2}readBuffer(e,t=this.data.length){if(t!==this.data.length){this.data=new Uint32Array(t),this.readOffset=t*4;return}for(let n=0;n<this.data.length;n+=2)this.data[n+1]=e.readUInt32BE(),this.data[n]=e.readUInt32BE();return this}writeBuffer(e){for(let t=0;t<this.data.length;t+=2)e.writeUInt32BE(this.data[t+1]),e.writeUInt32BE(this.data[t]);return this}getBitsPerValue(){return this.bitsPerValue}};sve.exports=rI});var Ji=S(iI=>{f();m();h();iI.write=(i,e)=>{do{let t=e&127;e>>>=7,e!==0&&(t|=128),i.writeUInt8(t)}while(e!==0)};iI.read=i=>{let e=0,t=0,n;do{n=i.readUInt8();let r=n&127;if(t|=r<<7*e,e++,e>5)throw new Error("varint is too big")}while(n&128);return t}});var ave=S((dvn,ove)=>{f();m();h();var Ad=Sd(),KGe=$r(),Md=mr(),y4=Ji(),ZGe=13;function uh(i){return i.y<<8|i.z<<4|i.x}var sI=class i{constructor(e={}){if(e!==null){if(typeof e.solidBlockCount>"u"&&(e.solidBlockCount=0,e.data))for(let t=0;t<Md.BLOCK_SECTION_VOLUME;t++)e.data.get(t)!==0&&(e.solidBlockCount+=1);e.data||(e.data=new Ad({bitsPerValue:4,capacity:Md.BLOCK_SECTION_VOLUME})),e.palette===void 0&&(e.palette=[0]),e.blockLight||(e.blockLight=new Ad({bitsPerValue:4,capacity:Md.BLOCK_SECTION_VOLUME})),e.skyLight===void 0&&(e.skyLight=new Ad({bitsPerValue:4,capacity:Md.BLOCK_SECTION_VOLUME})),this.data=e.data,this.palette=e.palette,this.isDirty=!1,this.blockLight=e.blockLight,this.skyLight=e.skyLight,this.solidBlockCount=e.solidBlockCount,this.maxBitsPerBlock=e.maxBitsPerBlock||ZGe}}toJson(){return JSON.stringify({data:this.data.toJson(),palette:this.palette,isDirty:this.isDirty,blockLight:this.blockLight.toJson(),skyLight:this.skyLight?this.skyLight.toJson():this.skyLight,solidBlockCount:this.solidBlockCount})}static fromJson(e){let t=JSON.parse(e);return new i({data:Ad.fromJson(t.data),palette:t.palette,blockLight:Ad.fromJson(t.blockLight),skyLight:t.skyLight?Ad.fromJson(t.skyLight):t.skyLight,solidBlockCount:t.solidBlockCount})}getBlock(e){let t=this.data.get(uh(e));return this.palette!==null&&(t=this.palette[t]),t}setBlock(e,t){let n=uh(e),r;if(this.palette!==null){let o=this.palette.indexOf(t);if(o>=0)r=o;else{this.palette.push(t),r=this.palette.length-1;let a=KGe(r);if(a>this.data.getBitsPerValue())if(a<=Md.MAX_BITS_PER_BLOCK)this.data=this.data.resizeTo(a);else{let l=new Ad({bitsPerValue:this.maxBitsPerBlock,capacity:Md.BLOCK_SECTION_VOLUME});for(let c=0;c<Md.BLOCK_SECTION_VOLUME;c++){let d=this.palette[this.data.get(c)];l.set(c,d)}this.palette=null,r=t,this.data=l}}}else r=t;let s=this.getBlock(e);t===0&&s!==0?this.solidBlockCount-=1:t!==0&&s===0&&(this.solidBlockCount+=1),this.data.set(n,r)}getBlockLight(e){return this.blockLight.get(uh(e))}getSkyLight(e){return this.skyLight?this.skyLight.get(uh(e)):0}setBlockLight(e,t){return this.blockLight.set(uh(e),t)}setSkyLight(e,t){return this.skyLight?this.skyLight.set(uh(e),t):0}isEmpty(){return this.solidBlockCount===0}write(e){e.writeUInt8(this.data.getBitsPerValue()),this.palette!==null?(y4.write(e,this.palette.length),this.palette.forEach(t=>{y4.write(e,t)})):y4.write(e,0),y4.write(e,this.data.length()),this.data.writeBuffer(e),this.blockLight.writeBuffer(e),this.skyLight!==null&&this.skyLight.writeBuffer(e)}};ove.exports=sI});var fve=S((mvn,uve)=>{f();m();h();var lve=O0().SmartBuffer,b4=ave(),Ks=mr(),u2=Sd(),x4=Ji(),QGe=nl(),eWe=$r(),f2=i=>i!==void 0;uve.exports=(i,e)=>class dve extends QGe{static get section(){return b4}constructor(){super(e),this.sectionMask=0,this.skyLightSent=!0,this.sections=Array(Ks.NUM_SECTIONS).fill(null),this.biomes=Array(Ks.SECTION_WIDTH*Ks.SECTION_WIDTH).fill(1),this.maxBitsPerBlock=eWe(Object.values(e.blocks).reduce((n,r)=>Math.max(n,r.maxStateId),0))}toJson(){return JSON.stringify({biomes:this.biomes,blockEntities:this.blockEntities,sectionMask:this.sectionMask,sections:this.sections.map(n=>n===null?null:n.toJson())})}static fromJson(n){let r=JSON.parse(n),s=new dve;return s.biomes=r.biomes,s.blockEntities=r.blockEntities,s.sectionMask=r.sectionMask,s.sections=r.sections.map(o=>o===null?null:b4.fromJson(o)),s}initialize(n){let r={x:0,y:0,z:0};for(r.y=0;r.y<Ks.CHUNK_HEIGHT;r.y++)for(r.z=0;r.z<Ks.SECTION_WIDTH;r.z++)for(r.x=0;r.x<Ks.SECTION_WIDTH;r.x++){let s=n(r.x,r.y,r.z);s!==null&&this.setBlock(r,s)}}getBlock(n){let r=new i(this.getBlockType(n),this.getBiome(n),this.getBlockData(n));return r.light=this.getBlockLight(n),r.skyLight=this.getSkyLight(n),r.entity=this.getBlockEntity(n),r}setBlock(n,r){f2(r.type)&&this.setBlockType(n,r.type),f2(r.metadata)&&this.setBlockData(n,r.metadata),f2(r.biome)&&this.setBiome(n,r.biome.id),f2(r.skyLight)&&this.skyLightSent&&this.setSkyLight(n,r.skyLight),f2(r.light)&&this.setBlockLight(n,r.light),r.entity?this.setBlockEntity(n,r.entity):this.removeBlockEntity(n)}getBlockType(n){return this.getBlockStateId(n)>>4}getBlockData(n){return this.getBlockStateId(n)&15}getBlockStateId(n){let r=this.sections[n.y>>4];return r?r.getBlock(fh(n)):0}getBlockLight(n){let r=this.sections[n.y>>4];return r?r.getBlockLight(fh(n)):15}getSkyLight(n){let r=this.sections[n.y>>4];return r?r.getSkyLight(fh(n)):15}getBiome(n){return this.biomes[cve(n)]}setBlockType(n,r){let s=this.getBlockData(n);this.setBlockStateId(n,r<<4|s)}setBlockData(n,r){let s=this.getBlockType(n);this.setBlockStateId(n,s<<4|r)}setBlockStateId(n,r){let s=n.y>>4;if(s<0||s>=16)return;let o=this.sections[s];if(!o){if(r===0)return;o=new b4({maxBitsPerBlock:this.maxBitsPerBlock}),this.sectionMask|=1<<s,this.sections[s]=o}o.setBlock(fh(n),r)}setBlockLight(n,r){let s=this.sections[n.y>>4];return s&&s.setBlockLight(fh(n),r)}setSkyLight(n,r){let s=this.sections[n.y>>4];return s&&s.setSkyLight(fh(n),r)}setBiome(n,r){this.biomes[cve(n)]=r}getMask(){return this.sectionMask}dumpBiomes(){}dumpLight(){}loadLight(){}dumpLightNew(){return{skyLightSections:this.sections.map(n=>n===null?null:n.skyLight.toJson()),blockLightSections:this.sections.map(n=>n===null?null:n.blockLight.toJson()),skyLightMask:0,blockLightMask:0,emptySkyLightMask:0,emptyBlockLightMask:0}}loadLightNew(n){let{skyLightSections:r,blockLightSections:s}=n;r.forEach((o,a)=>{this.sections[a]!==null&&(this.sections[a].skyLight=u2.fromJson(o))}),s.forEach((o,a)=>{this.sections[a]!==null&&(this.sections[a].blockLight=u2.fromJson(o))})}loadBiomes(){}dump(){let n=new lve;return this.sections.forEach((r,s)=>{r!==null&&!r.isEmpty()&&r.write(n)}),this.biomes.forEach(r=>{n.writeUInt8(r)}),n.length?n.toBuffer():Buffer.alloc(4096)}load(n,r=65535,s=!0,o=!0){let a=lve.fromBuffer(n);this.skyLightSent=s,this.sectionMask|=r;for(let l=0;l<Ks.NUM_SECTIONS;++l){if(!(r>>l&1))continue;let c,d,u=a.readUInt8();if(u<=Ks.MAX_BITS_PER_BLOCK){c=[];let b=x4.read(a);for(let y=0;y<b;++y)c.push(x4.read(a))}else x4.read(a),c=null;let p=new u2({bitsPerValue:u>Ks.MAX_BITS_PER_BLOCK?this.maxBitsPerBlock:u,capacity:4096}).readBuffer(a,x4.read(a)*2),v=new u2({bitsPerValue:4,capacity:4096}).readBuffer(a);s&&(d=new u2({bitsPerValue:4,capacity:4096}).readBuffer(a));let _=new b4({data:p,palette:c,blockLight:v,...s?{skyLight:d}:{skyLight:null},maxBitsPerBlock:this.maxBitsPerBlock});this.sections[l]=_}if(o){let l={x:0,y:0,z:0};for(l.z=0;l.z<Ks.SECTION_WIDTH;l.z++)for(l.x=0;l.x<Ks.SECTION_WIDTH;l.x++)this.setBiome(l,a.readUInt8())}}};function cve(i){return i.z*16|i.x}function fh(i){return{x:i.x,y:i.y&15,z:i.z}}});var h2=S((_vn,hve)=>{f();m();h();var tWe=mr();function nWe(i){let e=si()(i),t=fve()(e,i);return t.h=tWe.CHUNK_HEIGHT,t.version=i.version,t}hve.exports=nWe});var pve=S((wvn,mve)=>{f();m();h();var kd=Sd(),rWe=$r(),Td=mr(),oI=Ji(),iWe=13;function hh(i){return i.y*16*16+i.z*16+i.x}var aI=class i{constructor(e={}){if(e!==null){if(typeof e.solidBlockCount>"u"&&(e.solidBlockCount=0,e.data))for(let t=0;t<Td.BLOCK_SECTION_VOLUME;t++)e.data.get(t)!==0&&(e.solidBlockCount+=1);e.data||(e.data=new kd({bitsPerValue:4,capacity:Td.BLOCK_SECTION_VOLUME})),e.palette===void 0&&(e.palette=[0]),e.blockLight||(e.blockLight=new kd({bitsPerValue:4,capacity:Td.BLOCK_SECTION_VOLUME})),e.skyLight===void 0&&(e.skyLight=new kd({bitsPerValue:4,capacity:Td.BLOCK_SECTION_VOLUME})),this.data=e.data,this.palette=e.palette,this.isDirty=!1,this.blockLight=e.blockLight,this.skyLight=e.skyLight,this.solidBlockCount=e.solidBlockCount,this.maxBitsPerBlock=e.maxBitsPerBlock||iWe}}toJson(){return JSON.stringify({data:this.data.toJson(),palette:this.palette,isDirty:this.isDirty,blockLight:this.blockLight.toJson(),skyLight:this.skyLight?this.skyLight.toJson():this.skyLight,solidBlockCount:this.solidBlockCount})}static fromJson(e){let t=JSON.parse(e);return new i({data:kd.fromJson(t.data),palette:t.palette,blockLight:kd.fromJson(t.blockLight),skyLight:t.skyLight?kd.fromJson(t.skyLight):t.skyLight,solidBlockCount:t.solidBlockCount})}getBlock(e){let t=this.data.get(hh(e));return this.palette!==null&&(t=this.palette[t]),t}setBlock(e,t){let n=hh(e),r;if(this.palette!==null){let o=this.palette.indexOf(t);if(o>=0)r=o;else{this.palette.push(t),r=this.palette.length-1;let a=rWe(r);if(a>this.data.getBitsPerValue())if(a<=Td.MAX_BITS_PER_BLOCK)this.data=this.data.resizeTo(a);else{let l=new kd({bitsPerValue:this.maxBitsPerBlock,capacity:Td.BLOCK_SECTION_VOLUME});for(let c=0;c<Td.BLOCK_SECTION_VOLUME;c++){let d=this.palette[this.data.get(c)];l.set(c,d)}this.palette=null,r=t,this.data=l}}}else r=t;let s=this.getBlock(e);t===0&&s!==0?this.solidBlockCount-=1:t!==0&&s===0&&(this.solidBlockCount+=1),this.data.set(n,r)}getBlockLight(e){return this.blockLight.get(hh(e))}getSkyLight(e){return this.skyLight?this.skyLight.get(hh(e)):0}setBlockLight(e,t){return this.blockLight.set(hh(e),t)}setSkyLight(e,t){return this.skyLight?this.skyLight.set(hh(e),t):0}isEmpty(){return this.solidBlockCount===0}write(e){e.writeUInt8(this.data.getBitsPerValue()),this.palette!==null&&(oI.write(e,this.palette.length),this.palette.forEach(t=>{oI.write(e,t)})),oI.write(e,this.data.length()),this.data.writeBuffer(e),this.blockLight.writeBuffer(e),this.skyLight!==null&&this.skyLight.writeBuffer(e)}};mve.exports=aI});var bve=S((Mvn,yve)=>{f();m();h();var vve=O0().SmartBuffer,w4=pve(),Zs=mr(),m2=Sd(),lI=Ji(),sWe=nl(),oWe=$r();yve.exports=(i,e)=>class _ve extends sWe{static get section(){return w4}constructor(){super(e),this.sectionMask=0,this.skyLightSent=!0,this.sections=Array(Zs.NUM_SECTIONS).fill(null),this.biomes=Array(Zs.SECTION_WIDTH*Zs.SECTION_WIDTH).fill(1),this.maxBitsPerBlock=oWe(Object.values(e.blocks).reduce((n,r)=>Math.max(n,r.maxStateId),0))}toJson(){return JSON.stringify({biomes:this.biomes,blockEntities:this.blockEntities,sectionMask:this.sectionMask,sections:this.sections.map(n=>n===null?null:n.toJson())})}static fromJson(n){let r=JSON.parse(n),s=new _ve;return s.biomes=r.biomes,s.blockEntities=r.blockEntities,s.sectionMask=r.sectionMask,s.sections=r.sections.map(o=>o===null?null:w4.fromJson(o)),s}initialize(n){let r={x:0,y:0,z:0};for(r.y=0;r.y<Zs.CHUNK_HEIGHT;r.y++)for(r.z=0;r.z<Zs.SECTION_WIDTH;r.z++)for(r.x=0;r.x<Zs.SECTION_WIDTH;r.x++){let s=n(r.x,r.y,r.z);s!==null&&this.setBlock(r,s)}}getBlock(n){let r=this.sections[n.y>>4],s=this.getBiome(n);if(!r)return i.fromStateId(0,s);let o=r.getBlock(Id(n)),a=i.fromStateId(o,s);return a.light=this.getBlockLight(n),a.skyLight=this.getSkyLight(n),a.entity=this.getBlockEntity(n),a}setBlock(n,r){typeof r.stateId<"u"&&this.setBlockStateId(n,r.stateId),typeof r.biome<"u"&&this.setBiome(n,r.biome.id),typeof r.skyLight<"u"&&this.skyLightSent&&this.setSkyLight(n,r.skyLight),typeof r.light<"u"&&this.setBlockLight(n,r.light),r.entity?this.setBlockEntity(n,r.entity):this.removeBlockEntity(n)}getBlockType(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].id}getBlockData(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].metadata}getBlockStateId(n){let r=this.sections[n.y>>4];return r?r.getBlock(Id(n)):0}getBlockLight(n){let r=this.sections[n.y>>4];if(!r)return 15;let s=Id(n);return r.getBlockLight(s)}getSkyLight(n){let r=this.sections[n.y>>4];if(!r)return 15;let s=Id(n);return r.getSkyLight(s)}getBiome(n){return this.biomes[gve(n)]}getBiomeColor(n){return{r:0,g:0,b:0}}setBlockType(n,r){this.setBlockStateId(n,e.blocks[r].minStateId)}setBlockData(n,r){this.setBlockStateId(n,e.blocksByStateId[this.getBlockStateId(n)].minStateId+r)}setBlockStateId(n,r){let s=n.y>>4;if(s<0||s>=16)return;let o=this.sections[s];if(!o){if(r===0)return;o=new w4({maxBitsPerBlock:this.maxBitsPerBlock}),this.sectionMask|=1<<s,this.sections[s]=o}o.setBlock(Id(n),r)}setBlockLight(n,r){let s=this.sections[n.y>>4];return s&&s.setBlockLight(Id(n),r)}setSkyLight(n,r){let s=this.sections[n.y>>4];return s&&s.setSkyLight(Id(n),r)}setBiome(n,r){this.biomes[gve(n)]=r}getMask(){return this.sectionMask}dumpBiomes(){}dumpLight(){}loadLight(){}dumpLightNew(){return{skyLightSections:this.sections.map(n=>n===null?null:n.skyLight.toJson()),blockLightSections:this.sections.map(n=>n===null?null:n.blockLight.toJson()),skyLightMask:0,blockLightMask:0,emptySkyLightMask:0,emptyBlockLightMask:0}}loadLightNew(n){let{skyLightSections:r,blockLightSections:s}=n;r.forEach((o,a)=>{this.sections[a]!==null&&(this.sections[a].skyLight=m2.fromJson(o))}),s.forEach((o,a)=>{this.sections[a]!==null&&(this.sections[a].blockLight=m2.fromJson(o))})}loadBiomes(){}dump(){let n=new vve;return this.sections.forEach((r,s)=>{r!==null&&!r.isEmpty()&&r.write(n)}),this.biomes.forEach(r=>{n.writeInt32BE(r)}),n.length?n.toBuffer():Buffer.alloc(4096)}load(n,r=65535,s=!0,o=!0){let a=vve.fromBuffer(n);this.skyLightSent=s,this.sectionMask|=r;for(let l=0;l<Zs.NUM_SECTIONS;++l){if(!(r>>l&1))continue;let c,d,u=a.readUInt8();if(u<=Zs.MAX_BITS_PER_BLOCK){c=[];let y=lI.read(a);for(let g=0;g<y;++g)c.push(lI.read(a))}else c=null;let p=new m2({bitsPerValue:u>Zs.MAX_BITS_PER_BLOCK?this.maxBitsPerBlock:u,capacity:4096}).readBuffer(a,lI.read(a)*2),v=new m2({bitsPerValue:4,capacity:4096}),_=new Uint8Array(2048);for(let y=0;y<2048;y++)_[y]=a.readUInt8();for(let y=0;y<2048;y++){let g=_[y],w=y*2,x=y*2+1,E=g&15,A=g>>4&15,C=w%16,R=Math.floor(w/16%16),L=Math.floor(w/256),M=x%16,k=Math.floor(x/16%16),F=Math.floor(x/256),Z=L*16*16+R*16+C,U=F*16*16+k*16+M;v.set(Z,E),x<4096&&v.set(U,A)}if(s){d=new m2({bitsPerValue:4,capacity:4096});let y=new Uint8Array(2048);for(let g=0;g<2048;g++)y[g]=a.readUInt8();for(let g=0;g<2048;g++){let w=y[g],x=g*2,E=g*2+1,A=w&15,C=w>>4&15,R=x%16,L=Math.floor(x/16%16),M=Math.floor(x/256),k=E%16,F=Math.floor(E/16%16),Z=Math.floor(E/256),U=M*16*16+L*16+R,H=Z*16*16+F*16+k;d.set(U,A),E<4096&&d.set(H,C)}}let b=new w4({data:p,palette:c,blockLight:v,maxBitsPerBlock:this.maxBitsPerBlock,...s?{skyLight:d}:{skyLight:null}});this.sections[l]=b}if(o){let l={x:0,y:0,z:0};for(l.z=0;l.z<Zs.SECTION_WIDTH;l.z++)for(l.x=0;l.x<Zs.SECTION_WIDTH;l.x++)this.setBiome(l,a.readInt32BE())}}};function gve(i){return i.z*16|i.x}function Id(i){return{x:i.x,y:i.y&15,z:i.z}}});var wve=S((Rvn,xve)=>{f();m();h();var aWe=mr();function lWe(i){let e=si()(i),t=bve()(e,i);return t.h=aWe.CHUNK_HEIGHT,t.version=i.version,t}xve.exports=lWe});var p2=S((Bvn,Sve)=>{f();m();h();var cWe=$r(),mh=mr(),cI=Ji();function Eve(i){return i.y<<8|i.z<<4|i.x}Sve.exports=i=>{class e{constructor(n={}){if(n!==null){if(typeof n.solidBlockCount>"u"&&(n.solidBlockCount=0,n.data))for(let r=0;r<mh.BLOCK_SECTION_VOLUME;r++)n.data.get(r)!==0&&(n.solidBlockCount+=1);n.data||(n.data=new i({bitsPerValue:4,capacity:mh.BLOCK_SECTION_VOLUME})),n.palette===void 0&&(n.palette=[0]),this.data=n.data,this.palette=n.palette,this.isDirty=!1,this.solidBlockCount=n.solidBlockCount,this.maxBitsPerBlock=n.maxBitsPerBlock??mh.GLOBAL_BITS_PER_BLOCK}}toJson(){return JSON.stringify({data:this.data.toJson(),palette:this.palette,isDirty:this.isDirty,solidBlockCount:this.solidBlockCount})}static fromJson(n){let r=JSON.parse(n);return new e({data:i.fromJson(r.data),palette:r.palette,solidBlockCount:r.solidBlockCount})}getBlock(n){let r=this.data.get(Eve(n));return this.palette!==null&&(r=this.palette[r]),r}setBlock(n,r){let s=Eve(n),o;if(this.palette!==null){let l=this.palette.indexOf(r);if(l>=0)o=l;else{this.palette.push(r),o=this.palette.length-1;let c=cWe(o);if(c>this.data.getBitsPerValue())if(c<=mh.MAX_BITS_PER_BLOCK)this.data=this.data.resizeTo(c);else{let d=new i({bitsPerValue:this.maxBitsPerBlock,capacity:mh.BLOCK_SECTION_VOLUME});for(let u=0;u<mh.BLOCK_SECTION_VOLUME;u++){let p=this.palette[this.data.get(u)];d.set(u,p)}this.palette=null,o=r,this.data=d}}}else o=r;let a=this.getBlock(n);r===0&&a!==0?this.solidBlockCount-=1:r!==0&&a===0&&(this.solidBlockCount+=1),this.data.set(s,o)}isEmpty(){return this.solidBlockCount===0}write(n){n.writeInt16BE(this.solidBlockCount),n.writeUInt8(this.data.getBitsPerValue()),this.palette!==null&&(cI.write(n,this.palette.length),this.palette.forEach(r=>{cI.write(n,r)})),cI.write(n,this.data.length()),this.data.writeBuffer(n)}}return e}});var Tve=S((Uvn,kve)=>{f();m();h();var E4=O0().SmartBuffer,Do=Sd(),S4=p2()(Do),dWe=nl(),di=mr(),Rd=Ji(),uWe=$r();kve.exports=(i,e)=>class Mve extends dWe{static get section(){return S4}constructor(){super(e),this.sectionMask=0,this.sections=Array(di.NUM_SECTIONS).fill(null),this.biomes=Array(di.SECTION_WIDTH*di.SECTION_WIDTH).fill(1),this.skyLightMask=0,this.blockLightMask=0,this.skyLightSections=Array(di.NUM_SECTIONS+2).fill(null),this.blockLightSections=Array(di.NUM_SECTIONS+2).fill(null),this.maxBitsPerBlock=uWe(Object.values(e.blocks).reduce((n,r)=>Math.max(n,r.maxStateId),0))}toJson(){return JSON.stringify({biomes:this.biomes,blockEntities:this.blockEntities,sectionMask:this.sectionMask,sections:this.sections.map(n=>n===null?null:n.toJson()),skyLightMask:this.skyLightMask,blockLightMask:this.blockLightMask,skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson())})}static fromJson(n){let r=JSON.parse(n),s=new Mve;return s.biomes=r.biomes,s.blockEntities=r.blockEntities,s.sectionMask=r.sectionMask,s.sections=r.sections.map(o=>o===null?null:S4.fromJson(o)),s.skyLightMask=r.skyLightMask,s.blockLightMask=r.blockLightMask,s.skyLightSections=r.skyLightSections.map(o=>o===null?null:Do.fromJson(o)),s.blockLightSections=r.blockLightSections.map(o=>o===null?null:Do.fromJson(o)),s}initialize(n){let r={x:0,y:0,z:0};for(r.y=0;r.y<di.CHUNK_HEIGHT;r.y++)for(r.z=0;r.z<di.SECTION_WIDTH;r.z++)for(r.x=0;r.x<di.SECTION_WIDTH;r.x++){let s=n(r.x,r.y,r.z);s!==null&&this.setBlock(r,s)}}getBlock(n){let r=this.sections[n.y>>4],s=this.getBiome(n);if(!r)return i.fromStateId(0,s);let o=r.getBlock(dI(n)),a=i.fromStateId(o,s);return a.light=this.getBlockLight(n),a.skyLight=this.getSkyLight(n),a.entity=this.getBlockEntity(n),a}setBlock(n,r){typeof r.stateId<"u"&&this.setBlockStateId(n,r.stateId),typeof r.biome<"u"&&this.setBiome(n,r.biome.id),typeof r.skyLight<"u"&&this.setSkyLight(n,r.skyLight),typeof r.light<"u"&&this.setBlockLight(n,r.light),r.entity?this.setBlockEntity(n,r.entity):this.removeBlockEntity(n)}getBlockType(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].id}getBlockData(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].metadata}getBlockStateId(n){let r=this.sections[n.y>>4];return r?r.getBlock(dI(n)):0}getBlockLight(n){let r=this.blockLightSections[A4(n)];if(!r)return 0;let o=n.y%16*16*16+n.z*16+n.x;return r.get(o)}getSkyLight(n){let r=this.skyLightSections[A4(n)];if(!r)return 0;let o=n.y%16*16*16+n.z*16+n.x;return r.get(o)}getBiome(n){return this.biomes[Ave(n)]}getBiomeColor(n){return{r:0,g:0,b:0}}setBlockType(n,r){this.setBlockStateId(n,e.blocks[r].minStateId)}setBlockData(n,r){this.setBlockStateId(n,e.blocksByStateId[this.getBlockStateId(n)].minStateId+r)}setBlockStateId(n,r){let s=n.y>>4;if(s<0||s>=16)return;let o=this.sections[s];if(!o){if(r===0)return;o=new S4({maxBitsPerBlock:this.maxBitsPerBlock}),this.sectionMask|=1<<s,this.sections[s]=o}o.setBlock(dI(n),r)}setBlockLight(n,r){let s=A4(n),o=this.blockLightSections[s];if(o===null){if(r===0)return;o=new Do({bitsPerValue:4,capacity:4096}),this.blockLightMask|=1<<s,this.blockLightSections[s]=o}let l=n.y%16*16*16+n.z*16+n.x;o.set(l,r)}setSkyLight(n,r){let s=A4(n),o=this.skyLightSections[s];if(o===null){if(r===0)return;o=new Do({bitsPerValue:4,capacity:4096}),this.skyLightMask|=1<<s,this.skyLightSections[s]=o}let l=n.y%16*16*16+n.z*16+n.x;o.set(l,r)}setBiome(n,r){this.biomes[Ave(n)]=r}getMask(){return this.sectionMask}dump(){let n=new E4;return this.sections.forEach((r,s)=>{r!==null&&!r.isEmpty()&&r.write(n)}),this.biomes.forEach(r=>{n.writeInt32BE(r)}),n.length?n.toBuffer():Buffer.alloc(4096)}load(n,r=65535,s=!0,o=!0){let a=E4.fromBuffer(n);this.sectionMask|=r;for(let l=0;l<di.NUM_SECTIONS;++l){if(!(r>>l&1))continue;let c,d=a.readInt16BE(),u=a.readUInt8();if(u<=di.MAX_BITS_PER_BLOCK){c=[];let _=Rd.read(a);for(let b=0;b<_;++b)c.push(Rd.read(a))}else c=null;let p=new Do({bitsPerValue:u>di.MAX_BITS_PER_BLOCK?this.maxBitsPerBlock:u,capacity:4096}).readBuffer(a,Rd.read(a)*2),v=new S4({data:p,palette:c,solidBlockCount:d,maxBitsPerBlock:this.maxBitsPerBlock});this.sections[l]=v}if(o){let l={x:0,y:0,z:0};for(l.z=0;l.z<di.SECTION_WIDTH;l.z++)for(l.x=0;l.x<di.SECTION_WIDTH;l.x++)this.setBiome(l,a.readInt32BE())}}loadLight(n,r,s,o=0,a=0){let l=E4.fromBuffer(n);this.skyLightMask|=r;for(let c=0;c<di.NUM_SECTIONS+2;c++){if(!(r>>c&1))continue;let d=Rd.read(l),u=new Do({bitsPerValue:4,capacity:4096}),p=new Uint8Array(d);for(let v=0;v<d;v++)p[v]=l.readUInt8();for(let v=0;v<d;v++){let _=p[v],b=v*2,y=v*2+1,g=_&15,w=_>>4&15,x=b%16,E=Math.floor(b/16)%16,A=Math.floor(b/256),C=y%16,R=Math.floor(y/16)%16,L=Math.floor(y/256),M=A*16*16+E*16+x,k=L*16*16+R*16+C;u.set(M,g),y<4096&&u.set(k,w)}this.skyLightSections[c]=u}this.blockLightMask|=s;for(let c=0;c<di.NUM_SECTIONS+2;c++){if(!(s>>c&1))continue;let d=Rd.read(l),u=new Do({bitsPerValue:4,capacity:4096}),p=new Uint8Array(d);for(let v=0;v<d;v++)p[v]=l.readUInt8();for(let v=0;v<d;v++){let _=p[v],b=v*2,y=v*2+1,g=_&15,w=_>>4&15,x=b%16,E=Math.floor(b/16)%16,A=Math.floor(b/256),C=y%16,R=Math.floor(y/16)%16,L=Math.floor(y/256),M=A*16*16+E*16+x,k=L*16*16+R*16+C;u.set(M,g),y<4096&&u.set(k,w)}this.blockLightSections[c]=u}}dumpBiomes(){}loadBiomes(){}dumpLight(){let n=new E4;return this.skyLightSections.forEach((r,s)=>{r!==null&&(Rd.write(n,2048),r.writeBuffer(n))}),this.blockLightSections.forEach((r,s)=>{r!==null&&(Rd.write(n,2048),r.writeBuffer(n))}),n.toBuffer()}dumpLightNew(){return{skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson()),skyLightMask:this.skyLightMask,blockLightMask:this.blockLightMask,emptySkyLightMask:0,emptyBlockLightMask:0}}loadLightNew(n){let{skyLightSections:r,blockLightSections:s,skyLightMask:o,blockLightMask:a}=n;this.skyLightMask=o,this.skyLightSections=r.map(l=>l===null?null:Do.fromJson(l)),this.blockLightMask=a,this.blockLightSections=s.map(l=>l===null?null:Do.fromJson(l))}};function A4(i){return Math.floor(i.y/16)+1}function Ave(i){return i.z*16|i.x}function dI(i){return{x:i.x,y:i.y&15,z:i.z}}});var Rve=S((Hvn,Ive)=>{f();m();h();var fWe=mr();function hWe(i){let e=si()(i),t=Tve()(e,i);return t.h=fWe.CHUNK_HEIGHT,t.version=i.version,t}Ive.exports=hWe});var Bve=S((jvn,Lve)=>{f();m();h();var M4=O0().SmartBuffer,Uo=Sd(),k4=p2()(Uo),mWe=nl(),Qs=mr(),Cd=Ji(),pWe=$r();Lve.exports=(i,e)=>class Pve extends mWe{static get section(){return k4}constructor(){super(e),this.sectionMask=0,this.sections=Array(Qs.NUM_SECTIONS).fill(null),this.biomes=Array(4*4*64).fill(127),this.skyLightMask=0,this.blockLightMask=0,this.skyLightSections=Array(Qs.NUM_SECTIONS+2).fill(null),this.blockLightSections=Array(Qs.NUM_SECTIONS+2).fill(null),this.maxBitsPerBlock=pWe(Object.values(e.blocks).reduce((n,r)=>Math.max(n,r.maxStateId),0))}toJson(){return JSON.stringify({biomes:this.biomes,blockEntities:this.blockEntities,sectionMask:this.sectionMask,sections:this.sections.map(n=>n===null?null:n.toJson()),skyLightMask:this.skyLightMask,blockLightMask:this.blockLightMask,skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson())})}static fromJson(n){let r=JSON.parse(n),s=new Pve;return s.biomes=r.biomes,s.blockEntities=r.blockEntities,s.sectionMask=r.sectionMask,s.sections=r.sections.map(o=>o===null?null:k4.fromJson(o)),s.skyLightMask=r.skyLightMask,s.blockLightMask=r.blockLightMask,s.skyLightSections=r.skyLightSections.map(o=>o===null?null:Uo.fromJson(o)),s.blockLightSections=r.blockLightSections.map(o=>o===null?null:Uo.fromJson(o)),s}initialize(n){let r={x:0,y:0,z:0};for(r.y=0;r.y<Qs.CHUNK_HEIGHT;r.y++)for(r.z=0;r.z<Qs.SECTION_WIDTH;r.z++)for(r.x=0;r.x<Qs.SECTION_WIDTH;r.x++){let s=n(r.x,r.y,r.z);s!==null&&this.setBlock(r,s)}}getBlock(n){let r=this.sections[n.y>>4],s=this.getBiome(n);if(!r)return i.fromStateId(0,s);let o=r.getBlock(uI(n)),a=i.fromStateId(o,s);return a.light=this.getBlockLight(n),a.skyLight=this.getSkyLight(n),a.entity=this.getBlockEntity(n),a}setBlock(n,r){typeof r.stateId<"u"&&this.setBlockStateId(n,r.stateId),typeof r.biome<"u"&&this.setBiome(n,r.biome.id),typeof r.skyLight<"u"&&this.setSkyLight(n,r.skyLight),typeof r.light<"u"&&this.setBlockLight(n,r.light),r.entity?this.setBlockEntity(n,r.entity):this.removeBlockEntity(n)}getBlockType(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].id}getBlockData(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].metadata}getBlockStateId(n){let r=this.sections[n.y>>4];return r?r.getBlock(uI(n)):0}getBlockLight(n){let r=this.blockLightSections[T4(n)];if(!r)return 0;let o=n.y%16*16*16+n.z*16+n.x;return r.get(o)}getSkyLight(n){let r=this.skyLightSections[T4(n)];if(!r)return 0;let o=n.y%16*16*16+n.z*16+n.x;return r.get(o)}getBiome(n){return n.y<0||n.y>=256?0:this.biomes[Cve(n)]}setBlockType(n,r){this.setBlockStateId(n,e.blocks[r].minStateId)}setBlockData(n,r){this.setBlockStateId(n,e.blocksByStateId[this.getBlockStateId(n)].minStateId+r)}setBlockStateId(n,r){let s=n.y>>4;if(s<0||s>=16)return;let o=this.sections[s];if(!o){if(r===0)return;o=new k4({maxBitsPerBlock:this.maxBitsPerBlock}),this.sectionMask|=1<<s,this.sections[s]=o}o.setBlock(uI(n),r)}setBlockLight(n,r){let s=T4(n),o=this.blockLightSections[s];if(o===null){if(r===0)return;o=new Uo({bitsPerValue:4,capacity:4096}),this.blockLightMask|=1<<s,this.blockLightSections[s]=o}let l=n.y%16*16*16+n.z*16+n.x;o.set(l,r)}setSkyLight(n,r){let s=T4(n),o=this.skyLightSections[s];if(o===null){if(r===0)return;o=new Uo({bitsPerValue:4,capacity:4096}),this.skyLightMask|=1<<s,this.skyLightSections[s]=o}let l=n.y%16*16*16+n.z*16+n.x;o.set(l,r)}setBiome(n,r){n.y<0||n.y>=256||(this.biomes[Cve(n)]=r)}getMask(){return this.sectionMask}dump(){let n=new M4;return this.sections.forEach((r,s)=>{r!==null&&!r.isEmpty()&&r.write(n)}),n.length?n.toBuffer():Buffer.alloc(4096)}loadBiomes(n){this.biomes=n}dumpBiomes(n){return this.biomes}load(n,r=65535){let s=M4.fromBuffer(n);this.sectionMask|=r;for(let o=0;o<Qs.NUM_SECTIONS;++o){if(!(r>>o&1))continue;let a,l=s.readInt16BE(),c=s.readUInt8();if(c<=Qs.MAX_BITS_PER_BLOCK){a=[];let p=Cd.read(s);for(let v=0;v<p;++v)a.push(Cd.read(s))}else a=null;let d=new Uo({bitsPerValue:c>Qs.MAX_BITS_PER_BLOCK?this.maxBitsPerBlock:c,capacity:4096}).readBuffer(s,Cd.read(s)*2),u=new k4({data:d,palette:a,solidBlockCount:l,maxBitsPerBlock:this.maxBitsPerBlock});this.sections[o]=u}}loadLight(n,r,s,o=0,a=0){let l=M4.fromBuffer(n);this.skyLightMask|=r;for(let c=0;c<Qs.NUM_SECTIONS+2;c++){if(!(r>>c&1))continue;let d=Cd.read(l),u=new Uo({bitsPerValue:4,capacity:4096}),p=new Uint8Array(d);for(let v=0;v<d;v++)p[v]=l.readUInt8();for(let v=0;v<d;v++){let _=p[v],b=v*2,y=v*2+1,g=_&15,w=_>>4&15,x=b%16,E=Math.floor(b/16)%16,A=Math.floor(b/256),C=y%16,R=Math.floor(y/16)%16,L=Math.floor(y/256),M=A*16*16+E*16+x,k=L*16*16+R*16+C;u.set(M,g),y<4096&&u.set(k,w)}this.skyLightSections[c]=u}this.blockLightMask|=s;for(let c=0;c<Qs.NUM_SECTIONS+2;c++){if(!(s>>c&1))continue;let d=Cd.read(l),u=new Uo({bitsPerValue:4,capacity:4096}),p=new Uint8Array(d);for(let v=0;v<d;v++)p[v]=l.readUInt8();for(let v=0;v<d;v++){let _=p[v],b=v*2,y=v*2+1,g=_&15,w=_>>4&15,x=b%16,E=Math.floor(b/16)%16,A=Math.floor(b/256),C=y%16,R=Math.floor(y/16)%16,L=Math.floor(y/256),M=A*16*16+E*16+x,k=L*16*16+R*16+C;u.set(M,g),y<4096&&u.set(k,w)}this.blockLightSections[c]=u}}dumpLight(){let n=new M4;return this.skyLightSections.forEach((r,s)=>{r!==null&&(Cd.write(n,2048),r.writeBuffer(n))}),this.blockLightSections.forEach((r,s)=>{r!==null&&(Cd.write(n,2048),r.writeBuffer(n))}),n.toBuffer()}dumpLightNew(){return{skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson()),skyLightMask:this.skyLightMask,blockLightMask:this.blockLightMask,emptySkyLightMask:0,emptyBlockLightMask:0}}loadLightNew(n){let{skyLightSections:r,blockLightSections:s,skyLightMask:o,blockLightMask:a}=n;this.skyLightMask=o,this.skyLightSections=r.map(l=>l===null?null:Uo.fromJson(l)),this.blockLightMask=a,this.blockLightSections=s.map(l=>l===null?null:Uo.fromJson(l))}};function T4(i){return Math.floor(i.y/16)+1}function Cve(i){return(i.y>>2&63)<<4|(i.z>>2&3)<<2|i.x>>2&3}function uI(i){return{x:i.x,y:i.y&15,z:i.z}}});var Nve=S((Jvn,Ove)=>{f();m();h();var vWe=mr();function gWe(i){let e=si()(i),t=Bve()(e,i);return t.h=vWe.CHUNK_HEIGHT,t.version=i.version,t}Ove.exports=gWe});var v2=S((e6n,Dve)=>{f();m();h();var _We=$r(),fI=class i{constructor(e){if(e===null)return;let t=Math.floor(64/e.bitsPerValue),n=Math.ceil(e.capacity/t)*2,r=(1<<e.bitsPerValue)-1;this.data=new Uint32Array(e?.data??n),this.capacity=e.capacity,this.bitsPerValue=e.bitsPerValue,this.valuesPerLong=t,this.valueMask=r}toJson(){return JSON.stringify({data:Array.from(this.data),capacity:this.capacity,bitsPerValue:this.bitsPerValue,valuesPerLong:this.valuesPerLong,valueMask:this.valueMask})}static fromJson(e){return new i(JSON.parse(e))}toArray(){let e=[];for(let t=0;t<this.capacity;t++)e.push(this.get(t));return e}static fromArray(e,t){let n=new i({capacity:e.length,bitsPerValue:t});for(let r=0;r<e.length;r++)n.set(r,e[r]);return n}toLongArray(){let e=[];for(let t=0;t<this.data.length;t+=2)e.push([this.data[t+1]<<32>>32,this.data[t]<<32>>32]);return e}static fromLongArray(e,t){let n=new i({capacity:Math.floor(64/t)*e.length,bitsPerValue:t});for(let r=0;r<e.length;r++){let s=r*2;n.data[s+1]=e[r][0],n.data[s]=e[r][1]}return n}static or(e,t){let n=e.data.length>t.data.length?e.data:t.data,r=e.data.length>t.data.length?t.data:e.data,s=new Uint32Array(n.length);s.set(n);for(let o=0;o<r.length;o++)s[o]|=r[o];return new i({data:s.buffer,bitsPerValue:Math.max(e.bitsPerValue,t.bitsPerValue)})}get(e){let t=Math.floor(e/this.valuesPerLong),n=(e-t*this.valuesPerLong)*this.bitsPerValue;if(n>=32){let l=n-32;return this.data[t*2+1]>>>l&this.valueMask}let r=this.data[t*2],s=n,o=r>>>s;if(s+this.bitsPerValue>32){let l=this.data[t*2+1];o|=l<<32-s}return o&this.valueMask}set(e,t){let n=Math.floor(e/this.valuesPerLong),r=(e-n*this.valuesPerLong)*this.bitsPerValue;if(r>=32){let a=r-32;this.data[n*2+1]=(this.data[n*2+1]&~(this.valueMask<<a)|(t&this.valueMask)<<a)>>>0;return}let s=r;this.data[n*2]=(this.data[n*2]&~(this.valueMask<<s)|(t&this.valueMask)<<s)>>>0;let o=s+this.bitsPerValue;o>32&&(this.data[n*2+1]=(this.data[n*2+1]&~((1<<o-32)-1)|t>>32-s)>>>0)}resize(e){let t=new i({bitsPerValue:this.bitsPerValue,capacity:e});for(let n=0;n<Math.min(e,this.capacity);++n)t.set(n,this.get(n));return t}resizeTo(e){let t=new i({bitsPerValue:e,capacity:this.capacity});for(let n=0;n<this.capacity;++n){let r=this.get(n);if(_We(r)>e)throw new Error("existing value in BitArray can't fit in new bits per value");t.set(n,r)}return t}length(){return this.data.length/2}readBuffer(e,t=this.data.length){if((!Number.isFinite(t)||t<0||t>1e6)&&(console.warn(`Invalid size in BitArray.readBuffer: ${t}, using default size`),t=this.data.length),t!==this.data.length){this.data=new Uint32Array(t);for(let n=0;n<t;n+=2)this.data[n+1]=e.readUInt32BE(),this.data[n]=e.readUInt32BE();return}for(let n=0;n<this.data.length;n+=2)this.data[n+1]=e.readUInt32BE(),this.data[n]=e.readUInt32BE();return this}writeBuffer(e){for(let t=0;t<this.data.length;t+=2)e.writeUInt32BE(this.data[t+1]),e.writeUInt32BE(this.data[t]);return this}getBitsPerValue(){return this.bitsPerValue}};Dve.exports=fI});var zve=S((i6n,Fve)=>{f();m();h();var I4=O0().SmartBuffer,Vo=v2(),R4=p2()(Vo),yWe=nl(),eo=mr(),Pd=Ji(),bWe=$r();Fve.exports=(i,e)=>class Vve extends yWe{static get section(){return R4}constructor(){super(e),this.sectionMask=0,this.sections=Array(eo.NUM_SECTIONS).fill(null),this.biomes=Array(4*4*64).fill(127),this.skyLightMask=0,this.blockLightMask=0,this.skyLightSections=Array(eo.NUM_SECTIONS+2).fill(null),this.blockLightSections=Array(eo.NUM_SECTIONS+2).fill(null),this.maxBitsPerBlock=bWe(Object.values(e.blocks).reduce((n,r)=>Math.max(n,r.maxStateId),0))}toJson(){return JSON.stringify({biomes:this.biomes,blockEntities:this.blockEntities,sectionMask:this.sectionMask,sections:this.sections.map(n=>n===null?null:n.toJson()),skyLightMask:this.skyLightMask,blockLightMask:this.blockLightMask,skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson())})}static fromJson(n){let r=JSON.parse(n),s=new Vve;return s.biomes=r.biomes,s.blockEntities=r.blockEntities,s.sectionMask=r.sectionMask,s.sections=r.sections.map(o=>o===null?null:R4.fromJson(o)),s.skyLightMask=r.skyLightMask,s.blockLightMask=r.blockLightMask,s.skyLightSections=r.skyLightSections.map(o=>o===null?null:Vo.fromJson(o)),s.blockLightSections=r.blockLightSections.map(o=>o===null?null:Vo.fromJson(o)),s}initialize(n){let r={x:0,y:0,z:0};for(r.y=0;r.y<eo.CHUNK_HEIGHT;r.y++)for(r.z=0;r.z<eo.SECTION_WIDTH;r.z++)for(r.x=0;r.x<eo.SECTION_WIDTH;r.x++){let s=n(r.x,r.y,r.z);s!==null&&this.setBlock(r,s)}}getBlock(n){let r=this.sections[n.y>>4],s=this.getBiome(n);if(!r)return i.fromStateId(0,s);let o=r.getBlock(hI(n)),a=i.fromStateId(o,s);return a.light=this.getBlockLight(n),a.skyLight=this.getSkyLight(n),a.entity=this.getBlockEntity(n),a}setBlock(n,r){typeof r.stateId<"u"&&this.setBlockStateId(n,r.stateId),typeof r.biome<"u"&&this.setBiome(n,r.biome.id),typeof r.skyLight<"u"&&this.setSkyLight(n,r.skyLight),typeof r.light<"u"&&this.setBlockLight(n,r.light),r.entity?this.setBlockEntity(n,r.entity):this.removeBlockEntity(n)}getBlockType(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].id}getBlockData(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].metadata}getBlockStateId(n){let r=this.sections[n.y>>4];return r?r.getBlock(hI(n)):0}getBlockLight(n){let r=this.blockLightSections[C4(n)];if(!r)return 0;let o=n.y%16*16*16+n.z*16+n.x;return r.get(o)}getSkyLight(n){let r=this.skyLightSections[C4(n)];if(!r)return 0;let o=n.y%16*16*16+n.z*16+n.x;return r.get(o)}getBiome(n){return n.y<0||n.y>=256?0:this.biomes[Uve(n)]}setBlockType(n,r){this.setBlockStateId(n,e.blocks[r].minStateId)}setBlockData(n,r){this.setBlockStateId(n,e.blocksByStateId[this.getBlockStateId(n)].minStateId+r)}setBlockStateId(n,r){let s=n.y>>4;if(s<0||s>=16)return;let o=this.sections[s];if(!o){if(r===0)return;o=new R4({maxBitsPerBlock:this.maxBitsPerBlock}),this.sectionMask|=1<<s,this.sections[s]=o}o.setBlock(hI(n),r)}setBlockLight(n,r){let s=C4(n),o=this.blockLightSections[s];if(o===null){if(r===0)return;o=new Vo({bitsPerValue:4,capacity:4096}),this.blockLightMask|=1<<s,this.blockLightSections[s]=o}let l=n.y%16*16*16+n.z*16+n.x;o.set(l,r)}setSkyLight(n,r){let s=C4(n),o=this.skyLightSections[s];if(o===null){if(r===0)return;o=new Vo({bitsPerValue:4,capacity:4096}),this.skyLightMask|=1<<s,this.skyLightSections[s]=o}let l=n.y%16*16*16+n.z*16+n.x;o.set(l,r)}setBiome(n,r){n.y<0||n.y>=256||(this.biomes[Uve(n)]=r)}getMask(){return this.sectionMask}dump(){let n=new I4;return this.sections.forEach((r,s)=>{r!==null&&!r.isEmpty()&&r.write(n)}),n.length?n.toBuffer():Buffer.alloc(4096)}loadBiomes(n){this.biomes=n}dumpBiomes(n){return this.biomes}load(n,r=65535){let s=I4.fromBuffer(n);this.sectionMask|=r;for(let o=0;o<eo.NUM_SECTIONS;++o){if(!(r>>o&1))continue;let a,l=s.readInt16BE(),c=s.readUInt8();if(c<=eo.MAX_BITS_PER_BLOCK){a=[];let p=Pd.read(s);for(let v=0;v<p;++v)a.push(Pd.read(s))}else a=null;let d=new Vo({bitsPerValue:c>eo.MAX_BITS_PER_BLOCK?this.maxBitsPerBlock:c,capacity:4096}).readBuffer(s,Pd.read(s)*2),u=new R4({data:d,palette:a,solidBlockCount:l,maxBitsPerBlock:this.maxBitsPerBlock});this.sections[o]=u}}loadLight(n,r,s,o=0,a=0){let l=I4.fromBuffer(n);this.skyLightMask|=r;for(let c=0;c<eo.NUM_SECTIONS+2;c++){if(!(r>>c&1))continue;let d=Pd.read(l),u=new Vo({bitsPerValue:4,capacity:4096}),p=new Uint8Array(d);for(let v=0;v<d;v++)p[v]=l.readUInt8();for(let v=0;v<d;v++){let _=p[v],b=v*2,y=v*2+1,g=_&15,w=_>>4&15,x=b%16,E=Math.floor(b/16)%16,A=Math.floor(b/256),C=y%16,R=Math.floor(y/16)%16,L=Math.floor(y/256),M=A*16*16+E*16+x,k=L*16*16+R*16+C;u.set(M,g),y<4096&&u.set(k,w)}this.skyLightSections[c]=u}this.blockLightMask|=s;for(let c=0;c<eo.NUM_SECTIONS+2;c++){if(!(s>>c&1))continue;let d=Pd.read(l),u=new Vo({bitsPerValue:4,capacity:4096}),p=new Uint8Array(d);for(let v=0;v<d;v++)p[v]=l.readUInt8();for(let v=0;v<d;v++){let _=p[v],b=v*2,y=v*2+1,g=_&15,w=_>>4&15,x=b%16,E=Math.floor(b/16)%16,A=Math.floor(b/256),C=y%16,R=Math.floor(y/16)%16,L=Math.floor(y/256),M=A*16*16+E*16+x,k=L*16*16+R*16+C;u.set(M,g),y<4096&&u.set(k,w)}this.blockLightSections[c]=u}}dumpLight(){let n=new I4;return this.skyLightSections.forEach((r,s)=>{r!==null&&(Pd.write(n,2048),r.writeBuffer(n))}),this.blockLightSections.forEach((r,s)=>{r!==null&&(Pd.write(n,2048),r.writeBuffer(n))}),n.toBuffer()}dumpLightNew(){return{skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson()),skyLightMask:this.skyLightMask,blockLightMask:this.blockLightMask,emptySkyLightMask:0,emptyBlockLightMask:0}}loadLightNew(n){let{skyLightSections:r,blockLightSections:s,skyLightMask:o,blockLightMask:a}=n;this.skyLightMask=o,this.skyLightSections=r.map(l=>l===null?null:Vo.fromJson(l)),this.blockLightMask=a,this.blockLightSections=s.map(l=>l===null?null:Vo.fromJson(l))}};function C4(i){return Math.floor(i.y/16)+1}function Uve(i){return(i.y>>2&63)<<4|(i.z>>2&3)<<2|i.x>>2&3}function hI(i){return{x:i.x,y:i.y&15,z:i.z}}});var qve=S((l6n,Hve)=>{f();m();h();var xWe=mr();function wWe(i){let e=si()(i),t=zve()(e,i);return t.h=xWe.CHUNK_HEIGHT,t.version=i.version,t}Hve.exports=wWe});var Xve=S((f6n,$ve)=>{f();m();h();var P4=O0().SmartBuffer,vn=v2(),L4=p2()(vn),EWe=nl(),g2=mr(),mI=Ji(),SWe=$r();$ve.exports=(i,e)=>class jve extends EWe{static get section(){return L4}constructor(n){super(e),this.minY=n?.minY??0,this.worldHeight=n?.worldHeight??g2.CHUNK_HEIGHT,this.numSections=this.worldHeight>>4,this.maxBitsPerBlock=SWe(Object.values(e.blocks).reduce((r,s)=>Math.max(r,s.maxStateId),0)),this.sectionMask=new vn({bitsPerValue:1,capacity:this.numSections}),this.sections=Array(this.numSections).fill(null),this.biomes=Array(4*4*(this.worldHeight>>2)).fill(0),this.skyLightMask=new vn({bitsPerValue:1,capacity:this.numSections+2}),this.emptySkyLightMask=new vn({bitsPerValue:1,capacity:this.numSections+2}),this.skyLightSections=Array(this.numSections+2).fill(null),this.blockLightMask=new vn({bitsPerValue:1,capacity:this.numSections+2}),this.emptyBlockLightMask=new vn({bitsPerValue:1,capacity:this.numSections+2}),this.blockLightSections=Array(this.numSections+2).fill(null)}toJson(){return JSON.stringify({biomes:this.biomes,blockEntities:this.blockEntities,sectionMask:this.sectionMask.toLongArray(),sections:this.sections.map(n=>n===null?null:n.toJson()),skyLightMask:this.skyLightMask.toLongArray(),blockLightMask:this.blockLightMask.toLongArray(),skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson()),emptyBlockLightMask:this.emptyBlockLightMask.toLongArray(),emptySkyLightMask:this.emptySkyLightMask.toLongArray()})}static fromJson(n){let r=JSON.parse(n),s=new jve;return s.biomes=r.biomes,s.blockEntities=r.blockEntities,s.sectionMask=vn.fromLongArray(r.sectionMask,1),s.sections=r.sections.map(o=>o===null?null:L4.fromJson(o)),s.skyLightMask=vn.fromLongArray(r.skyLightMask,1),s.blockLightMask=vn.fromLongArray(r.blockLightMask,1),s.skyLightSections=r.skyLightSections.map(o=>o===null?null:vn.fromJson(o)),s.blockLightSections=r.blockLightSections.map(o=>o===null?null:vn.fromJson(o)),s.emptySkyLightMask=vn.fromLongArray(r.emptyBlockLightMask,1),s.emptyBlockLightMask=vn.fromLongArray(r.emptySkyLightMask,1),s}initialize(n){let r={x:0,y:0,z:0};for(r.y=0;r.y<this.worldHeight;r.y++)for(r.z=0;r.z<g2.SECTION_WIDTH;r.z++)for(r.x=0;r.x<g2.SECTION_WIDTH;r.x++){let s=n(r.x,r.y,r.z);s!==null&&this.setBlock(r,s)}}getBlock(n){let r=this.sections[n.y-this.minY>>4],s=this.getBiome(n);if(!r)return i.fromStateId(0,s);let o=r.getBlock(pI(n,this.minY)),a=i.fromStateId(o,s);return a.light=this.getBlockLight(n),a.skyLight=this.getSkyLight(n),a.entity=this.getBlockEntity(n),a}setBlock(n,r){typeof r.stateId<"u"&&this.setBlockStateId(n,r.stateId),typeof r.biome<"u"&&this.setBiome(n,r.biome.id),typeof r.skyLight<"u"&&this.setSkyLight(n,r.skyLight),typeof r.light<"u"&&this.setBlockLight(n,r.light),r.entity?this.setBlockEntity(n,r.entity):this.removeBlockEntity(n)}getBlockType(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].id}getBlockData(n){let r=this.getBlockStateId(n);return e.blocksByStateId[r].metadata}getBlockStateId(n){let r=this.sections[n.y-this.minY>>4];return r?r.getBlock(pI(n,this.minY)):0}getBlockLight(n){let r=this.blockLightSections[B4(n,this.minY)];if(!r)return 0;let o=(n.y-this.minY)%16*16*16+n.z*16+n.x;return r.get(o)}getSkyLight(n){let r=this.skyLightSections[B4(n,this.minY)];if(!r)return 0;let o=(n.y-this.minY)%16*16*16+n.z*16+n.x;return r.get(o)}getBiome(n){return n.y<this.minY||n.y>=this.minY+this.worldHeight?0:this.biomes[Gve(n,this.minY)]}setBlockType(n,r){this.setBlockStateId(n,e.blocks[r].minStateId)}setBlockData(n,r){this.setBlockStateId(n,e.blocksByStateId[this.getBlockStateId(n)].minStateId+r)}setBlockStateId(n,r){let s=n.y-this.minY>>4;if(s<0||s>=this.numSections)return;let o=this.sections[s];if(!o){if(r===0)return;o=new L4({maxBitsPerBlock:this.maxBitsPerBlock}),s>this.sectionMask.capacity&&(this.sectionMask=this.sectionMask.resize(s)),this.sectionMask.set(s,1),this.sections[s]=o}o.setBlock(pI(n,this.minY),r)}setBlockLight(n,r){let s=B4(n,this.minY),o=this.blockLightSections[s];if(o===null){if(r===0)return;o=new vn({bitsPerValue:4,capacity:4096}),s>this.blockLightMask.capacity&&(this.blockLightMask=this.blockLightMask.resize(s)),this.blockLightMask.set(s,1),this.blockLightSections[s]=o}o.set(Wve(n,this.minY),r)}setSkyLight(n,r){let s=B4(n,this.minY),o=this.skyLightSections[s];if(o===null){if(r===0)return;o=new vn({bitsPerValue:4,capacity:4096}),this.skyLightMask.set(s,1),this.skyLightSections[s]=o}o.set(Wve(n,this.minY),r)}setBiome(n,r){n.y<this.minY||n.y>=this.minY+this.worldHeight||(this.biomes[Gve(n,this.minY)]=r)}getMask(){return this.sectionMask.toLongArray()}dump(){let n=new P4;return this.sections.forEach(r=>{r!==null&&!r.isEmpty()&&r.write(n)}),n.length?n.toBuffer():Buffer.alloc(4096)}loadBiomes(n){this.biomes=n}dumpBiomes(n){return this.biomes}load(n,r=[[0,65535]]){let s=P4.fromBuffer(n);r=vn.fromLongArray(r,1),this.sectionMask=vn.or(this.sectionMask,r);for(let o=0;o<this.numSections;++o){if(!r.get(o))continue;let a,l=s.readInt16BE(),c=s.readUInt8();if(c<=g2.MAX_BITS_PER_BLOCK){a=[];let u=mI.read(s);for(let p=0;p<u;++p)a.push(mI.read(s))}else a=null;let d=new vn({bitsPerValue:c>g2.MAX_BITS_PER_BLOCK?this.maxBitsPerBlock:c,capacity:4096}).readBuffer(s,mI.read(s)*2);this.sections[o]=new L4({data:d,palette:a,solidBlockCount:l,maxBitsPerBlock:this.maxBitsPerBlock})}}loadParsedLight(n,r,s,o,a,l){function c(d,u,p,v,_,b){let y=0,g=vn.fromLongArray(v,1),w=vn.fromLongArray(b,1);for(let x=0;x<d.length;x++){let E=w.get(x);if(!g.get(x)&&!E)continue;_.set(x,E),p.set(x,1-E);let A=new vn({bitsPerValue:4,capacity:4096});if(d[x]=A,!E){let C=u[y++];for(let R=0;R<C.length;R++){let L=C[R],M=R*2,k=R*2+1,F=L&15,Z=L>>4&15,U=M%16,H=Math.floor(M/16)%16,Y=Math.floor(M/256),ce=k%16,te=Math.floor(k/16)%16,re=Math.floor(k/256),ae=Y*16*16+H*16+U,j=re*16*16+te*16+ce;A.set(ae,F),k<4096&&A.set(j,Z)}}}}c(this.skyLightSections,n,this.skyLightMask,s,this.emptySkyLightMask,a),c(this.blockLightSections,r,this.blockLightMask,o,this.emptyBlockLightMask,l)}dumpLight(){let n=[],r=[];return this.skyLightSections.forEach((s,o)=>{if(s!==null&&this.skyLightMask.get(o)){let a=new P4;s.writeBuffer(a),n.push(Uint8Array.from(a.toBuffer()))}}),this.blockLightSections.forEach((s,o)=>{if(s!==null&&this.blockLightMask.get(o)){let a=new P4;s.writeBuffer(a),r.push(Uint8Array.from(a.toBuffer()))}}),{skyLight:n,blockLight:r,skyLightMask:this.skyLightMask.toLongArray(),blockLightMask:this.blockLightMask.toLongArray(),emptySkyLightMask:this.emptySkyLightMask.toLongArray(),emptyBlockLightMask:this.emptyBlockLightMask.toLongArray()}}dumpLightNew(){return{skyLightMask:this.skyLightMask.toLongArray(),emptySkyLightMask:this.emptySkyLightMask.toLongArray(),skyLightSections:this.skyLightSections.map(n=>n===null?null:n.toJson()),blockLightMask:this.blockLightMask.toLongArray(),emptyBlockLightMask:this.emptyBlockLightMask.toLongArray(),blockLightSections:this.blockLightSections.map(n=>n===null?null:n.toJson())}}loadLightNew(n){let{skyLightSections:r,blockLightSections:s,skyLightMask:o,blockLightMask:a,emptySkyLightMask:l,emptyBlockLightMask:c}=n;this.skyLightMask=vn.fromLongArray(o,1),this.emptySkyLightMask=vn.fromLongArray(l,1),this.skyLightSections=r.map(d=>d===null?null:vn.fromJson(d)),this.blockLightMask=vn.fromLongArray(a,1),this.emptyBlockLightMask=vn.fromLongArray(c,1),this.blockLightSections=s.map(d=>d===null?null:vn.fromJson(d))}};function B4(i,e){return Math.floor((i.y-e)/16)+1}function Gve(i,e){return(i.y-e>>2&63)<<4|(i.z>>2&3)<<2|i.x>>2&3}function pI(i,e){return{x:i.x,y:i.y-e&15,z:i.z}}function Wve(i,e){return(i.y-e&15)<<8|i.z<<4|i.x}});var Jve=S((v6n,Yve)=>{f();m();h();function AWe(i){let e=si()(i);return Xve()(e,i)}Yve.exports=AWe});var vI=S((b6n,Kve)=>{f();m();h();var Bd=v2(),to=mr(),MWe=$r(),Ld=Ji(),_2=class i{constructor(e){this.noSizePrefix=e?.noSizePrefix,this.data=new Bd({bitsPerValue:e?.bitsPerValue??to.GLOBAL_BITS_PER_BLOCK,capacity:e?.capacity??to.BLOCK_SECTION_VOLUME})}get(e){return this.data.get(e)}set(e,t){return this.data.set(e,t),this}write(e){e.writeUInt8(this.data.bitsPerValue),this.noSizePrefix||Ld.write(e,this.data.length()),this.data.writeBuffer(e)}readBuffer(e,t){let n=this.noSizePrefix?Math.ceil(this.data.capacity/Math.floor(64/t)):Ld.read(e);return this.data.readBuffer(e,n*2),this}toJson(){return JSON.stringify({type:"direct",data:this.data.toJson()})}static fromJson(e){let t=JSON.parse(e);return new i({noSizePrefix:t.noSizePrefix,data:Bd.fromJson(t.data),bitsPerValue:t.bitsPerValue})}},y2=class i{constructor(e){this.noSizePrefix=e?.noSizePrefix,this.data=e?.data??new Bd({bitsPerValue:e?.bitsPerValue??to.MIN_BITS_PER_BLOCK,capacity:e?.capacity??to.BLOCK_SECTION_VOLUME}),this.palette=e?.palette??[0],this.maxBits=e?.maxBits??to.MAX_BITS_PER_BLOCK,this.maxBitsPerBlock=e?.maxBitsPerBlock??to.MAX_BITS_PER_BLOCK}get(e){return this.palette[this.data.get(e)]}set(e,t){let n=this.palette.indexOf(t);if(n<0){n=this.palette.length,this.palette.push(t);let r=MWe(n);if(r>this.data.bitsPerValue)if(r<=this.maxBits)this.data=this.data.resizeTo(r);else return this.convertToDirect(this.maxBitsPerBlock).set(e,t)}return this.data.set(e,n),this}convertToDirect(e){let t=new _2({noSizePrefix:this.noSizePrefix,bitsPerValue:e??to.GLOBAL_BITS_PER_BLOCK,capacity:this.data.capacity});for(let n=0;n<this.data.capacity;++n)t.data.set(n,this.get(n));return t}write(e){e.writeUInt8(this.data.bitsPerValue),Ld.write(e,this.palette.length);for(let t of this.palette)Ld.write(e,t);this.noSizePrefix||Ld.write(e,this.data.length()),this.data.writeBuffer(e)}readBuffer(e,t){let n=this.noSizePrefix?Math.ceil(this.data.capacity/Math.floor(64/t)):Ld.read(e);return this.data.readBuffer(e,n*2),this}toJson(){return JSON.stringify({type:"indirect",palette:this.palette,maxBits:this.maxBits,maxBitsPerBlock:this.maxBitsPerBlock,data:this.data.toJson()})}static fromJson(e){let t=JSON.parse(e);return new i({noSizePrefix:t.noSizePrefix,palette:t.palette,maxBits:t.maxBits,maxBitsPerBlock:t.maxBitsPerBlock,data:Bd.fromJson(t.data)})}},O4=class i{constructor(e){this.noSizePrefix=e?.noSizePrefix,this.value=e?.value??0,this.bitsPerValue=e?.bitsPerValue??to.MIN_BITS_PER_BLOCK,this.capacity=e?.capacity??to.BLOCK_SECTION_VOLUME,this.maxBits=e?.maxBits??to.MAX_BITS_PER_BLOCK,this.maxBitsPerBlock=e?.maxBitsPerBlock??to.MAX_BITS_PER_BLOCK}get(e){return this.value}set(e,t){if(t===this.value)return this;let n=new Bd({bitsPerValue:this.bitsPerValue,capacity:this.capacity});return n.set(e,1),new y2({noSizePrefix:this.noSizePrefix,data:n,palette:[this.value,t],capacity:this.capacity,bitsPerValue:this.bitsPerValue,maxBits:this.maxBits,maxBitsPerBlock:this.maxBitsPerBlock})}write(e){e.writeUInt8(0),Ld.write(e,this.value),this.noSizePrefix||e.writeUInt8(0)}toJson(){return JSON.stringify({type:"single",value:this.value,bitsPerValue:this.bitsPerValue,capacity:this.capacity,maxBits:this.maxBits,maxBitsPerBlock:this.maxBitsPerBlock})}static fromJson(e){let t=JSON.parse(e);return new i({noSizePrefix:t.noSizePrefix,value:t.value,bitsPerValue:t.bitsPerValue,capacity:t.capacity,maxBits:t.maxBits,maxBitsPerBlock:t.maxBitsPerBlock})}};function kWe(i){let e=JSON.parse(i);if(e.type==="direct")return new _2({noSizePrefix:e.noSizePrefix,data:Bd.fromJson(e.data)});if(e.type==="indirect")return new y2({noSizePrefix:e.noSizePrefix,palette:e.palette,maxBits:e.maxBits,data:Bd.fromJson(e.data),maxBitsPerBlock:e.maxBitsPerBlock});if(e.type==="single")return new O4({noSizePrefix:e.noSizePrefix,value:e.value,bitsPerValue:e.bitsPerValue,capacity:e.capacity,maxBits:e.maxBits,maxBitsPerBlock:e.maxBitsPerBlock})}Kve.exports={SingleValueContainer:O4,IndirectPaletteContainer:y2,DirectPaletteContainer:_2,fromJson:kWe}});var n6e=S((S6n,t6e)=>{f();m();h();var Ai=mr(),N4=vI(),gI=Ji(),Zve=N4.SingleValueContainer,Qve=N4.IndirectPaletteContainer,TWe=N4.DirectPaletteContainer;function e6e(i){return i.y<<8|i.z<<4|i.x}var _I=class i{constructor(e){if(this.noSizePrefix=e?.noSizePrefix,this.data=e?.data,this.data){if(this.solidBlockCount=e?.solidBlockCount??0,e?.solidBlockCount==null)for(let t=0;t<Ai.BLOCK_SECTION_VOLUME;++t)this.data.get(t)&&this.solidBlockCount++}else{let t=e?.singleValue??0;this.data=new Zve({value:t,bitsPerValue:Ai.MIN_BITS_PER_BLOCK,capacity:Ai.BLOCK_SECTION_VOLUME,maxBits:Ai.MAX_BITS_PER_BLOCK,maxBitsPerBlock:e?.maxBitsPerBlock??Ai.GLOBAL_BITS_PER_BLOCK,noSizePrefix:this.noSizePrefix}),this.solidBlockCount=t?Ai.BLOCK_SECTION_VOLUME:0}this.palette=this.data.palette}toJson(){return JSON.stringify({data:this.data.toJson(),solidBlockCount:this.solidBlockCount})}static fromJson(e){let t=JSON.parse(e);return new i({data:N4.fromJson(t.data),solidBlockCount:t.solidBlockCount})}get(e){return this.data.get(e6e(e))}set(e,t){let n=e6e(e),r=this.get(e);t===0&&r!==0?this.solidBlockCount-=1:t!==0&&r===0&&(this.solidBlockCount+=1),this.data=this.data.set(n,t),this.palette=this.data.palette}isEmpty(){return this.solidBlockCount===0}write(e){e.writeInt16BE(this.solidBlockCount),this.data.write(e)}static fromLocalPalette({data:e,palette:t,noSizePrefix:n}){return new i({noSizePrefix:n,data:t.length===1?new Zve({noSizePrefix:n,value:t[0],bitsPerValue:Ai.MIN_BITS_PER_BLOCK,capacity:Ai.BIOME_SECTION_VOLUME,maxBits:Ai.MAX_BITS_PER_BLOCK}):new Qve({noSizePrefix:n,data:e,palette:t})})}static read(e,t=Ai.GLOBAL_BITS_PER_BLOCK,n){let r=e.readInt16BE(),s=e.readUInt8();if(s>16)throw new Error(`Bits per block is too big: ${s}`);if(s===0){let l=new i({noSizePrefix:n,solidBlockCount:r,singleValue:gI.read(e),maxBitsPerBlock:t});return n||e.readUInt8(),l}if(s>Ai.MAX_BITS_PER_BLOCK)return new i({noSizePrefix:n,solidBlockCount:r,data:new TWe({noSizePrefix:n,bitsPerValue:t,capacity:Ai.BLOCK_SECTION_VOLUME}).readBuffer(e,s)});let o=[],a=gI.read(e);for(let l=0;l<a;++l)o.push(gI.read(e));return new i({noSizePrefix:n,solidBlockCount:r,data:new Qve({noSizePrefix:n,bitsPerValue:s,capacity:Ai.BLOCK_SECTION_VOLUME,maxBits:Ai.MAX_BITS_PER_BLOCK,maxBitsPerBlock:t,palette:o}).readBuffer(e,s)})}};t6e.exports=_I});var a6e=S((T6n,o6e)=>{f();m();h();var no=mr(),D4=vI(),yI=Ji(),r6e=D4.SingleValueContainer,i6e=D4.IndirectPaletteContainer,IWe=D4.DirectPaletteContainer;function s6e(i){return i.y<<4|i.z<<2|i.x}var bI=class i{constructor(e){this.noSizePrefix=e?.noSizePrefix,this.data=e?.data??new r6e({noSizePrefix:this.noSizePrefix,value:e?.singleValue??0,bitsPerValue:no.MIN_BITS_PER_BIOME,capacity:no.BIOME_SECTION_VOLUME,maxBits:no.MAX_BITS_PER_BIOME})}toJson(){return this.data.toJson()}static fromJson(e){return new i({data:D4.fromJson(e)})}get(e){return this.data.get(s6e(e))}set(e,t){this.data=this.data.set(s6e(e),t)}static fromLocalPalette({palette:e,data:t,noSizePrefix:n}){return new i({noSizePrefix:n,data:e.length===1?new r6e({noSizePrefix:n,value:e[0],bitsPerValue:no.MIN_BITS_PER_BIOME,capacity:no.BIOME_SECTION_VOLUME,maxBits:no.MAX_BITS_PER_BIOME}):new i6e({noSizePrefix:n,palette:e,data:t})})}write(e){this.data.write(e)}static read(e,t=no.GLOBAL_BITS_PER_BIOME,n){let r=e.readUInt8();if(r>8)throw new Error(`Bits per biome is too big: ${r}`);if(r===0){let a=new i({noSizePrefix:n,singleValue:yI.read(e)});return n||e.readUInt8(),a}if(r>no.MAX_BITS_PER_BIOME)return new i({noSizePrefix:n,data:new IWe({noSizePrefix:n,bitsPerValue:t,capacity:no.BIOME_SECTION_VOLUME}).readBuffer(e,r)});let s=[],o=yI.read(e);for(let a=0;a<o;++a)s.push(yI.read(e));return new i({data:new i6e({noSizePrefix:n,bitsPerValue:r,capacity:no.BIOME_SECTION_VOLUME,maxBits:no.MAX_BITS_PER_BIOME,palette:s}).readBuffer(e,r)})}};o6e.exports=bI});var p6e=S((P6n,m6e)=>{f();m();h();var U4=O0().SmartBuffer,wn=v2(),b2=n6e(),V4=a6e(),RWe=nl(),l6e=mr(),c6e=$r(),CWe=-64,PWe=384;m6e.exports=(i,e)=>{let t=e.version[">="]("1.21.5");return class h6e extends RWe{static get section(){return b2}constructor(r){super(e),this.minY=r?.minY??CWe,this.worldHeight=r?.worldHeight??PWe,this.numSections=this.worldHeight>>4,this.maxBitsPerBlock=c6e(Object.values(e.blocks).reduce((s,o)=>Math.max(s,o.maxStateId),0)),this.maxBitsPerBiome=c6e(Object.values(e.biomes).length),this.sections=r?.sections??Array.from({length:this.numSections},s=>new b2({noSizePrefix:t,maxBitsPerBlock:this.maxBitsPerBlock})),this.biomes=r?.biomes??Array.from({length:this.numSections},s=>new V4({noSizePrefix:t})),this.skyLightMask=r?.skyLightMask??new wn({bitsPerValue:1,capacity:this.numSections+2}),this.emptySkyLightMask=r?.emptySkyLightMask??new wn({bitsPerValue:1,capacity:this.numSections+2}),this.skyLightSections=r?.skyLightSections??Array(this.numSections+2).fill(null),this.blockLightMask=r?.blockLightMask??new wn({bitsPerValue:1,capacity:this.numSections+2}),this.emptyBlockLightMask=r?.emptyBlockLightMask??new wn({bitsPerValue:1,capacity:this.numSections+2}),this.blockLightSections=r?.blockLightSections??Array(this.numSections+2).fill(null),this.blockEntities=r?.blockEntities??{}}toJson(){return JSON.stringify({worldHeight:this.worldHeight,minY:this.minY,sections:this.sections.map(r=>r.toJson()),biomes:this.biomes.map(r=>r.toJson()),skyLightMask:this.skyLightMask.toLongArray(),emptySkyLightMask:this.emptySkyLightMask.toLongArray(),skyLightSections:this.skyLightSections.map(r=>r===null?null:r.toJson()),blockLightMask:this.blockLightMask.toLongArray(),emptyBlockLightMask:this.emptyBlockLightMask.toLongArray(),blockLightSections:this.blockLightSections.map(r=>r===null?null:r.toJson()),blockEntities:this.blockEntities})}static fromJson(r){let s=JSON.parse(r);return new h6e({worldHeight:s.worldHeight,minY:s.minY,sections:s.sections.map(o=>b2.fromJson(o)),biomes:s.biomes.map(o=>V4.fromJson(o)),blockEntities:s.blockEntities,skyLightMask:wn.fromLongArray(s.skyLightMask,1),emptySkyLightMask:wn.fromLongArray(s.emptyBlockLightMask,1),skyLightSections:s.skyLightSections.map(o=>o===null?null:wn.fromJson(o)),blockLightMask:wn.fromLongArray(s.blockLightMask,1),emptyBlockLightMask:wn.fromLongArray(s.emptySkyLightMask,1),blockLightSections:s.blockLightSections.map(o=>o===null?null:wn.fromJson(o))})}initialize(r){let s={x:0,y:0,z:0},o=this.worldHeight+this.minY;for(s.y=this.minY;s.y<o;s.y++)for(s.z=0;s.z<l6e.SECTION_WIDTH;s.z++)for(s.x=0;s.x<l6e.SECTION_WIDTH;s.x++){let a=r(s.x,s.y,s.z);a!==null&&this.setBlock(s,a)}}getBlock(r){let s=this.getBlockStateId(r),o=this.getBiome(r),a=i.fromStateId(s,o);return a.light=this.getBlockLight(r),a.skyLight=this.getSkyLight(r),a.entity=this.getBlockEntity(r),a}setBlock(r,s){typeof s.stateId<"u"&&this.setBlockStateId(r,s.stateId),typeof s.biome<"u"&&this.setBiome(r,s.biome.id),typeof s.skyLight<"u"&&this.setSkyLight(r,s.skyLight),typeof s.light<"u"&&this.setBlockLight(r,s.light),s.entity?this.setBlockEntity(r,s.entity):this.removeBlockEntity(r)}getBlockType(r){let s=this.getBlockStateId(r);return e.blocksByStateId[s].id}getBlockData(r){let s=this.getBlockStateId(r);return e.blocksByStateId[s].metadata}getBlockStateId(r){let s=this.sections[r.y-this.minY>>4];return s?s.get(u6e(r,this.minY)):0}getBlockLight(r){let s=this.blockLightSections[F4(r,this.minY)];if(!s)return 0;let a=(r.y-this.minY)%16*16*16+r.z*16+r.x;return s.get(a)}getSkyLight(r){let s=this.skyLightSections[F4(r,this.minY)];if(!s)return 0;let a=(r.y-this.minY)%16*16*16+r.z*16+r.x;return s.get(a)}getBiome(r){let s=this.biomes[r.y-this.minY>>4];return s?s.get(d6e(r,this.minY)):0}setBlockType(r,s){this.setBlockStateId(r,e.blocks[s].minStateId)}setBlockData(r,s){this.setBlockStateId(r,e.blocksByStateId[this.getBlockStateId(r)].minStateId+s)}setBlockStateId(r,s){let o=this.sections[r.y-this.minY>>4];o&&o.set(u6e(r,this.minY),s)}setBlockLight(r,s){let o=F4(r,this.minY),a=this.blockLightSections[o];if(a===null){if(s===0)return;a=new wn({bitsPerValue:4,capacity:4096}),o>this.blockLightMask.capacity&&(this.blockLightMask=this.blockLightMask.resize(o)),this.blockLightMask.set(o,1),this.blockLightSections[o]=a}a.set(f6e(r,this.minY),s)}setSkyLight(r,s){let o=F4(r,this.minY),a=this.skyLightSections[o];if(a===null){if(s===0)return;a=new wn({bitsPerValue:4,capacity:4096}),this.skyLightMask.set(o,1),this.skyLightSections[o]=a}a.set(f6e(r,this.minY),s)}setBiome(r,s){let o=this.biomes[r.y-this.minY>>4];o&&o.set(d6e(r,this.minY),s)}getMask(){}dump(){let r=new U4;for(let s=0;s<this.numSections;++s)this.sections[s].write(r),this.biomes[s].write(r);return r.length?r.toBuffer():Buffer.alloc(4096)}loadBiomes(r){}dumpBiomes(r){}load(r){let s=U4.fromBuffer(r);for(let o=0;o<this.numSections;++o)this.sections[o]=b2.read(s,this.maxBitsPerBlock,t),this.biomes[o]=V4.read(s,this.maxBitsPerBiome,t)}loadParsedLight(r,s,o,a,l,c){function d(u,p,v,_,b,y){let g=0,w=wn.fromLongArray(_,1),x=wn.fromLongArray(y,1);for(let E=0;E<u.length;E++){let A=x.get(E);if(!w.get(E)&&!A)continue;b.set(E,A),v.set(E,1-A);let C=new wn({bitsPerValue:4,capacity:4096});if(u[E]=C,!A){let R=p[g++];for(let L=0;L<R.length;L++){let M=R[L],k=L*2,F=L*2+1,Z=M&15,U=M>>4&15,H=k%16,Y=Math.floor(k/16)%16,ce=Math.floor(k/256),te=F%16,re=Math.floor(F/16)%16,ae=Math.floor(F/256),j=ce*16*16+Y*16+H,D=ae*16*16+re*16+te;C.set(j,Z),F<4096&&C.set(D,U)}}}}d(this.skyLightSections,r,this.skyLightMask,o,this.emptySkyLightMask,l),d(this.blockLightSections,s,this.blockLightMask,a,this.emptyBlockLightMask,c)}_loadBlockLightNibbles(r,s){if(s.length!==2048)throw new Error("Invalid light nibble buffer length "+s.length);let o=Math.abs(this.minY>>4)+1;this.blockLightMask.set(r+o,1);let a=new wn({bitsPerValue:4,capacity:4096});for(let l=0;l<s.length;l++){let c=s[l],d=l*2,u=l*2+1,p=c&15,v=c>>4&15,_=d%16,b=Math.floor(d/16)%16,y=Math.floor(d/256),g=u%16,w=Math.floor(u/16)%16,x=Math.floor(u/256),E=y*16*16+b*16+_,A=x*16*16+w*16+g;a.set(E,p),u<4096&&a.set(A,v)}this.blockLightSections[r+o]=a}_loadSkyLightNibbles(r,s){if(s.length!==2048)throw new Error("Invalid light nibble buffer length: "+s.length);let o=Math.abs(this.minY>>4)+1;this.skyLightMask.set(r+o,1);let a=new wn({bitsPerValue:4,capacity:4096});for(let l=0;l<s.length;l++){let c=s[l],d=l*2,u=l*2+1,p=c&15,v=c>>4&15,_=d%16,b=Math.floor(d/16)%16,y=Math.floor(d/256),g=u%16,w=Math.floor(u/16)%16,x=Math.floor(u/256),E=y*16*16+b*16+_,A=x*16*16+w*16+g;a.set(E,p),u<4096&&a.set(A,v)}this.skyLightSections[r+o]=a}loadSection(r,s,o,a,l){let c=Math.abs(this.minY>>4),d=p=>{throw new Error(`Failed to map ${JSON.stringify(p)} to a block state ID`)},u=p=>{throw new Error(`Failed to map ${JSON.stringify(p)} to a biome ID`)};this.sections[r+c]=b2.fromLocalPalette({noSizePrefix:t,data:wn.fromLongArray(s.data||{},s.bitsPerBlock),palette:s.palette.map(p=>i.fromProperties(p.Name.replace("minecraft:",""),p.Properties||{})??d(p)).map(p=>p.stateId)}),this.biomes[r+c]=V4.fromLocalPalette({noSizePrefix:t,data:wn.fromLongArray(o.data||{},o.bitsPerBiome),palette:o.palette.map(p=>e.biomesByName[p.replace("minecraft:","")]??u(p)).map(p=>p.id)}),a&&this._loadBlockLightNibbles(r,a),l&&this._loadSkyLightNibbles(r,l)}dumpLight(){let r=[],s=[];return this.skyLightSections.forEach((o,a)=>{if(o!==null&&this.skyLightMask.get(a)){let l=new U4;o.writeBuffer(l),r.push(Uint8Array.from(l.toBuffer()))}}),this.blockLightSections.forEach((o,a)=>{if(o!==null&&this.blockLightMask.get(a)){let l=new U4;o.writeBuffer(l),s.push(Uint8Array.from(l.toBuffer()))}}),{skyLight:r,blockLight:s,skyLightMask:this.skyLightMask.toLongArray(),blockLightMask:this.blockLightMask.toLongArray(),emptySkyLightMask:this.emptySkyLightMask.toLongArray(),emptyBlockLightMask:this.emptyBlockLightMask.toLongArray()}}dumpLightNew(){return{skyLightMask:this.skyLightMask.toLongArray(),emptySkyLightMask:this.emptySkyLightMask.toLongArray(),skyLightSections:this.skyLightSections.map(r=>r===null?null:r.toJson()),blockLightMask:this.blockLightMask.toLongArray(),emptyBlockLightMask:this.emptyBlockLightMask.toLongArray(),blockLightSections:this.blockLightSections.map(r=>r===null?null:r.toJson())}}loadLightNew(r){this.skyLightMask=wn.fromLongArray(r.skyLightMask,1),this.emptySkyLightMask=wn.fromLongArray(r.emptySkyLightMask,1),this.skyLightSections=r.skyLightSections.map(s=>s===null?null:wn.fromJson(s)),this.blockLightMask=wn.fromLongArray(r.blockLightMask,1),this.emptyBlockLightMask=wn.fromLongArray(r.emptyBlockLightMask,1),this.blockLightSections=r.blockLightSections.map(s=>s===null?null:wn.fromJson(s))}}};function F4(i,e){return Math.floor((i.y-e)/16)+1}function d6e(i,e){return{x:i.x>>2,y:(i.y-e&15)>>2,z:i.z>>2}}function u6e(i,e){return{x:i.x,y:i.y-e&15,z:i.z}}function f6e(i,e){return(i.y-e&15)<<8|i.z<<4|i.x}});var x2=S((N6n,v6e)=>{f();m();h();function LWe(i){let e=si()(i);return p6e()(e,i)}v6e.exports=LWe});var A6e=S((F6n,S6e)=>{"use strict";f();m();h();var BWe=ga().Vec3,D0=16,vh=16,EI=128,sl=D0*vh*EI,E2=sl/2,H4=sl/2,SI=sl/2,w6e=D0*vh,OWe=D0*vh*4,z4=sl+E2+H4+SI+OWe+w6e,xI=lh().readUInt4LE,wI=lh().writeUInt4LE;S6e.exports=NWe;function NWe(i){return E6e=si()(i),N0.w=D0,N0.l=vh,N0.h=EI,N0.BUFFER_SIZE=z4,N0.version=i.version,N0}var E6e;function w2(i){return i!==void 0}var q4=function(i){return i.x+D0*(i.z+vh*i.y)},g6e=function(i){return q4(i)},_6e=function(i){return sl+q4(i)*.5},y6e=function(i){return sl+E2+q4(i)*.5},b6e=function(i){return sl+E2+H4+q4(i)*.5},x6e=function(i){return sl+E2+H4+SI+i.z*D0+i.x},ph=function(i){return sl+E2+H4+SI+w6e+(i.z*D0+i.x)*4},N0=class i{constructor(){this.data=Buffer.alloc(z4),this.data.fill(0)}toJson(){return JSON.stringify({data:this.data.toJSON()})}static fromJson(e){let t=JSON.parse(e),n=new i;return n.data=Buffer.from(t.data),n}initialize(e){let t=new BWe(0,0,0);for(t.y=0;t.y<EI;t.y++)for(t.z=0;t.z<D0;t.z++)for(t.x=0;t.x<vh;t.x++){let n=e(t.x,t.y,t.z);n!==null&&this.setBlock(t,n)}}getBlock(e){let t=new E6e(this.getBlockType(e),this.getBiome(e),this.getBlockData(e));return t.light=this.getBlockLight(e),t.skyLight=this.getSkyLight(e),t}setBlock(e,t){w2(t.type)&&this.setBlockType(e,t.type),w2(t.metadata)&&this.setBlockData(e,t.metadata),w2(t.biome)&&this.setBiome(e,t.biome.id),w2(t.skyLight)&&this.setSkyLight(e,t.skyLight),w2(t.light)&&this.setBlockLight(e,t.light)}getBlockType(e){return e.y<0||e.y>=256?0:this.data.readUInt8(g6e(e))}setBlockType(e,t){e.y<0||e.y>=256||this.data.writeUInt8(t,g6e(e))}getBlockData(e){return e.y<0||e.y>=256?0:xI(this.data,_6e(e))}setBlockData(e,t){e.y<0||e.y>=256||wI(this.data,t,_6e(e))}getBlockLight(e){return e.y<0||e.y>=256?0:xI(this.data,y6e(e))}setBlockLight(e,t){e.y<0||e.y>=256||wI(this.data,t,y6e(e))}getSkyLight(e){return e.y<0||e.y>=256?0:xI(this.data,b6e(e))}setSkyLight(e,t){e.y<0||e.y>=256||wI(this.data,t,b6e(e))}getBiomeColor(e){let t=this.data.readInt32BE(ph(e))&16777215;return{r:t>>16,g:t>>8&255,b:t&255}}setBiomeColor(e,t,n,r){this.data.writeInt32BE(this.data.readInt32BE(ph(e))&4278190080|(t&255)<<16|(n&255)<<8|r&255,ph(e))}getBiome(e){return(this.data.readInt32BE(ph(e))&4278190080)>>24}setBiome(e,t){this.data.writeInt32BE(this.data.readInt32BE(ph(e))&16777215|t<<24,ph(e))}getHeight(e){return this.data.readUInt8(x6e(e))}setHeight(e,t){this.data.writeUInt8(t,x6e(e))}load(e){if(!Buffer.isBuffer(e))throw new Error("Data must be a buffer");if(e.length!==z4)throw new Error(`Data buffer not correct size (was ${e.length}, expected ${z4})`);this.data=e}dumpBiomes(){}dumpLight(){}loadLight(){}loadBiomes(){}dump(){return this.data}getMask(){return 65535}}});var k6e=S((G6n,M6e)=>{"use strict";f();m();h();var AI=lh().readUInt4LE,MI=lh().writeUInt4LE,Od=16*16*16,S2=16*16*16/2,TI=16*16*16/2,DWe=16*16*16/2,kI=1+(Od+S2+DWe+TI);function U0(i){return 1+(i.x*256+i.z*16+i.y)}var II=class i{constructor(){this.data=Buffer.alloc(kI),this.data.fill(0)}toJson(){return JSON.stringify({data:this.data.toJSON()})}static fromJson(e){let t=JSON.parse(e),n=new i;return n.data=Buffer.from(t.data),n}getBlockType(e){return this.data.readUInt8(U0(e))}setBlockType(e,t){this.data.writeUInt8(t,U0(e))}getBlockLight(e){return AI(this.data,Od+S2+TI+U0(e)/2)}setBlockLight(e,t){MI(this.data,t,Od+S2+TI+U0(e)/2)}getSkyLight(e){return AI(this.data,Od+S2+U0(e)/2)}setSkyLight(e,t){MI(this.data,t,Od+S2+U0(e)/2)}getBlockData(e){return AI(this.data,Od+U0(e)/2)}setBlockData(e,t){MI(this.data,t,Od+U0(e)/2)}load(e){if(!Buffer.isBuffer(e))throw new Error("Data must be a buffer");if(e.length!==kI)throw new Error(`Data buffer not correct size (was ${e.length}, expected ${kI})`);this.data=e}dump(){return this.data}};M6e.exports=II});var L6e=S((X6n,P6e)=>{"use strict";f();m();h();var T6e=k6e(),ol=ga(),I6e=256,R6e=256*2,UWe=I6e+R6e;P6e.exports=VWe;function VWe(i){return C6e=si()(i),V0.w=16,V0.l=16,V0.h=256,V0.BUFFER_SIZE=771+16*10241,V0.version=i.version,V0}var C6e;function A2(i){return i!==void 0}var V0=class i{constructor(){this.chunks=new Array(16);for(let e=0;e<this.chunks.length;e++)this.chunks[e]=new T6e;this.data=Buffer.alloc(UWe),this.data.fill(0);for(let e=0;e<256;e++)this.data[e]=1}toJson(){return JSON.stringify({data:this.data,sections:this.chunks.map(e=>e.toJson())})}static fromJson(e){let t=JSON.parse(e),n=new i;return n.data=t.data,n.chunks=t.sections.map(r=>T6e.fromJson(r)),n}initialize(e){let t=new ol(0,0,0);for(t.y=0;t.y<i.h;t.y++)for(t.z=0;t.z<i.w;t.z++)for(t.x=0;t.x<i.l;t.x++){let n=e(t.x,t.y,t.z);n!==null&&this.setBlock(t,n)}}getBlock(e){let t=new C6e(this.getBlockType(e),this.getBiome(e),this.getBlockData(e));return t.light=this.getBlockLight(e),t.skyLight=this.getSkyLight(e),t}setBlock(e,t){A2(t.type)&&this.setBlockType(e,t.type),A2(t.metadata)&&this.setBlockData(e,t.metadata),A2(t.biome)&&this.setBiome(e,t.biome.id),A2(t.skyLight)&&this.setSkyLight(e,t.skyLight),A2(t.light)&&this.setBlockLight(e,t.light)}getBlockType(e){let t=this.chunks[e.y>>4];return t?t.getBlockType(new ol(e.x,e.y-16*(e.y>>4),e.z)):0}setBlockType(e,t){let n=this.chunks[e.y>>4];return n&&n.setBlockType(new ol(e.x,e.y-16*(e.y>>4),e.z),t)}getBlockData(e){let t=this.chunks[e.y>>4];return t?t.getBlockData(new ol(e.x,e.y-16*(e.y>>4),e.z)):0}setBlockData(e,t){let n=this.chunks[e.y>>4];return n&&n.setBlockData(new ol(e.x,e.y-16*(e.y>>4),e.z),t)}getBlockLight(e){let t=this.chunks[e.y>>4];return t?t.getBlockLight(new ol(e.x,e.y-16*(e.y>>4),e.z)):0}setBlockLight(e,t){let n=this.chunks[e.y>>4];return n&&n.setBlockLight(new ol(e.x,e.y-16*(e.y>>4),e.z),t)}getSkyLight(e){let t=this.chunks[e.y>>4];return t?t.getSkyLight(new ol(e.x,e.y-16*(e.y>>4),e.z)):15}setSkyLight(e,t){let n=this.chunks[e.y>>4];return n&&n.setSkyLight(new ol(e.x,e.y-16*(e.y>>4),e.z),t)}getBiomeColor(e){return{x:0,y:0,z:0}}setBiomeColor(e,t,n,r){}getBiome(e){return this.data.readUInt8((e.z<<4)+e.x)}setBiome(e,t){this.data.writeUInt8(t,(e.z<<4)+e.x)}getHeight(e){return this.data.readUInt8((e.z<<4)+e.x)}setHeight(e,t){this.data.writeUInt8(t,(e.z<<4)+e.x)}load(e){if(!Buffer.isBuffer(e))throw new Error("Data must be a buffer");let t=0,n=e.readUInt8(t);if(t+=1,n*10241+1>e.length)throw new Error(`Data buffer not correct size (was ${e.length}, expected ${771+16*10241})`);for(let r=0;r<n;r++)this.chunks[r].load(e.slice(t,t+10241)),t+=10241}size(){let e=1;return e+=this.chunks.length*10241,e+=R6e,e+=I6e,e+=1,e+=1,e}dumpBiomes(){}dumpLight(){}loadLight(){}loadBiomes(){}dump(){let e=0,t=Buffer.alloc(this.size());t.fill(0),t.writeUInt8(this.chunks.length,e),e+=1;for(let n=0;n<this.chunks.length;n++){let r=this.chunks[n].dump();r.copy(t,e),e+=r.length}return this.data.copy(t,e),e+=this.data.length,t.writeUInt8(0,e),e+=1,t.writeUInt8(0,e),e+=1,t}getMask(){return 65535}}});var F0=S((Z6n,B6e)=>{f();m();h();B6e.exports={StorageType:{LocalPersistence:0,NetworkPersistence:1,Runtime:2},ChunkVersion:{v0_9_00:0,v0_9_02:1,v0_9_05:2,v0_17_0:3,v0_18_0:4,vConsole1_to_v0_18_0:5,v1_2_0:6,v1_2_0_bis:7,v1_4_0:8,v1_8_0:9,v1_9_0:10,v1_10_0:11,v1_11_0:12,v1_11_1:13,v1_11_2:14,v1_12_0:15,v1_15_0:16,v1_15_1:17,v1_16_0:18,v1_16_1:19,v1_16_100:20,v1_16_200:21,v1_16_210:22,v1_17_0:25,v1_17_30:29,v1_17_40:31,v1_18_0:39,v1_18_11:39}}});var M2=S((ngn,O6e)=>{f();m();h();var RI=class{constructor(e){this.buffer=e||Buffer.allocUnsafe(1e4),this.readOffset=0,this.writeOffset=0,this.size=this.buffer.length}resizeForWriteIfNeeded(e){if(this.writeOffset+e>this.size){this.size*=2;let t=this.size-this.writeOffset;this.buffer=Buffer.concat([this.buffer,Buffer.allocUnsafe(t)])}if(this.size>2097152)throw new Error("Buffer size exceeded guard limit")}readByte(){return this.buffer[this.readOffset++]}writeUInt8(e){this.resizeForWriteIfNeeded(1),this.buffer.writeUInt8(e,this.writeOffset),this.writeOffset+=1}writeUInt16LE(e){this.resizeForWriteIfNeeded(2),this.buffer.writeUInt16LE(e,this.writeOffset),this.writeOffset+=2}writeUInt32LE(e){this.resizeForWriteIfNeeded(4),this.buffer.writeUInt32LE(e,this.writeOffset),this.writeOffset+=4}writeUInt64LE(e){switch(this.resizeForWriteIfNeeded(8),typeof e){case"bigint":this.buffer.writeBigUInt64LE(e,this.writeOffset);break;case"number":this.buffer.writeUInt32LE(e&4294967295,this.writeOffset),this.buffer.writeUInt32LE(e>>>32,this.writeOffset+4);break;default:throw new Error("Invalid value type")}this.writeOffset+=8}writeFloatLE(e){this.resizeForWriteIfNeeded(4),this.buffer.writeFloatLE(e,this.writeOffset),this.writeOffset+=4}writeDoubleLE(e){this.resizeForWriteIfNeeded(8),this.buffer.writeDoubleLE(e,this.writeOffset),this.writeOffset+=8}writeUInt16BE(e){this.resizeForWriteIfNeeded(2),this.buffer.writeUInt16BE(e,this.writeOffset),this.writeOffset+=2}writeUInt32BE(e){this.resizeForWriteIfNeeded(4),this.buffer.writeUInt32BE(e,this.writeOffset),this.writeOffset+=4}writeUInt64BE(e){switch(this.resizeForWriteIfNeeded(8),typeof e){case"bigint":this.buffer.writeBigUInt64BE(e,this.writeOffset);break;case"number":this.buffer.writeUInt32BE(e>>>32,this.writeOffset),this.buffer.writeUInt32BE(e&4294967295,this.writeOffset+4);break;default:throw new Error("Invalid value type")}this.writeOffset+=8}writeInt8(e){this.resizeForWriteIfNeeded(1),this.buffer.writeInt8(e,this.writeOffset),this.writeOffset+=1}writeInt16LE(e){this.resizeForWriteIfNeeded(2),this.buffer.writeInt16LE(e,this.writeOffset),this.writeOffset+=2}writeInt32LE(e){this.resizeForWriteIfNeeded(4),this.buffer.writeInt32LE(e,this.writeOffset),this.writeOffset+=4}writeInt64LE(e){switch(this.resizeForWriteIfNeeded(8),typeof e){case"bigint":this.buffer.writeBigInt64LE(e,this.writeOffset);break;case"number":this.buffer.writeInt32LE(e&4294967295,this.writeOffset),this.buffer.writeInt32LE(e>>>32,this.writeOffset+4);break;default:throw new Error("Invalid value type")}this.writeOffset+=8}writeInt16BE(e){this.resizeForWriteIfNeeded(2),this.buffer.writeInt16BE(e,this.writeOffset),this.writeOffset+=2}writeInt32BE(e){this.resizeForWriteIfNeeded(4),this.buffer.writeInt32BE(e,this.writeOffset),this.writeOffset+=4}writeInt64BE(e){switch(this.resizeForWriteIfNeeded(8),typeof e){case"bigint":this.buffer.writeBigInt64BE(e,this.writeOffset);break;case"number":this.buffer.writeInt32BE(e>>>32,this.writeOffset),this.buffer.writeInt32BE(e&4294967295,this.writeOffset+4);break;default:throw new Error("Invalid value type")}this.writeOffset+=8}writeFloatBE(e){this.resizeForWriteIfNeeded(4),this.buffer.writeFloatBE(e,this.writeOffset),this.writeOffset+=4}writeDoubleBE(e){this.resizeForWriteIfNeeded(8),this.buffer.writeDoubleBE(e,this.writeOffset),this.writeOffset+=8}readUInt8(){let e=this.buffer.readUInt8(this.readOffset);return this.readOffset+=1,e}readUInt16LE(){let e=this.buffer.readUInt16LE(this.readOffset);return this.readOffset+=2,e}readUInt32LE(){let e=this.buffer.readUInt32LE(this.readOffset);return this.readOffset+=4,e}readUInt64LE(){let e=this.buffer.readBigUInt64LE(this.readOffset);return this.readOffset+=8,e}readUInt16BE(){let e=this.buffer.readUInt16BE(this.readOffset);return this.readOffset+=2,e}readUInt32BE(){let e=this.buffer.readUInt32BE(this.readOffset);return this.readOffset+=4,e}readUInt64BE(){let e=this.buffer.readBigUInt64BE(this.readOffset);return this.readOffset+=8,e}readInt8(){let e=this.buffer.readInt8(this.readOffset);return this.readOffset+=1,e}readInt16LE(){let e=this.buffer.readInt16LE(this.readOffset);return this.readOffset+=2,e}readInt32LE(){let e=this.buffer.readInt32LE(this.readOffset);return this.readOffset+=4,e}readInt64LE(){let e=this.buffer.readBigInt64LE(this.readOffset);return this.readOffset+=8,e}writeStringNT(e,t="utf8"){this.resizeForWriteIfNeeded(e.length+1),this.buffer.write(e,this.writeOffset,e.length,t),this.buffer[this.writeOffset+e.length]=0,this.writeOffset+=e.length+1}writeStringRaw(e,t="utf8"){this.resizeForWriteIfNeeded(e.length),this.buffer.write(e,this.writeOffset,e.length,t),this.writeOffset+=e.length}writeBuffer(e){this.resizeForWriteIfNeeded(e.length),e.copy(this.buffer,this.writeOffset),this.writeOffset+=e.length}readBuffer(e){let t=this.buffer.slice(this.readOffset,this.readOffset+e);return this.readOffset+=e,t}writeVarInt(e){this.resizeForWriteIfNeeded(9);let t=0;for(;e>=128;)this.buffer[this.writeOffset+t]=e&127|128,e=e>>>7,t+=1;this.buffer[this.writeOffset+t]=e,this.writeOffset+=t+1}readVarInt(){let e=0,t=0,n;do n=this.buffer[this.readOffset+t],e|=(n&127)<<7*t,t+=1;while(n&128);return this.readOffset+=t,e}writeVarLong(e){this.resizeForWriteIfNeeded(9);let t=0;for(;e>=0x80n;)this.buffer[this.writeOffset+t]=e&0x7fn|0x80n,e=e>>>7n,t+=1;this.buffer[this.writeOffset+t]=e,this.writeOffset+=t+1}readVarLong(){let e=0n,t=0n,n;do n=this.buffer[this.readOffset+t],e|=(n&0x7fn)<<7n*t,t+=1n;while(n&0x80n);return this.readOffset+=Number(t),e}writeZigZagVarInt(e){let t=e<<1^e>>31;this.writeVarInt(t)}readZigZagVarInt(){let e=this.readVarInt();return e>>>1^-(e&1)}writeZigZagVarlong(e){let t=e<<1n^e>>63n;this.writeVarlong(t)}readZigZagVarlong(){let e=this.readVarInt();return e>>>1n^-(e&1n)}peekUInt8(){return this.buffer[this.readOffset]}peek(){return this.buffer[this.readOffset]}getBuffer(){return this.buffer.slice(0,this.writeOffset)}};O6e.exports=RI});var U6e=S((ogn,D6e)=>{f();m();h();var{Vec3:FWe}=ga(),N6e=M2(),G4=_i(),k2=i=>`${i.x},${i.y},${i.z}`,zWe=(i,e,t)=>`${i&15},${e},${t&15}`,CI=class{constructor(e,t){this.x=e.x||0,this.z=e.z||0,this.registry=t,this.chunkVersion=e.chunkVersion,this.blockEntities=e.blockEntities||{},this.sections=[],this.entities={},this.compactOnSave=!1,this.setBounds(0,16)}setBounds(e,t){this.minCY=e,this.maxCY=t,this.maxY=this.maxCY*16,this.minY=this.minCY*16,this.worldHeight=this.maxY+Math.abs(this.minY),this.co=Math.abs(this.minCY)}initialize(e){let t=new FWe;for(t.y=0;t.y<this.worldHeight;t.y++)for(t.z=0;t.z<16;t.z++)for(t.x=0;t.x<16;t.x++){let n=e(t.x,t.y,t.z);n&&this.setBlock(t,n)}}getBlock(e,t=!0){let n=e.y>>4,r=this.sections[this.co+n];if(!r)return this.Block.fromStateId(this.registry.blocksByName.air.defaultState,0);let s=r.getBlock(e.l,e.x,e.y&15,e.z,this.getBiomeId(e));return t&&(s.light=r.blockLight.get(e.x,e.y&15,e.z),s.skyLight=r.skyLight.get(e.x,e.y&15,e.z),s.entity=this.getBlockEntity(e)),s}setBlock(e,t){let n=e.y>>4,r=this.sections[this.co+n];r||(r=new this.Section(this.registry,this.Block,{y:n,subChunkVersion:this.subChunkVersion}),this.sections[this.co+n]=r),r.setBlock(e.l,e.x,e.y&15,e.z,t),t.light!==void 0&&r.blockLight.set(e.x,e.y&15,e.z,t.light),t.skyLight!==void 0&&r.skyLight.set(e.x,e.y&15,e.z,t.skyLight),t.entity&&this.setBlockEntity(e,t.entity)}getBlockStateId(e){let t=e.y>>4,n=this.sections[this.co+t];if(n)return n.getBlockStateId(e.l,e.x,e.y&15,e.z)}setBlockStateId(e,t){let n=e.y>>4,r=this.sections[this.co+n];r||(r=new this.Section(this.registry,this.Block,{y:n,subChunkVersion:this.subChunkVersion}),this.sections[this.co+n]=r),r.setBlockStateId(e.l,e.x,e.y&15,e.z,t)}getBiomeId(e){return 0}setBiomeId(e,t){}getBlocks(){let e=this.sections.map(n=>n.getPalette()).flat(2);return Object.values(e.reduce((n,r)=>(n[r.stateId]||(n[r.stateId]=r),n[r.stateId]=r,n),{}))}setBlockLight(e,t){this.sections[this.co+(e.y>>4)].blockLight.set(e.x,e.y&15,e.z,t)}setSkyLight(e,t){this.sections[this.co+(e.y>>4)].skyLight.set(e.x,e.y&15,e.z,t)}getSkyLight(e){return this.sections[this.co+(e.y>>4)].skyLight.get(e.x,e.y&15,e.z)}getBlockLight(e){return this.sections[this.co+(e.y>>4)].blockLight.get(e.x,e.y&15,e.z)}setBlockEntity(e,t){this.blockEntities[k2(e)]=t}getBlockEntity(e){return this.blockEntities[k2(e)]}addBlockEntity(e){let t=zWe(e.value.x.value,e.value.y.value,e.value.z.value);this.blockEntities[t]=e}removeBlockEntity(e){delete this.blockEntities[k2(e)]}moveBlockEntity(e,t){let n=k2(e),r=k2(t),s=this.blockEntities[n];delete this.blockEntities[n],this.blockEntities[r]=s}addEntity(e){let t=e.value.UniqueID.value.toString();this.entities[t]=e}removeEntity(e){delete this.entities[e]}getSection({y:e}){return this.sections[this.co+(e>>4)]}getSectionAtIndex(e){return this.sections[this.co+e]}setSection(e,t){this.sections[this.co+e]=t}newSection(e,t,n){if(t===void 0){let r=this.Section.create(this.registry,this.Block,{y:e,subChunkVersion:this.subChunkVersion});return this.setSection(e,r),r}else{let r=new this.Section(this.registry,this.Block,{y:e,subChunkVersion:this.subChunkVersion});return r.decode(t,n),this.setSection(e,r),r}}getSectionBlockEntities(e){let t=[];for(let n in this.blockEntities)parseInt(n.split(",")[1])>>4===e&&t.push(this.blockEntities[n]);return t}getSections(){return this.sections}getEntities(){return this.entities}loadEntities(e){this.entities=e}diskEncodeBlockEntities(){let e=[];for(let t in this.blockEntities){let n=this.blockEntities[t];e.push(G4.writeUncompressed(n,"little"))}return Buffer.concat(e)}diskEncodeEntities(){let e=[];for(let t in this.entities){let n=this.entities[t];e.push(G4.writeUncompressed(n,"little"))}return Buffer.concat(e)}diskDecodeBlockEntities(e){if(!e)return;let t=e instanceof Buffer?new N6e(e):e,n=t.readOffset;for(;t.peek()===10;){let{data:r,metadata:s}=G4.protos.little.parsePacketBuffer("nbt",e,n);t.readOffset+=s.size,n+=s.size,this.addBlockEntity(r)}}diskDecodeEntities(e){if(!e)return;let t=e instanceof Buffer?new N6e(e):e,n=t.readOffset;for(;t.peek()===10;){let{data:r,metadata:s}=G4.protos.little.parsePacketBuffer("nbt",e,n);t.readOffset+=s.size,n+=s.size,this.addEntity(r)}}toObject(){let e=this.sections.map(o=>o?.toObject()),{x:t,z:n,chunkVersion:r,blockEntities:s}=this;return{x:t,z:n,chunkVersion:r,blockEntities:s,sections:e}}};D6e.exports=CI});var W4=S((dgn,V6e)=>{f();m();h();var gh=class extends Uint32Array{toJSON(){return Array.from(this)}[Symbol.for("nodejs.util.inspect.custom")](){return`[Uint32Array of ${this.length} items { ${this.slice(0,10).toString()} ${this.length>10?", ...":""} }]`}},PI=class i{constructor(e){this.bitsPerBlock=e,this.blocksPerWord=Math.floor(32/e),this.wordsCount=Math.ceil(4096/this.blocksPerWord),this.mask=(1<<e)-1,this.array=new gh(this.wordsCount)}read(e){let t=e.readBuffer(this.wordsCount*4);this.array=new gh(new Uint8Array(t).buffer)}write(e){e.writeBuffer(Buffer.from(this.array.buffer))}static copyFrom(e){let t=new i(e.bitsPerBlock);return Object.assign(t,e),e instanceof Uint32Array?t.array=new gh(e.array.slice()):t.array=new gh(e.array),t}getBuffer(){return Buffer.from(this.array.buffer)}readBits(e,t){return this.array[e]>>t&this.mask}writeBits(e,t,n){this.array[e]&=~(this.mask<<t),this.array[e]|=(n&this.mask)<<t}getIndex(e,t,n){e&=15,t&=15,n&=15;let r=Math.floor((e<<8|n<<4|t)/this.blocksPerWord),s=(e<<8|n<<4|t)%this.blocksPerWord*this.bitsPerBlock;return[r,s]}get(e,t,n){let[r,s]=this.getIndex(e,t,n);return this.readBits(r,s)}set(e,t,n,r){let[s,o]=this.getIndex(e,t,n);this.writeBits(s,o,r)}resize(e){let t=new i(e);for(let n=0;n<16;n++)for(let r=0;r<16;r++)for(let s=0;s<16;s++)t.set(n,r,s,this.get(n,r,s));return t}forEach(e){for(let t=0;t<4096;t++){let n=Math.floor(t/this.blocksPerWord),r=t%this.blocksPerWord*this.bitsPerBlock;e(this.readBits(n,r))}}incrementPalette(e){for(let t=0;t<4096;t++){let n=Math.floor(t/this.blocksPerWord),r=t%this.blocksPerWord*this.bitsPerBlock,s=this.readBits(n,r);e[s].count++}}};V6e.exports=PI});var H6e=S((mgn,z6e)=>{"use strict";f();m();h();var HWe=new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,2,127,127,0,96,3,127,127,127,1,127,3,3,2,1,0,5,3,1,0,1,7,23,3,3,109,101,109,2,0,5,120,120,104,51,50,0,0,5,120,120,104,54,52,0,1,10,152,9,2,242,2,1,4,127,32,0,32,1,106,33,3,32,1,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,1,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,1,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,1,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,1,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,106,33,2,3,64,32,3,32,0,65,4,106,79,4,64,32,2,32,0,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,2,32,0,65,4,106,33,0,12,1,11,11,3,64,32,0,32,3,73,4,64,32,2,32,0,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,2,32,0,65,1,106,33,0,12,1,11,11,32,2,32,2,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,161,6,2,4,126,3,127,32,0,65,4,106,53,2,0,32,0,53,2,0,66,32,134,132,33,2,32,1,32,0,65,8,106,34,6,106,33,7,32,1,65,32,79,4,126,32,7,65,32,107,33,8,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,6,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,6,65,8,106,34,6,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,6,65,8,106,34,6,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,6,65,8,106,34,6,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,8,32,6,65,8,106,34,6,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,33,2,3,64,32,7,32,6,65,8,106,79,4,64,32,2,32,6,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,2,32,6,65,8,106,33,6,12,1,11,11,32,6,65,4,106,32,7,77,4,64,32,2,32,6,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,2,32,6,65,4,106,33,6,11,3,64,32,6,32,7,73,4,64,32,2,32,6,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,6,65,1,106,33,6,12,1,11,11,32,0,32,2,32,2,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,2,66,29,136,32,2,133,66,249,243,221,241,153,246,153,171,22,126,34,2,66,32,136,32,2,133,34,2,66,32,136,62,2,0,32,0,65,4,106,32,2,62,2,0,11]),_h;function F6e(i,e,t){if(e.buffer.byteLength<i.byteLength+t){let n=Math.ceil((i.byteLength+t-e.buffer.byteLength)/65536);e.grow(n)}new Uint8Array(e.buffer,t).set(i)}z6e.exports=async function(){let{instance:{exports:{mem:i,xxh32:e,xxh64:t}}}=await WebAssembly.instantiate(HWe);function n(s,o=0){return F6e(s,i,0),e(0,s.byteLength,o)>>>0}function r(s,o=0,a=0){F6e(s,i,8);let l=new DataView(i.buffer);return l.setUint32(0,o,!0),l.setUint32(4,a,!0),t(0,s.byteLength),l}return{h32:function(s,o=0){return _h||(_h=new(Fg(),Qn(gE)).TextEncoder),n(_h.encode(s),o).toString(16)},h32Raw:n,h64:function(s,o=0,a=0){_h||(_h=new(Fg(),Qn(gE)).TextEncoder);let l=r(_h.encode(s),o,a);return l.getUint32(0,!0).toString(16)+l.getUint32(4,!0).toString(16)},h64Raw:function(s,o=0,a=0){return new Uint8Array(r(s,o,a).buffer,0,8)}}}});var BI=S((_gn,q6e)=>{f();m();h();var qWe=H6e(),LI;q6e.exports={async getChecksum(i){LI||(LI=await qWe());let e=LI.h64Raw(i),t=BigInt(e[0]|e[1]<<8|e[2]<<16|e[3]<<24),n=BigInt(e[4]|e[5]<<8|e[6]<<16|e[7]<<24);return BigInt.asUintN(32,t)<<32n|BigInt.asUintN(32,n)}}});var NI=S((wgn,j6e)=>{f();m();h();var al=W4(),{StorageType:z0}=F0(),{getChecksum:GWe}=BI(),G6e=$r(),W6e=M2(),Nd=_i(),OI=class{constructor(e,t,n={}){if(this.registry=e,!e)throw new Error("registry is required");if(this.Block=t,this.y=n.y,this.palette=n.palette||[],this.blocks=[],n.blocks)for(let r of n.blocks)this.blocks.push(al.copyFrom(r));this.subChunkVersion=n.subChunkVersion||8,this.hash=n.hash||null,this.updated=n.updated||!0,this.blockLight=n.blockLight?al.copyFrom(n.blockLight):new al(4),this.skyLight=n.skyLight?al.copyFrom(n.skyLight):new al(4)}static create(e,t,n){let r=new this(e,t,{y:n});return r.blocks.push(new al(1)),r.palette.push([]),r.addToPalette(0,r.registry.blocksByName.air.defaultState,4096),r}decode(e,t){t instanceof Buffer&&(t=new W6e(t)),this.subChunkVersion=t.readByte();let n=1;switch(this.subChunkVersion){case 1:this.subChunkVersion=8;break;case 8:case 9:if(n=t.readByte(),this.subChunkVersion>=9&&(this.y=t.readByte()),n>2)throw new Error("Expected storage count to be 1 or 2, got "+n);break;default:throw new Error("Unsupported sub chunk version: "+this.subChunkVersion)}for(let r=0;r<n;r++){let s=t.readByte();if(!(s&1)&&e===z0.Runtime)throw new Error(`Expected network encoding while decoding SubChunk at y=${this.y}`);let a=s>>1;this.loadPalettedBlocks(r,t,a,e)}}loadPalettedBlocks(e,t,n,r){let s=new al(n);s.read(t),this.blocks[e]=s;let o=r===z0.LocalPersistence?t.readUInt32LE():t.readZigZagVarInt();if(o>t.buffer.length||o<1)throw new Error(`Invalid palette size: ${o}`);r===z0.Runtime?this.loadRuntimePalette(e,t,o):this.loadLocalPalette(e,t,o,r===z0.NetworkPersistence),this.blocks[e].incrementPalette(this.palette[e])}loadRuntimePalette(e,t,n){this.palette[e]=[];for(let r=0;r<n;r++){let s=t.readZigZagVarInt(),o=this.registry.blockStates[s];this.palette[e][r]={stateId:s,...o,count:0}}}loadLocalPalette(e,t,n,r){this.palette[e]=[];let s=t.buffer,o=t.readOffset,a;for(a=0;a<n;a++){let{metadata:l,data:c}=Nd.protos[r?"littleVarint":"little"].parsePacketBuffer("nbt",s,o);t.readOffset+=l.size,o+=l.size;let{name:d,states:u,version:p}=Nd.simplify(c),v=this.Block.fromProperties(d.replace("minecraft:",""),u??{},0);v||(v=this.Block.fromProperties("air",{},0)),this.palette[e][a]={stateId:v.stateId,name:d,states:c.value.states.value,version:p,count:0}}if(a!==n)throw new Error(`Expected ${n} blocks, got ${a}`)}async encode(e,t=!1,n=!0){let r=new W6e;if(this.subChunkVersion>=8)this.encodeV8(r,e,n);else throw new Error("Unsupported sub chunk version");let s=r.getBuffer();return t&&(this.hash=await GWe(s),this.updated=!1),s}encodeV8(e,t,n){e.writeUInt8(this.subChunkVersion),e.writeUInt8(this.blocks.length),this.subChunkVersion>=9&&e.writeUInt8(this.y);for(let r=0;r<this.blocks.length;r++)n&&this.compact(r),this.writeStorage(e,r,t)}writeStorage(e,t,n){let r=this.blocks[t],s=r.bitsPerBlock<<1;if(n===z0.Runtime&&(s|=1),e.writeUInt8(s),r.write(e),n===z0.LocalPersistence?e.writeUInt32LE(this.palette[t].length):e.writeZigZagVarInt(this.palette[t].length),n===z0.Runtime)for(let o of this.palette[t])e.writeZigZagVarInt(o.stateId);else for(let o of this.palette[t]){let{name:a,states:l,version:c}=o,d=Nd.comp({name:Nd.string(a),states:Nd.comp(l),version:Nd.int(c)}),u=Nd.writeUncompressed(d,n===z0.LocalPersistence?"little":"littleVarint");e.writeBuffer(u)}}getBlock(e,t,n,r,s){if(e!==void 0){let o=this.getBlockStateId(e,t,n,r);return this.Block.fromStateId(o,s)}else{let o=this.getBlockStateId(0,t,n,r),a=this.getBlockStateId(1,t,n,r),l=this.Block.fromStateId(o,s);return a&&(l.superimposed=this.Block.fromStateId(a,s),l.superimposed.name.includes("water")&&(l.computedStates.waterlogged=!0)),l}}setBlock(e,t,n,r,s){e!==void 0?this.setBlockStateId(e,t,n,r,s.stateId):(this.setBlockStateId(0,t,n,r,s.stateId),s.superimposed&&this.setBlockStateId(1,t,n,r,s.superimposed.stateId)),this.updated=!0}getBlockStateId(e=0,t,n,r){let s=this.blocks[e];return s?this.palette[e][s.get(t,n,r)].stateId:this.registry.blocksByName.air.defaultState}setBlockStateId(e=0,t,n,r,s){if(!this.palette[e])this.palette[e]=[],this.blocks[e]=new al(4),this.addToPalette(e,this.registry.blocksByName.air.defaultState,4095),this.addToPalette(e,s,1),this.blocks[e].set(t,n,r,this.palette[e].length-1);else{let o=this.blocks[e].get(t,n,r),a=this.palette[e][o];if(a.stateId===s)return;a.count--;for(let l=0;l<this.palette[e].length;l++){let c=this.palette[e][l];if(c.stateId===s){c.count=Math.max(c.count,0)+1,this.blocks[e].set(t,n,r,l);return}}this.addToPalette(e,s,1),this.blocks[e].set(t,n,r,this.palette[e].length-1)}this.updated=!0}addToPalette(e,t,n=0){let r=this.registry.blockStates[t];this.palette[e].push({stateId:t,name:r.name,states:r.states,count:n});let s=G6e(this.palette[e].length-1);s>this.blocks[e].bitsPerBlock&&(this.blocks[e]=this.blocks[e].resize(s))}isCompactable(e){let t=0;for(let n of this.palette[e])n.count>0&&t++;return t<this.palette[e].length}compact(e){let t=[],n=[];for(let s of this.palette[e])s.count>0&&t.push(s),n.push(t.length-1);if(t.length===this.palette[e].length)return;let r=new al(G6e(t.length-1));for(let s=0;s<16;s++)for(let o=0;o<16;o++)for(let a=0;a<16;a++){let l=this.blocks[e].get(s,o,a);r.set(s,o,a,n[l])}this.blocks[e]=r,this.palette[e]=t}getPaletteEntry(e,t,n,r){return this.palette[e][this.blocks[e].get(t,n,r)]}getPalette(e=0){return this.palette[e].filter(t=>t.count>0)}getBlockLight(e,t,n){return this.blockLight.get(e,t,n)}setBlockLight(e,t,n,r){this.blockLight.set(e,t,n,r)}getSkyLight(e,t,n){return this.skyLight.get(e,t,n)}setSkyLight(e,t,n,r){this.skyLight.set(e,t,n,r)}toObject(){return{y:this.y,palette:this.palette,blocks:this.blocks,subChunkVersion:this.subChunkVersion,hash:this.hash,updated:this.updated,blockLight:this.blockLight,skyLight:this.skyLight}}};j6e.exports=OI});var $4=S((Mgn,$6e)=>{f();m();h();var{StorageType:T2}=F0(),j4=W4(),WWe=$r(),DI=class{constructor(e,t,n={}){this.Biome=vp()(e),this.y=t,this.biomes=n.biomes?j4.copyFrom(n.biomes):new j4(1),this.palette=n.palette||[0]}readLegacy2D(e){for(let t=0;t<16;t++)for(let n=0;n<16;n++)this.setBiomeId(t,0,n,e.readByte())}copy(e){this.biomes=j4.copyFrom(e.biomes),this.palette=JSON.parse(JSON.stringify(e.palette)),this.y=e.y}read(e,t,n){this.palette=[];let r=t.readByte();if((r&1)!==1)throw new Error("Biome palette type must be set to use runtime IDs");let o=r>>1;if(o===0){this.palette.push(e===T2.LocalPersistence?t.readInt32LE():t.readVarInt()>>1);return}if(this.biomes=new j4(o),this.biomes.read(t),e===T2.Runtime){let a=t.readVarInt()>>1;for(let l=0;l<a;l++)this.palette.push(t.readVarInt()>>1)}else{let a=t.readInt32LE();for(let l=0;l<a;l++)this.palette.push(t.readInt32LE())}}setBiomeId(e,t,n,r){this.palette.includes(r)||this.palette.push(r);let s=WWe(this.palette.length-1);s>this.biomes.bitsPerBlock&&(this.biomes=this.biomes.resize(s)),this.biomes.set(e,t,n,this.palette.indexOf(r))}getBiomeId(e,t,n){return this.palette[this.biomes.get(e,t,n)]}getBiome(e){return new this.Biome(this.getBiomeId(e.x,e.y,e.z))}setBiome(e,t){this.setBiomeId(e.x,e.y,e.z,t.id)}export(e,t){let n=Math.ceil(Math.log2(this.palette.length)),r=n<<1|e===T2.Runtime;if(t.writeUInt8(r),n===0){e===T2.LocalPersistence?t.writeInt32LE(this.palette[0]):t.writeVarInt(this.palette[0]<<1);return}if(this.biomes.write(t),e===T2.Runtime){t.writeVarInt(this.palette.length<<1);for(let s of this.palette)t.writeVarInt(s<<1)}else{t.writeUInt32LE(this.palette.length);for(let s of this.palette)t.writeUInt32LE(s)}}exportLegacy2D(e){for(let t=0;t<16;t++)for(let n=0;n<16;n++){let s=this.getBiomeId(t,0,n);e.writeUInt8(s)}}toObject(){return{y:this.y,biomes:this.biomes,palette:this.palette}}};$6e.exports=DI});var X4=S((Rgn,X6e)=>{f();m();h();var jWe={ChunkSection:0,Biomes:1},UI=class{created=Date.now();type;constructor(e){Object.assign(this,e)}};X6e.exports={BlobType:jWe,BlobEntry:UI}});var zI=S((Bgn,J6e)=>{f();m();h();var $We=U6e(),VI=NI(),Y4=$4(),{StorageType:J4}=F0(),I2=M2(),{BlobType:K4,BlobEntry:Y6e}=X4(),Z4=_i(),{getChecksum:XWe}=BI(),FI=class extends $We{Section=VI;constructor(e={},t,n,r){if(super(e,t),this.Block=n,this.Biome=r,this.biomes=[],this.sections=[],this.biomesUpdated=!0,e.sections?.length)for(let s of e.sections)s?this.sections.push(new this.Section(t,n,s)):this.sections.push(null);if(e.biomes?.length)for(let s of e.biomes)this.biomes.push(s?new Y4(t,s.y,s):null);else this.biomes.push(new Y4(t,0))}getBiome(e){return new this.Biome(this.biomes[0].getBiomeId(e.x,0,e.z))}setBiome(e,t){this.biomes[0].setBiomeId(e.x,0,e.z,t.id),this.biomesUpdated=!0}getBiomeId(e){return this.biomes[0].getBiomeId(e.x,0,e.z)}setBiomeId(e,t){this.biomes[0].setBiomeId(e.x,0,e.z,t),this.biomesUpdated=!0}loadLegacyBiomes(e){e instanceof Buffer&&(e=new I2(e));let t=new Y4(this.registry,0);t.readLegacy2D(e),this.biomes=[t]}loadHeights(e){this.heights=e}getHeights(){return this.heights}writeLegacyBiomes(e){this.biomes[0].exportLegacy2D(e)}writeHeightMap(e){this.heights||(this.heights=new Uint16Array(256));for(let t=0;t<256;t++)e.writeUInt16LE(this.heights[t])}async updateBiomeHash(e){return this.biomesUpdated=!1,this.biomesHash=await XWe(e),this.biomesHash}async networkEncodeNoCache(){let e=[];for(let s in this.blockEntities){let o=this.blockEntities[s];e.push(Z4.writeUncompressed(o,"littleVarint"))}let t,n=new I2(Buffer.alloc(256));if(this.biomes[0])this.biomes[0].exportLegacy2D(n),t=n.buffer;else throw Error("No biome section");let r=[];for(let s of this.sections)r.push(await s.encode(J4.Runtime,!1,this.compactOnSave));return Buffer.concat([...r,t,Buffer.from([0]),...e])}async networkEncodeBlobs(e){let t=[];for(let n of this.sections){if(n.updated||!e.get(n.hash)){let r=await n.encode(J4.NetworkPersistence,!0,this.compactOnSave),s=new Y6e({x:this.x,y:n.y,z:this.z,type:K4.ChunkSection,buffer:r});e.set(n.hash,s)}t.push({hash:n.hash,type:K4.ChunkSection})}if(this.biomesUpdated||!this.biomesHash||!e.get(this.biomesHash)){if(this.biomes[0]){let n=new I2;this.biomes[0].exportLegacy2D(n),await this.updateBiomeHash(n.getBuffer())}else await this.updateBiomeHash(Buffer.alloc(256));this.biomesUpdated=!1,e.set(this.biomesHash,new Y6e({x:this.x,z:this.z,type:K4.Biomes,buffer:this.biomes}))}return t.push({hash:this.biomesHash,type:K4.Biomes}),t}async networkEncode(e){let t=await this.networkEncodeBlobs(e),n=[];for(let r in this.blockEntities){let s=this.blockEntities[r];n.push(Z4.writeUncompressed(s,"littleVarint"))}return{blobs:t,payload:Buffer.concat([Buffer.from([0]),...n])}}networkDecodeNoCache(e,t){let n=e instanceof Buffer?new I2(e):e;if(t===-1)throw new RangeError("-1 section count not supported below 1.18");this.sections=[];for(let l=0;l<t;l++){let c=new VI(this.registry,this.Block,{y:l,subChunkVersion:this.subChunkVersion});c.decode(J4.Runtime,n),this.setSection(l,c)}let r=new Y4(this.registry,0);r.readLegacy2D(n),this.biomes=[r];let s=n.readZigZagVarInt();if(n.readBuffer(s).length)throw Error(`Read ${s} border blocks, expected 0`);let a=n.readOffset;for(;n.peek()===10;){let{data:l,metadata:c}=Z4.protos.littleVarint.parsePacketBuffer("nbt",n.buffer,a);n.readOffset+=c.size,a+=c.size,this.addBlockEntity(l)}}async networkDecode(e,t,n){if(e=[...e],!e.length)throw new Error("No blobs to decode");if(n){let a=new I2(n),l=a.readBuffer(a.readByte());if(l.length)throw new Error("cannot handle border blocks (read length: "+l.length+")");let c=a.readOffset;for(;a.peek()===10;){let{metadata:d,data:u}=Z4.protos.littleVarint.parsePacketBuffer("nbt",n,c);a.readOffset+=d.size,c+=d.size,this.addBlockEntity(u)}}let r=[];for(let a of e)t.has(a)||r.push(a);if(r.length>0)return r;this.sections=[],this.sectionsLen=0;let s=e.pop();for(let a=0;a<e.length;a++){let l=t.get(e[a]),c=new VI(this.registry,this.Block,{y:a,subChunkVersion:this.subChunkVersion});c.decode(J4.NetworkPersistence,l.buffer),this.setSection(a,c)}let o=t.get(s);return this.loadLegacyBiomes(o.buffer),r}toObject(){let e=this.biomes.map(t=>t?.toObject());return{...super.toObject(),biomes:e,biomesUpdated:this.biomesUpdated,version:this.registry.version.minecraftVersion}}toJson(){return JSON.stringify(this.toObject())}};J6e.exports=FI});var Q4=S((Vgn,K6e)=>{f();m();h();var{ChunkVersion:YWe}=F0(),JWe=zI();K6e.exports=i=>{let e=i.blockRegistry||i,t=si()(e),n=vp()(e);return class extends JWe{constructor(s){super(s,e,t,n),this.chunkVersion=this.chunkVersion||YWe.v1_16_0,this.subChunkVersion=8}static fromJson(s){return new this(JSON.parse(s))}}}});var ege=S((qgn,Q6e)=>{f();m();h();var KWe=NI(),{StorageType:Z6e}=F0(),ZWe=W4(),HI=class extends KWe{loadRuntimePalette(e,t,n){this.palette[e]=[];for(let r=0;r<n;r++){let s=t.readZigZagVarInt(),o=this.registry.blocksByRuntimeId[s];this.palette[e][r]={stateId:o.stateId,...o,count:0}}}loadPalettedBlocks(e,t,n,r){if(r===Z6e.Runtime&&n===0){this.palette[e]=[],this.blocks[e]=new ZWe(1);let s=t.readVarInt()>>1;this.addToPalette(e,s);return}return super.loadPalettedBlocks(...arguments)}writeStorage(e,t,n){if(n===Z6e.Runtime&&this.palette[t].length===1){e.writeUInt8(1),e.writeZigZagVarInt(this.palette[t][0].stateId);return}return super.writeStorage(...arguments)}};Q6e.exports=HI});var nge=S(($gn,tge)=>{f();m();h();var QWe=$4(),qI=class{constructor(e,t){this.registry=e,this.target=t}getBiome(e){return this.target.getBiome(e)}getBiomeId(e){return this.target.getBiomeId(e)}copy(e){return this.target.copy(e)}promote(e){let t=new QWe(this.registry,e);return t.copy(this.target),t}export(e,t){t.writeUInt8(255)}};tge.exports=qI});var oge=S((Kgn,sge)=>{f();m();h();var eje=zI(),e8=ege(),GI=$4(),rge=nge(),{BlobType:R2,BlobEntry:ige}=X4(),{StorageType:Fo}=F0(),ll=M2(),C2=_i(),WI=class extends eje{Section=e8;bounds=this.setBounds(-4,20);getBiome(e){return new this.Biome(this.getBiomeId(e))}setBiome(e,t){this.setBiomeId(e,t.id)}getBiomeId(e){let t=e.y>>4;return this.biomes[this.co+t]?.getBiomeId(e.x,e.y&15,e.z)??0}setBiomeId(e,t){let n=e.y>>4,r=this.biomes[this.co+n];r?r.setBiomeId||(this.biomes[this.co+n]=r=r.promote(n)):this.biomes[this.co+n]=r=new GI(this.registry,n),r.setBiomeId(e.x,e.y&15,e.z,t),this.biomesUpdated=!0}loadBiomes(e,t){e instanceof Buffer&&(e=new ll(e)),this.biomes=[];let n;for(let r=this.minCY;e.peek();r++)if(e.peek()===255){if(!n)throw new Error("No last biome");let s=new rge(this.registry,n);this.biomes.push(s),e.readByte()}else{let s=new GI(this.registry,r);s.read(t,e),n=s,this.biomes.push(s)}}writeBiomes(e){for(let t=0;t<this.worldHeight>>4;t++){let n=this.biomes[t];n||(this.biomes[t-1]?this.biomes[t]=n=new rge(this.registry,this.biomes[t-1]):this.biomes[t]=n=new GI(this.registry,t)),n.export(Fo.Runtime,e)}}async networkEncodeNoCache(){let e=new ll;for(let n of this.biomes)n.export(Fo.Runtime,e);let t=e.getBuffer();return Buffer.concat([t,Buffer.from([0])])}async networkEncodeBlobs(e,t){let n=[];if(t){if(this.biomesUpdated||!this.biomesHash||!e.get(this.biomesHash.toString())){let r=new ll;for(let o of this.biomes)o.export(Fo.Runtime,r);let s=r.getBuffer();await this.updateBiomeHash(s),this.biomesUpdated=!1,e.set(this.biomesHash.toString(),new ige({x:this.x,z:this.z,type:R2.Biomes,buffer:this.biomes}))}n.push({hash:this.biomesHash,type:R2.Biomes})}return n}async networkEncode(e){return{blobs:await this.networkEncodeBlobs(e,!0,!1),payload:Buffer.concat([Buffer.from([0])])}}networkDecodeNoCache(e,t){let n=e instanceof Buffer?new ll(e):e;if(t!==-1&&t!==-2){this.sections=[];for(let o=0;o<t;o++){let a=new e8(this.registry,this.Block,{y:o,subChunkVersion:this.subChunkVersion});a.decode(Fo.Runtime,n),this.setSection(o,a)}}this.loadBiomes(n,Fo.Runtime);let r=n.readBuffer(n.readZigZagVarInt());if(r.length)throw new Error(`Can't handle border blocks (length: ${r.length})`);let s=n.readOffset;for(;n.peek()===10;){let{data:o,metadata:a}=C2.protos.littleVarint.parsePacketBuffer("nbt",n.buffer,s);n.readOffset+=a.size,s+=a.size,this.addBlockEntity(o)}}async networkDecode(e,t,n){if(n){let s=new ll(n),o=s.readBuffer(s.readZigZagVarInt());if(o.length)throw new Error(`Can't handle border blocks (length: ${o.length})`)}let r=[];for(let s of e)t.has(s.toString())||r.push(s);if(r.length>0)return r;this.sections=[];for(let s of e){let o=t.get(s.toString());if(o.type===R2.Biomes){let a=new ll(o.buffer);this.loadBiomes(a,Fo.NetworkPersistence,s)}else throw o.type===R2.ChunkSection?new Error("Can't accept chunk sections in networkDecode, these Blobs should be sent as individual sections"):Error("Unknown blob type: "+o.type)}return r}async networkDecodeSubChunkNoCache(e,t){let n=new ll(t),r=new e8(this.registry,this.Block,{y:e,subChunkVersion:this.subChunkVersion});r.decode(Fo.Runtime,n),this.setSection(e,r);let s=n.readOffset;for(;n.peek()===10;){let{data:o,metadata:a}=C2.protos.littleVarint.parsePacketBuffer("nbt",t,s);n.readOffset+=a.size,s+=a.size,this.addBlockEntity(o)}}async networkEncodeSubChunkNoCache(e){let t=this.getSectionBlockEntities(e),r=await this.getSectionAtIndex(e).encode(Fo.Runtime,!1,this.compactOnSave),s=[];for(let o of t)s.push(C2.writeUncompressed(o,"littleVarint"));return Buffer.concat([r,...s])}async networkDecodeSubChunk(e,t,n){if(n){let s=new ll(n),o=0;for(;s.peekUInt8()===10;){let{data:a,metadata:l}=C2.protos.littleVarint.parsePacketBuffer("nbt",n,o);s.readOffset+=l.size,o+=l.size,this.addBlockEntity(a)}}let r=[];for(let s of e)t.has(s.toString())||r.push(s);if(r.length>0)return r;this.sections=[],this.sectionsLen=0;for(let s of e){let o=t.get(s.toString()),a=new ll(o.buffer),l=new e8(this.registry,this.Block,{y:s.y,subChunkVersion:this.subChunkVersion});await l.decode(Fo.Runtime,a),this.setSection(l.y,l)}return r}async networkEncodeSubChunk(e,t){let n=this.getSectionBlockEntities(e),r=this.getSectionAtIndex(e);if(r.updated){let o=await r.encode(Fo.Runtime,!0,this.compactOnSave),a=new ige({x:this.x,y:r.y,z:this.z,type:R2.ChunkSection,buffer:o});t.set(r.hash.toString(),a)}let s=[];for(let o of n)s.push(C2.writeUncompressed(o,"littleVarint"));return[r.hash,Buffer.concat(s)]}toObject(){return{...super.toObject(),version:this.registry.version.minecraftVersion}}};sge.exports=WI});var P2=S((n7n,age)=>{f();m();h();var{ChunkVersion:tje}=F0(),nje=oge();age.exports=i=>{let e=i.blockRegistry||i,t=si()(e),n=vp()(e);return class extends nje{constructor(s){super(s,e,t,n),this.chunkVersion=this.chunkVersion||tje.v1_18_0,this.subChunkVersion=9}static fromJson(s){return new this(JSON.parse(s))}}}});var cge=S((o7n,t8)=>{f();m();h();var rje={pc:{1.8:K3e(),1.9:h2(),"1.10":h2(),1.11:h2(),1.12:h2(),1.13:wve(),1.14:Rve(),1.15:Nve(),1.16:qve(),1.17:Jve(),1.18:x2(),1.19:x2(),"1.20":x2(),1.21:x2()},bedrock:{.14:A6e(),"1.0":L6e(),1.3:Q4(),1.16:Q4(),1.17:Q4(),1.18:P2(),1.19:P2(),"1.20":P2(),1.21:P2()}};t8.exports=ije;var lge=X4();t8.exports.BlobEntry=lge.BlobEntry;t8.exports.BlobType=lge.BlobType;function ije(i){let e=typeof i=="string"?gp()(i):i,t=e.version;if(!t)throw new Error("Specified version does not exist");try{return rje[t.type][t.majorVersion](e)}catch(n){throw n instanceof TypeError?(console.error(n),new Error(`[Prismarine-chunk] No chunk implementation for ${t?.type} ${t?.majorVersion} found`)):(console.log(`Error while loading ${t.type} - ${t.majorVersion}`),n)}}});var uge=S((d7n,dge)=>{f();m();h();dge.exports=cge()});f();m();h();f();m();h();function yC(i){if(Array.isArray(i))return i;if(!i||typeof i!="object")return;let e=i,t=Object.keys(e).filter(n=>/^\d+$/.test(n)).map(Number).sort((n,r)=>n-r);if(!(!t.length||t[0]!==0)){for(let n=0;n<t.length;n++)if(t[n]!==n)return;return t.map(n=>e[String(n)])}}function fl(i,e){return Array.isArray(i)?i.reduce((t,n)=>(t[n[e]]=n,t),{}):(console.warn("[augmentWorkerMcData] buildIndexFromArray expected array, got",typeof i),{})}function Oge(i,e,t){return Array.isArray(i)?i.reduce((n,r)=>{let s=r[e],o=r[t];for(let a=s;a<=o;a++)n[a]=r;return n},{}):(console.warn("[augmentWorkerMcData] buildIndexFromArrayWithRanges expected array, got",typeof i),{})}function Nge(i){if(i.length&&!("minStateId"in i[0]&&"defaultState"in i[0]))for(let e of i){let t=e.id;e.minStateId=t<<4,e.maxStateId=e.minStateId+15,e.defaultState=e.minStateId}}function H2(i,e,t){let n=yC(i[e]);if(n?.length)return n;let r=yC(i[t]);if(r?.length)return r}function bC(i){if(i.__workerIndexesBuilt)return i;let e=H2(i,"blocksArray","blocks");e?.length&&(Nge(e),i.blocksArray=e,i.blocks=fl(e,"id"),i.blocksByName=fl(e,"name"),i.blocksByStateId=Oge(e,"minStateId","maxStateId"));let t=H2(i,"itemsArray","items");t?.length&&(i.itemsArray=t,i.itemsByName=fl(t,"name"),i.items=fl(t,"id"));let n=H2(i,"entitiesArray","entities");n?.length&&(i.entitiesArray=n,i.entitiesByName=fl(n,"name"),i.entities=fl(n,"id"));let r=H2(i,"biomesArray","biomes");return r?.length&&(i.biomesArray=r,i.biomes=fl(r,"id"),i.biomesByName=fl(r,"name")),i.__workerIndexesBuilt=!0,i}f();m();h();yt();f();m();h();var cB=Yr(ga(),1);var ut=cB.default.Vec3;f();m();h();f();m();h();f();m();h();var Kje=Symbol(),vbe=Symbol();var dB=Object.getPrototypeOf,V9=new WeakMap,gbe=i=>i&&(V9.has(i)?V9.get(i):dB(i)===Object.prototype||dB(i)===Array.prototype);var uB=i=>gbe(i)&&i[vbe]||null,F9=(i,e=!0)=>{V9.set(i,e)};var Du={},z9=i=>typeof i=="object"&&i!==null,Bl=new WeakMap,Cv=new WeakSet,_be=(i=Object.is,e=(c,d)=>new Proxy(c,d),t=c=>z9(c)&&!Cv.has(c)&&(Array.isArray(c)||!(Symbol.iterator in c))&&!(c instanceof WeakMap)&&!(c instanceof WeakSet)&&!(c instanceof Error)&&!(c instanceof Number)&&!(c instanceof Date)&&!(c instanceof String)&&!(c instanceof RegExp)&&!(c instanceof ArrayBuffer),n=c=>{switch(c.status){case"fulfilled":return c.value;case"rejected":throw c.reason;default:throw c}},r=new WeakMap,s=(c,d,u=n)=>{let p=r.get(c);if(p?.[0]===d)return p[1];let v=Array.isArray(c)?[]:Object.create(Object.getPrototypeOf(c));return F9(v,!0),r.set(c,[d,v]),Reflect.ownKeys(c).forEach(_=>{if(Object.getOwnPropertyDescriptor(v,_))return;let b=Reflect.get(c,_),{enumerable:y}=Reflect.getOwnPropertyDescriptor(c,_),g={value:b,enumerable:y,configurable:!0};if(Cv.has(b))F9(b,!1);else if(b instanceof Promise)delete g.value,g.get=()=>u(b);else if(Bl.has(b)){let[w,x]=Bl.get(b);g.value=s(w,x(),u)}Object.defineProperty(v,_,g)}),Object.preventExtensions(v)},o=new WeakMap,a=[1,1],l=c=>{if(!z9(c))throw new Error("object required");let d=o.get(c);if(d)return d;let u=a[0],p=new Set,v=(M,k=++a[0])=>{u!==k&&(u=k,p.forEach(F=>F(M,k)))},_=a[1],b=(M=++a[1])=>(_!==M&&!p.size&&(_=M,g.forEach(([k])=>{let F=k[1](M);F>u&&(u=F)})),u),y=M=>(k,F)=>{let Z=[...k];Z[1]=[M,...Z[1]],v(Z,F)},g=new Map,w=(M,k)=>{if((Du.env?Du.env.MODE:void 0)!=="production"&&g.has(M))throw new Error("prop listener already exists");if(p.size){let F=k[3](y(M));g.set(M,[k,F])}else g.set(M,[k])},x=M=>{var k;let F=g.get(M);F&&(g.delete(M),(k=F[1])==null||k.call(F))},E=M=>(p.add(M),p.size===1&&g.forEach(([F,Z],U)=>{if((Du.env?Du.env.MODE:void 0)!=="production"&&Z)throw new Error("remove already exists");let H=F[3](y(U));g.set(U,[F,H])}),()=>{p.delete(M),p.size===0&&g.forEach(([F,Z],U)=>{Z&&(Z(),g.set(U,[F]))})}),A=Array.isArray(c)?[]:Object.create(Object.getPrototypeOf(c)),R=e(A,{deleteProperty(M,k){let F=Reflect.get(M,k);x(k);let Z=Reflect.deleteProperty(M,k);return Z&&v(["delete",[k],F]),Z},set(M,k,F,Z){let U=Reflect.has(M,k),H=Reflect.get(M,k,Z);if(U&&(i(H,F)||o.has(F)&&i(H,o.get(F))))return!0;x(k),z9(F)&&(F=uB(F)||F);let Y=F;if(F instanceof Promise)F.then(ce=>{F.status="fulfilled",F.value=ce,v(["resolve",[k],ce])}).catch(ce=>{F.status="rejected",F.reason=ce,v(["reject",[k],ce])});else{!Bl.has(F)&&t(F)&&(Y=l(F));let ce=!Cv.has(Y)&&Bl.get(Y);ce&&w(k,ce)}return Reflect.set(M,k,Y,Z),v(["set",[k],F,H]),!0}});o.set(c,R);let L=[A,b,s,E];return Bl.set(R,L),Reflect.ownKeys(c).forEach(M=>{let k=Object.getOwnPropertyDescriptor(c,M);"value"in k&&(R[M]=c[M],delete k.value,delete k.writable),Object.defineProperty(A,M,k)}),R})=>[l,Bl,Cv,i,e,t,n,r,s,o,a],[ybe]=_be();function _a(i={}){return ybe(i)}function fB(i){let e=Bl.get(i);return e?.[1]()}function Uu(i,e,t){let n=Bl.get(i);(Du.env?Du.env.MODE:void 0)!=="production"&&!n&&console.warn("Please use proxy object");let r,s=[],o=n[3],a=!1,c=o(d=>{if(s.push(d),t){e(s.splice(0));return}r||(r=Promise.resolve().then(()=>{r=void 0,a&&e(s.splice(0))}))});return a=!0,()=>{a=!1,c()}}function hB(i,e){let t=e??globalThis;return t.addEventListener("message",n=>{let{type:r,args:s,msgId:o}=n.data;if(i[r]){let a=i[r](...s);a instanceof Promise&&a.then(l=>{t.postMessage({type:"result",msgId:o,args:[l]})})}}),null}var bbe=(i,e,t,n)=>{try{t.postMessage({type:"sync",syncId:i,value:H9(e)}),Pv.toWorker++,globalThis.debugSyncMessagesOutgoing??=0,globalThis.debugSyncMessagesOutgoing++}catch(r){console.error("Failed to send worker sync",r),mB(e)}},Pv={toWorker:0,fromWorker:0};typeof window<"u"&&setInterval(()=>{globalThis.debugWorkerSyncStats={...Pv},Pv.toWorker=0,Pv.fromWorker=0},1e3);var xbe=(i,e,t)=>{Object.assign(i,Lv(e,[],t,!1))};var wbe=i=>({__restorer:"Map",__mapEntries:Array.from(i.entries())}),Ebe=i=>({__restorer:"Set",__setValues:[...i]}),Sbe=i=>i instanceof Set||Object.prototype.toString.call(i)==="[object Set]",Abe=i=>i instanceof Map||Object.prototype.toString.call(i)==="[object Map]",Mbe=i=>Object.keys(i).filter(e=>!e.startsWith("__")).sort((e,t)=>Number(e)-Number(t)).map(e=>i[e]),H9=i=>{if(Abe(i))return wbe(i);if(Sbe(i))return Ebe(i);if(fB(i)===void 0)return i;if(Array.isArray(i))return i.map(H9);if(typeof i=="object"&&i!==null){let e={};for(let t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=H9(i[t]));return e}return i};var mB=(i,e=[])=>{for(let t in i)if(Object.prototype.hasOwnProperty.call(i,t)){if(!i[t])continue;typeof i[t]=="object"&&i[t]!==null&&mB(i[t],[...e,t]);try{structuredClone(i[t])}catch(n){console.error(n),console.log("Failed to clone for transfer",e.join("."))}}},kbe=(i,e,t)=>{if(!i.__syncId)return;let n=i.__syncId;if(i.__syncToWorker&&e.addEventListener("message",r=>{r.data.type==="sync"&&r.data.syncId===n&&xbe(i,r.data.value,e)}),i.__syncFromWorker){let r=()=>{bbe(n,i,e,`fromWorker:${t}`)};i.__valtio&&Uu(i,r);let s=i.__syncFromWorkerInterval??0;s>0&&setInterval(r,s)}},Tbe=[{restorerName:"Map",restoreTransferred(i,e){if(Array.isArray(i))return new Map(i);let t=i.__mapEntries??i.entries;return Array.isArray(t)?new Map(t):t!=null&&typeof t=="object"&&typeof t!="function"?new Map(Object.entries(t)):new Map}},{restorerName:"Set",restoreTransferred(i,e){if(Array.isArray(i))return new Set(i);let t=i.__setValues??i.values;return Array.isArray(t)?new Set(t):t!=null&&typeof t=="object"&&typeof t!="function"?new Set(Mbe(t)):new Set}},{restorerName:"Vec3",restoreTransferred(i,e){return new ut(i.x,i.y,i.z)}}];var Lv=(i,e,t,n=!0)=>{let r=[...Tbe,...e],s=(o,a)=>{if(o==null||typeof o!="object")return o;if(o.__restorer){let l=r.find(d=>d.restorerName?d.restorerName===o.__restorer:d.name===o.__restorer);if(l)return l.restoreTransferred(o,t);let c=new Error(`Restorer ${o.__restorer} not found`);if(typeof n=="function")n(c);else{if(n)throw c;console.error(c)}return o}if(Array.isArray(o))return o.map((l,c)=>s(l,`${a}[${c}]`));for(let l in o){if(!Object.prototype.hasOwnProperty.call(o,l))continue;let c=o[l];c!=null&&typeof c=="object"&&(o[l]=s(c,`${a}.${l}`))}return o.__valtio&&(o=_a(o)),kbe(o,t,a),o};return s(i,"root")};f();m();h();f();m();h();Rs();var Ux=Yr(O6(),1);Ix();var coe={latest:{suSv:.015625,tileSize:16,width:1024,height:1024,textures:{missing_texture:{u:0,v:0,tileIndex:0},air:{u:.015625,v:0,tileIndex:1},invsprite_acacia_leaves:{u:0,v:.015625,tileIndex:64},invsprite_banner:{u:.015625,v:.015625,tileIndex:65},invsprite_bed:{u:.03125,v:0,tileIndex:2},invsprite_birch_leaves:{u:.046875,v:0,tileIndex:3},invsprite_dark_oak_leaves:{u:.03125,v:.015625,tileIndex:66},invsprite_experience_bottle:{u:.046875,v:.015625,tileIndex:67},invsprite_grass:{u:0,v:.03125,tileIndex:128},invsprite_jungle_leaves:{u:0,v:.046875,tileIndex:192},invsprite_oak_leaves:{u:.015625,v:.03125,tileIndex:129},invsprite_spruce_leaves:{u:.015625,v:.046875,tileIndex:193},invsprite_tall_grass:{u:.03125,v:.03125,tileIndex:130},invsprite_shield:{u:.03125,v:.046875,tileIndex:194},invsprite_black_shulker_box:{u:.046875,v:.03125,tileIndex:131},invsprite_blue_shulker_box:{u:.046875,v:.046875,tileIndex:195},invsprite_brown_shulker_box:{u:.0625,v:0,tileIndex:4},invsprite_cyan_shulker_box:{u:.078125,v:0,tileIndex:5},invsprite_gray_shulker_box:{u:.09375,v:0,tileIndex:6},invsprite_green_shulker_box:{u:.109375,v:0,tileIndex:7},invsprite_light_blue_shulker_box:{u:.0625,v:.015625,tileIndex:68},invsprite_lime_shulker_box:{u:.078125,v:.015625,tileIndex:69},invsprite_magenta_shulker_box:{u:.09375,v:.015625,tileIndex:70},invsprite_orange_shulker_box:{u:.109375,v:.015625,tileIndex:71},invsprite_pink_shulker_box:{u:.0625,v:.03125,tileIndex:132},invsprite_purple_shulker_box:{u:.078125,v:.03125,tileIndex:133},invsprite_red_shulker_box:{u:.09375,v:.03125,tileIndex:134},invsprite_white_shulker_box:{u:.109375,v:.03125,tileIndex:135},invsprite_yellow_shulker_box:{u:.0625,v:.046875,tileIndex:196},invsprite_bat_spawn_egg:{u:.078125,v:.046875,tileIndex:197},invsprite_black_banner:{u:.09375,v:.046875,tileIndex:198},invsprite_black_bed:{u:.109375,v:.046875,tileIndex:199},invsprite_blaze_spawn_egg:{u:0,v:.0625,tileIndex:256},invsprite_blue_banner:{u:0,v:.078125,tileIndex:320},invsprite_blue_bed:{u:0,v:.09375,tileIndex:384},invsprite_brown_banner:{u:0,v:.109375,tileIndex:448},invsprite_brown_bed:{u:.015625,v:.0625,tileIndex:257},invsprite_cave_spider_spawn_egg:{u:.015625,v:.078125,tileIndex:321},invsprite_chicken_spawn_egg:{u:.015625,v:.09375,tileIndex:385},invsprite_cod_spawn_egg:{u:.015625,v:.109375,tileIndex:449},invsprite_conduit:{u:.03125,v:.0625,tileIndex:258},invsprite_cow_spawn_egg:{u:.03125,v:.078125,tileIndex:322},invsprite_creeper_head:{u:.03125,v:.09375,tileIndex:386},invsprite_creeper_spawn_egg:{u:.03125,v:.109375,tileIndex:450},invsprite_cyan_banner:{u:.046875,v:.0625,tileIndex:259},invsprite_cyan_bed:{u:.046875,v:.078125,tileIndex:323},invsprite_dolphin_spawn_egg:{u:.046875,v:.09375,tileIndex:387},invsprite_donkey_spawn_egg:{u:.046875,v:.109375,tileIndex:451},invsprite_dragon_head:{u:.0625,v:.0625,tileIndex:260},invsprite_drowned_spawn_egg:{u:.0625,v:.078125,tileIndex:324},invsprite_elder_guardian_spawn_egg:{u:.0625,v:.09375,tileIndex:388},invsprite_enderman_spawn_egg:{u:.0625,v:.109375,tileIndex:452},invsprite_endermite_spawn_egg:{u:.078125,v:.0625,tileIndex:261},invsprite_evoker_spawn_egg:{u:.09375,v:.0625,tileIndex:262},invsprite_firework_star:{u:.109375,v:.0625,tileIndex:263},invsprite_ghast_spawn_egg:{u:.078125,v:.078125,tileIndex:325},invsprite_gray_banner:{u:.078125,v:.09375,tileIndex:389},invsprite_gray_bed:{u:.078125,v:.109375,tileIndex:453},invsprite_green_banner:{u:.09375,v:.078125,tileIndex:326},invsprite_green_bed:{u:.109375,v:.078125,tileIndex:327},invsprite_guardian_spawn_egg:{u:.09375,v:.09375,tileIndex:390},invsprite_horse_spawn_egg:{u:.09375,v:.109375,tileIndex:454},invsprite_husk_spawn_egg:{u:.109375,v:.09375,tileIndex:391},invsprite_light_blue_banner:{u:.109375,v:.109375,tileIndex:455},invsprite_light_blue_bed:{u:.125,v:0,tileIndex:8},invsprite_light_gray_banner:{u:.140625,v:0,tileIndex:9},invsprite_light_gray_bed:{u:.15625,v:0,tileIndex:10},invsprite_light_gray_shulker_box:{u:.171875,v:0,tileIndex:11},invsprite_lime_banner:{u:.1875,v:0,tileIndex:12},invsprite_lime_bed:{u:.203125,v:0,tileIndex:13},invsprite_lingering_potion:{u:.21875,v:0,tileIndex:14},invsprite_llama_spawn_egg:{u:.234375,v:0,tileIndex:15},invsprite_magenta_banner:{u:.125,v:.015625,tileIndex:72},invsprite_magenta_bed:{u:.140625,v:.015625,tileIndex:73},invsprite_magma_cube_spawn_egg:{u:.15625,v:.015625,tileIndex:74},invsprite_mooshroom_spawn_egg:{u:.171875,v:.015625,tileIndex:75},invsprite_mule_spawn_egg:{u:.1875,v:.015625,tileIndex:76},invsprite_ocelot_spawn_egg:{u:.203125,v:.015625,tileIndex:77},invsprite_orange_banner:{u:.21875,v:.015625,tileIndex:78},invsprite_orange_bed:{u:.234375,v:.015625,tileIndex:79},invsprite_parrot_spawn_egg:{u:.125,v:.03125,tileIndex:136},invsprite_phantom_spawn_egg:{u:.140625,v:.03125,tileIndex:137},invsprite_pig_spawn_egg:{u:.15625,v:.03125,tileIndex:138},invsprite_pink_banner:{u:.171875,v:.03125,tileIndex:139},invsprite_pink_bed:{u:.1875,v:.03125,tileIndex:140},invsprite_player_head:{u:.203125,v:.03125,tileIndex:141},invsprite_polar_bear_spawn_egg:{u:.21875,v:.03125,tileIndex:142},invsprite_pufferfish_spawn_egg:{u:.234375,v:.03125,tileIndex:143},invsprite_purple_banner:{u:.125,v:.046875,tileIndex:200},invsprite_purple_bed:{u:.140625,v:.046875,tileIndex:201},invsprite_rabbit_spawn_egg:{u:.15625,v:.046875,tileIndex:202},invsprite_red_banner:{u:.171875,v:.046875,tileIndex:203},invsprite_red_bed:{u:.1875,v:.046875,tileIndex:204},invsprite_salmon_spawn_egg:{u:.203125,v:.046875,tileIndex:205},invsprite_sheep_spawn_egg:{u:.21875,v:.046875,tileIndex:206},invsprite_shulker_spawn_egg:{u:.234375,v:.046875,tileIndex:207},invsprite_silverfish_spawn_egg:{u:.125,v:.0625,tileIndex:264},invsprite_skeleton_horse_spawn_egg:{u:.140625,v:.0625,tileIndex:265},invsprite_skeleton_skull:{u:.15625,v:.0625,tileIndex:266},invsprite_skeleton_spawn_egg:{u:.171875,v:.0625,tileIndex:267},invsprite_slime_spawn_egg:{u:.1875,v:.0625,tileIndex:268},invsprite_spider_spawn_egg:{u:.203125,v:.0625,tileIndex:269},invsprite_splash_potion:{u:.21875,v:.0625,tileIndex:270},invsprite_squid_spawn_egg:{u:.234375,v:.0625,tileIndex:271},invsprite_stray_spawn_egg:{u:.125,v:.078125,tileIndex:328},invsprite_tropical_fish_spawn_egg:{u:.140625,v:.078125,tileIndex:329},invsprite_turtle_egg:{u:.15625,v:.078125,tileIndex:330},invsprite_turtle_spawn_egg:{u:.171875,v:.078125,tileIndex:331},invsprite_vex_spawn_egg:{u:.1875,v:.078125,tileIndex:332},invsprite_villager_spawn_egg:{u:.203125,v:.078125,tileIndex:333},invsprite_vindicator_spawn_egg:{u:.21875,v:.078125,tileIndex:334},invsprite_white_banner:{u:.234375,v:.078125,tileIndex:335},invsprite_white_bed:{u:.125,v:.09375,tileIndex:392},invsprite_witch_spawn_egg:{u:.140625,v:.09375,tileIndex:393},invsprite_wither_skeleton_skull:{u:.15625,v:.09375,tileIndex:394},invsprite_wither_skeleton_spawn_egg:{u:.171875,v:.09375,tileIndex:395},invsprite_wolf_spawn_egg:{u:.1875,v:.09375,tileIndex:396},invsprite_yellow_banner:{u:.203125,v:.09375,tileIndex:397},invsprite_yellow_bed:{u:.21875,v:.09375,tileIndex:398},invsprite_zombie_head:{u:.234375,v:.09375,tileIndex:399},invsprite_zombie_horse_spawn_egg:{u:.125,v:.109375,tileIndex:456},invsprite_zombie_spawn_egg:{u:.140625,v:.109375,tileIndex:457},invsprite_zombie_villager_spawn_egg:{u:.15625,v:.109375,tileIndex:458},invsprite_cat_spawn_egg:{u:.171875,v:.109375,tileIndex:459},invsprite_creeper_banner_pattern:{u:.1875,v:.109375,tileIndex:460},invsprite_flower_banner_pattern:{u:.203125,v:.109375,tileIndex:461},invsprite_fox_spawn_egg:{u:.21875,v:.109375,tileIndex:462},invsprite_globe_banner_pattern:{u:.234375,v:.109375,tileIndex:463},invsprite_mojang_banner_pattern:{u:0,v:.125,tileIndex:512},invsprite_panda_spawn_egg:{u:0,v:.140625,tileIndex:576},invsprite_pillager_spawn_egg:{u:0,v:.15625,tileIndex:640},invsprite_ravager_spawn_egg:{u:0,v:.171875,tileIndex:704},invsprite_scaffolding:{u:0,v:.1875,tileIndex:768},invsprite_skull_banner_pattern:{u:0,v:.203125,tileIndex:832},invsprite_trader_llama_spawn_egg:{u:0,v:.21875,tileIndex:896},invsprite_wandering_trader_spawn_egg:{u:0,v:.234375,tileIndex:960},invsprite_bee_spawn_egg:{u:.015625,v:.125,tileIndex:513},invsprite_hoglin_spawn_egg:{u:.015625,v:.140625,tileIndex:577},invsprite_piglin_banner_pattern:{u:.015625,v:.15625,tileIndex:641},invsprite_piglin_spawn_egg:{u:.015625,v:.171875,tileIndex:705},invsprite_strider_spawn_egg:{u:.015625,v:.1875,tileIndex:769},invsprite_twisting_vines:{u:.015625,v:.203125,tileIndex:833},invsprite_weeping_vines:{u:.015625,v:.21875,tileIndex:897},invsprite_zoglin_spawn_egg:{u:.015625,v:.234375,tileIndex:961},invsprite_zombified_piglin_spawn_egg:{u:.03125,v:.125,tileIndex:514},invsprite_piglin_brute_spawn_egg:{u:.03125,v:.140625,tileIndex:578},apple:{u:.03125,v:.15625,tileIndex:642},apple_golden:{u:.03125,v:.171875,tileIndex:706},arrow:{u:.03125,v:.1875,tileIndex:770},bed:{u:.03125,v:.203125,tileIndex:834},beef_cooked:{u:.03125,v:.21875,tileIndex:898},beef_raw:{u:.03125,v:.234375,tileIndex:962},blaze_powder:{u:.046875,v:.125,tileIndex:515},blaze_rod:{u:.046875,v:.140625,tileIndex:579},boat:{u:.046875,v:.15625,tileIndex:643},bone:{u:.046875,v:.171875,tileIndex:707},book_enchanted:{u:.046875,v:.1875,tileIndex:771},book_normal:{u:.046875,v:.203125,tileIndex:835},book_writable:{u:.046875,v:.21875,tileIndex:899},book_written:{u:.046875,v:.234375,tileIndex:963},bow_pulling_0:{u:.0625,v:.125,tileIndex:516},bow_pulling_1:{u:.0625,v:.140625,tileIndex:580},bow_pulling_2:{u:.0625,v:.15625,tileIndex:644},bow_standby:{u:.0625,v:.171875,tileIndex:708},bowl:{u:.0625,v:.1875,tileIndex:772},bread:{u:.0625,v:.203125,tileIndex:836},brewing_stand:{u:.0625,v:.21875,tileIndex:900},brick:{u:.0625,v:.234375,tileIndex:964},bucket_empty:{u:.078125,v:.125,tileIndex:517},bucket_lava:{u:.078125,v:.140625,tileIndex:581},bucket_milk:{u:.078125,v:.15625,tileIndex:645},bucket_water:{u:.078125,v:.171875,tileIndex:709},cake:{u:.078125,v:.1875,tileIndex:773},carrot:{u:.078125,v:.203125,tileIndex:837},carrot_golden:{u:.078125,v:.21875,tileIndex:901},carrot_on_a_stick:{u:.078125,v:.234375,tileIndex:965},cauldron:{u:.09375,v:.125,tileIndex:518},chainmail_boots:{u:.09375,v:.140625,tileIndex:582},chainmail_chestplate:{u:.09375,v:.15625,tileIndex:646},chainmail_helmet:{u:.09375,v:.171875,tileIndex:710},chainmail_leggings:{u:.09375,v:.1875,tileIndex:774},charcoal:{u:.09375,v:.203125,tileIndex:838},chicken_cooked:{u:.09375,v:.21875,tileIndex:902},chicken_raw:{u:.09375,v:.234375,tileIndex:966},clay_ball:{u:.109375,v:.125,tileIndex:519},clock:{u:.109375,v:.140625,tileIndex:583},coal:{u:.109375,v:.15625,tileIndex:647},comparator:{u:.109375,v:.171875,tileIndex:711},compass:{u:.109375,v:.1875,tileIndex:775},cookie:{u:.109375,v:.203125,tileIndex:839},diamond:{u:.109375,v:.21875,tileIndex:903},diamond_axe:{u:.109375,v:.234375,tileIndex:967},diamond_boots:{u:.125,v:.125,tileIndex:520},diamond_chestplate:{u:.125,v:.140625,tileIndex:584},diamond_helmet:{u:.125,v:.15625,tileIndex:648},diamond_hoe:{u:.125,v:.171875,tileIndex:712},diamond_horse_armor:{u:.125,v:.1875,tileIndex:776},diamond_leggings:{u:.125,v:.203125,tileIndex:840},diamond_pickaxe:{u:.125,v:.21875,tileIndex:904},diamond_shovel:{u:.125,v:.234375,tileIndex:968},diamond_sword:{u:.140625,v:.125,tileIndex:521},door_iron:{u:.15625,v:.125,tileIndex:522},door_wood:{u:.171875,v:.125,tileIndex:523},dye_powder_black:{u:.1875,v:.125,tileIndex:524},dye_powder_blue:{u:.203125,v:.125,tileIndex:525},dye_powder_brown:{u:.21875,v:.125,tileIndex:526},dye_powder_cyan:{u:.234375,v:.125,tileIndex:527},dye_powder_gray:{u:.140625,v:.140625,tileIndex:585},dye_powder_green:{u:.140625,v:.15625,tileIndex:649},dye_powder_light_blue:{u:.140625,v:.171875,tileIndex:713},dye_powder_lime:{u:.140625,v:.1875,tileIndex:777},dye_powder_magenta:{u:.140625,v:.203125,tileIndex:841},dye_powder_orange:{u:.140625,v:.21875,tileIndex:905},dye_powder_pink:{u:.140625,v:.234375,tileIndex:969},dye_powder_purple:{u:.15625,v:.140625,tileIndex:586},dye_powder_red:{u:.171875,v:.140625,tileIndex:587},dye_powder_silver:{u:.1875,v:.140625,tileIndex:588},dye_powder_white:{u:.203125,v:.140625,tileIndex:589},dye_powder_yellow:{u:.21875,v:.140625,tileIndex:590},egg:{u:.234375,v:.140625,tileIndex:591},emerald:{u:.15625,v:.15625,tileIndex:650},empty_armor_slot_boots:{u:.15625,v:.171875,tileIndex:714},empty_armor_slot_chestplate:{u:.15625,v:.1875,tileIndex:778},empty_armor_slot_helmet:{u:.15625,v:.203125,tileIndex:842},empty_armor_slot_leggings:{u:.15625,v:.21875,tileIndex:906},ender_eye:{u:.15625,v:.234375,tileIndex:970},ender_pearl:{u:.171875,v:.15625,tileIndex:651},experience_bottle:{u:.1875,v:.15625,tileIndex:652},feather:{u:.203125,v:.15625,tileIndex:653},fireball:{u:.21875,v:.15625,tileIndex:654},fireworks:{u:.234375,v:.15625,tileIndex:655},fireworks_charge:{u:.171875,v:.171875,tileIndex:715},fireworks_charge_overlay:{u:.171875,v:.1875,tileIndex:779},fish_clownfish_raw:{u:.171875,v:.203125,tileIndex:843},fish_cod_cooked:{u:.171875,v:.21875,tileIndex:907},fish_cod_raw:{u:.171875,v:.234375,tileIndex:971},fish_pufferfish_raw:{u:.1875,v:.171875,tileIndex:716},fish_salmon_cooked:{u:.203125,v:.171875,tileIndex:717},fish_salmon_raw:{u:.21875,v:.171875,tileIndex:718},fishing_rod_cast:{u:.234375,v:.171875,tileIndex:719},fishing_rod_uncast:{u:.1875,v:.1875,tileIndex:780},flint:{u:.1875,v:.203125,tileIndex:844},flint_and_steel:{u:.1875,v:.21875,tileIndex:908},flower_pot:{u:.1875,v:.234375,tileIndex:972},ghast_tear:{u:.203125,v:.1875,tileIndex:781},glowstone_dust:{u:.21875,v:.1875,tileIndex:782},gold_axe:{u:.234375,v:.1875,tileIndex:783},gold_boots:{u:.203125,v:.203125,tileIndex:845},gold_chestplate:{u:.203125,v:.21875,tileIndex:909},gold_helmet:{u:.203125,v:.234375,tileIndex:973},gold_hoe:{u:.21875,v:.203125,tileIndex:846},gold_horse_armor:{u:.234375,v:.203125,tileIndex:847},gold_ingot:{u:.21875,v:.21875,tileIndex:910},gold_leggings:{u:.21875,v:.234375,tileIndex:974},gold_nugget:{u:.234375,v:.21875,tileIndex:911},gold_pickaxe:{u:.234375,v:.234375,tileIndex:975},gold_shovel:{u:.25,v:0,tileIndex:16},gold_sword:{u:.265625,v:0,tileIndex:17},gunpowder:{u:.28125,v:0,tileIndex:18},hopper:{u:.296875,v:0,tileIndex:19},iron_axe:{u:.3125,v:0,tileIndex:20},iron_boots:{u:.328125,v:0,tileIndex:21},iron_chestplate:{u:.34375,v:0,tileIndex:22},iron_helmet:{u:.359375,v:0,tileIndex:23},iron_hoe:{u:.375,v:0,tileIndex:24},iron_horse_armor:{u:.390625,v:0,tileIndex:25},iron_ingot:{u:.40625,v:0,tileIndex:26},iron_leggings:{u:.421875,v:0,tileIndex:27},iron_pickaxe:{u:.4375,v:0,tileIndex:28},iron_shovel:{u:.453125,v:0,tileIndex:29},iron_sword:{u:.46875,v:0,tileIndex:30},item_frame:{u:.484375,v:0,tileIndex:31},lead:{u:.25,v:.015625,tileIndex:80},leather:{u:.265625,v:.015625,tileIndex:81},leather_boots:{u:.28125,v:.015625,tileIndex:82},leather_boots_overlay:{u:.296875,v:.015625,tileIndex:83},leather_chestplate:{u:.3125,v:.015625,tileIndex:84},leather_chestplate_overlay:{u:.328125,v:.015625,tileIndex:85},leather_helmet:{u:.34375,v:.015625,tileIndex:86},leather_helmet_overlay:{u:.359375,v:.015625,tileIndex:87},leather_leggings:{u:.375,v:.015625,tileIndex:88},leather_leggings_overlay:{u:.390625,v:.015625,tileIndex:89},magma_cream:{u:.40625,v:.015625,tileIndex:90},map_empty:{u:.421875,v:.015625,tileIndex:91},map_filled:{u:.4375,v:.015625,tileIndex:92},melon:{u:.453125,v:.015625,tileIndex:93},melon_speckled:{u:.46875,v:.015625,tileIndex:94},minecart_chest:{u:.484375,v:.015625,tileIndex:95},minecart_command_block:{u:.25,v:.03125,tileIndex:144},minecart_furnace:{u:.265625,v:.03125,tileIndex:145},minecart_hopper:{u:.28125,v:.03125,tileIndex:146},minecart_normal:{u:.296875,v:.03125,tileIndex:147},minecart_tnt:{u:.3125,v:.03125,tileIndex:148},mushroom_stew:{u:.328125,v:.03125,tileIndex:149},name_tag:{u:.34375,v:.03125,tileIndex:150},nether_star:{u:.359375,v:.03125,tileIndex:151},nether_wart:{u:.375,v:.03125,tileIndex:152},netherbrick:{u:.390625,v:.03125,tileIndex:153},painting:{u:.40625,v:.03125,tileIndex:154},paper:{u:.421875,v:.03125,tileIndex:155},porkchop_cooked:{u:.4375,v:.03125,tileIndex:156},porkchop_raw:{u:.453125,v:.03125,tileIndex:157},potato:{u:.46875,v:.03125,tileIndex:158},potato_baked:{u:.484375,v:.03125,tileIndex:159},potato_poisonous:{u:.25,v:.046875,tileIndex:208},potion_bottle_drinkable:{u:.265625,v:.046875,tileIndex:209},potion_bottle_empty:{u:.28125,v:.046875,tileIndex:210},potion_bottle_splash:{u:.296875,v:.046875,tileIndex:211},potion_overlay:{u:.3125,v:.046875,tileIndex:212},pumpkin_pie:{u:.328125,v:.046875,tileIndex:213},quartz:{u:.34375,v:.046875,tileIndex:214},quiver:{u:.359375,v:.046875,tileIndex:215},record_11:{u:.375,v:.046875,tileIndex:216},record_13:{u:.390625,v:.046875,tileIndex:217},record_blocks:{u:.40625,v:.046875,tileIndex:218},record_cat:{u:.421875,v:.046875,tileIndex:219},record_chirp:{u:.4375,v:.046875,tileIndex:220},record_far:{u:.453125,v:.046875,tileIndex:221},record_mall:{u:.46875,v:.046875,tileIndex:222},record_mellohi:{u:.484375,v:.046875,tileIndex:223},record_stal:{u:.25,v:.0625,tileIndex:272},record_strad:{u:.265625,v:.0625,tileIndex:273},record_wait:{u:.28125,v:.0625,tileIndex:274},record_ward:{u:.296875,v:.0625,tileIndex:275},redstone_dust:{u:.3125,v:.0625,tileIndex:276},reeds:{u:.328125,v:.0625,tileIndex:277},repeater:{u:.34375,v:.0625,tileIndex:278},rotten_flesh:{u:.359375,v:.0625,tileIndex:279},ruby:{u:.375,v:.0625,tileIndex:280},saddle:{u:.390625,v:.0625,tileIndex:281},seeds_melon:{u:.40625,v:.0625,tileIndex:282},seeds_pumpkin:{u:.421875,v:.0625,tileIndex:283},seeds_wheat:{u:.4375,v:.0625,tileIndex:284},shears:{u:.453125,v:.0625,tileIndex:285},sign:{u:.46875,v:.0625,tileIndex:286},skull_creeper:{u:.484375,v:.0625,tileIndex:287},skull_skeleton:{u:.25,v:.078125,tileIndex:336},skull_steve:{u:.265625,v:.078125,tileIndex:337},skull_wither:{u:.28125,v:.078125,tileIndex:338},skull_zombie:{u:.296875,v:.078125,tileIndex:339},slimeball:{u:.3125,v:.078125,tileIndex:340},snowball:{u:.328125,v:.078125,tileIndex:341},spawn_egg:{u:.34375,v:.078125,tileIndex:342},spawn_egg_overlay:{u:.359375,v:.078125,tileIndex:343},spider_eye:{u:.375,v:.078125,tileIndex:344},spider_eye_fermented:{u:.390625,v:.078125,tileIndex:345},stick:{u:.40625,v:.078125,tileIndex:346},stone_axe:{u:.421875,v:.078125,tileIndex:347},stone_hoe:{u:.4375,v:.078125,tileIndex:348},stone_pickaxe:{u:.453125,v:.078125,tileIndex:349},stone_shovel:{u:.46875,v:.078125,tileIndex:350},stone_sword:{u:.484375,v:.078125,tileIndex:351},string:{u:.25,v:.09375,tileIndex:400},sugar:{u:.265625,v:.09375,tileIndex:401},wheat:{u:.28125,v:.09375,tileIndex:402},wood_axe:{u:.296875,v:.09375,tileIndex:403},wood_hoe:{u:.3125,v:.09375,tileIndex:404},wood_pickaxe:{u:.328125,v:.09375,tileIndex:405},wood_shovel:{u:.34375,v:.09375,tileIndex:406},wood_sword:{u:.359375,v:.09375,tileIndex:407},banner_base:{u:.375,v:.09375,tileIndex:408},banner_overlay:{u:.390625,v:.09375,tileIndex:409},barrier:{u:.40625,v:.09375,tileIndex:410},door_acacia:{u:.421875,v:.09375,tileIndex:411},door_birch:{u:.4375,v:.09375,tileIndex:412},door_dark_oak:{u:.453125,v:.09375,tileIndex:413},door_jungle:{u:.46875,v:.09375,tileIndex:414},door_spruce:{u:.484375,v:.09375,tileIndex:415},mutton_cooked:{u:.25,v:.109375,tileIndex:464},mutton_raw:{u:.265625,v:.109375,tileIndex:465},prismarine_crystals:{u:.28125,v:.109375,tileIndex:466},prismarine_shard:{u:.296875,v:.109375,tileIndex:467},rabbit_cooked:{u:.3125,v:.109375,tileIndex:468},rabbit_foot:{u:.328125,v:.109375,tileIndex:469},rabbit_hide:{u:.34375,v:.109375,tileIndex:470},rabbit_raw:{u:.359375,v:.109375,tileIndex:471},rabbit_stew:{u:.375,v:.109375,tileIndex:472},wooden_armorstand:{u:.390625,v:.109375,tileIndex:473},acacia_boat:{u:.40625,v:.109375,tileIndex:474},beetroot:{u:.421875,v:.109375,tileIndex:475},beetroot_seeds:{u:.4375,v:.109375,tileIndex:476},beetroot_soup:{u:.453125,v:.109375,tileIndex:477},birch_boat:{u:.46875,v:.109375,tileIndex:478},broken_elytra:{u:.484375,v:.109375,tileIndex:479},chorus_fruit:{u:.25,v:.125,tileIndex:528},chorus_fruit_popped:{u:.265625,v:.125,tileIndex:529},clock_00:{u:.28125,v:.125,tileIndex:530},clock_01:{u:.296875,v:.125,tileIndex:531},clock_02:{u:.3125,v:.125,tileIndex:532},clock_03:{u:.328125,v:.125,tileIndex:533},clock_04:{u:.34375,v:.125,tileIndex:534},clock_05:{u:.359375,v:.125,tileIndex:535},clock_06:{u:.375,v:.125,tileIndex:536},clock_07:{u:.390625,v:.125,tileIndex:537},clock_08:{u:.40625,v:.125,tileIndex:538},clock_09:{u:.421875,v:.125,tileIndex:539},clock_10:{u:.4375,v:.125,tileIndex:540},clock_11:{u:.453125,v:.125,tileIndex:541},clock_12:{u:.46875,v:.125,tileIndex:542},clock_13:{u:.484375,v:.125,tileIndex:543},clock_14:{u:.25,v:.140625,tileIndex:592},clock_15:{u:.265625,v:.140625,tileIndex:593},clock_16:{u:.28125,v:.140625,tileIndex:594},clock_17:{u:.296875,v:.140625,tileIndex:595},clock_18:{u:.3125,v:.140625,tileIndex:596},clock_19:{u:.328125,v:.140625,tileIndex:597},clock_20:{u:.34375,v:.140625,tileIndex:598},clock_21:{u:.359375,v:.140625,tileIndex:599},clock_22:{u:.375,v:.140625,tileIndex:600},clock_23:{u:.390625,v:.140625,tileIndex:601},clock_24:{u:.40625,v:.140625,tileIndex:602},clock_25:{u:.421875,v:.140625,tileIndex:603},clock_26:{u:.4375,v:.140625,tileIndex:604},clock_27:{u:.453125,v:.140625,tileIndex:605},clock_28:{u:.46875,v:.140625,tileIndex:606},clock_29:{u:.484375,v:.140625,tileIndex:607},clock_30:{u:.25,v:.15625,tileIndex:656},clock_31:{u:.265625,v:.15625,tileIndex:657},clock_32:{u:.28125,v:.15625,tileIndex:658},clock_33:{u:.296875,v:.15625,tileIndex:659},clock_34:{u:.3125,v:.15625,tileIndex:660},clock_35:{u:.328125,v:.15625,tileIndex:661},clock_36:{u:.34375,v:.15625,tileIndex:662},clock_37:{u:.359375,v:.15625,tileIndex:663},clock_38:{u:.375,v:.15625,tileIndex:664},clock_39:{u:.390625,v:.15625,tileIndex:665},clock_40:{u:.40625,v:.15625,tileIndex:666},clock_41:{u:.421875,v:.15625,tileIndex:667},clock_42:{u:.4375,v:.15625,tileIndex:668},clock_43:{u:.453125,v:.15625,tileIndex:669},clock_44:{u:.46875,v:.15625,tileIndex:670},clock_45:{u:.484375,v:.15625,tileIndex:671},clock_46:{u:.25,v:.171875,tileIndex:720},clock_47:{u:.265625,v:.171875,tileIndex:721},clock_48:{u:.28125,v:.171875,tileIndex:722},clock_49:{u:.296875,v:.171875,tileIndex:723},clock_50:{u:.3125,v:.171875,tileIndex:724},clock_51:{u:.328125,v:.171875,tileIndex:725},clock_52:{u:.34375,v:.171875,tileIndex:726},clock_53:{u:.359375,v:.171875,tileIndex:727},clock_54:{u:.375,v:.171875,tileIndex:728},clock_55:{u:.390625,v:.171875,tileIndex:729},clock_56:{u:.40625,v:.171875,tileIndex:730},clock_57:{u:.421875,v:.171875,tileIndex:731},clock_58:{u:.4375,v:.171875,tileIndex:732},clock_59:{u:.453125,v:.171875,tileIndex:733},clock_60:{u:.46875,v:.171875,tileIndex:734},clock_61:{u:.484375,v:.171875,tileIndex:735},clock_62:{u:.25,v:.1875,tileIndex:784},clock_63:{u:.265625,v:.1875,tileIndex:785},compass_00:{u:.28125,v:.1875,tileIndex:786},compass_01:{u:.296875,v:.1875,tileIndex:787},compass_02:{u:.3125,v:.1875,tileIndex:788},compass_03:{u:.328125,v:.1875,tileIndex:789},compass_04:{u:.34375,v:.1875,tileIndex:790},compass_05:{u:.359375,v:.1875,tileIndex:791},compass_06:{u:.375,v:.1875,tileIndex:792},compass_07:{u:.390625,v:.1875,tileIndex:793},compass_08:{u:.40625,v:.1875,tileIndex:794},compass_09:{u:.421875,v:.1875,tileIndex:795},compass_10:{u:.4375,v:.1875,tileIndex:796},compass_11:{u:.453125,v:.1875,tileIndex:797},compass_12:{u:.46875,v:.1875,tileIndex:798},compass_13:{u:.484375,v:.1875,tileIndex:799},compass_14:{u:.25,v:.203125,tileIndex:848},compass_15:{u:.265625,v:.203125,tileIndex:849},compass_16:{u:.28125,v:.203125,tileIndex:850},compass_17:{u:.296875,v:.203125,tileIndex:851},compass_18:{u:.3125,v:.203125,tileIndex:852},compass_19:{u:.328125,v:.203125,tileIndex:853},compass_20:{u:.34375,v:.203125,tileIndex:854},compass_21:{u:.359375,v:.203125,tileIndex:855},compass_22:{u:.375,v:.203125,tileIndex:856},compass_23:{u:.390625,v:.203125,tileIndex:857},compass_24:{u:.40625,v:.203125,tileIndex:858},compass_25:{u:.421875,v:.203125,tileIndex:859},compass_26:{u:.4375,v:.203125,tileIndex:860},compass_27:{u:.453125,v:.203125,tileIndex:861},compass_28:{u:.46875,v:.203125,tileIndex:862},compass_29:{u:.484375,v:.203125,tileIndex:863},compass_30:{u:.25,v:.21875,tileIndex:912},compass_31:{u:.265625,v:.21875,tileIndex:913},dark_oak_boat:{u:.28125,v:.21875,tileIndex:914},dragon_breath:{u:.296875,v:.21875,tileIndex:915},elytra:{u:.3125,v:.21875,tileIndex:916},empty_armor_slot_shield:{u:.328125,v:.21875,tileIndex:917},end_crystal:{u:.34375,v:.21875,tileIndex:918},jungle_boat:{u:.359375,v:.21875,tileIndex:919},oak_boat:{u:.375,v:.21875,tileIndex:920},potion_bottle_lingering:{u:.390625,v:.21875,tileIndex:921},spectral_arrow:{u:.40625,v:.21875,tileIndex:922},spruce_boat:{u:.421875,v:.21875,tileIndex:923},tipped_arrow_base:{u:.4375,v:.21875,tileIndex:924},tipped_arrow_head:{u:.453125,v:.21875,tileIndex:925},structure_void:{u:.46875,v:.21875,tileIndex:926},map_filled_markings:{u:.484375,v:.21875,tileIndex:927},shulker_shell:{u:.25,v:.234375,tileIndex:976},totem:{u:.265625,v:.234375,tileIndex:977},iron_nugget:{u:.28125,v:.234375,tileIndex:978},knowledge_book:{u:.296875,v:.234375,tileIndex:979},acacia_door:{u:.3125,v:.234375,tileIndex:980},armor_stand:{u:.328125,v:.234375,tileIndex:981},baked_potato:{u:.34375,v:.234375,tileIndex:982},beef:{u:.359375,v:.234375,tileIndex:983},birch_door:{u:.375,v:.234375,tileIndex:984},bone_meal:{u:.390625,v:.234375,tileIndex:985},book:{u:.40625,v:.234375,tileIndex:986},bow:{u:.421875,v:.234375,tileIndex:987},bucket:{u:.4375,v:.234375,tileIndex:988},cactus_green:{u:.453125,v:.234375,tileIndex:989},chest_minecart:{u:.46875,v:.234375,tileIndex:990},chicken:{u:.484375,v:.234375,tileIndex:991},cocoa_beans:{u:0,v:.25,tileIndex:1024},cod:{u:0,v:.265625,tileIndex:1088},cod_bucket:{u:0,v:.28125,tileIndex:1152},command_block_minecart:{u:0,v:.296875,tileIndex:1216},cooked_beef:{u:0,v:.3125,tileIndex:1280},cooked_chicken:{u:0,v:.328125,tileIndex:1344},cooked_cod:{u:0,v:.34375,tileIndex:1408},cooked_mutton:{u:0,v:.359375,tileIndex:1472},cooked_porkchop:{u:0,v:.375,tileIndex:1536},cooked_rabbit:{u:0,v:.390625,tileIndex:1600},cooked_salmon:{u:0,v:.40625,tileIndex:1664},cyan_dye:{u:0,v:.421875,tileIndex:1728},dandelion_yellow:{u:0,v:.4375,tileIndex:1792},dark_oak_door:{u:0,v:.453125,tileIndex:1856},dried_kelp:{u:0,v:.46875,tileIndex:1920},enchanted_book:{u:0,v:.484375,tileIndex:1984},fermented_spider_eye:{u:.015625,v:.25,tileIndex:1025},filled_map:{u:.015625,v:.265625,tileIndex:1089},filled_map_markings:{u:.015625,v:.28125,tileIndex:1153},fire_charge:{u:.015625,v:.296875,tileIndex:1217},firework_rocket:{u:.015625,v:.3125,tileIndex:1281},firework_star:{u:.015625,v:.328125,tileIndex:1345},firework_star_overlay:{u:.015625,v:.34375,tileIndex:1409},fishing_rod:{u:.015625,v:.359375,tileIndex:1473},furnace_minecart:{u:.015625,v:.375,tileIndex:1537},glass_bottle:{u:.015625,v:.390625,tileIndex:1601},glistering_melon_slice:{u:.015625,v:.40625,tileIndex:1665},golden_apple:{u:.015625,v:.421875,tileIndex:1729},golden_axe:{u:.015625,v:.4375,tileIndex:1793},golden_boots:{u:.015625,v:.453125,tileIndex:1857},golden_carrot:{u:.015625,v:.46875,tileIndex:1921},golden_chestplate:{u:.015625,v:.484375,tileIndex:1985},golden_helmet:{u:.03125,v:.25,tileIndex:1026},golden_hoe:{u:.03125,v:.265625,tileIndex:1090},golden_horse_armor:{u:.03125,v:.28125,tileIndex:1154},golden_leggings:{u:.03125,v:.296875,tileIndex:1218},golden_pickaxe:{u:.03125,v:.3125,tileIndex:1282},golden_shovel:{u:.03125,v:.328125,tileIndex:1346},golden_sword:{u:.03125,v:.34375,tileIndex:1410},gray_dye:{u:.03125,v:.359375,tileIndex:1474},heart_of_the_sea:{u:.03125,v:.375,tileIndex:1538},hopper_minecart:{u:.03125,v:.390625,tileIndex:1602},ink_sac:{u:.03125,v:.40625,tileIndex:1666},iron_door:{u:.03125,v:.421875,tileIndex:1730},jungle_door:{u:.03125,v:.4375,tileIndex:1794},kelp:{u:.03125,v:.453125,tileIndex:1858},lapis_lazuli:{u:.03125,v:.46875,tileIndex:1922},lava_bucket:{u:.03125,v:.484375,tileIndex:1986},light_blue_dye:{u:.046875,v:.25,tileIndex:1027},light_gray_dye:{u:.046875,v:.265625,tileIndex:1091},lime_dye:{u:.046875,v:.28125,tileIndex:1155},lingering_potion:{u:.046875,v:.296875,tileIndex:1219},magenta_dye:{u:.046875,v:.3125,tileIndex:1283},map:{u:.046875,v:.328125,tileIndex:1347},melon_seeds:{u:.046875,v:.34375,tileIndex:1411},melon_slice:{u:.046875,v:.359375,tileIndex:1475},milk_bucket:{u:.046875,v:.375,tileIndex:1539},minecart:{u:.046875,v:.390625,tileIndex:1603},music_disc_11:{u:.046875,v:.40625,tileIndex:1667},music_disc_13:{u:.046875,v:.421875,tileIndex:1731},music_disc_blocks:{u:.046875,v:.4375,tileIndex:1795},music_disc_cat:{u:.046875,v:.453125,tileIndex:1859},music_disc_chirp:{u:.046875,v:.46875,tileIndex:1923},music_disc_far:{u:.046875,v:.484375,tileIndex:1987},music_disc_mall:{u:.0625,v:.25,tileIndex:1028},music_disc_mellohi:{u:.0625,v:.265625,tileIndex:1092},music_disc_stal:{u:.0625,v:.28125,tileIndex:1156},music_disc_strad:{u:.0625,v:.296875,tileIndex:1220},music_disc_wait:{u:.0625,v:.3125,tileIndex:1284},music_disc_ward:{u:.0625,v:.328125,tileIndex:1348},mutton:{u:.0625,v:.34375,tileIndex:1412},nautilus_shell:{u:.0625,v:.359375,tileIndex:1476},nether_brick:{u:.0625,v:.375,tileIndex:1540},oak_door:{u:.0625,v:.390625,tileIndex:1604},orange_dye:{u:.0625,v:.40625,tileIndex:1668},phantom_membrane:{u:.0625,v:.421875,tileIndex:1732},pink_dye:{u:.0625,v:.4375,tileIndex:1796},poisonous_potato:{u:.0625,v:.453125,tileIndex:1860},popped_chorus_fruit:{u:.0625,v:.46875,tileIndex:1924},porkchop:{u:.0625,v:.484375,tileIndex:1988},potion:{u:.078125,v:.25,tileIndex:1029},pufferfish:{u:.078125,v:.265625,tileIndex:1093},pufferfish_bucket:{u:.078125,v:.28125,tileIndex:1157},pumpkin_seeds:{u:.078125,v:.296875,tileIndex:1221},purple_dye:{u:.078125,v:.3125,tileIndex:1285},rabbit:{u:.078125,v:.328125,tileIndex:1349},redstone:{u:.078125,v:.34375,tileIndex:1413},rose_red:{u:.078125,v:.359375,tileIndex:1477},salmon:{u:.078125,v:.375,tileIndex:1541},salmon_bucket:{u:.078125,v:.390625,tileIndex:1605},scute:{u:.078125,v:.40625,tileIndex:1669},sea_pickle:{u:.078125,v:.421875,tileIndex:1733},seagrass:{u:.078125,v:.4375,tileIndex:1797},slime_ball:{u:.078125,v:.453125,tileIndex:1861},splash_potion:{u:.078125,v:.46875,tileIndex:1925},spruce_door:{u:.078125,v:.484375,tileIndex:1989},sugar_cane:{u:.09375,v:.25,tileIndex:1030},tnt_minecart:{u:.09375,v:.265625,tileIndex:1094},totem_of_undying:{u:.09375,v:.28125,tileIndex:1158},trident:{u:.09375,v:.296875,tileIndex:1222},tropical_fish:{u:.09375,v:.3125,tileIndex:1286},tropical_fish_bucket:{u:.09375,v:.328125,tileIndex:1350},turtle_egg:{u:.09375,v:.34375,tileIndex:1414},turtle_helmet:{u:.09375,v:.359375,tileIndex:1478},water_bucket:{u:.09375,v:.375,tileIndex:1542},wheat_seeds:{u:.09375,v:.390625,tileIndex:1606},wooden_axe:{u:.09375,v:.40625,tileIndex:1670},wooden_hoe:{u:.09375,v:.421875,tileIndex:1734},wooden_pickaxe:{u:.09375,v:.4375,tileIndex:1798},wooden_shovel:{u:.09375,v:.453125,tileIndex:1862},wooden_sword:{u:.09375,v:.46875,tileIndex:1926},writable_book:{u:.09375,v:.484375,tileIndex:1990},written_book:{u:.109375,v:.25,tileIndex:1031},acacia_sign:{u:.109375,v:.265625,tileIndex:1095},bamboo:{u:.109375,v:.28125,tileIndex:1159},bell:{u:.109375,v:.296875,tileIndex:1223},birch_sign:{u:.109375,v:.3125,tileIndex:1287},black_dye:{u:.109375,v:.328125,tileIndex:1351},blue_dye:{u:.109375,v:.34375,tileIndex:1415},brown_dye:{u:.109375,v:.359375,tileIndex:1479},campfire:{u:.109375,v:.375,tileIndex:1543},creeper_banner_pattern:{u:.109375,v:.390625,tileIndex:1607},crossbow_arrow:{u:.109375,v:.40625,tileIndex:1671},crossbow_firework:{u:.109375,v:.421875,tileIndex:1735},crossbow_pulling_0:{u:.109375,v:.4375,tileIndex:1799},crossbow_pulling_1:{u:.109375,v:.453125,tileIndex:1863},crossbow_pulling_2:{u:.109375,v:.46875,tileIndex:1927},crossbow_standby:{u:.109375,v:.484375,tileIndex:1991},dark_oak_sign:{u:.125,v:.25,tileIndex:1032},flower_banner_pattern:{u:.125,v:.265625,tileIndex:1096},globe_banner_pattern:{u:.125,v:.28125,tileIndex:1160},green_dye:{u:.125,v:.296875,tileIndex:1224},jungle_sign:{u:.125,v:.3125,tileIndex:1288},lantern:{u:.125,v:.328125,tileIndex:1352},leather_horse_armor:{u:.125,v:.34375,tileIndex:1416},mojang_banner_pattern:{u:.125,v:.359375,tileIndex:1480},oak_sign:{u:.125,v:.375,tileIndex:1544},red_dye:{u:.125,v:.390625,tileIndex:1608},skull_banner_pattern:{u:.125,v:.40625,tileIndex:1672},spruce_sign:{u:.125,v:.421875,tileIndex:1736},suspicious_stew:{u:.125,v:.4375,tileIndex:1800},sweet_berries:{u:.125,v:.453125,tileIndex:1864},white_dye:{u:.125,v:.46875,tileIndex:1928},yellow_dye:{u:.125,v:.484375,tileIndex:1992},honey_bottle:{u:.140625,v:.25,tileIndex:1033},honeycomb:{u:.140625,v:.265625,tileIndex:1097},chain:{u:.140625,v:.28125,tileIndex:1161},crimson_door:{u:.140625,v:.296875,tileIndex:1225},crimson_sign:{u:.140625,v:.3125,tileIndex:1289},music_disc_pigstep:{u:.140625,v:.328125,tileIndex:1353},nether_sprouts:{u:.140625,v:.34375,tileIndex:1417},netherite_axe:{u:.140625,v:.359375,tileIndex:1481},netherite_boots:{u:.140625,v:.375,tileIndex:1545},netherite_chestplate:{u:.140625,v:.390625,tileIndex:1609},netherite_helmet:{u:.140625,v:.40625,tileIndex:1673},netherite_hoe:{u:.140625,v:.421875,tileIndex:1737},netherite_ingot:{u:.140625,v:.4375,tileIndex:1801},netherite_leggings:{u:.140625,v:.453125,tileIndex:1865},netherite_pickaxe:{u:.140625,v:.46875,tileIndex:1929},netherite_scrap:{u:.140625,v:.484375,tileIndex:1993},netherite_shovel:{u:.15625,v:.25,tileIndex:1034},netherite_sword:{u:.15625,v:.265625,tileIndex:1098},piglin_banner_pattern:{u:.15625,v:.28125,tileIndex:1162},soul_campfire:{u:.15625,v:.296875,tileIndex:1226},soul_lantern:{u:.15625,v:.3125,tileIndex:1290},warped_door:{u:.15625,v:.328125,tileIndex:1354},warped_fungus_on_a_stick:{u:.15625,v:.34375,tileIndex:1418},warped_sign:{u:.15625,v:.359375,tileIndex:1482},amethyst_shard:{u:.15625,v:.375,tileIndex:1546},axolotl_bucket:{u:.15625,v:.390625,tileIndex:1610},black_candle:{u:.15625,v:.40625,tileIndex:1674},blue_candle:{u:.15625,v:.421875,tileIndex:1738},brown_candle:{u:.15625,v:.4375,tileIndex:1802},bundle:{u:.15625,v:.453125,tileIndex:1866},bundle_filled:{u:.15625,v:.46875,tileIndex:1930},candle:{u:.15625,v:.484375,tileIndex:1994},copper_ingot:{u:.171875,v:.25,tileIndex:1035},cyan_candle:{u:.171875,v:.265625,tileIndex:1099},glow_berries:{u:.171875,v:.28125,tileIndex:1163},glow_ink_sac:{u:.171875,v:.296875,tileIndex:1227},glow_item_frame:{u:.171875,v:.3125,tileIndex:1291},gray_candle:{u:.171875,v:.328125,tileIndex:1355},green_candle:{u:.171875,v:.34375,tileIndex:1419},light:{u:.171875,v:.359375,tileIndex:1483},light_00:{u:.171875,v:.375,tileIndex:1547},light_01:{u:.171875,v:.390625,tileIndex:1611},light_02:{u:.171875,v:.40625,tileIndex:1675},light_03:{u:.171875,v:.421875,tileIndex:1739},light_04:{u:.171875,v:.4375,tileIndex:1803},light_05:{u:.171875,v:.453125,tileIndex:1867},light_06:{u:.171875,v:.46875,tileIndex:1931},light_07:{u:.171875,v:.484375,tileIndex:1995},light_08:{u:.1875,v:.25,tileIndex:1036},light_09:{u:.1875,v:.265625,tileIndex:1100},light_10:{u:.1875,v:.28125,tileIndex:1164},light_11:{u:.1875,v:.296875,tileIndex:1228},light_12:{u:.1875,v:.3125,tileIndex:1292},light_13:{u:.1875,v:.328125,tileIndex:1356},light_14:{u:.1875,v:.34375,tileIndex:1420},light_15:{u:.1875,v:.359375,tileIndex:1484},light_blue_candle:{u:.1875,v:.375,tileIndex:1548},light_gray_candle:{u:.1875,v:.390625,tileIndex:1612},lime_candle:{u:.1875,v:.40625,tileIndex:1676},magenta_candle:{u:.1875,v:.421875,tileIndex:1740},orange_candle:{u:.1875,v:.4375,tileIndex:1804},pink_candle:{u:.1875,v:.453125,tileIndex:1868},pointed_dripstone:{u:.1875,v:.46875,tileIndex:1932},powder_snow_bucket:{u:.1875,v:.484375,tileIndex:1996},purple_candle:{u:.203125,v:.25,tileIndex:1037},raw_copper:{u:.203125,v:.265625,tileIndex:1101},raw_gold:{u:.203125,v:.28125,tileIndex:1165},raw_iron:{u:.203125,v:.296875,tileIndex:1229},red_candle:{u:.203125,v:.3125,tileIndex:1293},spyglass:{u:.203125,v:.328125,tileIndex:1357},spyglass_model:{u:.203125,v:.34375,tileIndex:1421},white_candle:{u:.203125,v:.359375,tileIndex:1485},yellow_candle:{u:.203125,v:.375,tileIndex:1549},music_disc_otherside:{u:.203125,v:.390625,tileIndex:1613},acacia_chest_boat:{u:.203125,v:.40625,tileIndex:1677},birch_chest_boat:{u:.203125,v:.421875,tileIndex:1741},dark_oak_chest_boat:{u:.203125,v:.4375,tileIndex:1805},disc_fragment_5:{u:.203125,v:.453125,tileIndex:1869},echo_shard:{u:.203125,v:.46875,tileIndex:1933},goat_horn:{u:.203125,v:.484375,tileIndex:1997},jungle_chest_boat:{u:.21875,v:.25,tileIndex:1038},mangrove_boat:{u:.21875,v:.265625,tileIndex:1102},mangrove_chest_boat:{u:.21875,v:.28125,tileIndex:1166},mangrove_door:{u:.21875,v:.296875,tileIndex:1230},mangrove_propagule:{u:.21875,v:.3125,tileIndex:1294},mangrove_sign:{u:.21875,v:.328125,tileIndex:1358},music_disc_5:{u:.21875,v:.34375,tileIndex:1422},oak_chest_boat:{u:.21875,v:.359375,tileIndex:1486},recovery_compass_00:{u:.21875,v:.375,tileIndex:1550},recovery_compass_01:{u:.21875,v:.390625,tileIndex:1614},recovery_compass_02:{u:.21875,v:.40625,tileIndex:1678},recovery_compass_03:{u:.21875,v:.421875,tileIndex:1742},recovery_compass_04:{u:.21875,v:.4375,tileIndex:1806},recovery_compass_05:{u:.21875,v:.453125,tileIndex:1870},recovery_compass_06:{u:.21875,v:.46875,tileIndex:1934},recovery_compass_07:{u:.21875,v:.484375,tileIndex:1998},recovery_compass_08:{u:.234375,v:.25,tileIndex:1039},recovery_compass_09:{u:.234375,v:.265625,tileIndex:1103},recovery_compass_10:{u:.234375,v:.28125,tileIndex:1167},recovery_compass_11:{u:.234375,v:.296875,tileIndex:1231},recovery_compass_12:{u:.234375,v:.3125,tileIndex:1295},recovery_compass_13:{u:.234375,v:.328125,tileIndex:1359},recovery_compass_14:{u:.234375,v:.34375,tileIndex:1423},recovery_compass_15:{u:.234375,v:.359375,tileIndex:1487},recovery_compass_16:{u:.234375,v:.375,tileIndex:1551},recovery_compass_17:{u:.234375,v:.390625,tileIndex:1615},recovery_compass_18:{u:.234375,v:.40625,tileIndex:1679},recovery_compass_19:{u:.234375,v:.421875,tileIndex:1743},recovery_compass_20:{u:.234375,v:.4375,tileIndex:1807},recovery_compass_21:{u:.234375,v:.453125,tileIndex:1871},recovery_compass_22:{u:.234375,v:.46875,tileIndex:1935},recovery_compass_23:{u:.234375,v:.484375,tileIndex:1999},recovery_compass_24:{u:.25,v:.25,tileIndex:1040},recovery_compass_25:{u:.25,v:.265625,tileIndex:1104},recovery_compass_26:{u:.25,v:.28125,tileIndex:1168},recovery_compass_27:{u:.25,v:.296875,tileIndex:1232},recovery_compass_28:{u:.25,v:.3125,tileIndex:1296},recovery_compass_29:{u:.25,v:.328125,tileIndex:1360},recovery_compass_30:{u:.25,v:.34375,tileIndex:1424},recovery_compass_31:{u:.25,v:.359375,tileIndex:1488},spruce_chest_boat:{u:.25,v:.375,tileIndex:1552},tadpole_bucket:{u:.25,v:.390625,tileIndex:1616},acacia_hanging_sign:{u:.25,v:.40625,tileIndex:1680},bamboo_chest_raft:{u:.25,v:.421875,tileIndex:1744},bamboo_door:{u:.25,v:.4375,tileIndex:1808},bamboo_hanging_sign:{u:.25,v:.453125,tileIndex:1872},bamboo_raft:{u:.25,v:.46875,tileIndex:1936},bamboo_sign:{u:.25,v:.484375,tileIndex:2e3},birch_hanging_sign:{u:.265625,v:.25,tileIndex:1041},crimson_hanging_sign:{u:.28125,v:.25,tileIndex:1042},dark_oak_hanging_sign:{u:.296875,v:.25,tileIndex:1043},jungle_hanging_sign:{u:.3125,v:.25,tileIndex:1044},mangrove_hanging_sign:{u:.328125,v:.25,tileIndex:1045},oak_hanging_sign:{u:.34375,v:.25,tileIndex:1046},spruce_hanging_sign:{u:.359375,v:.25,tileIndex:1047},warped_hanging_sign:{u:.375,v:.25,tileIndex:1048},brush:{u:.390625,v:.25,tileIndex:1049},cherry_boat:{u:.40625,v:.25,tileIndex:1050},cherry_chest_boat:{u:.421875,v:.25,tileIndex:1051},cherry_door:{u:.4375,v:.25,tileIndex:1052},cherry_hanging_sign:{u:.453125,v:.25,tileIndex:1053},cherry_sign:{u:.46875,v:.25,tileIndex:1054},coast_armor_trim_smithing_template:{u:.484375,v:.25,tileIndex:1055},dune_armor_trim_smithing_template:{u:.265625,v:.265625,tileIndex:1105},empty_slot_amethyst_shard:{u:.265625,v:.28125,tileIndex:1169},empty_slot_axe:{u:.265625,v:.296875,tileIndex:1233},empty_slot_diamond:{u:.265625,v:.3125,tileIndex:1297},empty_slot_emerald:{u:.265625,v:.328125,tileIndex:1361},empty_slot_hoe:{u:.265625,v:.34375,tileIndex:1425},empty_slot_ingot:{u:.265625,v:.359375,tileIndex:1489},empty_slot_lapis_lazuli:{u:.265625,v:.375,tileIndex:1553},empty_slot_pickaxe:{u:.265625,v:.390625,tileIndex:1617},empty_slot_quartz:{u:.265625,v:.40625,tileIndex:1681},empty_slot_redstone_dust:{u:.265625,v:.421875,tileIndex:1745},empty_slot_shovel:{u:.265625,v:.4375,tileIndex:1809},empty_slot_smithing_template_armor_trim:{u:.265625,v:.453125,tileIndex:1873},empty_slot_smithing_template_netherite_upgrade:{u:.265625,v:.46875,tileIndex:1937},empty_slot_sword:{u:.265625,v:.484375,tileIndex:2001},eye_armor_trim_smithing_template:{u:.28125,v:.265625,tileIndex:1106},netherite_upgrade_smithing_template:{u:.296875,v:.265625,tileIndex:1107},pink_petals:{u:.3125,v:.265625,tileIndex:1108},pottery_shard_archer:{u:.328125,v:.265625,tileIndex:1109},pottery_shard_arms_up:{u:.34375,v:.265625,tileIndex:1110},pottery_shard_prize:{u:.359375,v:.265625,tileIndex:1111},pottery_shard_skull:{u:.375,v:.265625,tileIndex:1112},rib_armor_trim_smithing_template:{u:.390625,v:.265625,tileIndex:1113},sentry_armor_trim_smithing_template:{u:.40625,v:.265625,tileIndex:1114},snout_armor_trim_smithing_template:{u:.421875,v:.265625,tileIndex:1115},spire_armor_trim_smithing_template:{u:.4375,v:.265625,tileIndex:1116},tide_armor_trim_smithing_template:{u:.453125,v:.265625,tileIndex:1117},torchflower_seeds:{u:.46875,v:.265625,tileIndex:1118},vex_armor_trim_smithing_template:{u:.484375,v:.265625,tileIndex:1119},ward_armor_trim_smithing_template:{u:.28125,v:.28125,tileIndex:1170},wild_armor_trim_smithing_template:{u:.28125,v:.296875,tileIndex:1234},angler_pottery_sherd:{u:.28125,v:.3125,tileIndex:1298},archer_pottery_sherd:{u:.28125,v:.328125,tileIndex:1362},arms_up_pottery_sherd:{u:.28125,v:.34375,tileIndex:1426},blade_pottery_sherd:{u:.28125,v:.359375,tileIndex:1490},brewer_pottery_sherd:{u:.28125,v:.375,tileIndex:1554},burn_pottery_sherd:{u:.28125,v:.390625,tileIndex:1618},danger_pottery_sherd:{u:.28125,v:.40625,tileIndex:1682},explorer_pottery_sherd:{u:.28125,v:.421875,tileIndex:1746},friend_pottery_sherd:{u:.28125,v:.4375,tileIndex:1810},heart_pottery_sherd:{u:.28125,v:.453125,tileIndex:1874},heartbreak_pottery_sherd:{u:.28125,v:.46875,tileIndex:1938},host_armor_trim_smithing_template:{u:.28125,v:.484375,tileIndex:2002},howl_pottery_sherd:{u:.296875,v:.28125,tileIndex:1171},miner_pottery_sherd:{u:.3125,v:.28125,tileIndex:1172},mourner_pottery_sherd:{u:.328125,v:.28125,tileIndex:1173},music_disc_relic:{u:.34375,v:.28125,tileIndex:1174},pitcher_plant:{u:.359375,v:.28125,tileIndex:1175},pitcher_pod:{u:.375,v:.28125,tileIndex:1176},plenty_pottery_sherd:{u:.390625,v:.28125,tileIndex:1177},prize_pottery_sherd:{u:.40625,v:.28125,tileIndex:1178},raiser_armor_trim_smithing_template:{u:.421875,v:.28125,tileIndex:1179},shaper_armor_trim_smithing_template:{u:.4375,v:.28125,tileIndex:1180},sheaf_pottery_sherd:{u:.453125,v:.28125,tileIndex:1181},shelter_pottery_sherd:{u:.46875,v:.28125,tileIndex:1182},silence_armor_trim_smithing_template:{u:.484375,v:.28125,tileIndex:1183},skull_pottery_sherd:{u:.296875,v:.296875,tileIndex:1235},sniffer_egg:{u:.296875,v:.3125,tileIndex:1299},snort_pottery_sherd:{u:.296875,v:.328125,tileIndex:1363},wayfinder_armor_trim_smithing_template:{u:.296875,v:.34375,tileIndex:1427},copper_door:{u:.296875,v:.359375,tileIndex:1491},exposed_copper_door:{u:.296875,v:.375,tileIndex:1555},oxidized_copper_door:{u:.296875,v:.390625,tileIndex:1619},trial_key:{u:.296875,v:.40625,tileIndex:1683},weathered_copper_door:{u:.296875,v:.421875,tileIndex:1747},armadillo_scute:{u:.296875,v:.4375,tileIndex:1811},bolt_armor_trim_smithing_template:{u:.296875,v:.453125,tileIndex:1875},breeze_rod:{u:.296875,v:.46875,tileIndex:1939},flow_armor_trim_smithing_template:{u:.296875,v:.484375,tileIndex:2003},flow_banner_pattern:{u:.3125,v:.296875,tileIndex:1236},flow_pottery_sherd:{u:.328125,v:.296875,tileIndex:1237},guster_banner_pattern:{u:.34375,v:.296875,tileIndex:1238},guster_pottery_sherd:{u:.359375,v:.296875,tileIndex:1239},mace:{u:.375,v:.296875,tileIndex:1240},ominous_bottle:{u:.390625,v:.296875,tileIndex:1241},ominous_trial_key:{u:.40625,v:.296875,tileIndex:1242},scrape_pottery_sherd:{u:.421875,v:.296875,tileIndex:1243},turtle_scute:{u:.4375,v:.296875,tileIndex:1244},wind_charge:{u:.453125,v:.296875,tileIndex:1245},wolf_armor:{u:.46875,v:.296875,tileIndex:1246},wolf_armor_overlay:{u:.484375,v:.296875,tileIndex:1247},music_disc_creator:{u:.3125,v:.3125,tileIndex:1300},music_disc_creator_music_box:{u:.3125,v:.328125,tileIndex:1364},music_disc_precipice:{u:.3125,v:.34375,tileIndex:1428},black_bundle:{u:.3125,v:.359375,tileIndex:1492},black_bundle_open_back:{u:.3125,v:.375,tileIndex:1556},black_bundle_open_front:{u:.3125,v:.390625,tileIndex:1620},blue_bundle:{u:.3125,v:.40625,tileIndex:1684},blue_bundle_open_back:{u:.3125,v:.421875,tileIndex:1748},blue_bundle_open_front:{u:.3125,v:.4375,tileIndex:1812},bordure_indented_banner_pattern:{u:.3125,v:.453125,tileIndex:1876},brown_bundle:{u:.3125,v:.46875,tileIndex:1940},brown_bundle_open_back:{u:.3125,v:.484375,tileIndex:2004},brown_bundle_open_front:{u:.328125,v:.3125,tileIndex:1301},bundle_open_back:{u:.34375,v:.3125,tileIndex:1302},bundle_open_front:{u:.359375,v:.3125,tileIndex:1303},cyan_bundle:{u:.375,v:.3125,tileIndex:1304},cyan_bundle_open_back:{u:.390625,v:.3125,tileIndex:1305},cyan_bundle_open_front:{u:.40625,v:.3125,tileIndex:1306},field_masoned_banner_pattern:{u:.421875,v:.3125,tileIndex:1307},gray_bundle:{u:.4375,v:.3125,tileIndex:1308},gray_bundle_open_back:{u:.453125,v:.3125,tileIndex:1309},gray_bundle_open_front:{u:.46875,v:.3125,tileIndex:1310},green_bundle:{u:.484375,v:.3125,tileIndex:1311},green_bundle_open_back:{u:.328125,v:.328125,tileIndex:1365},green_bundle_open_front:{u:.328125,v:.34375,tileIndex:1429},light_blue_bundle:{u:.328125,v:.359375,tileIndex:1493},light_blue_bundle_open_back:{u:.328125,v:.375,tileIndex:1557},light_blue_bundle_open_front:{u:.328125,v:.390625,tileIndex:1621},light_gray_bundle:{u:.328125,v:.40625,tileIndex:1685},light_gray_bundle_open_back:{u:.328125,v:.421875,tileIndex:1749},light_gray_bundle_open_front:{u:.328125,v:.4375,tileIndex:1813},lime_bundle:{u:.328125,v:.453125,tileIndex:1877},lime_bundle_open_back:{u:.328125,v:.46875,tileIndex:1941},lime_bundle_open_front:{u:.328125,v:.484375,tileIndex:2005},magenta_bundle:{u:.34375,v:.328125,tileIndex:1366},magenta_bundle_open_back:{u:.359375,v:.328125,tileIndex:1367},magenta_bundle_open_front:{u:.375,v:.328125,tileIndex:1368},orange_bundle:{u:.390625,v:.328125,tileIndex:1369},orange_bundle_open_back:{u:.40625,v:.328125,tileIndex:1370},orange_bundle_open_front:{u:.421875,v:.328125,tileIndex:1371},pale_oak_boat:{u:.4375,v:.328125,tileIndex:1372},pale_oak_chest_boat:{u:.453125,v:.328125,tileIndex:1373},pale_oak_door:{u:.46875,v:.328125,tileIndex:1374},pale_oak_hanging_sign:{u:.484375,v:.328125,tileIndex:1375},pale_oak_sign:{u:.34375,v:.34375,tileIndex:1430},pink_bundle:{u:.34375,v:.359375,tileIndex:1494},pink_bundle_open_back:{u:.34375,v:.375,tileIndex:1558},pink_bundle_open_front:{u:.34375,v:.390625,tileIndex:1622},purple_bundle:{u:.34375,v:.40625,tileIndex:1686},purple_bundle_open_back:{u:.34375,v:.421875,tileIndex:1750},purple_bundle_open_front:{u:.34375,v:.4375,tileIndex:1814},red_bundle:{u:.34375,v:.453125,tileIndex:1878},red_bundle_open_back:{u:.34375,v:.46875,tileIndex:1942},red_bundle_open_front:{u:.34375,v:.484375,tileIndex:2006},white_bundle:{u:.359375,v:.34375,tileIndex:1431},white_bundle_open_back:{u:.375,v:.34375,tileIndex:1432},white_bundle_open_front:{u:.390625,v:.34375,tileIndex:1433},yellow_bundle:{u:.40625,v:.34375,tileIndex:1434},yellow_bundle_open_back:{u:.421875,v:.34375,tileIndex:1435},yellow_bundle_open_front:{u:.4375,v:.34375,tileIndex:1436},elytra_broken:{u:.453125,v:.34375,tileIndex:1437},resin_brick:{u:.46875,v:.34375,tileIndex:1438},resin_clump:{u:.484375,v:.34375,tileIndex:1439},allay_spawn_egg:{u:.359375,v:.359375,tileIndex:1495},armadillo_spawn_egg:{u:.359375,v:.375,tileIndex:1559},axolotl_spawn_egg:{u:.359375,v:.390625,tileIndex:1623},bat_spawn_egg:{u:.359375,v:.40625,tileIndex:1687},bee_spawn_egg:{u:.359375,v:.421875,tileIndex:1751},blaze_spawn_egg:{u:.359375,v:.4375,tileIndex:1815},blue_egg:{u:.359375,v:.453125,tileIndex:1879},bogged_spawn_egg:{u:.359375,v:.46875,tileIndex:1943},breeze_spawn_egg:{u:.359375,v:.484375,tileIndex:2007},brown_egg:{u:.375,v:.359375,tileIndex:1496},camel_spawn_egg:{u:.390625,v:.359375,tileIndex:1497},cat_spawn_egg:{u:.40625,v:.359375,tileIndex:1498},cave_spider_spawn_egg:{u:.421875,v:.359375,tileIndex:1499},chicken_spawn_egg:{u:.4375,v:.359375,tileIndex:1500},cod_spawn_egg:{u:.453125,v:.359375,tileIndex:1501},cow_spawn_egg:{u:.46875,v:.359375,tileIndex:1502},creaking_spawn_egg:{u:.484375,v:.359375,tileIndex:1503},creeper_spawn_egg:{u:.375,v:.375,tileIndex:1560},dolphin_spawn_egg:{u:.375,v:.390625,tileIndex:1624},donkey_spawn_egg:{u:.375,v:.40625,tileIndex:1688},drowned_spawn_egg:{u:.375,v:.421875,tileIndex:1752},elder_guardian_spawn_egg:{u:.375,v:.4375,tileIndex:1816},ender_dragon_spawn_egg:{u:.375,v:.453125,tileIndex:1880},enderman_spawn_egg:{u:.375,v:.46875,tileIndex:1944},endermite_spawn_egg:{u:.375,v:.484375,tileIndex:2008},evoker_spawn_egg:{u:.390625,v:.375,tileIndex:1561},firefly_bush:{u:.40625,v:.375,tileIndex:1562},fox_spawn_egg:{u:.421875,v:.375,tileIndex:1563},frog_spawn_egg:{u:.4375,v:.375,tileIndex:1564},ghast_spawn_egg:{u:.453125,v:.375,tileIndex:1565},glow_squid_spawn_egg:{u:.46875,v:.375,tileIndex:1566},goat_spawn_egg:{u:.484375,v:.375,tileIndex:1567},guardian_spawn_egg:{u:.390625,v:.390625,tileIndex:1625},hoglin_spawn_egg:{u:.390625,v:.40625,tileIndex:1689},horse_spawn_egg:{u:.390625,v:.421875,tileIndex:1753},husk_spawn_egg:{u:.390625,v:.4375,tileIndex:1817},iron_golem_spawn_egg:{u:.390625,v:.453125,tileIndex:1881},leaf_litter:{u:.390625,v:.46875,tileIndex:1945},llama_spawn_egg:{u:.390625,v:.484375,tileIndex:2009},magma_cube_spawn_egg:{u:.40625,v:.390625,tileIndex:1626},mooshroom_spawn_egg:{u:.421875,v:.390625,tileIndex:1627},mule_spawn_egg:{u:.4375,v:.390625,tileIndex:1628},ocelot_spawn_egg:{u:.453125,v:.390625,tileIndex:1629},panda_spawn_egg:{u:.46875,v:.390625,tileIndex:1630},parrot_spawn_egg:{u:.484375,v:.390625,tileIndex:1631},phantom_spawn_egg:{u:.40625,v:.40625,tileIndex:1690},pig_spawn_egg:{u:.40625,v:.421875,tileIndex:1754},piglin_brute_spawn_egg:{u:.40625,v:.4375,tileIndex:1818},piglin_spawn_egg:{u:.40625,v:.453125,tileIndex:1882},pillager_spawn_egg:{u:.40625,v:.46875,tileIndex:1946},polar_bear_spawn_egg:{u:.40625,v:.484375,tileIndex:2010},pufferfish_spawn_egg:{u:.421875,v:.40625,tileIndex:1691},rabbit_spawn_egg:{u:.4375,v:.40625,tileIndex:1692},ravager_spawn_egg:{u:.453125,v:.40625,tileIndex:1693},salmon_spawn_egg:{u:.46875,v:.40625,tileIndex:1694},sheep_spawn_egg:{u:.484375,v:.40625,tileIndex:1695},shulker_spawn_egg:{u:.421875,v:.421875,tileIndex:1755},silverfish_spawn_egg:{u:.421875,v:.4375,tileIndex:1819},skeleton_horse_spawn_egg:{u:.421875,v:.453125,tileIndex:1883},skeleton_spawn_egg:{u:.421875,v:.46875,tileIndex:1947},slime_spawn_egg:{u:.421875,v:.484375,tileIndex:2011},sniffer_spawn_egg:{u:.4375,v:.421875,tileIndex:1756},snow_golem_spawn_egg:{u:.453125,v:.421875,tileIndex:1757},spider_spawn_egg:{u:.46875,v:.421875,tileIndex:1758},squid_spawn_egg:{u:.484375,v:.421875,tileIndex:1759},stray_spawn_egg:{u:.4375,v:.4375,tileIndex:1820},strider_spawn_egg:{u:.4375,v:.453125,tileIndex:1884},tadpole_spawn_egg:{u:.4375,v:.46875,tileIndex:1948},trader_llama_spawn_egg:{u:.4375,v:.484375,tileIndex:2012},tropical_fish_spawn_egg:{u:.453125,v:.4375,tileIndex:1821},turtle_spawn_egg:{u:.46875,v:.4375,tileIndex:1822},vex_spawn_egg:{u:.484375,v:.4375,tileIndex:1823},villager_spawn_egg:{u:.453125,v:.453125,tileIndex:1885},vindicator_spawn_egg:{u:.453125,v:.46875,tileIndex:1949},wandering_trader_spawn_egg:{u:.453125,v:.484375,tileIndex:2013},warden_spawn_egg:{u:.46875,v:.453125,tileIndex:1886},wildflowers:{u:.484375,v:.453125,tileIndex:1887},witch_spawn_egg:{u:.46875,v:.46875,tileIndex:1950},wither_skeleton_spawn_egg:{u:.46875,v:.484375,tileIndex:2014},wither_spawn_egg:{u:.484375,v:.46875,tileIndex:1951},wolf_spawn_egg:{u:.484375,v:.484375,tileIndex:2015},zoglin_spawn_egg:{u:.5,v:0,tileIndex:32},zombie_horse_spawn_egg:{u:.515625,v:0,tileIndex:33},zombie_spawn_egg:{u:.53125,v:0,tileIndex:34},zombie_villager_spawn_egg:{u:.546875,v:0,tileIndex:35},zombified_piglin_spawn_egg:{u:.5625,v:0,tileIndex:36},black_harness:{u:.578125,v:0,tileIndex:37},blue_harness:{u:.59375,v:0,tileIndex:38},brown_harness:{u:.609375,v:0,tileIndex:39},cyan_harness:{u:.625,v:0,tileIndex:40},gray_harness:{u:.640625,v:0,tileIndex:41},green_harness:{u:.65625,v:0,tileIndex:42},happy_ghast_spawn_egg:{u:.671875,v:0,tileIndex:43},light_blue_harness:{u:.6875,v:0,tileIndex:44},light_gray_harness:{u:.703125,v:0,tileIndex:45},lime_harness:{u:.71875,v:0,tileIndex:46},magenta_harness:{u:.734375,v:0,tileIndex:47},music_disc_tears:{u:.75,v:0,tileIndex:48},orange_harness:{u:.765625,v:0,tileIndex:49},pink_harness:{u:.78125,v:0,tileIndex:50},purple_harness:{u:.796875,v:0,tileIndex:51},red_harness:{u:.8125,v:0,tileIndex:52},white_harness:{u:.828125,v:0,tileIndex:53},yellow_harness:{u:.84375,v:0,tileIndex:54},music_disc_lava_chicken:{u:.859375,v:0,tileIndex:55},copper_axe:{u:.875,v:0,tileIndex:56},copper_boots:{u:.890625,v:0,tileIndex:57},copper_chain:{u:.90625,v:0,tileIndex:58},copper_chestplate:{u:.921875,v:0,tileIndex:59},copper_golem_spawn_egg:{u:.9375,v:0,tileIndex:60},copper_helmet:{u:.953125,v:0,tileIndex:61},copper_hoe:{u:.96875,v:0,tileIndex:62},copper_horse_armor:{u:.984375,v:0,tileIndex:63},copper_lantern:{u:.5,v:.015625,tileIndex:96},copper_leggings:{u:.515625,v:.015625,tileIndex:97},copper_nugget:{u:.53125,v:.015625,tileIndex:98},copper_pickaxe:{u:.546875,v:.015625,tileIndex:99},copper_shovel:{u:.5625,v:.015625,tileIndex:100},copper_sword:{u:.578125,v:.015625,tileIndex:101},exposed_copper_chain:{u:.59375,v:.015625,tileIndex:102},exposed_copper_lantern:{u:.609375,v:.015625,tileIndex:103},iron_chain:{u:.625,v:.015625,tileIndex:104},oxidized_copper_chain:{u:.640625,v:.015625,tileIndex:105},oxidized_copper_lantern:{u:.65625,v:.015625,tileIndex:106},weathered_copper_chain:{u:.671875,v:.015625,tileIndex:107},weathered_copper_lantern:{u:.6875,v:.015625,tileIndex:108},camel_husk_spawn_egg:{u:.703125,v:.015625,tileIndex:109},copper_nautilus_armor:{u:.71875,v:.015625,tileIndex:110},copper_spear:{u:.734375,v:.015625,tileIndex:111},copper_spear_in_hand:{u:.75,v:.015625,tileIndex:112},diamond_nautilus_armor:{u:.765625,v:.015625,tileIndex:113},diamond_spear:{u:.78125,v:.015625,tileIndex:114},diamond_spear_in_hand:{u:.796875,v:.015625,tileIndex:115},golden_nautilus_armor:{u:.8125,v:.015625,tileIndex:116},golden_spear:{u:.828125,v:.015625,tileIndex:117},golden_spear_in_hand:{u:.84375,v:.015625,tileIndex:118},iron_nautilus_armor:{u:.859375,v:.015625,tileIndex:119},iron_spear:{u:.875,v:.015625,tileIndex:120},iron_spear_in_hand:{u:.890625,v:.015625,tileIndex:121},leather_horse_armor_overlay:{u:.90625,v:.015625,tileIndex:122},nautilus_spawn_egg:{u:.921875,v:.015625,tileIndex:123},netherite_horse_armor:{u:.9375,v:.015625,tileIndex:124},netherite_nautilus_armor:{u:.953125,v:.015625,tileIndex:125},netherite_spear:{u:.96875,v:.015625,tileIndex:126},netherite_spear_in_hand:{u:.984375,v:.015625,tileIndex:127},parched_spawn_egg:{u:.5,v:.03125,tileIndex:160},stone_spear:{u:.515625,v:.03125,tileIndex:161},stone_spear_in_hand:{u:.53125,v:.03125,tileIndex:162},wooden_spear:{u:.546875,v:.03125,tileIndex:163},wooden_spear_in_hand:{u:.5625,v:.03125,tileIndex:164},zombie_nautilus_spawn_egg:{u:.578125,v:.03125,tileIndex:165}}},legacy:{suSv:.03125,tileSize:16,width:512,height:512,textures:{"1.8/beef_cooked":{u:0,v:0,tileIndex:0},"1.8/book_enchanted":{u:.03125,v:0,tileIndex:1},"1.8/door_iron":{u:0,v:.03125,tileIndex:32},"1.8/door_wood":{u:.03125,v:.03125,tileIndex:33},"1.8/fireworks_charge":{u:.0625,v:0,tileIndex:2},"1.8/leather_boots":{u:.09375,v:0,tileIndex:3},"1.8/leather_helmet":{u:.0625,v:.03125,tileIndex:34},"1.8/leather_leggings":{u:.09375,v:.03125,tileIndex:35},"1.8/potion_overlay":{u:0,v:.0625,tileIndex:64},"1.8/spawn_egg":{u:0,v:.09375,tileIndex:96},"1.9/book_enchanted":{u:.03125,v:.0625,tileIndex:65},"1.9/fish_pufferfish_raw":{u:.03125,v:.09375,tileIndex:97},"1.9/fish_salmon_cooked":{u:.0625,v:.0625,tileIndex:66},"1.9/fish_salmon_raw":{u:.0625,v:.09375,tileIndex:98},"1.9/name_tag":{u:.09375,v:.0625,tileIndex:67},"1.9/porkchop_cooked":{u:.09375,v:.09375,tileIndex:99},"1.11/map_empty":{u:.125,v:0,tileIndex:4},"1.11/map_filled":{u:.15625,v:0,tileIndex:5},"1.14/acacia_boat":{u:.1875,v:0,tileIndex:6},"1.14/apple":{u:.21875,v:0,tileIndex:7},"1.14/armor_stand":{u:.125,v:.03125,tileIndex:36},"1.14/baked_potato":{u:.15625,v:.03125,tileIndex:37},"1.14/barrier":{u:.1875,v:.03125,tileIndex:38},"1.14/beef":{u:.21875,v:.03125,tileIndex:39},"1.14/beetroot":{u:.125,v:.0625,tileIndex:68},"1.14/beetroot_seeds":{u:.15625,v:.0625,tileIndex:69},"1.14/beetroot_soup":{u:.1875,v:.0625,tileIndex:70},"1.14/birch_boat":{u:.21875,v:.0625,tileIndex:71},"1.14/bone":{u:.125,v:.09375,tileIndex:100},"1.14/bone_meal":{u:.15625,v:.09375,tileIndex:101},"1.14/book":{u:.1875,v:.09375,tileIndex:102},"1.14/bowl":{u:.21875,v:.09375,tileIndex:103},"1.14/bread":{u:0,v:.125,tileIndex:128},"1.14/brewing_stand":{u:0,v:.15625,tileIndex:160},"1.14/brick":{u:0,v:.1875,tileIndex:192},"1.14/broken_elytra":{u:0,v:.21875,tileIndex:224},"1.14/bucket":{u:.03125,v:.125,tileIndex:129},"1.14/cake":{u:.03125,v:.15625,tileIndex:161},"1.14/carrot":{u:.03125,v:.1875,tileIndex:193},"1.14/carrot_on_a_stick":{u:.03125,v:.21875,tileIndex:225},"1.14/cauldron":{u:.0625,v:.125,tileIndex:130},"1.14/chainmail_boots":{u:.0625,v:.15625,tileIndex:162},"1.14/chainmail_chestplate":{u:.0625,v:.1875,tileIndex:194},"1.14/chainmail_helmet":{u:.0625,v:.21875,tileIndex:226},"1.14/chainmail_leggings":{u:.09375,v:.125,tileIndex:131},"1.14/charcoal":{u:.09375,v:.15625,tileIndex:163},"1.14/chest_minecart":{u:.09375,v:.1875,tileIndex:195},"1.14/chicken":{u:.09375,v:.21875,tileIndex:227},"1.14/chorus_fruit":{u:.125,v:.125,tileIndex:132},"1.14/clay_ball":{u:.125,v:.15625,tileIndex:164},"1.14/coal":{u:.125,v:.1875,tileIndex:196},"1.14/cocoa_beans":{u:.125,v:.21875,tileIndex:228},"1.14/cod_bucket":{u:.15625,v:.125,tileIndex:133},"1.14/command_block_minecart":{u:.1875,v:.125,tileIndex:134},"1.14/comparator":{u:.21875,v:.125,tileIndex:135},"1.14/cooked_beef":{u:.15625,v:.15625,tileIndex:165},"1.14/cooked_chicken":{u:.15625,v:.1875,tileIndex:197},"1.14/cooked_mutton":{u:.15625,v:.21875,tileIndex:229},"1.14/cooked_porkchop":{u:.1875,v:.15625,tileIndex:166},"1.14/cooked_rabbit":{u:.21875,v:.15625,tileIndex:167},"1.14/cookie":{u:.1875,v:.1875,tileIndex:198},"1.14/cyan_dye":{u:.1875,v:.21875,tileIndex:230},"1.14/dark_oak_boat":{u:.21875,v:.1875,tileIndex:199},"1.14/diamond":{u:.21875,v:.21875,tileIndex:231},"1.14/diamond_boots":{u:.25,v:0,tileIndex:8},"1.14/diamond_chestplate":{u:.28125,v:0,tileIndex:9},"1.14/diamond_helmet":{u:.3125,v:0,tileIndex:10},"1.14/diamond_horse_armor":{u:.34375,v:0,tileIndex:11},"1.14/diamond_leggings":{u:.375,v:0,tileIndex:12},"1.14/diamond_pickaxe":{u:.40625,v:0,tileIndex:13},"1.14/diamond_shovel":{u:.4375,v:0,tileIndex:14},"1.14/diamond_sword":{u:.46875,v:0,tileIndex:15},"1.14/dragon_breath":{u:.25,v:.03125,tileIndex:40},"1.14/egg":{u:.28125,v:.03125,tileIndex:41},"1.14/elytra":{u:.3125,v:.03125,tileIndex:42},"1.14/emerald":{u:.34375,v:.03125,tileIndex:43},"1.14/enchanted_book":{u:.375,v:.03125,tileIndex:44},"1.14/end_crystal":{u:.40625,v:.03125,tileIndex:45},"1.14/ender_eye":{u:.4375,v:.03125,tileIndex:46},"1.14/ender_pearl":{u:.46875,v:.03125,tileIndex:47},"1.14/experience_bottle":{u:.25,v:.0625,tileIndex:72},"1.14/feather":{u:.28125,v:.0625,tileIndex:73},"1.14/fermented_spider_eye":{u:.3125,v:.0625,tileIndex:74},"1.14/filled_map":{u:.34375,v:.0625,tileIndex:75},"1.14/fire_charge":{u:.375,v:.0625,tileIndex:76},"1.14/firework_rocket":{u:.40625,v:.0625,tileIndex:77},"1.14/fishing_rod":{u:.4375,v:.0625,tileIndex:78},"1.14/fishing_rod_cast":{u:.46875,v:.0625,tileIndex:79},"1.14/flint":{u:.25,v:.09375,tileIndex:104},"1.14/flint_and_steel":{u:.28125,v:.09375,tileIndex:105},"1.14/flower_pot":{u:.3125,v:.09375,tileIndex:106},"1.14/furnace_minecart":{u:.34375,v:.09375,tileIndex:107},"1.14/ghast_tear":{u:.375,v:.09375,tileIndex:108},"1.14/glass_bottle":{u:.40625,v:.09375,tileIndex:109},"1.14/glistering_melon_slice":{u:.4375,v:.09375,tileIndex:110},"1.14/glowstone_dust":{u:.46875,v:.09375,tileIndex:111},"1.14/gold_ingot":{u:.25,v:.125,tileIndex:136},"1.14/gold_nugget":{u:.28125,v:.125,tileIndex:137},"1.14/golden_apple":{u:.3125,v:.125,tileIndex:138},"1.14/golden_axe":{u:.34375,v:.125,tileIndex:139},"1.14/golden_boots":{u:.375,v:.125,tileIndex:140},"1.14/golden_carrot":{u:.40625,v:.125,tileIndex:141},"1.14/golden_chestplate":{u:.4375,v:.125,tileIndex:142},"1.14/golden_helmet":{u:.46875,v:.125,tileIndex:143},"1.14/golden_hoe":{u:.25,v:.15625,tileIndex:168},"1.14/golden_horse_armor":{u:.28125,v:.15625,tileIndex:169},"1.14/golden_leggings":{u:.3125,v:.15625,tileIndex:170},"1.14/golden_pickaxe":{u:.34375,v:.15625,tileIndex:171},"1.14/golden_shovel":{u:.375,v:.15625,tileIndex:172},"1.14/golden_sword":{u:.40625,v:.15625,tileIndex:173},"1.14/gray_dye":{u:.4375,v:.15625,tileIndex:174},"1.14/gunpowder":{u:.46875,v:.15625,tileIndex:175},"1.14/hopper":{u:.25,v:.1875,tileIndex:200},"1.14/hopper_minecart":{u:.28125,v:.1875,tileIndex:201},"1.14/ink_sac":{u:.3125,v:.1875,tileIndex:202},"1.14/iron_boots":{u:.34375,v:.1875,tileIndex:203},"1.14/iron_chestplate":{u:.375,v:.1875,tileIndex:204},"1.14/iron_helmet":{u:.40625,v:.1875,tileIndex:205},"1.14/iron_horse_armor":{u:.4375,v:.1875,tileIndex:206},"1.14/iron_ingot":{u:.46875,v:.1875,tileIndex:207},"1.14/iron_leggings":{u:.25,v:.21875,tileIndex:232},"1.14/iron_pickaxe":{u:.28125,v:.21875,tileIndex:233},"1.14/iron_shovel":{u:.3125,v:.21875,tileIndex:234},"1.14/iron_sword":{u:.34375,v:.21875,tileIndex:235},"1.14/item_frame":{u:.375,v:.21875,tileIndex:236},"1.14/jungle_boat":{u:.40625,v:.21875,tileIndex:237},"1.14/knowledge_book":{u:.4375,v:.21875,tileIndex:238},"1.14/lapis_lazuli":{u:.46875,v:.21875,tileIndex:239},"1.14/lava_bucket":{u:0,v:.25,tileIndex:256},"1.14/lead":{u:0,v:.28125,tileIndex:288},"1.14/leather":{u:0,v:.3125,tileIndex:320},"1.14/leather_boots":{u:0,v:.34375,tileIndex:352},"1.14/leather_boots_overlay":{u:0,v:.375,tileIndex:384},"1.14/leather_chestplate":{u:0,v:.40625,tileIndex:416},"1.14/leather_chestplate_overlay":{u:0,v:.4375,tileIndex:448},"1.14/leather_helmet":{u:0,v:.46875,tileIndex:480},"1.14/leather_helmet_overlay":{u:.03125,v:.25,tileIndex:257},"1.14/leather_leggings":{u:.03125,v:.28125,tileIndex:289},"1.14/leather_leggings_overlay":{u:.03125,v:.3125,tileIndex:321},"1.14/light_blue_dye":{u:.03125,v:.34375,tileIndex:353},"1.14/light_gray_dye":{u:.03125,v:.375,tileIndex:385},"1.14/lime_dye":{u:.03125,v:.40625,tileIndex:417},"1.14/lingering_potion":{u:.03125,v:.4375,tileIndex:449},"1.14/magenta_dye":{u:.03125,v:.46875,tileIndex:481},"1.14/magma_cream":{u:.0625,v:.25,tileIndex:258},"1.14/map":{u:.0625,v:.28125,tileIndex:290},"1.14/melon_slice":{u:.0625,v:.3125,tileIndex:322},"1.14/milk_bucket":{u:.0625,v:.34375,tileIndex:354},"1.14/minecart":{u:.0625,v:.375,tileIndex:386},"1.14/mushroom_stew":{u:.0625,v:.40625,tileIndex:418},"1.14/music_disc_11":{u:.0625,v:.4375,tileIndex:450},"1.14/mutton":{u:.0625,v:.46875,tileIndex:482},"1.14/name_tag":{u:.09375,v:.25,tileIndex:259},"1.14/nether_brick":{u:.09375,v:.28125,tileIndex:291},"1.14/nether_star":{u:.09375,v:.3125,tileIndex:323},"1.14/oak_boat":{u:.09375,v:.34375,tileIndex:355},"1.14/orange_dye":{u:.09375,v:.375,tileIndex:387},"1.14/painting":{u:.09375,v:.40625,tileIndex:419},"1.14/paper":{u:.09375,v:.4375,tileIndex:451},"1.14/phantom_membrane":{u:.09375,v:.46875,tileIndex:483},"1.14/pink_dye":{u:.125,v:.25,tileIndex:260},"1.14/poisonous_potato":{u:.125,v:.28125,tileIndex:292},"1.14/popped_chorus_fruit":{u:.125,v:.3125,tileIndex:324},"1.14/porkchop":{u:.125,v:.34375,tileIndex:356},"1.14/potato":{u:.125,v:.375,tileIndex:388},"1.14/potion":{u:.125,v:.40625,tileIndex:420},"1.14/potion_overlay":{u:.125,v:.4375,tileIndex:452},"1.14/prismarine_crystals":{u:.125,v:.46875,tileIndex:484},"1.14/prismarine_shard":{u:.15625,v:.25,tileIndex:261},"1.14/pufferfish_bucket":{u:.15625,v:.28125,tileIndex:293},"1.14/pumpkin_pie":{u:.15625,v:.3125,tileIndex:325},"1.14/purple_dye":{u:.15625,v:.34375,tileIndex:357},"1.14/quartz":{u:.15625,v:.375,tileIndex:389},"1.14/rabbit":{u:.15625,v:.40625,tileIndex:421},"1.14/rabbit_foot":{u:.15625,v:.4375,tileIndex:453},"1.14/rabbit_hide":{u:.15625,v:.46875,tileIndex:485},"1.14/rabbit_stew":{u:.1875,v:.25,tileIndex:262},"1.14/redstone":{u:.1875,v:.28125,tileIndex:294},"1.14/repeater":{u:.1875,v:.3125,tileIndex:326},"1.14/rotten_flesh":{u:.1875,v:.34375,tileIndex:358},"1.14/saddle":{u:.1875,v:.375,tileIndex:390},"1.14/salmon_bucket":{u:.1875,v:.40625,tileIndex:422},"1.14/shears":{u:.1875,v:.4375,tileIndex:454},"1.14/shulker_shell":{u:.1875,v:.46875,tileIndex:486},"1.14/slime_ball":{u:.21875,v:.25,tileIndex:263},"1.14/snowball":{u:.21875,v:.28125,tileIndex:295},"1.14/spectral_arrow":{u:.21875,v:.3125,tileIndex:327},"1.14/spider_eye":{u:.21875,v:.34375,tileIndex:359},"1.14/splash_potion":{u:.21875,v:.375,tileIndex:391},"1.14/spruce_boat":{u:.21875,v:.40625,tileIndex:423},"1.14/stone_pickaxe":{u:.21875,v:.4375,tileIndex:455},"1.14/stone_shovel":{u:.21875,v:.46875,tileIndex:487},"1.14/stone_sword":{u:.25,v:.25,tileIndex:264},"1.14/string":{u:.25,v:.28125,tileIndex:296},"1.14/structure_void":{u:.25,v:.3125,tileIndex:328},"1.14/sugar":{u:.25,v:.34375,tileIndex:360},"1.14/sugar_cane":{u:.25,v:.375,tileIndex:392},"1.14/tipped_arrow_head":{u:.25,v:.40625,tileIndex:424},"1.14/tnt_minecart":{u:.25,v:.4375,tileIndex:456},"1.14/totem_of_undying":{u:.25,v:.46875,tileIndex:488},"1.14/tropical_fish_bucket":{u:.28125,v:.25,tileIndex:265},"1.14/water_bucket":{u:.3125,v:.25,tileIndex:266},"1.14/wheat":{u:.34375,v:.25,tileIndex:267},"1.14/wooden_pickaxe":{u:.375,v:.25,tileIndex:268},"1.14/wooden_shovel":{u:.40625,v:.25,tileIndex:269},"1.14/wooden_sword":{u:.4375,v:.25,tileIndex:270},"1.14/writable_book":{u:.46875,v:.25,tileIndex:271},"1.14/written_book":{u:.28125,v:.28125,tileIndex:297},"1.14.1/iron_horse_armor":{u:.28125,v:.3125,tileIndex:329},"1.14.1/leather_horse_armor":{u:.28125,v:.34375,tileIndex:361},"1.16/diamond_boots":{u:.28125,v:.375,tileIndex:393},"1.16/diamond_helmet":{u:.28125,v:.40625,tileIndex:425},"1.16/diamond_leggings":{u:.28125,v:.4375,tileIndex:457},"1.16/diamond_pickaxe":{u:.28125,v:.46875,tileIndex:489},"1.16/diamond_shovel":{u:.3125,v:.28125,tileIndex:298},"1.16/diamond_sword":{u:.34375,v:.28125,tileIndex:299},"1.16/wooden_hoe":{u:.375,v:.28125,tileIndex:300},"1.16/wooden_pickaxe":{u:.40625,v:.28125,tileIndex:301},"1.17/clock_00":{u:.4375,v:.28125,tileIndex:302},"1.17/clock_01":{u:.46875,v:.28125,tileIndex:303},"1.17/clock_02":{u:.3125,v:.3125,tileIndex:330},"1.17/clock_03":{u:.3125,v:.34375,tileIndex:362},"1.17/clock_04":{u:.3125,v:.375,tileIndex:394},"1.17/clock_05":{u:.3125,v:.40625,tileIndex:426},"1.17/clock_06":{u:.3125,v:.4375,tileIndex:458},"1.17/clock_07":{u:.3125,v:.46875,tileIndex:490},"1.17/clock_08":{u:.34375,v:.3125,tileIndex:331},"1.17/clock_09":{u:.375,v:.3125,tileIndex:332},"1.17/clock_10":{u:.40625,v:.3125,tileIndex:333},"1.17/clock_11":{u:.4375,v:.3125,tileIndex:334},"1.17/clock_12":{u:.46875,v:.3125,tileIndex:335},"1.17/clock_13":{u:.34375,v:.34375,tileIndex:363},"1.17/clock_14":{u:.34375,v:.375,tileIndex:395},"1.17/clock_15":{u:.34375,v:.40625,tileIndex:427},"1.17/clock_16":{u:.34375,v:.4375,tileIndex:459},"1.17/clock_17":{u:.34375,v:.46875,tileIndex:491},"1.17/clock_18":{u:.375,v:.34375,tileIndex:364},"1.17/clock_19":{u:.40625,v:.34375,tileIndex:365},"1.17/clock_20":{u:.4375,v:.34375,tileIndex:366},"1.17/clock_21":{u:.46875,v:.34375,tileIndex:367},"1.17/clock_22":{u:.375,v:.375,tileIndex:396},"1.17/clock_23":{u:.375,v:.40625,tileIndex:428},"1.17/clock_24":{u:.375,v:.4375,tileIndex:460},"1.17/clock_25":{u:.375,v:.46875,tileIndex:492},"1.17/clock_26":{u:.40625,v:.375,tileIndex:397},"1.17/clock_27":{u:.4375,v:.375,tileIndex:398},"1.17/clock_28":{u:.46875,v:.375,tileIndex:399},"1.17/clock_29":{u:.40625,v:.40625,tileIndex:429},"1.17/clock_30":{u:.40625,v:.4375,tileIndex:461},"1.17/clock_31":{u:.40625,v:.46875,tileIndex:493},"1.17/clock_32":{u:.4375,v:.40625,tileIndex:430},"1.17/clock_33":{u:.46875,v:.40625,tileIndex:431},"1.17/clock_34":{u:.4375,v:.4375,tileIndex:462},"1.17/clock_35":{u:.4375,v:.46875,tileIndex:494},"1.17/clock_36":{u:.46875,v:.4375,tileIndex:463},"1.17/clock_37":{u:.46875,v:.46875,tileIndex:495},"1.17/clock_38":{u:.5,v:0,tileIndex:16},"1.17/clock_39":{u:.53125,v:0,tileIndex:17},"1.17/clock_40":{u:.5625,v:0,tileIndex:18},"1.17/clock_41":{u:.59375,v:0,tileIndex:19},"1.17/clock_42":{u:.625,v:0,tileIndex:20},"1.17/clock_43":{u:.65625,v:0,tileIndex:21},"1.17/clock_44":{u:.6875,v:0,tileIndex:22},"1.17/clock_45":{u:.71875,v:0,tileIndex:23},"1.17/clock_46":{u:.75,v:0,tileIndex:24},"1.17/clock_47":{u:.78125,v:0,tileIndex:25},"1.17/clock_48":{u:.8125,v:0,tileIndex:26},"1.17/clock_49":{u:.84375,v:0,tileIndex:27},"1.17/clock_50":{u:.875,v:0,tileIndex:28},"1.17/clock_51":{u:.90625,v:0,tileIndex:29},"1.17/clock_52":{u:.9375,v:0,tileIndex:30},"1.17/clock_53":{u:.96875,v:0,tileIndex:31},"1.17/clock_54":{u:.5,v:.03125,tileIndex:48},"1.17/clock_55":{u:.53125,v:.03125,tileIndex:49},"1.17/clock_56":{u:.5625,v:.03125,tileIndex:50},"1.17/clock_57":{u:.59375,v:.03125,tileIndex:51},"1.17/clock_58":{u:.625,v:.03125,tileIndex:52},"1.17/clock_59":{u:.65625,v:.03125,tileIndex:53},"1.17/clock_60":{u:.6875,v:.03125,tileIndex:54},"1.17/clock_61":{u:.71875,v:.03125,tileIndex:55},"1.17/clock_62":{u:.75,v:.03125,tileIndex:56},"1.17/clock_63":{u:.78125,v:.03125,tileIndex:57},"1.17/compass_00":{u:.8125,v:.03125,tileIndex:58},"1.17/compass_01":{u:.84375,v:.03125,tileIndex:59},"1.17/compass_02":{u:.875,v:.03125,tileIndex:60},"1.17/compass_03":{u:.90625,v:.03125,tileIndex:61},"1.17/compass_04":{u:.9375,v:.03125,tileIndex:62},"1.17/compass_05":{u:.96875,v:.03125,tileIndex:63},"1.17/compass_06":{u:.5,v:.0625,tileIndex:80},"1.17/compass_07":{u:.53125,v:.0625,tileIndex:81},"1.17/compass_08":{u:.5625,v:.0625,tileIndex:82},"1.17/compass_09":{u:.59375,v:.0625,tileIndex:83},"1.17/compass_10":{u:.625,v:.0625,tileIndex:84},"1.17/compass_11":{u:.65625,v:.0625,tileIndex:85},"1.17/compass_12":{u:.6875,v:.0625,tileIndex:86},"1.17/compass_13":{u:.71875,v:.0625,tileIndex:87},"1.17/compass_14":{u:.75,v:.0625,tileIndex:88},"1.17/compass_15":{u:.78125,v:.0625,tileIndex:89},"1.17/compass_16":{u:.8125,v:.0625,tileIndex:90},"1.17/compass_17":{u:.84375,v:.0625,tileIndex:91},"1.17/compass_18":{u:.875,v:.0625,tileIndex:92},"1.17/compass_19":{u:.90625,v:.0625,tileIndex:93},"1.17/compass_20":{u:.9375,v:.0625,tileIndex:94},"1.17/compass_21":{u:.96875,v:.0625,tileIndex:95},"1.17/compass_22":{u:.5,v:.09375,tileIndex:112},"1.17/compass_23":{u:.53125,v:.09375,tileIndex:113},"1.17/compass_24":{u:.5625,v:.09375,tileIndex:114},"1.17/compass_25":{u:.59375,v:.09375,tileIndex:115},"1.17/compass_26":{u:.625,v:.09375,tileIndex:116},"1.17/compass_27":{u:.65625,v:.09375,tileIndex:117},"1.17/compass_28":{u:.6875,v:.09375,tileIndex:118},"1.17/compass_29":{u:.71875,v:.09375,tileIndex:119},"1.17/compass_30":{u:.75,v:.09375,tileIndex:120},"1.17/compass_31":{u:.78125,v:.09375,tileIndex:121},"1.17/jungle_door":{u:.8125,v:.09375,tileIndex:122},"1.17/sugar_cane":{u:.84375,v:.09375,tileIndex:123},"1.17.1/spyglass_model":{u:.875,v:.09375,tileIndex:124},"1.18/acacia_door":{u:.90625,v:.09375,tileIndex:125},"1.18/acacia_sign":{u:.9375,v:.09375,tileIndex:126},"1.18/beetroot_seeds":{u:.96875,v:.09375,tileIndex:127},"1.18/birch_sign":{u:.5,v:.125,tileIndex:144},"1.18/campfire":{u:.53125,v:.125,tileIndex:145},"1.18/crimson_sign":{u:.5625,v:.125,tileIndex:146},"1.18/dark_oak_door":{u:.59375,v:.125,tileIndex:147},"1.18/dark_oak_sign":{u:.625,v:.125,tileIndex:148},"1.18/glow_item_frame":{u:.65625,v:.125,tileIndex:149},"1.18/iron_door":{u:.6875,v:.125,tileIndex:150},"1.18/item_frame":{u:.71875,v:.125,tileIndex:151},"1.18/jungle_door":{u:.75,v:.125,tileIndex:152},"1.18/jungle_sign":{u:.78125,v:.125,tileIndex:153},"1.18/melon_seeds":{u:.8125,v:.125,tileIndex:154},"1.18/oak_door":{u:.84375,v:.125,tileIndex:155},"1.18/oak_sign":{u:.875,v:.125,tileIndex:156},"1.18/soul_campfire":{u:.90625,v:.125,tileIndex:157},"1.18/spruce_door":{u:.9375,v:.125,tileIndex:158},"1.18/spruce_sign":{u:.96875,v:.125,tileIndex:159},"1.19/acacia_boat":{u:.5,v:.15625,tileIndex:176},"1.19/birch_boat":{u:.53125,v:.15625,tileIndex:177},"1.19/dark_oak_boat":{u:.5625,v:.15625,tileIndex:178},"1.19/jungle_boat":{u:.59375,v:.15625,tileIndex:179},"1.19/oak_boat":{u:.625,v:.15625,tileIndex:180},"1.19/spruce_boat":{u:.65625,v:.15625,tileIndex:181},"1.19.4/empty_armor_slot_boots":{u:.6875,v:.15625,tileIndex:182},"1.19.4/empty_armor_slot_chestplate":{u:.71875,v:.15625,tileIndex:183},"1.19.4/empty_armor_slot_helmet":{u:.75,v:.15625,tileIndex:184},"1.19.4/empty_armor_slot_leggings":{u:.78125,v:.15625,tileIndex:185},"1.19.4/empty_armor_slot_shield":{u:.8125,v:.15625,tileIndex:186},"1.20/dune_armor_trim_smithing_template":{u:.84375,v:.15625,tileIndex:187},"1.20/sentry_armor_trim_smithing_template":{u:.875,v:.15625,tileIndex:188},"1.20.5/trial_key":{u:.90625,v:.15625,tileIndex:189},"1.21.2/bundle":{u:.9375,v:.15625,tileIndex:190},"1.21.2/creeper_banner_pattern":{u:.96875,v:.15625,tileIndex:191},"1.21.2/flow_banner_pattern":{u:.5,v:.1875,tileIndex:208},"1.21.2/flower_banner_pattern":{u:.53125,v:.1875,tileIndex:209},"1.21.2/globe_banner_pattern":{u:.5625,v:.1875,tileIndex:210},"1.21.2/guster_banner_pattern":{u:.59375,v:.1875,tileIndex:211},"1.21.2/mojang_banner_pattern":{u:.625,v:.1875,tileIndex:212},"1.21.2/piglin_banner_pattern":{u:.65625,v:.1875,tileIndex:213},"1.21.2/skull_banner_pattern":{u:.6875,v:.1875,tileIndex:214},"1.21.4/black_bundle_open_front":{u:.71875,v:.1875,tileIndex:215},"1.21.4/blue_bundle_open_front":{u:.75,v:.1875,tileIndex:216},"1.21.4/brown_bundle_open_front":{u:.78125,v:.1875,tileIndex:217},"1.21.4/bundle_open_front":{u:.8125,v:.1875,tileIndex:218},"1.21.4/cyan_bundle_open_front":{u:.84375,v:.1875,tileIndex:219},"1.21.4/gray_bundle_open_front":{u:.875,v:.1875,tileIndex:220},"1.21.4/green_bundle_open_front":{u:.90625,v:.1875,tileIndex:221},"1.21.4/light_blue_bundle_open_front":{u:.9375,v:.1875,tileIndex:222},"1.21.4/light_gray_bundle_open_front":{u:.96875,v:.1875,tileIndex:223},"1.21.4/lime_bundle_open_front":{u:.5,v:.21875,tileIndex:240},"1.21.4/magenta_bundle_open_front":{u:.53125,v:.21875,tileIndex:241},"1.21.4/orange_bundle_open_front":{u:.5625,v:.21875,tileIndex:242},"1.21.4/pale_oak_chest_boat":{u:.59375,v:.21875,tileIndex:243},"1.21.4/pale_oak_hanging_sign":{u:.625,v:.21875,tileIndex:244},"1.21.4/pale_oak_sign":{u:.65625,v:.21875,tileIndex:245},"1.21.4/pink_bundle_open_front":{u:.6875,v:.21875,tileIndex:246},"1.21.4/purple_bundle_open_front":{u:.71875,v:.21875,tileIndex:247},"1.21.4/red_bundle_open_front":{u:.75,v:.21875,tileIndex:248},"1.21.4/white_bundle_open_front":{u:.78125,v:.21875,tileIndex:249},"1.21.4/yellow_bundle_open_front":{u:.8125,v:.21875,tileIndex:250}}}};var N6={"1.7.10":{},"1.8":{},"1.8.1":{},"1.8.2":{},"1.8.3":{},"1.8.4":{},"1.8.5":{},"1.8.6":{},"1.8.7":{},"1.8.8":{},"1.8.9":{},"1.9":{},"1.9.1":{},"1.9.2":{},"1.9.3":{},"1.9.4":{},"1.10":{},"1.10.1":{},"1.10.2":{},"1.11":{},"1.11.1":{},"1.11.2":{},"1.12":{},"1.12.1":{},"1.12.2":{},"1.13":{},"1.13.1":{},"1.13.2":{},"1.14":{},"1.14.1":{},"1.14.2":{},"1.14.3":{},"1.14.4":{},"1.15":{},"1.15.1":{},"1.15.2":{},"1.16":{},"1.16.1":{},"1.16.2":{},"1.16.3":{},"1.16.4":{},"1.16.5":{},"1.17":{},"1.17.1":{},"1.18":{},"1.18.1":{},"1.18.2":{},"1.19":{},"1.19.1":{},"1.19.2":{},"1.19.3":{},"1.19.4":{},"1.20":{},"1.20.1":{},"1.20.2":{},"1.20.3":{},"1.20.4":{},"1.20.5":{},"1.20.6":{},"1.21":{},"1.21.1":{},"1.21.2":{},"1.21.3":{},"1.21.4":{},"1.21.5-pre2":{},"1.21.5-pre3":{},"1.21.5-rc1":{},"1.21.5-rc2":{},"1.21.5":{},"1.21.6-pre1":{},"1.21.6-pre2":{},"1.21.6-pre3":{},"1.21.6-rc1":{},"1.21.6":{},"1.21.7-rc2":{},"1.21.7":{},"1.21.8-rc1":{},"1.21.8":{},"1.21.9-pre2":{},"1.21.9-pre4":{},"1.21.9-rc1":{},"1.21.9":{},"1.21.10-rc1":{},"1.21.10":{},"1.21.11-pre2":{},"1.21.11-pre3":{},latest:{acacia_boat:{model:{type:"minecraft:model",model:"minecraft:item/acacia_boat"}},acacia_button:{model:{type:"minecraft:model",model:"minecraft:block/acacia_button_inventory"}},acacia_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/acacia_chest_boat"}},acacia_door:{model:{type:"minecraft:model",model:"minecraft:item/acacia_door"}},acacia_fence:{model:{type:"minecraft:model",model:"minecraft:block/acacia_fence_inventory"}},acacia_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/acacia_fence_gate"}},acacia_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/acacia_hanging_sign"}},acacia_leaves:{model:{type:"minecraft:model",model:"minecraft:block/acacia_leaves",tints:[{type:"minecraft:constant",value:-12012264}]}},acacia_log:{model:{type:"minecraft:model",model:"minecraft:block/acacia_log"}},acacia_planks:{model:{type:"minecraft:model",model:"minecraft:block/acacia_planks"}},acacia_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/acacia_pressure_plate"}},acacia_sapling:{model:{type:"minecraft:model",model:"minecraft:item/acacia_sapling"}},acacia_sign:{model:{type:"minecraft:model",model:"minecraft:item/acacia_sign"}},acacia_slab:{model:{type:"minecraft:model",model:"minecraft:block/acacia_slab"}},acacia_stairs:{model:{type:"minecraft:model",model:"minecraft:block/acacia_stairs"}},acacia_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/acacia_trapdoor_bottom"}},acacia_wood:{model:{type:"minecraft:model",model:"minecraft:block/acacia_wood"}},activator_rail:{model:{type:"minecraft:model",model:"minecraft:item/activator_rail"}},air:{model:{type:"minecraft:model",model:"minecraft:item/air"}},allay_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/allay_spawn_egg"}},allium:{model:{type:"minecraft:model",model:"minecraft:item/allium"}},amethyst_block:{model:{type:"minecraft:model",model:"minecraft:block/amethyst_block"}},amethyst_cluster:{model:{type:"minecraft:model",model:"minecraft:item/amethyst_cluster"}},amethyst_shard:{model:{type:"minecraft:model",model:"minecraft:item/amethyst_shard"}},ancient_debris:{model:{type:"minecraft:model",model:"minecraft:block/ancient_debris"}},andesite:{model:{type:"minecraft:model",model:"minecraft:block/andesite"}},andesite_slab:{model:{type:"minecraft:model",model:"minecraft:block/andesite_slab"}},andesite_stairs:{model:{type:"minecraft:model",model:"minecraft:block/andesite_stairs"}},andesite_wall:{model:{type:"minecraft:model",model:"minecraft:block/andesite_wall_inventory"}},angler_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/angler_pottery_sherd"}},anvil:{model:{type:"minecraft:model",model:"minecraft:block/anvil"}},apple:{model:{type:"minecraft:model",model:"minecraft:item/apple"}},archer_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/archer_pottery_sherd"}},armadillo_scute:{model:{type:"minecraft:model",model:"minecraft:item/armadillo_scute"}},armadillo_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/armadillo_spawn_egg"}},armor_stand:{model:{type:"minecraft:model",model:"minecraft:item/armor_stand"}},arms_up_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/arms_up_pottery_sherd"}},arrow:{model:{type:"minecraft:model",model:"minecraft:item/arrow"}},axolotl_bucket:{model:{type:"minecraft:model",model:"minecraft:item/axolotl_bucket"}},axolotl_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/axolotl_spawn_egg"}},azalea:{model:{type:"minecraft:model",model:"minecraft:block/azalea"}},azalea_leaves:{model:{type:"minecraft:model",model:"minecraft:block/azalea_leaves"}},azure_bluet:{model:{type:"minecraft:model",model:"minecraft:item/azure_bluet"}},baked_potato:{model:{type:"minecraft:model",model:"minecraft:item/baked_potato"}},bamboo:{model:{type:"minecraft:model",model:"minecraft:item/bamboo"}},bamboo_block:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_block"}},bamboo_button:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_button_inventory"}},bamboo_chest_raft:{model:{type:"minecraft:model",model:"minecraft:item/bamboo_chest_raft"}},bamboo_door:{model:{type:"minecraft:model",model:"minecraft:item/bamboo_door"}},bamboo_fence:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_fence_inventory"}},bamboo_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_fence_gate"}},bamboo_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/bamboo_hanging_sign"}},bamboo_mosaic:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_mosaic"}},bamboo_mosaic_slab:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_mosaic_slab"}},bamboo_mosaic_stairs:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_mosaic_stairs"}},bamboo_planks:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_planks"}},bamboo_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_pressure_plate"}},bamboo_raft:{model:{type:"minecraft:model",model:"minecraft:item/bamboo_raft"}},bamboo_sign:{model:{type:"minecraft:model",model:"minecraft:item/bamboo_sign"}},bamboo_slab:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_slab"}},bamboo_stairs:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_stairs"}},bamboo_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_trapdoor_bottom"}},barrel:{model:{type:"minecraft:model",model:"minecraft:block/barrel"}},barrier:{model:{type:"minecraft:model",model:"minecraft:item/barrier"}},basalt:{model:{type:"minecraft:model",model:"minecraft:block/basalt"}},bat_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/bat_spawn_egg"}},beacon:{model:{type:"minecraft:model",model:"minecraft:block/beacon"}},bedrock:{model:{type:"minecraft:model",model:"minecraft:block/bedrock"}},bee_nest:{model:{type:"minecraft:select",block_state_property:"honey_level",cases:[{model:{type:"minecraft:model",model:"minecraft:block/bee_nest_honey"},when:"5"}],fallback:{type:"minecraft:model",model:"minecraft:block/bee_nest_empty"},property:"minecraft:block_state"}},bee_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/bee_spawn_egg"}},beef:{model:{type:"minecraft:model",model:"minecraft:item/beef"}},beehive:{model:{type:"minecraft:select",block_state_property:"honey_level",cases:[{model:{type:"minecraft:model",model:"minecraft:block/beehive_honey"},when:"5"}],fallback:{type:"minecraft:model",model:"minecraft:block/beehive_empty"},property:"minecraft:block_state"}},beetroot:{model:{type:"minecraft:model",model:"minecraft:item/beetroot"}},beetroot_seeds:{model:{type:"minecraft:model",model:"minecraft:item/beetroot_seeds"}},beetroot_soup:{model:{type:"minecraft:model",model:"minecraft:item/beetroot_soup"}},bell:{model:{type:"minecraft:model",model:"minecraft:item/bell"}},big_dripleaf:{model:{type:"minecraft:model",model:"minecraft:item/big_dripleaf"}},birch_boat:{model:{type:"minecraft:model",model:"minecraft:item/birch_boat"}},birch_button:{model:{type:"minecraft:model",model:"minecraft:block/birch_button_inventory"}},birch_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/birch_chest_boat"}},birch_door:{model:{type:"minecraft:model",model:"minecraft:item/birch_door"}},birch_fence:{model:{type:"minecraft:model",model:"minecraft:block/birch_fence_inventory"}},birch_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/birch_fence_gate"}},birch_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/birch_hanging_sign"}},birch_leaves:{model:{type:"minecraft:model",model:"minecraft:block/birch_leaves",tints:[{type:"minecraft:constant",value:-8345771}]}},birch_log:{model:{type:"minecraft:model",model:"minecraft:block/birch_log"}},birch_planks:{model:{type:"minecraft:model",model:"minecraft:block/birch_planks"}},birch_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/birch_pressure_plate"}},birch_sapling:{model:{type:"minecraft:model",model:"minecraft:item/birch_sapling"}},birch_sign:{model:{type:"minecraft:model",model:"minecraft:item/birch_sign"}},birch_slab:{model:{type:"minecraft:model",model:"minecraft:block/birch_slab"}},birch_stairs:{model:{type:"minecraft:model",model:"minecraft:block/birch_stairs"}},birch_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/birch_trapdoor_bottom"}},birch_wood:{model:{type:"minecraft:model",model:"minecraft:block/birch_wood"}},black_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"black"}}},black_bed:{model:{type:"minecraft:special",base:"minecraft:item/black_bed",model:{type:"minecraft:bed",texture:"minecraft:black"}}},black_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/black_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/black_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/black_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/black_bundle"},property:"minecraft:display_context"}},black_candle:{model:{type:"minecraft:model",model:"minecraft:item/black_candle"}},black_carpet:{model:{type:"minecraft:model",model:"minecraft:block/black_carpet"}},black_concrete:{model:{type:"minecraft:model",model:"minecraft:block/black_concrete"}},black_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/black_concrete_powder"}},black_dye:{model:{type:"minecraft:model",model:"minecraft:item/black_dye"}},black_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/black_glazed_terracotta"}},black_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/black_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_black"}}},black_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/black_stained_glass"}},black_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/black_stained_glass_pane"}},black_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/black_terracotta"}},black_wool:{model:{type:"minecraft:model",model:"minecraft:block/black_wool"}},blackstone:{model:{type:"minecraft:model",model:"minecraft:block/blackstone"}},blackstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/blackstone_slab"}},blackstone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/blackstone_stairs"}},blackstone_wall:{model:{type:"minecraft:model",model:"minecraft:block/blackstone_wall_inventory"}},blade_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/blade_pottery_sherd"}},blast_furnace:{model:{type:"minecraft:model",model:"minecraft:block/blast_furnace"}},blaze_powder:{model:{type:"minecraft:model",model:"minecraft:item/blaze_powder"}},blaze_rod:{model:{type:"minecraft:model",model:"minecraft:item/blaze_rod"}},blaze_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/blaze_spawn_egg"}},blue_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"blue"}}},blue_bed:{model:{type:"minecraft:special",base:"minecraft:item/blue_bed",model:{type:"minecraft:bed",texture:"minecraft:blue"}}},blue_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/blue_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/blue_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/blue_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/blue_bundle"},property:"minecraft:display_context"}},blue_candle:{model:{type:"minecraft:model",model:"minecraft:item/blue_candle"}},blue_carpet:{model:{type:"minecraft:model",model:"minecraft:block/blue_carpet"}},blue_concrete:{model:{type:"minecraft:model",model:"minecraft:block/blue_concrete"}},blue_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/blue_concrete_powder"}},blue_dye:{model:{type:"minecraft:model",model:"minecraft:item/blue_dye"}},blue_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/blue_glazed_terracotta"}},blue_ice:{model:{type:"minecraft:model",model:"minecraft:block/blue_ice"}},blue_orchid:{model:{type:"minecraft:model",model:"minecraft:item/blue_orchid"}},blue_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/blue_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_blue"}}},blue_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/blue_stained_glass"}},blue_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/blue_stained_glass_pane"}},blue_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/blue_terracotta"}},blue_wool:{model:{type:"minecraft:model",model:"minecraft:block/blue_wool"}},bogged_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/bogged_spawn_egg"}},bolt_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/bolt_armor_trim_smithing_template"}},bone:{model:{type:"minecraft:model",model:"minecraft:item/bone"}},bone_block:{model:{type:"minecraft:model",model:"minecraft:block/bone_block"}},bone_meal:{model:{type:"minecraft:model",model:"minecraft:item/bone_meal"}},book:{model:{type:"minecraft:model",model:"minecraft:item/book"}},bookshelf:{model:{type:"minecraft:model",model:"minecraft:block/bookshelf"}},bordure_indented_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/bordure_indented_banner_pattern"}},bow:{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/bow"},on_true:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/bow_pulling_1"},threshold:.65},{model:{type:"minecraft:model",model:"minecraft:item/bow_pulling_2"},threshold:.9}],fallback:{type:"minecraft:model",model:"minecraft:item/bow_pulling_0"},property:"minecraft:use_duration",scale:.05},property:"minecraft:using_item"}},bowl:{model:{type:"minecraft:model",model:"minecraft:item/bowl"}},brain_coral:{model:{type:"minecraft:model",model:"minecraft:item/brain_coral"}},brain_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/brain_coral_block"}},brain_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/brain_coral_fan"}},bread:{model:{type:"minecraft:model",model:"minecraft:item/bread"}},breeze_rod:{model:{type:"minecraft:model",model:"minecraft:item/breeze_rod"}},breeze_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/breeze_spawn_egg"}},brewer_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/brewer_pottery_sherd"}},brewing_stand:{model:{type:"minecraft:model",model:"minecraft:item/brewing_stand"}},brick:{model:{type:"minecraft:model",model:"minecraft:item/brick"}},brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/brick_slab"}},brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/brick_stairs"}},brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/brick_wall_inventory"}},bricks:{model:{type:"minecraft:model",model:"minecraft:block/bricks"}},brown_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"brown"}}},brown_bed:{model:{type:"minecraft:special",base:"minecraft:item/brown_bed",model:{type:"minecraft:bed",texture:"minecraft:brown"}}},brown_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/brown_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/brown_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/brown_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/brown_bundle"},property:"minecraft:display_context"}},brown_candle:{model:{type:"minecraft:model",model:"minecraft:item/brown_candle"}},brown_carpet:{model:{type:"minecraft:model",model:"minecraft:block/brown_carpet"}},brown_concrete:{model:{type:"minecraft:model",model:"minecraft:block/brown_concrete"}},brown_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/brown_concrete_powder"}},brown_dye:{model:{type:"minecraft:model",model:"minecraft:item/brown_dye"}},brown_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/brown_glazed_terracotta"}},brown_mushroom:{model:{type:"minecraft:model",model:"minecraft:item/brown_mushroom"}},brown_mushroom_block:{model:{type:"minecraft:model",model:"minecraft:block/brown_mushroom_block_inventory"}},brown_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/brown_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_brown"}}},brown_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/brown_stained_glass"}},brown_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/brown_stained_glass_pane"}},brown_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/brown_terracotta"}},brown_wool:{model:{type:"minecraft:model",model:"minecraft:block/brown_wool"}},brush:{model:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/brush_brushing_0"},threshold:.25},{model:{type:"minecraft:model",model:"minecraft:item/brush_brushing_1"},threshold:.5},{model:{type:"minecraft:model",model:"minecraft:item/brush_brushing_2"},threshold:.75}],fallback:{type:"minecraft:model",model:"minecraft:item/brush"},period:10,property:"minecraft:use_cycle",scale:.1}},bubble_coral:{model:{type:"minecraft:model",model:"minecraft:item/bubble_coral"}},bubble_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/bubble_coral_block"}},bubble_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/bubble_coral_fan"}},bucket:{model:{type:"minecraft:model",model:"minecraft:item/bucket"}},budding_amethyst:{model:{type:"minecraft:model",model:"minecraft:block/budding_amethyst"}},bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/bundle"},property:"minecraft:display_context"}},burn_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/burn_pottery_sherd"}},cactus:{model:{type:"minecraft:model",model:"minecraft:block/cactus"}},cake:{model:{type:"minecraft:model",model:"minecraft:item/cake"}},calcite:{model:{type:"minecraft:model",model:"minecraft:block/calcite"}},calibrated_sculk_sensor:{model:{type:"minecraft:model",model:"minecraft:block/calibrated_sculk_sensor_inactive"}},camel_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/camel_spawn_egg"}},campfire:{model:{type:"minecraft:model",model:"minecraft:item/campfire"}},candle:{model:{type:"minecraft:model",model:"minecraft:item/candle"}},carrot:{model:{type:"minecraft:model",model:"minecraft:item/carrot"}},carrot_on_a_stick:{model:{type:"minecraft:model",model:"minecraft:item/carrot_on_a_stick"}},cartography_table:{model:{type:"minecraft:model",model:"minecraft:block/cartography_table"}},carved_pumpkin:{model:{type:"minecraft:model",model:"minecraft:block/carved_pumpkin"}},cat_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/cat_spawn_egg"}},cauldron:{model:{type:"minecraft:model",model:"minecraft:item/cauldron"}},cave_spider_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/cave_spider_spawn_egg"}},chain:{model:{type:"minecraft:model",model:"minecraft:item/chain"}},chain_command_block:{model:{type:"minecraft:model",model:"minecraft:block/chain_command_block"}},chainmail_boots:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_boots_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/chainmail_boots"},property:"minecraft:trim_material"}},chainmail_chestplate:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/chainmail_chestplate"},property:"minecraft:trim_material"}},chainmail_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/chainmail_helmet"},property:"minecraft:trim_material"}},chainmail_leggings:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/chainmail_leggings"},property:"minecraft:trim_material"}},charcoal:{model:{type:"minecraft:model",model:"minecraft:item/charcoal"}},cherry_boat:{model:{type:"minecraft:model",model:"minecraft:item/cherry_boat"}},cherry_button:{model:{type:"minecraft:model",model:"minecraft:block/cherry_button_inventory"}},cherry_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/cherry_chest_boat"}},cherry_door:{model:{type:"minecraft:model",model:"minecraft:item/cherry_door"}},cherry_fence:{model:{type:"minecraft:model",model:"minecraft:block/cherry_fence_inventory"}},cherry_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/cherry_fence_gate"}},cherry_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/cherry_hanging_sign"}},cherry_leaves:{model:{type:"minecraft:model",model:"minecraft:block/cherry_leaves"}},cherry_log:{model:{type:"minecraft:model",model:"minecraft:block/cherry_log"}},cherry_planks:{model:{type:"minecraft:model",model:"minecraft:block/cherry_planks"}},cherry_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/cherry_pressure_plate"}},cherry_sapling:{model:{type:"minecraft:model",model:"minecraft:item/cherry_sapling"}},cherry_sign:{model:{type:"minecraft:model",model:"minecraft:item/cherry_sign"}},cherry_slab:{model:{type:"minecraft:model",model:"minecraft:block/cherry_slab"}},cherry_stairs:{model:{type:"minecraft:model",model:"minecraft:block/cherry_stairs"}},cherry_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/cherry_trapdoor_bottom"}},cherry_wood:{model:{type:"minecraft:model",model:"minecraft:block/cherry_wood"}},chest:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:special",base:"minecraft:item/chest",model:{type:"minecraft:chest",texture:"minecraft:christmas"}},when:["12-24","12-25","12-26"]}],fallback:{type:"minecraft:special",base:"minecraft:item/chest",model:{type:"minecraft:chest",texture:"minecraft:normal"}},pattern:"MM-dd",property:"minecraft:local_time"}},chest_minecart:{model:{type:"minecraft:model",model:"minecraft:item/chest_minecart"}},chicken:{model:{type:"minecraft:model",model:"minecraft:item/chicken"}},chicken_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/chicken_spawn_egg"}},chipped_anvil:{model:{type:"minecraft:model",model:"minecraft:block/chipped_anvil"}},chiseled_bookshelf:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_bookshelf_inventory"}},chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_copper"}},chiseled_deepslate:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_deepslate"}},chiseled_nether_bricks:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_nether_bricks"}},chiseled_polished_blackstone:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_polished_blackstone"}},chiseled_quartz_block:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_quartz_block"}},chiseled_red_sandstone:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_red_sandstone"}},chiseled_resin_bricks:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_resin_bricks"}},chiseled_sandstone:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_sandstone"}},chiseled_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_stone_bricks"}},chiseled_tuff:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_tuff"}},chiseled_tuff_bricks:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_tuff_bricks"}},chorus_flower:{model:{type:"minecraft:model",model:"minecraft:block/chorus_flower"}},chorus_fruit:{model:{type:"minecraft:model",model:"minecraft:item/chorus_fruit"}},chorus_plant:{model:{type:"minecraft:model",model:"minecraft:block/chorus_plant"}},clay:{model:{type:"minecraft:model",model:"minecraft:block/clay"}},clay_ball:{model:{type:"minecraft:model",model:"minecraft:item/clay_ball"}},clock:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/clock_00"},threshold:0},{model:{type:"minecraft:model",model:"minecraft:item/clock_01"},threshold:.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_02"},threshold:1.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_03"},threshold:2.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_04"},threshold:3.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_05"},threshold:4.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_06"},threshold:5.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_07"},threshold:6.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_08"},threshold:7.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_09"},threshold:8.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_10"},threshold:9.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_11"},threshold:10.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_12"},threshold:11.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_13"},threshold:12.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_14"},threshold:13.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_15"},threshold:14.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_16"},threshold:15.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_17"},threshold:16.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_18"},threshold:17.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_19"},threshold:18.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_20"},threshold:19.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_21"},threshold:20.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_22"},threshold:21.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_23"},threshold:22.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_24"},threshold:23.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_25"},threshold:24.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_26"},threshold:25.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_27"},threshold:26.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_28"},threshold:27.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_29"},threshold:28.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_30"},threshold:29.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_31"},threshold:30.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_32"},threshold:31.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_33"},threshold:32.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_34"},threshold:33.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_35"},threshold:34.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_36"},threshold:35.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_37"},threshold:36.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_38"},threshold:37.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_39"},threshold:38.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_40"},threshold:39.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_41"},threshold:40.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_42"},threshold:41.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_43"},threshold:42.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_44"},threshold:43.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_45"},threshold:44.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_46"},threshold:45.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_47"},threshold:46.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_48"},threshold:47.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_49"},threshold:48.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_50"},threshold:49.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_51"},threshold:50.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_52"},threshold:51.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_53"},threshold:52.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_54"},threshold:53.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_55"},threshold:54.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_56"},threshold:55.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_57"},threshold:56.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_58"},threshold:57.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_59"},threshold:58.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_60"},threshold:59.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_61"},threshold:60.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_62"},threshold:61.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_63"},threshold:62.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_00"},threshold:63.5}],property:"minecraft:time",scale:64,source:"daytime"},when:"minecraft:overworld"}],fallback:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/clock_00"},threshold:0},{model:{type:"minecraft:model",model:"minecraft:item/clock_01"},threshold:.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_02"},threshold:1.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_03"},threshold:2.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_04"},threshold:3.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_05"},threshold:4.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_06"},threshold:5.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_07"},threshold:6.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_08"},threshold:7.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_09"},threshold:8.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_10"},threshold:9.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_11"},threshold:10.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_12"},threshold:11.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_13"},threshold:12.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_14"},threshold:13.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_15"},threshold:14.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_16"},threshold:15.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_17"},threshold:16.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_18"},threshold:17.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_19"},threshold:18.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_20"},threshold:19.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_21"},threshold:20.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_22"},threshold:21.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_23"},threshold:22.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_24"},threshold:23.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_25"},threshold:24.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_26"},threshold:25.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_27"},threshold:26.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_28"},threshold:27.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_29"},threshold:28.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_30"},threshold:29.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_31"},threshold:30.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_32"},threshold:31.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_33"},threshold:32.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_34"},threshold:33.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_35"},threshold:34.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_36"},threshold:35.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_37"},threshold:36.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_38"},threshold:37.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_39"},threshold:38.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_40"},threshold:39.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_41"},threshold:40.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_42"},threshold:41.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_43"},threshold:42.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_44"},threshold:43.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_45"},threshold:44.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_46"},threshold:45.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_47"},threshold:46.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_48"},threshold:47.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_49"},threshold:48.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_50"},threshold:49.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_51"},threshold:50.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_52"},threshold:51.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_53"},threshold:52.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_54"},threshold:53.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_55"},threshold:54.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_56"},threshold:55.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_57"},threshold:56.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_58"},threshold:57.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_59"},threshold:58.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_60"},threshold:59.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_61"},threshold:60.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_62"},threshold:61.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_63"},threshold:62.5},{model:{type:"minecraft:model",model:"minecraft:item/clock_00"},threshold:63.5}],property:"minecraft:time",scale:64,source:"random"},property:"minecraft:context_dimension"}},closed_eyeblossom:{model:{type:"minecraft:model",model:"minecraft:item/closed_eyeblossom"}},coal:{model:{type:"minecraft:model",model:"minecraft:item/coal"}},coal_block:{model:{type:"minecraft:model",model:"minecraft:block/coal_block"}},coal_ore:{model:{type:"minecraft:model",model:"minecraft:block/coal_ore"}},coarse_dirt:{model:{type:"minecraft:model",model:"minecraft:block/coarse_dirt"}},coast_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/coast_armor_trim_smithing_template"}},cobbled_deepslate:{model:{type:"minecraft:model",model:"minecraft:block/cobbled_deepslate"}},cobbled_deepslate_slab:{model:{type:"minecraft:model",model:"minecraft:block/cobbled_deepslate_slab"}},cobbled_deepslate_stairs:{model:{type:"minecraft:model",model:"minecraft:block/cobbled_deepslate_stairs"}},cobbled_deepslate_wall:{model:{type:"minecraft:model",model:"minecraft:block/cobbled_deepslate_wall_inventory"}},cobblestone:{model:{type:"minecraft:model",model:"minecraft:block/cobblestone"}},cobblestone_slab:{model:{type:"minecraft:model",model:"minecraft:block/cobblestone_slab"}},cobblestone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/cobblestone_stairs"}},cobblestone_wall:{model:{type:"minecraft:model",model:"minecraft:block/cobblestone_wall_inventory"}},cobweb:{model:{type:"minecraft:model",model:"minecraft:item/cobweb"}},cocoa_beans:{model:{type:"minecraft:model",model:"minecraft:item/cocoa_beans"}},cod:{model:{type:"minecraft:model",model:"minecraft:item/cod"}},cod_bucket:{model:{type:"minecraft:model",model:"minecraft:item/cod_bucket"}},cod_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/cod_spawn_egg"}},command_block:{model:{type:"minecraft:model",model:"minecraft:block/command_block"}},command_block_minecart:{model:{type:"minecraft:model",model:"minecraft:item/command_block_minecart"}},comparator:{model:{type:"minecraft:model",model:"minecraft:item/comparator"}},compass:{model:{type:"minecraft:condition",component:"minecraft:lodestone_tracker",on_false:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/compass_16"},threshold:0},{model:{type:"minecraft:model",model:"minecraft:item/compass_17"},threshold:.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_18"},threshold:1.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_19"},threshold:2.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_20"},threshold:3.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_21"},threshold:4.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_22"},threshold:5.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_23"},threshold:6.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_24"},threshold:7.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_25"},threshold:8.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_26"},threshold:9.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_27"},threshold:10.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_28"},threshold:11.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_29"},threshold:12.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_30"},threshold:13.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_31"},threshold:14.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_00"},threshold:15.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_01"},threshold:16.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_02"},threshold:17.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_03"},threshold:18.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_04"},threshold:19.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_05"},threshold:20.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_06"},threshold:21.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_07"},threshold:22.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_08"},threshold:23.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_09"},threshold:24.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_10"},threshold:25.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_11"},threshold:26.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_12"},threshold:27.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_13"},threshold:28.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_14"},threshold:29.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_15"},threshold:30.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_16"},threshold:31.5}],property:"minecraft:compass",scale:32,target:"spawn"},on_true:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/compass_16"},threshold:0},{model:{type:"minecraft:model",model:"minecraft:item/compass_17"},threshold:.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_18"},threshold:1.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_19"},threshold:2.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_20"},threshold:3.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_21"},threshold:4.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_22"},threshold:5.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_23"},threshold:6.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_24"},threshold:7.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_25"},threshold:8.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_26"},threshold:9.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_27"},threshold:10.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_28"},threshold:11.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_29"},threshold:12.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_30"},threshold:13.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_31"},threshold:14.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_00"},threshold:15.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_01"},threshold:16.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_02"},threshold:17.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_03"},threshold:18.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_04"},threshold:19.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_05"},threshold:20.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_06"},threshold:21.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_07"},threshold:22.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_08"},threshold:23.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_09"},threshold:24.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_10"},threshold:25.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_11"},threshold:26.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_12"},threshold:27.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_13"},threshold:28.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_14"},threshold:29.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_15"},threshold:30.5},{model:{type:"minecraft:model",model:"minecraft:item/compass_16"},threshold:31.5}],property:"minecraft:compass",scale:32,target:"lodestone"},property:"minecraft:has_component"}},composter:{model:{type:"minecraft:model",model:"minecraft:block/composter"}},conduit:{model:{type:"minecraft:special",base:"minecraft:item/conduit",model:{type:"minecraft:conduit"}}},cooked_beef:{model:{type:"minecraft:model",model:"minecraft:item/cooked_beef"}},cooked_chicken:{model:{type:"minecraft:model",model:"minecraft:item/cooked_chicken"}},cooked_cod:{model:{type:"minecraft:model",model:"minecraft:item/cooked_cod"}},cooked_mutton:{model:{type:"minecraft:model",model:"minecraft:item/cooked_mutton"}},cooked_porkchop:{model:{type:"minecraft:model",model:"minecraft:item/cooked_porkchop"}},cooked_rabbit:{model:{type:"minecraft:model",model:"minecraft:item/cooked_rabbit"}},cooked_salmon:{model:{type:"minecraft:model",model:"minecraft:item/cooked_salmon"}},cookie:{model:{type:"minecraft:model",model:"minecraft:item/cookie"}},copper_block:{model:{type:"minecraft:model",model:"minecraft:block/copper_block"}},copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/copper_bulb"}},copper_door:{model:{type:"minecraft:model",model:"minecraft:item/copper_door"}},copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/copper_grate"}},copper_ingot:{model:{type:"minecraft:model",model:"minecraft:item/copper_ingot"}},copper_ore:{model:{type:"minecraft:model",model:"minecraft:block/copper_ore"}},copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/copper_trapdoor_bottom"}},cornflower:{model:{type:"minecraft:model",model:"minecraft:item/cornflower"}},cow_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/cow_spawn_egg"}},cracked_deepslate_bricks:{model:{type:"minecraft:model",model:"minecraft:block/cracked_deepslate_bricks"}},cracked_deepslate_tiles:{model:{type:"minecraft:model",model:"minecraft:block/cracked_deepslate_tiles"}},cracked_nether_bricks:{model:{type:"minecraft:model",model:"minecraft:block/cracked_nether_bricks"}},cracked_polished_blackstone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/cracked_polished_blackstone_bricks"}},cracked_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/cracked_stone_bricks"}},crafter:{model:{type:"minecraft:model",model:"minecraft:block/crafter"}},crafting_table:{model:{type:"minecraft:model",model:"minecraft:block/crafting_table"}},creaking_heart:{model:{type:"minecraft:model",model:"minecraft:block/creaking_heart"}},creaking_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/creaking_spawn_egg"}},creeper_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/creeper_banner_pattern"}},creeper_head:{model:{type:"minecraft:special",base:"minecraft:item/template_skull",model:{type:"minecraft:head",kind:"creeper"}}},creeper_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/creeper_spawn_egg"}},crimson_button:{model:{type:"minecraft:model",model:"minecraft:block/crimson_button_inventory"}},crimson_door:{model:{type:"minecraft:model",model:"minecraft:item/crimson_door"}},crimson_fence:{model:{type:"minecraft:model",model:"minecraft:block/crimson_fence_inventory"}},crimson_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/crimson_fence_gate"}},crimson_fungus:{model:{type:"minecraft:model",model:"minecraft:item/crimson_fungus"}},crimson_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/crimson_hanging_sign"}},crimson_hyphae:{model:{type:"minecraft:model",model:"minecraft:block/crimson_hyphae"}},crimson_nylium:{model:{type:"minecraft:model",model:"minecraft:block/crimson_nylium"}},crimson_planks:{model:{type:"minecraft:model",model:"minecraft:block/crimson_planks"}},crimson_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/crimson_pressure_plate"}},crimson_roots:{model:{type:"minecraft:model",model:"minecraft:item/crimson_roots"}},crimson_sign:{model:{type:"minecraft:model",model:"minecraft:item/crimson_sign"}},crimson_slab:{model:{type:"minecraft:model",model:"minecraft:block/crimson_slab"}},crimson_stairs:{model:{type:"minecraft:model",model:"minecraft:block/crimson_stairs"}},crimson_stem:{model:{type:"minecraft:model",model:"minecraft:block/crimson_stem"}},crimson_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/crimson_trapdoor_bottom"}},crossbow:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/crossbow_arrow"},when:"arrow"},{model:{type:"minecraft:model",model:"minecraft:item/crossbow_firework"},when:"rocket"}],fallback:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/crossbow"},on_true:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/crossbow_pulling_1"},threshold:.58},{model:{type:"minecraft:model",model:"minecraft:item/crossbow_pulling_2"},threshold:1}],fallback:{type:"minecraft:model",model:"minecraft:item/crossbow_pulling_0"},property:"minecraft:crossbow/pull"},property:"minecraft:using_item"},property:"minecraft:charge_type"}},crying_obsidian:{model:{type:"minecraft:model",model:"minecraft:block/crying_obsidian"}},cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/cut_copper"}},cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/cut_copper_slab"}},cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/cut_copper_stairs"}},cut_red_sandstone:{model:{type:"minecraft:model",model:"minecraft:block/cut_red_sandstone"}},cut_red_sandstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/cut_red_sandstone_slab"}},cut_sandstone:{model:{type:"minecraft:model",model:"minecraft:block/cut_sandstone"}},cut_sandstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/cut_sandstone_slab"}},cyan_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"cyan"}}},cyan_bed:{model:{type:"minecraft:special",base:"minecraft:item/cyan_bed",model:{type:"minecraft:bed",texture:"minecraft:cyan"}}},cyan_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/cyan_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/cyan_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/cyan_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/cyan_bundle"},property:"minecraft:display_context"}},cyan_candle:{model:{type:"minecraft:model",model:"minecraft:item/cyan_candle"}},cyan_carpet:{model:{type:"minecraft:model",model:"minecraft:block/cyan_carpet"}},cyan_concrete:{model:{type:"minecraft:model",model:"minecraft:block/cyan_concrete"}},cyan_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/cyan_concrete_powder"}},cyan_dye:{model:{type:"minecraft:model",model:"minecraft:item/cyan_dye"}},cyan_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/cyan_glazed_terracotta"}},cyan_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/cyan_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_cyan"}}},cyan_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/cyan_stained_glass"}},cyan_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/cyan_stained_glass_pane"}},cyan_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/cyan_terracotta"}},cyan_wool:{model:{type:"minecraft:model",model:"minecraft:block/cyan_wool"}},damaged_anvil:{model:{type:"minecraft:model",model:"minecraft:block/damaged_anvil"}},dandelion:{model:{type:"minecraft:model",model:"minecraft:item/dandelion"}},danger_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/danger_pottery_sherd"}},dark_oak_boat:{model:{type:"minecraft:model",model:"minecraft:item/dark_oak_boat"}},dark_oak_button:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_button_inventory"}},dark_oak_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/dark_oak_chest_boat"}},dark_oak_door:{model:{type:"minecraft:model",model:"minecraft:item/dark_oak_door"}},dark_oak_fence:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_fence_inventory"}},dark_oak_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_fence_gate"}},dark_oak_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/dark_oak_hanging_sign"}},dark_oak_leaves:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_leaves",tints:[{type:"minecraft:constant",value:-12012264}]}},dark_oak_log:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_log"}},dark_oak_planks:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_planks"}},dark_oak_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_pressure_plate"}},dark_oak_sapling:{model:{type:"minecraft:model",model:"minecraft:item/dark_oak_sapling"}},dark_oak_sign:{model:{type:"minecraft:model",model:"minecraft:item/dark_oak_sign"}},dark_oak_slab:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_slab"}},dark_oak_stairs:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_stairs"}},dark_oak_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_trapdoor_bottom"}},dark_oak_wood:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_wood"}},dark_prismarine:{model:{type:"minecraft:model",model:"minecraft:block/dark_prismarine"}},dark_prismarine_slab:{model:{type:"minecraft:model",model:"minecraft:block/dark_prismarine_slab"}},dark_prismarine_stairs:{model:{type:"minecraft:model",model:"minecraft:block/dark_prismarine_stairs"}},daylight_detector:{model:{type:"minecraft:model",model:"minecraft:block/daylight_detector"}},dead_brain_coral:{model:{type:"minecraft:model",model:"minecraft:item/dead_brain_coral"}},dead_brain_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/dead_brain_coral_block"}},dead_brain_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/dead_brain_coral_fan"}},dead_bubble_coral:{model:{type:"minecraft:model",model:"minecraft:item/dead_bubble_coral"}},dead_bubble_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/dead_bubble_coral_block"}},dead_bubble_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/dead_bubble_coral_fan"}},dead_bush:{model:{type:"minecraft:model",model:"minecraft:item/dead_bush"}},dead_fire_coral:{model:{type:"minecraft:model",model:"minecraft:item/dead_fire_coral"}},dead_fire_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/dead_fire_coral_block"}},dead_fire_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/dead_fire_coral_fan"}},dead_horn_coral:{model:{type:"minecraft:model",model:"minecraft:item/dead_horn_coral"}},dead_horn_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/dead_horn_coral_block"}},dead_horn_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/dead_horn_coral_fan"}},dead_tube_coral:{model:{type:"minecraft:model",model:"minecraft:item/dead_tube_coral"}},dead_tube_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/dead_tube_coral_block"}},dead_tube_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/dead_tube_coral_fan"}},debug_stick:{model:{type:"minecraft:model",model:"minecraft:item/debug_stick"}},decorated_pot:{model:{type:"minecraft:special",base:"minecraft:item/decorated_pot",model:{type:"minecraft:decorated_pot"}}},deepslate:{model:{type:"minecraft:model",model:"minecraft:block/deepslate"}},deepslate_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_brick_slab"}},deepslate_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_brick_stairs"}},deepslate_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_brick_wall_inventory"}},deepslate_bricks:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_bricks"}},deepslate_coal_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_coal_ore"}},deepslate_copper_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_copper_ore"}},deepslate_diamond_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_diamond_ore"}},deepslate_emerald_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_emerald_ore"}},deepslate_gold_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_gold_ore"}},deepslate_iron_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_iron_ore"}},deepslate_lapis_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_lapis_ore"}},deepslate_redstone_ore:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_redstone_ore"}},deepslate_tile_slab:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_tile_slab"}},deepslate_tile_stairs:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_tile_stairs"}},deepslate_tile_wall:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_tile_wall_inventory"}},deepslate_tiles:{model:{type:"minecraft:model",model:"minecraft:block/deepslate_tiles"}},detector_rail:{model:{type:"minecraft:model",model:"minecraft:item/detector_rail"}},diamond:{model:{type:"minecraft:model",model:"minecraft:item/diamond"}},diamond_axe:{model:{type:"minecraft:model",model:"minecraft:item/diamond_axe"}},diamond_block:{model:{type:"minecraft:model",model:"minecraft:block/diamond_block"}},diamond_boots:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_boots_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/diamond_boots"},property:"minecraft:trim_material"}},diamond_chestplate:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/diamond_chestplate"},property:"minecraft:trim_material"}},diamond_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_helmet_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/diamond_helmet"},property:"minecraft:trim_material"}},diamond_hoe:{model:{type:"minecraft:model",model:"minecraft:item/diamond_hoe"}},diamond_horse_armor:{model:{type:"minecraft:model",model:"minecraft:item/diamond_horse_armor"}},diamond_leggings:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/diamond_leggings_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/diamond_leggings"},property:"minecraft:trim_material"}},diamond_ore:{model:{type:"minecraft:model",model:"minecraft:block/diamond_ore"}},diamond_pickaxe:{model:{type:"minecraft:model",model:"minecraft:item/diamond_pickaxe"}},diamond_shovel:{model:{type:"minecraft:model",model:"minecraft:item/diamond_shovel"}},diamond_sword:{model:{type:"minecraft:model",model:"minecraft:item/diamond_sword"}},diorite:{model:{type:"minecraft:model",model:"minecraft:block/diorite"}},diorite_slab:{model:{type:"minecraft:model",model:"minecraft:block/diorite_slab"}},diorite_stairs:{model:{type:"minecraft:model",model:"minecraft:block/diorite_stairs"}},diorite_wall:{model:{type:"minecraft:model",model:"minecraft:block/diorite_wall_inventory"}},dirt:{model:{type:"minecraft:model",model:"minecraft:block/dirt"}},dirt_path:{model:{type:"minecraft:model",model:"minecraft:block/dirt_path"}},disc_fragment_5:{model:{type:"minecraft:model",model:"minecraft:item/disc_fragment_5"}},dispenser:{model:{type:"minecraft:model",model:"minecraft:block/dispenser"}},dolphin_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/dolphin_spawn_egg"}},donkey_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/donkey_spawn_egg"}},dragon_breath:{model:{type:"minecraft:model",model:"minecraft:item/dragon_breath"}},dragon_egg:{model:{type:"minecraft:model",model:"minecraft:block/dragon_egg"}},dragon_head:{model:{type:"minecraft:special",base:"minecraft:item/dragon_head",model:{type:"minecraft:head",kind:"dragon"}}},dried_kelp:{model:{type:"minecraft:model",model:"minecraft:item/dried_kelp"}},dried_kelp_block:{model:{type:"minecraft:model",model:"minecraft:block/dried_kelp_block"}},dripstone_block:{model:{type:"minecraft:model",model:"minecraft:block/dripstone_block"}},dropper:{model:{type:"minecraft:model",model:"minecraft:block/dropper"}},drowned_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/drowned_spawn_egg"}},dune_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/dune_armor_trim_smithing_template"}},echo_shard:{model:{type:"minecraft:model",model:"minecraft:item/echo_shard"}},egg:{model:{type:"minecraft:model",model:"minecraft:item/egg"}},elder_guardian_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/elder_guardian_spawn_egg"}},elytra:{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/elytra"},on_true:{type:"minecraft:model",model:"minecraft:item/elytra_broken"},property:"minecraft:broken"}},emerald:{model:{type:"minecraft:model",model:"minecraft:item/emerald"}},emerald_block:{model:{type:"minecraft:model",model:"minecraft:block/emerald_block"}},emerald_ore:{model:{type:"minecraft:model",model:"minecraft:block/emerald_ore"}},enchanted_book:{model:{type:"minecraft:model",model:"minecraft:item/enchanted_book"}},enchanted_golden_apple:{model:{type:"minecraft:model",model:"minecraft:item/enchanted_golden_apple"}},enchanting_table:{model:{type:"minecraft:model",model:"minecraft:block/enchanting_table"}},end_crystal:{model:{type:"minecraft:model",model:"minecraft:item/end_crystal"}},end_portal_frame:{model:{type:"minecraft:model",model:"minecraft:block/end_portal_frame"}},end_rod:{model:{type:"minecraft:model",model:"minecraft:block/end_rod"}},end_stone:{model:{type:"minecraft:model",model:"minecraft:block/end_stone"}},end_stone_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/end_stone_brick_slab"}},end_stone_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/end_stone_brick_stairs"}},end_stone_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/end_stone_brick_wall_inventory"}},end_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/end_stone_bricks"}},ender_chest:{model:{type:"minecraft:special",base:"minecraft:item/ender_chest",model:{type:"minecraft:chest",texture:"minecraft:ender"}}},ender_dragon_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/ender_dragon_spawn_egg"}},ender_eye:{model:{type:"minecraft:model",model:"minecraft:item/ender_eye"}},ender_pearl:{model:{type:"minecraft:model",model:"minecraft:item/ender_pearl"}},enderman_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/enderman_spawn_egg"}},endermite_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/endermite_spawn_egg"}},evoker_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/evoker_spawn_egg"}},experience_bottle:{model:{type:"minecraft:model",model:"minecraft:item/experience_bottle"}},explorer_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/explorer_pottery_sherd"}},exposed_chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/exposed_chiseled_copper"}},exposed_copper:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper"}},exposed_copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper_bulb"}},exposed_copper_door:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_door"}},exposed_copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper_grate"}},exposed_copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper_trapdoor_bottom"}},exposed_cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/exposed_cut_copper"}},exposed_cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/exposed_cut_copper_slab"}},exposed_cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/exposed_cut_copper_stairs"}},eye_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/eye_armor_trim_smithing_template"}},farmland:{model:{type:"minecraft:model",model:"minecraft:block/farmland"}},feather:{model:{type:"minecraft:model",model:"minecraft:item/feather"}},fermented_spider_eye:{model:{type:"minecraft:model",model:"minecraft:item/fermented_spider_eye"}},fern:{model:{type:"minecraft:model",model:"minecraft:item/fern",tints:[{type:"minecraft:grass",downfall:1,temperature:.5}]}},field_masoned_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/field_masoned_banner_pattern"}},filled_map:{model:{type:"minecraft:model",model:"minecraft:item/filled_map",tints:[{type:"minecraft:constant",value:-1},{type:"minecraft:map_color",default:4603950}]}},fire_charge:{model:{type:"minecraft:model",model:"minecraft:item/fire_charge"}},fire_coral:{model:{type:"minecraft:model",model:"minecraft:item/fire_coral"}},fire_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/fire_coral_block"}},fire_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/fire_coral_fan"}},firework_rocket:{model:{type:"minecraft:model",model:"minecraft:item/firework_rocket"}},firework_star:{model:{type:"minecraft:model",model:"minecraft:item/firework_star",tints:[{type:"minecraft:constant",value:-1},{type:"minecraft:firework",default:-7697782}]}},fishing_rod:{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/fishing_rod"},on_true:{type:"minecraft:model",model:"minecraft:item/fishing_rod_cast"},property:"minecraft:fishing_rod/cast"}},fletching_table:{model:{type:"minecraft:model",model:"minecraft:block/fletching_table"}},flint:{model:{type:"minecraft:model",model:"minecraft:item/flint"}},flint_and_steel:{model:{type:"minecraft:model",model:"minecraft:item/flint_and_steel"}},flow_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/flow_armor_trim_smithing_template"}},flow_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/flow_banner_pattern"}},flow_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/flow_pottery_sherd"}},flower_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/flower_banner_pattern"}},flower_pot:{model:{type:"minecraft:model",model:"minecraft:item/flower_pot"}},flowering_azalea:{model:{type:"minecraft:model",model:"minecraft:block/flowering_azalea"}},flowering_azalea_leaves:{model:{type:"minecraft:model",model:"minecraft:block/flowering_azalea_leaves"}},fox_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/fox_spawn_egg"}},friend_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/friend_pottery_sherd"}},frog_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/frog_spawn_egg"}},frogspawn:{model:{type:"minecraft:model",model:"minecraft:item/frogspawn"}},furnace:{model:{type:"minecraft:model",model:"minecraft:block/furnace"}},furnace_minecart:{model:{type:"minecraft:model",model:"minecraft:item/furnace_minecart"}},ghast_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/ghast_spawn_egg"}},ghast_tear:{model:{type:"minecraft:model",model:"minecraft:item/ghast_tear"}},gilded_blackstone:{model:{type:"minecraft:model",model:"minecraft:block/gilded_blackstone"}},glass:{model:{type:"minecraft:model",model:"minecraft:block/glass"}},glass_bottle:{model:{type:"minecraft:model",model:"minecraft:item/glass_bottle"}},glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/glass_pane"}},glistering_melon_slice:{model:{type:"minecraft:model",model:"minecraft:item/glistering_melon_slice"}},globe_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/globe_banner_pattern"}},glow_berries:{model:{type:"minecraft:model",model:"minecraft:item/glow_berries"}},glow_ink_sac:{model:{type:"minecraft:model",model:"minecraft:item/glow_ink_sac"}},glow_item_frame:{model:{type:"minecraft:model",model:"minecraft:item/glow_item_frame"}},glow_lichen:{model:{type:"minecraft:model",model:"minecraft:item/glow_lichen"}},glow_squid_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/glow_squid_spawn_egg"}},glowstone:{model:{type:"minecraft:model",model:"minecraft:block/glowstone"}},glowstone_dust:{model:{type:"minecraft:model",model:"minecraft:item/glowstone_dust"}},goat_horn:{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/goat_horn"},on_true:{type:"minecraft:model",model:"minecraft:item/tooting_goat_horn"},property:"minecraft:using_item"}},goat_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/goat_spawn_egg"}},gold_block:{model:{type:"minecraft:model",model:"minecraft:block/gold_block"}},gold_ingot:{model:{type:"minecraft:model",model:"minecraft:item/gold_ingot"}},gold_nugget:{model:{type:"minecraft:model",model:"minecraft:item/gold_nugget"}},gold_ore:{model:{type:"minecraft:model",model:"minecraft:block/gold_ore"}},golden_apple:{model:{type:"minecraft:model",model:"minecraft:item/golden_apple"}},golden_axe:{model:{type:"minecraft:model",model:"minecraft:item/golden_axe"}},golden_boots:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/golden_boots_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/golden_boots"},property:"minecraft:trim_material"}},golden_carrot:{model:{type:"minecraft:model",model:"minecraft:item/golden_carrot"}},golden_chestplate:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/golden_chestplate_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/golden_chestplate"},property:"minecraft:trim_material"}},golden_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/golden_helmet_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/golden_helmet"},property:"minecraft:trim_material"}},golden_hoe:{model:{type:"minecraft:model",model:"minecraft:item/golden_hoe"}},golden_horse_armor:{model:{type:"minecraft:model",model:"minecraft:item/golden_horse_armor"}},golden_leggings:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/golden_leggings_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/golden_leggings"},property:"minecraft:trim_material"}},golden_pickaxe:{model:{type:"minecraft:model",model:"minecraft:item/golden_pickaxe"}},golden_shovel:{model:{type:"minecraft:model",model:"minecraft:item/golden_shovel"}},golden_sword:{model:{type:"minecraft:model",model:"minecraft:item/golden_sword"}},granite:{model:{type:"minecraft:model",model:"minecraft:block/granite"}},granite_slab:{model:{type:"minecraft:model",model:"minecraft:block/granite_slab"}},granite_stairs:{model:{type:"minecraft:model",model:"minecraft:block/granite_stairs"}},granite_wall:{model:{type:"minecraft:model",model:"minecraft:block/granite_wall_inventory"}},grass_block:{model:{type:"minecraft:model",model:"minecraft:block/grass_block",tints:[{type:"minecraft:grass",downfall:1,temperature:.5}]}},gravel:{model:{type:"minecraft:model",model:"minecraft:block/gravel"}},gray_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"gray"}}},gray_bed:{model:{type:"minecraft:special",base:"minecraft:item/gray_bed",model:{type:"minecraft:bed",texture:"minecraft:gray"}}},gray_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/gray_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/gray_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/gray_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/gray_bundle"},property:"minecraft:display_context"}},gray_candle:{model:{type:"minecraft:model",model:"minecraft:item/gray_candle"}},gray_carpet:{model:{type:"minecraft:model",model:"minecraft:block/gray_carpet"}},gray_concrete:{model:{type:"minecraft:model",model:"minecraft:block/gray_concrete"}},gray_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/gray_concrete_powder"}},gray_dye:{model:{type:"minecraft:model",model:"minecraft:item/gray_dye"}},gray_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/gray_glazed_terracotta"}},gray_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/gray_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_gray"}}},gray_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/gray_stained_glass"}},gray_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/gray_stained_glass_pane"}},gray_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/gray_terracotta"}},gray_wool:{model:{type:"minecraft:model",model:"minecraft:block/gray_wool"}},green_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"green"}}},green_bed:{model:{type:"minecraft:special",base:"minecraft:item/green_bed",model:{type:"minecraft:bed",texture:"minecraft:green"}}},green_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/green_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/green_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/green_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/green_bundle"},property:"minecraft:display_context"}},green_candle:{model:{type:"minecraft:model",model:"minecraft:item/green_candle"}},green_carpet:{model:{type:"minecraft:model",model:"minecraft:block/green_carpet"}},green_concrete:{model:{type:"minecraft:model",model:"minecraft:block/green_concrete"}},green_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/green_concrete_powder"}},green_dye:{model:{type:"minecraft:model",model:"minecraft:item/green_dye"}},green_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/green_glazed_terracotta"}},green_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/green_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_green"}}},green_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/green_stained_glass"}},green_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/green_stained_glass_pane"}},green_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/green_terracotta"}},green_wool:{model:{type:"minecraft:model",model:"minecraft:block/green_wool"}},grindstone:{model:{type:"minecraft:model",model:"minecraft:block/grindstone"}},guardian_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/guardian_spawn_egg"}},gunpowder:{model:{type:"minecraft:model",model:"minecraft:item/gunpowder"}},guster_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/guster_banner_pattern"}},guster_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/guster_pottery_sherd"}},hanging_roots:{model:{type:"minecraft:model",model:"minecraft:item/hanging_roots"}},hay_block:{model:{type:"minecraft:model",model:"minecraft:block/hay_block"}},heart_of_the_sea:{model:{type:"minecraft:model",model:"minecraft:item/heart_of_the_sea"}},heart_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/heart_pottery_sherd"}},heartbreak_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/heartbreak_pottery_sherd"}},heavy_core:{model:{type:"minecraft:model",model:"minecraft:block/heavy_core"}},heavy_weighted_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/heavy_weighted_pressure_plate"}},hoglin_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/hoglin_spawn_egg"}},honey_block:{model:{type:"minecraft:model",model:"minecraft:block/honey_block"}},honey_bottle:{model:{type:"minecraft:model",model:"minecraft:item/honey_bottle"}},honeycomb:{model:{type:"minecraft:model",model:"minecraft:item/honeycomb"}},honeycomb_block:{model:{type:"minecraft:model",model:"minecraft:block/honeycomb_block"}},hopper:{model:{type:"minecraft:model",model:"minecraft:item/hopper"}},hopper_minecart:{model:{type:"minecraft:model",model:"minecraft:item/hopper_minecart"}},horn_coral:{model:{type:"minecraft:model",model:"minecraft:item/horn_coral"}},horn_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/horn_coral_block"}},horn_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/horn_coral_fan"}},horse_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/horse_spawn_egg"}},host_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/host_armor_trim_smithing_template"}},howl_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/howl_pottery_sherd"}},husk_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/husk_spawn_egg"}},ice:{model:{type:"minecraft:model",model:"minecraft:block/ice"}},infested_chiseled_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_stone_bricks"}},infested_cobblestone:{model:{type:"minecraft:model",model:"minecraft:block/cobblestone"}},infested_cracked_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/cracked_stone_bricks"}},infested_deepslate:{model:{type:"minecraft:model",model:"minecraft:block/deepslate"}},infested_mossy_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/mossy_stone_bricks"}},infested_stone:{model:{type:"minecraft:model",model:"minecraft:block/stone"}},infested_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/stone_bricks"}},ink_sac:{model:{type:"minecraft:model",model:"minecraft:item/ink_sac"}},iron_axe:{model:{type:"minecraft:model",model:"minecraft:item/iron_axe"}},iron_bars:{model:{type:"minecraft:model",model:"minecraft:item/iron_bars"}},iron_block:{model:{type:"minecraft:model",model:"minecraft:block/iron_block"}},iron_boots:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/iron_boots_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/iron_boots"},property:"minecraft:trim_material"}},iron_chestplate:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/iron_chestplate_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/iron_chestplate"},property:"minecraft:trim_material"}},iron_door:{model:{type:"minecraft:model",model:"minecraft:item/iron_door"}},iron_golem_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/iron_golem_spawn_egg"}},iron_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/iron_helmet_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/iron_helmet"},property:"minecraft:trim_material"}},iron_hoe:{model:{type:"minecraft:model",model:"minecraft:item/iron_hoe"}},iron_horse_armor:{model:{type:"minecraft:model",model:"minecraft:item/iron_horse_armor"}},iron_ingot:{model:{type:"minecraft:model",model:"minecraft:item/iron_ingot"}},iron_leggings:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/iron_leggings_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/iron_leggings"},property:"minecraft:trim_material"}},iron_nugget:{model:{type:"minecraft:model",model:"minecraft:item/iron_nugget"}},iron_ore:{model:{type:"minecraft:model",model:"minecraft:block/iron_ore"}},iron_pickaxe:{model:{type:"minecraft:model",model:"minecraft:item/iron_pickaxe"}},iron_shovel:{model:{type:"minecraft:model",model:"minecraft:item/iron_shovel"}},iron_sword:{model:{type:"minecraft:model",model:"minecraft:item/iron_sword"}},iron_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/iron_trapdoor_bottom"}},item_frame:{model:{type:"minecraft:model",model:"minecraft:item/item_frame"}},jack_o_lantern:{model:{type:"minecraft:model",model:"minecraft:block/jack_o_lantern"}},jigsaw:{model:{type:"minecraft:model",model:"minecraft:block/jigsaw"}},jukebox:{model:{type:"minecraft:model",model:"minecraft:block/jukebox"}},jungle_boat:{model:{type:"minecraft:model",model:"minecraft:item/jungle_boat"}},jungle_button:{model:{type:"minecraft:model",model:"minecraft:block/jungle_button_inventory"}},jungle_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/jungle_chest_boat"}},jungle_door:{model:{type:"minecraft:model",model:"minecraft:item/jungle_door"}},jungle_fence:{model:{type:"minecraft:model",model:"minecraft:block/jungle_fence_inventory"}},jungle_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/jungle_fence_gate"}},jungle_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/jungle_hanging_sign"}},jungle_leaves:{model:{type:"minecraft:model",model:"minecraft:block/jungle_leaves",tints:[{type:"minecraft:constant",value:-12012264}]}},jungle_log:{model:{type:"minecraft:model",model:"minecraft:block/jungle_log"}},jungle_planks:{model:{type:"minecraft:model",model:"minecraft:block/jungle_planks"}},jungle_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/jungle_pressure_plate"}},jungle_sapling:{model:{type:"minecraft:model",model:"minecraft:item/jungle_sapling"}},jungle_sign:{model:{type:"minecraft:model",model:"minecraft:item/jungle_sign"}},jungle_slab:{model:{type:"minecraft:model",model:"minecraft:block/jungle_slab"}},jungle_stairs:{model:{type:"minecraft:model",model:"minecraft:block/jungle_stairs"}},jungle_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/jungle_trapdoor_bottom"}},jungle_wood:{model:{type:"minecraft:model",model:"minecraft:block/jungle_wood"}},kelp:{model:{type:"minecraft:model",model:"minecraft:item/kelp"}},knowledge_book:{model:{type:"minecraft:model",model:"minecraft:item/knowledge_book"}},ladder:{model:{type:"minecraft:model",model:"minecraft:item/ladder"}},lantern:{model:{type:"minecraft:model",model:"minecraft:item/lantern"}},lapis_block:{model:{type:"minecraft:model",model:"minecraft:block/lapis_block"}},lapis_lazuli:{model:{type:"minecraft:model",model:"minecraft:item/lapis_lazuli"}},lapis_ore:{model:{type:"minecraft:model",model:"minecraft:block/lapis_ore"}},large_amethyst_bud:{model:{type:"minecraft:model",model:"minecraft:item/large_amethyst_bud"}},large_fern:{model:{type:"minecraft:model",model:"minecraft:item/large_fern",tints:[{type:"minecraft:grass",downfall:1,temperature:.5}]}},lava_bucket:{model:{type:"minecraft:model",model:"minecraft:item/lava_bucket"}},lead:{model:{type:"minecraft:model",model:"minecraft:item/lead"}},leather:{model:{type:"minecraft:model",model:"minecraft:item/leather"}},leather_boots:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_quartz_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_iron_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_netherite_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_redstone_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_copper_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_gold_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_emerald_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_diamond_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_lapis_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_amethyst_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/leather_boots_resin_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/leather_boots",tints:[{type:"minecraft:dye",default:-6265536}]},property:"minecraft:trim_material"}},leather_chestplate:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_quartz_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_iron_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_netherite_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_redstone_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_copper_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_gold_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_emerald_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_diamond_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_lapis_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_amethyst_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/leather_chestplate_resin_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/leather_chestplate",tints:[{type:"minecraft:dye",default:-6265536}]},property:"minecraft:trim_material"}},leather_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_quartz_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_iron_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_netherite_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_redstone_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_copper_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_gold_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_emerald_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_diamond_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_lapis_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_amethyst_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/leather_helmet_resin_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/leather_helmet",tints:[{type:"minecraft:dye",default:-6265536}]},property:"minecraft:trim_material"}},leather_horse_armor:{model:{type:"minecraft:model",model:"minecraft:item/leather_horse_armor",tints:[{type:"minecraft:dye",default:-6265536}]}},leather_leggings:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_quartz_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_iron_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_netherite_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_redstone_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_copper_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_gold_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_emerald_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_diamond_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_lapis_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_amethyst_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/leather_leggings_resin_trim",tints:[{type:"minecraft:dye",default:-6265536}]},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/leather_leggings",tints:[{type:"minecraft:dye",default:-6265536}]},property:"minecraft:trim_material"}},lectern:{model:{type:"minecraft:model",model:"minecraft:block/lectern"}},lever:{model:{type:"minecraft:model",model:"minecraft:item/lever"}},light:{model:{type:"minecraft:select",block_state_property:"level",cases:[{model:{type:"minecraft:model",model:"minecraft:item/light_00"},when:"0"},{model:{type:"minecraft:model",model:"minecraft:item/light_01"},when:"1"},{model:{type:"minecraft:model",model:"minecraft:item/light_02"},when:"2"},{model:{type:"minecraft:model",model:"minecraft:item/light_03"},when:"3"},{model:{type:"minecraft:model",model:"minecraft:item/light_04"},when:"4"},{model:{type:"minecraft:model",model:"minecraft:item/light_05"},when:"5"},{model:{type:"minecraft:model",model:"minecraft:item/light_06"},when:"6"},{model:{type:"minecraft:model",model:"minecraft:item/light_07"},when:"7"},{model:{type:"minecraft:model",model:"minecraft:item/light_08"},when:"8"},{model:{type:"minecraft:model",model:"minecraft:item/light_09"},when:"9"},{model:{type:"minecraft:model",model:"minecraft:item/light_10"},when:"10"},{model:{type:"minecraft:model",model:"minecraft:item/light_11"},when:"11"},{model:{type:"minecraft:model",model:"minecraft:item/light_12"},when:"12"},{model:{type:"minecraft:model",model:"minecraft:item/light_13"},when:"13"},{model:{type:"minecraft:model",model:"minecraft:item/light_14"},when:"14"},{model:{type:"minecraft:model",model:"minecraft:item/light_15"},when:"15"}],fallback:{type:"minecraft:model",model:"minecraft:item/light"},property:"minecraft:block_state"}},light_blue_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"light_blue"}}},light_blue_bed:{model:{type:"minecraft:special",base:"minecraft:item/light_blue_bed",model:{type:"minecraft:bed",texture:"minecraft:light_blue"}}},light_blue_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/light_blue_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/light_blue_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/light_blue_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/light_blue_bundle"},property:"minecraft:display_context"}},light_blue_candle:{model:{type:"minecraft:model",model:"minecraft:item/light_blue_candle"}},light_blue_carpet:{model:{type:"minecraft:model",model:"minecraft:block/light_blue_carpet"}},light_blue_concrete:{model:{type:"minecraft:model",model:"minecraft:block/light_blue_concrete"}},light_blue_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/light_blue_concrete_powder"}},light_blue_dye:{model:{type:"minecraft:model",model:"minecraft:item/light_blue_dye"}},light_blue_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/light_blue_glazed_terracotta"}},light_blue_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/light_blue_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_light_blue"}}},light_blue_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/light_blue_stained_glass"}},light_blue_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/light_blue_stained_glass_pane"}},light_blue_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/light_blue_terracotta"}},light_blue_wool:{model:{type:"minecraft:model",model:"minecraft:block/light_blue_wool"}},light_gray_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"light_gray"}}},light_gray_bed:{model:{type:"minecraft:special",base:"minecraft:item/light_gray_bed",model:{type:"minecraft:bed",texture:"minecraft:light_gray"}}},light_gray_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/light_gray_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/light_gray_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/light_gray_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/light_gray_bundle"},property:"minecraft:display_context"}},light_gray_candle:{model:{type:"minecraft:model",model:"minecraft:item/light_gray_candle"}},light_gray_carpet:{model:{type:"minecraft:model",model:"minecraft:block/light_gray_carpet"}},light_gray_concrete:{model:{type:"minecraft:model",model:"minecraft:block/light_gray_concrete"}},light_gray_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/light_gray_concrete_powder"}},light_gray_dye:{model:{type:"minecraft:model",model:"minecraft:item/light_gray_dye"}},light_gray_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/light_gray_glazed_terracotta"}},light_gray_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/light_gray_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_light_gray"}}},light_gray_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/light_gray_stained_glass"}},light_gray_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/light_gray_stained_glass_pane"}},light_gray_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/light_gray_terracotta"}},light_gray_wool:{model:{type:"minecraft:model",model:"minecraft:block/light_gray_wool"}},light_weighted_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/light_weighted_pressure_plate"}},lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/lightning_rod"}},lilac:{model:{type:"minecraft:model",model:"minecraft:item/lilac"}},lily_of_the_valley:{model:{type:"minecraft:model",model:"minecraft:item/lily_of_the_valley"}},lily_pad:{model:{type:"minecraft:model",model:"minecraft:item/lily_pad",tints:[{type:"minecraft:constant",value:-9321636}]}},lime_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"lime"}}},lime_bed:{model:{type:"minecraft:special",base:"minecraft:item/lime_bed",model:{type:"minecraft:bed",texture:"minecraft:lime"}}},lime_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/lime_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/lime_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/lime_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/lime_bundle"},property:"minecraft:display_context"}},lime_candle:{model:{type:"minecraft:model",model:"minecraft:item/lime_candle"}},lime_carpet:{model:{type:"minecraft:model",model:"minecraft:block/lime_carpet"}},lime_concrete:{model:{type:"minecraft:model",model:"minecraft:block/lime_concrete"}},lime_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/lime_concrete_powder"}},lime_dye:{model:{type:"minecraft:model",model:"minecraft:item/lime_dye"}},lime_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/lime_glazed_terracotta"}},lime_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/lime_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_lime"}}},lime_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/lime_stained_glass"}},lime_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/lime_stained_glass_pane"}},lime_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/lime_terracotta"}},lime_wool:{model:{type:"minecraft:model",model:"minecraft:block/lime_wool"}},lingering_potion:{model:{type:"minecraft:model",model:"minecraft:item/lingering_potion",tints:[{type:"minecraft:potion",default:-13083194}]}},llama_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/llama_spawn_egg"}},lodestone:{model:{type:"minecraft:model",model:"minecraft:block/lodestone"}},loom:{model:{type:"minecraft:model",model:"minecraft:block/loom"}},mace:{model:{type:"minecraft:model",model:"minecraft:item/mace"}},magenta_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"magenta"}}},magenta_bed:{model:{type:"minecraft:special",base:"minecraft:item/magenta_bed",model:{type:"minecraft:bed",texture:"minecraft:magenta"}}},magenta_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/magenta_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/magenta_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/magenta_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/magenta_bundle"},property:"minecraft:display_context"}},magenta_candle:{model:{type:"minecraft:model",model:"minecraft:item/magenta_candle"}},magenta_carpet:{model:{type:"minecraft:model",model:"minecraft:block/magenta_carpet"}},magenta_concrete:{model:{type:"minecraft:model",model:"minecraft:block/magenta_concrete"}},magenta_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/magenta_concrete_powder"}},magenta_dye:{model:{type:"minecraft:model",model:"minecraft:item/magenta_dye"}},magenta_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/magenta_glazed_terracotta"}},magenta_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/magenta_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_magenta"}}},magenta_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/magenta_stained_glass"}},magenta_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/magenta_stained_glass_pane"}},magenta_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/magenta_terracotta"}},magenta_wool:{model:{type:"minecraft:model",model:"minecraft:block/magenta_wool"}},magma_block:{model:{type:"minecraft:model",model:"minecraft:block/magma_block"}},magma_cream:{model:{type:"minecraft:model",model:"minecraft:item/magma_cream"}},magma_cube_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/magma_cube_spawn_egg"}},mangrove_boat:{model:{type:"minecraft:model",model:"minecraft:item/mangrove_boat"}},mangrove_button:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_button_inventory"}},mangrove_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/mangrove_chest_boat"}},mangrove_door:{model:{type:"minecraft:model",model:"minecraft:item/mangrove_door"}},mangrove_fence:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_fence_inventory"}},mangrove_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_fence_gate"}},mangrove_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/mangrove_hanging_sign"}},mangrove_leaves:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_leaves",tints:[{type:"minecraft:constant",value:-7158200}]}},mangrove_log:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_log"}},mangrove_planks:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_planks"}},mangrove_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_pressure_plate"}},mangrove_propagule:{model:{type:"minecraft:model",model:"minecraft:item/mangrove_propagule"}},mangrove_roots:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_roots"}},mangrove_sign:{model:{type:"minecraft:model",model:"minecraft:item/mangrove_sign"}},mangrove_slab:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_slab"}},mangrove_stairs:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_stairs"}},mangrove_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_trapdoor_bottom"}},mangrove_wood:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_wood"}},map:{model:{type:"minecraft:model",model:"minecraft:item/map"}},medium_amethyst_bud:{model:{type:"minecraft:model",model:"minecraft:item/medium_amethyst_bud"}},melon:{model:{type:"minecraft:model",model:"minecraft:block/melon"}},melon_seeds:{model:{type:"minecraft:model",model:"minecraft:item/melon_seeds"}},melon_slice:{model:{type:"minecraft:model",model:"minecraft:item/melon_slice"}},milk_bucket:{model:{type:"minecraft:model",model:"minecraft:item/milk_bucket"}},minecart:{model:{type:"minecraft:model",model:"minecraft:item/minecart"}},miner_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/miner_pottery_sherd"}},mojang_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/mojang_banner_pattern"}},mooshroom_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/mooshroom_spawn_egg"}},moss_block:{model:{type:"minecraft:model",model:"minecraft:block/moss_block"}},moss_carpet:{model:{type:"minecraft:model",model:"minecraft:block/moss_carpet"}},mossy_cobblestone:{model:{type:"minecraft:model",model:"minecraft:block/mossy_cobblestone"}},mossy_cobblestone_slab:{model:{type:"minecraft:model",model:"minecraft:block/mossy_cobblestone_slab"}},mossy_cobblestone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/mossy_cobblestone_stairs"}},mossy_cobblestone_wall:{model:{type:"minecraft:model",model:"minecraft:block/mossy_cobblestone_wall_inventory"}},mossy_stone_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/mossy_stone_brick_slab"}},mossy_stone_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/mossy_stone_brick_stairs"}},mossy_stone_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/mossy_stone_brick_wall_inventory"}},mossy_stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/mossy_stone_bricks"}},mourner_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/mourner_pottery_sherd"}},mud:{model:{type:"minecraft:model",model:"minecraft:block/mud"}},mud_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/mud_brick_slab"}},mud_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/mud_brick_stairs"}},mud_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/mud_brick_wall_inventory"}},mud_bricks:{model:{type:"minecraft:model",model:"minecraft:block/mud_bricks"}},muddy_mangrove_roots:{model:{type:"minecraft:model",model:"minecraft:block/muddy_mangrove_roots"}},mule_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/mule_spawn_egg"}},mushroom_stem:{model:{type:"minecraft:model",model:"minecraft:block/mushroom_stem_inventory"}},mushroom_stew:{model:{type:"minecraft:model",model:"minecraft:item/mushroom_stew"}},music_disc_11:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_11"}},music_disc_13:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_13"}},music_disc_5:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_5"}},music_disc_blocks:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_blocks"}},music_disc_cat:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_cat"}},music_disc_chirp:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_chirp"}},music_disc_creator:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_creator"}},music_disc_creator_music_box:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_creator_music_box"}},music_disc_far:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_far"}},music_disc_mall:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_mall"}},music_disc_mellohi:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_mellohi"}},music_disc_otherside:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_otherside"}},music_disc_pigstep:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_pigstep"}},music_disc_precipice:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_precipice"}},music_disc_relic:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_relic"}},music_disc_stal:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_stal"}},music_disc_strad:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_strad"}},music_disc_wait:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_wait"}},music_disc_ward:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_ward"}},mutton:{model:{type:"minecraft:model",model:"minecraft:item/mutton"}},mycelium:{model:{type:"minecraft:model",model:"minecraft:block/mycelium"}},name_tag:{model:{type:"minecraft:model",model:"minecraft:item/name_tag"}},nautilus_shell:{model:{type:"minecraft:model",model:"minecraft:item/nautilus_shell"}},nether_brick:{model:{type:"minecraft:model",model:"minecraft:item/nether_brick"}},nether_brick_fence:{model:{type:"minecraft:model",model:"minecraft:block/nether_brick_fence_inventory"}},nether_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/nether_brick_slab"}},nether_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/nether_brick_stairs"}},nether_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/nether_brick_wall_inventory"}},nether_bricks:{model:{type:"minecraft:model",model:"minecraft:block/nether_bricks"}},nether_gold_ore:{model:{type:"minecraft:model",model:"minecraft:block/nether_gold_ore"}},nether_quartz_ore:{model:{type:"minecraft:model",model:"minecraft:block/nether_quartz_ore"}},nether_sprouts:{model:{type:"minecraft:model",model:"minecraft:item/nether_sprouts"}},nether_star:{model:{type:"minecraft:model",model:"minecraft:item/nether_star"}},nether_wart:{model:{type:"minecraft:model",model:"minecraft:item/nether_wart"}},nether_wart_block:{model:{type:"minecraft:model",model:"minecraft:block/nether_wart_block"}},netherite_axe:{model:{type:"minecraft:model",model:"minecraft:item/netherite_axe"}},netherite_block:{model:{type:"minecraft:model",model:"minecraft:block/netherite_block"}},netherite_boots:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_boots_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/netherite_boots"},property:"minecraft:trim_material"}},netherite_chestplate:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/netherite_chestplate"},property:"minecraft:trim_material"}},netherite_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_helmet_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/netherite_helmet"},property:"minecraft:trim_material"}},netherite_hoe:{model:{type:"minecraft:model",model:"minecraft:item/netherite_hoe"}},netherite_ingot:{model:{type:"minecraft:model",model:"minecraft:item/netherite_ingot"}},netherite_leggings:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/netherite_leggings_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/netherite_leggings"},property:"minecraft:trim_material"}},netherite_pickaxe:{model:{type:"minecraft:model",model:"minecraft:item/netherite_pickaxe"}},netherite_scrap:{model:{type:"minecraft:model",model:"minecraft:item/netherite_scrap"}},netherite_shovel:{model:{type:"minecraft:model",model:"minecraft:item/netherite_shovel"}},netherite_sword:{model:{type:"minecraft:model",model:"minecraft:item/netherite_sword"}},netherite_upgrade_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/netherite_upgrade_smithing_template"}},netherrack:{model:{type:"minecraft:model",model:"minecraft:block/netherrack"}},note_block:{model:{type:"minecraft:model",model:"minecraft:block/note_block"}},oak_boat:{model:{type:"minecraft:model",model:"minecraft:item/oak_boat"}},oak_button:{model:{type:"minecraft:model",model:"minecraft:block/oak_button_inventory"}},oak_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/oak_chest_boat"}},oak_door:{model:{type:"minecraft:model",model:"minecraft:item/oak_door"}},oak_fence:{model:{type:"minecraft:model",model:"minecraft:block/oak_fence_inventory"}},oak_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/oak_fence_gate"}},oak_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/oak_hanging_sign"}},oak_leaves:{model:{type:"minecraft:model",model:"minecraft:block/oak_leaves",tints:[{type:"minecraft:constant",value:-12012264}]}},oak_log:{model:{type:"minecraft:model",model:"minecraft:block/oak_log"}},oak_planks:{model:{type:"minecraft:model",model:"minecraft:block/oak_planks"}},oak_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/oak_pressure_plate"}},oak_sapling:{model:{type:"minecraft:model",model:"minecraft:item/oak_sapling"}},oak_sign:{model:{type:"minecraft:model",model:"minecraft:item/oak_sign"}},oak_slab:{model:{type:"minecraft:model",model:"minecraft:block/oak_slab"}},oak_stairs:{model:{type:"minecraft:model",model:"minecraft:block/oak_stairs"}},oak_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/oak_trapdoor_bottom"}},oak_wood:{model:{type:"minecraft:model",model:"minecraft:block/oak_wood"}},observer:{model:{type:"minecraft:model",model:"minecraft:block/observer"}},obsidian:{model:{type:"minecraft:model",model:"minecraft:block/obsidian"}},ocelot_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/ocelot_spawn_egg"}},ochre_froglight:{model:{type:"minecraft:model",model:"minecraft:block/ochre_froglight"}},ominous_bottle:{model:{type:"minecraft:model",model:"minecraft:item/ominous_bottle"}},ominous_trial_key:{model:{type:"minecraft:model",model:"minecraft:item/ominous_trial_key"}},open_eyeblossom:{model:{type:"minecraft:model",model:"minecraft:item/open_eyeblossom"}},orange_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"orange"}}},orange_bed:{model:{type:"minecraft:special",base:"minecraft:item/orange_bed",model:{type:"minecraft:bed",texture:"minecraft:orange"}}},orange_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/orange_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/orange_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/orange_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/orange_bundle"},property:"minecraft:display_context"}},orange_candle:{model:{type:"minecraft:model",model:"minecraft:item/orange_candle"}},orange_carpet:{model:{type:"minecraft:model",model:"minecraft:block/orange_carpet"}},orange_concrete:{model:{type:"minecraft:model",model:"minecraft:block/orange_concrete"}},orange_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/orange_concrete_powder"}},orange_dye:{model:{type:"minecraft:model",model:"minecraft:item/orange_dye"}},orange_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/orange_glazed_terracotta"}},orange_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/orange_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_orange"}}},orange_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/orange_stained_glass"}},orange_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/orange_stained_glass_pane"}},orange_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/orange_terracotta"}},orange_tulip:{model:{type:"minecraft:model",model:"minecraft:item/orange_tulip"}},orange_wool:{model:{type:"minecraft:model",model:"minecraft:block/orange_wool"}},oxeye_daisy:{model:{type:"minecraft:model",model:"minecraft:item/oxeye_daisy"}},oxidized_chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_chiseled_copper"}},oxidized_copper:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper"}},oxidized_copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper_bulb"}},oxidized_copper_door:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_door"}},oxidized_copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper_grate"}},oxidized_copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper_trapdoor_bottom"}},oxidized_cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_cut_copper"}},oxidized_cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_cut_copper_slab"}},oxidized_cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_cut_copper_stairs"}},packed_ice:{model:{type:"minecraft:model",model:"minecraft:block/packed_ice"}},packed_mud:{model:{type:"minecraft:model",model:"minecraft:block/packed_mud"}},painting:{model:{type:"minecraft:model",model:"minecraft:item/painting"}},pale_hanging_moss:{model:{type:"minecraft:model",model:"minecraft:item/pale_hanging_moss"}},pale_moss_block:{model:{type:"minecraft:model",model:"minecraft:block/pale_moss_block"}},pale_moss_carpet:{model:{type:"minecraft:model",model:"minecraft:block/pale_moss_carpet"}},pale_oak_boat:{model:{type:"minecraft:model",model:"minecraft:item/pale_oak_boat"}},pale_oak_button:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_button_inventory"}},pale_oak_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/pale_oak_chest_boat"}},pale_oak_door:{model:{type:"minecraft:model",model:"minecraft:item/pale_oak_door"}},pale_oak_fence:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_fence_inventory"}},pale_oak_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_fence_gate"}},pale_oak_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/pale_oak_hanging_sign"}},pale_oak_leaves:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_leaves"}},pale_oak_log:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_log"}},pale_oak_planks:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_planks"}},pale_oak_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_pressure_plate"}},pale_oak_sapling:{model:{type:"minecraft:model",model:"minecraft:item/pale_oak_sapling"}},pale_oak_sign:{model:{type:"minecraft:model",model:"minecraft:item/pale_oak_sign"}},pale_oak_slab:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_slab"}},pale_oak_stairs:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_stairs"}},pale_oak_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_trapdoor_bottom"}},pale_oak_wood:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_wood"}},panda_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/panda_spawn_egg"}},paper:{model:{type:"minecraft:model",model:"minecraft:item/paper"}},parrot_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/parrot_spawn_egg"}},pearlescent_froglight:{model:{type:"minecraft:model",model:"minecraft:block/pearlescent_froglight"}},peony:{model:{type:"minecraft:model",model:"minecraft:item/peony"}},petrified_oak_slab:{model:{type:"minecraft:model",model:"minecraft:block/petrified_oak_slab"}},phantom_membrane:{model:{type:"minecraft:model",model:"minecraft:item/phantom_membrane"}},phantom_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/phantom_spawn_egg"}},pig_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/pig_spawn_egg"}},piglin_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/piglin_banner_pattern"}},piglin_brute_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/piglin_brute_spawn_egg"}},piglin_head:{model:{type:"minecraft:special",base:"minecraft:item/template_skull",model:{type:"minecraft:head",kind:"piglin"}}},piglin_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/piglin_spawn_egg"}},pillager_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/pillager_spawn_egg"}},pink_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"pink"}}},pink_bed:{model:{type:"minecraft:special",base:"minecraft:item/pink_bed",model:{type:"minecraft:bed",texture:"minecraft:pink"}}},pink_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/pink_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/pink_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/pink_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/pink_bundle"},property:"minecraft:display_context"}},pink_candle:{model:{type:"minecraft:model",model:"minecraft:item/pink_candle"}},pink_carpet:{model:{type:"minecraft:model",model:"minecraft:block/pink_carpet"}},pink_concrete:{model:{type:"minecraft:model",model:"minecraft:block/pink_concrete"}},pink_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/pink_concrete_powder"}},pink_dye:{model:{type:"minecraft:model",model:"minecraft:item/pink_dye"}},pink_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/pink_glazed_terracotta"}},pink_petals:{model:{type:"minecraft:model",model:"minecraft:item/pink_petals"}},pink_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/pink_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_pink"}}},pink_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/pink_stained_glass"}},pink_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/pink_stained_glass_pane"}},pink_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/pink_terracotta"}},pink_tulip:{model:{type:"minecraft:model",model:"minecraft:item/pink_tulip"}},pink_wool:{model:{type:"minecraft:model",model:"minecraft:block/pink_wool"}},piston:{model:{type:"minecraft:model",model:"minecraft:block/piston_inventory"}},pitcher_plant:{model:{type:"minecraft:model",model:"minecraft:item/pitcher_plant"}},pitcher_pod:{model:{type:"minecraft:model",model:"minecraft:item/pitcher_pod"}},player_head:{model:{type:"minecraft:special",base:"minecraft:item/template_skull",model:{type:"minecraft:player_head"}}},plenty_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/plenty_pottery_sherd"}},podzol:{model:{type:"minecraft:model",model:"minecraft:block/podzol"}},pointed_dripstone:{model:{type:"minecraft:model",model:"minecraft:item/pointed_dripstone"}},poisonous_potato:{model:{type:"minecraft:model",model:"minecraft:item/poisonous_potato"}},polar_bear_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/polar_bear_spawn_egg"}},polished_andesite:{model:{type:"minecraft:model",model:"minecraft:block/polished_andesite"}},polished_andesite_slab:{model:{type:"minecraft:model",model:"minecraft:block/polished_andesite_slab"}},polished_andesite_stairs:{model:{type:"minecraft:model",model:"minecraft:block/polished_andesite_stairs"}},polished_basalt:{model:{type:"minecraft:model",model:"minecraft:block/polished_basalt"}},polished_blackstone:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone"}},polished_blackstone_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_brick_slab"}},polished_blackstone_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_brick_stairs"}},polished_blackstone_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_brick_wall_inventory"}},polished_blackstone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_bricks"}},polished_blackstone_button:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_button_inventory"}},polished_blackstone_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_pressure_plate"}},polished_blackstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_slab"}},polished_blackstone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_stairs"}},polished_blackstone_wall:{model:{type:"minecraft:model",model:"minecraft:block/polished_blackstone_wall_inventory"}},polished_deepslate:{model:{type:"minecraft:model",model:"minecraft:block/polished_deepslate"}},polished_deepslate_slab:{model:{type:"minecraft:model",model:"minecraft:block/polished_deepslate_slab"}},polished_deepslate_stairs:{model:{type:"minecraft:model",model:"minecraft:block/polished_deepslate_stairs"}},polished_deepslate_wall:{model:{type:"minecraft:model",model:"minecraft:block/polished_deepslate_wall_inventory"}},polished_diorite:{model:{type:"minecraft:model",model:"minecraft:block/polished_diorite"}},polished_diorite_slab:{model:{type:"minecraft:model",model:"minecraft:block/polished_diorite_slab"}},polished_diorite_stairs:{model:{type:"minecraft:model",model:"minecraft:block/polished_diorite_stairs"}},polished_granite:{model:{type:"minecraft:model",model:"minecraft:block/polished_granite"}},polished_granite_slab:{model:{type:"minecraft:model",model:"minecraft:block/polished_granite_slab"}},polished_granite_stairs:{model:{type:"minecraft:model",model:"minecraft:block/polished_granite_stairs"}},polished_tuff:{model:{type:"minecraft:model",model:"minecraft:block/polished_tuff"}},polished_tuff_slab:{model:{type:"minecraft:model",model:"minecraft:block/polished_tuff_slab"}},polished_tuff_stairs:{model:{type:"minecraft:model",model:"minecraft:block/polished_tuff_stairs"}},polished_tuff_wall:{model:{type:"minecraft:model",model:"minecraft:block/polished_tuff_wall_inventory"}},popped_chorus_fruit:{model:{type:"minecraft:model",model:"minecraft:item/popped_chorus_fruit"}},poppy:{model:{type:"minecraft:model",model:"minecraft:item/poppy"}},porkchop:{model:{type:"minecraft:model",model:"minecraft:item/porkchop"}},potato:{model:{type:"minecraft:model",model:"minecraft:item/potato"}},potion:{model:{type:"minecraft:model",model:"minecraft:item/potion",tints:[{type:"minecraft:potion",default:-13083194}]}},powder_snow_bucket:{model:{type:"minecraft:model",model:"minecraft:item/powder_snow_bucket"}},powered_rail:{model:{type:"minecraft:model",model:"minecraft:item/powered_rail"}},prismarine:{model:{type:"minecraft:model",model:"minecraft:block/prismarine"}},prismarine_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/prismarine_brick_slab"}},prismarine_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/prismarine_brick_stairs"}},prismarine_bricks:{model:{type:"minecraft:model",model:"minecraft:block/prismarine_bricks"}},prismarine_crystals:{model:{type:"minecraft:model",model:"minecraft:item/prismarine_crystals"}},prismarine_shard:{model:{type:"minecraft:model",model:"minecraft:item/prismarine_shard"}},prismarine_slab:{model:{type:"minecraft:model",model:"minecraft:block/prismarine_slab"}},prismarine_stairs:{model:{type:"minecraft:model",model:"minecraft:block/prismarine_stairs"}},prismarine_wall:{model:{type:"minecraft:model",model:"minecraft:block/prismarine_wall_inventory"}},prize_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/prize_pottery_sherd"}},pufferfish:{model:{type:"minecraft:model",model:"minecraft:item/pufferfish"}},pufferfish_bucket:{model:{type:"minecraft:model",model:"minecraft:item/pufferfish_bucket"}},pufferfish_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/pufferfish_spawn_egg"}},pumpkin:{model:{type:"minecraft:model",model:"minecraft:block/pumpkin"}},pumpkin_pie:{model:{type:"minecraft:model",model:"minecraft:item/pumpkin_pie"}},pumpkin_seeds:{model:{type:"minecraft:model",model:"minecraft:item/pumpkin_seeds"}},purple_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"purple"}}},purple_bed:{model:{type:"minecraft:special",base:"minecraft:item/purple_bed",model:{type:"minecraft:bed",texture:"minecraft:purple"}}},purple_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/purple_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/purple_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/purple_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/purple_bundle"},property:"minecraft:display_context"}},purple_candle:{model:{type:"minecraft:model",model:"minecraft:item/purple_candle"}},purple_carpet:{model:{type:"minecraft:model",model:"minecraft:block/purple_carpet"}},purple_concrete:{model:{type:"minecraft:model",model:"minecraft:block/purple_concrete"}},purple_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/purple_concrete_powder"}},purple_dye:{model:{type:"minecraft:model",model:"minecraft:item/purple_dye"}},purple_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/purple_glazed_terracotta"}},purple_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/purple_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_purple"}}},purple_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/purple_stained_glass"}},purple_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/purple_stained_glass_pane"}},purple_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/purple_terracotta"}},purple_wool:{model:{type:"minecraft:model",model:"minecraft:block/purple_wool"}},purpur_block:{model:{type:"minecraft:model",model:"minecraft:block/purpur_block"}},purpur_pillar:{model:{type:"minecraft:model",model:"minecraft:block/purpur_pillar"}},purpur_slab:{model:{type:"minecraft:model",model:"minecraft:block/purpur_slab"}},purpur_stairs:{model:{type:"minecraft:model",model:"minecraft:block/purpur_stairs"}},quartz:{model:{type:"minecraft:model",model:"minecraft:item/quartz"}},quartz_block:{model:{type:"minecraft:model",model:"minecraft:block/quartz_block"}},quartz_bricks:{model:{type:"minecraft:model",model:"minecraft:block/quartz_bricks"}},quartz_pillar:{model:{type:"minecraft:model",model:"minecraft:block/quartz_pillar"}},quartz_slab:{model:{type:"minecraft:model",model:"minecraft:block/quartz_slab"}},quartz_stairs:{model:{type:"minecraft:model",model:"minecraft:block/quartz_stairs"}},rabbit:{model:{type:"minecraft:model",model:"minecraft:item/rabbit"}},rabbit_foot:{model:{type:"minecraft:model",model:"minecraft:item/rabbit_foot"}},rabbit_hide:{model:{type:"minecraft:model",model:"minecraft:item/rabbit_hide"}},rabbit_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/rabbit_spawn_egg"}},rabbit_stew:{model:{type:"minecraft:model",model:"minecraft:item/rabbit_stew"}},rail:{model:{type:"minecraft:model",model:"minecraft:item/rail"}},raiser_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/raiser_armor_trim_smithing_template"}},ravager_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/ravager_spawn_egg"}},raw_copper:{model:{type:"minecraft:model",model:"minecraft:item/raw_copper"}},raw_copper_block:{model:{type:"minecraft:model",model:"minecraft:block/raw_copper_block"}},raw_gold:{model:{type:"minecraft:model",model:"minecraft:item/raw_gold"}},raw_gold_block:{model:{type:"minecraft:model",model:"minecraft:block/raw_gold_block"}},raw_iron:{model:{type:"minecraft:model",model:"minecraft:item/raw_iron"}},raw_iron_block:{model:{type:"minecraft:model",model:"minecraft:block/raw_iron_block"}},recovery_compass:{model:{type:"minecraft:range_dispatch",entries:[{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_16"},threshold:0},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_17"},threshold:.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_18"},threshold:1.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_19"},threshold:2.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_20"},threshold:3.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_21"},threshold:4.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_22"},threshold:5.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_23"},threshold:6.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_24"},threshold:7.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_25"},threshold:8.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_26"},threshold:9.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_27"},threshold:10.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_28"},threshold:11.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_29"},threshold:12.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_30"},threshold:13.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_31"},threshold:14.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_00"},threshold:15.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_01"},threshold:16.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_02"},threshold:17.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_03"},threshold:18.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_04"},threshold:19.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_05"},threshold:20.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_06"},threshold:21.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_07"},threshold:22.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_08"},threshold:23.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_09"},threshold:24.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_10"},threshold:25.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_11"},threshold:26.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_12"},threshold:27.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_13"},threshold:28.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_14"},threshold:29.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_15"},threshold:30.5},{model:{type:"minecraft:model",model:"minecraft:item/recovery_compass_16"},threshold:31.5}],property:"minecraft:compass",scale:32,target:"recovery"}},red_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"red"}}},red_bed:{model:{type:"minecraft:special",base:"minecraft:item/red_bed",model:{type:"minecraft:bed",texture:"minecraft:red"}}},red_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/red_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/red_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/red_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/red_bundle"},property:"minecraft:display_context"}},red_candle:{model:{type:"minecraft:model",model:"minecraft:item/red_candle"}},red_carpet:{model:{type:"minecraft:model",model:"minecraft:block/red_carpet"}},red_concrete:{model:{type:"minecraft:model",model:"minecraft:block/red_concrete"}},red_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/red_concrete_powder"}},red_dye:{model:{type:"minecraft:model",model:"minecraft:item/red_dye"}},red_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/red_glazed_terracotta"}},red_mushroom:{model:{type:"minecraft:model",model:"minecraft:item/red_mushroom"}},red_mushroom_block:{model:{type:"minecraft:model",model:"minecraft:block/red_mushroom_block_inventory"}},red_nether_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/red_nether_brick_slab"}},red_nether_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/red_nether_brick_stairs"}},red_nether_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/red_nether_brick_wall_inventory"}},red_nether_bricks:{model:{type:"minecraft:model",model:"minecraft:block/red_nether_bricks"}},red_sand:{model:{type:"minecraft:model",model:"minecraft:block/red_sand"}},red_sandstone:{model:{type:"minecraft:model",model:"minecraft:block/red_sandstone"}},red_sandstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/red_sandstone_slab"}},red_sandstone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/red_sandstone_stairs"}},red_sandstone_wall:{model:{type:"minecraft:model",model:"minecraft:block/red_sandstone_wall_inventory"}},red_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/red_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_red"}}},red_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/red_stained_glass"}},red_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/red_stained_glass_pane"}},red_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/red_terracotta"}},red_tulip:{model:{type:"minecraft:model",model:"minecraft:item/red_tulip"}},red_wool:{model:{type:"minecraft:model",model:"minecraft:block/red_wool"}},redstone:{model:{type:"minecraft:model",model:"minecraft:item/redstone"}},redstone_block:{model:{type:"minecraft:model",model:"minecraft:block/redstone_block"}},redstone_lamp:{model:{type:"minecraft:model",model:"minecraft:block/redstone_lamp"}},redstone_ore:{model:{type:"minecraft:model",model:"minecraft:block/redstone_ore"}},redstone_torch:{model:{type:"minecraft:model",model:"minecraft:item/redstone_torch"}},reinforced_deepslate:{model:{type:"minecraft:model",model:"minecraft:block/reinforced_deepslate"}},repeater:{model:{type:"minecraft:model",model:"minecraft:item/repeater"}},repeating_command_block:{model:{type:"minecraft:model",model:"minecraft:block/repeating_command_block"}},resin_block:{model:{type:"minecraft:model",model:"minecraft:block/resin_block"}},resin_brick:{model:{type:"minecraft:model",model:"minecraft:item/resin_brick"}},resin_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/resin_brick_slab"}},resin_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/resin_brick_stairs"}},resin_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/resin_brick_wall_inventory"}},resin_bricks:{model:{type:"minecraft:model",model:"minecraft:block/resin_bricks"}},resin_clump:{model:{type:"minecraft:model",model:"minecraft:item/resin_clump"}},respawn_anchor:{model:{type:"minecraft:model",model:"minecraft:block/respawn_anchor_0"}},rib_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/rib_armor_trim_smithing_template"}},rooted_dirt:{model:{type:"minecraft:model",model:"minecraft:block/rooted_dirt"}},rose_bush:{model:{type:"minecraft:model",model:"minecraft:item/rose_bush"}},rotten_flesh:{model:{type:"minecraft:model",model:"minecraft:item/rotten_flesh"}},saddle:{model:{type:"minecraft:model",model:"minecraft:item/saddle"}},salmon:{model:{type:"minecraft:model",model:"minecraft:item/salmon"}},salmon_bucket:{model:{type:"minecraft:model",model:"minecraft:item/salmon_bucket"}},salmon_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/salmon_spawn_egg"}},sand:{model:{type:"minecraft:model",model:"minecraft:block/sand"}},sandstone:{model:{type:"minecraft:model",model:"minecraft:block/sandstone"}},sandstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/sandstone_slab"}},sandstone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/sandstone_stairs"}},sandstone_wall:{model:{type:"minecraft:model",model:"minecraft:block/sandstone_wall_inventory"}},scaffolding:{model:{type:"minecraft:model",model:"minecraft:block/scaffolding_stable"}},scrape_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/scrape_pottery_sherd"}},sculk:{model:{type:"minecraft:model",model:"minecraft:block/sculk"}},sculk_catalyst:{model:{type:"minecraft:model",model:"minecraft:block/sculk_catalyst"}},sculk_sensor:{model:{type:"minecraft:model",model:"minecraft:block/sculk_sensor_inactive"}},sculk_shrieker:{model:{type:"minecraft:model",model:"minecraft:block/sculk_shrieker"}},sculk_vein:{model:{type:"minecraft:model",model:"minecraft:item/sculk_vein"}},sea_lantern:{model:{type:"minecraft:model",model:"minecraft:block/sea_lantern"}},sea_pickle:{model:{type:"minecraft:model",model:"minecraft:item/sea_pickle"}},seagrass:{model:{type:"minecraft:model",model:"minecraft:item/seagrass"}},sentry_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/sentry_armor_trim_smithing_template"}},shaper_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/shaper_armor_trim_smithing_template"}},sheaf_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/sheaf_pottery_sherd"}},shears:{model:{type:"minecraft:model",model:"minecraft:item/shears"}},sheep_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/sheep_spawn_egg"}},shelter_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/shelter_pottery_sherd"}},shield:{model:{type:"minecraft:condition",on_false:{type:"minecraft:special",base:"minecraft:item/shield",model:{type:"minecraft:shield"}},on_true:{type:"minecraft:special",base:"minecraft:item/shield_blocking",model:{type:"minecraft:shield"}},property:"minecraft:using_item"}},short_grass:{model:{type:"minecraft:model",model:"minecraft:item/short_grass",tints:[{type:"minecraft:grass",downfall:1,temperature:.5}]}},shroomlight:{model:{type:"minecraft:model",model:"minecraft:block/shroomlight"}},shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker"}}},shulker_shell:{model:{type:"minecraft:model",model:"minecraft:item/shulker_shell"}},shulker_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/shulker_spawn_egg"}},silence_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/silence_armor_trim_smithing_template"}},silverfish_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/silverfish_spawn_egg"}},skeleton_horse_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/skeleton_horse_spawn_egg"}},skeleton_skull:{model:{type:"minecraft:special",base:"minecraft:item/template_skull",model:{type:"minecraft:head",kind:"skeleton"}}},skeleton_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/skeleton_spawn_egg"}},skull_banner_pattern:{model:{type:"minecraft:model",model:"minecraft:item/skull_banner_pattern"}},skull_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/skull_pottery_sherd"}},slime_ball:{model:{type:"minecraft:model",model:"minecraft:item/slime_ball"}},slime_block:{model:{type:"minecraft:model",model:"minecraft:block/slime_block"}},slime_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/slime_spawn_egg"}},small_amethyst_bud:{model:{type:"minecraft:model",model:"minecraft:item/small_amethyst_bud"}},small_dripleaf:{model:{type:"minecraft:model",model:"minecraft:item/small_dripleaf"}},smithing_table:{model:{type:"minecraft:model",model:"minecraft:block/smithing_table"}},smoker:{model:{type:"minecraft:model",model:"minecraft:block/smoker"}},smooth_basalt:{model:{type:"minecraft:model",model:"minecraft:block/smooth_basalt"}},smooth_quartz:{model:{type:"minecraft:model",model:"minecraft:block/smooth_quartz"}},smooth_quartz_slab:{model:{type:"minecraft:model",model:"minecraft:block/smooth_quartz_slab"}},smooth_quartz_stairs:{model:{type:"minecraft:model",model:"minecraft:block/smooth_quartz_stairs"}},smooth_red_sandstone:{model:{type:"minecraft:model",model:"minecraft:block/smooth_red_sandstone"}},smooth_red_sandstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/smooth_red_sandstone_slab"}},smooth_red_sandstone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/smooth_red_sandstone_stairs"}},smooth_sandstone:{model:{type:"minecraft:model",model:"minecraft:block/smooth_sandstone"}},smooth_sandstone_slab:{model:{type:"minecraft:model",model:"minecraft:block/smooth_sandstone_slab"}},smooth_sandstone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/smooth_sandstone_stairs"}},smooth_stone:{model:{type:"minecraft:model",model:"minecraft:block/smooth_stone"}},smooth_stone_slab:{model:{type:"minecraft:model",model:"minecraft:block/smooth_stone_slab"}},sniffer_egg:{model:{type:"minecraft:model",model:"minecraft:item/sniffer_egg"}},sniffer_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/sniffer_spawn_egg"}},snort_pottery_sherd:{model:{type:"minecraft:model",model:"minecraft:item/snort_pottery_sherd"}},snout_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/snout_armor_trim_smithing_template"}},snow:{model:{type:"minecraft:model",model:"minecraft:block/snow_height2"}},snow_block:{model:{type:"minecraft:model",model:"minecraft:block/snow_block"}},snow_golem_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/snow_golem_spawn_egg"}},snowball:{model:{type:"minecraft:model",model:"minecraft:item/snowball"}},soul_campfire:{model:{type:"minecraft:model",model:"minecraft:item/soul_campfire"}},soul_lantern:{model:{type:"minecraft:model",model:"minecraft:item/soul_lantern"}},soul_sand:{model:{type:"minecraft:model",model:"minecraft:block/soul_sand"}},soul_soil:{model:{type:"minecraft:model",model:"minecraft:block/soul_soil"}},soul_torch:{model:{type:"minecraft:model",model:"minecraft:item/soul_torch"}},spawner:{model:{type:"minecraft:model",model:"minecraft:block/spawner"}},spectral_arrow:{model:{type:"minecraft:model",model:"minecraft:item/spectral_arrow"}},spider_eye:{model:{type:"minecraft:model",model:"minecraft:item/spider_eye"}},spider_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/spider_spawn_egg"}},spire_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/spire_armor_trim_smithing_template"}},splash_potion:{model:{type:"minecraft:model",model:"minecraft:item/splash_potion",tints:[{type:"minecraft:potion",default:-13083194}]}},sponge:{model:{type:"minecraft:model",model:"minecraft:block/sponge"}},spore_blossom:{model:{type:"minecraft:model",model:"minecraft:block/spore_blossom"}},spruce_boat:{model:{type:"minecraft:model",model:"minecraft:item/spruce_boat"}},spruce_button:{model:{type:"minecraft:model",model:"minecraft:block/spruce_button_inventory"}},spruce_chest_boat:{model:{type:"minecraft:model",model:"minecraft:item/spruce_chest_boat"}},spruce_door:{model:{type:"minecraft:model",model:"minecraft:item/spruce_door"}},spruce_fence:{model:{type:"minecraft:model",model:"minecraft:block/spruce_fence_inventory"}},spruce_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/spruce_fence_gate"}},spruce_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/spruce_hanging_sign"}},spruce_leaves:{model:{type:"minecraft:model",model:"minecraft:block/spruce_leaves",tints:[{type:"minecraft:constant",value:-10380959}]}},spruce_log:{model:{type:"minecraft:model",model:"minecraft:block/spruce_log"}},spruce_planks:{model:{type:"minecraft:model",model:"minecraft:block/spruce_planks"}},spruce_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/spruce_pressure_plate"}},spruce_sapling:{model:{type:"minecraft:model",model:"minecraft:item/spruce_sapling"}},spruce_sign:{model:{type:"minecraft:model",model:"minecraft:item/spruce_sign"}},spruce_slab:{model:{type:"minecraft:model",model:"minecraft:block/spruce_slab"}},spruce_stairs:{model:{type:"minecraft:model",model:"minecraft:block/spruce_stairs"}},spruce_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/spruce_trapdoor_bottom"}},spruce_wood:{model:{type:"minecraft:model",model:"minecraft:block/spruce_wood"}},spyglass:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/spyglass"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/spyglass_in_hand"},property:"minecraft:display_context"}},squid_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/squid_spawn_egg"}},stick:{model:{type:"minecraft:model",model:"minecraft:item/stick"}},sticky_piston:{model:{type:"minecraft:model",model:"minecraft:block/sticky_piston_inventory"}},stone:{model:{type:"minecraft:model",model:"minecraft:block/stone"}},stone_axe:{model:{type:"minecraft:model",model:"minecraft:item/stone_axe"}},stone_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/stone_brick_slab"}},stone_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/stone_brick_stairs"}},stone_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/stone_brick_wall_inventory"}},stone_bricks:{model:{type:"minecraft:model",model:"minecraft:block/stone_bricks"}},stone_button:{model:{type:"minecraft:model",model:"minecraft:block/stone_button_inventory"}},stone_hoe:{model:{type:"minecraft:model",model:"minecraft:item/stone_hoe"}},stone_pickaxe:{model:{type:"minecraft:model",model:"minecraft:item/stone_pickaxe"}},stone_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/stone_pressure_plate"}},stone_shovel:{model:{type:"minecraft:model",model:"minecraft:item/stone_shovel"}},stone_slab:{model:{type:"minecraft:model",model:"minecraft:block/stone_slab"}},stone_stairs:{model:{type:"minecraft:model",model:"minecraft:block/stone_stairs"}},stone_sword:{model:{type:"minecraft:model",model:"minecraft:item/stone_sword"}},stonecutter:{model:{type:"minecraft:model",model:"minecraft:block/stonecutter"}},stray_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/stray_spawn_egg"}},strider_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/strider_spawn_egg"}},string:{model:{type:"minecraft:model",model:"minecraft:item/string"}},stripped_acacia_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_acacia_log"}},stripped_acacia_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_acacia_wood"}},stripped_bamboo_block:{model:{type:"minecraft:model",model:"minecraft:block/stripped_bamboo_block"}},stripped_birch_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_birch_log"}},stripped_birch_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_birch_wood"}},stripped_cherry_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_cherry_log"}},stripped_cherry_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_cherry_wood"}},stripped_crimson_hyphae:{model:{type:"minecraft:model",model:"minecraft:block/stripped_crimson_hyphae"}},stripped_crimson_stem:{model:{type:"minecraft:model",model:"minecraft:block/stripped_crimson_stem"}},stripped_dark_oak_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_dark_oak_log"}},stripped_dark_oak_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_dark_oak_wood"}},stripped_jungle_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_jungle_log"}},stripped_jungle_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_jungle_wood"}},stripped_mangrove_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_mangrove_log"}},stripped_mangrove_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_mangrove_wood"}},stripped_oak_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_oak_log"}},stripped_oak_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_oak_wood"}},stripped_pale_oak_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_pale_oak_log"}},stripped_pale_oak_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_pale_oak_wood"}},stripped_spruce_log:{model:{type:"minecraft:model",model:"minecraft:block/stripped_spruce_log"}},stripped_spruce_wood:{model:{type:"minecraft:model",model:"minecraft:block/stripped_spruce_wood"}},stripped_warped_hyphae:{model:{type:"minecraft:model",model:"minecraft:block/stripped_warped_hyphae"}},stripped_warped_stem:{model:{type:"minecraft:model",model:"minecraft:block/stripped_warped_stem"}},structure_block:{model:{type:"minecraft:model",model:"minecraft:block/structure_block"}},structure_void:{model:{type:"minecraft:model",model:"minecraft:item/structure_void"}},sugar:{model:{type:"minecraft:model",model:"minecraft:item/sugar"}},sugar_cane:{model:{type:"minecraft:model",model:"minecraft:item/sugar_cane"}},sunflower:{model:{type:"minecraft:model",model:"minecraft:item/sunflower"}},suspicious_gravel:{model:{type:"minecraft:model",model:"minecraft:block/suspicious_gravel_0"}},suspicious_sand:{model:{type:"minecraft:model",model:"minecraft:block/suspicious_sand_0"}},suspicious_stew:{model:{type:"minecraft:model",model:"minecraft:item/suspicious_stew"}},sweet_berries:{model:{type:"minecraft:model",model:"minecraft:item/sweet_berries"}},tadpole_bucket:{model:{type:"minecraft:model",model:"minecraft:item/tadpole_bucket"}},tadpole_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/tadpole_spawn_egg"}},tall_grass:{model:{type:"minecraft:model",model:"minecraft:item/tall_grass",tints:[{type:"minecraft:grass",downfall:1,temperature:.5}]}},target:{model:{type:"minecraft:model",model:"minecraft:block/target"}},terracotta:{model:{type:"minecraft:model",model:"minecraft:block/terracotta"}},tide_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/tide_armor_trim_smithing_template"}},tinted_glass:{model:{type:"minecraft:model",model:"minecraft:block/tinted_glass"}},tipped_arrow:{model:{type:"minecraft:model",model:"minecraft:item/tipped_arrow",tints:[{type:"minecraft:potion",default:-13083194}]}},tnt:{model:{type:"minecraft:model",model:"minecraft:block/tnt"}},tnt_minecart:{model:{type:"minecraft:model",model:"minecraft:item/tnt_minecart"}},torch:{model:{type:"minecraft:model",model:"minecraft:item/torch"}},torchflower:{model:{type:"minecraft:model",model:"minecraft:item/torchflower"}},torchflower_seeds:{model:{type:"minecraft:model",model:"minecraft:item/torchflower_seeds"}},totem_of_undying:{model:{type:"minecraft:model",model:"minecraft:item/totem_of_undying"}},trader_llama_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/trader_llama_spawn_egg"}},trapped_chest:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:special",base:"minecraft:item/trapped_chest",model:{type:"minecraft:chest",texture:"minecraft:christmas"}},when:["12-24","12-25","12-26"]}],fallback:{type:"minecraft:special",base:"minecraft:item/trapped_chest",model:{type:"minecraft:chest",texture:"minecraft:trapped"}},pattern:"MM-dd",property:"minecraft:local_time"}},trial_key:{model:{type:"minecraft:model",model:"minecraft:item/trial_key"}},trial_spawner:{model:{type:"minecraft:model",model:"minecraft:block/trial_spawner"}},trident:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/trident"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:condition",on_false:{type:"minecraft:special",base:"minecraft:item/trident_in_hand",model:{type:"minecraft:trident"}},on_true:{type:"minecraft:special",base:"minecraft:item/trident_throwing",model:{type:"minecraft:trident"}},property:"minecraft:using_item"},property:"minecraft:display_context"}},tripwire_hook:{model:{type:"minecraft:model",model:"minecraft:item/tripwire_hook"}},tropical_fish:{model:{type:"minecraft:model",model:"minecraft:item/tropical_fish"}},tropical_fish_bucket:{model:{type:"minecraft:model",model:"minecraft:item/tropical_fish_bucket"}},tropical_fish_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/tropical_fish_spawn_egg"}},tube_coral:{model:{type:"minecraft:model",model:"minecraft:item/tube_coral"}},tube_coral_block:{model:{type:"minecraft:model",model:"minecraft:block/tube_coral_block"}},tube_coral_fan:{model:{type:"minecraft:model",model:"minecraft:item/tube_coral_fan"}},tuff:{model:{type:"minecraft:model",model:"minecraft:block/tuff"}},tuff_brick_slab:{model:{type:"minecraft:model",model:"minecraft:block/tuff_brick_slab"}},tuff_brick_stairs:{model:{type:"minecraft:model",model:"minecraft:block/tuff_brick_stairs"}},tuff_brick_wall:{model:{type:"minecraft:model",model:"minecraft:block/tuff_brick_wall_inventory"}},tuff_bricks:{model:{type:"minecraft:model",model:"minecraft:block/tuff_bricks"}},tuff_slab:{model:{type:"minecraft:model",model:"minecraft:block/tuff_slab"}},tuff_stairs:{model:{type:"minecraft:model",model:"minecraft:block/tuff_stairs"}},tuff_wall:{model:{type:"minecraft:model",model:"minecraft:block/tuff_wall_inventory"}},turtle_egg:{model:{type:"minecraft:model",model:"minecraft:item/turtle_egg"}},turtle_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/turtle_helmet_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/turtle_helmet"},property:"minecraft:trim_material"}},turtle_scute:{model:{type:"minecraft:model",model:"minecraft:item/turtle_scute"}},turtle_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/turtle_spawn_egg"}},twisting_vines:{model:{type:"minecraft:model",model:"minecraft:item/twisting_vines"}},vault:{model:{type:"minecraft:model",model:"minecraft:block/vault"}},verdant_froglight:{model:{type:"minecraft:model",model:"minecraft:block/verdant_froglight"}},vex_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/vex_armor_trim_smithing_template"}},vex_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/vex_spawn_egg"}},villager_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/villager_spawn_egg"}},vindicator_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/vindicator_spawn_egg"}},vine:{model:{type:"minecraft:model",model:"minecraft:item/vine",tints:[{type:"minecraft:constant",value:-12012264}]}},wandering_trader_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/wandering_trader_spawn_egg"}},ward_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/ward_armor_trim_smithing_template"}},warden_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/warden_spawn_egg"}},warped_button:{model:{type:"minecraft:model",model:"minecraft:block/warped_button_inventory"}},warped_door:{model:{type:"minecraft:model",model:"minecraft:item/warped_door"}},warped_fence:{model:{type:"minecraft:model",model:"minecraft:block/warped_fence_inventory"}},warped_fence_gate:{model:{type:"minecraft:model",model:"minecraft:block/warped_fence_gate"}},warped_fungus:{model:{type:"minecraft:model",model:"minecraft:item/warped_fungus"}},warped_fungus_on_a_stick:{model:{type:"minecraft:model",model:"minecraft:item/warped_fungus_on_a_stick"}},warped_hanging_sign:{model:{type:"minecraft:model",model:"minecraft:item/warped_hanging_sign"}},warped_hyphae:{model:{type:"minecraft:model",model:"minecraft:block/warped_hyphae"}},warped_nylium:{model:{type:"minecraft:model",model:"minecraft:block/warped_nylium"}},warped_planks:{model:{type:"minecraft:model",model:"minecraft:block/warped_planks"}},warped_pressure_plate:{model:{type:"minecraft:model",model:"minecraft:block/warped_pressure_plate"}},warped_roots:{model:{type:"minecraft:model",model:"minecraft:item/warped_roots"}},warped_sign:{model:{type:"minecraft:model",model:"minecraft:item/warped_sign"}},warped_slab:{model:{type:"minecraft:model",model:"minecraft:block/warped_slab"}},warped_stairs:{model:{type:"minecraft:model",model:"minecraft:block/warped_stairs"}},warped_stem:{model:{type:"minecraft:model",model:"minecraft:block/warped_stem"}},warped_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/warped_trapdoor_bottom"}},warped_wart_block:{model:{type:"minecraft:model",model:"minecraft:block/warped_wart_block"}},water_bucket:{model:{type:"minecraft:model",model:"minecraft:item/water_bucket"}},waxed_chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/chiseled_copper"}},waxed_copper_block:{model:{type:"minecraft:model",model:"minecraft:block/copper_block"}},waxed_copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/copper_bulb"}},waxed_copper_door:{model:{type:"minecraft:model",model:"minecraft:item/copper_door"}},waxed_copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/copper_grate"}},waxed_copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/copper_trapdoor_bottom"}},waxed_cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/cut_copper"}},waxed_cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/cut_copper_slab"}},waxed_cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/cut_copper_stairs"}},waxed_exposed_chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/exposed_chiseled_copper"}},waxed_exposed_copper:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper"}},waxed_exposed_copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper_bulb"}},waxed_exposed_copper_door:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_door"}},waxed_exposed_copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper_grate"}},waxed_exposed_copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/exposed_copper_trapdoor_bottom"}},waxed_exposed_cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/exposed_cut_copper"}},waxed_exposed_cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/exposed_cut_copper_slab"}},waxed_exposed_cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/exposed_cut_copper_stairs"}},waxed_oxidized_chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_chiseled_copper"}},waxed_oxidized_copper:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper"}},waxed_oxidized_copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper_bulb"}},waxed_oxidized_copper_door:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_door"}},waxed_oxidized_copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper_grate"}},waxed_oxidized_copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_copper_trapdoor_bottom"}},waxed_oxidized_cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_cut_copper"}},waxed_oxidized_cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_cut_copper_slab"}},waxed_oxidized_cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_cut_copper_stairs"}},waxed_weathered_chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/weathered_chiseled_copper"}},waxed_weathered_copper:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper"}},waxed_weathered_copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper_bulb"}},waxed_weathered_copper_door:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_door"}},waxed_weathered_copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper_grate"}},waxed_weathered_copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper_trapdoor_bottom"}},waxed_weathered_cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/weathered_cut_copper"}},waxed_weathered_cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/weathered_cut_copper_slab"}},waxed_weathered_cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/weathered_cut_copper_stairs"}},wayfinder_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/wayfinder_armor_trim_smithing_template"}},weathered_chiseled_copper:{model:{type:"minecraft:model",model:"minecraft:block/weathered_chiseled_copper"}},weathered_copper:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper"}},weathered_copper_bulb:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper_bulb"}},weathered_copper_door:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_door"}},weathered_copper_grate:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper_grate"}},weathered_copper_trapdoor:{model:{type:"minecraft:model",model:"minecraft:block/weathered_copper_trapdoor_bottom"}},weathered_cut_copper:{model:{type:"minecraft:model",model:"minecraft:block/weathered_cut_copper"}},weathered_cut_copper_slab:{model:{type:"minecraft:model",model:"minecraft:block/weathered_cut_copper_slab"}},weathered_cut_copper_stairs:{model:{type:"minecraft:model",model:"minecraft:block/weathered_cut_copper_stairs"}},weeping_vines:{model:{type:"minecraft:model",model:"minecraft:item/weeping_vines"}},wet_sponge:{model:{type:"minecraft:model",model:"minecraft:block/wet_sponge"}},wheat:{model:{type:"minecraft:model",model:"minecraft:item/wheat"}},wheat_seeds:{model:{type:"minecraft:model",model:"minecraft:item/wheat_seeds"}},white_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"white"}}},white_bed:{model:{type:"minecraft:special",base:"minecraft:item/white_bed",model:{type:"minecraft:bed",texture:"minecraft:white"}}},white_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/white_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/white_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/white_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/white_bundle"},property:"minecraft:display_context"}},white_candle:{model:{type:"minecraft:model",model:"minecraft:item/white_candle"}},white_carpet:{model:{type:"minecraft:model",model:"minecraft:block/white_carpet"}},white_concrete:{model:{type:"minecraft:model",model:"minecraft:block/white_concrete"}},white_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/white_concrete_powder"}},white_dye:{model:{type:"minecraft:model",model:"minecraft:item/white_dye"}},white_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/white_glazed_terracotta"}},white_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/white_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_white"}}},white_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/white_stained_glass"}},white_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/white_stained_glass_pane"}},white_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/white_terracotta"}},white_tulip:{model:{type:"minecraft:model",model:"minecraft:item/white_tulip"}},white_wool:{model:{type:"minecraft:model",model:"minecraft:block/white_wool"}},wild_armor_trim_smithing_template:{model:{type:"minecraft:model",model:"minecraft:item/wild_armor_trim_smithing_template"}},wind_charge:{model:{type:"minecraft:model",model:"minecraft:item/wind_charge"}},witch_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/witch_spawn_egg"}},wither_rose:{model:{type:"minecraft:model",model:"minecraft:item/wither_rose"}},wither_skeleton_skull:{model:{type:"minecraft:special",base:"minecraft:item/template_skull",model:{type:"minecraft:head",kind:"wither_skeleton"}}},wither_skeleton_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/wither_skeleton_spawn_egg"}},wither_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/wither_spawn_egg"}},wolf_armor:{model:{type:"minecraft:condition",component:"minecraft:dyed_color",on_false:{type:"minecraft:model",model:"minecraft:item/wolf_armor"},on_true:{type:"minecraft:model",model:"minecraft:item/wolf_armor_dyed",tints:[{type:"minecraft:constant",value:-1},{type:"minecraft:dye",default:0}]},property:"minecraft:has_component"}},wolf_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/wolf_spawn_egg"}},wooden_axe:{model:{type:"minecraft:model",model:"minecraft:item/wooden_axe"}},wooden_hoe:{model:{type:"minecraft:model",model:"minecraft:item/wooden_hoe"}},wooden_pickaxe:{model:{type:"minecraft:model",model:"minecraft:item/wooden_pickaxe"}},wooden_shovel:{model:{type:"minecraft:model",model:"minecraft:item/wooden_shovel"}},wooden_sword:{model:{type:"minecraft:model",model:"minecraft:item/wooden_sword"}},writable_book:{model:{type:"minecraft:model",model:"minecraft:item/writable_book"}},written_book:{model:{type:"minecraft:model",model:"minecraft:item/written_book"}},yellow_banner:{model:{type:"minecraft:special",base:"minecraft:item/template_banner",model:{type:"minecraft:banner",color:"yellow"}}},yellow_bed:{model:{type:"minecraft:special",base:"minecraft:item/yellow_bed",model:{type:"minecraft:bed",texture:"minecraft:yellow"}}},yellow_bundle:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:condition",on_false:{type:"minecraft:model",model:"minecraft:item/yellow_bundle"},on_true:{type:"minecraft:composite",models:[{type:"minecraft:model",model:"minecraft:item/yellow_bundle_open_back"},{type:"minecraft:bundle/selected_item"},{type:"minecraft:model",model:"minecraft:item/yellow_bundle_open_front"}]},property:"minecraft:bundle/has_selected_item"},when:"gui"}],fallback:{type:"minecraft:model",model:"minecraft:item/yellow_bundle"},property:"minecraft:display_context"}},yellow_candle:{model:{type:"minecraft:model",model:"minecraft:item/yellow_candle"}},yellow_carpet:{model:{type:"minecraft:model",model:"minecraft:block/yellow_carpet"}},yellow_concrete:{model:{type:"minecraft:model",model:"minecraft:block/yellow_concrete"}},yellow_concrete_powder:{model:{type:"minecraft:model",model:"minecraft:block/yellow_concrete_powder"}},yellow_dye:{model:{type:"minecraft:model",model:"minecraft:item/yellow_dye"}},yellow_glazed_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/yellow_glazed_terracotta"}},yellow_shulker_box:{model:{type:"minecraft:special",base:"minecraft:item/yellow_shulker_box",model:{type:"minecraft:shulker_box",texture:"minecraft:shulker_yellow"}}},yellow_stained_glass:{model:{type:"minecraft:model",model:"minecraft:block/yellow_stained_glass"}},yellow_stained_glass_pane:{model:{type:"minecraft:model",model:"minecraft:item/yellow_stained_glass_pane"}},yellow_terracotta:{model:{type:"minecraft:model",model:"minecraft:block/yellow_terracotta"}},yellow_wool:{model:{type:"minecraft:model",model:"minecraft:block/yellow_wool"}},zoglin_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/zoglin_spawn_egg"}},zombie_head:{model:{type:"minecraft:special",base:"minecraft:item/template_skull",model:{type:"minecraft:head",kind:"zombie"}}},zombie_horse_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/zombie_horse_spawn_egg"}},zombie_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/zombie_spawn_egg"}},zombie_villager_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/zombie_villager_spawn_egg"}},zombified_piglin_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/zombified_piglin_spawn_egg"}},blue_egg:{model:{type:"minecraft:model",model:"minecraft:item/blue_egg"}},brown_egg:{model:{type:"minecraft:model",model:"minecraft:item/brown_egg"}},bush:{model:{type:"minecraft:model",model:"minecraft:item/bush",tints:[{type:"minecraft:grass",downfall:1,temperature:.5}]}},cactus_flower:{model:{type:"minecraft:model",model:"minecraft:item/cactus_flower"}},firefly_bush:{model:{type:"minecraft:model",model:"minecraft:item/firefly_bush"}},leaf_litter:{model:{type:"minecraft:model",model:"minecraft:item/leaf_litter"}},short_dry_grass:{model:{type:"minecraft:model",model:"minecraft:item/short_dry_grass"}},tall_dry_grass:{model:{type:"minecraft:model",model:"minecraft:item/tall_dry_grass"}},test_block:{model:{type:"minecraft:select",block_state_property:"mode",cases:[{model:{type:"minecraft:model",model:"minecraft:block/test_block_log"},when:"log"},{model:{type:"minecraft:model",model:"minecraft:block/test_block_fail"},when:"fail"},{model:{type:"minecraft:model",model:"minecraft:block/test_block_accept"},when:"accept"}],fallback:{type:"minecraft:model",model:"minecraft:block/test_block_start"},property:"minecraft:block_state"}},test_instance_block:{model:{type:"minecraft:model",model:"minecraft:block/test_instance_block"}},wildflowers:{model:{type:"minecraft:model",model:"minecraft:item/wildflowers"}},black_harness:{model:{type:"minecraft:model",model:"minecraft:item/black_harness"}},blue_harness:{model:{type:"minecraft:model",model:"minecraft:item/blue_harness"}},brown_harness:{model:{type:"minecraft:model",model:"minecraft:item/brown_harness"}},cyan_harness:{model:{type:"minecraft:model",model:"minecraft:item/cyan_harness"}},dried_ghast:{model:{type:"minecraft:model",model:"minecraft:block/dried_ghast_hydration_0"}},gray_harness:{model:{type:"minecraft:model",model:"minecraft:item/gray_harness"}},green_harness:{model:{type:"minecraft:model",model:"minecraft:item/green_harness"}},happy_ghast_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/happy_ghast_spawn_egg"}},light_blue_harness:{model:{type:"minecraft:model",model:"minecraft:item/light_blue_harness"}},light_gray_harness:{model:{type:"minecraft:model",model:"minecraft:item/light_gray_harness"}},lime_harness:{model:{type:"minecraft:model",model:"minecraft:item/lime_harness"}},magenta_harness:{model:{type:"minecraft:model",model:"minecraft:item/magenta_harness"}},music_disc_tears:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_tears"}},orange_harness:{model:{type:"minecraft:model",model:"minecraft:item/orange_harness"}},pink_harness:{model:{type:"minecraft:model",model:"minecraft:item/pink_harness"}},purple_harness:{model:{type:"minecraft:model",model:"minecraft:item/purple_harness"}},red_harness:{model:{type:"minecraft:model",model:"minecraft:item/red_harness"}},white_harness:{model:{type:"minecraft:model",model:"minecraft:item/white_harness"}},yellow_harness:{model:{type:"minecraft:model",model:"minecraft:item/yellow_harness"}},music_disc_lava_chicken:{model:{type:"minecraft:model",model:"minecraft:item/music_disc_lava_chicken"}},acacia_shelf:{model:{type:"minecraft:model",model:"minecraft:block/acacia_shelf_inventory"}},bamboo_shelf:{model:{type:"minecraft:model",model:"minecraft:block/bamboo_shelf_inventory"}},birch_shelf:{model:{type:"minecraft:model",model:"minecraft:block/birch_shelf_inventory"}},cherry_shelf:{model:{type:"minecraft:model",model:"minecraft:block/cherry_shelf_inventory"}},copper_axe:{model:{type:"minecraft:model",model:"minecraft:item/copper_axe"}},copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/copper_bars"}},copper_boots:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/copper_boots_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/copper_boots"},property:"minecraft:trim_material"}},copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/copper_chain"}},copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper"}}},copper_chestplate:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/copper_chestplate_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/copper_chestplate"},property:"minecraft:trim_material"}},copper_golem_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/copper_golem_spawn_egg"}},copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},property:"minecraft:block_state"}},copper_helmet:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/copper_helmet_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/copper_helmet"},property:"minecraft:trim_material"}},copper_hoe:{model:{type:"minecraft:model",model:"minecraft:item/copper_hoe"}},copper_horse_armor:{model:{type:"minecraft:model",model:"minecraft:item/copper_horse_armor"}},copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/copper_lantern"}},copper_leggings:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_quartz_trim"},when:"minecraft:quartz"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_iron_trim"},when:"minecraft:iron"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_netherite_trim"},when:"minecraft:netherite"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_redstone_trim"},when:"minecraft:redstone"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_copper_trim"},when:"minecraft:copper"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_gold_trim"},when:"minecraft:gold"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_emerald_trim"},when:"minecraft:emerald"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_diamond_trim"},when:"minecraft:diamond"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_lapis_trim"},when:"minecraft:lapis"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_amethyst_trim"},when:"minecraft:amethyst"},{model:{type:"minecraft:model",model:"minecraft:item/copper_leggings_resin_trim"},when:"minecraft:resin"}],fallback:{type:"minecraft:model",model:"minecraft:item/copper_leggings"},property:"minecraft:trim_material"}},copper_nugget:{model:{type:"minecraft:model",model:"minecraft:item/copper_nugget"}},copper_pickaxe:{model:{type:"minecraft:model",model:"minecraft:item/copper_pickaxe"}},copper_shovel:{model:{type:"minecraft:model",model:"minecraft:item/copper_shovel"}},copper_sword:{model:{type:"minecraft:model",model:"minecraft:item/copper_sword"}},copper_torch:{model:{type:"minecraft:model",model:"minecraft:item/copper_torch"}},crimson_shelf:{model:{type:"minecraft:model",model:"minecraft:block/crimson_shelf_inventory"}},dark_oak_shelf:{model:{type:"minecraft:model",model:"minecraft:block/dark_oak_shelf_inventory"}},exposed_copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_bars"}},exposed_copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_chain"}},exposed_copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/exposed_copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper_exposed"}}},exposed_copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},property:"minecraft:block_state"}},exposed_copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_lantern"}},exposed_lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/exposed_lightning_rod"}},iron_chain:{model:{type:"minecraft:model",model:"minecraft:item/iron_chain"}},jungle_shelf:{model:{type:"minecraft:model",model:"minecraft:block/jungle_shelf_inventory"}},mangrove_shelf:{model:{type:"minecraft:model",model:"minecraft:block/mangrove_shelf_inventory"}},oak_shelf:{model:{type:"minecraft:model",model:"minecraft:block/oak_shelf_inventory"}},oxidized_copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_bars"}},oxidized_copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_chain"}},oxidized_copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/oxidized_copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper_oxidized"}}},oxidized_copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},property:"minecraft:block_state"}},oxidized_copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_lantern"}},oxidized_lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_lightning_rod"}},pale_oak_shelf:{model:{type:"minecraft:model",model:"minecraft:block/pale_oak_shelf_inventory"}},spruce_shelf:{model:{type:"minecraft:model",model:"minecraft:block/spruce_shelf_inventory"}},warped_shelf:{model:{type:"minecraft:model",model:"minecraft:block/warped_shelf_inventory"}},waxed_copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/copper_bars"}},waxed_copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/copper_chain"}},waxed_copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper"}}},waxed_copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/copper_golem.png"}},property:"minecraft:block_state"}},waxed_copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/copper_lantern"}},waxed_exposed_copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_bars"}},waxed_exposed_copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_chain"}},waxed_exposed_copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/exposed_copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper_exposed"}}},waxed_exposed_copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/exposed_copper_golem.png"}},property:"minecraft:block_state"}},waxed_exposed_copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/exposed_copper_lantern"}},waxed_exposed_lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/exposed_lightning_rod"}},waxed_lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/lightning_rod"}},waxed_oxidized_copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_bars"}},waxed_oxidized_copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_chain"}},waxed_oxidized_copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/oxidized_copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper_oxidized"}}},waxed_oxidized_copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/oxidized_copper_golem.png"}},property:"minecraft:block_state"}},waxed_oxidized_copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/oxidized_copper_lantern"}},waxed_oxidized_lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/oxidized_lightning_rod"}},waxed_weathered_copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_bars"}},waxed_weathered_copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_chain"}},waxed_weathered_copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/weathered_copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper_weathered"}}},waxed_weathered_copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},property:"minecraft:block_state"}},waxed_weathered_copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_lantern"}},waxed_weathered_lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/weathered_lightning_rod"}},weathered_copper_bars:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_bars"}},weathered_copper_chain:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_chain"}},weathered_copper_chest:{model:{type:"minecraft:special",base:"minecraft:item/weathered_copper_chest",model:{type:"minecraft:chest",texture:"minecraft:copper_weathered"}}},weathered_copper_golem_statue:{model:{type:"minecraft:select",block_state_property:"copper_golem_pose",cases:[{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"sitting",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},when:"sitting"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"running",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},when:"running"},{model:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"star",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},when:"star"}],fallback:{type:"minecraft:special",base:"minecraft:item/template_copper_golem_statue",model:{type:"minecraft:copper_golem_statue",pose:"standing",texture:"minecraft:textures/entity/copper_golem/weathered_copper_golem.png"}},property:"minecraft:block_state"}},weathered_copper_lantern:{model:{type:"minecraft:model",model:"minecraft:item/weathered_copper_lantern"}},weathered_lightning_rod:{model:{type:"minecraft:model",model:"minecraft:block/weathered_lightning_rod"}},camel_husk_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/camel_husk_spawn_egg"}},copper_nautilus_armor:{model:{type:"minecraft:model",model:"minecraft:item/copper_nautilus_armor"}},copper_spear:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/copper_spear"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/copper_spear_in_hand"},property:"minecraft:display_context"},swap_animation_scale:1.95},diamond_nautilus_armor:{model:{type:"minecraft:model",model:"minecraft:item/diamond_nautilus_armor"}},diamond_spear:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/diamond_spear"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/diamond_spear_in_hand"},property:"minecraft:display_context"},swap_animation_scale:1.95},golden_nautilus_armor:{model:{type:"minecraft:model",model:"minecraft:item/golden_nautilus_armor"}},golden_spear:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/golden_spear"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/golden_spear_in_hand"},property:"minecraft:display_context"},swap_animation_scale:1.95},iron_nautilus_armor:{model:{type:"minecraft:model",model:"minecraft:item/iron_nautilus_armor"}},iron_spear:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/iron_spear"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/iron_spear_in_hand"},property:"minecraft:display_context"},swap_animation_scale:1.95},nautilus_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/nautilus_spawn_egg"}},netherite_horse_armor:{model:{type:"minecraft:model",model:"minecraft:item/netherite_horse_armor"}},netherite_nautilus_armor:{model:{type:"minecraft:model",model:"minecraft:item/netherite_nautilus_armor"}},netherite_spear:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/netherite_spear"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/netherite_spear_in_hand"},property:"minecraft:display_context"},swap_animation_scale:1.95},parched_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/parched_spawn_egg"}},stone_spear:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/stone_spear"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/stone_spear_in_hand"},property:"minecraft:display_context"},swap_animation_scale:1.95},wooden_spear:{model:{type:"minecraft:select",cases:[{model:{type:"minecraft:model",model:"minecraft:item/wooden_spear"},when:["gui","ground","fixed","on_shelf"]}],fallback:{type:"minecraft:model",model:"minecraft:item/wooden_spear_in_hand"},property:"minecraft:display_context"},swap_animation_scale:1.95},zombie_nautilus_spawn_egg:{model:{type:"minecraft:model",model:"minecraft:item/zombie_nautilus_spawn_egg"}}}};f();m();h();var doe="";f();m();h();var uoe="";f();m();h();var foe="";f();m();h();var hoe="";f();m();h();var moe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABjFBMVEUAAAD/8Yv46Xjs2ELm00Dk0T/hzj7eyz7byT3ayD3ZxzzYxjzXxTzVwzvTwTvTwTbSwDrRvzXNuznJuDXFtDfBsTbBsTDAsDW/rzW5qSqXiybQOC7POC7HNSzHNSu8MSm3MCm2MCm0MCmzMCizLyixLyitLSapLCW0HBWZJyGzHBSzGxOqHheyGhOnHhewGhOwGBCvGBCuGBGsGRGqGBGpGBGrFxCSIRmoFxCnFxCmFxCoFg+lFxCkFxGkFxCmFg+jFxClFg+iFxChFxCiFhCiFg+hFhCMHxihFg+gFg+dFxGfFhCMHhidFhCdFg+cFg+dFQ+cFQ+YFQ6UFhCTFQ+SFQ6JFA+AEg50FxJ/Eg1zFxJwFxJvFxKADAZ/DAZzEAxyEAyACgV/CgRwEAx8CwV9CgR8CgR7CgR6CgV5CgR3CgR2CgV2CgR0CQRzCQNyCQNxCQRwCQNnBwJiBgJhBgFZBgJbBQFFCgdDCgdCCQZMAwBLAwA+CAZJAwA6CQY2CAY1BwUzBwUxBwUAAADLKmhYAAAAAXRSTlMAQObYZgAAA3ZJREFUeNrtlcuK5FQch79zSdJVSWmJjotxo4LICCriDUUfxIXoU7hzIYgLn2Jc+xQyghsv9IgiCC2Cs+qrXTmVSs7N7iRV6YIqCDLL/qDyq48DP1Knkv8RpFjp6fliBfANn4Dy6n6EA47k87CCR+xCp57EK0/H8khQEjksfJW/GF/TXPDXwd35sikeshMNoDxrzOukzdsA/mcol8wWU9SCFXvQKCDQI/OEmMTuqzwonHKTKq0hK/YVeAVeRDpCCJ4U8BBUbFzDDJUZXLa3wMNAopRqPAoVrUJOPQsD5HUznbATwRZ346ckokGBvy/s0iGboDREXQV2IWGbJCEmiZQygVOpXAPCWqvkHXai2eLjX4OHFKLljVe/fW4V4Jfsrbph+ogxd5AUKAXeB5UWiZwjJVNnnJzN5ag7sCga8CnRexvIWYDNqY0KowpkjPRPghSydjUpnlpdUY8qCPweUQ/4EK+EgplnmiTPsJw6RhVMXgbL97wAkIqHTALls78BtWAn4t5LZ4HiR96Nl/LyYnIXnZufeNNpd7zI7qAlh7yTUS/+md67CHr2gPdLmdV//k2HdiZTGVQlT+POg0T4g4oVBVUZD6ron9TKmHnihftXpJlzOto5paBHs1QsPbXjhNWWVYIllhNv2zXRrk2W7qS1oaBJXaCKdcT52Bk4UWGvLPExuksnrAvdWkWstcVGenQ8BVhxhgDWdsxgpbhpcIbY/zJ9lLFG+eqVFYOpL8f8jWmByXH6+krsBlxR0g44xhQAOcPVvMeaHxj1MgmM6VsNQuYMvXJUQSTPAQzkqBDYENSoAg04A3k/4NigGFXgweiN2JIN5aiCYRsdgJyyYepH7gH55rfEsGTDMozeA0z/0UnBhiIZVeAMkBtDDsZZBrwdVSBygyHPXSsyMqyMG6qRnBzQmDyvAocRBbQDblRBU4FDEGFB0w04oS1Ayk7E517EQW1y05Tfb1/RoY/mkNS2sNdxrlrLuGlCRgaLmWuNHkmeIWdF2QZ0Mdj+6JGi1BN9Dl105rZMbxmdDQUUSJ6ii/PeDrpgfzAUXHr8hZu0kXRGF+u1wYa1cijQS86sqNqwna26OO0C2UborYvjoSBJVrOCiUxWqb/oDXkVYm3u2vx5a09kyLCaOdaIz/h/fL11NvLH6LPxOz7oz8ZbbrnlllseO/8B75fyEJNDhsMAAAAASUVORK5CYII=";var poe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABFFBMVEUAAAAySQsxSgY2UQczTQdFZA5IaQ9Jaw9KbBBGZQ9HZw9IaBBPchJVdCBWdR9MbhBRcBzr58X08MtfhSNUcx9Ucx1GZg5TcR/t6MedFhCvGBCMEQtLbBDn4sHb17j///9YeCBNcBBMbBTg273i4MD///TQOC5Rbx3Rzq729OVWdR27JBtPbxfT0LDh3r7l4cDo5MPg27pOcBJQcxPNyKTTzq3X1LTb2LhfhCR9fh01Twl/fx6HhSE6UQ03UAxIYhpCYA4WHwUzSwlBXg5qcBbV0bMmOgArPgYqPAYxRwtAXQ1BXQ8AAAA8Vg4eLAZFZBAZJAYYIwUdKgYaJgYcKgArQgAtRAAqQAAoPAAeLgApPgAZJgAMEV1YAAAAAXRSTlMAQObYZgAAAshJREFUeNrtlXtX2jAUwMFHkpZSpKAOENGpm9vc+/1+OBVhvBKgafb9v8fuTUsBbY9B9ye/E3O9gfx6c3NOyWQqDzJT+AyCC887OSlvAvlyuVQqZZKpVDMxvZhOu9fqeofWBDtnmQj4gIdjMBiIXvfgkBDCciyng4mgP0uLe3VCKQyEpFUw1wR4LucwIArRFpUaYZTazCaMMRsENyLEAMvnEPu8I6pPaoQWrIJFMJQNBHB+3oeBCt4TlWrtnqZer784PDIQ9GcBQaUSCjzPe/7sqYGARz3gcALe61arNbg/HLRQyOXNBBqMgw42Ee8PBmPEKhsJwibCX1+0u55HQyxCmZ1ftAen3PPw/ihshkqMrrEzpd1piYMDQqwQ27JMBN05fh4f5/P5DQRi6YOB4OzMggNTx7GJTe7vPaQUat/d3Vpf36J733/A6npEsZgoKBYdh2pylkXdbTy79fZNLspsOAjRsKKXLpg4XuW3dXz3Hud9yAiL8VIqaDghbMdxXrvbBcp2Ci8bbGffcXRWiAWPEgWNhuu6G4gLbXPLLuIdudNsEyk/3kipIDvDZfariIjecJmbWV0BYFrDaSV75Q1nIFjRoADJ/pml1zWsYBUnjFcELW5aAaIll3OCtjARrOFOnK4LOsZNRJJ6YCTQ6DZeE5wu1IPb3kLUvVUYt+4BjkgzX0HbpIJ4+xoK7tQDtFz2IqI3nIEgO8c3MSF8wxkI/i5AokApNZRjpaRSgRxfNCUEhQzjzFcqXE0WBMEwCMbjUYD/XDQDROnVSeaPxzqmCFQA+0GAEZ8JQUo1ycAzAkG4mlIBAmeAr8bPlLg6U0GYpgh83A8CPMNIVzBUSvnTehQIwtVEgYTvjlCg468miHxfhasXYab1EFN6IOVHOfZ9X8rfcvSpeS6/YAswA905BAkfnsvPUiYLggW4+2/jkiVLliz53/wDNukpDItbIB4AAAAASUVORK5CYII=";var voe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABBVBMVEUAAAApPgAeLgAoPAAqQAArQgAtRABFZA5GZQ9IaQ9HZw9Jaw9KbBBIaBBMbhBWdR/08MtUcx1VdCBUcx9RcBxPchLr58WdFhBNcBBfhSNLbBD///+MEQuvGBD///Tb17hTcR/n4sFIYhq7JBtGZg7QOC5fhCRPax3i4MDo5MNegCLg2737+vPU0LFhfSlPbxfl4cDh3r5/fx6HhSFqcBaIhiGFhCB0dxpafyE1SwkzSwlLahQXIQUWHwVYeCA3UAw1TwlBXg7V0bMmOgAxRwsrPgZBXQ8qPAZAXQ0AAAA8Vg5FZBAZJAYYIwUdKgYeLAYaJgYcKgA2UQcxSgYySQszTQcZJgB7eh3IAAAAAXRSTlMAQObYZgAAAsNJREFUeNrtlWdb4kAQgDfZJO6mQqKUi8J5XtFrXi9esQFyYAqg9/9/irObXSCxBfQj75NnlpHJu5MxCQjVX6AZf+IcL5vNahCsV6vrwf5+GKKbqCO0NcuS/mAwnNEkAoeY71ulBMM4juJIhqbjutSllNoOpbuVEoK4fz5PQCw427IsCh8qtwrmhpD0Utg4ksE3bSqw6WYd3U86iKI4TWUICKUuOCyXWJtbJQR8BudRLMO73b297UpGvaTgfJ7Wxw8VSX1nq5QghZ0jGXyHmPywXHezvlNqBmmaxpEMAc1wbJuSUkNM2BDjSAZf/AcJtWyzUikhKNwHTWrbtgkHdFFOkPSPe73BlCa1MohJyJsygt9w4ckMeJgCvwrPUhW45Vl4tsbaa7fJc0p//XgFn9eI4OQE5ajV1gSmScy/KOOpCRlpbzsOIdZrnklqtaKACFitJwX8cWm3LKDh80xyTdCyBbxWClzLdt3tsNFobGx4kG1MKQrehvYTARTLDgKPEYae5/u+x7N1jucVBWEIf64yeC26icOLHOINlwrQ/VxMJuPJ5FLG7A0HR0Y5AXApYzL8N08pwXg8AUSM+4sLciS9RQUd1vp4ImM6WKIDdiJEvibD5QQwATGD44fOYLjMDGB3znIzyFoXcZwsMcQxO5HFR7kPxBtugVv5sNPpXMzI3nB3P0z/c6j59K5S+eUZVlSs6FiBRetmGSR8VVAORVFG2IDIavWuFKgjVYVcZXTP+MJsjKJAZbUgV4HRVMBSDevsFL3LM13JijBGObjWUAzMVm0qYFrZwcHZiO8sOigKVAYI+JrrAHbUmPWnyCAH77UZsBrDMLA2YrVSoOiqxi5Bg+8Osgyuga8FAYYaHYaYrUdScIo/Y843zTiC7DvGuqad4i8YFzvA+BM2YDesfcVTgXoXKIea5+G/jStWrFix4rG5Atyu/TOf0H2DAAAAAElFTkSuQmCC";var goe={"entity/chest/normal":moe,"entity/chest/normal_left":poe,"entity/chest/normal_right":voe};f();m();h();f();m();h();var Ds=class{strictVersioned;data={latest:{}};previousVersion="";currentVersion="";inclusive=!0;constructor(e=!1){this.strictVersioned=e,e&&(this.data={})}get versionsSorted(){let e=Object.keys(this.data).filter(t=>t!=="latest").sort((t,n)=>this.semverToNumber(t)-this.semverToNumber(n));return this.strictVersioned||e.push("latest"),e}push(e,t,n){this.currentVersion||=e,this.currentVersion!==e&&(this.strictVersioned?this.previousVersion=this.currentVersion:this.previousVersion=this.previousVersion?this.currentVersion:"latest",this.currentVersion=e),this.data[this.previousVersion]?.[t]!==n&&(this.strictVersioned?(this.data[e]??={},this.data[e][t]=n):this.data.latest[t]?(this.data[e]??={},this.data[e][t]=n):this.data.latest[t]=n)}get(e,t,n=this.inclusive){let r=this.semverToNumber(e),s;for(let a of this.versionsSorted)if((n?r<=this.semverToNumber(a):r<this.semverToNumber(a))&&this.data[a]?.[t]){s=a;break}let o;return this.strictVersioned?o=this.data[s]?.[t]:this.data[s]?.[t]?o=this.data[s][t]:this.data.latest[t]&&(o=this.data.latest[t]),o&&typeof o=="object"?structuredClone(o):o}semverToNumber(e){let[t,n="0",r="0"]=e.split(".");return+`${t.padStart(2,"0")}${n.padStart(2,"0")}${r.padStart(2,"0")}`}loadData(e){this.data=e}};f();m();h();f();m();h();var En=class{oversized=!1;constructor(e=0,t=0,n=0,r=0,s=!1,o=void 0){this._width=e,this._height=t,this._x=n,this._y=r,this._data={},this._rot=s,this._allowRotation=o}static Collide(e,t){return e.collide(t)}static Contain(e,t){return e.contain(t)}area(){return this.width*this.height}collide(e){return e.x<this.x+this.width&&e.x+e.width>this.x&&e.y<this.y+this.height&&e.y+e.height>this.y}contain(e){return e.x>=this.x&&e.y>=this.y&&e.x+e.width<=this.x+this.width&&e.y+e.height<=this.y+this.height}_width;get width(){return this._width}set width(e){e!==this._width&&(this._width=e,this._dirty++)}_height;get height(){return this._height}set height(e){e!==this._height&&(this._height=e,this._dirty++)}_x;get x(){return this._x}set x(e){e!==this._x&&(this._x=e,this._dirty++)}_y;get y(){return this._y}set y(e){e!==this._y&&(this._y=e,this._dirty++)}_rot=!1;get rot(){return this._rot}set rot(e){if(this._allowRotation!==!1&&this._rot!==e){let t=this.width;this.width=this.height,this.height=t,this._rot=e,this._dirty++}}_allowRotation=void 0;get allowRotation(){return this._allowRotation}set allowRotation(e){this._allowRotation!==e&&(this._allowRotation=e,this._dirty++)}_data;get data(){return this._data}set data(e){e===null||e===this._data||(this._data=e,typeof e=="object"&&e.hasOwnProperty("allowRotation")&&(this._allowRotation=e.allowRotation),this._dirty++)}_dirty=0;get dirty(){return this._dirty>0}setDirty(e=!0){this._dirty=e?this._dirty+1:0}},D6=class{width;height;maxWidth;maxHeight;freeRects;rects;options;data;tag;_dirty=0;get dirty(){return this._dirty>0||this.rects.some(e=>e.dirty)}setDirty(e=!0){if(this._dirty=e?this._dirty+1:0,!e)for(let t of this.rects)t.setDirty&&t.setDirty(!1)}},Nf=class i extends D6{maxWidth;maxHeight;padding;width;height;freeRects=[];rects=[];verticalExpand=!1;stage;border;options={smart:!0,pot:!0,square:!0,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:vi.MAX_EDGE};constructor(e=U6,t=U6,n=0,r={}){super(),this.maxWidth=e,this.maxHeight=t,this.padding=n,this.options={...this.options,...r},this.width=this.options.smart?0:e,this.height=this.options.smart?0:t,this.border=this.options.border?this.options.border:0,this.freeRects.push(new En(this.maxWidth+this.padding-this.border*2,this.maxHeight+this.padding-this.border*2,this.border,this.border)),this.stage=new En(this.width,this.height)}add(...e){let t,n;if(e.length===1){if(typeof e[0]!="object")throw new Error("MacrectsBin.add(): Wrong parameters");n=e[0];let s=n.data&&n.data.tag?n.data.tag:n.tag?n.tag:void 0;if(this.options.tag&&this.options.exclusiveTag&&this.tag!==s)return}else{if(t=e.length>2?e[2]:null,this.options.tag&&this.options.exclusiveTag&&(t&&this.tag!==t.tag||!t&&this.tag))return;n=new En(e[0],e[1]),n.data=t,n.setDirty(!1)}let r=this.place(n);return r&&this.rects.push(r),r}repack(){let e=[];this.reset(),this.rects.sort((t,n)=>{let r=Math.max(n.width,n.height)-Math.max(t.width,t.height);return r===0&&t.hash&&n.hash?t.hash>n.hash?-1:1:r});for(let t of this.rects)this.place(t)||e.push(t);for(let t of e)this.rects.splice(this.rects.indexOf(t),1);return e.length>0?e:void 0}reset(e=!1,t=!1){e&&(this.data&&delete this.data,this.tag&&delete this.tag,this.rects=[],t&&(this.options={smart:!0,pot:!0,square:!0,allowRotation:!1,tag:!1,border:0})),this.width=this.options.smart?0:this.maxWidth,this.height=this.options.smart?0:this.maxHeight,this.border=this.options.border?this.options.border:0,this.freeRects=[new En(this.maxWidth+this.padding-this.border*2,this.maxHeight+this.padding-this.border*2,this.border,this.border)],this.stage=new En(this.width,this.height),this._dirty=0}clone(){let e=new i(this.maxWidth,this.maxHeight,this.padding,this.options);for(let t of this.rects)e.add(t);return e}place(e){let t=e.data&&e.data.tag?e.data.tag:e.tag?e.tag:void 0;if(this.options.tag&&this.options.exclusiveTag&&this.tag!==t)return;let n,r;if(e.hasOwnProperty("_allowRotation")&&e.allowRotation!==void 0?r=e.allowRotation:r=this.options.allowRotation,n=this.findNode(e.width+this.padding,e.height+this.padding,r),n){this.updateBinSize(n);let s=this.freeRects.length,o=0;for(;o<s;)this.splitNode(this.freeRects[o],n)&&(this.freeRects.splice(o,1),s--,o--),o++;return this.pruneFreeList(),this.verticalExpand=this.options.logic===vi.FILL_WIDTH?!1:this.width>this.height,e.x=n.x,e.y=n.y,e.rot===void 0&&(e.rot=!1),e.rot=n.rot?!e.rot:e.rot,this._dirty++,e}else if(this.verticalExpand){if(this.updateBinSize(new En(e.width+this.padding,e.height+this.padding,this.border,this.height+this.padding-this.border))||this.updateBinSize(new En(e.width+this.padding,e.height+this.padding,this.width+this.padding-this.border,this.border)))return this.place(e)}else if(this.updateBinSize(new En(e.width+this.padding,e.height+this.padding,this.width+this.padding-this.border,this.border))||this.updateBinSize(new En(e.width+this.padding,e.height+this.padding,this.border,this.height+this.padding-this.border)))return this.place(e)}findNode(e,t,n){let r=Number.MAX_VALUE,s,o,a;for(let l in this.freeRects){if(o=this.freeRects[l],o.width>=e&&o.height>=t){if(this.options.logic===vi.MAX_AREA)s=o.width*o.height-e*t;else if(this.options.logic===vi.FILL_WIDTH){let c=o.x+o.y*this.maxWidth,d=this.freeRects.filter(p=>p.x+p.y*this.maxWidth<c).length,u=o.y+t-this.height;s=d+u}else s=Math.min(o.width-e,o.height-t);s<r&&(a=new En(e,t,o.x,o.y),r=s)}if(n&&o.width>=t&&o.height>=e){if(this.options.logic===vi.MAX_AREA)s=o.width*o.height-t*e;else if(this.options.logic===vi.FILL_WIDTH){let c=o.x+o.y*this.maxWidth,d=this.freeRects.filter(p=>p.x+p.y*this.maxWidth<c).length,u=o.y+e-this.height;s=d+u}else s=Math.min(o.height-e,o.width-t);s<r&&(a=new En(t,e,o.x,o.y,!0),r=s)}}return a}splitNode(e,t){if(!e.collide(t))return!1;if(t.x<e.x+e.width&&t.x+t.width>e.x){if(t.y>e.y&&t.y<e.y+e.height){let n=new En(e.width,t.y-e.y,e.x,e.y);this.freeRects.push(n)}if(t.y+t.height<e.y+e.height){let n=new En(e.width,e.y+e.height-(t.y+t.height),e.x,t.y+t.height);this.freeRects.push(n)}}if(t.y<e.y+e.height&&t.y+t.height>e.y){if(t.x>e.x&&t.x<e.x+e.width){let n=new En(t.x-e.x,e.height,e.x,e.y);this.freeRects.push(n)}if(t.x+t.width<e.x+e.width){let n=new En(e.x+e.width-(t.x+t.width),e.height,t.x+t.width,e.y);this.freeRects.push(n)}}return!0}pruneFreeList(){let e=0,t=0,n=this.freeRects.length;for(;e<n;){t=e+1;let r=this.freeRects[e];for(;t<n;){let s=this.freeRects[t];if(s.contain(r)){this.freeRects.splice(e,1),e--,n--;break}r.contain(s)&&(this.freeRects.splice(t,1),t--,n--),t++}e++}}updateBinSize(e){if(!this.options.smart||this.stage.contain(e))return!1;let t=Math.max(this.width,e.x+e.width-this.padding+this.border),n=Math.max(this.height,e.y+e.height-this.padding+this.border);if(this.options.allowRotation){let r=Math.max(this.width,e.x+e.height-this.padding+this.border),s=Math.max(this.height,e.y+e.width-this.padding+this.border);r*s<t*n&&(t=r,n=s)}return this.options.pot&&(t=Math.pow(2,Math.ceil(Math.log(t)*Math.LOG2E)),n=Math.pow(2,Math.ceil(Math.log(n)*Math.LOG2E))),this.options.square&&(t=n=Math.max(t,n)),t>this.maxWidth+this.padding||n>this.maxHeight+this.padding?!1:(this.expandFreeRects(t+this.padding,n+this.padding),this.width=this.stage.width=t,this.height=this.stage.height=n,!0)}expandFreeRects(e,t){this.freeRects.forEach((n,r)=>{n.x+n.width>=Math.min(this.width+this.padding-this.border,e)&&(n.width=e-n.x-this.border),n.y+n.height>=Math.min(this.height+this.padding-this.border,t)&&(n.height=t-n.y-this.border)},this),this.freeRects.push(new En(e-this.width-this.padding,t-this.border*2,this.width+this.padding-this.border,this.border)),this.freeRects.push(new En(e-this.border*2,t-this.height-this.padding,this.border,this.height+this.padding-this.border)),this.freeRects=this.freeRects.filter(n=>!(n.width<=0||n.height<=0||n.x<this.border||n.y<this.border)),this.pruneFreeList()}},zm=class i extends D6{width;height;data;maxWidth;maxHeight;options;rects=[];freeRects;constructor(...e){if(super(),e.length===1){if(typeof e[0]!="object")throw new Error("OversizedElementBin: Wrong parameters");let t=e[0];this.rects=[t],this.width=t.width,this.height=t.height,this.data=t.data,t.oversized=!0}else{this.width=e[0],this.height=e[1],this.data=e.length>2?e[2]:null;let t=new En(this.width,this.height);t.oversized=!0,t.data=this.data,this.rects.push(t)}this.freeRects=[],this.maxWidth=this.width,this.maxHeight=this.height,this.options={smart:!1,pot:!1,square:!1}}add(){}reset(e=!1){}repack(){}clone(){return new i(this.rects[0])}},U6=4096,vi;(function(i){i[i.MAX_AREA=0]="MAX_AREA",i[i.MAX_EDGE=1]="MAX_EDGE",i[i.FILL_WIDTH=2]="FILL_WIDTH"})(vi||(vi={}));var V6=class{width;height;padding;bins;options={smart:!0,pot:!0,square:!1,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:vi.MAX_EDGE};constructor(e=U6,t=U6,n=0,r={}){this.width=e,this.height=t,this.padding=n,this.bins=[],this.options={...this.options,...r}}add(...e){if(e.length===1){if(typeof e[0]!="object")throw new Error("MacrectsPacker.add(): Wrong parameters");let t=e[0];if(!(t.width<=this.width&&t.height<=this.height||this.options.allowRotation&&t.width<=this.height&&t.height<=this.width))this.bins.push(new zm(t));else if(!this.bins.slice(this._currentBinIndex).find(r=>r.add(t)!==void 0)){let r=new Nf(this.width,this.height,this.padding,this.options),s=t.data&&t.data.tag?t.data.tag:t.tag?t.tag:void 0;this.options.tag&&s&&(r.tag=s),r.add(t),this.bins.push(r)}return t}else{let t=new En(e[0],e[1]);if(e.length>2&&(t.data=e[2]),!(t.width<=this.width&&t.height<=this.height||this.options.allowRotation&&t.width<=this.height&&t.height<=this.width))this.bins.push(new zm(t));else if(!this.bins.slice(this._currentBinIndex).find(r=>r.add(t)!==void 0)){let r=new Nf(this.width,this.height,this.padding,this.options);this.options.tag&&t.data.tag&&(r.tag=t.data.tag),r.add(t),this.bins.push(r)}return t}}addArray(e){if(!this.options.tag||this.options.exclusiveTag)this.sort(e,this.options.logic).forEach(t=>this.add(t));else{if(e.length===0)return;e.sort((s,o)=>{let a=s.data&&s.data.tag?s.data.tag:s.tag?s.tag:void 0,l=o.data&&o.data.tag?o.data.tag:o.tag?o.tag:void 0;return l===void 0?-1:a===void 0?1:l>a?-1:1});let t,n=0;if(!this.bins.slice(this._currentBinIndex).find((s,o)=>{let a=s.clone();for(let l=n;l<e.length;l++){let c=e[l],d=c.data&&c.data.tag?c.data.tag:c.tag?c.tag:void 0;if(l===0&&(t=d),d!==t)return t=d,this.sort(e.slice(n,l),this.options.logic).forEach(u=>s.add(u)),n=l,this.addArray(e.slice(l)),!0;if(d===void 0)return this.sort(e.slice(l),this.options.logic).forEach(u=>this.add(u)),n=e.length,!0;if(a.add(c)===void 0)return this.sort(e.slice(n,l),this.options.logic).forEach(u=>s.add(u)),n=l,!1}return this.sort(e.slice(n),this.options.logic).forEach(l=>s.add(l)),!0})){let s=e[n],o=new Nf(this.width,this.height,this.padding,this.options),a=s.data&&s.data.tag?s.data.tag:s.tag?s.tag:void 0;this.options.tag&&this.options.exclusiveTag&&a&&(o.tag=a),this.bins.push(o),o.add(s),n++,this.addArray(e.slice(n))}}}reset(){this.bins=[],this._currentBinIndex=0}repack(e=!0){if(e){let n=[];for(let r of this.bins)if(r.dirty){let s=r.repack();s&&n.push(...s)}this.addArray(n);return}if(!this.dirty)return;let t=this.rects;this.reset(),this.addArray(t)}next(){return this._currentBinIndex=this.bins.length,this._currentBinIndex}load(e){e.forEach((t,n)=>{if(t.maxWidth>this.width||t.maxHeight>this.height)this.bins.push(new zm(t.width,t.height,{}));else{let r=new Nf(this.width,this.height,this.padding,t.options);r.freeRects.splice(0),t.freeRects.forEach((s,o)=>{r.freeRects.push(new En(s.width,s.height,s.x,s.y))}),r.width=t.width,r.height=t.height,t.tag&&(r.tag=t.tag),this.bins[n]=r}},this)}save(){let e=[];return this.bins.forEach(t=>{let n={width:t.width,height:t.height,maxWidth:t.maxWidth,maxHeight:t.maxHeight,freeRects:[],rects:[],options:t.options};t.tag&&(n={...n,tag:t.tag}),t.freeRects.forEach(r=>{n.freeRects.push({x:r.x,y:r.y,width:r.width,height:r.height})}),e.push(n)}),e}sort(e,t=vi.MAX_EDGE){return e.slice().sort((n,r)=>{let s=t===vi.MAX_EDGE?Math.max(r.width,r.height)-Math.max(n.width,n.height):r.width*r.height-n.width*n.height;return s===0&&n.hash&&r.hash?n.hash>r.hash?-1:1:s})}_currentBinIndex=0;get currentBinIndex(){return this._currentBinIndex}get dirty(){return this.bins.some(e=>e.dirty)}get rects(){let e=[];for(let t of this.bins)e.push(...t.rects);return e}};var F6=16384;function _oe(i){return i===0?1:(i--,i|=i>>1,i|=i>>2,i|=i>>4,i|=i>>8,i|=i>>16,i+1)}var yoe=({input:i,getLoadedImage:e,tileSize:t=16,getCanvas:n=s=>typeof document<"u"&&document.createElement?document.createElement("canvas"):new globalThis.Canvas(s,s,"png"),needHorizontalIndexes:r=!1})=>{let s=[...new Set(i)].map(g=>{let w=e(g),x;if(w.image)x=w.image;else if(w.contents)x=new Image,x.src=w.contents;else throw new Error("No image or contents");let E=t*(w.tileWidthMult??1),A=t;if(w.useOriginalSize||w.renderWidth||w.renderHeight){let C=w.renderWidth??x.width,R=w.renderHeight??x.height;E=Math.ceil(C/t)*t,A=Math.ceil(R/t)*t}return{keyValue:g,img:x,inputData:w,renderWidth:E,renderHeight:A,renderSourceWidth:w.useOriginalSize?x.width:w.renderSourceWidth??Math.min(x.width,x.height),renderSourceHeight:w.useOriginalSize?x.height:w.renderSourceHeight??Math.min(x.width,x.height),renderSourceStartX:w.renderSourceStartX??0,renderSourceStartY:w.renderSourceStartY??0}}),o=new V6(void 0,void 0,0,{square:!0,pot:!0,...r?{}:{smart:!0},logic:r?vi.FILL_WIDTH:vi.MAX_AREA}),a=s.map(g=>{let w=new En(g.renderWidth,g.renderHeight);return w.data=g,w});o.addArray(a);let l=o.bins[0];if(!l||!l.rects||!l.rects.length)throw new Error("Failed to pack textures");let c={width:l.width,height:l.height,coords:l.rects.map(g=>({x:g.x,y:g.y,img:{data:g.data}}))},d=new Set;for(let g of c.coords){let w=g.img.data;if(d.has(w.keyValue))throw new Error(`Duplicate texture keyValue found in atlas: ${w.keyValue}`);d.add(w.keyValue)}if(d.size!==i.length)throw new Error(`Lost some textures in packing: ${i.length-d.size}`);let u=Math.max(_oe(c.width),_oe(c.height));if(u>F6){let g=s.reduce((x,E)=>{let A=`${E.renderWidth}x${E.renderHeight}`;return x[A]=(x[A]||0)+1,x},{}),w=Object.entries(g).sort(([,x],[,E])=>E-x).map(([x,E])=>`${x}(${E})`).join(", ");throw new Error(`Required atlas size ${u} exceeds maximum ${F6}. Texture sizes: ${w}`)}let p=n(u);p.width=u,p.height=u;let v=p.getContext("2d");v.imageSmoothingEnabled=!1;let _={},b=t/u,y=Math.ceil(u/t);for(let g of c.coords){let w=g.img.data,x=g.x,E=g.y,A=Math.floor(E/t),C=Math.floor(x/t),R=A*y+C;try{v.drawImage(w.img,w.renderSourceStartX,w.renderSourceStartY,w.renderSourceWidth,w.renderSourceHeight,x,E,w.renderWidth,w.renderHeight)}catch(F){throw new Error(`Error drawing ${w.keyValue}: ${F}`)}let L=w.keyValue.split(".").slice(0,-1).join(".")||w.keyValue,M=w.renderWidth/u,k=w.renderHeight/u;_[L]={u:x/u,v:E/u,tileIndex:R,...M==b&&k==b?{}:{su:M,sv:k}}}return{canvas:p,json:{suSv:b,tileSize:t,width:u,height:u,textures:_}}};f();m();h();var Rx=i=>{i=i.split("-")[0];let[e,t="0",n="0"]=i.split(".");return parseInt(`${e.padStart(2,"0")}${t.padStart(2,"0")}${n.padStart(2,"0")}`,10)},kc=async i=>{let e=new Image;return e.crossOrigin="anonymous",e.src=i,e.complete||await new Promise((t,n)=>{e.onload=t,e.onerror=n}),e};var ds=class i{atlasJson;latestImage;legacyImage;atlasStore;atlasHasLegacyImage;static getTextureInfo(e,t,n,r="latest"){let s=e.get(r,n);if(!s)return;let o=(s.imageType==="latest"?t.latest:t.legacy).suSv;return{...s,su:s?.su??o,sv:s?.sv??o}}constructor(e,t,n){this.atlasJson=e,this.latestImage=t,this.legacyImage=n,this.atlasStore=new Ds,this.atlasStore.inclusive=!1;let r=e,s=(o,a,l,c)=>{for(let[d,u]of Object.entries(l))o.push(a,d,{...u,version:a,imageType:c})};if(s(this.atlasStore,"latest",r.latest.textures,"latest"),this.atlasHasLegacyImage=!!n,n&&r.legacy)for(let o of Object.keys(r.legacy.textures)){let[a,l]=o.split("/");s(this.atlasStore,a,{[l]:r.legacy.textures[o]},"legacy")}}get atlas(){return this.atlasJson}getTextureInfo(e,t="latest"){let n=i.getTextureInfo(this.atlasStore,this.atlas,e,t);if(n)return{...n,getLoadedImage:async()=>await kc(n.imageType==="latest"?this.latestImage:this.legacyImage),getLoadedAtlasImage:async()=>await kc(n.imageType==="latest"?this.latestImage:this.legacyImage)}}async makeNewAtlas(e,t,n=this.atlas.latest.tileSize,r,s=[],o={}){let a=this.atlasJson,l={},c=this.atlasHasLegacyImage?await kc(this.legacyImage):null,d=await kc(this.latestImage);for(let b of new Set([...Object.keys(a.latest.textures),...s])){let y=t?.(b);if(y===!1)continue;if(y&&y!==!0){let L=typeof y=="string"?await kc(y):y;l[b]={u:0,v:0,su:1,sv:1,img:L};continue}let g=this.getTextureInfo(b,e);if(!g)throw new Error(`Missing texture info from the provided atlas for ${b} and not custom data is provided`);let{u:w,v:x,su:E,sv:A}=g,C=g.version==="latest"?a.latest:a.legacy,R=g.imageType==="latest"?d:c;if(!R)throw new Error(`Missing image for ${b}`);l[b]={u:w,v:x,su:E??C.suSv,sv:A??C.suSv,img:R}}let u=Object.keys(l);if(r){let b=typeof r=="function"?r:y=>r.includes(y)?1:-1;u.sort((y,g)=>b(g)-b(y))}let{json:p,canvas:v}=yoe({input:u,getLoadedImage:b=>{let y=l[b],g=y.img,w=g.width,x=g.height;return delete y.img,{image:g,renderWidth:y.su*w,renderHeight:y.sv*x,renderSourceStartX:y.u*w,renderSourceStartY:y.v*x,renderSourceWidth:y.su*w,renderSourceHeight:y.sv*x}},tileSize:this.atlas.latest.tileSize,...o}),_;return{canvas:v,atlas:p,get newAtlasParser(){return _||(_=new i({latest:p},v.toDataURL())),_},get image(){return v.toDataURL()}}}async createDebugImage(e=!1){let t=this.atlas.latest;if(t.width!==t.height)throw new Error("Atlas must be square");let r=Math.min(F6,t.width*(e?6:1))/t.width,s=t.height*r,o=t.width*r,a=globalThis.Canvas?new globalThis.Canvas(o,s):document.createElement("canvas");a.width=o,a.height=s;let l=a.getContext("2d");l.imageSmoothingEnabled=!1,l.webkitImageSmoothingEnabled=!1,l.mozImageSmoothingEnabled=!1,l.msImageSmoothingEnabled=!1;let c=await kc(this.latestImage);l.drawImage(c,0,0,t.width,t.height,0,0,o,s),l.strokeStyle="#ff0000",l.lineWidth=2;let d=Object.keys(t.textures),u=d.length,p=0;return d.forEach((v,_)=>{let b=t.textures[v],y=Math.floor(_/u*100);y>=p+10&&(console.log(`Processing textures: ${y}% (${_}/${u})`),p=y);let g=b.u*t.width*r,w=b.v*t.height*r,x=(b.su||t.suSv)*t.width*r,E=(b.sv||t.suSv)*t.height*r,A=l.createPattern((()=>{let C=globalThis.Canvas?new globalThis.Canvas(10,10):document.createElement("canvas");C.width=10,C.height=10;let R=C.getContext("2d");return R.fillStyle="#ff0000",R.fillRect(0,0,5,10),R.fillStyle="#ffff00",R.fillRect(5,0,5,10),C})(),"repeat");if(l.strokeStyle=A,l.strokeRect(g,w,x,E),e){let C=v,R=4,L=x-R*2,M=12;do{if(l.font=`${M}px monospace`,l.measureText(C).width<=L||M<=6)break;M-=1}while(M>6);l.fillStyle="white",l.strokeStyle="black",l.lineWidth=Math.max(1,M/6),l.textBaseline="top";let k=g+R,F=w+R,Z=C.split(/(?=[A-Z_/])/g),U="",H=[];for(let ce of Z){let te=U+ce;l.measureText(te).width>L&&U!==""?(H.push(U),U=ce):U=te}H.push(U);let Y=M*1.2;H.forEach((ce,te)=>{l.strokeText(ce,k,F+te*Y),l.fillText(ce,k,F+te*Y)})}}),console.log(`Processing textures: 100% (${u}/${u})`),a.toDataURL()}};f();m();h();f();m();h();var boe=i=>{let e=i.split(":");return e.length===1?"minecraft":e.length===2?e[0]:e.slice(0,-1).join(":")},Df=class{version;blockStatesStore;blockModelsStore;stateIdToElements={};constructor(e,t,n){this.version=e,this.blockStatesStore=t,this.blockModelsStore=n}getElementsCached(e){let{stateId:t}=e;if(this.stateIdToElements[t])return this.stateIdToElements[t];let n=this.getElements(e),r=n===0?[]:n;return this.stateIdToElements[t]=r,r}parseProperties(e){if(typeof e=="object")return e;let t={};for(let n of e.split(",")){let[r,s]=n.split("=");t[r]=s}return t}getElements(e,t=!1){let n=this.getResolvedModelFirst(e,t);if(!n)return 0;let r=[];for(let o of n)o?.elements&&r.push(...o.elements.map(({from:a,to:l})=>[a,l]));return r.length===1&&xoe(r[0][0],[0,0,0])&&xoe(r[0][1],[16,16,16])?1:r}resolvedModel={modelName:""};issues=[];matchedModels=[];matchedConditions=[];getModelsByBlock(e,t,n){this.matchedModels=[],this.matchedConditions=[];let r=(u,p)=>{if(!p)return!0;typeof p=="string"&&(p=this.parseProperties(p));let v=u.properties;if(p.OR)return p.OR.some(_=>r(u,_));if(p.AND)return p.AND.every(_=>r(u,_));for(let _ in p)if(typeof p[_]!="string"&&(p[_]=String(p[_])),!p[_].split("|").some(b=>b===String(v[_])))return!1;return!0},s=[],o=this.blockStatesStore.get(this.version,e.name);if(!o){this.issues.push(`Block ${e.name} not found in all registered blockstates. Place it into assets/${boe(e.name)}/blockstates/${e.name}.json`);return}let a=o.variants,l=!1;if(a){let u=a[""]||a.normal;for(let p in a)if(p!==""&&r(e,p)){u=a[p];break}if(u){let p=Object.entries(a).find(([v])=>u===a[v])?.[0];this.matchedConditions.push(`variant:${p}`)}if(!u)if(t){let p=Object.keys(a)[0];u=a[p],this.matchedConditions.push(`fallback:${p}`)}else return;u&&(s.push(u),l=!0)}if(o.multipart){for(let{when:u,apply:p}of o.multipart)(!u||r(e,u))&&(s.push(p),this.matchedConditions.push(u?`multipart:${JSON.stringify(u)}`:"multipart:always"));if(!s.length&&t){let p=o.multipart.filter(v=>v.when)[0]?.apply;p&&(s.push(p),this.matchedConditions.push("multipart:fallback"))}}if(!s.length){if(!l){let u=Object.keys(a??{}).length;u?this.issues.push(`Block did not match any possible state (${u} possible states)`):this.issues.push(`Blockstates for ${e.name} are not defined`)}return}let c=[],d=0;for(let u of s){d++;let p=0;c.push([]);for(let v of Array.isArray(u)?u:[u])if(p++,this.resolvedModel={modelName:v.model??e.name,x:v.x,y:v.y,z:v.z,uvlock:v.uvlock,weight:v.weight},!!v&&(this.getResolvedModelsByModel(v.model,e.name+"-"+d+"-"+p,!1),c[c.length-1].push(this.resolvedModel),!n&&c[c.length-1].length>0))break}return c}getModelData(e){return this.blockModelsStore.get(this.version,e.replace("minecraft:",""))}getResolvedModelsByModel(e,t,n=!0){n&&(this.resolvedModel={modelName:this.resolvedModel.modelName});let r=this.getModelData(e);if(!r){this.issues.push(`Model ${e} not found. Ensure it is present in assets/${boe(e)}/models/${e}.json`);return}return this.matchedModels.push(e),this.getResolvedModelsByModelData(r,t,n)}getResolvedModelsByModelData(e,t,n=!0){n&&(this.resolvedModel={modelName:this.resolvedModel.modelName});let r=[],s=a=>{if(r.push(a),a.parent){let l=this.getModelData(a.parent);if(!l){this.issues.push(`Parent model ${a.parent} not found for ${t}`);return}this.matchedModels.push(`parent:${a.parent}`),s(l)}};s(e),r.reverse();for(let a of r){if(a.textures){this.resolvedModel.textures??={};for(let[l,c]of Object.entries(a.textures)){if(c.includes("#")&&(c=c.split("/").at(-1)),c.startsWith("#")){let d=c.slice(1);this.resolvedModel.textures[d]&&(c=this.resolvedModel.textures[d])}this.resolvedModel.textures[l]=c}}a.elements&&(this.resolvedModel.elements=a.elements);for(let[l,c]of Object.entries(a))l!=="elements"&&l!=="textures"&&l!=="parent"&&(this.resolvedModel[l]&&typeof this.resolvedModel[l]=="object"&&c&&typeof c=="object"?Object.assign(this.resolvedModel[l],c):this.resolvedModel[l]=c)}let o=(a,l,c)=>{if(c.push(l),a.includes("#")){if(a=a.split("/").at(-1).replace("#",""),this.resolvedModel.textures??={},c.includes(a)){this.issues.push(`${t}: Circular texture reference detected: ${c.join(" -> ")}`);return}let d=this.resolvedModel.textures[a];if(d)return o(d,a,c);this.issues.push(`${t}: Cannot resolve texture ${a} for ${l} because it is not defined`);return}return a};for(let[a,l]of Object.entries(this.resolvedModel.textures??{})){if(!l.includes("#"))continue;let c=o(l,a,[]);c?this.resolvedModel.textures[a]=c:delete this.resolvedModel.textures[a]}for(let a of this.resolvedModel.elements??[])for(let[l,c]of Object.entries(a.faces??{}))c.texture&&(c.texture=this.resolvedModel.textures[c.texture.replace("#","")]??c.texture);return{resolvedModel:this.resolvedModel}}getResolvedModelFirst(e,t=!1){return this.getModelsByBlock(e,t,!1)?.map(n=>n[0])}getResolvedModelRandom(e,t=!1){return this.getModelsByBlock(e,t,!1)?.map(n=>n[Math.floor(Math.random()*n.length)])}getAllResolvedModels(e,t=!1){return this.getModelsByBlock(e,t,!0)}},xoe=(i,e)=>!!i&&!!e&&i.length===e.length&&i.every((t,n)=>t===e[n]);f();m();h();var Zbe=new Ds,Qbe=new Ds,exe=new Ds;Zbe.inclusive=!1;Qbe.inclusive=!1;exe.inclusive=!1;var z6=i=>{let e=new Ds;return e.inclusive=!1,e.loadData(i.blockstates),e},H6=i=>{let e=new Ds;return e.inclusive=!1,e.loadData(i.models),e},q6=i=>{let e=new Ds;return e.inclusive=!1,e.loadData(i),e};function G6(i,e,t){let n=z6(i),r=H6(i),s=new Df(t,n,r),o=new ds(e,"latest","legacy"),a=c=>o.getTextureInfo(c.replace("block/","").replace("blocks/",""),t),l=(c,d,u)=>{let{elements:p,textures:v,..._}=c;return{elements:p?.map((b,y)=>{try{return{...b,faces:Object.fromEntries(Object.entries(b.faces).map(([g,w])=>{let x=w.texture;if(!x)throw new Error(`Missing resolved texture ${x} for face ${g} of ${d.name}`);let E=a(x);if(!E)throw new Error(`Missing texture data ${x} for ${d.name}`);let A=b.from,C=b.to,R=16,L=w.uv||{north:[C[0],R-C[1],A[0],R-A[1]],east:[A[2],R-C[1],C[2],R-A[1]],south:[A[0],R-C[1],C[0],R-A[1]],west:[A[2],R-C[1],C[2],R-A[1]],up:[A[0],A[2],C[0],C[2]],down:[C[0],A[2],A[0],C[2]]}[g],M=(L[2]-L[0])/R*E.su,k=(L[3]-L[1])/R*E.sv;return[g,{...w,texture:{u:E.u+L[0]/16*E.su,v:E.v+L[1]/16*E.sv,su:M,sv:k,tileIndex:E.tileIndex,debugName:x}}]}))}}catch(g){return u?.push(`Error processing element ${y} in ${d.name}: ${g.message}`),null}}).filter(b=>b!==null),..._}};return{getAllResolvedModels0_1(c,d=!1,u=[],p=[],v=[],_=!1){s.issues=[],s.matchedModels=[],s.matchedConditions=[];let b=s.getAllResolvedModels(c,d)??[];if(u.push(...s.issues),p.push(...s.matchedModels),v.push(...s.matchedConditions),!b.length)return u.push(`No models found for block ${c.name}`),[];let y=["north","east","south","west","up","down"];try{let g=b.map(w=>w.map(x=>{try{return l(x,c,_?u:void 0)}catch(E){return u.push(`Error transforming model for ${c.name}: ${E.message}`),null}}).filter(x=>x?.elements?.length)).filter(w=>w.length);return g.length||u.push(`No valid models after transformation for block ${c.name}`),g}catch(g){return u.push(`Fatal error processing models for ${c.name}: ${g.message}`),[]}},transformModel:l,getTextureInfo:a}}f();m();h();yt();var Ox=Yr(woe(),1);f();m();h();f();m();h();var W6=class{constructor(e,t,n){this.name=e,this.fg=t,this.bg=n,this.PR=Math.round(window.devicePixelRatio||1),this.WIDTH=90*this.PR,this.HEIGHT=48*this.PR,this.TEXT_X=3*this.PR,this.TEXT_Y=2*this.PR,this.GRAPH_X=3*this.PR,this.GRAPH_Y=15*this.PR,this.GRAPH_WIDTH=84*this.PR,this.GRAPH_HEIGHT=30*this.PR,this.canvas=document.createElement("canvas"),this.canvas.width=90*this.PR,this.canvas.height=48*this.PR,this.canvas.style.width="90px",this.canvas.style.position="absolute",this.canvas.style.height="48px",this.canvas.style.cssText="width:90px;height:48px",this.context=this.canvas.getContext("2d"),this.context&&(this.context.font="bold "+9*this.PR+"px Helvetica,Arial,sans-serif",this.context.textBaseline="top",this.context.fillStyle=this.bg,this.context.fillRect(0,0,this.WIDTH,this.HEIGHT),this.context.fillStyle=this.fg,this.context.fillText(this.name,this.TEXT_X,this.TEXT_Y),this.context.fillRect(this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH,this.GRAPH_HEIGHT),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH,this.GRAPH_HEIGHT))}update(e,t,n,r,s=0){let o=1/0,a=0;this.context&&(o=Math.min(o,e),a=Math.max(n,e),r=Math.max(r,t),this.context.fillStyle=this.bg,this.context.globalAlpha=1,this.context.fillRect(0,0,this.WIDTH,this.GRAPH_Y),this.context.fillStyle=this.fg,this.context.fillText(e.toFixed(s)+" "+this.name+" ("+o.toFixed(s)+"-"+parseFloat(a.toFixed(s))+")",this.TEXT_X,this.TEXT_Y),this.context.drawImage(this.canvas,this.GRAPH_X+this.PR,this.GRAPH_Y,this.GRAPH_WIDTH-this.PR,this.GRAPH_HEIGHT,this.GRAPH_X,this.GRAPH_Y,this.GRAPH_WIDTH-this.PR,this.GRAPH_HEIGHT),this.context.fillRect(this.GRAPH_X+this.GRAPH_WIDTH-this.PR,this.GRAPH_Y,this.PR,this.GRAPH_HEIGHT),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(this.GRAPH_X+this.GRAPH_WIDTH-this.PR,this.GRAPH_Y,this.PR,(1-t/r)*this.GRAPH_HEIGHT))}};var Eoe=class j6{constructor({logsPerSecond:e=20,samplesLog:t=100,samplesGraph:n=10,precision:r=2,minimal:s=!1,horizontal:o=!0,mode:a=0}={}){this.mode=a,this.horizontal=o,this.container=document.createElement("div"),this.container.style.cssText="position:fixed;top:0;left:0;opacity:0.9;z-index:10000;",s&&(this.container.style.cssText+="cursor:pointer"),this.gl=null,this.query=null,this.minimal=s,this.beginTime=(performance||Date).now(),this.prevTime=this.beginTime,this.prevCpuTime=this.beginTime,this.frames=0,this.averageCpu={logs:[],graph:[]},this.averageGpu={logs:[],graph:[]},this.queryCreated=!1,this.fpsPanel=this.addPanel(new j6.Panel("FPS","#0ff","#002"),0),this.msPanel=this.addPanel(new j6.Panel("CPU","#0f0","#020"),1),this.gpuPanel=null,this.samplesLog=t,this.samplesGraph=n,this.precision=r,this.logsPerSecond=e,this.minimal?(this.container.addEventListener("click",l=>{l.preventDefault(),this.showPanel(++this.mode%this.container.children.length)},!1),this.mode=a,this.showPanel(this.mode)):window.addEventListener("resize",()=>{this.resizePanel(this.fpsPanel,0),this.resizePanel(this.msPanel,1),this.gpuPanel&&this.resizePanel(this.gpuPanel,2)})}resizePanel(e,t){e.canvas.style.position="absolute",this.minimal?e.canvas.style.display="none":(e.canvas.style.display="block",this.horizontal?(e.canvas.style.top="0px",e.canvas.style.left=t*e.WIDTH/e.PR+"px"):(e.canvas.style.left="0px",e.canvas.style.top=t*e.HEIGHT/e.PR+"px"))}addPanel(e,t){return e.canvas&&(this.container.appendChild(e.canvas),this.resizePanel(e,t)),e}showPanel(e){for(let t=0;t<this.container.children.length;t++){let n=this.container.children[t];n.style.display=t===e?"block":"none"}this.mode=e}init(e){if(!e){console.error('Stats: The "canvas" parameter is undefined.');return}if(e instanceof WebGL2RenderingContext)this.gl=e;else if(e instanceof HTMLCanvasElement||e instanceof OffscreenCanvas){if(this.gl=e.getContext("webgl2"),!this.gl){console.error("Stats: Unable to obtain WebGL2 context.");return}}else{console.error("Stats: Invalid input type. Expected WebGL2RenderingContext, HTMLCanvasElement, or OffscreenCanvas.");return}this.ext=this.gl.getExtension("EXT_disjoint_timer_query_webgl2"),this.ext&&(this.gpuPanel=this.addPanel(new j6.Panel("GPU","#ff0","#220"),2))}begin(){if(this.beginProfiling("cpu-started"),!(!this.gl||!this.ext)){if(this.query){let e=this.gl.getQueryParameter(this.query,this.gl.QUERY_RESULT_AVAILABLE);if(this.disjoint=this.gl.getParameter(this.ext.GPU_DISJOINT_EXT),e&&!this.disjoint){this.ns=this.gl.getQueryParameter(this.query,this.gl.QUERY_RESULT);let t=this.ns*1e-6;(e||this.disjoint)&&(this.gl.deleteQuery(this.query),this.query=null),e&&this.addToAverage(t,this.averageGpu)}}this.query||(this.queryCreated=!0,this.query=this.gl.createQuery(),this.query&&this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT,this.query))}}end(){this.beginTime=this.endInternal(),this.endProfiling("cpu-started","cpu-finished","cpu-duration",this.averageCpu),!(!this.gl||!this.ext)&&this.queryCreated&&this.gl.getQuery(this.ext.TIME_ELAPSED_EXT,this.gl.CURRENT_QUERY)&&this.gl.endQuery(this.ext.TIME_ELAPSED_EXT)}endInternal(){this.frames++;let e=(performance||Date).now();if(e>=this.prevCpuTime+1e3/this.logsPerSecond&&(this.updatePanel(this.msPanel,this.averageCpu),this.updatePanel(this.gpuPanel,this.averageGpu),this.prevCpuTime=e),e>=this.prevTime+1e3){let t=this.frames*1e3/(e-this.prevTime);this.fpsPanel.update(t,t,100,100,0),this.prevTime=e,this.frames=0}return e}addToAverage(e,t){t.logs.push(e),t.logs.length>this.samplesLog&&t.logs.shift(),t.graph.push(e),t.graph.length>this.samplesGraph&&t.graph.shift()}beginProfiling(e){window.performance&&window.performance.mark(e)}endProfiling(e,t,n,r){if(window.performance&&t){window.performance.mark(t);let s=performance.measure(n,e,t);this.addToAverage(s.duration,r)}}updatePanel(e,t){if(t.logs.length>0){let n=0,r=.01;for(let a=0;a<t.logs.length;a++)n+=t.logs[a],t.logs[a]>r&&(r=t.logs[a]);let s=0,o=.01;for(let a=0;a<t.graph.length;a++)s+=t.graph[a],t.graph[a]>o&&(o=t.graph[a]);e&&e.update(n/Math.min(t.logs.length,this.samplesLog),s/Math.min(t.graph.length,this.samplesGraph),r,o,this.precision)}}};Eoe.Panel=W6;var Soe=Eoe;f();m();h();var ar=Object.freeze({Linear:Object.freeze({None:function(i){return i},In:function(i){return this.None(i)},Out:function(i){return this.None(i)},InOut:function(i){return this.None(i)}}),Quadratic:Object.freeze({In:function(i){return i*i},Out:function(i){return i*(2-i)},InOut:function(i){return(i*=2)<1?.5*i*i:-.5*(--i*(i-2)-1)}}),Cubic:Object.freeze({In:function(i){return i*i*i},Out:function(i){return--i*i*i+1},InOut:function(i){return(i*=2)<1?.5*i*i*i:.5*((i-=2)*i*i+2)}}),Quartic:Object.freeze({In:function(i){return i*i*i*i},Out:function(i){return 1- --i*i*i*i},InOut:function(i){return(i*=2)<1?.5*i*i*i*i:-.5*((i-=2)*i*i*i-2)}}),Quintic:Object.freeze({In:function(i){return i*i*i*i*i},Out:function(i){return--i*i*i*i*i+1},InOut:function(i){return(i*=2)<1?.5*i*i*i*i*i:.5*((i-=2)*i*i*i*i+2)}}),Sinusoidal:Object.freeze({In:function(i){return 1-Math.sin((1-i)*Math.PI/2)},Out:function(i){return Math.sin(i*Math.PI/2)},InOut:function(i){return .5*(1-Math.sin(Math.PI*(.5-i)))}}),Exponential:Object.freeze({In:function(i){return i===0?0:Math.pow(1024,i-1)},Out:function(i){return i===1?1:1-Math.pow(2,-10*i)},InOut:function(i){return i===0?0:i===1?1:(i*=2)<1?.5*Math.pow(1024,i-1):.5*(-Math.pow(2,-10*(i-1))+2)}}),Circular:Object.freeze({In:function(i){return 1-Math.sqrt(1-i*i)},Out:function(i){return Math.sqrt(1- --i*i)},InOut:function(i){return(i*=2)<1?-.5*(Math.sqrt(1-i*i)-1):.5*(Math.sqrt(1-(i-=2)*i)+1)}}),Elastic:Object.freeze({In:function(i){return i===0?0:i===1?1:-Math.pow(2,10*(i-1))*Math.sin((i-1.1)*5*Math.PI)},Out:function(i){return i===0?0:i===1?1:Math.pow(2,-10*i)*Math.sin((i-.1)*5*Math.PI)+1},InOut:function(i){return i===0?0:i===1?1:(i*=2,i<1?-.5*Math.pow(2,10*(i-1))*Math.sin((i-1.1)*5*Math.PI):.5*Math.pow(2,-10*(i-1))*Math.sin((i-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(i){var e=1.70158;return i===1?1:i*i*((e+1)*i-e)},Out:function(i){var e=1.70158;return i===0?0:--i*i*((e+1)*i+e)+1},InOut:function(i){var e=2.5949095;return(i*=2)<1?.5*(i*i*((e+1)*i-e)):.5*((i-=2)*i*((e+1)*i+e)+2)}}),Bounce:Object.freeze({In:function(i){return 1-ar.Bounce.Out(1-i)},Out:function(i){return i<.36363636363636365?7.5625*i*i:i<.7272727272727273?7.5625*(i-=.5454545454545454)*i+.75:i<.9090909090909091?7.5625*(i-=.8181818181818182)*i+.9375:7.5625*(i-=.9545454545454546)*i+.984375},InOut:function(i){return i<.5?ar.Bounce.In(i*2)*.5:ar.Bounce.Out(i*2-1)*.5+.5}}),generatePow:function(i){return i===void 0&&(i=4),i=i<Number.EPSILON?Number.EPSILON:i,i=i>1e4?1e4:i,{In:function(e){return Math.pow(e,i)},Out:function(e){return 1-Math.pow(1-e,i)},InOut:function(e){return e<.5?Math.pow(e*2,i)/2:(1-Math.pow(2-e*2,i))/2+.5}}}}),Hm=function(){return performance.now()},Vf=function(){function i(){this._tweens={},this._tweensAddedDuringUpdate={}}return i.prototype.getAll=function(){var e=this;return Object.keys(this._tweens).map(function(t){return e._tweens[t]})},i.prototype.removeAll=function(){this._tweens={}},i.prototype.add=function(e){this._tweens[e.getId()]=e,this._tweensAddedDuringUpdate[e.getId()]=e},i.prototype.remove=function(e){delete this._tweens[e.getId()],delete this._tweensAddedDuringUpdate[e.getId()]},i.prototype.update=function(e,t){e===void 0&&(e=Hm()),t===void 0&&(t=!1);var n=Object.keys(this._tweens);if(n.length===0)return!1;for(;n.length>0;){this._tweensAddedDuringUpdate={};for(var r=0;r<n.length;r++){var s=this._tweens[n[r]],o=!t;s&&s.update(e,o)===!1&&!t&&delete this._tweens[n[r]]}n=Object.keys(this._tweensAddedDuringUpdate)}return!0},i}(),Uf={Linear:function(i,e){var t=i.length-1,n=t*e,r=Math.floor(n),s=Uf.Utils.Linear;return e<0?s(i[0],i[1],n):e>1?s(i[t],i[t-1],t-n):s(i[r],i[r+1>t?t:r+1],n-r)},Bezier:function(i,e){for(var t=0,n=i.length-1,r=Math.pow,s=Uf.Utils.Bernstein,o=0;o<=n;o++)t+=r(1-e,n-o)*r(e,o)*i[o]*s(n,o);return t},CatmullRom:function(i,e){var t=i.length-1,n=t*e,r=Math.floor(n),s=Uf.Utils.CatmullRom;return i[0]===i[t]?(e<0&&(r=Math.floor(n=t*(1+e))),s(i[(r-1+t)%t],i[r],i[(r+1)%t],i[(r+2)%t],n-r)):e<0?i[0]-(s(i[0],i[0],i[1],i[1],-n)-i[0]):e>1?i[t]-(s(i[t],i[t],i[t-1],i[t-1],n-t)-i[t]):s(i[r?r-1:0],i[r],i[t<r+1?t:r+1],i[t<r+2?t:r+2],n-r)},Utils:{Linear:function(i,e,t){return(e-i)*t+i},Bernstein:function(i,e){var t=Uf.Utils.Factorial;return t(i)/t(e)/t(i-e)},Factorial:function(){var i=[1];return function(e){var t=1;if(i[e])return i[e];for(var n=e;n>1;n--)t*=n;return i[e]=t,t}}(),CatmullRom:function(i,e,t,n,r){var s=(t-i)*.5,o=(n-e)*.5,a=r*r,l=r*a;return(2*e-2*t+s+o)*l+(-3*e+3*t-2*s-o)*a+s*r+e}}},Aoe=function(){function i(){}return i.nextId=function(){return i._nextId++},i._nextId=0,i}(),Lx=new Vf,xr=function(){function i(e,t){t===void 0&&(t=Lx),this._object=e,this._group=t,this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=ar.Linear.None,this._interpolationFunction=Uf.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=Aoe.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1}return i.prototype.getId=function(){return this._id},i.prototype.isPlaying=function(){return this._isPlaying},i.prototype.isPaused=function(){return this._isPaused},i.prototype.to=function(e,t){if(t===void 0&&(t=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=e,this._propertiesAreSetUp=!1,this._duration=t,this},i.prototype.duration=function(e){return e===void 0&&(e=1e3),this._duration=e,this},i.prototype.dynamic=function(e){return e===void 0&&(e=!1),this._isDynamic=e,this},i.prototype.start=function(e,t){if(e===void 0&&(e=Hm()),t===void 0&&(t=!1),this._isPlaying)return this;if(this._group&&this._group.add(this),this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var n in this._valuesStartRepeat)this._swapEndStartRepeatValues(n),this._valuesStart[n]=this._valuesStartRepeat[n]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=e,this._startTime+=this._delayTime,!this._propertiesAreSetUp||t){if(this._propertiesAreSetUp=!0,!this._isDynamic){var r={};for(var s in this._valuesEnd)r[s]=this._valuesEnd[s];this._valuesEnd=r}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,t)}return this},i.prototype.startFromCurrentValues=function(e){return this.start(e,!0)},i.prototype._setupProperties=function(e,t,n,r,s){for(var o in n){var a=e[o],l=Array.isArray(a),c=l?"array":typeof a,d=!l&&Array.isArray(n[o]);if(!(c==="undefined"||c==="function")){if(d){var u=n[o];if(u.length===0)continue;for(var p=[a],v=0,_=u.length;v<_;v+=1){var b=this._handleRelativeValue(a,u[v]);if(isNaN(b)){d=!1,console.warn("Found invalid interpolation list. Skipping.");break}p.push(b)}d&&(n[o]=p)}if((c==="object"||l)&&a&&!d){t[o]=l?[]:{};var y=a;for(var g in y)t[o][g]=y[g];r[o]=l?[]:{};var u=n[o];if(!this._isDynamic){var w={};for(var g in u)w[g]=u[g];n[o]=u=w}this._setupProperties(y,t[o],u,r[o],s)}else(typeof t[o]>"u"||s)&&(t[o]=a),l||(t[o]*=1),d?r[o]=n[o].slice().reverse():r[o]=t[o]||0}}},i.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._group&&this._group.remove(this),this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},i.prototype.end=function(){return this._goToEnd=!0,this.update(1/0),this},i.prototype.pause=function(e){return e===void 0&&(e=Hm()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=e,this._group&&this._group.remove(this),this)},i.prototype.resume=function(e){return e===void 0&&(e=Hm()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=e-this._pauseStart,this._pauseStart=0,this._group&&this._group.add(this),this)},i.prototype.stopChainedTweens=function(){for(var e=0,t=this._chainedTweens.length;e<t;e++)this._chainedTweens[e].stop();return this},i.prototype.group=function(e){return e===void 0&&(e=Lx),this._group=e,this},i.prototype.delay=function(e){return e===void 0&&(e=0),this._delayTime=e,this},i.prototype.repeat=function(e){return e===void 0&&(e=0),this._initialRepeat=e,this._repeat=e,this},i.prototype.repeatDelay=function(e){return this._repeatDelayTime=e,this},i.prototype.yoyo=function(e){return e===void 0&&(e=!1),this._yoyo=e,this},i.prototype.easing=function(e){return e===void 0&&(e=ar.Linear.None),this._easingFunction=e,this},i.prototype.interpolation=function(e){return e===void 0&&(e=Uf.Linear),this._interpolationFunction=e,this},i.prototype.chain=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return this._chainedTweens=e,this},i.prototype.onStart=function(e){return this._onStartCallback=e,this},i.prototype.onEveryStart=function(e){return this._onEveryStartCallback=e,this},i.prototype.onUpdate=function(e){return this._onUpdateCallback=e,this},i.prototype.onRepeat=function(e){return this._onRepeatCallback=e,this},i.prototype.onComplete=function(e){return this._onCompleteCallback=e,this},i.prototype.onStop=function(e){return this._onStopCallback=e,this},i.prototype.update=function(e,t){if(e===void 0&&(e=Hm()),t===void 0&&(t=!0),this._isPaused)return!0;var n,r,s=this._startTime+this._duration;if(!this._goToEnd&&!this._isPlaying){if(e>s)return!1;t&&this.start(e,!0)}if(this._goToEnd=!1,e<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0),r=(e-this._startTime)/this._duration,r=this._duration===0||r>1?1:r;var o=this._easingFunction(r);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,o),this._onUpdateCallback&&this._onUpdateCallback(this._object,r),r===1)if(this._repeat>0){isFinite(this._repeat)&&this._repeat--;for(n in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[n]=="string"&&(this._valuesStartRepeat[n]=this._valuesStartRepeat[n]+parseFloat(this._valuesEnd[n])),this._yoyo&&this._swapEndStartRepeatValues(n),this._valuesStart[n]=this._valuesStartRepeat[n];return this._yoyo&&(this._reversed=!this._reversed),this._repeatDelayTime!==void 0?this._startTime=e+this._repeatDelayTime:this._startTime=e+this._delayTime,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var a=0,l=this._chainedTweens.length;a<l;a++)this._chainedTweens[a].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},i.prototype._updateProperties=function(e,t,n,r){for(var s in n)if(t[s]!==void 0){var o=t[s]||0,a=n[s],l=Array.isArray(e[s]),c=Array.isArray(a),d=!l&&c;d?e[s]=this._interpolationFunction(a,r):typeof a=="object"&&a?this._updateProperties(e[s],o,a,r):(a=this._handleRelativeValue(o,a),typeof a=="number"&&(e[s]=o+(a-o)*r))}},i.prototype._handleRelativeValue=function(e,t){return typeof t!="string"?t:t.charAt(0)==="+"||t.charAt(0)==="-"?e+parseFloat(t):parseFloat(t)},i.prototype._swapEndStartRepeatValues=function(e){var t=this._valuesStartRepeat[e],n=this._valuesEnd[e];typeof n=="string"?this._valuesStartRepeat[e]=this._valuesStartRepeat[e]+parseFloat(n):this._valuesStartRepeat[e]=this._valuesEnd[e],this._valuesEnd[e]=t},i}();var dXt=Aoe.nextId,Eo=Lx,uXt=Eo.getAll.bind(Eo),fXt=Eo.removeAll.bind(Eo),hXt=Eo.add.bind(Eo),mXt=Eo.remove.bind(Eo),Moe=Eo.update.bind(Eo);f();m();h();function Bx(i){if(i==="high-performance")return"high-performance";if(i==="low-power")return"low-power"}var dn=typeof globalThis.WorkerGlobalScope<"u"&&globalThis instanceof globalThis.WorkerGlobalScope,Nx=class{constructor(e,t=0){this.canvas=e;this.stats=new Ox.default,this.stats2=new Ox.default,this.statsGl=new Soe({minimal:!0}),this.stats2.showPanel(2),this.denseMode=typeof process<"u"&&!0||typeof window<"u"&&window.innerHeight<500,this.initStats(),this.setVisibility(t)}stats;stats2;statsGl;total=0;denseMode;addStat(e,t=80){e.style.position="absolute",this.denseMode&&(e.style.height="12px"),e.style.overflow="hidden",e.style.left="",e.style.top="0",e.style.right=`${this.total}px`,e.style.width="80px",e.style.zIndex="1",e.style.opacity="0.8";let n=document.getElementById("corner-indicator-stats"),r=n??document.body;n&&(e.style.position="relative"),r.appendChild(e),this.total+=t}initStats(){let e=this.stats2.dom.children.length===3;this.addStat(this.stats.dom),e&&this.addStat(this.stats2.dom),this.statsGl.init(this.canvas),this.statsGl.container.style.display="flex",this.statsGl.container.style.justifyContent="flex-end";let t=0;for(let n of this.statsGl.container.children){let r=n;t++===0&&(r.style.display="none"),r.style.position=""}}setVisibility(e){e>0?(this.stats.dom.style.display="block",this.stats2.dom.style.display=e>=2?"block":"none",this.statsGl.container.style.display=e>=2?"block":"none"):(this.stats.dom.style.display="none",this.stats2.dom.style.display="none",this.statsGl.container.style.display="none")}markStart(){this.stats.begin(),this.stats2.begin(),this.statsGl.begin()}markEnd(){this.stats.end(),this.stats2.end(),this.statsGl.end()}dispose(){this.stats.dom.remove(),this.stats2.dom.remove(),this.statsGl.container.remove()}},$6=class{constructor(e,t,n){this.initOptions=e;this.externalCanvas=t;this.config=e.config,t?this.canvas=t:this.addToPage();try{let s=e.getRendererOptions?.()?.gpuPreference??"default";this.renderer=new Su({canvas:this.canvas,preserveDrawingBuffer:!0,logarithmicDepthBuffer:!0,powerPreference:Bx(s)})}catch(s){throw e.callbacks.displayCriticalError(new Error(`Failed to create WebGL context, not possible to render (restart browser): ${s.message}`)),s}this.renderer.useLegacyLights=!0,this.renderer.outputColorSpace=Pi,t||(this.updatePixelRatio(),this.setupResizeListener()),this.sizeUpdated(),this.previousCanvasWidth=this.canvas.width,this.previousCanvasHeight=this.canvas.height;let r="WebGL2RenderingContext"in globalThis;!t&&r&&!dn&&(this.stats=new Nx(this.canvas,this.config.statsVisible)),this.setupFpsTracking(),this.startRenderLoop()}canvas;renderer;animationFrameId;timeoutId;lastRenderTime=0;previousCanvasWidth=0;previousCanvasHeight=0;currentWidth=0;currentHeight=0;pendingResize=!1;renderedFps=0;fpsInterval;stats;paused=!1;disconnected=!1;preRender=()=>{};render=e=>{};postRender=()=>{};sizeChanged=()=>{};droppedFpsPercentage=0;config;onRender=[];inWorldRenderingConfig;nonReactiveState;setupResizeListener(){if(typeof window>"u")return;let e,t=()=>{e&&clearTimeout(e),e=setTimeout(()=>{this.pendingResize=!0},16)};window.addEventListener("resize",t,{passive:!0})}updatePixelRatio(){if(typeof window>"u")return;let e=window.devicePixelRatio||1;this.renderer.capabilities.isWebGL2||(e=1),this.renderer.setPixelRatio(e)}sizeUpdated(){this.renderer.setSize(this.currentWidth,this.currentHeight,!1)}addToPage(){this.canvas=txe(),this.updateCanvasSize()}updateSizeExternal(e,t,n){this.currentWidth=e,this.currentHeight=t,this.renderer.setPixelRatio(n),this.sizeUpdated()}updateCanvasSize(){if(this.externalCanvas||typeof document>"u")return;let e=document.body.offsetWidth,t=document.body.offsetHeight;this.currentWidth!==e&&(this.currentWidth=e),this.currentHeight!==t&&(this.currentHeight=t)}setupFpsTracking(){let e=0;this.fpsInterval=setInterval(()=>{e>0&&(this.droppedFpsPercentage=this.renderedFps/e),e=Math.max(this.renderedFps,e),this.nonReactiveState&&(this.nonReactiveState.fps=this.renderedFps),this.renderedFps=0},1e3)}startRenderLoop(){let e=()=>{if(this.disconnected)return;if(this.config.timeoutRendering){let r=1e3/(this.config.fpsLimit?Math.min(this.config.fpsLimit,60):60);this.timeoutId=setTimeout(e,r)}else this.animationFrameId=requestAnimationFrame(e);if(this.paused||this.renderer.xr.isPresenting&&!this.inWorldRenderingConfig?.vrPageGameRendering)return;if(!this.config.timeoutRendering&&this.config.fpsLimit){let n=performance.now(),r=n-this.lastRenderTime,s=1e3/this.config.fpsLimit;if(r<s)return;this.lastRenderTime=n-r%s}let t=!1;this.pendingResize&&(this.updateCanvasSize(),this.pendingResize=!1),(this.previousCanvasWidth!==this.currentWidth||this.previousCanvasHeight!==this.currentHeight)&&(this.previousCanvasWidth=this.currentWidth,this.previousCanvasHeight=this.currentHeight,this.sizeUpdated(),t=!0),this.frameRender(t),this.config.statsVisible!==void 0&&this.stats?.setVisibility(this.config.statsVisible)};e()}frameRender(e){this.preRender(),this.stats?.markStart(),Moe(),globalThis.freezeRender||this.render(e);for(let t of this.onRender)t(e);this.renderedFps++,this.stats?.markEnd(),this.postRender()}setPaused(e){this.paused=e}dispose(){this.disconnected=!0,this.animationFrameId&&cancelAnimationFrame(this.animationFrameId),this.timeoutId&&clearTimeout(this.timeoutId),this.canvas instanceof HTMLCanvasElement&&this.canvas.remove(),clearInterval(this.fpsInterval),this.stats?.dispose(),this.renderer.dispose()}};function txe(){let i=document.createElement("canvas");return i.id="viewer-canvas",document.body.appendChild(i),i}f();m();h();var qm=class{version;itemsAtlasParser;blocksAtlasParser;blockStatesStore;modelsStore;assetsParser;constructor(e,t,n,r){this.version=e,this.itemsAtlasParser=n,this.blocksAtlasParser=r,this.blockStatesStore=z6(t),this.modelsStore=H6(t),this.assetsParser=new Df(e,this.blockStatesStore,this.modelsStore)}resolveTexture(e){e.startsWith("minecraft:")&&(e=e.slice(10));let t=e.includes("items/")?"items":e.includes("block/")||e.includes("blocks/")?"blocks":"items",n=t==="blocks"?this.blocksAtlasParser:this.itemsAtlasParser,r=n.getTextureInfo(e.replace("block/","").replace("blocks/","").replace("item/","").replace("items/",""),this.version);if(!r)return;let s=n.atlas[r.imageType];return{slice:[r.u*s.width,r.v*s.height,r.su*s.width,r.sv*s.height],type:t,path:t}}resolveBlockModel(e,t){if(!this.blocksAtlasParser)return;let{resolvedModel:n}=this.assetsParser.getResolvedModelsByModelData(e);if(n?.elements?.length)return{resolvedModel:n,get top(){throw new Error("Was called with onlyResolveBlockModel = true")},get left(){throw new Error("Was called with onlyResolveBlockModel = true")},get right(){throw new Error("Was called with onlyResolveBlockModel = true")}}}tryGetFullBlock(e,t){if(!this.blocksAtlasParser)return;let{resolvedModel:n}=this.assetsParser.getResolvedModelsByModelData(e);if(!n?.elements?.length||!n.elements.every(p=>p.from[0]===0&&p.from[1]===0&&p.from[2]===0&&p.to[0]===16&&p.to[1]===16&&p.to[2]===16))return;let s=n.elements[0],o=s.faces.up?.texture??s.faces.top?.texture,a=s.faces.east?.texture??s.faces.left?.texture??s.faces.side?.texture,l=s.faces.north?.texture??s.faces.right?.texture??s.faces.side?.texture;if(!o||!a||!l)return;let c=this.resolveTexture(o);if(!c)throw new Error(`Missing texture for ${t} top texture`);let d=this.resolveTexture(a);if(!d)throw new Error(`Missing texture for ${t} left texture`);let u=this.resolveTexture(l);if(!u)throw new Error(`Missing texture for ${t} right texture`);return{top:c,left:d,right:u,resolvedModel:n}}getItemTexture(e,t={},n=!1,r=!1){let[s,o]=e.includes(":")?e.split(":"):["minecraft",e],a=s==="minecraft"?"":s,l=o,c=a?`${a}:item/${l}`:`item/${l}`,d=a?`${a}:block/${l}`:`block/${l}`,u=a?`${a}:${l}`:l,p=b=>this.modelsStore.get(this.version,b),v;{if(v=p(u),!n&&!v){let y=p(c);y&&y.textures?.layer0&&(v=y)}let b=v?.parent?.includes("block/");if(!v)if(r&&!a){let[y]=this.assetsParser.getResolvedModelFirst({name:l,properties:{}},!0)??[];if(y)return{resolvedModel:y,get top(){throw new Error("Was called with onlyResolveBlockModel = true")},get left(){throw new Error("Was called with onlyResolveBlockModel = true")},get right(){throw new Error("Was called with onlyResolveBlockModel = true")}}}else v=p(d),v&&(b=!0);if(b||v?.elements)return r?this.resolveBlockModel(v,u):this.tryGetFullBlock(v,u)}if(!v)return;let _=u.includes("block/")?Object.values(v.textures??{})[0]:v.textures?.layer0;if(_)return(_.startsWith("invsprite_")?this.resolveTexture(_.replace("invsprite_","")):void 0)??this.resolveTexture(_)}};f();m();h();function Dx(i,e=0){if(e>16)return;if(i==null)return i;let t=typeof i;if(t==="function"||t==="symbol")return;if(t==="bigint")return i.toString();if(t!=="object"||i instanceof ArrayBuffer)return i;if(ArrayBuffer.isView(i)){let s=i;return s.buffer.slice(s.byteOffset,s.byteOffset+s.byteLength)}if(i instanceof Date)return i.toISOString();if(Array.isArray(i))return i.map(s=>Dx(s,e+1)).filter(s=>s!==void 0);let n=i;if(typeof n.x=="number"&&typeof n.y=="number"&&typeof n.z=="number"&&!("w"in n))return{x:n.x,y:n.y,z:n.z};let r={};for(let s of Object.keys(n)){if(s==="_client"||s==="_events"||s==="_eventsCount")continue;let o=Dx(n[s],e+1);o!==void 0&&(r[s]=o)}return r}function X6(i){return i.map(e=>Dx(e))}var Y6=null;function Roe(i){return dn?((!Y6||typeof Y6.get!="function")&&(Y6=q6(N6)),Y6):(Coe(i),i.itemsDefinitionsStore)}function Coe(i){dn||typeof i.itemsDefinitionsStore?.get=="function"||(i.itemsDefinitionsStore=q6(i.sourceItemDefinitionsJson??N6))}var Gm=class{sourceItemDefinitionsJson=N6;itemsDefinitionsStore=q6(this.sourceItemDefinitionsJson);allReady=!1;itemsAtlasImage;blocksAtlasImage;blocksAtlasJson;itemsAtlasJson;customBlockStates;customModels;customItemModelNames={};customTextures={};guiAtlas=null;guiAtlasVersion=0;itemsRenderer;worldBlockProvider;blockstatesModels=null;version;texturesVersion;mcData;constructor(e){if(e){let t={...e};delete t.itemsDefinitionsStore,delete t.sourceItemDefinitionsJson,Object.assign(this,t),Coe(this)}if(this.version){let t=globalThis.loadedData??globalThis.mcData;dn&&t?.entitiesByName?this.mcData=t:this.mcData=(0,Ux.default)(this.version)}}prepareForTransfer(){let e={};for(let t in this)Object.prototype.hasOwnProperty.call(this,t)&&typeof this[t]!="function"&&(t==="itemsRenderer"||t==="worldBlockProvider"||t==="mcData"||t==="itemsDefinitionsStore"||t==="sourceItemDefinitionsJson"||(e[t]=this[t]));return e.customTextures={},delete e.itemsDefinitionsStore,delete e.sourceItemDefinitionsJson,e}},Ioe="1.21.4",Kl=class Kl extends Ol{rebuildWorkerRenderers(e){if(dn&&!(!e.version||!e.blockstatesModels||!e.blocksAtlasJson)){if(this.blocksAtlasParser=new ds({latest:e.blocksAtlasJson},""),e.itemsAtlasJson)this.itemsAtlasParser=new ds({latest:e.itemsAtlasJson},"");else if(!this.itemsAtlasParser?.atlas?.latest){if(!this.sourceItemsAtlases||Object.keys(this.sourceItemsAtlases).length===0)return;this.itemsAtlasParser=new ds(this.sourceItemsAtlases,"")}e.itemsRenderer=new qm(e.version,e.blockstatesModels,this.itemsAtlasParser,this.blocksAtlasParser),e.worldBlockProvider=G6(e.blockstatesModels,this.blocksAtlasParser.atlas,Ioe)}}static restoreTransferred(e,t){let n=new Kl,r=s=>{n.currentResources=new Gm(s),n.rebuildWorkerRenderers(n.currentResources)};return r(e.currentResources),t&&t.addEventListener("message",({data:s})=>{s.class===Kl.restorerName&&(s.type==="newResources"&&(console.log("[worker] got new resources"),r(s.currentResources)),s.type==="event"&&n.emit(s.eventName,...s.args))}),n}enrichTransferSnapshot(e){return e&&(this.itemsAtlasParser?.atlas?.latest&&(e.itemsAtlasJson=this.itemsAtlasParser.atlas.latest),this.blocksAtlasParser?.atlas?.latest&&(e.blocksAtlasJson=this.blocksAtlasParser.atlas.latest),e)}prepareForTransfer(e){if(e){let t=this.emit.bind(this);this.emit=(n,...r)=>{if(t(n,...r),e.postMessage({class:Kl.restorerName,type:"event",eventName:n,args:X6(r)}),n==="assetsTexturesUpdated"||n==="assetsInventoryReady"){let s=this.enrichTransferSnapshot(this.currentResources?.prepareForTransfer());e.postMessage({class:Kl.restorerName,type:"newResources",currentResources:s})}}}return{__restorer:Kl.restorerName,currentResources:this.enrichTransferSnapshot(this.currentResources?.prepareForTransfer())}}sourceBlockStatesModels=null;sourceBlocksAtlases=Fm;sourceItemsAtlases=coe;currentResources;itemsAtlasParser;blocksAtlasParser;currentConfig;abortController=new AbortController;_promiseAssetsReadyResolvers=Promise.withResolvers();get promiseAssetsReady(){return this._promiseAssetsReadyResolvers.promise}async loadSourceData(e=this.currentConfig?.version){if(!e)throw new Error("No version loaded");this.sourceBlockStatesModels??=(await Promise.resolve().then(()=>(Toe(),koe))).default}resetResources(){this.currentResources=new Gm}async updateAssetsData(e,t=!1){if(!this.currentConfig)throw new Error("No config loaded");this._promiseAssetsReadyResolvers=Promise.withResolvers();let n=new AbortController;if(await this.loadSourceData(this.currentConfig.version),n.signal.aborted)return;let r=this.currentResources??new Gm;r.version=this.currentConfig.version,r.texturesVersion=this.currentConfig.texturesVersion??r.version,r.mcData=(0,Ux.default)(r.version),r.blockstatesModels={blockstates:{},models:{}},r.blockstatesModels.blockstates.latest={...this.sourceBlockStatesModels.blockstates.latest,...r.customBlockStates},r.blockstatesModels.models.latest={...this.sourceBlockStatesModels.models.latest,...r.customModels},console.time("recreateAtlases"),await Promise.all([this.recreateBlockAtlas(r),this.recreateItemsAtlas(r)]),console.timeEnd("recreateAtlases"),!n.signal.aborted&&(r.version&&r.blockstatesModels&&this.itemsAtlasParser&&this.blocksAtlasParser&&(r.itemsRenderer=new qm(r.version,r.blockstatesModels,this.itemsAtlasParser,this.blocksAtlasParser)),!n.signal.aborted&&(this.currentResources=r,r.allReady=!0,t||this.emit("assetsTexturesUpdated"),this.currentConfig.noInventoryGui?this._promiseAssetsReadyResolvers.resolve():(this.emit("assetsInventoryStarted"),this.generateGuiTextures().then(()=>{n.signal.aborted||(t||this.emit("assetsInventoryReady"),this._promiseAssetsReadyResolvers.resolve())}))))}async recreateBlockAtlas(e=this.currentResources){let t={},n=new Date;(n.getMonth()===11&&n.getDate()>=24||n.getMonth()===0&&n.getDate()<=6)&&Object.assign(t,goe);let r=new ds(this.sourceBlocksAtlases,doe,uoe),s=Object.keys(e.customTextures.blocks?.textures??{});console.time("createBlocksAtlas");let{atlas:o,canvas:a}=await r.makeNewAtlas(e.texturesVersion,l=>{if(this.currentConfig.includeOnlyBlocks&&!this.currentConfig.includeOnlyBlocks.includes(l))return!1;let c=e.customTextures.blocks?.textures[l];return t[l]??c},void 0,void 0,s,{needHorizontalIndexes:!!this.currentConfig.includeOnlyBlocks});console.timeEnd("createBlocksAtlas"),this.blocksAtlasParser=new ds({latest:o},a.toDataURL()),e.blocksAtlasImage=await createImageBitmap(a),e.blocksAtlasJson=this.blocksAtlasParser.atlas.latest,e.worldBlockProvider=G6(e.blockstatesModels,this.blocksAtlasParser.atlas,Ioe)}async recreateItemsAtlas(e=this.currentResources){let t=new ds(this.sourceItemsAtlases,foe,hoe),n=Object.keys(e.customTextures.items?.textures??{}),{atlas:r,canvas:s}=await t.makeNewAtlas(e.texturesVersion,o=>{let a=e.customTextures.items?.textures[o];if(a)return a},e.customTextures.items?.tileSize,void 0,n);this.itemsAtlasParser=new ds({latest:r},s.toDataURL()),e.itemsAtlasImage=await createImageBitmap(s),e.itemsAtlasJson=this.itemsAtlasParser.atlas.latest}async generateGuiTextures(){}async downloadDebugAtlas(e=!1){if(!this.currentResources)throw new Error("No resources loaded");let r=await(e?this.itemsAtlasParser:this.blocksAtlasParser).createDebugImage(!0),s=document.createElement("a");s.href=r,s.download=`atlas-debug-${e?"items":"blocks"}.png`,s.click()}destroy(){this.abortController.abort(),this.currentResources=void 0,this.abortController=new AbortController}};Cn(Kl,"restorerName","ResourcesManager");var Zl=Kl;f();m();h();var J6=class{constructor(e){this.nonReactiveState=e;this.nonReactiveState.renderer||(this.nonReactiveState.renderer={timeline:{live:[],frozen:[],lastSecond:[]}}),this.nonReactiveState.renderer.timeline||(this.nonReactiveState.renderer.timeline={live:[],frozen:[],lastSecond:[]}),setInterval(()=>{this.updateLastSecondTimeline()},this.lastSecondUpdateInterval)}events=[];frozenEvents=[];lastSecondEvents=[];currentFrameStartTime=null;lastInteractionTime=0;lastSecondUpdateTime=0;timeWindowMs=5e3;lastSecondWindowMs=1e3;maxEvents=500;lastSecondUpdateInterval=1e3;markFrameStart(){this.currentFrameStartTime=performance.now(),this.addEvent({type:"frameStart",timestamp:this.currentFrameStartTime})}markFrameEnd(){if(!this.currentFrameStartTime)return;let e=performance.now(),t=e-this.currentFrameStartTime;this.addEvent({type:"frameEnd",timestamp:e,duration:t}),this.currentFrameStartTime=null}markCameraUpdate(e){if(!e)return;let t=performance.now();this.lastInteractionTime=t,this.addEvent({type:"cameraUpdate",timestamp:t}),this.frozenEvents=[...this.events],this.trimEvents(this.frozenEvents),this.syncFrozenEvents()}markFrameDisplay(){this.addEvent({type:"frameDisplay",timestamp:performance.now()})}addEvent(e){this.events.push(e),this.lastSecondEvents.push(e),this.trimEvents(this.events),this.trimLastSecondEvents(),this.syncLiveEvents()}trimEvents(e){let n=performance.now()-this.timeWindowMs;for(;e.length>0&&e[0].timestamp<n;)e.shift();e.length>this.maxEvents&&e.splice(0,e.length-this.maxEvents)}trimLastSecondEvents(){let t=performance.now()-this.lastSecondWindowMs;for(;this.lastSecondEvents.length>0&&this.lastSecondEvents[0].timestamp<t;)this.lastSecondEvents.shift()}updateLastSecondTimeline(){let e=performance.now();e-this.lastSecondUpdateTime<this.lastSecondUpdateInterval||(this.lastSecondUpdateTime=e,this.trimLastSecondEvents(),this.syncLastSecondEvents())}syncLiveEvents(){this.nonReactiveState.renderer.timeline.live=[...this.events]}syncFrozenEvents(){this.nonReactiveState.renderer.timeline.frozen=[...this.frozenEvents]}syncLastSecondEvents(){this.nonReactiveState.renderer.timeline.lastSecond=[...this.lastSecondEvents]}clear(){this.events=[],this.frozenEvents=[],this.lastSecondEvents=[],this.syncLiveEvents(),this.syncFrozenEvents(),this.syncLastSecondEvents()}};f();m();h();yt();var k3e=Yr(_p(),1);f();m();h();f();m();h();var tOe=()=>{if(typeof OffscreenCanvas>"u")return!1;try{let i=new OffscreenCanvas(1,1);return(i.getContext("webgl2")||i.getContext("webgl"))!==null}catch{return!1}},nOe=tOe(),zr=(i,e)=>{if(nOe||typeof document>"u")return new OffscreenCanvas(i,e);let t=document.createElement("canvas");return t.width=i,t.height=e,t};async function jc(i){let t=await(await fetch(i)).blob();return createImageBitmap(t)}var rOe=(i,e)=>{try{return JSON.parse(i)}catch(t){return console.warn(`Failed to parse ${e}`,t),null}},iOe={black:"#000000",dark_blue:"#0000AA",dark_green:"#00AA00",dark_aqua:"#00AAAA",dark_red:"#AA0000",dark_purple:"#AA00AA",gold:"#FFAA00",gray:"#AAAAAA",dark_gray:"#555555",blue:"#5555FF",green:"#55FF55",aqua:"#55FFFF",red:"#FF5555",light_purple:"#FF55FF",yellow:"#FFFF55",white:"#FFFFFF"},R7=(i,e,t,n=s=>{},r=(s,o)=>zr(s,o))=>{let a=[16,9],l=a[0]-a[1],c=l/16,d="front_text"in i?i.front_text.messages:[i.Text1,i.Text2,i.Text3,i.Text4];if(!d.some(_=>_!=="null"))return;let u=r(16*40,l*40),p=u.getContext("2d");n(p);let v=("front_text"in i?i.front_text.color:i.Color)||"black";for(let[_,b]of d.slice(0,4).entries())b!=="null"&&MA(b,t,u,64,v,64*(_+1)+(e?0:-8));return u},MA=(i,e,t,n,r,s=0)=>{let o=!1,a=typeof i=="string"&&(i?.startsWith("{")||i?.startsWith('"'))?rOe(i??'""',"sign text"):i;if(!a||typeof a!="object"&&typeof a!="string")return;let l=t.getContext("2d");if(!l)throw new Error("Could not get 2d context");l.imageSmoothingEnabled=!1,l.font=`${n}px mojangles`;let c=new e(a),d=[],u=!1,p="",v=s,_=[],b=(x,E)=>{x.text!==null&&x.text!==void 0&&typeof x.text!="string"&&console.warn("renderText received non-string text value:",typeof x.text,x.text);let A=x.text===null||x.text===void 0?void 0:String(x.text),C={color:x.color??E?.color,underlined:x.underlined??E?.underlined,strikethrough:x.strikethrough??E?.strikethrough,bold:x.bold??E?.bold,italic:x.italic??E?.italic};if(u=u||C.underlined||C.strikethrough||!1,A?.includes(`
4049
4049
  `))for(let R of A.split(`
4050
4050
  `))y(R,C),v+=n,p="";else A&&y(A,C);if(x.extra)for(let R of x.extra)b(R,C)},y=(x,E)=>{o||(o=x.trim()!==""),p+=x,_[v]=l.measureText(p).width;let A=E.color??r;A.startsWith("#")||(A=iOe[A.toLowerCase()]||A),d.push({fontStyle:`${E.bold?"bold":""} ${E.italic?"italic":""}`,fillStyle:A,underlineStyle:E.underlined??!1,strikeStyle:E.strikethrough??!1,offset:v,text:x})};if(b(c),!u&&!c.toString().trim())return;let g=0,w=0;for(let{fillStyle:x,fontStyle:E,underlineStyle:A,strikeStyle:C,offset:R,text:L}of d){w!==R&&(g=0),w=R,l.fillStyle=x,l.textRendering="optimizeLegibility",l.font=`${E} ${n}px mojangles`;let M=_[R]??l.measureText(L).width,k=(t.width-M)/2+g;l.fillText(L,k,R),C&&(l.lineWidth=n/8,l.strokeStyle=x,l.beginPath(),l.moveTo(k,R-l.lineWidth*2.5),l.lineTo(k+l.measureText(L).width,R-l.lineWidth*2.5),l.stroke()),A&&(l.lineWidth=n/8,l.strokeStyle=x,l.beginPath(),l.moveTo(k,R+l.lineWidth),l.lineTo(k+l.measureText(L).width,R+l.lineWidth),l.stroke()),g+=l.measureText(L).width}return o};f();m();h();function m1(i){let e=Math.floor(i.x/16),t=Math.floor(i.z/16);return[e,t]}function kA(i){let e=Math.floor(i.x/16),t=Math.floor(i.y/16),n=Math.floor(i.z/16);return[e,t,n]}f();m();h();Rs();f();m();h();function Na(i,e,t,n){let r=i[e];return Uu(i,()=>{let s=i[e];Object.is(r,s)||t(r=s)},n)}var zin=Symbol();f();m();h();var TA={blocks:"blocksArray",blockCollisionShapes:"blockCollisionShapes",biomes:"biomesArray",tints:"tints"};f();m();h();var Ehe=16;var She=(i,e)=>e?`${i}:${e}`:String(i);f();m();h();var Ahe=0,Da={},IA=40,C7="mc-renderer-debug-overlay",P7=(i,e=80,t=Ahe,n=IA,r)=>{if(dn)return{updateText(){},setVisibility(){}};let s=document.createElement("div");return s.style.position="fixed",s.style.top=`${n??IA}px`,s.style.right=`${t}px`,s.style.backgroundColor="rgba(0, 0, 0, 0.7)",s.style.color="white",s.style.padding="2px",s.style.fontFamily="monospace",s.style.fontSize="12px",r?.className?s.className=r.className:s.style.zIndex="100",s.style.pointerEvents="none",document.body.appendChild(s),Da[i]=s,n===void 0&&t===Ahe&&(IA+=20),{updateText(o){s.innerText!==o&&(s.innerText=o)},setVisibility(o){s.style.display=o?"block":"none"}}};var RA=(i,e)=>{dn||!Da[i]||(Da[i].innerText=e)},Mhe=i=>{if(!dn)for(let e in Da)Da[e].style.display=i?"block":"none"},khe=()=>{if(!dn)for(let i in Da)sOe(i)},sOe=i=>{dn||!Da[i]||(Da[i].remove(),delete Da[i])};f();m();h();var oOe=()=>_a({playerSkin:void 0,inWater:!1,waterBreathing:!1,backgroundColor:[0,0,0],ambientLight:0,directionalLight:0,eyeHeight:0,gameMode:void 0,lookingAtBlock:void 0,diggingBlock:void 0,movementState:"NOT_MOVING",onGround:!0,sneaking:!1,flying:!1,sprinting:!1,walkDist:0,prevWalkDist:0,bob:0,prevBob:0,itemUsageTicks:0,username:"",onlineMode:!1,cardinalLight:"default",lightingDisabled:!1,shouldHideHand:!1,heldItemMain:void 0,heldItemOff:void 0,perspective:"first_person",onFire:!1,fovMultiplier:1,cameraSpectatingEntity:void 0,team:void 0}),The=i=>({isSpectator(){return i.gameMode==="spectator"},isSpectatingEntity(){return i.cameraSpectatingEntity!==void 0&&i.gameMode==="spectator"},isThirdPerson(){return this.isSpectatingEntity()?!1:i.perspective==="third_person_back"||i.perspective==="third_person_front"}}),Ihe=()=>({reactive:oOe()});f();m();h();f();m();h();f();m();h();f();m();h();function CA(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let o=0;o<n;o++)for(let a=0;a<r;a++){let l=(o+a*n)*4;if(s.data[l+3]!==255)return!0}return!1}function L7(i){return i/64}function Rhe(i,e,t){if(t){if(CA(i,0,0,e,e))return}else if(CA(i,0,0,e,e/2))return;let n=L7(e),r=(s,o,a,l)=>i.clearRect(s*n,o*n,a*n,l*n);r(40,0,8,8),r(48,0,8,8),r(32,8,8,8),r(40,8,8,8),r(48,8,8,8),r(56,8,8,8),t&&(r(4,32,4,4),r(8,32,4,4),r(0,36,4,12),r(4,36,4,12),r(8,36,4,12),r(12,36,4,12),r(20,32,8,4),r(28,32,8,4),r(16,36,4,12),r(20,36,8,12),r(28,36,4,12),r(32,36,8,12),r(44,32,4,4),r(48,32,4,4),r(40,36,4,12),r(44,36,4,12),r(48,36,4,12),r(52,36,12,12),r(4,48,4,4),r(8,48,4,4),r(0,52,4,12),r(4,52,4,12),r(8,52,4,12),r(12,52,4,12),r(52,48,4,4),r(56,48,4,4),r(48,52,4,12),r(52,52,4,12),r(56,52,4,12),r(60,52,4,12))}function aOe(i,e){i.save(),i.scale(-1,1);let t=L7(e),n=(r,s,o,a,l,c)=>i.drawImage(i.canvas,r*t,s*t,o*t,a*t,-l*t,c*t,-o*t,a*t);n(4,16,4,4,20,48),n(8,16,4,4,24,48),n(0,20,4,12,24,52),n(4,20,4,12,20,52),n(8,20,4,12,16,52),n(12,20,4,12,28,52),n(44,16,4,4,36,48),n(48,16,4,4,40,48),n(40,20,4,12,40,52),n(44,20,4,12,36,52),n(48,20,4,12,32,52),n(52,20,4,12,44,52),i.restore()}function PA(i,e){let t=!1;if(e.width!==e.height)if(e.width===2*e.height)t=!0;else throw new Error(`Bad skin size: ${e.width}x${e.height}`);let n=i.getContext("2d",{willReadFrequently:!0});if(t){let r=e.width;i.width=r,i.height=r,n.clearRect(0,0,r,r),n.drawImage(e,0,0,r,r/2),aOe(n,r),Rhe(n,i.width,!1)}else i.width=e.width,i.height=e.height,n.clearRect(0,0,e.width,e.height),n.drawImage(e,0,0,i.width,i.height),Rhe(n,i.width,!0)}function lOe(i){if(i.width===2*i.height)return i.width/64;if(i.width*17===i.height*22)return i.width/22;if(i.width*11===i.height*23)return i.width/46;throw new Error(`Bad cape size: ${i.width}x${i.height}`)}function LA(i,e){let t=lOe(e);i.width=64*t,i.height=32*t;let n=i.getContext("2d",{willReadFrequently:!0});n.clearRect(0,0,i.width,i.height),n.drawImage(e,0,0,e.width,e.height)}function cOe(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let o=0;o<n;o++)for(let a=0;a<r;a++){let l=(o+a*n)*4;if(!(s.data[l+0]===0&&s.data[l+1]===0&&s.data[l+2]===0&&s.data[l+3]===255))return!1}return!0}function dOe(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let o=0;o<n;o++)for(let a=0;a<r;a++){let l=(o+a*n)*4;if(!(s.data[l+0]===255&&s.data[l+1]===255&&s.data[l+2]===255&&s.data[l+3]===255))return!1}return!0}function BA(i){let e=L7(i.width),t=i.getContext("2d",{willReadFrequently:!0}),n=(a,l,c,d)=>CA(t,a*e,l*e,c*e,d*e),r=(a,l,c,d)=>cOe(t,a*e,l*e,c*e,d*e),s=(a,l,c,d)=>dOe(t,a*e,l*e,c*e,d*e);return n(50,16,2,4)||n(54,20,2,12)||n(42,48,2,4)||n(46,52,2,12)||r(50,16,2,4)&&r(54,20,2,12)&&r(42,48,2,4)&&r(46,52,2,12)||s(50,16,2,4)&&s(54,20,2,12)&&s(42,48,2,4)&&s(46,52,2,12)?"slim":"default"}function OA(i,e){if(e.width!==e.height&&e.width!==2*e.height)throw new Error(`Bad skin size: ${e.width}x${e.height}`);let t=L7(e.width),n=14*t,r=7*t;i.width=n,i.height=r;let s=i.getContext("2d",{willReadFrequently:!0});s.clearRect(0,0,n,r),s.drawImage(e,24*t,0,n,r,0,0,n,r)}f();m();h();var Che="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAdVBMVEUAAAAKvLwAzMwmGgokGAgrHg0zJBE/KhW3g2uzeV5SPYn///+qclmbY0mQWT8Af38AaGhVVVWUYD52SzOBUzmPXj5JJRBCHQp3QjVqQDA0JRIoKCg3Nzc/Pz9KSko6MYlBNZtGOqUDenoFiIgElZUApKQAr6/wvakZAAAAAXRSTlMAQObYZgAAAolJREFUeNrt1l1rHucZReFrj/whu5hSCCQtlOTE/f+/Jz4q9Cu0YIhLcFVpVg+FsOCVehi8jmZgWOzZz33DM4CXlum3gH95GgeAzQZVeL4gTm6Cbp4vqFkD8HwBazPY8wWbMq9utu3mNZ5fotVezbzOE3kBEFbaZuc8kb00NTMUbWJp678Xf2GV7RRtx1TDQQ6XBNvsmL2+2vHq1TftmMPIyAWujtN2cl274ua2jpVpZneXEjjo7XW1q53V9ds4ODO5xIuhvGHvfLI3aixauig415uuO2+vl9+cncfsFw25zL650fXn687jqnXuP68/X3+eV3zE7y6u9eB73MlfAcfbTf3yR8CfAX+if8S/H5/EAbAxj5LN48tULvEBOh8V1AageMTXe2YHAOwHbZxrzPkSR3+ffr8TR2JDzE/4Fj8CDgEwDsW+q+9GsR07hhg2CsALBgMo2v5wNxXnQXMeGQVW7gUAyKI2m6KDsJ8Au3++F5RZO+kKNQjQcLLWgjwUjBXLltFgWWMUUlviocBgNoxNGgMjSxiYAA7zgLFo2hgIENiDU8gQCzDOmViGFAsEuBcQSDCothhpJaDRA8E5fHqH2nTbYm5fHLo1V0u3B7DAuheoeScRYabjjjuzs17cHVaTrTXmK78m9swP34d9oK/dfeXSIH2PW/MXwPvxN/bJlxw8zlYAcEyeI6gNgA/O8P8neN8xe1IHP2gTzegjvhUDfuRygmwEs2GE4mkCDIAzm2R4yAuPsIdR9k8AvMc+3L9+2UEjo4WP0FpgP19O0MzCsqxIoMsdDBvYcQyGmO0ZJRoYCKjLJWY0BAhYwGUBCgkh8MRdOKt+ruqMwAB2OcEX94U1TPbYJP0PkyyAI1S6cSIAAAAASUVORK5CYII=";f();m();h();yt();var qn=(i,e=!1)=>{i instanceof je&&(i.geometry?.dispose?.(),i.material?.dispose?.()),i.children&&i.children.forEach(t=>qn(t,e)),e&&i instanceof je&&i.material?.map?.dispose?.()},NA={},Phe={},xp=i=>{let e=new Gt,t=jc(i).then(n=>{let r=new OffscreenCanvas(n.width,n.height);return r.getContext("2d").drawImage(n,0,0),e.source.data=r,e.needsUpdate=!0,e});return{texture:e,promise:t}},p1=async i=>xp(i).texture,u0=i=>{let e=zr(i.width,i.height);e.getContext("2d").drawImage(i,0,0);let n=new Gt(e);return n.magFilter=Qe,n.minFilter=Qe,n};function v1(i){let{texture:e,promise:t}=xp(i);return e.magFilter=Qe,e.minFilter=Qe,t.catch(n=>{console.error("[texture] failed to load",i,n)}),e}async function B7(i,e,t){if(!NA[i]){let{promise:r,resolve:s}=Promise.withResolvers(),o=xp(i);NA[i]=o.texture,o.promise.then(s),Phe[i]=r}e(NA[i]),Phe[i].then(()=>{t?.()})}var Wi=Che,Vsn=p1(Wi),Lhe={apiEnabled:!0},Bhe=i=>{Object.assign(Lhe,i)};async function f0(i,e){if(!Lhe.apiEnabled||e==="cape")return;let t=`https://playerdb.co/api/player/minecraft/${i}`,n=await fetch(t);return n.ok?(await n.json()).data.player.skin_texture:void 0}async function Ua(i){i.startsWith("data:")||(i=await fOe(i.replace("http://","https://")));let e=await jc(i),t=zr(64,64);return PA(t,e),{canvas:t,image:e}}var fOe=async i=>{let t=await(await fetch(i,{})).arrayBuffer();return`data:image/png;base64,${Buffer.from(t).toString("base64")}`};f();m();h();var hOe=i=>{let e=i%24e3/24e3-.25;return e<0&&(e+=1),e>1&&(e-=1),e+(1-Math.cos(e*Math.PI))/2},mOe=i=>{let e=(i%24e3+24e3)%24e3,t=hOe(e),r=Math.cos(t*Math.PI*2)*.5+.5,s=Math.round(4+r*11);return Math.max(4,Math.min(15,s))},DA=i=>{let e=(i%24e3+24e3)%24e3;if(e>=0&&e<12e3)return 15;if(e>=12e3&&e<13e3){let t=(e-12e3)/1e3;return Math.round(15-t*11)}else{if(e>=13e3&&e<23e3)return 4;{let t=(e-23e3)/1e3;return Math.round(4+t*11)}}},pOe=()=>{let i=[{ticks:0,label:"6:00 AM (sunrise)"},{ticks:6e3,label:"12:00 PM (noon)"},{ticks:12e3,label:"6:00 PM (sunset starts)"},{ticks:12500,label:"6:30 PM (sunset mid)"},{ticks:13e3,label:"7:00 PM (night begins)"},{ticks:18e3,label:"12:00 AM (midnight)"},{ticks:19e3,label:"1:00 AM"},{ticks:23e3,label:"5:00 AM (dawn begins)"},{ticks:23500,label:"5:30 AM (dawn mid)"}];console.log("Sky Light Debug:"),console.log("================");for(let{ticks:e,label:t}of i){let n=mOe(e),r=DA(e);console.log(`${e.toString().padStart(5)} ticks (${t}): smooth=${n}, simple=${r}`)}};typeof window<"u"&&(window.debugSkyLight=pOe);f();m();h();function wp(i){let e=i*2+1;if(e<=0)return[];let t=[],n=0,r=0,s=0,o=-1;for(let a=0;a<e*e;a++){if(Math.abs(n)<=e/2&&Math.abs(r)<=e/2&&t.push([n,r]),n===r||n<0&&n===-r||n>0&&n===1-r){let l=s;s=-o,o=l}n+=s,r+=o}return t}function Ep(i,e){return(i%e+e)%e}var Va=class Va{constructor(e,t,n){this.resourcesManager=e;this.displayOptions=t;this.initOptions=n;this.snapshotInitialValues(),this.worldRendererConfig=t.inWorldRenderingConfig,this.playerStateReactive=t.playerStateReactive,this.playerStateUtils=The(this.playerStateReactive),this.reactiveState=t.rendererState,this.renderUpdateEmitter.on("update",()=>{let o=Object.keys(this.finishedChunks).length;RA("loaded-chunks",`${o}/${this.chunksLength} chunks (${this.lastChunkDistance}/${this.viewDistance})`)}),P7("downloaded-chunks",100,140,20,{className:C7}),this.connect(this.displayOptions.worldView);let r=setInterval(()=>{this.geometryReceiveCountPerSec=Object.values(this.geometryReceiveCount).reduce((o,a)=>o+a,0),this.geometryReceiveCount={},Mhe(this.displayAdvancedStats),this.updateChunksStats()},500),s=setInterval(()=>{this.fpsUpdate()},1e3);this.abortController.signal.addEventListener("abort",()=>{clearInterval(r),clearInterval(s)})}worldReadyResolvers=Promise.withResolvers();worldReadyPromise=this.worldReadyResolvers.promise;timeOfTheDay=0;worldSizeParams={minY:0,worldHeight:256};reactiveDebugParams=_a({stopRendering:!1,chunksRenderAboveOverride:void 0,chunksRenderAboveEnabled:!1,chunksRenderBelowOverride:void 0,chunksRenderBelowEnabled:!1,chunksRenderDistanceOverride:void 0,chunksRenderDistanceEnabled:!1,disableEntities:!1});active=!1;loadedChunks={};finishedChunks={};finishedSections={};sectionsWaiting=new Map;queuedChunks=new Set;queuedFunctions=[];renderUpdateEmitter=new Ol;customTexturesDataUrl=void 0;workers=[];viewerChunkPosition;lastViewerChunkGridX;lastViewerChunkGridZ;lastCamUpdate=0;droppedFpsPercentage=0;initialChunkLoadWasStartedIn;initialChunksLoad=!0;enableChunksLoadDelay=!1;texturesVersion;viewDistance=-1;onRenderDistanceChanged;chunksLength=0;allChunksFinished=!1;messageQueue=[];isProcessingQueue=!1;ONMESSAGE_TIME_LIMIT=30;handleResize=()=>{};highestBlocksByChunks=new Map;blockEntities={};workersProcessAverageTime=0;workersProcessAverageTimeCount=0;maxWorkersProcessTime=0;workersPreAverageTime=0;workersWasmAverageTime=0;workersPostAverageTime=0;workersPhaseSampleCount=0;workersPreTargetConvertAverageTime=0;workersPreNeighborConvertAverageTime=0;workersPreNeighborCountAverage=0;workersPreTypedArrayBuildAverageTime=0;workersPreOtherAverageTime=0;workersPreCacheHitsTotal=0;workersPreCacheMissesTotal=0;geometryReceiveCount={};allLoadedIn;onWorldSwitched=[];renderTimeMax=0;renderTimeAvg=0;renderTimeAvgCount=0;edgeChunks={};lastAddChunk=null;neighborChunkUpdates=!0;lastChunkDistance=0;debugStopGeometryUpdate=!1;protocolCustomBlocks=new Map;heightmapDebounceTimers=new Map;sectionDirtyCount=new Map;sectionDirtyTimers=new Map;sectionDirtyPendingArgs=new Map;blockStateModelInfo=new Map;worldBlockProvider;soundSystem;anyModuleRequiresHeightmap(){return!1}isShaderCubeBlocksEnabled(){return this.worldRendererConfig.shaderCubeBlocks===!0}shaderCubeBlocksEnabled(){return this.isShaderCubeBlocksEnabled()}worldRendererConfig;playerStateReactive;playerStateUtils;reactiveState;mesherLogReader;forceCallFromMesherReplayer=!1;stopMesherMessagesProcessing=!1;abortController=new AbortController;lastRendered=0;renderingActive=!0;geometryReceiveCountPerSec=0;mesherLogger={contents:[],active:new URL(location.href).searchParams.get("mesherlog")==="true"};currentRenderedFrames=0;fpsAverage=0;lastFps=0;fpsWorst=void 0;fpsSamples=0;backendInfoReport="-";chunksFullInfo="-";workerCustomHandleTime=0;get version(){return this.displayOptions.version}get displayAdvancedStats(){return(this.initOptions.config.statsVisible??0)>1}fpsUpdate(){this.fpsSamples++,this.fpsAverage=(this.fpsAverage*(this.fpsSamples-1)+this.currentRenderedFrames)/this.fpsSamples,this.fpsWorst===void 0?this.fpsWorst=this.currentRenderedFrames:this.fpsWorst=Math.min(this.fpsWorst,this.currentRenderedFrames),this.lastFps=this.currentRenderedFrames,this.displayOptions.nonReactiveState.fps=this.currentRenderedFrames,this.displayOptions.nonReactiveState.worstRenderTime=this.renderTimeMax,this.displayOptions.nonReactiveState.avgRenderTime=this.renderTimeAvg,this.currentRenderedFrames=0}logWorkerWork(e){this.mesherLogger.active&&this.mesherLogger.contents.push(typeof e=="function"?e():e)}async init(){if(this.active)throw new Error("WorldRendererCommon is already initialized");await Promise.all([this.resetWorkers(),(async()=>{this.resourcesManager.currentResources?.allReady&&await this.updateAssetsData()})()]),this.resourcesManager.on("assetsTexturesUpdated",async()=>{this.active&&await this.updateAssetsData()}),this.watchReactivePlayerState(),this.watchReactiveConfig(),this.worldReadyResolvers.resolve()}snapshotInitialValues(){}wasChunkSentToWorker(e){return this.loadedChunks[e]}async getHighestBlocks(e){return this.highestBlocksByChunks.get(e)}updateCustomBlock(e,t,n){if(this.protocolCustomBlocks.set(e,{...this.protocolCustomBlocks.get(e),[t]:n}),this.logWorkerWork(()=>`-> updateCustomBlock ${e} ${t} ${n} ${this.wasChunkSentToWorker(e)}`),this.wasChunkSentToWorker(e)){let[r,s,o]=t.split(",").map(Number);this.setBlockStateId(new ut(r,s,o),void 0)}}async getBlockInfo(e,t){let r=`${Math.floor(e.x/16)*16},${Math.floor(e.z/16)*16}`,s=this.protocolCustomBlocks.get(r)?.[`${e.x},${e.y},${e.z}`],o=She(t,s),a=this.blockStateModelInfo.get(o);return{customBlockName:s,modelInfo:a}}initWorkers(e=this.worldRendererConfig.mesherWorkers){for(let t=0;t<e+0;t++){let n=vOe(r=>{Array.isArray(r)?this.messageQueue.push(...r):this.messageQueue.push(r),this.processMessageQueue("worker")},this.worldRendererConfig.wasmMesher?"mesherWasm.js":"mesher.js");this.workers.push(n)}}onReactivePlayerStateUpdated(e,t,n=!0){return n&&t(this.playerStateReactive[e]),Na(this.playerStateReactive,e,t)}onReactiveConfigUpdated(e,t){t(this.worldRendererConfig[e]),e==="*"?Uu(this.worldRendererConfig,t):Na(this.worldRendererConfig,e,t)}onReactiveDebugUpdated(e,t){t(this.reactiveDebugParams[e]),Na(this.reactiveDebugParams,e,t)}watchReactivePlayerState(){this.onReactivePlayerStateUpdated("backgroundColor",e=>{this.changeBackgroundColor(e)}),this.onReactivePlayerStateUpdated("cardinalLight",e=>{this.changeCardinalLight(e)})}watchReactiveConfig(){this.onReactiveConfigUpdated("fetchPlayerSkins",e=>{Bhe({apiEnabled:e})})}async processMessageQueue(e){if(this.isProcessingQueue||this.messageQueue.length===0)return;if(this.logWorkerWork(`# ${e} processing queue`),this.lastRendered&&performance.now()-this.lastRendered>this.ONMESSAGE_TIME_LIMIT&&this.worldRendererConfig._experimentalSmoothChunkLoading&&this.renderingActive){let r=performance.now();await new Promise(s=>{requestAnimationFrame(s)}),this.logWorkerWork(`# processing got delayed by ${performance.now()-r}ms`)}this.isProcessingQueue=!0;let t=performance.now(),n=0;for(;this.messageQueue.length>0;){let r=this.stopMesherMessagesProcessing;if(!r){let s=this.messageQueue.shift();this.handleMessage(s),n++}if(r||performance.now()-t>this.ONMESSAGE_TIME_LIMIT&&this.renderingActive&&this.worldRendererConfig._experimentalSmoothChunkLoading){if(this.messageQueue.length>0){requestAnimationFrame(async()=>{this.isProcessingQueue=!1,this.processMessageQueue("queue-delay")});return}break}}this.isProcessingQueue=!1}handleMessage(e){let t=e;if(this.active){if(this.mesherLogReader?.workerMessageReceived(t.type,t),t.type!=="geometry"||!this.debugStopGeometryUpdate){let n=performance.now();this.handleWorkerMessage(t),this.workerCustomHandleTime+=performance.now()-n}if(t.type==="geometry"){this.logWorkerWork(()=>`-> ${t.workerIndex} geometry ${t.key} ${JSON.stringify({dataSize:JSON.stringify(t).length})}`),this.geometryReceiveCount[t.workerIndex]??=0,this.geometryReceiveCount[t.workerIndex]++;let n=t.key.split(",").map(Number);this.lastChunkDistance=Math.max(...this.getDistance(new ut(n[0],0,n[2])))}if(t.type==="sectionFinished"){if(this.logWorkerWork(`<- ${t.workerIndex} sectionFinished ${t.key} ${JSON.stringify({processTime:t.processTime})}`),!this.sectionsWaiting.has(t.key))throw new Error(`sectionFinished event for non-outstanding section ${t.key}`);this.sectionsWaiting.set(t.key,this.sectionsWaiting.get(t.key)-1),this.sectionsWaiting.get(t.key)===0&&(this.sectionsWaiting.delete(t.key),this.finishedSections[t.key]=!0);let n=t.key.split(",").map(Number),r=`${n[0]},${n[2]}`;if(this.loadedChunks[r]){let s=!0,o=this.getSectionHeight();for(let a=this.worldMinYRender;a<this.worldSizeParams.worldHeight;a+=o)if(!this.finishedSections[`${n[0]},${a},${n[2]}`]){s=!1;break}if(s){this.finishedChunks[r]=!0;let a=16;this.reactiveState.world.chunksLoaded.add(`${Math.floor(n[0]/a)},${Math.floor(n[2]/a)}`),this.renderUpdateEmitter.emit("chunkFinished",`${n[0]},${n[2]}`),this.checkAllFinished()}}if(this.renderUpdateEmitter.emit("update"),t.processTime&&(this.workersProcessAverageTimeCount++,this.workersProcessAverageTime=(this.workersProcessAverageTime*(this.workersProcessAverageTimeCount-1)+t.processTime)/this.workersProcessAverageTimeCount,this.maxWorkersProcessTime=Math.max(this.maxWorkersProcessTime,t.processTime)),typeof t.pre=="number"&&typeof t.wasm=="number"&&typeof t.post=="number"&&(t.pre>0||t.wasm>0||t.post>0)){let s=++this.workersPhaseSampleCount;this.workersPreAverageTime=(this.workersPreAverageTime*(s-1)+t.pre)/s,this.workersWasmAverageTime=(this.workersWasmAverageTime*(s-1)+t.wasm)/s,this.workersPostAverageTime=(this.workersPostAverageTime*(s-1)+t.post)/s;let o=typeof t.preTargetConvert=="number"?t.preTargetConvert:0,a=typeof t.preNeighborConvert=="number"?t.preNeighborConvert:0,l=typeof t.preNeighborCount=="number"?t.preNeighborCount:0,c=typeof t.preTypedArrayBuild=="number"?t.preTypedArrayBuild:0,d=typeof t.preOther=="number"?t.preOther:0,u=typeof t.preCacheHits=="number"?t.preCacheHits:0,p=typeof t.preCacheMisses=="number"?t.preCacheMisses:0;if(this.workersPreTargetConvertAverageTime=(this.workersPreTargetConvertAverageTime*(s-1)+o)/s,this.workersPreNeighborConvertAverageTime=(this.workersPreNeighborConvertAverageTime*(s-1)+a)/s,this.workersPreNeighborCountAverage=(this.workersPreNeighborCountAverage*(s-1)+l)/s,this.workersPreTypedArrayBuildAverageTime=(this.workersPreTypedArrayBuildAverageTime*(s-1)+c)/s,this.workersPreOtherAverageTime=(this.workersPreOtherAverageTime*(s-1)+d)/s,this.workersPreCacheHitsTotal+=u,this.workersPreCacheMissesTotal+=p,this.worldRendererConfig.debugWasmPerf&&s%Va.PHASE_PERF_LOG_INTERVAL===0){let v=this.workersPreAverageTime+this.workersWasmAverageTime+this.workersPostAverageTime,_=v>0?this.workersPreAverageTime/v*100:0,b=v>0?this.workersWasmAverageTime/v*100:0,y=v>0?this.workersPostAverageTime/v*100:0,g=this.workersPreAverageTime,w=g>0?this.workersPreTargetConvertAverageTime/g*100:0,x=g>0?this.workersPreNeighborConvertAverageTime/g*100:0,E=g>0?this.workersPreTypedArrayBuildAverageTime/g*100:0,A=g>0?this.workersPreOtherAverageTime/g*100:0,C=this.workersPreNeighborCountAverage,R=C>0?this.workersPreNeighborConvertAverageTime/C:0,L=this.workersPreCacheHitsTotal+this.workersPreCacheMissesTotal,M=L>0?this.workersPreCacheHitsTotal/L*100:0;console.log(`[wasm-mesher perf] n=${s} pre=${this.workersPreAverageTime.toFixed(2)}ms (${_.toFixed(1)}%) wasm=${this.workersWasmAverageTime.toFixed(2)}ms (${b.toFixed(1)}%) post=${this.workersPostAverageTime.toFixed(2)}ms (${y.toFixed(1)}%) | pre.targetConvert=${this.workersPreTargetConvertAverageTime.toFixed(2)}ms (${w.toFixed(1)}%) pre.neighborConvert=${this.workersPreNeighborConvertAverageTime.toFixed(2)}ms (${x.toFixed(1)}%) [n\u0304=${C.toFixed(2)}, per-nbr=${R.toFixed(2)}ms] pre.typedArrayBuild=${this.workersPreTypedArrayBuildAverageTime.toFixed(2)}ms (${E.toFixed(1)}%) pre.other=${this.workersPreOtherAverageTime.toFixed(2)}ms (${A.toFixed(1)}%) | pre.cache hits=${this.workersPreCacheHitsTotal} misses=${this.workersPreCacheMissesTotal} (${M.toFixed(1)}% hit)`)}}}if(t.type==="blockStateModelInfo")for(let[n,r]of Object.entries(t.info))this.blockStateModelInfo.set(n,r);t.type==="heightmap"&&this.reactiveState.world.heightmaps.set(t.key,new Int16Array(t.heightmap))}}downloadMesherLog(){let e=document.createElement("a");e.href="data:text/plain;charset=utf-8,"+encodeURIComponent(this.mesherLogger.contents.join(`
4051
- `)),e.download="mesher.log",e.click()}checkAllFinished(){this.sectionsWaiting.size===0&&(this.reactiveState.world.mesherWork=!1),Object.keys(this.finishedChunks).length>=this.chunksLength&&(this.allChunksLoaded?.(),this.allChunksFinished=!0,this.allLoadedIn??=Date.now()-this.initialChunkLoadWasStartedIn),this.updateChunksStats()}changeHandSwingingState(e,t){}updateViewerPosition(e){this.viewerChunkPosition=e;for(let[r,s]of Object.entries(this.loadedChunks))s&&this.updatePosDataChunk?.(r);let t=Math.floor(e.x/16),n=Math.floor(e.z/16);(t!==this.lastViewerChunkGridX||n!==this.lastViewerChunkGridZ)&&(this.lastViewerChunkGridX=t,this.lastViewerChunkGridZ=n,this.onViewerChunkPositionChanged())}onViewerChunkPositionChanged(){}sendWorkers(e){for(let t of this.workers)t.postMessage(e)}getDistance(e){let[t,n]=m1(this.viewerChunkPosition),r=16,s=Math.abs(t-Math.floor(e.x/r)),o=Math.abs(n-Math.floor(e.z/r));return[s,o]}resetWorld(){for(let e of this.workers)e.terminate();this.workers=[]}async resetWorkers(){this.resetWorld(),typeof document<"u"&&document?.readyState==="loading"&&await new Promise(e=>{document.addEventListener("DOMContentLoaded",e)}),this.initWorkers(),this.active=!0,this.sendMesherMcData()}getMesherConfig(){let e=this.timeOfTheDay,t=e<0||e>24e3?15:DA(e);return{version:this.version,enableLighting:this.worldRendererConfig.enableLighting,skyLight:t,smoothLighting:this.worldRendererConfig.smoothLighting,shadingTheme:this.worldRendererConfig.shadingTheme,cardinalLight:this.worldRendererConfig.cardinalLight,outputFormat:this.outputFormat,debugModelVariant:this.worldRendererConfig.debugModelVariant,clipWorldBelowY:this.worldRendererConfig.clipWorldBelowY,disableBlockEntityTextures:!this.worldRendererConfig.extraBlockRenderers,worldMinY:this.worldMinYRender,worldMaxY:this.worldMinYRender+this.worldSizeParams.worldHeight,disableConversionCache:this.worldRendererConfig.disableMesherConversionCache,computeWireframeEdges:this.worldRendererConfig.futuristicReveal===!0,shaderCubeBlocks:this.isShaderCubeBlocksEnabled()}}sendMesherMcData(){let e=this.resourcesManager.currentResources.mcData;gOe(this.workers,this.version,TA,e),this.logWorkerWork("# mcData sent")}async updateAssetsData(){let e=this.resourcesManager.currentResources;if(this.workers.length===0)throw new Error("workers not initialized yet");for(let[t,n]of this.workers.entries()){let{blockstatesModels:r}=e;n.postMessage({type:"mesherData",workerIndex:t,blocksAtlas:{latest:e.blocksAtlasJson},blockstatesModels:r,config:this.getMesherConfig()})}this.logWorkerWork("# mesherData sent"),console.log("textures loaded")}getSectionHeight(){return Ehe}get worldMinYRender(){let e=this.getSectionHeight();return Math.floor(Math.max(this.worldSizeParams.minY,this.worldRendererConfig.clipWorldBelowY??-1/0)/e)*e}updateChunksStats(){let e=Object.keys(this.finishedChunks);this.displayOptions.nonReactiveState.world.chunksLoaded=new Set(e),this.displayOptions.nonReactiveState.world.chunksTotalNumber=this.chunksLength,this.reactiveState.world.allChunksLoaded=this.allChunksFinished;let t=`Q: ${this.messageQueue.length} ${Object.keys(this.loadedChunks).length}/${Object.keys(this.finishedChunks).length}/${this.chunksLength} chunks (${this.workers.length}:${this.workersProcessAverageTime.toFixed(0)}ms/${this.geometryReceiveCountPerSec}ss/${this.allLoadedIn?.toFixed(1)??"-"}s)`;this.chunksFullInfo=t,RA("downloaded-chunks",t)}addColumn(e,t,n,r){if(!this.active)return;if(this.workers.length===0)throw new Error("workers not initialized yet");this.initialChunksLoad=!1,this.initialChunkLoadWasStartedIn??=Date.now(),this.loadedChunks[`${e},${t}`]=!0,this.updateChunksStats();let s=`${e},${t}`,o=this.protocolCustomBlocks.get(s);for(let c of this.workers)c.postMessage({type:"chunk",x:e,z:t,chunk:n,customBlockModels:o||void 0});this.worldRendererConfig.wasmMesher||this.workers[0].postMessage({type:"getHeightmap",x:e,z:t}),this.logWorkerWork(()=>`-> chunk ${JSON.stringify({x:e,z:t,chunkLength:n.length,customBlockModelsLength:o?Object.keys(o).length:0})}`),this.mesherLogReader?.chunkReceived(e,t,n.length);let a=this.getSectionHeight(),l=16;for(let c=this.worldMinYRender;c<this.worldSizeParams.worldHeight;c+=a){let d=new ut(e,c,t);this.setSectionDirty(d),this.neighborChunkUpdates&&(!r||this.worldRendererConfig.smoothLighting)&&(this.setSectionDirty(d.offset(-l,0,0)),this.setSectionDirty(d.offset(l,0,0)),this.setSectionDirty(d.offset(0,0,-l)),this.setSectionDirty(d.offset(0,0,l)))}}markAsLoaded(e,t){this.loadedChunks[`${e},${t}`]=!0,this.finishedChunks[`${e},${t}`]=!0,this.logWorkerWork(`-> markAsLoaded ${JSON.stringify({x:e,z:t})}`),this.renderUpdateEmitter.emit("chunkFinished",`${e},${t}`),this.checkAllFinished()}removeColumn(e,t){delete this.loadedChunks[`${e},${t}`];let n=`${e},${t}`,r=this.heightmapDebounceTimers.get(n);r&&(clearTimeout(r),this.heightmapDebounceTimers.delete(n));for(let[o,a]of this.sectionDirtyTimers)o.startsWith(`${e},`)&&o.endsWith(`,${t}`)&&(clearTimeout(a),this.sectionDirtyTimers.delete(o),this.sectionDirtyCount.delete(o),this.sectionDirtyPendingArgs.delete(o));for(let o of this.workers)o.postMessage({type:"unloadChunk",x:e,z:t});this.logWorkerWork(`-> unloadChunk ${JSON.stringify({x:e,z:t})}`),delete this.finishedChunks[`${e},${t}`],this.allChunksFinished=Object.keys(this.finishedChunks).length===this.chunksLength,Object.keys(this.finishedChunks).length===0&&(this.allLoadedIn=void 0,this.initialChunkLoadWasStartedIn=void 0);let s=this.getSectionHeight();for(let o=this.worldSizeParams.minY;o<this.worldSizeParams.worldHeight;o+=s)this.setSectionDirty(new ut(e,o,t),!1),delete this.finishedSections[`${e},${o},${t}`];this.highestBlocksByChunks.delete(`${e},${t}`),this.reactiveState.world.heightmaps.delete(`${Math.floor(e/16)},${Math.floor(t/16)}`),this.updateChunksStats(),Object.keys(this.loadedChunks).length===0&&(this.mesherLogger.contents=[],this.logWorkerWork("# all chunks unloaded. New log started"),this.mesherLogReader?.maybeStartReplay())}setBlockStateId(e,t,n=!0){(async()=>{let o=Math.floor(e.x/16)*16,a=Math.floor(e.z/16)*16;this.queuedChunks.has(`${o},${a}`)&&await new Promise(l=>{this.queuedFunctions.push(()=>{l()})}),this.loadedChunks[`${o},${a}`],this.setBlockStateIdInner(e,t,n)})()}updateEntity(e,t=!1){}lightUpdate(e,t){}connect(e){let t=e;t.on("entity",r=>{this.updateEntity(r,!1)}),t.on("entityMoved",r=>{this.updateEntity(r,!0)}),t.on("playerEntity",r=>{this.updatePlayerEntity?.(r)});let n=null;t.on("loadChunk",({x:r,z:s,chunk:o,worldConfig:a,isLightUpdate:l})=>{this.worldSizeParams=a,this.queuedChunks.add(`${r},${s}`);let c=[r,s,o,l];n||(n={data:[],timeout:setTimeout(()=>{for(let d of n.data)this.queuedChunks.delete(`${d[0]},${d[1]}`),this.addColumn(...d);for(let d of this.queuedFunctions)d();this.queuedFunctions=[],n=null},this.worldRendererConfig.addChunksBatchWaitTime)}),n.data.push(c)}),t.on("blockEntities",r=>{this.blockEntities=r}),t.on("unloadChunk",({x:r,z:s})=>{this.removeColumn(r,s)}),t.on("blockUpdate",({pos:r,stateId:s})=>{this.setBlockStateId(new ut(r.x,r.y,r.z),s)}),t.on("chunkPosUpdate",({pos:r})=>{this.updateViewerPosition(r)}),t.on("end",()=>{this.worldStop?.()}),t.on("renderDistance",r=>{this.viewDistance=r,this.chunksLength=r===0?1:wp(r).length,this.allChunksFinished=Object.keys(this.finishedChunks).length===this.chunksLength,this.onRenderDistanceChanged?.(r)}),t.on("markAsLoaded",({x:r,z:s})=>{this.markAsLoaded(r,s)}),t.on("updateLight",({pos:r})=>{this.lightUpdate(r.x,r.z)}),t.on("onWorldSwitch",()=>{for(let r of this.onWorldSwitched)try{r()}catch(s){setTimeout(()=>{throw console.log("[Renderer Backend] Error in onWorldSwitched:"),s},0)}}),t.on("time",r=>{this.worldRendererConfig.dayCycle&&(this.timeUpdated?.(r),this.timeOfTheDay=r)}),t.on("biomeUpdate",({biome:r})=>{this.biomeUpdated?.(r)}),t.on("biomeReset",()=>{this.biomeReset?.()})}setBlockStateIdInner(e,t,n=!0){let s=`${Math.floor(e.x/16)*16},${Math.floor(e.z/16)*16}`,o=`${e.x},${e.y},${e.z}`,a=this.protocolCustomBlocks.get(s)||{};for(let l of this.workers)l.postMessage({type:"blockUpdate",pos:e,stateId:t,customBlockModels:a});if(this.anyModuleRequiresHeightmap()){let l=Math.floor(e.x/16)*16,c=Math.floor(e.z/16)*16,d=`${l},${c}`;if(!this.worldRendererConfig.wasmMesher){let u=this.heightmapDebounceTimers.get(d);u&&clearTimeout(u),this.heightmapDebounceTimers.set(d,setTimeout(()=>{this.heightmapDebounceTimers.delete(d),this.workers[0]?.postMessage({type:"getHeightmap",x:l,z:c})},100))}}if(this.logWorkerWork(`-> blockUpdate ${JSON.stringify({pos:e,stateId:t,customBlockModels:a})}`),this.setSectionDirty(e,!0,!0),this.neighborChunkUpdates){let c=this.getSectionHeight();e.x&15||this.setSectionDirty(e.offset(-16,0,0),!0,!0),(e.x&15)===15&&this.setSectionDirty(e.offset(16,0,0),!0,!0),e.y&c-1||this.setSectionDirty(e.offset(0,-c,0),!0,!0),(e.y&c-1)===c-1&&this.setSectionDirty(e.offset(0,c,0),!0,!0),e.z&15||this.setSectionDirty(e.offset(0,0,-16),!0,!0),(e.z&15)===15&&this.setSectionDirty(e.offset(0,0,16),!0,!0),n&&(!(e.x&15)&&!(e.z&15)&&this.setSectionDirty(e.offset(-16,0,-16),!0,!0),(e.x&15)===15&&!(e.z&15)&&this.setSectionDirty(e.offset(16,0,-16),!0,!0),!(e.x&15)&&(e.z&15)===15&&this.setSectionDirty(e.offset(-16,0,16),!0,!0),(e.x&15)===15&&(e.z&15)===15&&this.setSectionDirty(e.offset(16,0,16),!0,!0),!(e.x&15)&&!(e.y&c-1)&&this.setSectionDirty(e.offset(-16,-c,0),!0,!0),(e.x&15)===15&&!(e.y&c-1)&&this.setSectionDirty(e.offset(16,-c,0),!0,!0),!(e.z&15)&&!(e.y&c-1)&&this.setSectionDirty(e.offset(0,-c,-16),!0,!0),(e.z&15)===15&&!(e.y&c-1)&&this.setSectionDirty(e.offset(0,-c,16),!0,!0),!(e.y&c-1)&&!(e.x&15)&&!(e.z&15)&&this.setSectionDirty(e.offset(-16,-c,-16),!0,!0),!(e.y&c-1)&&(e.x&15)===15&&!(e.z&15)&&this.setSectionDirty(e.offset(16,-c,-16),!0,!0),!(e.y&c-1)&&!(e.x&15)&&(e.z&15)===15&&this.setSectionDirty(e.offset(-16,-c,16),!0,!0),!(e.y&c-1)&&(e.x&15)===15&&(e.z&15)===15&&this.setSectionDirty(e.offset(16,-c,16),!0,!0))}}queueAwaited=!1;toWorkerMessagesQueue={};getWorkerNumber(e,t=!1){let r=this.getSectionHeight();if(this.worldRendererConfig.dedicatedChangeWorker&&this.workers.length>1){if(this.worldRendererConfig.wasmMesher)return Ep(Math.floor(e.x/16)+Math.floor(e.z/16),this.workers.length);if(t){let a=`${Math.floor(e.x/16)*16},${Math.floor(e.y/r)*r},${Math.floor(e.z/16)*16}`;if(this.sectionsWaiting.get(a)&&!this.finishedSections[a]){let c=this.workers.length-1;return Ep(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),c)}return this.workers.length-1}let o=this.workers.length-1;return Ep(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),o)}if(this.worldRendererConfig.wasmMesher)return Ep(Math.floor(e.x/16)+Math.floor(e.z/16),this.workers.length);if(t){let o=`${Math.floor(e.x/16)*16},${Math.floor(e.y/r)*r},${Math.floor(e.z/16)*16}`;if(!(this.sectionsWaiting.get(o)&&!this.finishedSections[o]))return 0}return Ep(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),this.workers.length)}async debugGetWorkerCustomBlockModel(e){let t=[];for(let n of this.workers)t.push(new Promise(r=>{n.addEventListener("message",s=>{s.data.type==="customBlockModel"&&r(s.data.customBlockModel)})})),n.postMessage({type:"getCustomBlockModel",pos:e});return Promise.all(t)}setSectionDirty(e,t=!0,n=!1){if(!this.forceCallFromMesherReplayer&&this.mesherLogReader)return;if(this.viewDistance===-1)throw new Error("viewDistance not set");let r=this.getDistance(e);if(!this.workers.length||r[0]>this.viewDistance||r[1]>this.viewDistance)return;if(!t){this._dispatchDirtyImmediate(e,t,n);return}let s=16,o=this.getSectionHeight(),a=`${Math.floor(e.x/s)*s},${Math.floor(e.y/o)*o},${Math.floor(e.z/s)*s}`,l=(this.sectionDirtyCount.get(a)??0)+1;this.sectionDirtyCount.set(a,l),l<=Va.GEOMETRY_THROTTLE_THRESHOLD?(this._dispatchDirtyImmediate(e,t,n),this.sectionDirtyTimers.has(a)||this.sectionDirtyTimers.set(a,setTimeout(()=>{let c=this.sectionDirtyPendingArgs.get(a);this.sectionDirtyCount.delete(a),this.sectionDirtyTimers.delete(a),this.sectionDirtyPendingArgs.delete(a),c&&this._dispatchDirtyImmediate(c.pos,c.value,c.useChangeWorker)},Va.GEOMETRY_THROTTLE_DELAY))):(this.sectionDirtyPendingArgs.set(a,{pos:e,value:t,useChangeWorker:n}),this.sectionDirtyTimers.has(a)||this.sectionDirtyTimers.set(a,setTimeout(()=>{let c=this.sectionDirtyPendingArgs.get(a);this.sectionDirtyCount.delete(a),this.sectionDirtyTimers.delete(a),this.sectionDirtyPendingArgs.delete(a),c&&this._dispatchDirtyImmediate(c.pos,c.value,c.useChangeWorker)},Va.GEOMETRY_THROTTLE_DELAY)))}_dispatchDirtyImmediate(e,t,n){this.reactiveState.world.mesherWork=!0;let r=16,s=this.getSectionHeight(),o=`${Math.floor(e.x/r)*r},${Math.floor(e.y/s)*s},${Math.floor(e.z/r)*r}`;this.renderUpdateEmitter.emit("dirty",e,t);let a=this.getWorkerNumber(e,n&&(this.mesherLogger.active||this.worldRendererConfig.dedicatedChangeWorker));this.sectionsWaiting.set(o,(this.sectionsWaiting.get(o)??0)+1),this.forceCallFromMesherReplayer?this.workers[a].postMessage({type:"dirty",x:e.x,y:e.y,z:e.z,value:t,config:this.getMesherConfig()}):(this.toWorkerMessagesQueue[a]??=[],this.toWorkerMessagesQueue[a].push({type:"dirty",x:e.x,y:e.y,z:e.z,value:t,config:this.getMesherConfig()}),this.dispatchMessages())}dispatchMessages(){this.queueAwaited||(this.queueAwaited=!0,setTimeout(()=>{for(let e in this.toWorkerMessagesQueue){let t=this.workers[Number(e)],n=this.toWorkerMessagesQueue[e];t.postMessage(n);for(let r of n)this.logWorkerWork(`-> ${e} dispatchMessages ${r.type} ${JSON.stringify({x:r.x,y:r.y,z:r.z,value:r.value})}`)}this.toWorkerMessagesQueue={},this.queueAwaited=!1}))}async waitForChunksToRender(){return new Promise((e,t)=>{if([...this.sectionsWaiting].length===0){e();return}let n=()=>{this.sectionsWaiting.size===0&&(this.renderUpdateEmitter.removeListener("update",n),e())};this.renderUpdateEmitter.on("update",n)})}async waitForChunkToLoad(e){return new Promise((t,n)=>{let s=`${Math.floor(e.x/16)*16},${Math.floor(e.z/16)*16}`;if(this.loadedChunks[s]){t();return}let o=()=>{this.loadedChunks[s]&&(this.renderUpdateEmitter.removeListener("update",o),t())};this.renderUpdateEmitter.on("update",o)})}destroy(){for(let e of this.heightmapDebounceTimers.values())clearTimeout(e);this.heightmapDebounceTimers.clear();for(let e of this.sectionDirtyTimers.values())clearTimeout(e);this.sectionDirtyTimers.clear(),this.sectionDirtyCount.clear(),this.sectionDirtyPendingArgs.clear();for(let e of this.workers)e.terminate();this.workers=[],this.soundSystem&&(this.soundSystem.destroy(),this.soundSystem=void 0),this.active=!1,this.loadedChunks={},this.finishedChunks={},this.finishedSections={},this.sectionsWaiting.clear(),this.queuedChunks.clear(),this.blockStateModelInfo.clear(),this.renderUpdateEmitter.removeAllListeners(),this.abortController.abort(),khe()}};Cn(Va,"PHASE_PERF_LOG_INTERVAL",64),Cn(Va,"GEOMETRY_THROTTLE_THRESHOLD",1),Cn(Va,"GEOMETRY_THROTTLE_DELAY",100);var O7=Va,vOe=(i,e="mesher.js")=>{let t;if(process.env.SINGLE_FILE_BUILD){let n=document.getElementById("mesher-worker-code").textContent,r=new Blob([n],{type:"text/javascript"});t=new Worker(window.URL.createObjectURL(r))}else t=new Worker(e);return t.onmessage=({data:n})=>{i(n)},t.on&&t.on("message",n=>{t.onmessage({data:n})}),t},Ohe=!1,gOe=(i,e,t=TA,n)=>{let r={version:JSON.parse(JSON.stringify(n.version))};for(let[s,o]of Object.entries(t))r[s]=n[o];"tints"in t&&!r.tints&&!Ohe&&(Ohe=!0,console.warn(`[meshersSendMcData] mcData.tints missing for version ${e}; shader cubes will use legacy path in worker`));for(let s of i)s.postMessage({type:"mcData",mcData:r})};f();m();h();yt();f();m();h();function N7(i,e){let t=e/180*Math.PI,n=Math.cos(t),r=Math.sin(t),s={x:0,y:1,z:2}[i],o=(s+1)%3,a=(s+2)%3,l=[[0,0,0],[0,0,0],[0,0,0]];return l[s][s]=1,l[o][o]=n,l[o][a]=-r,l[a][o]=+r,l[a][a]=n,l}function UA(i,e){return e?[i[0]+e[0],i[1]+e[1],i[2]+e[2]]:i}function VA(i,e){return e?[i[0]-e[0],i[1]-e[1],i[2]-e[2]]:i}function g1(i,e){return i?[i[0][0]*e[0]+i[0][1]*e[1]+i[0][2]*e[2],i[1][0]*e[0]+i[1][1]*e[1]+i[1][2]*e[2],i[2][0]*e[0]+i[2][1]*e[1]+i[2][2]*e[2]]:e}function Nhe(i,e){let t=[[0,0,0],[0,0,0],[0,0,0]],n=i[0][0],r=i[1][0],s=i[2][0],o=i[0][1],a=i[1][1],l=i[2][1],c=i[0][2],d=i[1][2],u=i[2][2],p=e[0][0],v=e[1][0],_=e[2][0],b=e[0][1],y=e[1][1],g=e[2][1],w=e[0][2],x=e[1][2],E=e[2][2];return t[0][0]=n*p+r*b+s*w,t[1][0]=n*v+r*y+s*x,t[2][0]=n*_+r*g+s*E,t[0][1]=o*p+a*b+l*w,t[1][1]=o*v+a*y+l*x,t[2][1]=o*_+a*g+l*E,t[0][2]=c*p+d*b+u*w,t[1][2]=c*v+d*y+u*x,t[2][2]=c*_+d*g+u*E,t}var FA={up:{dir:[0,1,0],mask1:[1,1,0],mask2:[0,1,1],corners:[[0,1,1,0,1],[1,1,1,1,1],[0,1,0,0,0],[1,1,0,1,0]]},down:{dir:[0,-1,0],mask1:[1,1,0],mask2:[0,1,1],corners:[[1,0,1,0,1],[0,0,1,1,1],[1,0,0,0,0],[0,0,0,1,0]]},east:{dir:[1,0,0],mask1:[1,1,0],mask2:[1,0,1],corners:[[1,1,1,0,0],[1,0,1,0,1],[1,1,0,1,0],[1,0,0,1,1]]},west:{dir:[-1,0,0],mask1:[1,1,0],mask2:[1,0,1],corners:[[0,1,0,0,0],[0,0,0,0,1],[0,1,1,1,0],[0,0,1,1,1]]},north:{dir:[0,0,-1],mask1:[1,0,1],mask2:[0,1,1],corners:[[1,0,0,1,1],[0,0,0,0,1],[1,1,0,1,0],[0,1,0,0,0]]},south:{dir:[0,0,1],mask1:[1,0,1],mask2:[0,1,1],corners:[[0,0,1,0,1],[1,0,1,1,1],[0,1,1,0,0],[1,1,1,1,0]]}};function _Oe(i,e,t,n,r,s,o,a){let l=new ut(0,0,0);for(let c in i.faces){let d=i.faces[c],{corners:u,mask1:p,mask2:v}=FA[c],_=g1(n,FA[c].dir);if(d.cullface&&a[c])continue;let b=i.from[0],y=i.from[1],g=i.from[2],w=i.to[0],x=i.to[1],E=i.to[2],A=d.texture,{u:C}=A,{v:R}=A,{su:L}=A,{sv:M}=A,k=Math.floor(t.positions.length/3),F=[1,1,1];d.tintindex!==void 0&&d.tintindex===0&&(F=[.5686274509803921,.7411764705882353,.34901960784313724]);let Z=d.rotation||0,U=Math.cos(Z*Math.PI/180),H=-Math.sin(Z*Math.PI/180),Y=null,ce=null;i.rotation&&(Y=N7(i.rotation.axis,i.rotation.angle),ce=VA(i.rotation.origin,g1(Y,i.rotation.origin)));let te=[],re=1;for(let ae of u){let j=[ae[0]?w:b,ae[1]?x:y,ae[2]?E:g];j=UA(g1(Y,j),ce),j=UA(g1(n,j),r),j=j.map(ee=>ee/16),t.positions.push(j[0],j[1],j[2]),t.normals.push(..._);let D=(ae[3]-.5)*U-(ae[4]-.5)*H+.5,V=(ae[3]-.5)*H+(ae[4]-.5)*U+.5;t.uvs.push(D*L+C,V*M+R);let J=1;e&&(J=4/4*(15/15),te.push(3)),t.colors.push(re*F[0]*J,re*F[1]*J,re*F[2]*J)}e&&te[0]+te[3]>=te[1]+te[2]?t.indices.push(k,k+3,k+2,k,k+1,k+3):t.indices.push(k,k+1,k+2,k+2,k+1,k+3)}}var yOe=(i,e,t,n,r=[],s={})=>{let c={sx:.5,sy:.5,sz:.5,positions:[],normals:[],colors:[],uvs:[],t_positions:[],t_normals:[],t_colors:[],t_uvs:[],indices:[],tiles:{}};for(let[u,p]of i.entries()){let v=p[r[u]]??p[0];if(!v)continue;let _=null,b=null;for(let g of["x","y","z"])g in v&&(_?_=Nhe(_,N7(g,-(v[g]??0))):_=N7(g,-(v[g]??0)));_&&(b=[8,8,8],b=VA(b,g1(_,b)));let y=v.ao??!0;for(let g of v.elements??[])_Oe(g,y,c,_,b,e,t,s)}let d=c.positions.length/3;for(let u=0;u<c.t_positions.length/12;u++)c.indices.push(d,d+1,d+2,d+2,d+1,d+3,d,d+2,d+1,d+2,d+3,d+1),d+=4;return c.positions.push(...c.t_positions),c.normals.push(...c.t_normals),c.colors.push(...c.t_colors),c.uvs.push(...c.t_uvs),delete c.t_positions,delete c.t_normals,delete c.t_colors,delete c.t_uvs,c.positions=new Float32Array(c.positions),c.normals=new Float32Array(c.normals),c.colors=new Float32Array(c.colors),c.uvs=new Float32Array(c.uvs),c},bOe=(...i)=>{let t={geometry:yOe(...i)},n=new it;return n.setAttribute("position",new ht(t.geometry.positions,3)),n.setAttribute("normal",new ht(t.geometry.normals,3)),n.setAttribute("color",new ht(t.geometry.colors,3)),n.setAttribute("uv",new ht(t.geometry.uvs,2)),n.setIndex(t.geometry.indices),n.name="block-geometry",n},zA=(i,...e)=>{let t=bOe(...e),n=new je(t,i);n.position.set(-.5,-.5,-.5);let r=new at;return r.add(n),r.rotation.set(0,-_t.degToRad(90),0,"ZYX"),globalThis.mesh=r,r},Dhe=(i,e)=>{i.position.set(e.x+.5,e.y+.5,e.z+.5)};f();m();h();yt();var Sp=async(i,e)=>{let t;if(!i&&!e){let{canvas:c}=await Ua(Wi);t=new mn(c)}else{if(i||(i=await f0(e,"skin")),!i)return;let{canvas:c}=await Ua(i);t=new mn(c)}t.magFilter=Qe,t.minFilter=Qe;let n=!1,s=xOe(40,16,n?-2:-3,-2,-2,n?3:4,12,4,64,64),o=new br;o.map=t,o.needsUpdate=!0;let a=new je(s,o),l=new at;return l.add(a),l};function xOe(i,e,t,n,r,s,o,a,l,c,d=!1){let u=t/16,p=n/16,v=r/16,_=(t+s)/16,b=(n+o)/16,y=(r+a)/16;d&&([u,_]=[_,u]);let g=[[u,p,v],[_,p,v],[_,b,v],[u,b,v],[u,p,y],[_,p,y],[_,b,y],[u,b,y]],w=i,x=i+a,E=i+a+s,A=i+a+s+s,C=i+a+s+a,R=i+a+s+a+s,L=e,M=e+a,k=e+a+o,F=[{vi:[5,4,0,1],uv:[x,L,E,M],n:[0,-1,0]},{vi:[2,3,7,6],uv:[E,M,A,L],n:[0,1,0]},{vi:[0,4,7,3],uv:[w,M,x,k],n:[-1,0,0]},{vi:[1,0,3,2],uv:[x,M,E,k],n:[0,0,-1]},{vi:[5,1,2,6],uv:[E,M,C,k],n:[1,0,0]},{vi:[4,5,6,7],uv:[C,M,R,k],n:[0,0,1]}],Z=[],U=[],H=[],Y=[];for(let te=0;te<F.length;te++){let re=F[te],ae=te*4,[j,D,V,J]=re.uv,ee=[[V/l,1-D/c],[j/l,1-D/c],[j/l,1-J/c],[V/l,1-J/c]],Q=d?[3,2,1,0]:[0,1,2,3],se=d?-re.n[0]:re.n[0];for(let oe=0;oe<4;oe++){let me=g[re.vi[Q[oe]]];Z.push(me[0],me[1],me[2]),U.push(ee[oe][0],ee[oe][1]),H.push(se,re.n[1],re.n[2])}Y.push(ae,ae+1,ae+2,ae,ae+2,ae+3)}let ce=new it;return ce.setAttribute("position",new qe(Z,3)),ce.setAttribute("uv",new qe(U,2)),ce.setAttribute("normal",new qe(H,3)),ce.setIndex(Y),ce}f();m();h();f();m();h();yt();f();m();h();f();m();h();var h0=class i{constructor(e,t,n,r,s="div"){this.parent=e,this.object=t,this.property=n,this._disabled=!1,this._hidden=!1,this.initialValue=this.getValue(),this.domElement=document.createElement("div"),this.domElement.classList.add("controller"),this.domElement.classList.add(r),this.$name=document.createElement("div"),this.$name.classList.add("name"),i.nextNameID=i.nextNameID||0,this.$name.id=`lil-gui-name-${++i.nextNameID}`,this.$widget=document.createElement(s),this.$widget.classList.add("widget"),this.$disable=this.$widget,this.domElement.appendChild(this.$name),this.domElement.appendChild(this.$widget),this.domElement.addEventListener("keydown",o=>o.stopPropagation()),this.domElement.addEventListener("keyup",o=>o.stopPropagation()),this.parent.children.push(this),this.parent.controllers.push(this),this.parent.$children.appendChild(this.domElement),this._listenCallback=this._listenCallback.bind(this),this.name(n)}name(e){return this._name=e,this.$name.innerHTML=e,this}onChange(e){return this._onChange=e,this}_callOnChange(){this.parent._callOnChange(this),this._onChange!==void 0&&this._onChange.call(this,this.getValue()),this._changed=!0}onFinishChange(e){return this._onFinishChange=e,this}_callOnFinishChange(){this._changed&&(this.parent._callOnFinishChange(this),this._onFinishChange!==void 0&&this._onFinishChange.call(this,this.getValue())),this._changed=!1}reset(){return this.setValue(this.initialValue),this._callOnFinishChange(),this}enable(e=!0){return this.disable(!e)}disable(e=!0){return e===this._disabled?this:(this._disabled=e,this.domElement.classList.toggle("disabled",e),this.$disable.toggleAttribute("disabled",e),this)}show(e=!0){return this._hidden=!e,this.domElement.style.display=this._hidden?"none":"",this}hide(){return this.show(!1)}options(e){let t=this.parent.add(this.object,this.property,e);return t.name(this._name),this.destroy(),t}min(e){return this}max(e){return this}step(e){return this}decimals(e){return this}listen(e=!0){return this._listening=e,this._listenCallbackID!==void 0&&(cancelAnimationFrame(this._listenCallbackID),this._listenCallbackID=void 0),this._listening&&this._listenCallback(),this}_listenCallback(){this._listenCallbackID=requestAnimationFrame(this._listenCallback);let e=this.save();e!==this._listenPrevValue&&this.updateDisplay(),this._listenPrevValue=e}getValue(){return this.object[this.property]}setValue(e){return this.object[this.property]=e,this._callOnChange(),this.updateDisplay(),this}updateDisplay(){return this}load(e){return this.setValue(e),this._callOnFinishChange(),this}save(){return this.getValue()}destroy(){this.listen(!1),this.parent.children.splice(this.parent.children.indexOf(this),1),this.parent.controllers.splice(this.parent.controllers.indexOf(this),1),this.parent.$children.removeChild(this.domElement)}},HA=class extends h0{constructor(e,t,n){super(e,t,n,"boolean","label"),this.$input=document.createElement("input"),this.$input.setAttribute("type","checkbox"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$widget.appendChild(this.$input),this.$input.addEventListener("change",()=>{this.setValue(this.$input.checked),this._callOnFinishChange()}),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.checked=this.getValue(),this}};function qA(i){let e,t;return(e=i.match(/(#|0x)?([a-f0-9]{6})/i))?t=e[2]:(e=i.match(/rgb\(\s*(\d*)\s*,\s*(\d*)\s*,\s*(\d*)\s*\)/))?t=parseInt(e[1]).toString(16).padStart(2,0)+parseInt(e[2]).toString(16).padStart(2,0)+parseInt(e[3]).toString(16).padStart(2,0):(e=i.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i))&&(t=e[1]+e[1]+e[2]+e[2]+e[3]+e[3]),t?"#"+t:!1}var wOe={isPrimitive:!0,match:i=>typeof i=="string",fromHexString:qA,toHexString:qA},Mp={isPrimitive:!0,match:i=>typeof i=="number",fromHexString:i=>parseInt(i.substring(1),16),toHexString:i=>"#"+i.toString(16).padStart(6,0)},EOe={isPrimitive:!1,match:i=>Array.isArray(i),fromHexString(i,e,t=1){let n=Mp.fromHexString(i);e[0]=(n>>16&255)/255*t,e[1]=(n>>8&255)/255*t,e[2]=(n&255)/255*t},toHexString([i,e,t],n=1){n=255/n;let r=i*n<<16^e*n<<8^t*n<<0;return Mp.toHexString(r)}},SOe={isPrimitive:!1,match:i=>Object(i)===i,fromHexString(i,e,t=1){let n=Mp.fromHexString(i);e.r=(n>>16&255)/255*t,e.g=(n>>8&255)/255*t,e.b=(n&255)/255*t},toHexString({r:i,g:e,b:t},n=1){n=255/n;let r=i*n<<16^e*n<<8^t*n<<0;return Mp.toHexString(r)}},AOe=[wOe,Mp,EOe,SOe];function MOe(i){return AOe.find(e=>e.match(i))}var GA=class extends h0{constructor(e,t,n,r){super(e,t,n,"color"),this.$input=document.createElement("input"),this.$input.setAttribute("type","color"),this.$input.setAttribute("tabindex",-1),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$text=document.createElement("input"),this.$text.setAttribute("type","text"),this.$text.setAttribute("spellcheck","false"),this.$text.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this.$display.appendChild(this.$input),this.$widget.appendChild(this.$display),this.$widget.appendChild(this.$text),this._format=MOe(this.initialValue),this._rgbScale=r,this._initialValueHexString=this.save(),this._textFocused=!1,this.$input.addEventListener("input",()=>{this._setValueFromHexString(this.$input.value)}),this.$input.addEventListener("blur",()=>{this._callOnFinishChange()}),this.$text.addEventListener("input",()=>{let s=qA(this.$text.value);s&&this._setValueFromHexString(s)}),this.$text.addEventListener("focus",()=>{this._textFocused=!0,this.$text.select()}),this.$text.addEventListener("blur",()=>{this._textFocused=!1,this.updateDisplay(),this._callOnFinishChange()}),this.$disable=this.$text,this.updateDisplay()}reset(){return this._setValueFromHexString(this._initialValueHexString),this}_setValueFromHexString(e){if(this._format.isPrimitive){let t=this._format.fromHexString(e);this.setValue(t)}else this._format.fromHexString(e,this.getValue(),this._rgbScale),this._callOnChange(),this.updateDisplay()}save(){return this._format.toHexString(this.getValue(),this._rgbScale)}load(e){return this._setValueFromHexString(e),this._callOnFinishChange(),this}updateDisplay(){return this.$input.value=this._format.toHexString(this.getValue(),this._rgbScale),this._textFocused||(this.$text.value=this.$input.value.substring(1)),this.$display.style.backgroundColor=this.$input.value,this}},Ap=class extends h0{constructor(e,t,n){super(e,t,n,"function"),this.$button=document.createElement("button"),this.$button.appendChild(this.$name),this.$widget.appendChild(this.$button),this.$button.addEventListener("click",r=>{r.preventDefault(),this.getValue().call(this.object),this._callOnChange()}),this.$button.addEventListener("touchstart",()=>{},{passive:!0}),this.$disable=this.$button}},WA=class extends h0{constructor(e,t,n,r,s,o){super(e,t,n,"number"),this._initInput(),this.min(r),this.max(s);let a=o!==void 0;this.step(a?o:this._getImplicitStep(),a),this.updateDisplay()}decimals(e){return this._decimals=e,this.updateDisplay(),this}min(e){return this._min=e,this._onUpdateMinMax(),this}max(e){return this._max=e,this._onUpdateMinMax(),this}step(e,t=!0){return this._step=e,this._stepExplicit=t,this}updateDisplay(){let e=this.getValue();if(this._hasSlider){let t=(e-this._min)/(this._max-this._min);t=Math.max(0,Math.min(t,1)),this.$fill.style.width=t*100+"%"}return this._inputFocused||(this.$input.value=this._decimals===void 0?e:e.toFixed(this._decimals)),this}_initInput(){this.$input=document.createElement("input"),this.$input.setAttribute("type","text"),this.$input.setAttribute("aria-labelledby",this.$name.id),window.matchMedia("(pointer: coarse)").matches&&(this.$input.setAttribute("type","number"),this.$input.setAttribute("step","any")),this.$widget.appendChild(this.$input),this.$disable=this.$input;let t=()=>{let w=parseFloat(this.$input.value);isNaN(w)||(this._stepExplicit&&(w=this._snap(w)),this.setValue(this._clamp(w)))},n=w=>{let x=parseFloat(this.$input.value);isNaN(x)||(this._snapClampSetValue(x+w),this.$input.value=this.getValue())},r=w=>{w.key==="Enter"&&this.$input.blur(),w.code==="ArrowUp"&&(w.preventDefault(),n(this._step*this._arrowKeyMultiplier(w))),w.code==="ArrowDown"&&(w.preventDefault(),n(this._step*this._arrowKeyMultiplier(w)*-1))},s=w=>{this._inputFocused&&(w.preventDefault(),n(this._step*this._normalizeMouseWheel(w)))},o=!1,a,l,c,d,u,p=5,v=w=>{a=w.clientX,l=c=w.clientY,o=!0,d=this.getValue(),u=0,window.addEventListener("mousemove",_),window.addEventListener("mouseup",b)},_=w=>{if(o){let x=w.clientX-a,E=w.clientY-l;Math.abs(E)>p?(w.preventDefault(),this.$input.blur(),o=!1,this._setDraggingStyle(!0,"vertical")):Math.abs(x)>p&&b()}if(!o){let x=w.clientY-c;u-=x*this._step*this._arrowKeyMultiplier(w),d+u>this._max?u=this._max-d:d+u<this._min&&(u=this._min-d),this._snapClampSetValue(d+u)}c=w.clientY},b=()=>{this._setDraggingStyle(!1,"vertical"),this._callOnFinishChange(),window.removeEventListener("mousemove",_),window.removeEventListener("mouseup",b)},y=()=>{this._inputFocused=!0},g=()=>{this._inputFocused=!1,this.updateDisplay(),this._callOnFinishChange()};this.$input.addEventListener("input",t),this.$input.addEventListener("keydown",r),this.$input.addEventListener("wheel",s,{passive:!1}),this.$input.addEventListener("mousedown",v),this.$input.addEventListener("focus",y),this.$input.addEventListener("blur",g)}_initSlider(){this._hasSlider=!0,this.$slider=document.createElement("div"),this.$slider.classList.add("slider"),this.$fill=document.createElement("div"),this.$fill.classList.add("fill"),this.$slider.appendChild(this.$fill),this.$widget.insertBefore(this.$slider,this.$input),this.domElement.classList.add("hasSlider");let e=(g,w,x,E,A)=>(g-w)/(x-w)*(A-E)+E,t=g=>{let w=this.$slider.getBoundingClientRect(),x=e(g,w.left,w.right,this._min,this._max);this._snapClampSetValue(x)},n=g=>{this._setDraggingStyle(!0),t(g.clientX),window.addEventListener("mousemove",r),window.addEventListener("mouseup",s)},r=g=>{t(g.clientX)},s=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",s)},o=!1,a,l,c=g=>{g.preventDefault(),this._setDraggingStyle(!0),t(g.touches[0].clientX),o=!1},d=g=>{g.touches.length>1||(this._hasScrollBar?(a=g.touches[0].clientX,l=g.touches[0].clientY,o=!0):c(g),window.addEventListener("touchmove",u,{passive:!1}),window.addEventListener("touchend",p))},u=g=>{if(o){let w=g.touches[0].clientX-a,x=g.touches[0].clientY-l;Math.abs(w)>Math.abs(x)?c(g):(window.removeEventListener("touchmove",u),window.removeEventListener("touchend",p))}else g.preventDefault(),t(g.touches[0].clientX)},p=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("touchmove",u),window.removeEventListener("touchend",p)},v=this._callOnFinishChange.bind(this),_=400,b,y=g=>{if(Math.abs(g.deltaX)<Math.abs(g.deltaY)&&this._hasScrollBar)return;g.preventDefault();let x=this._normalizeMouseWheel(g)*this._step;this._snapClampSetValue(this.getValue()+x),this.$input.value=this.getValue(),clearTimeout(b),b=setTimeout(v,_)};this.$slider.addEventListener("mousedown",n),this.$slider.addEventListener("touchstart",d,{passive:!1}),this.$slider.addEventListener("wheel",y,{passive:!1})}_setDraggingStyle(e,t="horizontal"){this.$slider&&this.$slider.classList.toggle("active",e),document.body.classList.toggle("lil-gui-dragging",e),document.body.classList.toggle(`lil-gui-${t}`,e)}_getImplicitStep(){return this._hasMin&&this._hasMax?(this._max-this._min)/1e3:.1}_onUpdateMinMax(){!this._hasSlider&&this._hasMin&&this._hasMax&&(this._stepExplicit||this.step(this._getImplicitStep(),!1),this._initSlider(),this.updateDisplay())}_normalizeMouseWheel(e){let{deltaX:t,deltaY:n}=e;return Math.floor(e.deltaY)!==e.deltaY&&e.wheelDelta&&(t=0,n=-e.wheelDelta/120,n*=this._stepExplicit?1:10),t+-n}_arrowKeyMultiplier(e){let t=this._stepExplicit?1:10;return e.shiftKey?t*=10:e.altKey&&(t/=10),t}_snap(e){let t=Math.round(e/this._step)*this._step;return parseFloat(t.toPrecision(15))}_clamp(e){return e<this._min&&(e=this._min),e>this._max&&(e=this._max),e}_snapClampSetValue(e){this.setValue(this._clamp(this._snap(e)))}get _hasScrollBar(){let e=this.parent.root.$children;return e.scrollHeight>e.clientHeight}get _hasMin(){return this._min!==void 0}get _hasMax(){return this._max!==void 0}},jA=class extends h0{constructor(e,t,n,r){super(e,t,n,"option"),this.$select=document.createElement("select"),this.$select.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this._values=Array.isArray(r)?r:Object.values(r),this._names=Array.isArray(r)?r:Object.keys(r),this._names.forEach(s=>{let o=document.createElement("option");o.innerHTML=s,this.$select.appendChild(o)}),this.$select.addEventListener("change",()=>{this.setValue(this._values[this.$select.selectedIndex]),this._callOnFinishChange()}),this.$select.addEventListener("focus",()=>{this.$display.classList.add("focus")}),this.$select.addEventListener("blur",()=>{this.$display.classList.remove("focus")}),this.$widget.appendChild(this.$select),this.$widget.appendChild(this.$display),this.$disable=this.$select,this.updateDisplay()}updateDisplay(){let e=this.getValue(),t=this._values.indexOf(e);return this.$select.selectedIndex=t,this.$display.innerHTML=t===-1?e:this._names[t],this}},$A=class extends h0{constructor(e,t,n){super(e,t,n,"string"),this.$input=document.createElement("input"),this.$input.setAttribute("type","text"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$input.addEventListener("input",()=>{this.setValue(this.$input.value)}),this.$input.addEventListener("keydown",r=>{r.code==="Enter"&&this.$input.blur()}),this.$input.addEventListener("blur",()=>{this._callOnFinishChange()}),this.$widget.appendChild(this.$input),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.value=this.getValue(),this}},kOe=`.lil-gui {
4051
+ `)),e.download="mesher.log",e.click()}checkAllFinished(){this.sectionsWaiting.size===0&&(this.reactiveState.world.mesherWork=!1),Object.keys(this.finishedChunks).length>=this.chunksLength&&(this.allChunksLoaded?.(),this.allChunksFinished=!0,this.allLoadedIn??=Date.now()-this.initialChunkLoadWasStartedIn),this.updateChunksStats()}changeHandSwingingState(e,t){}updateViewerPosition(e){this.viewerChunkPosition=e;for(let[r,s]of Object.entries(this.loadedChunks))s&&this.updatePosDataChunk?.(r);let t=Math.floor(e.x/16),n=Math.floor(e.z/16);(t!==this.lastViewerChunkGridX||n!==this.lastViewerChunkGridZ)&&(this.lastViewerChunkGridX=t,this.lastViewerChunkGridZ=n,this.onViewerChunkPositionChanged())}onViewerChunkPositionChanged(){}sendWorkers(e){for(let t of this.workers)t.postMessage(e)}getDistance(e){let[t,n]=m1(this.viewerChunkPosition),r=16,s=Math.abs(t-Math.floor(e.x/r)),o=Math.abs(n-Math.floor(e.z/r));return[s,o]}resetWorld(){for(let e of this.workers)e.terminate();this.workers=[]}async resetWorkers(){this.resetWorld(),typeof document<"u"&&document?.readyState==="loading"&&await new Promise(e=>{document.addEventListener("DOMContentLoaded",e)}),this.initWorkers(),this.active=!0,this.sendMesherMcData()}getMesherConfig(){let e=this.timeOfTheDay,t=e<0||e>24e3?15:DA(e);return{version:this.version,enableLighting:this.worldRendererConfig.enableLighting,skyLight:t,smoothLighting:this.worldRendererConfig.smoothLighting,shadingTheme:this.worldRendererConfig.shadingTheme,cardinalLight:this.worldRendererConfig.cardinalLight,outputFormat:this.outputFormat,debugModelVariant:this.worldRendererConfig.debugModelVariant,clipWorldBelowY:this.worldRendererConfig.clipWorldBelowY,disableBlockEntityTextures:!this.worldRendererConfig.extraBlockRenderers,worldMinY:this.worldMinYRender,worldMaxY:this.worldMinYRender+this.worldSizeParams.worldHeight,disableConversionCache:this.worldRendererConfig.disableMesherConversionCache,computeWireframeEdges:this.worldRendererConfig.futuristicReveal===!0,shaderCubeBlocks:this.isShaderCubeBlocksEnabled()}}sendMesherMcData(){let e=this.resourcesManager.currentResources.mcData;gOe(this.workers,this.version,TA,e),this.logWorkerWork("# mcData sent")}async updateAssetsData(){let e=this.resourcesManager.currentResources;if(this.workers.length===0)throw new Error("workers not initialized yet");for(let[t,n]of this.workers.entries()){let{blockstatesModels:r}=e;n.postMessage({type:"mesherData",workerIndex:t,blocksAtlas:{latest:e.blocksAtlasJson},blockstatesModels:r,config:this.getMesherConfig()})}this.logWorkerWork("# mesherData sent"),console.log("textures loaded")}getSectionHeight(){return Ehe}get worldMinYRender(){let e=this.getSectionHeight();return Math.floor(Math.max(this.worldSizeParams.minY,this.worldRendererConfig.clipWorldBelowY??-1/0)/e)*e}updateChunksStats(){let e=Object.keys(this.finishedChunks);this.displayOptions.nonReactiveState.world.chunksLoaded=new Set(e),this.displayOptions.nonReactiveState.world.chunksTotalNumber=this.chunksLength,this.reactiveState.world.allChunksLoaded=this.allChunksFinished;let t=`Q: ${this.messageQueue.length} ${Object.keys(this.loadedChunks).length}/${Object.keys(this.finishedChunks).length}/${this.chunksLength} chunks (${this.workers.length}:${this.workersProcessAverageTime.toFixed(0)}ms/${this.geometryReceiveCountPerSec}ss/${this.allLoadedIn?.toFixed(1)??"-"}s)`;this.chunksFullInfo=t,this.displayOptions.nonReactiveState.world.chunksFullInfo=t,RA("downloaded-chunks",t)}addColumn(e,t,n,r){if(!this.active)return;if(this.workers.length===0)throw new Error("workers not initialized yet");this.initialChunksLoad=!1,this.initialChunkLoadWasStartedIn??=Date.now(),this.loadedChunks[`${e},${t}`]=!0,this.updateChunksStats();let s=`${e},${t}`,o=this.protocolCustomBlocks.get(s);for(let c of this.workers)c.postMessage({type:"chunk",x:e,z:t,chunk:n,customBlockModels:o||void 0});this.worldRendererConfig.wasmMesher||this.workers[0].postMessage({type:"getHeightmap",x:e,z:t}),this.logWorkerWork(()=>`-> chunk ${JSON.stringify({x:e,z:t,chunkLength:n.length,customBlockModelsLength:o?Object.keys(o).length:0})}`),this.mesherLogReader?.chunkReceived(e,t,n.length);let a=this.getSectionHeight(),l=16;for(let c=this.worldMinYRender;c<this.worldSizeParams.worldHeight;c+=a){let d=new ut(e,c,t);this.setSectionDirty(d),this.neighborChunkUpdates&&(!r||this.worldRendererConfig.smoothLighting)&&(this.setSectionDirty(d.offset(-l,0,0)),this.setSectionDirty(d.offset(l,0,0)),this.setSectionDirty(d.offset(0,0,-l)),this.setSectionDirty(d.offset(0,0,l)))}}markAsLoaded(e,t){this.loadedChunks[`${e},${t}`]=!0,this.finishedChunks[`${e},${t}`]=!0,this.logWorkerWork(`-> markAsLoaded ${JSON.stringify({x:e,z:t})}`),this.renderUpdateEmitter.emit("chunkFinished",`${e},${t}`),this.checkAllFinished()}removeColumn(e,t){delete this.loadedChunks[`${e},${t}`];let n=`${e},${t}`,r=this.heightmapDebounceTimers.get(n);r&&(clearTimeout(r),this.heightmapDebounceTimers.delete(n));for(let[o,a]of this.sectionDirtyTimers)o.startsWith(`${e},`)&&o.endsWith(`,${t}`)&&(clearTimeout(a),this.sectionDirtyTimers.delete(o),this.sectionDirtyCount.delete(o),this.sectionDirtyPendingArgs.delete(o));for(let o of this.workers)o.postMessage({type:"unloadChunk",x:e,z:t});this.logWorkerWork(`-> unloadChunk ${JSON.stringify({x:e,z:t})}`),delete this.finishedChunks[`${e},${t}`],this.allChunksFinished=Object.keys(this.finishedChunks).length===this.chunksLength,Object.keys(this.finishedChunks).length===0&&(this.allLoadedIn=void 0,this.initialChunkLoadWasStartedIn=void 0);let s=this.getSectionHeight();for(let o=this.worldSizeParams.minY;o<this.worldSizeParams.worldHeight;o+=s)this.setSectionDirty(new ut(e,o,t),!1),delete this.finishedSections[`${e},${o},${t}`];this.highestBlocksByChunks.delete(`${e},${t}`),this.reactiveState.world.heightmaps.delete(`${Math.floor(e/16)},${Math.floor(t/16)}`),this.updateChunksStats(),Object.keys(this.loadedChunks).length===0&&(this.mesherLogger.contents=[],this.logWorkerWork("# all chunks unloaded. New log started"),this.mesherLogReader?.maybeStartReplay())}setBlockStateId(e,t,n=!0){(async()=>{let o=Math.floor(e.x/16)*16,a=Math.floor(e.z/16)*16;this.queuedChunks.has(`${o},${a}`)&&await new Promise(l=>{this.queuedFunctions.push(()=>{l()})}),this.loadedChunks[`${o},${a}`],this.setBlockStateIdInner(e,t,n)})()}updateEntity(e,t=!1){}lightUpdate(e,t){}connect(e){let t=e;t.on("entity",r=>{this.updateEntity(r,!1)}),t.on("entityMoved",r=>{this.updateEntity(r,!0)}),t.on("playerEntity",r=>{this.updatePlayerEntity?.(r)});let n=null;t.on("loadChunk",({x:r,z:s,chunk:o,worldConfig:a,isLightUpdate:l})=>{this.worldSizeParams=a,this.queuedChunks.add(`${r},${s}`);let c=[r,s,o,l];n||(n={data:[],timeout:setTimeout(()=>{for(let d of n.data)this.queuedChunks.delete(`${d[0]},${d[1]}`),this.addColumn(...d);for(let d of this.queuedFunctions)d();this.queuedFunctions=[],n=null},this.worldRendererConfig.addChunksBatchWaitTime)}),n.data.push(c)}),t.on("blockEntities",r=>{this.blockEntities=r}),t.on("unloadChunk",({x:r,z:s})=>{this.removeColumn(r,s)}),t.on("blockUpdate",({pos:r,stateId:s})=>{this.setBlockStateId(new ut(r.x,r.y,r.z),s)}),t.on("chunkPosUpdate",({pos:r})=>{this.updateViewerPosition(r)}),t.on("end",()=>{this.worldStop?.()}),t.on("renderDistance",r=>{this.viewDistance=r,this.chunksLength=r===0?1:wp(r).length,this.allChunksFinished=Object.keys(this.finishedChunks).length===this.chunksLength,this.onRenderDistanceChanged?.(r)}),t.on("markAsLoaded",({x:r,z:s})=>{this.markAsLoaded(r,s)}),t.on("updateLight",({pos:r})=>{this.lightUpdate(r.x,r.z)}),t.on("onWorldSwitch",()=>{for(let r of this.onWorldSwitched)try{r()}catch(s){setTimeout(()=>{throw console.log("[Renderer Backend] Error in onWorldSwitched:"),s},0)}}),t.on("time",r=>{this.worldRendererConfig.dayCycle&&(this.timeUpdated?.(r),this.timeOfTheDay=r)}),t.on("biomeUpdate",({biome:r})=>{this.biomeUpdated?.(r)}),t.on("biomeReset",()=>{this.biomeReset?.()})}setBlockStateIdInner(e,t,n=!0){let s=`${Math.floor(e.x/16)*16},${Math.floor(e.z/16)*16}`,o=`${e.x},${e.y},${e.z}`,a=this.protocolCustomBlocks.get(s)||{};for(let l of this.workers)l.postMessage({type:"blockUpdate",pos:e,stateId:t,customBlockModels:a});if(this.anyModuleRequiresHeightmap()){let l=Math.floor(e.x/16)*16,c=Math.floor(e.z/16)*16,d=`${l},${c}`;if(!this.worldRendererConfig.wasmMesher){let u=this.heightmapDebounceTimers.get(d);u&&clearTimeout(u),this.heightmapDebounceTimers.set(d,setTimeout(()=>{this.heightmapDebounceTimers.delete(d),this.workers[0]?.postMessage({type:"getHeightmap",x:l,z:c})},100))}}if(this.logWorkerWork(`-> blockUpdate ${JSON.stringify({pos:e,stateId:t,customBlockModels:a})}`),this.setSectionDirty(e,!0,!0),this.neighborChunkUpdates){let c=this.getSectionHeight();e.x&15||this.setSectionDirty(e.offset(-16,0,0),!0,!0),(e.x&15)===15&&this.setSectionDirty(e.offset(16,0,0),!0,!0),e.y&c-1||this.setSectionDirty(e.offset(0,-c,0),!0,!0),(e.y&c-1)===c-1&&this.setSectionDirty(e.offset(0,c,0),!0,!0),e.z&15||this.setSectionDirty(e.offset(0,0,-16),!0,!0),(e.z&15)===15&&this.setSectionDirty(e.offset(0,0,16),!0,!0),n&&(!(e.x&15)&&!(e.z&15)&&this.setSectionDirty(e.offset(-16,0,-16),!0,!0),(e.x&15)===15&&!(e.z&15)&&this.setSectionDirty(e.offset(16,0,-16),!0,!0),!(e.x&15)&&(e.z&15)===15&&this.setSectionDirty(e.offset(-16,0,16),!0,!0),(e.x&15)===15&&(e.z&15)===15&&this.setSectionDirty(e.offset(16,0,16),!0,!0),!(e.x&15)&&!(e.y&c-1)&&this.setSectionDirty(e.offset(-16,-c,0),!0,!0),(e.x&15)===15&&!(e.y&c-1)&&this.setSectionDirty(e.offset(16,-c,0),!0,!0),!(e.z&15)&&!(e.y&c-1)&&this.setSectionDirty(e.offset(0,-c,-16),!0,!0),(e.z&15)===15&&!(e.y&c-1)&&this.setSectionDirty(e.offset(0,-c,16),!0,!0),!(e.y&c-1)&&!(e.x&15)&&!(e.z&15)&&this.setSectionDirty(e.offset(-16,-c,-16),!0,!0),!(e.y&c-1)&&(e.x&15)===15&&!(e.z&15)&&this.setSectionDirty(e.offset(16,-c,-16),!0,!0),!(e.y&c-1)&&!(e.x&15)&&(e.z&15)===15&&this.setSectionDirty(e.offset(-16,-c,16),!0,!0),!(e.y&c-1)&&(e.x&15)===15&&(e.z&15)===15&&this.setSectionDirty(e.offset(16,-c,16),!0,!0))}}queueAwaited=!1;toWorkerMessagesQueue={};getWorkerNumber(e,t=!1){let r=this.getSectionHeight();if(this.worldRendererConfig.dedicatedChangeWorker&&this.workers.length>1){if(this.worldRendererConfig.wasmMesher)return Ep(Math.floor(e.x/16)+Math.floor(e.z/16),this.workers.length);if(t){let a=`${Math.floor(e.x/16)*16},${Math.floor(e.y/r)*r},${Math.floor(e.z/16)*16}`;if(this.sectionsWaiting.get(a)&&!this.finishedSections[a]){let c=this.workers.length-1;return Ep(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),c)}return this.workers.length-1}let o=this.workers.length-1;return Ep(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),o)}if(this.worldRendererConfig.wasmMesher)return Ep(Math.floor(e.x/16)+Math.floor(e.z/16),this.workers.length);if(t){let o=`${Math.floor(e.x/16)*16},${Math.floor(e.y/r)*r},${Math.floor(e.z/16)*16}`;if(!(this.sectionsWaiting.get(o)&&!this.finishedSections[o]))return 0}return Ep(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),this.workers.length)}async debugGetWorkerCustomBlockModel(e){let t=[];for(let n of this.workers)t.push(new Promise(r=>{n.addEventListener("message",s=>{s.data.type==="customBlockModel"&&r(s.data.customBlockModel)})})),n.postMessage({type:"getCustomBlockModel",pos:e});return Promise.all(t)}setSectionDirty(e,t=!0,n=!1){if(!this.forceCallFromMesherReplayer&&this.mesherLogReader)return;if(this.viewDistance===-1)throw new Error("viewDistance not set");let r=this.getDistance(e);if(!this.workers.length||r[0]>this.viewDistance||r[1]>this.viewDistance)return;if(!t){this._dispatchDirtyImmediate(e,t,n);return}let s=16,o=this.getSectionHeight(),a=`${Math.floor(e.x/s)*s},${Math.floor(e.y/o)*o},${Math.floor(e.z/s)*s}`,l=(this.sectionDirtyCount.get(a)??0)+1;this.sectionDirtyCount.set(a,l),l<=Va.GEOMETRY_THROTTLE_THRESHOLD?(this._dispatchDirtyImmediate(e,t,n),this.sectionDirtyTimers.has(a)||this.sectionDirtyTimers.set(a,setTimeout(()=>{let c=this.sectionDirtyPendingArgs.get(a);this.sectionDirtyCount.delete(a),this.sectionDirtyTimers.delete(a),this.sectionDirtyPendingArgs.delete(a),c&&this._dispatchDirtyImmediate(c.pos,c.value,c.useChangeWorker)},Va.GEOMETRY_THROTTLE_DELAY))):(this.sectionDirtyPendingArgs.set(a,{pos:e,value:t,useChangeWorker:n}),this.sectionDirtyTimers.has(a)||this.sectionDirtyTimers.set(a,setTimeout(()=>{let c=this.sectionDirtyPendingArgs.get(a);this.sectionDirtyCount.delete(a),this.sectionDirtyTimers.delete(a),this.sectionDirtyPendingArgs.delete(a),c&&this._dispatchDirtyImmediate(c.pos,c.value,c.useChangeWorker)},Va.GEOMETRY_THROTTLE_DELAY)))}_dispatchDirtyImmediate(e,t,n){this.reactiveState.world.mesherWork=!0;let r=16,s=this.getSectionHeight(),o=`${Math.floor(e.x/r)*r},${Math.floor(e.y/s)*s},${Math.floor(e.z/r)*r}`;this.renderUpdateEmitter.emit("dirty",e,t);let a=this.getWorkerNumber(e,n&&(this.mesherLogger.active||this.worldRendererConfig.dedicatedChangeWorker));this.sectionsWaiting.set(o,(this.sectionsWaiting.get(o)??0)+1),this.forceCallFromMesherReplayer?this.workers[a].postMessage({type:"dirty",x:e.x,y:e.y,z:e.z,value:t,config:this.getMesherConfig()}):(this.toWorkerMessagesQueue[a]??=[],this.toWorkerMessagesQueue[a].push({type:"dirty",x:e.x,y:e.y,z:e.z,value:t,config:this.getMesherConfig()}),this.dispatchMessages())}dispatchMessages(){this.queueAwaited||(this.queueAwaited=!0,setTimeout(()=>{for(let e in this.toWorkerMessagesQueue){let t=this.workers[Number(e)],n=this.toWorkerMessagesQueue[e];t.postMessage(n);for(let r of n)this.logWorkerWork(`-> ${e} dispatchMessages ${r.type} ${JSON.stringify({x:r.x,y:r.y,z:r.z,value:r.value})}`)}this.toWorkerMessagesQueue={},this.queueAwaited=!1}))}async waitForChunksToRender(){return new Promise((e,t)=>{if([...this.sectionsWaiting].length===0){e();return}let n=()=>{this.sectionsWaiting.size===0&&(this.renderUpdateEmitter.removeListener("update",n),e())};this.renderUpdateEmitter.on("update",n)})}async waitForChunkToLoad(e){return new Promise((t,n)=>{let s=`${Math.floor(e.x/16)*16},${Math.floor(e.z/16)*16}`;if(this.loadedChunks[s]){t();return}let o=()=>{this.loadedChunks[s]&&(this.renderUpdateEmitter.removeListener("update",o),t())};this.renderUpdateEmitter.on("update",o)})}destroy(){for(let e of this.heightmapDebounceTimers.values())clearTimeout(e);this.heightmapDebounceTimers.clear();for(let e of this.sectionDirtyTimers.values())clearTimeout(e);this.sectionDirtyTimers.clear(),this.sectionDirtyCount.clear(),this.sectionDirtyPendingArgs.clear();for(let e of this.workers)e.terminate();this.workers=[],this.soundSystem&&(this.soundSystem.destroy(),this.soundSystem=void 0),this.active=!1,this.loadedChunks={},this.finishedChunks={},this.finishedSections={},this.sectionsWaiting.clear(),this.queuedChunks.clear(),this.blockStateModelInfo.clear(),this.renderUpdateEmitter.removeAllListeners(),this.abortController.abort(),khe()}};Cn(Va,"PHASE_PERF_LOG_INTERVAL",64),Cn(Va,"GEOMETRY_THROTTLE_THRESHOLD",1),Cn(Va,"GEOMETRY_THROTTLE_DELAY",100);var O7=Va,vOe=(i,e="mesher.js")=>{let t;if(process.env.SINGLE_FILE_BUILD){let n=document.getElementById("mesher-worker-code").textContent,r=new Blob([n],{type:"text/javascript"});t=new Worker(window.URL.createObjectURL(r))}else t=new Worker(e);return t.onmessage=({data:n})=>{i(n)},t.on&&t.on("message",n=>{t.onmessage({data:n})}),t},Ohe=!1,gOe=(i,e,t=TA,n)=>{let r={version:JSON.parse(JSON.stringify(n.version))};for(let[s,o]of Object.entries(t))r[s]=n[o];"tints"in t&&!r.tints&&!Ohe&&(Ohe=!0,console.warn(`[meshersSendMcData] mcData.tints missing for version ${e}; shader cubes will use legacy path in worker`));for(let s of i)s.postMessage({type:"mcData",mcData:r})};f();m();h();yt();f();m();h();function N7(i,e){let t=e/180*Math.PI,n=Math.cos(t),r=Math.sin(t),s={x:0,y:1,z:2}[i],o=(s+1)%3,a=(s+2)%3,l=[[0,0,0],[0,0,0],[0,0,0]];return l[s][s]=1,l[o][o]=n,l[o][a]=-r,l[a][o]=+r,l[a][a]=n,l}function UA(i,e){return e?[i[0]+e[0],i[1]+e[1],i[2]+e[2]]:i}function VA(i,e){return e?[i[0]-e[0],i[1]-e[1],i[2]-e[2]]:i}function g1(i,e){return i?[i[0][0]*e[0]+i[0][1]*e[1]+i[0][2]*e[2],i[1][0]*e[0]+i[1][1]*e[1]+i[1][2]*e[2],i[2][0]*e[0]+i[2][1]*e[1]+i[2][2]*e[2]]:e}function Nhe(i,e){let t=[[0,0,0],[0,0,0],[0,0,0]],n=i[0][0],r=i[1][0],s=i[2][0],o=i[0][1],a=i[1][1],l=i[2][1],c=i[0][2],d=i[1][2],u=i[2][2],p=e[0][0],v=e[1][0],_=e[2][0],b=e[0][1],y=e[1][1],g=e[2][1],w=e[0][2],x=e[1][2],E=e[2][2];return t[0][0]=n*p+r*b+s*w,t[1][0]=n*v+r*y+s*x,t[2][0]=n*_+r*g+s*E,t[0][1]=o*p+a*b+l*w,t[1][1]=o*v+a*y+l*x,t[2][1]=o*_+a*g+l*E,t[0][2]=c*p+d*b+u*w,t[1][2]=c*v+d*y+u*x,t[2][2]=c*_+d*g+u*E,t}var FA={up:{dir:[0,1,0],mask1:[1,1,0],mask2:[0,1,1],corners:[[0,1,1,0,1],[1,1,1,1,1],[0,1,0,0,0],[1,1,0,1,0]]},down:{dir:[0,-1,0],mask1:[1,1,0],mask2:[0,1,1],corners:[[1,0,1,0,1],[0,0,1,1,1],[1,0,0,0,0],[0,0,0,1,0]]},east:{dir:[1,0,0],mask1:[1,1,0],mask2:[1,0,1],corners:[[1,1,1,0,0],[1,0,1,0,1],[1,1,0,1,0],[1,0,0,1,1]]},west:{dir:[-1,0,0],mask1:[1,1,0],mask2:[1,0,1],corners:[[0,1,0,0,0],[0,0,0,0,1],[0,1,1,1,0],[0,0,1,1,1]]},north:{dir:[0,0,-1],mask1:[1,0,1],mask2:[0,1,1],corners:[[1,0,0,1,1],[0,0,0,0,1],[1,1,0,1,0],[0,1,0,0,0]]},south:{dir:[0,0,1],mask1:[1,0,1],mask2:[0,1,1],corners:[[0,0,1,0,1],[1,0,1,1,1],[0,1,1,0,0],[1,1,1,1,0]]}};function _Oe(i,e,t,n,r,s,o,a){let l=new ut(0,0,0);for(let c in i.faces){let d=i.faces[c],{corners:u,mask1:p,mask2:v}=FA[c],_=g1(n,FA[c].dir);if(d.cullface&&a[c])continue;let b=i.from[0],y=i.from[1],g=i.from[2],w=i.to[0],x=i.to[1],E=i.to[2],A=d.texture,{u:C}=A,{v:R}=A,{su:L}=A,{sv:M}=A,k=Math.floor(t.positions.length/3),F=[1,1,1];d.tintindex!==void 0&&d.tintindex===0&&(F=[.5686274509803921,.7411764705882353,.34901960784313724]);let Z=d.rotation||0,U=Math.cos(Z*Math.PI/180),H=-Math.sin(Z*Math.PI/180),Y=null,ce=null;i.rotation&&(Y=N7(i.rotation.axis,i.rotation.angle),ce=VA(i.rotation.origin,g1(Y,i.rotation.origin)));let te=[],re=1;for(let ae of u){let j=[ae[0]?w:b,ae[1]?x:y,ae[2]?E:g];j=UA(g1(Y,j),ce),j=UA(g1(n,j),r),j=j.map(ee=>ee/16),t.positions.push(j[0],j[1],j[2]),t.normals.push(..._);let D=(ae[3]-.5)*U-(ae[4]-.5)*H+.5,V=(ae[3]-.5)*H+(ae[4]-.5)*U+.5;t.uvs.push(D*L+C,V*M+R);let J=1;e&&(J=4/4*(15/15),te.push(3)),t.colors.push(re*F[0]*J,re*F[1]*J,re*F[2]*J)}e&&te[0]+te[3]>=te[1]+te[2]?t.indices.push(k,k+3,k+2,k,k+1,k+3):t.indices.push(k,k+1,k+2,k+2,k+1,k+3)}}var yOe=(i,e,t,n,r=[],s={})=>{let c={sx:.5,sy:.5,sz:.5,positions:[],normals:[],colors:[],uvs:[],t_positions:[],t_normals:[],t_colors:[],t_uvs:[],indices:[],tiles:{}};for(let[u,p]of i.entries()){let v=p[r[u]]??p[0];if(!v)continue;let _=null,b=null;for(let g of["x","y","z"])g in v&&(_?_=Nhe(_,N7(g,-(v[g]??0))):_=N7(g,-(v[g]??0)));_&&(b=[8,8,8],b=VA(b,g1(_,b)));let y=v.ao??!0;for(let g of v.elements??[])_Oe(g,y,c,_,b,e,t,s)}let d=c.positions.length/3;for(let u=0;u<c.t_positions.length/12;u++)c.indices.push(d,d+1,d+2,d+2,d+1,d+3,d,d+2,d+1,d+2,d+3,d+1),d+=4;return c.positions.push(...c.t_positions),c.normals.push(...c.t_normals),c.colors.push(...c.t_colors),c.uvs.push(...c.t_uvs),delete c.t_positions,delete c.t_normals,delete c.t_colors,delete c.t_uvs,c.positions=new Float32Array(c.positions),c.normals=new Float32Array(c.normals),c.colors=new Float32Array(c.colors),c.uvs=new Float32Array(c.uvs),c},bOe=(...i)=>{let t={geometry:yOe(...i)},n=new it;return n.setAttribute("position",new ht(t.geometry.positions,3)),n.setAttribute("normal",new ht(t.geometry.normals,3)),n.setAttribute("color",new ht(t.geometry.colors,3)),n.setAttribute("uv",new ht(t.geometry.uvs,2)),n.setIndex(t.geometry.indices),n.name="block-geometry",n},zA=(i,...e)=>{let t=bOe(...e),n=new je(t,i);n.position.set(-.5,-.5,-.5);let r=new at;return r.add(n),r.rotation.set(0,-_t.degToRad(90),0,"ZYX"),globalThis.mesh=r,r},Dhe=(i,e)=>{i.position.set(e.x+.5,e.y+.5,e.z+.5)};f();m();h();yt();var Sp=async(i,e)=>{let t;if(!i&&!e){let{canvas:c}=await Ua(Wi);t=new mn(c)}else{if(i||(i=await f0(e,"skin")),!i)return;let{canvas:c}=await Ua(i);t=new mn(c)}t.magFilter=Qe,t.minFilter=Qe;let n=!1,s=xOe(40,16,n?-2:-3,-2,-2,n?3:4,12,4,64,64),o=new br;o.map=t,o.needsUpdate=!0;let a=new je(s,o),l=new at;return l.add(a),l};function xOe(i,e,t,n,r,s,o,a,l,c,d=!1){let u=t/16,p=n/16,v=r/16,_=(t+s)/16,b=(n+o)/16,y=(r+a)/16;d&&([u,_]=[_,u]);let g=[[u,p,v],[_,p,v],[_,b,v],[u,b,v],[u,p,y],[_,p,y],[_,b,y],[u,b,y]],w=i,x=i+a,E=i+a+s,A=i+a+s+s,C=i+a+s+a,R=i+a+s+a+s,L=e,M=e+a,k=e+a+o,F=[{vi:[5,4,0,1],uv:[x,L,E,M],n:[0,-1,0]},{vi:[2,3,7,6],uv:[E,M,A,L],n:[0,1,0]},{vi:[0,4,7,3],uv:[w,M,x,k],n:[-1,0,0]},{vi:[1,0,3,2],uv:[x,M,E,k],n:[0,0,-1]},{vi:[5,1,2,6],uv:[E,M,C,k],n:[1,0,0]},{vi:[4,5,6,7],uv:[C,M,R,k],n:[0,0,1]}],Z=[],U=[],H=[],Y=[];for(let te=0;te<F.length;te++){let re=F[te],ae=te*4,[j,D,V,J]=re.uv,ee=[[V/l,1-D/c],[j/l,1-D/c],[j/l,1-J/c],[V/l,1-J/c]],Q=d?[3,2,1,0]:[0,1,2,3],se=d?-re.n[0]:re.n[0];for(let oe=0;oe<4;oe++){let me=g[re.vi[Q[oe]]];Z.push(me[0],me[1],me[2]),U.push(ee[oe][0],ee[oe][1]),H.push(se,re.n[1],re.n[2])}Y.push(ae,ae+1,ae+2,ae,ae+2,ae+3)}let ce=new it;return ce.setAttribute("position",new qe(Z,3)),ce.setAttribute("uv",new qe(U,2)),ce.setAttribute("normal",new qe(H,3)),ce.setIndex(Y),ce}f();m();h();f();m();h();yt();f();m();h();f();m();h();var h0=class i{constructor(e,t,n,r,s="div"){this.parent=e,this.object=t,this.property=n,this._disabled=!1,this._hidden=!1,this.initialValue=this.getValue(),this.domElement=document.createElement("div"),this.domElement.classList.add("controller"),this.domElement.classList.add(r),this.$name=document.createElement("div"),this.$name.classList.add("name"),i.nextNameID=i.nextNameID||0,this.$name.id=`lil-gui-name-${++i.nextNameID}`,this.$widget=document.createElement(s),this.$widget.classList.add("widget"),this.$disable=this.$widget,this.domElement.appendChild(this.$name),this.domElement.appendChild(this.$widget),this.domElement.addEventListener("keydown",o=>o.stopPropagation()),this.domElement.addEventListener("keyup",o=>o.stopPropagation()),this.parent.children.push(this),this.parent.controllers.push(this),this.parent.$children.appendChild(this.domElement),this._listenCallback=this._listenCallback.bind(this),this.name(n)}name(e){return this._name=e,this.$name.innerHTML=e,this}onChange(e){return this._onChange=e,this}_callOnChange(){this.parent._callOnChange(this),this._onChange!==void 0&&this._onChange.call(this,this.getValue()),this._changed=!0}onFinishChange(e){return this._onFinishChange=e,this}_callOnFinishChange(){this._changed&&(this.parent._callOnFinishChange(this),this._onFinishChange!==void 0&&this._onFinishChange.call(this,this.getValue())),this._changed=!1}reset(){return this.setValue(this.initialValue),this._callOnFinishChange(),this}enable(e=!0){return this.disable(!e)}disable(e=!0){return e===this._disabled?this:(this._disabled=e,this.domElement.classList.toggle("disabled",e),this.$disable.toggleAttribute("disabled",e),this)}show(e=!0){return this._hidden=!e,this.domElement.style.display=this._hidden?"none":"",this}hide(){return this.show(!1)}options(e){let t=this.parent.add(this.object,this.property,e);return t.name(this._name),this.destroy(),t}min(e){return this}max(e){return this}step(e){return this}decimals(e){return this}listen(e=!0){return this._listening=e,this._listenCallbackID!==void 0&&(cancelAnimationFrame(this._listenCallbackID),this._listenCallbackID=void 0),this._listening&&this._listenCallback(),this}_listenCallback(){this._listenCallbackID=requestAnimationFrame(this._listenCallback);let e=this.save();e!==this._listenPrevValue&&this.updateDisplay(),this._listenPrevValue=e}getValue(){return this.object[this.property]}setValue(e){return this.object[this.property]=e,this._callOnChange(),this.updateDisplay(),this}updateDisplay(){return this}load(e){return this.setValue(e),this._callOnFinishChange(),this}save(){return this.getValue()}destroy(){this.listen(!1),this.parent.children.splice(this.parent.children.indexOf(this),1),this.parent.controllers.splice(this.parent.controllers.indexOf(this),1),this.parent.$children.removeChild(this.domElement)}},HA=class extends h0{constructor(e,t,n){super(e,t,n,"boolean","label"),this.$input=document.createElement("input"),this.$input.setAttribute("type","checkbox"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$widget.appendChild(this.$input),this.$input.addEventListener("change",()=>{this.setValue(this.$input.checked),this._callOnFinishChange()}),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.checked=this.getValue(),this}};function qA(i){let e,t;return(e=i.match(/(#|0x)?([a-f0-9]{6})/i))?t=e[2]:(e=i.match(/rgb\(\s*(\d*)\s*,\s*(\d*)\s*,\s*(\d*)\s*\)/))?t=parseInt(e[1]).toString(16).padStart(2,0)+parseInt(e[2]).toString(16).padStart(2,0)+parseInt(e[3]).toString(16).padStart(2,0):(e=i.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i))&&(t=e[1]+e[1]+e[2]+e[2]+e[3]+e[3]),t?"#"+t:!1}var wOe={isPrimitive:!0,match:i=>typeof i=="string",fromHexString:qA,toHexString:qA},Mp={isPrimitive:!0,match:i=>typeof i=="number",fromHexString:i=>parseInt(i.substring(1),16),toHexString:i=>"#"+i.toString(16).padStart(6,0)},EOe={isPrimitive:!1,match:i=>Array.isArray(i),fromHexString(i,e,t=1){let n=Mp.fromHexString(i);e[0]=(n>>16&255)/255*t,e[1]=(n>>8&255)/255*t,e[2]=(n&255)/255*t},toHexString([i,e,t],n=1){n=255/n;let r=i*n<<16^e*n<<8^t*n<<0;return Mp.toHexString(r)}},SOe={isPrimitive:!1,match:i=>Object(i)===i,fromHexString(i,e,t=1){let n=Mp.fromHexString(i);e.r=(n>>16&255)/255*t,e.g=(n>>8&255)/255*t,e.b=(n&255)/255*t},toHexString({r:i,g:e,b:t},n=1){n=255/n;let r=i*n<<16^e*n<<8^t*n<<0;return Mp.toHexString(r)}},AOe=[wOe,Mp,EOe,SOe];function MOe(i){return AOe.find(e=>e.match(i))}var GA=class extends h0{constructor(e,t,n,r){super(e,t,n,"color"),this.$input=document.createElement("input"),this.$input.setAttribute("type","color"),this.$input.setAttribute("tabindex",-1),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$text=document.createElement("input"),this.$text.setAttribute("type","text"),this.$text.setAttribute("spellcheck","false"),this.$text.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this.$display.appendChild(this.$input),this.$widget.appendChild(this.$display),this.$widget.appendChild(this.$text),this._format=MOe(this.initialValue),this._rgbScale=r,this._initialValueHexString=this.save(),this._textFocused=!1,this.$input.addEventListener("input",()=>{this._setValueFromHexString(this.$input.value)}),this.$input.addEventListener("blur",()=>{this._callOnFinishChange()}),this.$text.addEventListener("input",()=>{let s=qA(this.$text.value);s&&this._setValueFromHexString(s)}),this.$text.addEventListener("focus",()=>{this._textFocused=!0,this.$text.select()}),this.$text.addEventListener("blur",()=>{this._textFocused=!1,this.updateDisplay(),this._callOnFinishChange()}),this.$disable=this.$text,this.updateDisplay()}reset(){return this._setValueFromHexString(this._initialValueHexString),this}_setValueFromHexString(e){if(this._format.isPrimitive){let t=this._format.fromHexString(e);this.setValue(t)}else this._format.fromHexString(e,this.getValue(),this._rgbScale),this._callOnChange(),this.updateDisplay()}save(){return this._format.toHexString(this.getValue(),this._rgbScale)}load(e){return this._setValueFromHexString(e),this._callOnFinishChange(),this}updateDisplay(){return this.$input.value=this._format.toHexString(this.getValue(),this._rgbScale),this._textFocused||(this.$text.value=this.$input.value.substring(1)),this.$display.style.backgroundColor=this.$input.value,this}},Ap=class extends h0{constructor(e,t,n){super(e,t,n,"function"),this.$button=document.createElement("button"),this.$button.appendChild(this.$name),this.$widget.appendChild(this.$button),this.$button.addEventListener("click",r=>{r.preventDefault(),this.getValue().call(this.object),this._callOnChange()}),this.$button.addEventListener("touchstart",()=>{},{passive:!0}),this.$disable=this.$button}},WA=class extends h0{constructor(e,t,n,r,s,o){super(e,t,n,"number"),this._initInput(),this.min(r),this.max(s);let a=o!==void 0;this.step(a?o:this._getImplicitStep(),a),this.updateDisplay()}decimals(e){return this._decimals=e,this.updateDisplay(),this}min(e){return this._min=e,this._onUpdateMinMax(),this}max(e){return this._max=e,this._onUpdateMinMax(),this}step(e,t=!0){return this._step=e,this._stepExplicit=t,this}updateDisplay(){let e=this.getValue();if(this._hasSlider){let t=(e-this._min)/(this._max-this._min);t=Math.max(0,Math.min(t,1)),this.$fill.style.width=t*100+"%"}return this._inputFocused||(this.$input.value=this._decimals===void 0?e:e.toFixed(this._decimals)),this}_initInput(){this.$input=document.createElement("input"),this.$input.setAttribute("type","text"),this.$input.setAttribute("aria-labelledby",this.$name.id),window.matchMedia("(pointer: coarse)").matches&&(this.$input.setAttribute("type","number"),this.$input.setAttribute("step","any")),this.$widget.appendChild(this.$input),this.$disable=this.$input;let t=()=>{let w=parseFloat(this.$input.value);isNaN(w)||(this._stepExplicit&&(w=this._snap(w)),this.setValue(this._clamp(w)))},n=w=>{let x=parseFloat(this.$input.value);isNaN(x)||(this._snapClampSetValue(x+w),this.$input.value=this.getValue())},r=w=>{w.key==="Enter"&&this.$input.blur(),w.code==="ArrowUp"&&(w.preventDefault(),n(this._step*this._arrowKeyMultiplier(w))),w.code==="ArrowDown"&&(w.preventDefault(),n(this._step*this._arrowKeyMultiplier(w)*-1))},s=w=>{this._inputFocused&&(w.preventDefault(),n(this._step*this._normalizeMouseWheel(w)))},o=!1,a,l,c,d,u,p=5,v=w=>{a=w.clientX,l=c=w.clientY,o=!0,d=this.getValue(),u=0,window.addEventListener("mousemove",_),window.addEventListener("mouseup",b)},_=w=>{if(o){let x=w.clientX-a,E=w.clientY-l;Math.abs(E)>p?(w.preventDefault(),this.$input.blur(),o=!1,this._setDraggingStyle(!0,"vertical")):Math.abs(x)>p&&b()}if(!o){let x=w.clientY-c;u-=x*this._step*this._arrowKeyMultiplier(w),d+u>this._max?u=this._max-d:d+u<this._min&&(u=this._min-d),this._snapClampSetValue(d+u)}c=w.clientY},b=()=>{this._setDraggingStyle(!1,"vertical"),this._callOnFinishChange(),window.removeEventListener("mousemove",_),window.removeEventListener("mouseup",b)},y=()=>{this._inputFocused=!0},g=()=>{this._inputFocused=!1,this.updateDisplay(),this._callOnFinishChange()};this.$input.addEventListener("input",t),this.$input.addEventListener("keydown",r),this.$input.addEventListener("wheel",s,{passive:!1}),this.$input.addEventListener("mousedown",v),this.$input.addEventListener("focus",y),this.$input.addEventListener("blur",g)}_initSlider(){this._hasSlider=!0,this.$slider=document.createElement("div"),this.$slider.classList.add("slider"),this.$fill=document.createElement("div"),this.$fill.classList.add("fill"),this.$slider.appendChild(this.$fill),this.$widget.insertBefore(this.$slider,this.$input),this.domElement.classList.add("hasSlider");let e=(g,w,x,E,A)=>(g-w)/(x-w)*(A-E)+E,t=g=>{let w=this.$slider.getBoundingClientRect(),x=e(g,w.left,w.right,this._min,this._max);this._snapClampSetValue(x)},n=g=>{this._setDraggingStyle(!0),t(g.clientX),window.addEventListener("mousemove",r),window.addEventListener("mouseup",s)},r=g=>{t(g.clientX)},s=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",s)},o=!1,a,l,c=g=>{g.preventDefault(),this._setDraggingStyle(!0),t(g.touches[0].clientX),o=!1},d=g=>{g.touches.length>1||(this._hasScrollBar?(a=g.touches[0].clientX,l=g.touches[0].clientY,o=!0):c(g),window.addEventListener("touchmove",u,{passive:!1}),window.addEventListener("touchend",p))},u=g=>{if(o){let w=g.touches[0].clientX-a,x=g.touches[0].clientY-l;Math.abs(w)>Math.abs(x)?c(g):(window.removeEventListener("touchmove",u),window.removeEventListener("touchend",p))}else g.preventDefault(),t(g.touches[0].clientX)},p=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("touchmove",u),window.removeEventListener("touchend",p)},v=this._callOnFinishChange.bind(this),_=400,b,y=g=>{if(Math.abs(g.deltaX)<Math.abs(g.deltaY)&&this._hasScrollBar)return;g.preventDefault();let x=this._normalizeMouseWheel(g)*this._step;this._snapClampSetValue(this.getValue()+x),this.$input.value=this.getValue(),clearTimeout(b),b=setTimeout(v,_)};this.$slider.addEventListener("mousedown",n),this.$slider.addEventListener("touchstart",d,{passive:!1}),this.$slider.addEventListener("wheel",y,{passive:!1})}_setDraggingStyle(e,t="horizontal"){this.$slider&&this.$slider.classList.toggle("active",e),document.body.classList.toggle("lil-gui-dragging",e),document.body.classList.toggle(`lil-gui-${t}`,e)}_getImplicitStep(){return this._hasMin&&this._hasMax?(this._max-this._min)/1e3:.1}_onUpdateMinMax(){!this._hasSlider&&this._hasMin&&this._hasMax&&(this._stepExplicit||this.step(this._getImplicitStep(),!1),this._initSlider(),this.updateDisplay())}_normalizeMouseWheel(e){let{deltaX:t,deltaY:n}=e;return Math.floor(e.deltaY)!==e.deltaY&&e.wheelDelta&&(t=0,n=-e.wheelDelta/120,n*=this._stepExplicit?1:10),t+-n}_arrowKeyMultiplier(e){let t=this._stepExplicit?1:10;return e.shiftKey?t*=10:e.altKey&&(t/=10),t}_snap(e){let t=Math.round(e/this._step)*this._step;return parseFloat(t.toPrecision(15))}_clamp(e){return e<this._min&&(e=this._min),e>this._max&&(e=this._max),e}_snapClampSetValue(e){this.setValue(this._clamp(this._snap(e)))}get _hasScrollBar(){let e=this.parent.root.$children;return e.scrollHeight>e.clientHeight}get _hasMin(){return this._min!==void 0}get _hasMax(){return this._max!==void 0}},jA=class extends h0{constructor(e,t,n,r){super(e,t,n,"option"),this.$select=document.createElement("select"),this.$select.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this._values=Array.isArray(r)?r:Object.values(r),this._names=Array.isArray(r)?r:Object.keys(r),this._names.forEach(s=>{let o=document.createElement("option");o.innerHTML=s,this.$select.appendChild(o)}),this.$select.addEventListener("change",()=>{this.setValue(this._values[this.$select.selectedIndex]),this._callOnFinishChange()}),this.$select.addEventListener("focus",()=>{this.$display.classList.add("focus")}),this.$select.addEventListener("blur",()=>{this.$display.classList.remove("focus")}),this.$widget.appendChild(this.$select),this.$widget.appendChild(this.$display),this.$disable=this.$select,this.updateDisplay()}updateDisplay(){let e=this.getValue(),t=this._values.indexOf(e);return this.$select.selectedIndex=t,this.$display.innerHTML=t===-1?e:this._names[t],this}},$A=class extends h0{constructor(e,t,n){super(e,t,n,"string"),this.$input=document.createElement("input"),this.$input.setAttribute("type","text"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$input.addEventListener("input",()=>{this.setValue(this.$input.value)}),this.$input.addEventListener("keydown",r=>{r.code==="Enter"&&this.$input.blur()}),this.$input.addEventListener("blur",()=>{this._callOnFinishChange()}),this.$widget.appendChild(this.$input),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.value=this.getValue(),this}},kOe=`.lil-gui {
4052
4052
  font-family: var(--font-family);
4053
4053
  font-size: var(--font-size);
4054
4054
  line-height: 1;
@@ -28828,7 +28828,7 @@ void main() {
28828
28828
 
28829
28829
  #include <tonemapping_fragment>
28830
28830
  #include <${bGe>=154?"colorspace_fragment":"encodings_fragment"}>
28831
- }`})}},LT=class{constructor(e){this.worldRenderer=e}points;clock=new Is;enabled=!1;currentTime;enable(){this.enabled||(this.enabled=!0,this.updateVisibility())}disable(){this.enabled&&(this.enabled=!1,this.removeStars())}toggle(){return this.enabled?this.disable():this.enable(),this.enabled}enablementCheck=()=>this.currentTime?this.currentTime>13500&&this.currentTime<23e3:!1;render=e=>{this.points&&(this.points.position.set(0,0,0),this.points.material.uniforms.time.value=this.clock.getElapsedTime()*.2)};updateTimeOfDay(e){this.currentTime=e,this.enabled&&this.updateVisibility()}updateVisibility(){if(!this.enabled)return;let e=this.enablementCheck?.()??!1;e&&!this.points?this.createStars():!e&&this.points&&this.removeStars()}createStars(){if(this.points)return;let e=80,t=50,n=7e3,r=7,s=10,o=new it,a=b=>new K().setFromSpherical(new x5(b,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)),l=[],c=[],d=Array.from({length:n},()=>(.5+.5*Math.random())*r),u=new Fe,p=e+t,v=t/n;for(let b=0;b<n;b++)p-=v*Math.random(),l.push(...a(p).toArray()),u.setHSL(b/n,s,.9),c.push(u.r,u.g,u.b);o.setAttribute("position",new qe(l,3)),o.setAttribute("color",new qe(c,3)),o.setAttribute("size",new qe(d,1));let _=new PT;_.blending=Ci,_.depthTest=!0,_.depthWrite=!1,_.transparent=!0,this.points=new tr(o,_),this.points.renderOrder=-1,this.worldRenderer.scene.add(this.points)}dispose(){this.removeStars()}removeStars(){this.points&&(this.points.geometry.dispose(),this.points.material.dispose(),this.worldRenderer.scene.remove(this.points),this.points=void 0)}},E3e={id:"starfield",controller:LT,enabledDefault:!0,cannotBeDisabled:!0};var S3e={starfield:E3e,futuristicReveal:w3e,rain:b3e,cameraBobbing:v3e,blockBreakParticles:p3e};f();m();h();f();m();h();var BT=()=>({longRenderTime:!1,constantLongRenderTime:!1,tooManyEntities:!1,tooManyTextures:!1,unknownReason:!1});f();m();h();f();m();h();var r2=class{constructor(e){this.factors=e}renderTimeHistory=[];onFrame(e){this.pushRenderTime(e.totalMs),this.recompute(e)}pushRenderTime(e){this.renderTimeHistory.push(e),this.renderTimeHistory.length>24&&this.renderTimeHistory.shift()}recompute(e){let t=e.fps>0&&e.fps<=45,n=Math.max(0,e.totalMs-e.entitiesMs),r=e.totalMs>=30,s=this.renderTimeHistory.length,o=this.renderTimeHistory.filter(p=>p>=30).length,a=s>=8&&o/s>=.65,l=e.loadedTextureCount>=100,c=t&&e.entitiesMs>=8&&n<=20,u=t&&!(r||a||c||l);this.factors.longRenderTime=r,this.factors.constantLongRenderTime=a,this.factors.tooManyEntities=c,this.factors.tooManyTextures=l,this.factors.unknownReason=u}reset(){this.renderTimeHistory.length=0,this.factors.longRenderTime=!1,this.factors.constantLongRenderTime=!1,this.factors.tooManyEntities=!1,this.factors.tooManyTextures=!1,this.factors.unknownReason=!1}};f();m();h();var MGe=[{key:"longRenderTime",code:"LR"},{key:"constantLongRenderTime",code:"CLR"},{key:"tooManyEntities",code:"ENT"},{key:"tooManyTextures",code:"TEX"},{key:"unknownReason",code:"UNK"}];function NT(i){let e=MGe.filter(({key:t})=>i[t]).map(({code:t})=>t);return e.length>0?e.join("+"):""}var _d=class _d extends O7{constructor(t,n,r){if(!r.resourcesManager)throw new Error("resourcesManager is required in displayOptions");super(r.resourcesManager,r,n);this.renderer=t;this.initOptions=n;this.displayOptions=r;this.performanceMonitor=new r2(this.reactiveState.world.instabilityFactors),this.renderer=t,r.rendererState.renderer=_d.getRendererInfo(t)??"...",this.chunkMeshManager=new n2(this,this.scene,this.material,this.worldSizeParams.worldHeight,this.viewDistance),this.onRenderDistanceChanged=s=>{this.chunkMeshManager.updateViewDistance(s)},this.cursorBlock=new U_(this),this.holdingBlock=Kp(this),this.holdingBlockLeft=Kp(this,!0);for(let s of Object.values(S3e))this.registerModule(s);this.skyboxRenderer=new $_(this.realScene,!1,null),this.skyboxRenderer.init(),this.addDebugOverlay(),this.resetScene(),this.init(),this.soundSystem=new F_(this),this.cameraShake=new z_(this,this.onRender),this.media=new H_(this),this.fireworksLegacy=new W_(this),this.waypoints=new G_(this),this.cinimaticScript=new j_(this,(s,o,a)=>this.setCinimaticCamera(s,o,a),s=>this.setCinimaticFov(s),()=>({position:new ut(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),yaw:this.cameraShake.getBaseRotation().yaw,pitch:this.cameraShake.getBaseRotation().pitch,fov:this.camera.fov})),this.fireworks=new X_(this.realScene,this.sceneOrigin),this.renderUpdateEmitter.on("chunkFinished",s=>{this.finishChunk(s)}),this.worldSwitchActions(),this.initializeModules()}outputFormat="threeJs";isShaderCubeBlocksEnabled(){return this.worldRendererConfig.shaderCubeBlocks===!0&&!!this.renderer?.capabilities?.isWebGL2}chunkMeshManager;get sectionObjects(){return this.chunkMeshManager.sectionObjects}chunkTextures=new Map;signsCache=new Map;cameraSectionPos=new ut(0,0,0);holdingBlock;holdingBlockLeft;scene=new _r;get realScene(){return this.scene}ambientLight=new vo(13421772);directionalLight=new ss(16777215,.5);entities=new D_(this,globalThis.mcData);performanceMonitor;cameraGroupVr;material=new st({vertexColors:!0,transparent:!0,alphaTest:.1});itemsTexture;cursorBlock;onRender=[];lastRenderTime=0;animatedFov=0;lastFovAnimTime=0;cameraShake;cameraContainer;media;get waitingChunksToDisplay(){return this.chunkMeshManager.waitingChunksToDisplay}waypoints;cinimaticScript;camera;renderTimeAvg=0;pendingSectionUpdates=new Map;pendingSectionBufferStartTimes=new Map;get estimatedMemoryUsage(){return this.chunkMeshManager.getEstimatedMemoryUsage().total}modules={};sectionsOffsetsAnimations={};fountains=[];fireworksLegacy;DEBUG_RAYCAST=!1;skyboxRenderer;fireworks;sceneOrigin=new Y_(this.scene);cameraWorldPos={x:0,y:0,z:0};_cameraPositionAccessWarned=!1;_tmpCameraPos=new K;currentPosTween;currentRotTween;_tpDirection=new K;_tpPitchQuat=new Ut;_tpYawQuat=new Ut;_tpFinalQuat=new Ut;_tpScenePos=new K;_tpAxisX=new K(1,0,0);_tpAxisY=new K(0,1,0);_tpRaycaster=new va;_tpChunkWorldPos=new K;get tilesRendered(){return this.chunkMeshManager.getTotalTiles()}get blocksRendered(){return this.chunkMeshManager.getTotalBlocks()}registerModule(t){if(t.id in this.modules){console.warn(`Module ${t.id} is already registered`);return}let n=new t.controller(this),r={manifest:t,controller:n,enabled:!1,toggle:()=>this.toggleModule(t.id)};this.modules[t.id]=r,t.enabledDefault&&this.toggleModule(t.id,!0)}enableModule(t){let n=this.modules[t];if(!n){console.warn(`Module ${t} not found`);return}n.enabled||(n.enabled=!0,n.controller.enable(),n.controller.render&&this.onRender.push(n.controller.render))}disableModule(t){let n=this.modules[t];if(!n){console.warn(`Module ${t} not found`);return}if(n.manifest.cannotBeDisabled){console.warn(`Module ${t} cannot be disabled`);return}if(n.enabled&&(n.enabled=!1,n.controller.disable(),n.controller.render)){let r=this.onRender.indexOf(n.controller.render);r>-1&&this.onRender.splice(r,1)}}toggleModule(t,n){let r=this.modules[t];if(!r)return console.warn(`Module ${t} not found`),!1;let s=n!==void 0?n:!r.enabled;if(s===r.enabled)return r.enabled;if(!s&&r.manifest.cannotBeDisabled)return console.warn(`Module ${t} cannot be disabled`),!0;if(r.enabled=s,s)r.controller.enable(),r.controller.render&&!this.onRender.includes(r.controller.render)&&this.onRender.push(r.controller.render);else if(r.controller.disable(),r.controller.render){let o=this.onRender.indexOf(r.controller.render);o>-1&&this.onRender.splice(o,1)}return s}disposeModules(){for(let t of Object.values(this.modules))t.controller.dispose();this.modules={}}initializeModules(){this.updateModulesFromConfig()}getModule(t){return this.modules[t]?.controller}anyModuleRequiresHeightmap(){return Object.values(this.modules).some(t=>t.enabled&&t.manifest.requiresHeightmap)}get cameraObject(){return this.cameraGroupVr??this.cameraContainer}_wrapCameraPositionWithWarning(){let t=this.camera.position,n=this,r=20,s=(l,c,d)=>Math.abs(l)>r||Math.abs(c)>r||Math.abs(d)>r,o=()=>{!n._cameraPositionAccessWarned&&typeof process<"u"},a=new Proxy(t,{set(l,c,d){return(c==="x"||c==="y"||c==="z")&&typeof d=="number"&&Math.abs(d)>r&&o(),l[c]=d,!0},get(l,c,d){let u=l[c];return c==="set"?function(p,v,_){return s(p,v,_)&&o(),l.set(p,v,_)}:c==="setX"||c==="setY"||c==="setZ"?function(p){return Math.abs(p)>r&&o(),l[c](p)}:c==="copy"?function(p){return s(p.x,p.y,p.z)&&o(),l.copy(p)}:typeof u=="function"?u.bind(l):u}});Object.defineProperty(this.camera,"position",{value:a,configurable:!0,enumerable:!0})}worldSwitchActions(){this.onWorldSwitched.push(()=>{this.protocolCustomBlocks.clear(),this.sectionsOffsetsAnimations={},this.waypoints.clear(),this.cinimaticScript.stopScript(),this.fireworks.clear()})}downloadWorldGeometry(){wT(this,new K(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),this.cameraShake.getBaseRotation(),"world-geometry.json")}updateEntity(t,n=!1){let r={rotation:{head:{x:t.headPitch??t.pitch,y:t.headYaw,z:0}}};n?this.entities.updateEntityPosition(t,!1,r):this.entities.update(t,r)}updatePlayerEntity(t){this.entities.handlePlayerEntity(t)}resetScene(){this.sceneOrigin.update(0,0,0),this.cameraWorldPos.x=0,this.cameraWorldPos.y=0,this.cameraWorldPos.z=0,this.scene.matrixAutoUpdate=!1,this.scene.background=new Fe(this.initOptions.config.sceneBackground),this.scene.add(this.ambientLight),this.directionalLight.position.set(1,1,.5).normalize(),this.directionalLight.castShadow=!0,this.scene.add(this.directionalLight);let t=this.renderer.getSize(new Ue);this.camera=new Yt(75,t.x/t.y,.1,1e3),this._wrapCameraPositionWithWarning(),this.cameraContainer=new At,this.cameraContainer.add(this.camera),this.scene.add(this.cameraContainer)}watchReactivePlayerState(){super.watchReactivePlayerState(),this.onReactivePlayerStateUpdated("inWater",t=>{this.skyboxRenderer.updateWaterState(t,this.playerStateReactive.waterBreathing)}),this.onReactivePlayerStateUpdated("waterBreathing",t=>{this.skyboxRenderer.updateWaterState(this.playerStateReactive.inWater,t)}),this.onReactivePlayerStateUpdated("ambientLight",t=>{t&&(this.ambientLight.intensity=t)}),this.onReactivePlayerStateUpdated("directionalLight",t=>{t&&(this.directionalLight.intensity=t)}),this.onReactivePlayerStateUpdated("lookingAtBlock",t=>{this.cursorBlock.setHighlightCursorBlock(t?new ut(t.x,t.y,t.z):null,t?.shapes)}),this.onReactivePlayerStateUpdated("diggingBlock",t=>{this.cursorBlock.updateBreakAnimation(t?{x:t.x,y:t.y,z:t.z}:void 0,t?.stage??null,t?.mergedShape)}),this.onReactivePlayerStateUpdated("perspective",t=>{let n=new ut(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z);this.updateCamera(n,this.cameraShake.getBaseRotation().yaw,this.cameraShake.getBaseRotation().pitch)})}watchReactiveConfig(){super.watchReactiveConfig(),this.onReactiveConfigUpdated("showChunkBorders",n=>{this.updateShowChunksBorder(n)}),this.onReactiveConfigUpdated("defaultSkybox",n=>{this.skyboxRenderer.updateDefaultSkybox(n)}),this.onReactiveConfigUpdated("shaderCubeDebugMode",()=>{this.chunkMeshManager.syncCubeShaderUniforms()}),this.onReactiveConfigUpdated("futuristicReveal",()=>{this.updateModulesFromConfig()});let t=this.displayOptions.inWorldRenderingConfig.handRenderer;this.onReactiveConfigUpdated("handRenderer",n=>{if(n===t)return;t=n;let r=this.holdingBlock.ready,s=this.holdingBlockLeft.ready;this.holdingBlock.dispose(),this.holdingBlockLeft.dispose(),this.holdingBlock=Kp(this),this.holdingBlockLeft=Kp(this,!0),r&&(this.holdingBlock.ready=!0,this.holdingBlock.updateItem()),s&&(this.holdingBlockLeft.ready=!0,this.holdingBlockLeft.updateItem())}),this.onReactiveConfigUpdated("*",()=>{this.updateModulesFromConfig()}),this.updateModulesFromConfig()}updateModulesFromConfig(){let{moduleStates:t}=this.worldRendererConfig;for(let[n,r]of Object.entries(this.modules)){let s=t[n];if(s==="enabled"){r.enabled||this.toggleModule(n,!0);continue}if(s==="disabled"){r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1);continue}if(s==="auto"||s===void 0)if(r.controller.autoEnableCheck){let o=r.controller.autoEnableCheck();o&&!r.enabled?this.toggleModule(n,!0):!o&&r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1)}else{let o=r.manifest.enabledDefault??!1;o&&!r.enabled?this.toggleModule(n,!0):!o&&r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1)}}}changeHandSwingingState(t,n=!1){let r=n?this.holdingBlockLeft:this.holdingBlock;t?r.startSwing():r.stopSwing()}async updateAssetsData(){let t=this.resourcesManager.currentResources,n=this.material.map,r=this.itemsTexture,s=u0(t.blocksAtlasImage);s.needsUpdate=!0,s.flipY=!1,this.material.map=s,this.chunkMeshManager.syncCubeShaderUniforms();let o=u0(t.itemsAtlasImage);o.needsUpdate=!0,o.flipY=!1,this.itemsTexture=o,n&&n.dispose(),r&&r.dispose(),await super.updateAssetsData(),this.onAllTexturesLoaded(),Object.keys(this.loadedChunks).length>0&&(console.log("rerendering chunks because of texture update"),this.rerenderAllChunks())}onAllTexturesLoaded(){this.holdingBlock.ready=!0,this.holdingBlock.updateItem(),this.holdingBlockLeft.ready=!0,this.holdingBlockLeft.updateItem()}changeBackgroundColor(t){this.realScene.background=new Fe(t[0],t[1],t[2])}changeCardinalLight(t){this.worldRendererConfig.cardinalLight=t}timeUpdated(t){let n=this.getModule("starfield");n?.updateTimeOfDay&&n.updateTimeOfDay(t),this.skyboxRenderer.updateTime(t)}biomeUpdated(t){t?.temperature!==void 0&&this.skyboxRenderer.updateTemperature(t.temperature)}biomeReset(){this.skyboxRenderer.updateTemperature(pT)}getItemRenderData(t,n){return V2e(t,n,this.resourcesManager,this.playerStateReactive)}async demoModel(){let t=cursorBlockRel(0,1,0).position,n=await Sp();Dhe(n,t);let r=new _o(n,16776960);n.add(r),this.realScene.add(n)}demoItem(){let t=cursorBlockRel(0,1,0).position,{mesh:n}=this.entities.getItemMesh({itemId:541},{});n.position.set(t.x+.5,t.y+.5,t.z+.5);let r=new _o(n,16776960);n.add(r),this.realScene.add(n)}debugOverlayAdded=!1;addDebugOverlay(){if(this.debugOverlayAdded)return;this.debugOverlayAdded=!0;let t=P7("debug-overlay",80,0,void 0,{className:C7});setInterval(()=>{if(t.setVisibility(this.displayAdvancedStats),this.displayAdvancedStats){let n=l=>new Intl.NumberFormat("en-US",{}).format(l),r=l=>new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(l),s="";s+=`TE: ${n(this.renderer.info.memory.textures)} `,s+=`F: ${r(this.tilesRendered)} `,s+=`B: ${r(this.blocksRendered)} `,s+=`MEM: ${this.chunkMeshManager.getEstimatedMemoryUsage().total} `;let o=this.chunkMeshManager.getStats();s+=`POOL: ${o.activeCount}/${o.poolSize} `;let a=NT(this.reactiveState.world.instabilityFactors);a&&(s+=`PF: ${a} `),t.updateText(s),this.backendInfoReport=s}},200)}updatePosDataChunk(t){let n=this.sectionObjects[t];if(!n)return;let[r,s,o]=t.split(",").map(d=>Math.floor(+d/16)),l=500-(Math.abs(r-this.cameraSectionPos.x)+Math.abs(s-this.cameraSectionPos.y)+Math.abs(o-this.cameraSectionPos.z)),c=n.mesh??n.shaderMesh??n.children.find(d=>d.name==="mesh"||d.name==="shaderMesh");c&&(c.renderOrder=l)}updateViewerPosition(t){this.viewerChunkPosition=t}cameraSectionPositionUpdate(){for(let t in this.sectionObjects)this.sectionObjects[t]&&this.updatePosDataChunk(t)}getDir(t,n){return t===n?0:t<n?1:-1}finishChunk(t){this.chunkMeshManager.finishChunkDisplay(t)}applyPendingSectionUpdates(){if(this.pendingSectionUpdates.size===0)return;let t=performance.now(),n=this.getSectionHeight(),r=[];for(let s of this.pendingSectionUpdates.keys()){let o=this.pendingSectionBufferStartTimes.get(s)??t;if(t-o<_d.MAX_SECTION_UPDATE_BUFFER_MS){let[l,c,d]=s.split(",").map(Number),u=[`${l-16},${c},${d}`,`${l+16},${c},${d}`,`${l},${c-n},${d}`,`${l},${c+n},${d}`,`${l},${c},${d-16}`,`${l},${c},${d+16}`],p=!1;for(let v of u)if(this.sectionsWaiting.has(v)&&!this.pendingSectionUpdates.has(v)&&this.sectionObjects[v]){p=!0;break}if(p)continue}r.push(s)}if(r.length!==0)for(let s of r){let o=this.pendingSectionUpdates.get(s);this.pendingSectionUpdates.delete(s),this.pendingSectionBufferStartTimes.delete(s);let a=o.key.split(","),l=`${a[0]},${a[2]}`;if(!this.loadedChunks[l]||!this.active){this.chunkMeshManager.releaseSection(o.key);continue}if(!this.chunkMeshManager.sectionHasRenderableContent(o.geometry)){this.chunkMeshManager.releaseSection(o.key);continue}this.chunkMeshManager.updateSection(o.key,o.geometry),this.updatePosDataChunk(o.key)}}clearPendingSectionUpdatesForChunk(t,n){for(let r of[...this.pendingSectionUpdates.keys()])r.startsWith(`${t},`)&&r.endsWith(`,${n}`)&&(this.pendingSectionUpdates.delete(r),this.pendingSectionBufferStartTimes.delete(r))}handleWorkerMessage(t){if(t.type==="geometry"){let n=t.key.split(","),r=`${n[0]},${n[2]}`;if(!this.loadedChunks[r]||!this.active){this.pendingSectionUpdates.delete(t.key),this.pendingSectionBufferStartTimes.delete(t.key);return}if(this.sectionObjects[t.key]){this.pendingSectionUpdates.set(t.key,t),this.pendingSectionBufferStartTimes.has(t.key)||this.pendingSectionBufferStartTimes.set(t.key,performance.now());return}if(!this.chunkMeshManager.sectionHasRenderableContent(t.geometry)){this.chunkMeshManager.releaseSection(t.key);return}this.chunkMeshManager.updateSection(t.key,t.geometry),this.updatePosDataChunk(t.key)}}getSignTexture(t,n,r,s=!1){let o=m1(t),a=this.chunkTextures.get(`${o[0]},${o[1]}`);a||(a={},this.chunkTextures.set(`${o[0]},${o[1]}`,a));let l=`${t.x},${t.y},${t.z}`;if(a[l])return a[l];let c=(0,k3e.default)(this.version),d=R7(n,r,c);if(!d)return;let u=new Gt(d);return u.magFilter=Qe,u.minFilter=Qe,u.needsUpdate=!0,a[l]=u,u}getCameraPosition(t){return(t??this._tmpCameraPos).set(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z)}getSectionCameraPosition(){let t=this.getCameraPosition();return new ut(Math.floor(t.x/16),Math.floor(t.y/16),Math.floor(t.z/16))}updateCameraSectionPos(){let t=this.getSectionCameraPosition();this.cameraSectionPos.equals(t)||(this.cameraSectionPos=t,this.cameraSectionPositionUpdate())}setFirstPersonCamera(t,n,r){let s=this.playerStateReactive.eyeHeight;this.updateCamera(t?.offset(0,s,0)??null,n,r),this.updateCameraSectionPos()}getThirdPersonCamera(t,n,r){t??=new K(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z);let s=this.playerStateReactive.perspective==="third_person_back",o=4,a=this._tpDirection.set(0,0,-1),l=this._tpPitchQuat.setFromAxisAngle(this._tpAxisX,r),c=this._tpYawQuat.setFromAxisAngle(this._tpAxisY,n),d=this._tpFinalQuat.multiplyQuaternions(c,l);a.applyQuaternion(d),s&&a.multiplyScalar(-1),this.DEBUG_RAYCAST&&this.debugRaycast(t,a,o);let u=this._tpScenePos.set(this.sceneOrigin.toSceneX(t.x),this.sceneOrigin.toSceneY(t.y),this.sceneOrigin.toSceneZ(t.z)),p=this._tpRaycaster;p.set(u,a),p.far=o;let v=80,_=v*v,b=t.x,y=t.y,g=t.z,w=[];for(let R of Object.values(this.sectionObjects)){if(R.name!=="chunk"||!R.visible||R.worldX===void 0)continue;let L=R.worldX-b,M=R.worldY-y,k=R.worldZ-g;if(L*L+M*M+k*k>_)continue;let F=R.children.find(Z=>Z.name==="mesh"||Z.name==="shaderMesh");F&&w.push(F)}let x=p.intersectObjects(w,!1),E=o;x.length>0&&(E=Math.max(.5,x[0].distance-.2));let A=this.chunkMeshManager.raycastShaderSectionAABBs(t,a,E,v);return A!==void 0&&(E=Math.max(.5,A-.2)),new ut(t.x+a.x*E,t.y+a.y*E,t.z+a.z*E)}debugRaycastHelper;debugHitPoint;debugRaycast(t,n,r){this.debugRaycastHelper&&(this.realScene.remove(this.debugRaycastHelper),this.debugRaycastHelper=void 0),this.debugHitPoint&&(this.realScene.remove(this.debugHitPoint),this.debugHitPoint=void 0);let s=new K(this.sceneOrigin.toSceneX(t.x),this.sceneOrigin.toSceneY(t.y),this.sceneOrigin.toSceneZ(t.z));this.debugRaycastHelper=new yc(n.clone().normalize(),s,r,16711680,r*.1,r*.05),this.realScene.add(this.debugRaycastHelper);let o=new rs(.2,8,8),a=new st({color:65280});this.debugHitPoint=new je(o,a),this.debugHitPoint.position.copy(s).add(n.clone().multiplyScalar(r)),this.realScene.add(this.debugHitPoint)}prevFramePerspective=null;setCinimaticCamera(t,n,r){this.cameraWorldPos.x=t.x,this.cameraWorldPos.y=t.y,this.cameraWorldPos.z=t.z,this.sceneOrigin.update(t.x,t.y,t.z),this.cameraObject.position.set(0,0,0),this.cameraShake.setBaseRotation(r,n),this.updateCameraSectionPos()}setCinimaticFov(t){this.animatedFov=t,this.camera.fov=t,this.camera.updateProjectionMatrix()}updateSmoothFov(){if(this.cinimaticScript.running)return;let t=this.displayOptions.inWorldRenderingConfig.fov,n=this.playerStateReactive.fovMultiplier,r=t*(Number.isFinite(n)?n:1),s=performance.now();if(this.animatedFov===0&&(this.animatedFov=r),Math.abs(this.animatedFov-r)>=.01){let o=s-this.lastFovAnimTime,a=Math.min(o/_d.FOV_TRANSITION_MS,1),l=c=>1-(1-c)**3;this.animatedFov+=(r-this.animatedFov)*l(a),Math.abs(this.animatedFov-r)<.01&&(this.animatedFov=r)}else this.animatedFov=r;this.lastFovAnimTime=s,this.camera.fov!==this.animatedFov&&(this.camera.fov=this.animatedFov,this.camera.updateProjectionMatrix())}updateCamera(t,n,r){if(!this.cinimaticScript.running){if(t){this.renderer.xr.isPresenting&&(t.y-=this.camera.position.y),this.currentPosTween?.stop();let s=this.displayOptions.inWorldRenderingConfig.instantCameraUpdate?0:this.playerStateUtils.isSpectatingEntity()?150:50;this.currentPosTween=new xr(this.cameraWorldPos).to({x:t.x,y:t.y,z:t.z},s).onUpdate(()=>{this.sceneOrigin.update(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),this.cameraObject.position.set(0,0,0)}).start()}if(this.playerStateUtils.isSpectatingEntity()){let s=this.cameraShake.getBaseRotation(),o=0,a=Math.PI/2;s.yaw<a&&n>Math.PI+a?o=-Math.PI*2:n<a&&s.yaw>Math.PI+a&&(o=Math.PI*2),this.currentRotTween?.stop(),this.currentRotTween=new xr(s).to({pitch:r,yaw:n+o},100).onUpdate(l=>this.cameraShake.setBaseRotation(l.pitch,l.yaw-o)).start()}else{this.currentRotTween?.stop(),this.cameraShake.setBaseRotation(r,n);let{perspective:s}=this.playerStateReactive;if(s==="third_person_back"||s==="third_person_front"){let o=new K(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),a=this.getThirdPersonCamera(o,n,r),l=o.distanceTo(new K(a.x,a.y,a.z)),c=s==="third_person_back"?l:-l;this.camera.position.set(0,0,c),s==="third_person_front"?this.camera.rotation.set(0,Math.PI,0):this.camera.rotation.set(0,0,0)}else this.camera.position.z=0,this.camera.rotation.set(0,0,0),this.debugRaycastHelper&&(this.realScene.remove(this.debugRaycastHelper),this.debugRaycastHelper=void 0),this.debugHitPoint&&(this.realScene.remove(this.debugHitPoint),this.debugHitPoint=void 0)}this.updateCameraSectionPos()}}debugChunksVisibilityOverride(){let{chunksRenderAboveOverride:t,chunksRenderBelowOverride:n,chunksRenderDistanceOverride:r,chunksRenderAboveEnabled:s,chunksRenderBelowEnabled:o,chunksRenderDistanceEnabled:a}=this.reactiveDebugParams,l=this.getSectionHeight(),c=this.cameraSectionPos.y*l;if(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay&&t!==void 0||n!==void 0||r!==void 0)for(let[d,u]of Object.entries(this.sectionObjects)){if(u._waitingForChunkDisplay)continue;let[p,v,_]=d.split(",").map(Number),b=s&&t!==void 0?v<=c+t:o&&n!==void 0?v>=c-n:a&&r!==void 0?Math.abs(v-c)<=r:!0;u.visible=b}else this.chunkMeshManager.updateSectionsVisibility()}render(t=!1){if(this.currentRenderedFrames++,this.reactiveDebugParams.stopRendering)return;this.debugChunksVisibilityOverride();let n=performance.now();this.lastRendered=performance.now();let r=this.lastRenderTime>0?Math.min(Math.max((n-this.lastRenderTime)/1e3,0),.1):1/60;this.lastRenderTime=n,this.cursorBlock.render(),this.updateSectionOffsets();let s=this.getCameraPosition();if(this.skyboxRenderer.update(s,this.viewDistance),this.updateSmoothFov(),t){let u=this.renderer.getSize(new Ue);this.camera.aspect=u.width/u.height,this.camera.updateProjectionMatrix()}let o=0;if(!this.reactiveDebugParams.disableEntities){let u=performance.now();this.entities.render(),o=performance.now()-u}let a=this.cameraGroupVr instanceof at?this.cameraGroupVr.children.find(u=>u instanceof Yt):this.camera;this.applyPendingSectionUpdates();let l=this.chunkMeshManager.globalBlockBuffer;l&&(l.setCameraOrigin(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),l.uploadDirtyRange()),this.renderer.render(this.scene,a),this.displayOptions.inWorldRenderingConfig.showHand&&this.playerStateReactive.gameMode!=="spectator"&&this.playerStateReactive.perspective==="first_person"&&!this.renderer.xr.isPresenting&&(this.holdingBlock.render(this.camera,this.renderer,this.ambientLight,this.directionalLight),this.holdingBlockLeft.render(this.camera,this.renderer,this.ambientLight,this.directionalLight));for(let u of this.fountains)this.sectionObjects[u.sectionId]&&!this.sectionObjects[u.sectionId].foutain&&(u.createParticles(this.sectionObjects[u.sectionId]),this.sectionObjects[u.sectionId].foutain=!0),u.render();this.waypoints.render(),this.fireworks.update();for(let u of this.onRender)u(r);let d=performance.now()-n;this.worldRendererConfig.autoLowerRenderDistance&&this.chunkMeshManager.recordRenderTime(d),this.renderTimeAvgCount++,this.renderTimeAvg=(this.renderTimeAvg*(this.renderTimeAvgCount-1)+d)/this.renderTimeAvgCount,this.renderTimeMax=Math.max(this.renderTimeMax,d),this.performanceMonitor.onFrame({totalMs:d,entitiesMs:o,loadedTextureCount:this.renderer.info.memory.textures,fps:this.lastFps})}renderHead(t,n,r,s){let o;if(s.SkullOwner?o=s.SkullOwner.Properties?.textures?.[0]?.Value:o=s.profile?.properties?.find(a=>a.name==="textures")?.value,!!o)try{let l=JSON.parse(Buffer.from(o,"base64").toString()).textures?.SKIN?.url,{skinTexturesProxy:c}=this.worldRendererConfig;c&&(l=l?.replace("http://textures.minecraft.net/",c).replace("https://textures.minecraft.net/",c));let d=I0(this,l,R0.head),u=new at;return r&&d.position.set(0,.3125,.3125),d.position.y-=23/16,u.add(d),this.sceneOrigin.track(u),u.position.set(t.x+.5,t.y+.045,t.z+.5),u.rotation.set(0,-_t.degToRad(n*(r?90:45/2)),0),u.scale.set(.8,.8,.8),u}catch(a){console.error("Error decoding player texture:",a)}}renderSign(t,n,r,s,o){let a=this.getSignTexture(t,o,s);if(!a)return;let l=new je(new _n(1,1),new st({map:a,transparent:!0}));l.renderOrder=999;let c=7/16,d=s?1.3:1;l.scale.set(1*d,c*d,1*d);let u=(s?2:1.5)/16,p=.25/16;r&&!s?l.position.set(0,0,-.5+u+p+1e-4):l.position.set(0,0,u/2+1e-4);let v=new at;v.rotation.set(0,-_t.degToRad(n*(r?90:45/2)),0),v.add(l);let _=(s?10:8)/16,b=(s?0:r?4.333:9.333)/16,y=_/2+b;return this.sceneOrigin.track(v),v.position.set(t.x+.5,t.y+y,t.z+.5),v}lightUpdate(t,n){for(let r=this.worldSizeParams.minY;r<this.worldSizeParams.worldHeight;r+=16)this.setSectionDirty(new ut(t,r,n))}rerenderAllChunks(){for(let t of Object.keys(this.sectionObjects)){let[n,r,s]=t.split(",").map(Number);this.setSectionDirty(new ut(n,r,s))}}updateShowChunksBorder(t){this.chunkMeshManager.updateAllBoxHelpers(t)}resetWorld(){super.resetWorld(),this.pendingSectionUpdates.clear(),this.pendingSectionBufferStartTimes.clear(),this.chunkMeshManager.dispose(),this.chunkMeshManager=new n2(this,this.scene,this.material,this.worldSizeParams.worldHeight,this.viewDistance),this.debugRaycastHelper&&(this.realScene.remove(this.debugRaycastHelper),this.debugRaycastHelper=void 0),this.debugHitPoint&&(this.realScene.remove(this.debugHitPoint),this.debugHitPoint=void 0)}getLoadedChunksRelative(t,n=!1){let[r,s,o]=kA(t);return Object.fromEntries(Object.entries(this.sectionObjects).map(([a,l])=>{let[c,d,u]=a.split(",").map(Number),[p,v,_]=kA({x:c,y:d,z:u});return[n?`${p-r},${v-s},${_-o}`:`${p-r},${_-o}`,l]}))}cleanChunkTextures(t,n){let r=this.chunkTextures.get(`${Math.floor(t/16)},${Math.floor(n/16)}`)??{};for(let s of Object.keys(r))r[s].dispose(),delete r[s];this.chunkMeshManager.cleanSignChunkTextures(t,n)}readdChunks(){for(let t of Object.keys(this.sectionObjects))this.scene.remove(this.sectionObjects[t]);setTimeout(()=>{for(let t of Object.keys(this.sectionObjects))this.scene.add(this.sectionObjects[t])},500)}disableUpdates(t=this.scene.children){for(let n of t)n.matrixWorldNeedsUpdate=!1,this.disableUpdates(n.children??[])}removeColumn(t,n){super.removeColumn(t,n),this.cleanChunkTextures(t,n),this.clearPendingSectionUpdatesForChunk(t,n);let r=this.getSectionHeight(),s=this.worldMinYRender;for(let o=s;o<this.worldSizeParams.worldHeight;o+=r){let a=`${t},${o},${n}`;this.chunkMeshManager.sectionObjects[a]&&this.chunkMeshManager.releaseSection(a)}this.chunkMeshManager.onChunkRemovedFromGate(`${t},${n}`)}updateViewerPosition(t){super.updateViewerPosition(t),this.chunkMeshManager.pendingNearReveal.size>0&&this.chunkMeshManager.tryRevealPending()}onViewerChunkPositionChanged(){this.chunkMeshManager.tryRevealPending()}setSectionDirty(...t){let[n]=t;this.cleanChunkTextures(n.x,n.z),super.setSectionDirty(...t)}static getRendererInfo(t){try{let n=t.getContext();return`${n.getParameter(n.getExtension("WEBGL_debug_renderer_info").UNMASKED_RENDERER_WEBGL)}`}catch(n){console.warn("Failed to get renderer info",n)}}worldStop(){this.media.onWorldStop()}destroy(){this.performanceMonitor?.reset(),this.pendingSectionUpdates.clear(),this.pendingSectionBufferStartTimes.clear(),this.chunkMeshManager.dispose(),this.disposeModules(),this.fireworksLegacy.destroy(),super.destroy(),this.skyboxRenderer.dispose(),this.fireworks.dispose()}shouldObjectVisible(t){let r=this.getSectionHeight(),s,o,a,l=this.sceneOrigin.getWorldPosition(t);l?(s=l.x,o=l.y,a=l.z):(s=this.sceneOrigin.toWorldX(t.position.x),o=this.sceneOrigin.toWorldY(t.position.y),a=this.sceneOrigin.toWorldZ(t.position.z));let c=Math.floor(s/16)*16,d=Math.floor(a/16)*16,u=Math.floor(o/r)*r,p=`${c},${d}`,v=`${c},${u},${d}`;return!!this.finishedChunks[p]||!!this.sectionObjects[v]}handleUserClick(t){this.media.handleUserClick(t)}updateSectionOffsets(){let t=performance.now();for(let[n,r]of Object.entries(this.sectionsOffsetsAnimations)){let s=(t-r.time)/1e3;r.time=t,r.currentOffsetX+=r.speedX*s,r.currentOffsetY+=r.speedY*s,r.currentOffsetZ+=r.speedZ*s,r.limitX!==void 0&&(r.speedX>0?r.currentOffsetX=Math.min(r.currentOffsetX,r.limitX):r.currentOffsetX=Math.max(r.currentOffsetX,r.limitX)),r.limitY!==void 0&&(r.speedY>0?r.currentOffsetY=Math.min(r.currentOffsetY,r.limitY):r.currentOffsetY=Math.max(r.currentOffsetY,r.limitY)),r.limitZ!==void 0&&(r.speedZ>0?r.currentOffsetZ=Math.min(r.currentOffsetZ,r.limitZ):r.currentOffsetZ=Math.max(r.currentOffsetZ,r.limitZ));let o=this.sectionObjects[n];o&&(o.position.set(r.currentOffsetX,r.currentOffsetY,r.currentOffsetZ),o.updateMatrix())}}reloadWorld(){this.entities.reloadEntities()}};Cn(_d,"FOV_TRANSITION_MS",200),Cn(_d,"MAX_SECTION_UPDATE_BUFFER_MS",500);var yd=_d;f();m();h();f();m();h();var i2="1.21.4";f();m();h();function bd(i,e){i.aspect=e.width/e.height,i.updateProjectionMatrix()}f();m();h();f();m();h();var tl={mode:"futuristic",minecraftTextures:!0,futuristicScene:"light",futuristicCamera:"dive",futuristicBlockGroup:"stainedGlass",futuristicCameraSpeedPercent:80,futuristicBlockSpeedPercent:40},DT=i=>i/100,d4={camera:DT(tl.futuristicCameraSpeedPercent),block:DT(tl.futuristicBlockSpeedPercent)};function UT(i,e=!1){return i?.mode?i.mode:e?"worldBlocks":tl.mode}f();m();h();yt();f();m();h();var VT={};function FT(...i){let e=i.filter(n=>n.length>0).join("/"),t=typeof globalThis.location<"u"&&globalThis.location.href?globalThis.location.href:typeof VT<"u"&&VT.url?VT.url:`/${e}`;try{return new URL(e,t).href}catch{return`/${e}`}}var zT=new Date,T3e=zT.getMonth()===11&&zT.getDate()>=24&&zT.getDate()<=26,kGe=["panorama_3.webp","panorama_1.webp","panorama_4.webp","panorama_5.webp","panorama_0.webp","panorama_2.webp"],TGe=200,s2=class{constructor(e){this.documentRenderer=e;this.scene=new _r,this.scene.background=new Fe(3294568);let t=new vo(13421772);this.scene.add(t);let n=new ss(16777215,.5);n.position.set(1,1,.5).normalize(),n.castShadow=!0,this.scene.add(n),this.camera=new Yt(85,e.canvas.width/e.canvas.height,.05,1e3),this.camera.position.set(0,0,0),this.camera.rotation.set(0,0,0)}scene;camera;startTimes=new Map;time=0;panoramaGroup=null;async init(){this.buildCubemap()}update(e,t){t&&bd(this.camera,this.documentRenderer.canvas)}dispose(){this.scene.clear(),this.panoramaGroup=null,this.startTimes.clear()}buildCubemap(){let e=new nn(1e3,1e3,1e3),t=[];for(let s of kGe)(async()=>{let a=FT("background",T3e?"christmas":"",s),l=await jc(a),c=u0(l);c.matrixAutoUpdate=!1,c.matrix.set(-1,0,1,0,1,0,0,0,1),c.wrapS=gn,c.wrapT=gn,c.minFilter=jt,c.magFilter=jt;let d=new st({map:c,transparent:!0,side:cn,depthWrite:!1,opacity:0});this.startTimes.set(d,Date.now()),t.push(d)})().catch(a=>{console.warn("[ClassicMenuBackground] Failed to load panorama face:",s,a)});let n=new je(e,t);n.onBeforeRender=()=>{this.time+=.01,n.rotation.y=Math.PI+this.time*.01,n.rotation.z=Math.sin(-this.time*.001)*.001;for(let s of t){let o=this.startTimes.get(s);if(o){let a=Date.now()-o;s.opacity=Math.min(1,a/TGe)}}};let r=new At;if(r.add(n),!T3e)for(let s=0;s<20;s++){let o=new el("1.16.4","squid").mesh;o.position.set(Math.random()*30-15,Math.random()*20-10,Math.random()*10-17),o.rotation.set(0,Math.PI+Math.random(),-Math.PI/4,"ZYX");let a=Math.random()*.01;o.children[0].onBeforeRender=()=>{o.rotation.y+=a,o.rotation.z=Math.cos(n.rotation.y*3)*Math.PI/4-Math.PI/2},r.add(o)}this.scene.add(r),this.panoramaGroup=r}async debugImageInFrontOfCamera(){let e=await jc(FT("background","panorama_0.webp")),t=u0(e),n=new je(new _n(1e3,1e3),new st({map:t}));n.position.set(0,0,-500),this.scene.add(n)}};f();m();h();yt();f();m();h();var rh=["galaxy","nether","end","cyber","light"],ih=["cruise","barrel","dive","orbit","snake"],u4={galaxy:"Galaxy",nether:"Nether",end:"The End",cyber:"Cyber",light:"Light Space"},f4={cruise:"Cruise",barrel:"Barrel",dive:"Dive",orbit:"Orbit",snake:"Snake"},sh=["mixed","stainedGlass","wool","construction","glow","world"],h4={mixed:"Mixed",stainedGlass:"Stained glass",wool:"Wool",construction:"Construction",glow:"Glow",world:"World (grass & ores)"};var I3e=.1,P3e={mixed:["white_wool","cyan_wool","blue_wool","purple_wool","white_stained_glass","cyan_stained_glass","blue_stained_glass","purple_stained_glass","glowstone","sea_lantern","amethyst_block","copper_block","gold_block","diamond_block"],stainedGlass:["white_stained_glass","orange_stained_glass","magenta_stained_glass","light_blue_stained_glass","yellow_stained_glass","lime_stained_glass","pink_stained_glass","gray_stained_glass","light_gray_stained_glass","cyan_stained_glass","purple_stained_glass","blue_stained_glass","brown_stained_glass","green_stained_glass","red_stained_glass","black_stained_glass"],wool:["white_wool","orange_wool","magenta_wool","light_blue_wool","yellow_wool","lime_wool","pink_wool","gray_wool","light_gray_wool","cyan_wool","purple_wool","blue_wool","brown_wool","green_wool","red_wool","black_wool"],construction:["copper_block","exposed_copper","weathered_copper","oxidized_copper","cut_copper","exposed_cut_copper","weathered_cut_copper","oxidized_cut_copper","iron_block","gold_block","diamond_block","emerald_block","netherite_block","lapis_block","redstone_block","coal_block","quartz_block","amethyst_block","bricks","stone_bricks","deepslate_bricks","polished_blackstone"],glow:["glowstone","sea_lantern","shroomlight","ochre_froglight","verdant_froglight","pearlescent_froglight","redstone_lamp","beacon"],world:["grass_block","podzol","mycelium","dirt","coarse_dirt","rooted_dirt","mud","clay","stone","cobblestone","mossy_cobblestone","deepslate","cobbled_deepslate","tuff","calcite","sand","red_sand","gravel","snow_block","coal_ore","deepslate_coal_ore","iron_ore","deepslate_iron_ore","copper_ore","deepslate_copper_ore","gold_ore","deepslate_gold_ore","diamond_ore","deepslate_diamond_ore","emerald_ore","deepslate_emerald_ore","lapis_ore","deepslate_lapis_ore","redstone_ore","deepslate_redstone_ore","nether_gold_ore","ancient_debris","oak_log","birch_log","spruce_log","jungle_log","acacia_log","dark_oak_log","mangrove_log","cherry_log","netherrack","soul_sand","basalt","end_stone"]},R3e={galaxy:{bg:132114,fog:132114,fogD:.011,blocks:[61695,54527,47359,59647,2280703,43263],emit:[13158,8789,6724],nebula:[4403,1114146,4386],galFn:i=>new Fe(i*.05,i*.2,i),ambient:264216,dir:3368703,pt1:43775,pt2:16729343,name:"GALAXY"},nether:{bg:917760,fog:917760,fogD:.016,blocks:[16720384,16737792,16750848,13373696,16729122,16755200],emit:[2230272,1114112,3346688],nebula:[1704960,851968,1705984],galFn:i=>new Fe(i,i*.15,0),ambient:1573376,dir:16724736,pt1:16729088,pt2:16755200,name:"NETHER"},end:{bg:0,fog:0,fogD:.009,blocks:[7807658,11158732,5570679,14527231,3342421,12299007],emit:[655381,1572901,327696],nebula:[524312,851989,262158],galFn:i=>new Fe(i*.4,0,i),ambient:393232,dir:10040319,pt1:11158783,pt2:4456618,name:"THE END"},cyber:{bg:2566,fog:2566,fogD:.01,blocks:[65535,65416,11206400,52479,6749952,65518],emit:[8721,6656,6690],nebula:[6674,5120,4634],galFn:i=>new Fe(0,i,i*.6),ambient:6669,dir:65450,pt1:65484,pt2:4521728,name:"CYBER"},light:{bg:8951984,fog:7899296,fogD:.006,gradientBg:{top:14214392,mid:10531016,bottom:6846608,radial:!0},blocks:[15266559,13691135,12114175,10537208,8960240,7383272,10012927,12640511,15792383,7909608,14216447,14739711],emit:[6854864,8958176,11061488,12638456],nebula:[9480392,11059424,12637420,14215416,7901360],galFn:i=>{let e=new Fe;return i<.4?e.lerpColors(new Fe(16054527),new Fe(14215423),i/.4):i<.75?e.lerpColors(new Fe(14215423),new Fe(11061488),(i-.4)/.35):e.lerpColors(new Fe(11061488),new Fe(9482464),(i-.75)/.25),e},ambient:7899296,dir:13688040,pt1:11061503,pt2:13162751,name:"LIGHT",starColor:15266047,starOpacity:.5,galaxyOpacity:.7,nebulaOpacity:.32,edgeLineColor:10010856,blockOpacity:[.42,.56]}},IGe={cruise:{pos:(i,e,t)=>({x:Math.sin(i*.28)*18+Math.cos(i*.11)*7+e*10,y:Math.sin(i*.19)*6+Math.cos(i*.31)*3+t*6,z:0}),look:(i,e,t)=>({x:Math.sin((i+.18)*.28)*18+e*8,y:Math.sin((i+.18)*.19)*6+t*4,z:-25}),roll:(i,e=0)=>e*.05+Math.sin(i*.22)*.015,spd:.18},barrel:{pos:(i,e,t)=>{let r=i*2.4;return{x:Math.cos(r)*10+e*4,y:Math.sin(r)*10+t*4,z:Math.sin(i*.4)*8}},look:i=>({x:Math.sin(i*.5)*5,y:Math.cos(i*.5)*5,z:-30}),roll:i=>i*2.4+Math.PI*.5,spd:.24},dive:{pos:(i,e,t)=>({x:Math.sin(i*.6)*30+e*8,y:Math.cos(i*.4)*18+t*6,z:Math.sin(i*.3)*12}),look:(i,e,t)=>({x:Math.sin(i*.6+.2)*30+e*6,y:Math.cos(i*.4+.2)*18-8+t*4,z:-35}),roll:(i,e=0)=>e*.08+Math.sin(i*.6)*.12,spd:.3},orbit:{pos:(i,e,t)=>({x:Math.cos(i*.5)*20+e*5,y:Math.sin(i*.25)*10+t*5,z:Math.sin(i*.5)*20}),look:()=>({x:0,y:0,z:-60}),roll:i=>Math.sin(i*.5)*.08,spd:.15},snake:{pos:(i,e,t)=>({x:Math.sin(i*1.1)*22+Math.sin(i*.37)*8+e*10,y:Math.sin(i*.7)*10+e*4+t*8,z:0}),look:(i,e,t)=>{let n=i+.12;return{x:Math.sin(n*1.1)*22+Math.sin(n*.37)*8+e*8,y:Math.sin(n*.7)*10+t*6,z:-22}},roll:(i,e=0)=>e*.1+Math.sin(i*1.1)*.06,spd:.22}},RGe={cruise:1,barrel:1.6,dive:2.2,orbit:.7,snake:1.4},CGe=250,m4=1e4,p4=3e3,oh=i=>i[Math.floor(Math.random()*i.length)],HT=i=>"#"+i.toString(16).padStart(6,"0"),C3e=i=>{if(typeof document>"u")return null;let e=document.createElement("canvas");e.width=4,e.height=512;let t=e.getContext("2d");if(!t)return null;let n=e.width,r=e.height,s=i.radial?t.createRadialGradient(n/2,r*.32,0,n/2,r*.32,r*.85):t.createLinearGradient(0,0,0,r);s.addColorStop(0,HT(i.top)),i.mid!=null&&s.addColorStop(.45,HT(i.mid)),s.addColorStop(1,HT(i.bottom)),t.fillStyle=s,t.fillRect(0,0,n,r);let o=new mn(e);return o.needsUpdate=!0,o},ah=class{constructor(e,t={},n){this.documentRenderer=e;this.abortSignal=n;let r=tl;this.curScene=t.initialScene??r.futuristicScene,this.curCam=t.initialCamera??r.futuristicCamera,this.blockGroup=t.initialBlockGroup??r.futuristicBlockGroup,this.cameraSpeed=t.initialCameraSpeed??d4.camera,this.blockSpeed=t.initialBlockSpeed??d4.block,this.useMinecraftTextures=t.useMinecraftTextures??r.minecraftTextures,this.resourcesManager=t.resourcesManager;let s=R3e[this.curScene];this.scene=new _r,this.scene.fog=new ia(s.fog,s.fogD),this.applyScenePalette(s),this.camera=new Yt(80,this.documentRenderer.canvas.width/this.documentRenderer.canvas.height,.1,700),this.ambient=new vo(s.ambient,2.5),this.scene.add(this.ambient),this.dir=new ss(s.dir,4),this.dir.position.set(1,1,0),this.scene.add(this.dir),this.pt1=new ma(s.pt1,5,100),this.scene.add(this.pt1),this.pt2=new ma(s.pt2,4,80),this.pt2.position.set(30,20,-30),this.scene.add(this.pt2);for(let p=0;p<CGe;p++)this.spawnBlock(s,!0);if(!this.useMinecraftTextures){let p=s.edgeLineColor??62975;for(let v=0;v<40;v++){let _=new fn({color:p,transparent:!0,opacity:.25});oh(this.blocks).mesh.add(new Ln(this.eGeo,_))}}this.scene.add(this.bGroup);let o=new it,a=new Float32Array(5e3*3);for(let p=0;p<5e3*3;p++)a[p]=(Math.random()-.5)*500;o.setAttribute("position",new ht(a,3)),this.stars=new tr(o,new Lr({color:s.starColor??16777215,size:.3,transparent:!0,opacity:s.starOpacity??.7,sizeAttenuation:!0})),this.scene.add(this.stars),this.galGeo=new it;let l=new Float32Array(m4*3),c=new Float32Array(m4*3);for(let p=0;p<m4;p++){let v=p%3,_=Math.random(),b=v/3*Math.PI*2+_*Math.PI*5,y=_*90+Math.random()*10,g=(1-_)*18;l[p*3]=Math.cos(b)*y+(Math.random()-.5)*g,l[p*3+1]=(Math.random()-.5)*7,l[p*3+2]=Math.sin(b)*y+(Math.random()-.5)*g-180;let w=.2+_*.8,x=s.galFn(w);c[p*3]=x.r,c[p*3+1]=x.g,c[p*3+2]=x.b}this.galGeo.setAttribute("position",new ht(l,3)),this.galGeo.setAttribute("color",new ht(c,3)),this.galaxy=new tr(this.galGeo,new Lr({size:.9,vertexColors:!0,transparent:!0,opacity:s.galaxyOpacity??.55,sizeAttenuation:!0})),this.scene.add(this.galaxy),this.nebGeo=new it;let d=new Float32Array(p4*3),u=new Float32Array(p4*3);for(let p=0;p<p4;p++){let v=25+Math.random()*110,_=Math.random()*Math.PI*2,b=(Math.random()-.5)*Math.PI*.5;d[p*3]=v*Math.cos(_)*Math.cos(b),d[p*3+1]=v*Math.sin(b)*.6,d[p*3+2]=v*Math.sin(_)*Math.cos(b)-80;let y=new Fe(oh(s.nebula));u[p*3]=y.r,u[p*3+1]=y.g,u[p*3+2]=y.b}this.nebGeo.setAttribute("position",new ht(d,3)),this.nebGeo.setAttribute("color",new ht(u,3)),this.nebula=new tr(this.nebGeo,new Lr({size:3,vertexColors:!0,transparent:!0,opacity:s.nebulaOpacity??.3,sizeAttenuation:!0})),this.scene.add(this.nebula),this.addBackgroundTextPlane(),this.setupMouseTracking()}scene;camera;ambient;dir;pt1;pt2;blocks=[];bGroup=new at;galaxy;nebula;stars;galGeo;nebGeo;bGeo=new nn(1,1,1);eGeo=new Rl(this.bGeo);curScene;curCam;blockGroup;cameraSpeed;blockSpeed;camT=0;mx=0;my=0;tmx=0;tmy=0;transitioning=!1;useMinecraftTextures=!1;resourcesManager;atlasTexture=null;blockMaterialPool=new Map;gradientSky=null;gradientSkyTexture=null;disposed=!1;animTime=0;async init(){if(this.useMinecraftTextures)try{await this.loadMinecraftTextures()}catch(e){console.warn("[FuturisticMenuBackground] Failed to load Minecraft textures, using solid colors:",e),this.useMinecraftTextures=!1}}applyScenePalette(e){if(this.documentRenderer.renderer.setClearColor(e.bg),e.gradientBg)if(this.scene.background=null,this.gradientSky){if(this.gradientSky.visible=!0,this.gradientSkyTexture&&e.gradientBg){let s=C3e(e.gradientBg);s&&(this.gradientSkyTexture.dispose(),this.gradientSkyTexture=s,this.gradientSky.material.map=s,this.gradientSky.material.needsUpdate=!0)}}else{let s=C3e(e.gradientBg);s?(this.gradientSkyTexture=s,this.gradientSky=new je(new _n(900,700),new st({map:s,depthWrite:!1,side:cn})),this.gradientSky.position.set(0,0,-280),this.gradientSky.renderOrder=-1e3,this.scene.add(this.gradientSky)):this.scene.background=new Fe(e.bg)}else this.scene.background=new Fe(e.bg),this.gradientSky&&(this.gradientSky.visible=!1);this.scene.fog instanceof ia&&(this.scene.fog.color.set(e.fog),this.scene.fog.density=e.fogD);let t=this.stars?.material;t&&(t.color.set(e.starColor??16777215),t.opacity=e.starOpacity??.7);let n=this.galaxy?.material;n&&(n.opacity=e.galaxyOpacity??.55);let r=this.nebula?.material;r&&(r.opacity=e.nebulaOpacity??.3)}setupMouseTracking(){let e=n=>{let r=typeof window<"u"?window.innerWidth:this.documentRenderer.canvas.width,s=typeof window<"u"?window.innerHeight:this.documentRenderer.canvas.height;this.tmx=(n.clientX/r-.5)*2,this.tmy=-(n.clientY/s-.5)*2};(typeof document<"u"?document:void 0)?.addEventListener("mousemove",e,{signal:this.abortSignal})}addBackgroundTextPlane(){let n=typeof document<"u"?document.createElement("canvas"):null;if(!n)return;n.width=2048,n.height=768;let r=n.getContext("2d");if(!r)return;r.clearRect(0,0,2048,768),r.save(),r.font="bold 560px Orbitron, sans-serif",r.textAlign="center",r.textBaseline="middle",r.shadowColor="rgba(0,200,255,0.35)",r.shadowBlur=80,r.fillStyle="rgba(255,255,255,0.055)",r.fillText("V2",2048*.28,768*.5),r.restore(),r.save(),r.font="bold 148px Orbitron, sans-serif",r.textAlign="center",r.textBaseline="middle",r.shadowColor="rgba(0,200,255,0.2)",r.shadowBlur=40,r.fillStyle="rgba(255,255,255,0.038)",r.fillText("by ZARDOY",2048*.72,768*.52),r.restore();let s=new mn(n),o=new je(new _n(280,105),new st({map:s,transparent:!0,opacity:1,depthWrite:!1,side:cn,blending:Ci}));o.position.set(8,4,-320),this.scene.add(o)}spawnBlock(e,t,n){let r=this.createBlockMaterial(e,n),s=new je(this.bGeo,r),o=.3+Math.random()*3;s.scale.setScalar(o),s.position.set((Math.random()-.5)*140,(Math.random()-.5)*70,t?-(Math.random()*140):-155-Math.random()*30),s.rotation.set(Math.random()*Math.PI*2,Math.random()*Math.PI*2,Math.random()*Math.PI*2);let a={mesh:s,spd:.04+Math.random()*.12,dx:(Math.random()-.5)*.012,dy:(Math.random()-.5)*.008,rx:(Math.random()-.5)*.012,ry:(Math.random()-.5)*.012,rz:(Math.random()-.5)*.01,minecraftBlockName:n};this.blocks.push(a),this.bGroup.add(s)}createBlockMaterial(e,t){if(this.useMinecraftTextures&&t){let s=this.blockMaterialPool.get(t);if(s)return s.clone()}let[n,r]=e.blockOpacity??[.32,.46];return new st({color:oh(e.blocks),transparent:!0,opacity:n+Math.random()*(r-n),depthWrite:!1,blending:Ci})}removeBlockEdgeLines(){for(let e of this.blocks){let t=e.mesh.children.filter(n=>n instanceof Ln);for(let n of t){e.mesh.remove(n),n.geometry?.dispose();let r=n.material;Array.isArray(r)?r.forEach(s=>s.dispose()):r.dispose()}}}async ensureMcDataLoaded(){let e=globalThis._LOAD_MC_DATA;e&&await e()}resolveBlockAtlasUv(e,t,n){let r=s=>{let o=t[s];return o?{u:o.u,v:o.v,su:o.su??n.suSv,sv:o.sv??n.suSv}:null};if(t[e])return r(e);for(let s of["_top","_side","_front","_0"]){let o=r(`${e}${s}`);if(o)return o}for(let s of Object.keys(t))if(s.startsWith(e))return r(s);return null}async loadMinecraftTextures(){await this.ensureMcDataLoaded();let e=this.resourcesManager??new Zl;if(!e.currentResources?.blocksAtlasImage){if(typeof document>"u")throw new Error("Menu atlas missing in worker; pass resourcesManager from main thread");e.currentConfig={...e.currentConfig,version:i2,noInventoryGui:!0},await e.updateAssetsData?.({})}let n=e.currentResources;if(!n?.blocksAtlasImage||!n.blocksAtlasJson)throw new Error("Block atlas not available");let r=n.blocksAtlasJson,s=r.textures;this.atlasTexture=u0(n.blocksAtlasImage),this.atlasTexture.flipY=!1,this.atlasTexture.needsUpdate=!0;for(let o of P3e[this.blockGroup]){let a=this.resolveBlockAtlasUv(o,s,r);if(!a)continue;let l=this.atlasTexture.clone();l.flipY=!1,l.offset.set(a.u,a.v),l.repeat.set(a.su,a.sv),l.needsUpdate=!0;let c=o.includes("glass"),d=new st({map:l,side:cn,transparent:c,opacity:c?.85:1,alphaTest:c?.08:0,depthWrite:!0,toneMapped:!1});this.blockMaterialPool.set(o,d)}if(this.blockMaterialPool.size===0)throw new Error("No block textures resolved from atlas (check block names vs atlas keys)");this.removeBlockEdgeLines();for(let o of this.blocks){let a=oh([...this.blockMaterialPool.keys()]);o.minecraftBlockName=a,o.mesh.material=this.blockMaterialPool.get(a).clone()}}setScene(e){if(!rh.includes(e)||e===this.curScene||this.transitioning)return;this.transitioning=!0,this.curScene=e;let t=R3e[e];setTimeout(()=>{if(this.disposed)return;this.applyScenePalette(t),this.ambient.color.set(t.ambient),this.dir.color.set(t.dir),this.pt1.color.set(t.pt1),this.pt2.color.set(t.pt2);for(let s of this.blocks)this.useMinecraftTextures&&s.minecraftBlockName||s.mesh.material instanceof st&&s.mesh.material.color.set(oh(t.blocks));let n=this.nebGeo.attributes.color;for(let s=0;s<p4;s++){let o=new Fe(oh(t.nebula));n.setXYZ(s,o.r,o.g,o.b)}n.needsUpdate=!0;let r=this.galGeo.attributes.color;for(let s=0;s<m4;s++){let o=.2+Math.random()*.8,a=t.galFn(o);r.setXYZ(s,a.r,a.g,a.b)}r.needsUpdate=!0,this.transitioning=!1},150)}setCamera(e){ih.includes(e)&&(this.curCam=e)}setCameraSpeed(e){this.cameraSpeed=Math.max(0,e)}setBlockSpeed(e){this.blockSpeed=Math.max(0,e)}async setBlockGroup(e){if(sh.includes(e)&&e!==this.blockGroup&&(this.blockGroup=e,!(!this.useMinecraftTextures||this.disposed))){for(let t of this.blockMaterialPool.values())t.map?.dispose(),t.dispose();this.blockMaterialPool.clear();try{await this.loadMinecraftTextures()}catch(t){console.warn("[FuturisticMenuBackground] Failed to reload block group textures:",t)}}}getSceneId(){return this.curScene}getCameraId(){return this.curCam}getBlockGroupId(){return this.blockGroup}update(e,t){t&&bd(this.camera,this.documentRenderer.canvas);let n=IGe[this.curCam],r=this.cameraSpeed,s=this.blockSpeed;this.camT+=e*n.spd*r,this.mx+=(this.tmx-this.mx)*.05,this.my+=(this.tmy-this.my)*.05;let o=this.mx*I3e,a=this.my*I3e,l=n.pos(this.camT,o,a),c=n.look(this.camT,o,a);this.camera.position.set(l.x,l.y,l.z),this.camera.lookAt(c.x,c.y,c.z),this.camera.rotation.z=n.roll(this.camT,o);let d=RGe[this.curCam]*s;this.animTime+=e*1e3*s;for(let u of this.blocks){if(u.mesh.position.z+=u.spd*d*60*e,u.mesh.position.x+=u.dx*60*e*s,u.mesh.position.y+=u.dy*60*e*s,u.mesh.rotation.x+=u.rx*d,u.mesh.rotation.y+=u.ry*d,u.mesh.rotation.z+=u.rz,!this.useMinecraftTextures&&u.mesh.material instanceof st){let p=u.mesh.userData.baseOpacity??.38;u.mesh.userData.baseOpacity==null&&(u.mesh.userData.baseOpacity=p);let v=.88+Math.abs(Math.sin(this.animTime*8e-4+u.mesh.position.x*.3))*.12;u.mesh.material.opacity=p*v}u.mesh.position.z>this.camera.position.z+15&&u.mesh.position.set((Math.random()-.5)*140,(Math.random()-.5)*70,this.camera.position.z-155-Math.random()*30)}this.pt1.position.set(Math.sin(this.camT*.8)*25+this.camera.position.x,Math.cos(this.camT*.6)*12+this.camera.position.y,this.camera.position.z-18),this.pt2.position.set(Math.cos(this.camT*.5)*20+this.camera.position.x,Math.sin(this.camT*.9)*15+this.camera.position.y,this.camera.position.z-30),this.galaxy.rotation.y+=e*.006*s,this.nebula.rotation.y-=e*.003*s,this.stars.rotation.y+=e*4e-4*s}dispose(){this.disposed=!0,this.scene.clear(),this.bGeo.dispose(),this.eGeo.dispose(),this.galGeo.dispose(),this.nebGeo.dispose(),this.gradientSkyTexture?.dispose(),this.atlasTexture?.dispose();for(let e of this.blockMaterialPool.values())e.map?.dispose(),e.dispose();this.blockMaterialPool.clear()}};f();m();h();yt();f();m();h();var fge=Yr(V3e(),1),hge=Yr(uge(),1);var mge=i=>{let e=(0,fge.default)(i),t=(0,hge.default)(i),n=new e(i).sync,r=sje(n);for(let s of r)if(s.startsWith("set")&&s!=="setColumn"){let o=n[s].bind(n);n[s]=(...a)=>{let l=a[0];l.x!==void 0&&!n.getColumnAt(l)&&n.setColumn(Math.floor(l.x/16),Math.floor(l.z/16),new t(void 0)),o(...a)}}return n};function sje(i){let e=new Set,t=i;do for(let n of Object.getOwnPropertyNames(t))typeof i[n]=="function"&&n!=="constructor"&&e.add(n);while(t=Object.getPrototypeOf(t));return[...e]}f();m();h();var pge={paused:!1,showChunkBorders:!1,enableDebugOverlay:!1,debugWasmPerf:!1,debugModelVariant:void 0,futuristicReveal:!1,wasmMesher:!0,shaderCubeBlocks:!1,shaderCubeDebugMode:0,mesherWorkers:1,addChunksBatchWaitTime:200,_experimentalSmoothChunkLoading:!0,_renderByChunks:!1,autoLowerRenderDistance:!1,disableMesherConversionCache:!1,dedicatedChangeWorker:!1,shadingTheme:"high-contrast",cardinalLight:"default",dayCycle:!0,smoothLighting:!0,enableLighting:!0,starfield:!0,defaultSkybox:!0,renderEntities:!0,extraBlockRenderers:!0,foreground:!0,fov:75,volume:1,showHand:!1,viewBobbing:!1,handRenderer:"vanilla",renderEars:!0,highlightBlockColor:"blue",fetchPlayerSkins:!0,skinTexturesProxy:void 0,vrSupport:!0,vrPageGameRendering:!0,clipWorldBelowY:void 0,isPlayground:!1,instantCameraUpdate:!1,isRaining:!1,moduleStates:{}};var jI=()=>({reactive:_a({world:{chunksLoaded:new Set,heightmaps:new Map,allChunksLoaded:!1,mesherWork:!1,instabilityFactors:BT(),intersectMedia:null},renderer:"...",preventEscapeMenu:!1}),nonReactive:{fps:0,worstRenderTime:0,avgRenderTime:0,world:{chunksLoaded:new Set,chunksTotalNumber:0},renderer:{timeline:{live:[],frozen:[],lastSecond:[]}}}});f();m();h();f();m();h();f();m();h();Rs();var L2=i=>[Math.floor(i.x/16),Math.floor(i.z/16)];var oje=async(i,e,t,n=1)=>{for(let r=0;r<i.length;r+=n)e&&await new Promise(s=>setTimeout(s,e)),await t(i[r],r)},B2=class B2 extends Ol{static restoreTransferred(e,t){let n=new B2;return t&&t.addEventListener("message",({data:r})=>{r.class===B2.restorerName&&r.type==="event"&&n.emit(r.eventName,...r.args)}),n}};Cn(B2,"restorerName","WorldViewWorker");var yh=B2,n8=class extends Ol{constructor(t,n,r=new ut(0,0,0)){super();this.world=t;this.viewDistance=n;this.lastPos=new ut(0,0,0).update(r)}spiralNumber=0;gotPanicLastTime=!1;panicChunksReload=()=>{};loadedChunks={};inLoading=!1;chunkReceiveTimes=[];lastChunkReceiveTime=0;lastChunkReceiveTimeAvg=0;panicTimeout;lastPos;eventListeners={};debugChunksInfo={};waitingSpiralChunksLoad={};addWaitTime=1;keepChunksDistance=0;isPlayground=!1;allowPositionUpdate=!0;prepareForTransfer(t){if(t){let n=this.emit.bind(this);this.emit=(r,...s)=>{n(r,...s),t.postMessage({class:yh.restorerName,type:"event",eventName:r,args:X6(s)})}}return{__restorer:yh.restorerName}}setBlockStateId(t,n){let r=this.world.setBlockStateId(t,n);if(r&&typeof r.then=="function")throw new Error("setBlockStateId returned promise (not supported)");this.emit("blockUpdate",{pos:t,stateId:n})}updateViewDistance(t){this.viewDistance=t,this.emit("renderDistance",t)}async init(t,n){console.log("WorldView init"),this.updateViewDistance(this.viewDistance),this.emit("chunkPosUpdate",{pos:t}),n?.time?.timeOfDay!==void 0&&this.emit("time",n.time.timeOfDay),n?.entity&&this.emit("playerEntity",n.entity),this.emitterGotConnected(n);let[r,s]=L2(t),o=wp(this.viewDistance).map(([a,l])=>new ut((r+a)*16,0,(s+l)*16));this.lastPos.update(t),await this._loadChunks(o,t)}chunkProgress(){if(this.panicTimeout&&clearTimeout(this.panicTimeout),this.chunkReceiveTimes.length>=5){let t=this.chunkReceiveTimes.reduce((r,s)=>r+s,0)/this.chunkReceiveTimes.length;this.lastChunkReceiveTimeAvg=t;let n=t*2+1e3;this.panicTimeout&&clearTimeout(this.panicTimeout),this.panicTimeout=setTimeout(()=>{!this.gotPanicLastTime&&this.inLoading&&(console.warn("Chunk loading seems stuck, triggering panic reload"),this.gotPanicLastTime=!0,this.panicChunksReload())},n)}}async _loadChunks(t,n){this.spiralNumber++;let{spiralNumber:r}=this;for(let o of Object.keys(this.waitingSpiralChunksLoad))this.waitingSpiralChunksLoad[o](!1),delete this.waitingSpiralChunksLoad[o];let s=!0;this.inLoading=!0,await oje(t,this.addWaitTime,async o=>{!s||this.loadedChunks[`${o.x},${o.z}`]||(this.world.getColumnAt(o)||(s=await new Promise(a=>{this.waitingSpiralChunksLoad[`${o.x},${o.z}`]=a})),s&&(await this.loadChunk(o,void 0,`spiral ${r} from ${n.x},${n.z}`),this.chunkProgress()))}),this.panicTimeout&&clearTimeout(this.panicTimeout),this.inLoading=!1,this.gotPanicLastTime=!1,this.chunkReceiveTimes=[],this.lastChunkReceiveTime=0}async loadChunk(t,n=!1,r="spiral"){let[s,o]=L2(this.lastPos),a=Math.abs(s-Math.floor(t.x/16)),l=Math.abs(o-Math.floor(t.z/16));if(a<=this.viewDistance&&l<=this.viewDistance){let c=await this.world.getColumnAt(t.y!==void 0?t:new ut(t.x,0,t.z));if(c){let d=c.toJson(),u={minY:c.minY??0,worldHeight:c.worldHeight??256};this.emit("loadChunk",{x:t.x,z:t.z,chunk:d,blockEntities:c.blockEntities,worldConfig:u,isLightUpdate:n}),this.loadedChunks[`${t.x},${t.z}`]=!0,this.debugChunksInfo[`${t.x},${t.z}`]??={loads:[]},this.debugChunksInfo[`${t.x},${t.z}`].loads.push({dataLength:d.length,reason:r,time:Date.now()})}else this.isPlayground&&this.emit("markAsLoaded",{x:t.x,z:t.z})}}unloadAllChunks(){for(let t of Object.keys(this.loadedChunks)){let[n,r]=t.split(",").map(Number);this.unloadChunk({x:n,z:r})}}unloadChunk(t){this.emit("unloadChunk",{x:t.x,z:t.z}),delete this.loadedChunks[`${t.x},${t.z}`],delete this.debugChunksInfo[`${t.x},${t.z}`]}emitterGotConnected(t){typeof globalThis.WorkerGlobalScope<"u"&&globalThis instanceof globalThis.WorkerGlobalScope||!t||this.emit("blockEntities",new Proxy({},{get(r,s,o){if(typeof s!="string")return;let[a,l,c]=s.split(",").map(Number);return t.world.getBlock(new ut(a,l,c))?.entity}}))}lastBiomeId=null;updateBiome(t){try{if(!this.world.getBiome)return;let n=this.world.getBiome(t);n!==this.lastBiomeId&&(this.lastBiomeId=n,this.emit("biomeReset"))}catch(n){console.error("error updating biome",n)}}lastPosCheck=null;async updatePosition(t,n=!1){if(!this.allowPositionUpdate)return;let r=t.floored();if(!n&&this.lastPosCheck&&this.lastPosCheck.equals(r))return;this.lastPosCheck=r,this.updateBiome(t);let[s,o]=L2(this.lastPos),[a,l]=L2(t);if(s!==a||o!==l||n){this.emit("chunkPosUpdate",{pos:t});let c=[],d=n?this.viewDistance:this.viewDistance+this.keepChunksDistance;for(let p of Object.keys(this.loadedChunks)){let[v,_]=p.split(",").map(Number),b=new ut(v,0,_),[y,g]=L2(b),w=Math.abs(a-y),x=Math.abs(l-g);(w>d||x>d)&&c.push(b)}for(let p of c)this.unloadChunk(p);let u=wp(this.viewDistance).map(([p,v])=>{let _=new ut((a+p)*16,0,(l+v)*16);if(!this.loadedChunks[`${_.x},${_.z}`])return _}).filter(p=>!!p);this.lastPos.update(t),this._loadChunks(u,t)}else this.emit("chunkPosUpdate",{pos:t}),this.lastPos.update(t)}};var O2=class{constructor(e,t,n){this.documentRenderer=e;this.options=t;this.abortSignal=n;this._scene=new _r,this._scene.background=new Fe(3294568),this._camera=new Yt(85,e.canvas.width/e.canvas.height,.05,1e3),this.camera.position.set(0,0,0),this.camera.rotation.set(0,0,0)}_scene;_camera;get scene(){return this._scene}get camera(){return this._camera}worldRenderer;WorldRendererClass=yd;async init(){let e=i2,t=new Zl;if(t.currentConfig={version:e,noInventoryGui:!0},await t.updateAssetsData?.({}),this.abortSignal.aborted)return;console.time("load menu background scene");let n=mge(e),s=si()(e),a=globalThis.mcData.blocksArray.filter(v=>{if(!v.name.includes("stained_glass"))return!1;let _=s.fromStateId(v.defaultState,0);if(_.shapes?.length!==1)return!1;let b=_.shapes[0];return b[0]===0&&b[1]===0&&b[2]===0&&b[3]===1&&b[4]===1&&b[5]===1}),l=-15,c=100,d=100;for(let v=-c;v<c;v++)for(let _=-d;_<d;_++){let b=a[Math.floor(Math.random()*a.length)];n.setBlockStateId(new ut(v,_,l),b.defaultState)}this._camera.updateProjectionMatrix(),this._camera.position.set(.5,d/2+.5,.5),this._camera.rotation.set(0,0,0);let u=new ut(...this._camera.position.toArray()),p=new n8(n,2,u);this.abortSignal.aborted||(this.worldRenderer=new this.WorldRendererClass(this.documentRenderer.renderer,this.options,{version:e,worldView:p,inWorldRenderingConfig:pge,playerStateReactive:Ihe().reactive,rendererState:jI().reactive,nonReactiveState:jI().nonReactive,resourcesManager:t}),this.worldRenderer instanceof yd&&(this._scene=this.worldRenderer.realScene,this._camera=this.worldRenderer.camera),p.init(u),await this.worldRenderer.waitForChunksToRender(),!this.abortSignal.aborted&&(this.setupMouseParallax(),console.timeEnd("load menu background scene")))}update(e,t){t&&bd(this.camera,this.documentRenderer.canvas)}dispose(){this.worldRenderer?.destroy(),this.worldRenderer=void 0,this._scene.clear()}setupMouseParallax(){let e=this._camera,t=e.position.x,n=e.position.y,r;document.body.addEventListener("pointermove",s=>{if(s.pointerType!=="mouse")return;let o=.2,a=s.clientX/window.innerWidth-.5,l=-(s.clientY/window.innerHeight-.5);r?.stop(),r=new xr(e.position).to({x:t+a*o,y:n+l*o},0),r.start(),e.updateProjectionMatrix()},{signal:this.abortSignal})}};f();m();h();yt();var N2=class{constructor(e,t,n={},r=!1){this.documentRenderer=e;this.options=t;this.mode=UT(n,r)}active;abortController=new AbortController;mode;lastFrameTime=0;get futuristic(){return this.active instanceof ah?this.active:void 0}get scene(){return this.active?.scene}get camera(){return this.active?.camera}async start(e={}){this.active=this.createImplementation(e),await this.active.init(),this.active.scene.background instanceof Fe&&this.documentRenderer.renderer.setClearColor(this.active.scene.background),this.lastFrameTime=performance.now(),this.documentRenderer.render=(t=!1)=>{let n=performance.now(),r=Math.min((n-this.lastFrameTime)/1e3,.05);this.lastFrameTime=n;let s=this.active;s&&(s.update(r,t),this.documentRenderer.renderer.render(s.scene,s.camera))}}createImplementation(e){switch(this.mode){case"futuristic":return new ah(this.documentRenderer,{useMinecraftTextures:e.useMinecraftTextures,initialScene:e.futuristicScene,initialCamera:e.futuristicCamera,initialBlockGroup:e.futuristicBlockGroup,initialCameraSpeed:e.futuristicCameraSpeed,initialBlockSpeed:e.futuristicBlockSpeed,resourcesManager:e.resourcesManager},this.abortController.signal);case"worldBlocks":return new O2(this.documentRenderer,this.options,this.abortController.signal);default:return new s2(this.documentRenderer)}}dispose(){this.active?.dispose(),this.active=void 0,this.abortController.abort()}};f();m();h();var Dd=tl,aje={rendererWorldPerformance:"normal",rendererMeshersCountOverride:null,starfieldRendering:!0,defaultSkybox:!0,menuBackgroundMode:Dd.mode,menuBackgroundMinecraftTextures:Dd.minecraftTextures,menuBackgroundFuturisticScene:Dd.futuristicScene,menuBackgroundFuturisticCamera:Dd.futuristicCamera,menuBackgroundFuturisticBlockGroup:Dd.futuristicBlockGroup,menuBackgroundFuturisticCameraSpeed:Dd.futuristicCameraSpeedPercent,menuBackgroundFuturisticBlockSpeed:Dd.futuristicBlockSpeedPercent,rendererFuturisticReveal:!1,rendererPerfDebugOverlay:!1,disableBlockEntityTextures:!1,rendererMesher:"wasm",rendererShaderCubeBlocks:!1,rendererShaderCubeDebugMode:"off",showChunkBorders:!1,renderEntities:!0,renderDebug:"basic",frameLimit:!1,backgroundRendering:"20fps",vanillaLook:!1,smoothLighting:!0,newVersionsLighting:!1,vrSupport:!0,vrPageGameRendering:!1,clipWorldBelowY:void 0,highlightBlockColor:"auto",loadPlayerSkins:!0,renderEars:!0,showHand:!0,viewBobbing:!0,dayCycleAndLighting:!0,keepChunksDistance:1,gpuPreference:"default",fov:75};var lje={menuBackgroundMode:{possibleValues:[["classic","Classic"],["futuristic","Futuristic"]],requiresRestart:!0},menuBackgroundMinecraftTextures:{text:"Minecraft block textures",tooltip:"Use block atlas on futuristic menu cubes (loads assets on menu)"},menuBackgroundFuturisticScene:{possibleValues:rh.map(i=>[i,u4[i]])},menuBackgroundFuturisticCamera:{possibleValues:ih.map(i=>[i,f4[i]])},menuBackgroundFuturisticBlockGroup:{possibleValues:sh.map(i=>[i,h4[i]]),text:"Block pool",tooltip:"Block set for textured menu cubes (requires Minecraft textures)"},menuBackgroundFuturisticCameraSpeed:{text:"Camera speed",tooltip:"Orbit / fly-through camera path speed. 0 freezes the path; mouse parallax still works.",min:0,max:200,unit:"%"},menuBackgroundFuturisticBlockSpeed:{text:"Block speed",tooltip:"Floating blocks and sky rotation. Independent of camera path speed.",min:0,max:200,unit:"%"},rendererWorldPerformance:{text:"World performance",tooltip:"Background workers for chunk geometry. Reload to apply.",requiresRestart:!0,possibleValues:[["low-energy","Low Energy"],["normal","Normal"],["maximum","Maximum"]]},starfieldRendering:{text:"Starfield"},defaultSkybox:{text:"Default skybox"},rendererFuturisticReveal:{text:"Futuristic world reveal"},rendererPerfDebugOverlay:{text:"Performance debug overlay"},disableBlockEntityTextures:{text:"Disable block entity textures",tooltip:"Skips signs, banners, heads, maps, etc."},rendererMesher:{possibleValues:[["wasm","WASM"],["legacy-js","Legacy JS"]],text:"Mesher pipeline",tooltip:"WASM is faster. Use JS if WASM is not working. Requires reload.",requiresRestart:!0},rendererShaderCubeBlocks:{text:"Instanced shader cubes",tooltip:"Render full blocks through the global GPU instanced path. Requires WASM mesher and WebGL2.",requiresChunksReload:!0},rendererShaderCubeDebugMode:{text:"Shader cube debug",tooltip:"Instanced cube path visualization (requires shader cubes enabled).",possibleValues:[["off","Off"],["holes","Hole test (red)"],["texIndex","Tile index colors"],["faces","Face id colors"],["atlasAlpha","Atlas alpha"]]},showChunkBorders:{text:"Chunk borders"},renderEntities:{text:"Render entities"},renderDebug:{possibleValues:["advanced","basic","none"]},frameLimit:{text:"Frame limit",tooltip:"false = VSync / unlimited when focused"},backgroundRendering:{text:"Background FPS limit",possibleValues:[["full","NO"],["5fps","5 FPS"],["20fps","20 FPS"]]},vanillaLook:{text:"Vanilla shading",tooltip:"On: Minecraft-style face shading. Off: higher-contrast client shading."},smoothLighting:{},newVersionsLighting:{text:"Lighting in newer versions"},vrSupport:{text:"VR support",tooltip:"Shows VR entry; does not force VR on."},vrPageGameRendering:{text:"VR page game rendering"},clipWorldBelowY:{text:"Clip world below Y"},highlightBlockColor:{possibleValues:[["auto","Auto"],["blue","Blue"],["classic","Classic"]]},loadPlayerSkins:{},renderEars:{tooltip:"Deadmau5 ears when the skin texture includes them"},showHand:{},viewBobbing:{},dayCycleAndLighting:{text:"Day cycle"},keepChunksDistance:{text:"Keep chunks distance",tooltip:"Extra distance before unloading chunks",max:5,unit:""},fov:{min:30,max:110,unit:"\xB0",text:"FOV (Field of View)"},gpuPreference:{text:"GPU preference",tooltip:"WebGL power preference. Requires reload / backend restart to apply.",requiresRestart:!0,possibleValues:[["default","Auto"],["high-performance","Dedicated"],["low-power","Low power"]]}};fi.enabled=!1;globalThis.THREE=Lt;var vge=i=>({updateMap:i.entities.updateMap.bind(i.entities),updateCustomBlock:i.updateCustomBlock.bind(i),getBlockInfo:i.getBlockInfo.bind(i),playEntityAnimation:i.entities.playAnimation.bind(i.entities),damageEntity:i.entities.handleDamageEvent.bind(i.entities),updatePlayerSkin:i.entities.updatePlayerSkin.bind(i.entities),changeHandSwingingState:i.changeHandSwingingState.bind(i),getHighestBlocks:i.getHighestBlocks.bind(i),reloadWorld:i.reloadWorld.bind(i),updateEntityModel:i.entities.updateEntityModel.bind(i.entities),playEntityModelAnimation:i.entities.playEntityModelAnimation.bind(i.entities),addMedia:i.media.addMedia.bind(i.media),destroyMedia:i.media.destroyMedia.bind(i.media),setControlMode:i.media.setControlMode.bind(i.media),setVideoPlaying:i.media.setVideoPlaying.bind(i.media),setVideoSeeking:i.media.setVideoSeeking.bind(i.media),setVideoVolume:i.media.setVideoVolume.bind(i.media),setVideoSpeed:i.media.setVideoSpeed.bind(i.media),handleUserClick:i.media.handleUserClick.bind(i.media),addSectionAnimation(e,t){i.sectionsOffsetsAnimations[e]=t},removeSectionAnimation(e){delete i.sectionsOffsetsAnimations[e]},shakeFromDamage:i.cameraShake.shakeFromDamage.bind(i.cameraShake),onPageInteraction:i.media.onPageInteraction.bind(i.media),downloadMesherLog:i.downloadMesherLog.bind(i),explodeFirework:i.fireworksLegacy.explode.bind(i.fireworksLegacy),explodeFireworkFacingCamera:i.fireworksLegacy.explodeFacingCamera.bind(i.fireworksLegacy),addWaypoint:i.waypoints.addWaypoint.bind(i.waypoints),removeWaypoint:i.waypoints.removeWaypoint.bind(i.waypoints),startCinimaticScript:i.cinimaticScript.startScript.bind(i.cinimaticScript),stopCinimaticScript:i.cinimaticScript.stopScript.bind(i.cinimaticScript),launchFirework:i.fireworks.launchFirework.bind(i.fireworks),setSkyboxImage:i.skyboxRenderer.setSkyboxImage.bind(i.skyboxRenderer),setRain:e=>i.toggleModule("rain",e),spawnBlockBreakParticles(e,t,n,r,s,o){i.getModule("blockBreakParticles")?.spawnBlockBreakParticles(e,t,n,r,s,o)},spawnBlockCrackParticle(e,t,n,r,s,o,a){i.getModule("blockBreakParticles")?.spawnCrackParticle(e,t,n,r,s,o,a)},async loadGeometryExport(e){let{applyWorldGeometryExport:t}=await Promise.resolve().then(()=>(ET(),n3e));return t(i,e)},feedChunkPacket(e){let{kind:t,...n}=e,r={type:t,...n};for(let s of i.workers)s.postMessage(r)}}),cje=[],r8=(i,...e)=>{for(let t of Object.values(globalThis.loadedMods??{}))try{t.threeJsBackendModule?.[i]?.(...e)}catch(n){let r=`[mod three.js] Error calling ${i} on ${t.name}: ${n}`;throw new Error(r)}},gge=()=>{let i,e=null,t=null,n=null,r=null,s=(d,u)=>{dn?i=Lv(d,cje,globalThis):i=d,e=new $6(i,u?.canvas),globalThis.renderer=e.renderer,globalThis.documentRenderer=e,globalThis.threeJsBackend=c,r8("default",c)},o=async d=>{if(!e)throw new Error("Document renderer not initialized");n&&(n.destroy(),n=null,r=null,globalThis.world=void 0,globalThis.frameTimingCollector=void 0),t&&(t.dispose(),t=null);let u={...i.config.menuBackground,...d};t=new N2(e,{...i},u,!!process.env.SINGLE_FILE_BUILD_MODE),r8("menuBackgroundCreated",t),await t.start(u),r8("menuBackgroundReady",t)},a=async d=>{let p=dn?Lv(d,[Zl,yh],globalThis):d;if(!e)throw new Error("Document renderer not initialized");e.nonReactiveState=p.nonReactiveState,globalThis.resourcesManager=p.resourcesManager,t&&(t.dispose(),t=null),n=new yd(e.renderer,i,p),await n.worldReadyPromise,r=new J6(p.nonReactiveState),globalThis.frameTimingCollector=r;let v=e.render;e.render=function(_){v.call(this,_),r?.markFrameStart(),p.inWorldRenderingConfig.paused||n?.render(_),r?.markFrameEnd(),r?.markFrameDisplay()},e.inWorldRenderingConfig=p.inWorldRenderingConfig,globalThis.world=n,r8("worldReady",n)},l=()=>{t&&(t.dispose(),t=null),e&&e.dispose(),n&&(n.destroy(),n=null)},c={id:"threejs",displayName:`three.js ${yo}`,startMenuBackground:o,startWorld:a,disconnect:l,setRendering(d){e.setPaused(!d),n&&(n.renderingActive=d)},getMenuBackground:()=>t??void 0,getDebugOverlay:()=>({get entitiesString(){return n?.entities.getDebugString()},get left(){return{"Geo Memory":n?.chunkMeshManager.getEstimatedMemoryUsage().total??"-"}}}),updateCamera(d,u,p){r?.markCameraUpdate(!d),n?.setFirstPersonCamera(d,u,p)},get soundSystem(){return n?.soundSystem},get backendMethods(){if(n)return vge(n)}};return{main:{init:s,backend:c},workerProxy(){return hB({init(d,u){s(d,{canvas:u})},updateSizeExternal(d,u,p){e?.updateSizeExternal(d,u,p)},startMenuBackground:o,startWorld:a,disconnect:l,setRendering:c.setRendering,updateCamera(d,u,p){let v=d?new ut(d.x,d.y,d.z):null;r?.markCameraUpdate(!v),c.updateCamera(v,u,p)},async callBackendMethod(d,...u){if(!n)throw new Error("World renderer not initialized");let v=vge(n)[d];if(!v)throw new Error(`Backend method ${String(d)} is unavailable`);return v(...u)}})}}};globalThis.structuredClone??=i=>JSON.parse(JSON.stringify(i));var _ge=i=>{bC(i);let e=globalThis;e.mcData=i,e.loadedData=i,self.postMessage({type:"mcDataApplied"})};self.addEventListener("message",i=>{let e=i.data;if(e.type==="mcData"){_ge(e.mcData),console.log("data loaded");return}Array.isArray(e)&&e.forEach(t=>{t.type==="mcData"&&_ge(t.mcData)})});var dje=gge();dje.workerProxy();})();
28831
+ }`})}},LT=class{constructor(e){this.worldRenderer=e}points;clock=new Is;enabled=!1;currentTime;enable(){this.enabled||(this.enabled=!0,this.updateVisibility())}disable(){this.enabled&&(this.enabled=!1,this.removeStars())}toggle(){return this.enabled?this.disable():this.enable(),this.enabled}enablementCheck=()=>this.currentTime?this.currentTime>13500&&this.currentTime<23e3:!1;render=e=>{this.points&&(this.points.position.set(0,0,0),this.points.material.uniforms.time.value=this.clock.getElapsedTime()*.2)};updateTimeOfDay(e){this.currentTime=e,this.enabled&&this.updateVisibility()}updateVisibility(){if(!this.enabled)return;let e=this.enablementCheck?.()??!1;e&&!this.points?this.createStars():!e&&this.points&&this.removeStars()}createStars(){if(this.points)return;let e=80,t=50,n=7e3,r=7,s=10,o=new it,a=b=>new K().setFromSpherical(new x5(b,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)),l=[],c=[],d=Array.from({length:n},()=>(.5+.5*Math.random())*r),u=new Fe,p=e+t,v=t/n;for(let b=0;b<n;b++)p-=v*Math.random(),l.push(...a(p).toArray()),u.setHSL(b/n,s,.9),c.push(u.r,u.g,u.b);o.setAttribute("position",new qe(l,3)),o.setAttribute("color",new qe(c,3)),o.setAttribute("size",new qe(d,1));let _=new PT;_.blending=Ci,_.depthTest=!0,_.depthWrite=!1,_.transparent=!0,this.points=new tr(o,_),this.points.renderOrder=-1,this.worldRenderer.scene.add(this.points)}dispose(){this.removeStars()}removeStars(){this.points&&(this.points.geometry.dispose(),this.points.material.dispose(),this.worldRenderer.scene.remove(this.points),this.points=void 0)}},E3e={id:"starfield",controller:LT,enabledDefault:!0,cannotBeDisabled:!0};var S3e={starfield:E3e,futuristicReveal:w3e,rain:b3e,cameraBobbing:v3e,blockBreakParticles:p3e};f();m();h();f();m();h();var BT=()=>({longRenderTime:!1,constantLongRenderTime:!1,tooManyEntities:!1,tooManyTextures:!1,unknownReason:!1});f();m();h();f();m();h();var r2=class{constructor(e){this.factors=e}renderTimeHistory=[];onFrame(e){this.pushRenderTime(e.totalMs),this.recompute(e)}pushRenderTime(e){this.renderTimeHistory.push(e),this.renderTimeHistory.length>24&&this.renderTimeHistory.shift()}recompute(e){let t=e.fps>0&&e.fps<=45,n=Math.max(0,e.totalMs-e.entitiesMs),r=e.totalMs>=30,s=this.renderTimeHistory.length,o=this.renderTimeHistory.filter(p=>p>=30).length,a=s>=8&&o/s>=.65,l=e.loadedTextureCount>=100,c=t&&e.entitiesMs>=8&&n<=20,u=t&&!(r||a||c||l);this.factors.longRenderTime=r,this.factors.constantLongRenderTime=a,this.factors.tooManyEntities=c,this.factors.tooManyTextures=l,this.factors.unknownReason=u}reset(){this.renderTimeHistory.length=0,this.factors.longRenderTime=!1,this.factors.constantLongRenderTime=!1,this.factors.tooManyEntities=!1,this.factors.tooManyTextures=!1,this.factors.unknownReason=!1}};f();m();h();var MGe=[{key:"longRenderTime",code:"LR"},{key:"constantLongRenderTime",code:"CLR"},{key:"tooManyEntities",code:"ENT"},{key:"tooManyTextures",code:"TEX"},{key:"unknownReason",code:"UNK"}];function NT(i){let e=MGe.filter(({key:t})=>i[t]).map(({code:t})=>t);return e.length>0?e.join("+"):""}var _d=class _d extends O7{constructor(t,n,r){if(!r.resourcesManager)throw new Error("resourcesManager is required in displayOptions");super(r.resourcesManager,r,n);this.renderer=t;this.initOptions=n;this.displayOptions=r;this.performanceMonitor=new r2(this.reactiveState.world.instabilityFactors),this.renderer=t,r.rendererState.renderer=_d.getRendererInfo(t)??"...",this.chunkMeshManager=new n2(this,this.scene,this.material,this.worldSizeParams.worldHeight,this.viewDistance),this.onRenderDistanceChanged=s=>{this.chunkMeshManager.updateViewDistance(s)},this.cursorBlock=new U_(this),this.holdingBlock=Kp(this),this.holdingBlockLeft=Kp(this,!0);for(let s of Object.values(S3e))this.registerModule(s);this.skyboxRenderer=new $_(this.realScene,!1,null),this.skyboxRenderer.init(),this.addDebugOverlay(),this.resetScene(),this.init(),this.soundSystem=new F_(this),this.cameraShake=new z_(this,this.onRender),this.media=new H_(this),this.fireworksLegacy=new W_(this),this.waypoints=new G_(this),this.cinimaticScript=new j_(this,(s,o,a)=>this.setCinimaticCamera(s,o,a),s=>this.setCinimaticFov(s),()=>({position:new ut(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),yaw:this.cameraShake.getBaseRotation().yaw,pitch:this.cameraShake.getBaseRotation().pitch,fov:this.camera.fov})),this.fireworks=new X_(this.realScene,this.sceneOrigin),this.renderUpdateEmitter.on("chunkFinished",s=>{this.finishChunk(s)}),this.worldSwitchActions(),this.initializeModules()}outputFormat="threeJs";isShaderCubeBlocksEnabled(){return this.worldRendererConfig.shaderCubeBlocks===!0&&!!this.renderer?.capabilities?.isWebGL2}chunkMeshManager;get sectionObjects(){return this.chunkMeshManager.sectionObjects}chunkTextures=new Map;signsCache=new Map;cameraSectionPos=new ut(0,0,0);holdingBlock;holdingBlockLeft;scene=new _r;get realScene(){return this.scene}ambientLight=new vo(13421772);directionalLight=new ss(16777215,.5);entities=new D_(this,globalThis.mcData);performanceMonitor;cameraGroupVr;material=new st({vertexColors:!0,transparent:!0,alphaTest:.1});itemsTexture;cursorBlock;onRender=[];lastRenderTime=0;animatedFov=0;lastFovAnimTime=0;cameraShake;cameraContainer;media;get waitingChunksToDisplay(){return this.chunkMeshManager.waitingChunksToDisplay}waypoints;cinimaticScript;camera;renderTimeAvg=0;pendingSectionUpdates=new Map;pendingSectionBufferStartTimes=new Map;get estimatedMemoryUsage(){return this.chunkMeshManager.getEstimatedMemoryUsage().total}modules={};sectionsOffsetsAnimations={};fountains=[];fireworksLegacy;DEBUG_RAYCAST=!1;skyboxRenderer;fireworks;sceneOrigin=new Y_(this.scene);cameraWorldPos={x:0,y:0,z:0};_cameraPositionAccessWarned=!1;_tmpCameraPos=new K;currentPosTween;currentRotTween;_tpDirection=new K;_tpPitchQuat=new Ut;_tpYawQuat=new Ut;_tpFinalQuat=new Ut;_tpScenePos=new K;_tpAxisX=new K(1,0,0);_tpAxisY=new K(0,1,0);_tpRaycaster=new va;_tpChunkWorldPos=new K;get tilesRendered(){return this.chunkMeshManager.getTotalTiles()}get blocksRendered(){return this.chunkMeshManager.getTotalBlocks()}registerModule(t){if(t.id in this.modules){console.warn(`Module ${t.id} is already registered`);return}let n=new t.controller(this),r={manifest:t,controller:n,enabled:!1,toggle:()=>this.toggleModule(t.id)};this.modules[t.id]=r,t.enabledDefault&&this.toggleModule(t.id,!0)}enableModule(t){let n=this.modules[t];if(!n){console.warn(`Module ${t} not found`);return}n.enabled||(n.enabled=!0,n.controller.enable(),n.controller.render&&this.onRender.push(n.controller.render))}disableModule(t){let n=this.modules[t];if(!n){console.warn(`Module ${t} not found`);return}if(n.manifest.cannotBeDisabled){console.warn(`Module ${t} cannot be disabled`);return}if(n.enabled&&(n.enabled=!1,n.controller.disable(),n.controller.render)){let r=this.onRender.indexOf(n.controller.render);r>-1&&this.onRender.splice(r,1)}}toggleModule(t,n){let r=this.modules[t];if(!r)return console.warn(`Module ${t} not found`),!1;let s=n!==void 0?n:!r.enabled;if(s===r.enabled)return r.enabled;if(!s&&r.manifest.cannotBeDisabled)return console.warn(`Module ${t} cannot be disabled`),!0;if(r.enabled=s,s)r.controller.enable(),r.controller.render&&!this.onRender.includes(r.controller.render)&&this.onRender.push(r.controller.render);else if(r.controller.disable(),r.controller.render){let o=this.onRender.indexOf(r.controller.render);o>-1&&this.onRender.splice(o,1)}return s}disposeModules(){for(let t of Object.values(this.modules))t.controller.dispose();this.modules={}}initializeModules(){this.updateModulesFromConfig()}getModule(t){return this.modules[t]?.controller}anyModuleRequiresHeightmap(){return Object.values(this.modules).some(t=>t.enabled&&t.manifest.requiresHeightmap)}get cameraObject(){return this.cameraGroupVr??this.cameraContainer}_wrapCameraPositionWithWarning(){let t=this.camera.position,n=this,r=20,s=(l,c,d)=>Math.abs(l)>r||Math.abs(c)>r||Math.abs(d)>r,o=()=>{!n._cameraPositionAccessWarned&&typeof process<"u"},a=new Proxy(t,{set(l,c,d){return(c==="x"||c==="y"||c==="z")&&typeof d=="number"&&Math.abs(d)>r&&o(),l[c]=d,!0},get(l,c,d){let u=l[c];return c==="set"?function(p,v,_){return s(p,v,_)&&o(),l.set(p,v,_)}:c==="setX"||c==="setY"||c==="setZ"?function(p){return Math.abs(p)>r&&o(),l[c](p)}:c==="copy"?function(p){return s(p.x,p.y,p.z)&&o(),l.copy(p)}:typeof u=="function"?u.bind(l):u}});Object.defineProperty(this.camera,"position",{value:a,configurable:!0,enumerable:!0})}worldSwitchActions(){this.onWorldSwitched.push(()=>{this.protocolCustomBlocks.clear(),this.sectionsOffsetsAnimations={},this.waypoints.clear(),this.cinimaticScript.stopScript(),this.fireworks.clear()})}downloadWorldGeometry(){wT(this,new K(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),this.cameraShake.getBaseRotation(),"world-geometry.json")}updateEntity(t,n=!1){let r={rotation:{head:{x:t.headPitch??t.pitch,y:t.headYaw,z:0}}};n?this.entities.updateEntityPosition(t,!1,r):this.entities.update(t,r)}updatePlayerEntity(t){this.entities.handlePlayerEntity(t)}resetScene(){this.sceneOrigin.update(0,0,0),this.cameraWorldPos.x=0,this.cameraWorldPos.y=0,this.cameraWorldPos.z=0,this.scene.matrixAutoUpdate=!1,this.scene.background=new Fe(this.initOptions.config.sceneBackground),this.scene.add(this.ambientLight),this.directionalLight.position.set(1,1,.5).normalize(),this.directionalLight.castShadow=!0,this.scene.add(this.directionalLight);let t=this.renderer.getSize(new Ue);this.camera=new Yt(75,t.x/t.y,.1,1e3),this._wrapCameraPositionWithWarning(),this.cameraContainer=new At,this.cameraContainer.add(this.camera),this.scene.add(this.cameraContainer)}watchReactivePlayerState(){super.watchReactivePlayerState(),this.onReactivePlayerStateUpdated("inWater",t=>{this.skyboxRenderer.updateWaterState(t,this.playerStateReactive.waterBreathing)}),this.onReactivePlayerStateUpdated("waterBreathing",t=>{this.skyboxRenderer.updateWaterState(this.playerStateReactive.inWater,t)}),this.onReactivePlayerStateUpdated("ambientLight",t=>{t&&(this.ambientLight.intensity=t)}),this.onReactivePlayerStateUpdated("directionalLight",t=>{t&&(this.directionalLight.intensity=t)}),this.onReactivePlayerStateUpdated("lookingAtBlock",t=>{this.cursorBlock.setHighlightCursorBlock(t?new ut(t.x,t.y,t.z):null,t?.shapes)}),this.onReactivePlayerStateUpdated("diggingBlock",t=>{this.cursorBlock.updateBreakAnimation(t?{x:t.x,y:t.y,z:t.z}:void 0,t?.stage??null,t?.mergedShape)}),this.onReactivePlayerStateUpdated("perspective",t=>{let n=new ut(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z);this.updateCamera(n,this.cameraShake.getBaseRotation().yaw,this.cameraShake.getBaseRotation().pitch)})}watchReactiveConfig(){super.watchReactiveConfig(),this.onReactiveConfigUpdated("showChunkBorders",n=>{this.updateShowChunksBorder(n)}),this.onReactiveConfigUpdated("defaultSkybox",n=>{this.skyboxRenderer.updateDefaultSkybox(n)}),this.onReactiveConfigUpdated("shaderCubeDebugMode",()=>{this.chunkMeshManager.syncCubeShaderUniforms()}),this.onReactiveConfigUpdated("futuristicReveal",()=>{this.updateModulesFromConfig()});let t=this.displayOptions.inWorldRenderingConfig.handRenderer;this.onReactiveConfigUpdated("handRenderer",n=>{if(n===t)return;t=n;let r=this.holdingBlock.ready,s=this.holdingBlockLeft.ready;this.holdingBlock.dispose(),this.holdingBlockLeft.dispose(),this.holdingBlock=Kp(this),this.holdingBlockLeft=Kp(this,!0),r&&(this.holdingBlock.ready=!0,this.holdingBlock.updateItem()),s&&(this.holdingBlockLeft.ready=!0,this.holdingBlockLeft.updateItem())}),this.onReactiveConfigUpdated("*",()=>{this.updateModulesFromConfig()}),this.updateModulesFromConfig()}updateModulesFromConfig(){let{moduleStates:t}=this.worldRendererConfig;for(let[n,r]of Object.entries(this.modules)){let s=t[n];if(s==="enabled"){r.enabled||this.toggleModule(n,!0);continue}if(s==="disabled"){r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1);continue}if(s==="auto"||s===void 0)if(r.controller.autoEnableCheck){let o=r.controller.autoEnableCheck();o&&!r.enabled?this.toggleModule(n,!0):!o&&r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1)}else{let o=r.manifest.enabledDefault??!1;o&&!r.enabled?this.toggleModule(n,!0):!o&&r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1)}}}changeHandSwingingState(t,n=!1){let r=n?this.holdingBlockLeft:this.holdingBlock;t?r.startSwing():r.stopSwing()}async updateAssetsData(){let t=this.resourcesManager.currentResources,n=this.material.map,r=this.itemsTexture,s=u0(t.blocksAtlasImage);s.needsUpdate=!0,s.flipY=!1,this.material.map=s,this.chunkMeshManager.syncCubeShaderUniforms();let o=u0(t.itemsAtlasImage);o.needsUpdate=!0,o.flipY=!1,this.itemsTexture=o,n&&n.dispose(),r&&r.dispose(),await super.updateAssetsData(),this.onAllTexturesLoaded(),Object.keys(this.loadedChunks).length>0&&(console.log("rerendering chunks because of texture update"),this.rerenderAllChunks())}onAllTexturesLoaded(){this.holdingBlock.ready=!0,this.holdingBlock.updateItem(),this.holdingBlockLeft.ready=!0,this.holdingBlockLeft.updateItem()}changeBackgroundColor(t){this.realScene.background=new Fe(t[0],t[1],t[2])}changeCardinalLight(t){this.worldRendererConfig.cardinalLight=t}timeUpdated(t){let n=this.getModule("starfield");n?.updateTimeOfDay&&n.updateTimeOfDay(t),this.skyboxRenderer.updateTime(t)}biomeUpdated(t){t?.temperature!==void 0&&this.skyboxRenderer.updateTemperature(t.temperature)}biomeReset(){this.skyboxRenderer.updateTemperature(pT)}getItemRenderData(t,n){return V2e(t,n,this.resourcesManager,this.playerStateReactive)}async demoModel(){let t=cursorBlockRel(0,1,0).position,n=await Sp();Dhe(n,t);let r=new _o(n,16776960);n.add(r),this.realScene.add(n)}demoItem(){let t=cursorBlockRel(0,1,0).position,{mesh:n}=this.entities.getItemMesh({itemId:541},{});n.position.set(t.x+.5,t.y+.5,t.z+.5);let r=new _o(n,16776960);n.add(r),this.realScene.add(n)}debugOverlayAdded=!1;addDebugOverlay(){if(this.debugOverlayAdded)return;this.debugOverlayAdded=!0;let t=P7("debug-overlay",80,0,void 0,{className:C7});setInterval(()=>{if(t.setVisibility(this.displayAdvancedStats),this.displayAdvancedStats){let n=l=>new Intl.NumberFormat("en-US",{}).format(l),r=l=>new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(l),s="";s+=`TE: ${n(this.renderer.info.memory.textures)} `,s+=`F: ${r(this.tilesRendered)} `,s+=`B: ${r(this.blocksRendered)} `,s+=`MEM: ${this.chunkMeshManager.getEstimatedMemoryUsage().total} `;let o=this.chunkMeshManager.getStats();s+=`POOL: ${o.activeCount}/${o.poolSize} `;let a=NT(this.reactiveState.world.instabilityFactors);a&&(s+=`PF: ${a} `),t.updateText(s),this.backendInfoReport=s}},200)}updatePosDataChunk(t){let n=this.sectionObjects[t];if(!n)return;let[r,s,o]=t.split(",").map(d=>Math.floor(+d/16)),l=500-(Math.abs(r-this.cameraSectionPos.x)+Math.abs(s-this.cameraSectionPos.y)+Math.abs(o-this.cameraSectionPos.z)),c=n.mesh??n.shaderMesh??n.children.find(d=>d.name==="mesh"||d.name==="shaderMesh");c&&(c.renderOrder=l)}updateViewerPosition(t){this.viewerChunkPosition=t}cameraSectionPositionUpdate(){for(let t in this.sectionObjects)this.sectionObjects[t]&&this.updatePosDataChunk(t)}getDir(t,n){return t===n?0:t<n?1:-1}finishChunk(t){this.chunkMeshManager.finishChunkDisplay(t)}applyPendingSectionUpdates(){if(this.pendingSectionUpdates.size===0)return;let t=performance.now(),n=this.getSectionHeight(),r=[];for(let s of this.pendingSectionUpdates.keys()){let o=this.pendingSectionBufferStartTimes.get(s)??t;if(t-o<_d.MAX_SECTION_UPDATE_BUFFER_MS){let[l,c,d]=s.split(",").map(Number),u=[`${l-16},${c},${d}`,`${l+16},${c},${d}`,`${l},${c-n},${d}`,`${l},${c+n},${d}`,`${l},${c},${d-16}`,`${l},${c},${d+16}`],p=!1;for(let v of u)if(this.sectionsWaiting.has(v)&&!this.pendingSectionUpdates.has(v)&&this.sectionObjects[v]){p=!0;break}if(p)continue}r.push(s)}if(r.length!==0)for(let s of r){let o=this.pendingSectionUpdates.get(s);this.pendingSectionUpdates.delete(s),this.pendingSectionBufferStartTimes.delete(s);let a=o.key.split(","),l=`${a[0]},${a[2]}`;if(!this.loadedChunks[l]||!this.active){this.chunkMeshManager.releaseSection(o.key);continue}if(!this.chunkMeshManager.sectionHasRenderableContent(o.geometry)){this.chunkMeshManager.releaseSection(o.key);continue}this.chunkMeshManager.updateSection(o.key,o.geometry),this.updatePosDataChunk(o.key)}}clearPendingSectionUpdatesForChunk(t,n){for(let r of[...this.pendingSectionUpdates.keys()])r.startsWith(`${t},`)&&r.endsWith(`,${n}`)&&(this.pendingSectionUpdates.delete(r),this.pendingSectionBufferStartTimes.delete(r))}handleWorkerMessage(t){if(t.type==="geometry"){let n=t.key.split(","),r=`${n[0]},${n[2]}`;if(!this.loadedChunks[r]||!this.active){this.pendingSectionUpdates.delete(t.key),this.pendingSectionBufferStartTimes.delete(t.key);return}if(this.sectionObjects[t.key]){this.pendingSectionUpdates.set(t.key,t),this.pendingSectionBufferStartTimes.has(t.key)||this.pendingSectionBufferStartTimes.set(t.key,performance.now());return}if(!this.chunkMeshManager.sectionHasRenderableContent(t.geometry)){this.chunkMeshManager.releaseSection(t.key);return}this.chunkMeshManager.updateSection(t.key,t.geometry),this.updatePosDataChunk(t.key)}}getSignTexture(t,n,r,s=!1){let o=m1(t),a=this.chunkTextures.get(`${o[0]},${o[1]}`);a||(a={},this.chunkTextures.set(`${o[0]},${o[1]}`,a));let l=`${t.x},${t.y},${t.z}`;if(a[l])return a[l];let c=(0,k3e.default)(this.version),d=R7(n,r,c);if(!d)return;let u=new Gt(d);return u.magFilter=Qe,u.minFilter=Qe,u.needsUpdate=!0,a[l]=u,u}getCameraPosition(t){return(t??this._tmpCameraPos).set(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z)}getSectionCameraPosition(){let t=this.getCameraPosition();return new ut(Math.floor(t.x/16),Math.floor(t.y/16),Math.floor(t.z/16))}updateCameraSectionPos(){let t=this.getSectionCameraPosition();this.cameraSectionPos.equals(t)||(this.cameraSectionPos=t,this.cameraSectionPositionUpdate())}setFirstPersonCamera(t,n,r){let s=this.playerStateReactive.eyeHeight;this.updateCamera(t?.offset(0,s,0)??null,n,r),this.updateCameraSectionPos()}getThirdPersonCamera(t,n,r){t??=new K(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z);let s=this.playerStateReactive.perspective==="third_person_back",o=4,a=this._tpDirection.set(0,0,-1),l=this._tpPitchQuat.setFromAxisAngle(this._tpAxisX,r),c=this._tpYawQuat.setFromAxisAngle(this._tpAxisY,n),d=this._tpFinalQuat.multiplyQuaternions(c,l);a.applyQuaternion(d),s&&a.multiplyScalar(-1),this.DEBUG_RAYCAST&&this.debugRaycast(t,a,o);let u=this._tpScenePos.set(this.sceneOrigin.toSceneX(t.x),this.sceneOrigin.toSceneY(t.y),this.sceneOrigin.toSceneZ(t.z)),p=this._tpRaycaster;p.set(u,a),p.far=o;let v=80,_=v*v,b=t.x,y=t.y,g=t.z,w=[];for(let R of Object.values(this.sectionObjects)){if(R.name!=="chunk"||!R.visible||R.worldX===void 0)continue;let L=R.worldX-b,M=R.worldY-y,k=R.worldZ-g;if(L*L+M*M+k*k>_)continue;let F=R.children.find(Z=>Z.name==="mesh"||Z.name==="shaderMesh");F&&w.push(F)}let x=p.intersectObjects(w,!1),E=o;x.length>0&&(E=Math.max(.5,x[0].distance-.2));let A=this.chunkMeshManager.raycastShaderSectionAABBs(t,a,E,v);return A!==void 0&&(E=Math.max(.5,A-.2)),new ut(t.x+a.x*E,t.y+a.y*E,t.z+a.z*E)}debugRaycastHelper;debugHitPoint;debugRaycast(t,n,r){this.debugRaycastHelper&&(this.realScene.remove(this.debugRaycastHelper),this.debugRaycastHelper=void 0),this.debugHitPoint&&(this.realScene.remove(this.debugHitPoint),this.debugHitPoint=void 0);let s=new K(this.sceneOrigin.toSceneX(t.x),this.sceneOrigin.toSceneY(t.y),this.sceneOrigin.toSceneZ(t.z));this.debugRaycastHelper=new yc(n.clone().normalize(),s,r,16711680,r*.1,r*.05),this.realScene.add(this.debugRaycastHelper);let o=new rs(.2,8,8),a=new st({color:65280});this.debugHitPoint=new je(o,a),this.debugHitPoint.position.copy(s).add(n.clone().multiplyScalar(r)),this.realScene.add(this.debugHitPoint)}prevFramePerspective=null;setCinimaticCamera(t,n,r){this.cameraWorldPos.x=t.x,this.cameraWorldPos.y=t.y,this.cameraWorldPos.z=t.z,this.sceneOrigin.update(t.x,t.y,t.z),this.cameraObject.position.set(0,0,0),this.cameraShake.setBaseRotation(r,n),this.updateCameraSectionPos()}setCinimaticFov(t){this.animatedFov=t,this.camera.fov=t,this.camera.updateProjectionMatrix()}updateSmoothFov(){if(this.cinimaticScript.running)return;let t=this.displayOptions.inWorldRenderingConfig.fov,n=this.playerStateReactive.fovMultiplier,r=t*(Number.isFinite(n)?n:1),s=performance.now();if(this.animatedFov===0&&(this.animatedFov=r),Math.abs(this.animatedFov-r)>=.01){let o=s-this.lastFovAnimTime,a=Math.min(o/_d.FOV_TRANSITION_MS,1),l=c=>1-(1-c)**3;this.animatedFov+=(r-this.animatedFov)*l(a),Math.abs(this.animatedFov-r)<.01&&(this.animatedFov=r)}else this.animatedFov=r;this.lastFovAnimTime=s,this.camera.fov!==this.animatedFov&&(this.camera.fov=this.animatedFov,this.camera.updateProjectionMatrix())}updateCamera(t,n,r){if(!this.cinimaticScript.running){if(t){this.renderer.xr.isPresenting&&(t.y-=this.camera.position.y),this.currentPosTween?.stop();let s=this.displayOptions.inWorldRenderingConfig.instantCameraUpdate?0:this.playerStateUtils.isSpectatingEntity()?150:50;this.currentPosTween=new xr(this.cameraWorldPos).to({x:t.x,y:t.y,z:t.z},s).onUpdate(()=>{this.sceneOrigin.update(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),this.cameraObject.position.set(0,0,0)}).start()}if(this.playerStateUtils.isSpectatingEntity()){let s=this.cameraShake.getBaseRotation(),o=0,a=Math.PI/2;s.yaw<a&&n>Math.PI+a?o=-Math.PI*2:n<a&&s.yaw>Math.PI+a&&(o=Math.PI*2),this.currentRotTween?.stop(),this.currentRotTween=new xr(s).to({pitch:r,yaw:n+o},100).onUpdate(l=>this.cameraShake.setBaseRotation(l.pitch,l.yaw-o)).start()}else{this.currentRotTween?.stop(),this.cameraShake.setBaseRotation(r,n);let{perspective:s}=this.playerStateReactive;if(s==="third_person_back"||s==="third_person_front"){let o=new K(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),a=this.getThirdPersonCamera(o,n,r),l=o.distanceTo(new K(a.x,a.y,a.z)),c=s==="third_person_back"?l:-l;this.camera.position.set(0,0,c),s==="third_person_front"?this.camera.rotation.set(0,Math.PI,0):this.camera.rotation.set(0,0,0)}else this.camera.position.z=0,this.camera.rotation.set(0,0,0),this.debugRaycastHelper&&(this.realScene.remove(this.debugRaycastHelper),this.debugRaycastHelper=void 0),this.debugHitPoint&&(this.realScene.remove(this.debugHitPoint),this.debugHitPoint=void 0)}this.updateCameraSectionPos()}}debugChunksVisibilityOverride(){let{chunksRenderAboveOverride:t,chunksRenderBelowOverride:n,chunksRenderDistanceOverride:r,chunksRenderAboveEnabled:s,chunksRenderBelowEnabled:o,chunksRenderDistanceEnabled:a}=this.reactiveDebugParams,l=this.getSectionHeight(),c=this.cameraSectionPos.y*l;if(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay&&t!==void 0||n!==void 0||r!==void 0)for(let[d,u]of Object.entries(this.sectionObjects)){if(u._waitingForChunkDisplay)continue;let[p,v,_]=d.split(",").map(Number),b=s&&t!==void 0?v<=c+t:o&&n!==void 0?v>=c-n:a&&r!==void 0?Math.abs(v-c)<=r:!0;u.visible=b}else this.chunkMeshManager.updateSectionsVisibility()}render(t=!1){if(this.currentRenderedFrames++,this.reactiveDebugParams.stopRendering)return;this.debugChunksVisibilityOverride();let n=performance.now();this.lastRendered=performance.now();let r=this.lastRenderTime>0?Math.min(Math.max((n-this.lastRenderTime)/1e3,0),.1):1/60;this.lastRenderTime=n,this.cursorBlock.render(),this.updateSectionOffsets();let s=this.getCameraPosition();if(this.skyboxRenderer.update(s,this.viewDistance),this.updateSmoothFov(),t){let u=this.renderer.getSize(new Ue);this.camera.aspect=u.width/u.height,this.camera.updateProjectionMatrix()}let o=0;if(!this.reactiveDebugParams.disableEntities){let u=performance.now();this.entities.render(),o=performance.now()-u}let a=this.cameraGroupVr instanceof at?this.cameraGroupVr.children.find(u=>u instanceof Yt):this.camera;this.applyPendingSectionUpdates();let l=this.chunkMeshManager.globalBlockBuffer;l&&(l.setCameraOrigin(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),l.uploadDirtyRange()),this.renderer.render(this.scene,a),this.displayOptions.inWorldRenderingConfig.showHand&&this.playerStateReactive.gameMode!=="spectator"&&this.playerStateReactive.perspective==="first_person"&&!this.renderer.xr.isPresenting&&(this.holdingBlock.render(this.camera,this.renderer,this.ambientLight,this.directionalLight),this.holdingBlockLeft.render(this.camera,this.renderer,this.ambientLight,this.directionalLight));for(let u of this.fountains)this.sectionObjects[u.sectionId]&&!this.sectionObjects[u.sectionId].foutain&&(u.createParticles(this.sectionObjects[u.sectionId]),this.sectionObjects[u.sectionId].foutain=!0),u.render();this.waypoints.render(),this.fireworks.update();for(let u of this.onRender)u(r);let d=performance.now()-n;this.worldRendererConfig.autoLowerRenderDistance&&this.chunkMeshManager.recordRenderTime(d),this.renderTimeAvgCount++,this.renderTimeAvg=(this.renderTimeAvg*(this.renderTimeAvgCount-1)+d)/this.renderTimeAvgCount,this.renderTimeMax=Math.max(this.renderTimeMax,d),this.performanceMonitor.onFrame({totalMs:d,entitiesMs:o,loadedTextureCount:this.renderer.info.memory.textures,fps:this.lastFps})}renderHead(t,n,r,s){let o;if(s.SkullOwner?o=s.SkullOwner.Properties?.textures?.[0]?.Value:o=s.profile?.properties?.find(a=>a.name==="textures")?.value,!!o)try{let l=JSON.parse(Buffer.from(o,"base64").toString()).textures?.SKIN?.url,{skinTexturesProxy:c}=this.worldRendererConfig;c&&(l=l?.replace("http://textures.minecraft.net/",c).replace("https://textures.minecraft.net/",c));let d=I0(this,l,R0.head),u=new at;return r&&d.position.set(0,.3125,.3125),d.position.y-=23/16,u.add(d),this.sceneOrigin.track(u),u.position.set(t.x+.5,t.y+.045,t.z+.5),u.rotation.set(0,-_t.degToRad(n*(r?90:45/2)),0),u.scale.set(.8,.8,.8),u}catch(a){console.error("Error decoding player texture:",a)}}renderSign(t,n,r,s,o){let a=this.getSignTexture(t,o,s);if(!a)return;let l=new je(new _n(1,1),new st({map:a,transparent:!0}));l.renderOrder=999;let c=7/16,d=s?1.3:1;l.scale.set(1*d,c*d,1*d);let u=(s?2:1.5)/16,p=.25/16;r&&!s?l.position.set(0,0,-.5+u+p+1e-4):l.position.set(0,0,u/2+1e-4);let v=new at;v.rotation.set(0,-_t.degToRad(n*(r?90:45/2)),0),v.add(l);let _=(s?10:8)/16,b=(s?0:r?4.333:9.333)/16,y=_/2+b;return this.sceneOrigin.track(v),v.position.set(t.x+.5,t.y+y,t.z+.5),v}lightUpdate(t,n){for(let r=this.worldSizeParams.minY;r<this.worldSizeParams.worldHeight;r+=16)this.setSectionDirty(new ut(t,r,n))}rerenderAllChunks(){for(let t of Object.keys(this.sectionObjects)){let[n,r,s]=t.split(",").map(Number);this.setSectionDirty(new ut(n,r,s))}}updateShowChunksBorder(t){this.chunkMeshManager.updateAllBoxHelpers(t)}resetWorld(){super.resetWorld(),this.pendingSectionUpdates.clear(),this.pendingSectionBufferStartTimes.clear(),this.chunkMeshManager.dispose(),this.chunkMeshManager=new n2(this,this.scene,this.material,this.worldSizeParams.worldHeight,this.viewDistance),this.debugRaycastHelper&&(this.realScene.remove(this.debugRaycastHelper),this.debugRaycastHelper=void 0),this.debugHitPoint&&(this.realScene.remove(this.debugHitPoint),this.debugHitPoint=void 0)}getLoadedChunksRelative(t,n=!1){let[r,s,o]=kA(t);return Object.fromEntries(Object.entries(this.sectionObjects).map(([a,l])=>{let[c,d,u]=a.split(",").map(Number),[p,v,_]=kA({x:c,y:d,z:u});return[n?`${p-r},${v-s},${_-o}`:`${p-r},${_-o}`,l]}))}cleanChunkTextures(t,n){let r=this.chunkTextures.get(`${Math.floor(t/16)},${Math.floor(n/16)}`)??{};for(let s of Object.keys(r))r[s].dispose(),delete r[s];this.chunkMeshManager.cleanSignChunkTextures(t,n)}readdChunks(){for(let t of Object.keys(this.sectionObjects))this.scene.remove(this.sectionObjects[t]);setTimeout(()=>{for(let t of Object.keys(this.sectionObjects))this.scene.add(this.sectionObjects[t])},500)}disableUpdates(t=this.scene.children){for(let n of t)n.matrixWorldNeedsUpdate=!1,this.disableUpdates(n.children??[])}removeColumn(t,n){super.removeColumn(t,n),this.cleanChunkTextures(t,n),this.clearPendingSectionUpdatesForChunk(t,n);let r=this.getSectionHeight(),s=this.worldMinYRender;for(let o=s;o<this.worldSizeParams.worldHeight;o+=r){let a=`${t},${o},${n}`;this.chunkMeshManager.sectionObjects[a]&&this.chunkMeshManager.releaseSection(a)}this.chunkMeshManager.onChunkRemovedFromGate(`${t},${n}`)}updateViewerPosition(t){super.updateViewerPosition(t),this.chunkMeshManager.pendingNearReveal.size>0&&this.chunkMeshManager.tryRevealPending()}onViewerChunkPositionChanged(){this.chunkMeshManager.tryRevealPending()}setSectionDirty(...t){let[n]=t;this.cleanChunkTextures(n.x,n.z),super.setSectionDirty(...t)}static getRendererInfo(t){try{let n=t.getContext();return`${n.getParameter(n.getExtension("WEBGL_debug_renderer_info").UNMASKED_RENDERER_WEBGL)}`}catch(n){console.warn("Failed to get renderer info",n)}}worldStop(){this.media.onWorldStop()}destroy(){this.performanceMonitor?.reset(),this.pendingSectionUpdates.clear(),this.pendingSectionBufferStartTimes.clear(),this.chunkMeshManager.dispose(),this.disposeModules(),this.fireworksLegacy.destroy(),super.destroy(),this.skyboxRenderer.dispose(),this.fireworks.dispose()}shouldObjectVisible(t){let r=this.getSectionHeight(),s,o,a,l=this.sceneOrigin.getWorldPosition(t);l?(s=l.x,o=l.y,a=l.z):(s=this.sceneOrigin.toWorldX(t.position.x),o=this.sceneOrigin.toWorldY(t.position.y),a=this.sceneOrigin.toWorldZ(t.position.z));let c=Math.floor(s/16)*16,d=Math.floor(a/16)*16,u=Math.floor(o/r)*r,p=`${c},${d}`,v=`${c},${u},${d}`;return!!this.finishedChunks[p]||!!this.sectionObjects[v]}handleUserClick(t){this.media.handleUserClick(t)}updateSectionOffsets(){let t=performance.now();for(let[n,r]of Object.entries(this.sectionsOffsetsAnimations)){let s=(t-r.time)/1e3;r.time=t,r.currentOffsetX+=r.speedX*s,r.currentOffsetY+=r.speedY*s,r.currentOffsetZ+=r.speedZ*s,r.limitX!==void 0&&(r.speedX>0?r.currentOffsetX=Math.min(r.currentOffsetX,r.limitX):r.currentOffsetX=Math.max(r.currentOffsetX,r.limitX)),r.limitY!==void 0&&(r.speedY>0?r.currentOffsetY=Math.min(r.currentOffsetY,r.limitY):r.currentOffsetY=Math.max(r.currentOffsetY,r.limitY)),r.limitZ!==void 0&&(r.speedZ>0?r.currentOffsetZ=Math.min(r.currentOffsetZ,r.limitZ):r.currentOffsetZ=Math.max(r.currentOffsetZ,r.limitZ));let o=this.sectionObjects[n];o&&(o.position.set(r.currentOffsetX,r.currentOffsetY,r.currentOffsetZ),o.updateMatrix())}}reloadWorld(){this.entities.reloadEntities()}};Cn(_d,"FOV_TRANSITION_MS",200),Cn(_d,"MAX_SECTION_UPDATE_BUFFER_MS",500);var yd=_d;f();m();h();f();m();h();var i2="1.21.4";f();m();h();function bd(i,e){i.aspect=e.width/e.height,i.updateProjectionMatrix()}f();m();h();f();m();h();var tl={mode:"futuristic",minecraftTextures:!0,futuristicScene:"light",futuristicCamera:"dive",futuristicBlockGroup:"stainedGlass",futuristicCameraSpeedPercent:80,futuristicBlockSpeedPercent:40},DT=i=>i/100,d4={camera:DT(tl.futuristicCameraSpeedPercent),block:DT(tl.futuristicBlockSpeedPercent)};function UT(i,e=!1){return i?.mode?i.mode:e?"worldBlocks":tl.mode}f();m();h();yt();f();m();h();var VT={};function FT(...i){let e=i.filter(n=>n.length>0).join("/"),t=typeof globalThis.location<"u"&&globalThis.location.href?globalThis.location.href:typeof VT<"u"&&VT.url?VT.url:`/${e}`;try{return new URL(e,t).href}catch{return`/${e}`}}var zT=new Date,T3e=zT.getMonth()===11&&zT.getDate()>=24&&zT.getDate()<=26,kGe=["panorama_3.webp","panorama_1.webp","panorama_4.webp","panorama_5.webp","panorama_0.webp","panorama_2.webp"],TGe=200,s2=class{constructor(e){this.documentRenderer=e;this.scene=new _r,this.scene.background=new Fe(3294568);let t=new vo(13421772);this.scene.add(t);let n=new ss(16777215,.5);n.position.set(1,1,.5).normalize(),n.castShadow=!0,this.scene.add(n),this.camera=new Yt(85,e.canvas.width/e.canvas.height,.05,1e3),this.camera.position.set(0,0,0),this.camera.rotation.set(0,0,0)}scene;camera;startTimes=new Map;time=0;panoramaGroup=null;async init(){this.buildCubemap()}update(e,t){t&&bd(this.camera,this.documentRenderer.canvas)}dispose(){this.scene.clear(),this.panoramaGroup=null,this.startTimes.clear()}buildCubemap(){let e=new nn(1e3,1e3,1e3),t=[];for(let s of kGe)(async()=>{let a=FT("background",T3e?"christmas":"",s),l=await jc(a),c=u0(l);c.matrixAutoUpdate=!1,c.matrix.set(-1,0,1,0,1,0,0,0,1),c.wrapS=gn,c.wrapT=gn,c.minFilter=jt,c.magFilter=jt;let d=new st({map:c,transparent:!0,side:cn,depthWrite:!1,opacity:0});this.startTimes.set(d,Date.now()),t.push(d)})().catch(a=>{console.warn("[ClassicMenuBackground] Failed to load panorama face:",s,a)});let n=new je(e,t);n.onBeforeRender=()=>{this.time+=.01,n.rotation.y=Math.PI+this.time*.01,n.rotation.z=Math.sin(-this.time*.001)*.001;for(let s of t){let o=this.startTimes.get(s);if(o){let a=Date.now()-o;s.opacity=Math.min(1,a/TGe)}}};let r=new At;if(r.add(n),!T3e)for(let s=0;s<20;s++){let o=new el("1.16.4","squid").mesh;o.position.set(Math.random()*30-15,Math.random()*20-10,Math.random()*10-17),o.rotation.set(0,Math.PI+Math.random(),-Math.PI/4,"ZYX");let a=Math.random()*.01;o.children[0].onBeforeRender=()=>{o.rotation.y+=a,o.rotation.z=Math.cos(n.rotation.y*3)*Math.PI/4-Math.PI/2},r.add(o)}this.scene.add(r),this.panoramaGroup=r}async debugImageInFrontOfCamera(){let e=await jc(FT("background","panorama_0.webp")),t=u0(e),n=new je(new _n(1e3,1e3),new st({map:t}));n.position.set(0,0,-500),this.scene.add(n)}};f();m();h();yt();f();m();h();var rh=["galaxy","nether","end","cyber","light"],ih=["cruise","barrel","dive","orbit","snake"],u4={galaxy:"Galaxy",nether:"Nether",end:"The End",cyber:"Cyber",light:"Light Space"},f4={cruise:"Cruise",barrel:"Barrel",dive:"Dive",orbit:"Orbit",snake:"Snake"},sh=["mixed","stainedGlass","wool","construction","glow","world"],h4={mixed:"Mixed",stainedGlass:"Stained glass",wool:"Wool",construction:"Construction",glow:"Glow",world:"World (grass & ores)"};var I3e=.1,P3e={mixed:["white_wool","cyan_wool","blue_wool","purple_wool","white_stained_glass","cyan_stained_glass","blue_stained_glass","purple_stained_glass","glowstone","sea_lantern","amethyst_block","copper_block","gold_block","diamond_block"],stainedGlass:["white_stained_glass","orange_stained_glass","magenta_stained_glass","light_blue_stained_glass","yellow_stained_glass","lime_stained_glass","pink_stained_glass","gray_stained_glass","light_gray_stained_glass","cyan_stained_glass","purple_stained_glass","blue_stained_glass","brown_stained_glass","green_stained_glass","red_stained_glass","black_stained_glass"],wool:["white_wool","orange_wool","magenta_wool","light_blue_wool","yellow_wool","lime_wool","pink_wool","gray_wool","light_gray_wool","cyan_wool","purple_wool","blue_wool","brown_wool","green_wool","red_wool","black_wool"],construction:["copper_block","exposed_copper","weathered_copper","oxidized_copper","cut_copper","exposed_cut_copper","weathered_cut_copper","oxidized_cut_copper","iron_block","gold_block","diamond_block","emerald_block","netherite_block","lapis_block","redstone_block","coal_block","quartz_block","amethyst_block","bricks","stone_bricks","deepslate_bricks","polished_blackstone"],glow:["glowstone","sea_lantern","shroomlight","ochre_froglight","verdant_froglight","pearlescent_froglight","redstone_lamp","beacon"],world:["grass_block","podzol","mycelium","dirt","coarse_dirt","rooted_dirt","mud","clay","stone","cobblestone","mossy_cobblestone","deepslate","cobbled_deepslate","tuff","calcite","sand","red_sand","gravel","snow_block","coal_ore","deepslate_coal_ore","iron_ore","deepslate_iron_ore","copper_ore","deepslate_copper_ore","gold_ore","deepslate_gold_ore","diamond_ore","deepslate_diamond_ore","emerald_ore","deepslate_emerald_ore","lapis_ore","deepslate_lapis_ore","redstone_ore","deepslate_redstone_ore","nether_gold_ore","ancient_debris","oak_log","birch_log","spruce_log","jungle_log","acacia_log","dark_oak_log","mangrove_log","cherry_log","netherrack","soul_sand","basalt","end_stone"]},R3e={galaxy:{bg:132114,fog:132114,fogD:.011,blocks:[61695,54527,47359,59647,2280703,43263],emit:[13158,8789,6724],nebula:[4403,1114146,4386],galFn:i=>new Fe(i*.05,i*.2,i),ambient:264216,dir:3368703,pt1:43775,pt2:16729343,name:"GALAXY"},nether:{bg:917760,fog:917760,fogD:.016,blocks:[16720384,16737792,16750848,13373696,16729122,16755200],emit:[2230272,1114112,3346688],nebula:[1704960,851968,1705984],galFn:i=>new Fe(i,i*.15,0),ambient:1573376,dir:16724736,pt1:16729088,pt2:16755200,name:"NETHER"},end:{bg:0,fog:0,fogD:.009,blocks:[7807658,11158732,5570679,14527231,3342421,12299007],emit:[655381,1572901,327696],nebula:[524312,851989,262158],galFn:i=>new Fe(i*.4,0,i),ambient:393232,dir:10040319,pt1:11158783,pt2:4456618,name:"THE END"},cyber:{bg:2566,fog:2566,fogD:.01,blocks:[65535,65416,11206400,52479,6749952,65518],emit:[8721,6656,6690],nebula:[6674,5120,4634],galFn:i=>new Fe(0,i,i*.6),ambient:6669,dir:65450,pt1:65484,pt2:4521728,name:"CYBER"},light:{bg:8951984,fog:7899296,fogD:.006,gradientBg:{top:14214392,mid:10531016,bottom:6846608,radial:!0},blocks:[15266559,13691135,12114175,10537208,8960240,7383272,10012927,12640511,15792383,7909608,14216447,14739711],emit:[6854864,8958176,11061488,12638456],nebula:[9480392,11059424,12637420,14215416,7901360],galFn:i=>{let e=new Fe;return i<.4?e.lerpColors(new Fe(16054527),new Fe(14215423),i/.4):i<.75?e.lerpColors(new Fe(14215423),new Fe(11061488),(i-.4)/.35):e.lerpColors(new Fe(11061488),new Fe(9482464),(i-.75)/.25),e},ambient:7899296,dir:13688040,pt1:11061503,pt2:13162751,name:"LIGHT",starColor:15266047,starOpacity:.5,galaxyOpacity:.7,nebulaOpacity:.32,edgeLineColor:10010856,blockOpacity:[.42,.56]}},IGe={cruise:{pos:(i,e,t)=>({x:Math.sin(i*.28)*18+Math.cos(i*.11)*7+e*10,y:Math.sin(i*.19)*6+Math.cos(i*.31)*3+t*6,z:0}),look:(i,e,t)=>({x:Math.sin((i+.18)*.28)*18+e*8,y:Math.sin((i+.18)*.19)*6+t*4,z:-25}),roll:(i,e=0)=>e*.05+Math.sin(i*.22)*.015,spd:.18},barrel:{pos:(i,e,t)=>{let r=i*2.4;return{x:Math.cos(r)*10+e*4,y:Math.sin(r)*10+t*4,z:Math.sin(i*.4)*8}},look:i=>({x:Math.sin(i*.5)*5,y:Math.cos(i*.5)*5,z:-30}),roll:i=>i*2.4+Math.PI*.5,spd:.24},dive:{pos:(i,e,t)=>({x:Math.sin(i*.6)*30+e*8,y:Math.cos(i*.4)*18+t*6,z:Math.sin(i*.3)*12}),look:(i,e,t)=>({x:Math.sin(i*.6+.2)*30+e*6,y:Math.cos(i*.4+.2)*18-8+t*4,z:-35}),roll:(i,e=0)=>e*.08+Math.sin(i*.6)*.12,spd:.3},orbit:{pos:(i,e,t)=>({x:Math.cos(i*.5)*20+e*5,y:Math.sin(i*.25)*10+t*5,z:Math.sin(i*.5)*20}),look:()=>({x:0,y:0,z:-60}),roll:i=>Math.sin(i*.5)*.08,spd:.15},snake:{pos:(i,e,t)=>({x:Math.sin(i*1.1)*22+Math.sin(i*.37)*8+e*10,y:Math.sin(i*.7)*10+e*4+t*8,z:0}),look:(i,e,t)=>{let n=i+.12;return{x:Math.sin(n*1.1)*22+Math.sin(n*.37)*8+e*8,y:Math.sin(n*.7)*10+t*6,z:-22}},roll:(i,e=0)=>e*.1+Math.sin(i*1.1)*.06,spd:.22}},RGe={cruise:1,barrel:1.6,dive:2.2,orbit:.7,snake:1.4},CGe=250,m4=1e4,p4=3e3,oh=i=>i[Math.floor(Math.random()*i.length)],HT=i=>"#"+i.toString(16).padStart(6,"0"),C3e=i=>{if(typeof document>"u")return null;let e=document.createElement("canvas");e.width=4,e.height=512;let t=e.getContext("2d");if(!t)return null;let n=e.width,r=e.height,s=i.radial?t.createRadialGradient(n/2,r*.32,0,n/2,r*.32,r*.85):t.createLinearGradient(0,0,0,r);s.addColorStop(0,HT(i.top)),i.mid!=null&&s.addColorStop(.45,HT(i.mid)),s.addColorStop(1,HT(i.bottom)),t.fillStyle=s,t.fillRect(0,0,n,r);let o=new mn(e);return o.needsUpdate=!0,o},ah=class{constructor(e,t={},n){this.documentRenderer=e;this.abortSignal=n;let r=tl;this.curScene=t.initialScene??r.futuristicScene,this.curCam=t.initialCamera??r.futuristicCamera,this.blockGroup=t.initialBlockGroup??r.futuristicBlockGroup,this.cameraSpeed=t.initialCameraSpeed??d4.camera,this.blockSpeed=t.initialBlockSpeed??d4.block,this.useMinecraftTextures=t.useMinecraftTextures??r.minecraftTextures,this.resourcesManager=t.resourcesManager;let s=R3e[this.curScene];this.scene=new _r,this.scene.fog=new ia(s.fog,s.fogD),this.applyScenePalette(s),this.camera=new Yt(80,this.documentRenderer.canvas.width/this.documentRenderer.canvas.height,.1,700),this.ambient=new vo(s.ambient,2.5),this.scene.add(this.ambient),this.dir=new ss(s.dir,4),this.dir.position.set(1,1,0),this.scene.add(this.dir),this.pt1=new ma(s.pt1,5,100),this.scene.add(this.pt1),this.pt2=new ma(s.pt2,4,80),this.pt2.position.set(30,20,-30),this.scene.add(this.pt2);for(let p=0;p<CGe;p++)this.spawnBlock(s,!0);if(!this.useMinecraftTextures){let p=s.edgeLineColor??62975;for(let v=0;v<40;v++){let _=new fn({color:p,transparent:!0,opacity:.25});oh(this.blocks).mesh.add(new Ln(this.eGeo,_))}}this.scene.add(this.bGroup);let o=new it,a=new Float32Array(5e3*3);for(let p=0;p<5e3*3;p++)a[p]=(Math.random()-.5)*500;o.setAttribute("position",new ht(a,3)),this.stars=new tr(o,new Lr({color:s.starColor??16777215,size:.3,transparent:!0,opacity:s.starOpacity??.7,sizeAttenuation:!0})),this.scene.add(this.stars),this.galGeo=new it;let l=new Float32Array(m4*3),c=new Float32Array(m4*3);for(let p=0;p<m4;p++){let v=p%3,_=Math.random(),b=v/3*Math.PI*2+_*Math.PI*5,y=_*90+Math.random()*10,g=(1-_)*18;l[p*3]=Math.cos(b)*y+(Math.random()-.5)*g,l[p*3+1]=(Math.random()-.5)*7,l[p*3+2]=Math.sin(b)*y+(Math.random()-.5)*g-180;let w=.2+_*.8,x=s.galFn(w);c[p*3]=x.r,c[p*3+1]=x.g,c[p*3+2]=x.b}this.galGeo.setAttribute("position",new ht(l,3)),this.galGeo.setAttribute("color",new ht(c,3)),this.galaxy=new tr(this.galGeo,new Lr({size:.9,vertexColors:!0,transparent:!0,opacity:s.galaxyOpacity??.55,sizeAttenuation:!0})),this.scene.add(this.galaxy),this.nebGeo=new it;let d=new Float32Array(p4*3),u=new Float32Array(p4*3);for(let p=0;p<p4;p++){let v=25+Math.random()*110,_=Math.random()*Math.PI*2,b=(Math.random()-.5)*Math.PI*.5;d[p*3]=v*Math.cos(_)*Math.cos(b),d[p*3+1]=v*Math.sin(b)*.6,d[p*3+2]=v*Math.sin(_)*Math.cos(b)-80;let y=new Fe(oh(s.nebula));u[p*3]=y.r,u[p*3+1]=y.g,u[p*3+2]=y.b}this.nebGeo.setAttribute("position",new ht(d,3)),this.nebGeo.setAttribute("color",new ht(u,3)),this.nebula=new tr(this.nebGeo,new Lr({size:3,vertexColors:!0,transparent:!0,opacity:s.nebulaOpacity??.3,sizeAttenuation:!0})),this.scene.add(this.nebula),this.addBackgroundTextPlane(),this.setupMouseTracking()}scene;camera;ambient;dir;pt1;pt2;blocks=[];bGroup=new at;galaxy;nebula;stars;galGeo;nebGeo;bGeo=new nn(1,1,1);eGeo=new Rl(this.bGeo);curScene;curCam;blockGroup;cameraSpeed;blockSpeed;camT=0;mx=0;my=0;tmx=0;tmy=0;transitioning=!1;useMinecraftTextures=!1;resourcesManager;atlasTexture=null;blockMaterialPool=new Map;gradientSky=null;gradientSkyTexture=null;disposed=!1;animTime=0;async init(){if(this.useMinecraftTextures)try{await this.loadMinecraftTextures()}catch(e){console.warn("[FuturisticMenuBackground] Failed to load Minecraft textures, using solid colors:",e),this.useMinecraftTextures=!1}}applyScenePalette(e){if(this.documentRenderer.renderer.setClearColor(e.bg),e.gradientBg)if(this.scene.background=null,this.gradientSky){if(this.gradientSky.visible=!0,this.gradientSkyTexture&&e.gradientBg){let s=C3e(e.gradientBg);s&&(this.gradientSkyTexture.dispose(),this.gradientSkyTexture=s,this.gradientSky.material.map=s,this.gradientSky.material.needsUpdate=!0)}}else{let s=C3e(e.gradientBg);s?(this.gradientSkyTexture=s,this.gradientSky=new je(new _n(900,700),new st({map:s,depthWrite:!1,side:cn})),this.gradientSky.position.set(0,0,-280),this.gradientSky.renderOrder=-1e3,this.scene.add(this.gradientSky)):this.scene.background=new Fe(e.bg)}else this.scene.background=new Fe(e.bg),this.gradientSky&&(this.gradientSky.visible=!1);this.scene.fog instanceof ia&&(this.scene.fog.color.set(e.fog),this.scene.fog.density=e.fogD);let t=this.stars?.material;t&&(t.color.set(e.starColor??16777215),t.opacity=e.starOpacity??.7);let n=this.galaxy?.material;n&&(n.opacity=e.galaxyOpacity??.55);let r=this.nebula?.material;r&&(r.opacity=e.nebulaOpacity??.3)}setupMouseTracking(){let e=n=>{let r=typeof window<"u"?window.innerWidth:this.documentRenderer.canvas.width,s=typeof window<"u"?window.innerHeight:this.documentRenderer.canvas.height;this.tmx=(n.clientX/r-.5)*2,this.tmy=-(n.clientY/s-.5)*2};(typeof document<"u"?document:void 0)?.addEventListener("mousemove",e,{signal:this.abortSignal})}addBackgroundTextPlane(){let n=typeof document<"u"?document.createElement("canvas"):null;if(!n)return;n.width=2048,n.height=768;let r=n.getContext("2d");if(!r)return;r.clearRect(0,0,2048,768),r.save(),r.font="bold 560px Orbitron, sans-serif",r.textAlign="center",r.textBaseline="middle",r.shadowColor="rgba(0,200,255,0.35)",r.shadowBlur=80,r.fillStyle="rgba(255,255,255,0.055)",r.fillText("V2",2048*.28,768*.5),r.restore(),r.save(),r.font="bold 148px Orbitron, sans-serif",r.textAlign="center",r.textBaseline="middle",r.shadowColor="rgba(0,200,255,0.2)",r.shadowBlur=40,r.fillStyle="rgba(255,255,255,0.038)",r.fillText("by ZARDOY",2048*.72,768*.52),r.restore();let s=new mn(n),o=new je(new _n(280,105),new st({map:s,transparent:!0,opacity:1,depthWrite:!1,side:cn,blending:Ci}));o.position.set(8,4,-320),this.scene.add(o)}spawnBlock(e,t,n){let r=this.createBlockMaterial(e,n),s=new je(this.bGeo,r),o=.3+Math.random()*3;s.scale.setScalar(o),s.position.set((Math.random()-.5)*140,(Math.random()-.5)*70,t?-(Math.random()*140):-155-Math.random()*30),s.rotation.set(Math.random()*Math.PI*2,Math.random()*Math.PI*2,Math.random()*Math.PI*2);let a={mesh:s,spd:.04+Math.random()*.12,dx:(Math.random()-.5)*.012,dy:(Math.random()-.5)*.008,rx:(Math.random()-.5)*.012,ry:(Math.random()-.5)*.012,rz:(Math.random()-.5)*.01,minecraftBlockName:n};this.blocks.push(a),this.bGroup.add(s)}createBlockMaterial(e,t){if(this.useMinecraftTextures&&t){let s=this.blockMaterialPool.get(t);if(s)return s.clone()}let[n,r]=e.blockOpacity??[.32,.46];return new st({color:oh(e.blocks),transparent:!0,opacity:n+Math.random()*(r-n),depthWrite:!1,blending:Ci})}removeBlockEdgeLines(){for(let e of this.blocks){let t=e.mesh.children.filter(n=>n instanceof Ln);for(let n of t){e.mesh.remove(n),n.geometry?.dispose();let r=n.material;Array.isArray(r)?r.forEach(s=>s.dispose()):r.dispose()}}}async ensureMcDataLoaded(){let e=globalThis._LOAD_MC_DATA;e&&await e()}resolveBlockAtlasUv(e,t,n){let r=s=>{let o=t[s];return o?{u:o.u,v:o.v,su:o.su??n.suSv,sv:o.sv??n.suSv}:null};if(t[e])return r(e);for(let s of["_top","_side","_front","_0"]){let o=r(`${e}${s}`);if(o)return o}for(let s of Object.keys(t))if(s.startsWith(e))return r(s);return null}async loadMinecraftTextures(){await this.ensureMcDataLoaded();let e=this.resourcesManager??new Zl;if(!e.currentResources?.blocksAtlasImage){if(typeof document>"u")throw new Error("Menu atlas missing in worker; pass resourcesManager from main thread");e.currentConfig={...e.currentConfig,version:i2,noInventoryGui:!0},await e.updateAssetsData?.({})}let n=e.currentResources;if(!n?.blocksAtlasImage||!n.blocksAtlasJson)throw new Error("Block atlas not available");let r=n.blocksAtlasJson,s=r.textures;this.atlasTexture=u0(n.blocksAtlasImage),this.atlasTexture.flipY=!1,this.atlasTexture.needsUpdate=!0;for(let o of P3e[this.blockGroup]){let a=this.resolveBlockAtlasUv(o,s,r);if(!a)continue;let l=this.atlasTexture.clone();l.flipY=!1,l.offset.set(a.u,a.v),l.repeat.set(a.su,a.sv),l.needsUpdate=!0;let c=o.includes("glass"),d=new st({map:l,side:cn,transparent:c,opacity:c?.85:1,alphaTest:c?.08:0,depthWrite:!0,toneMapped:!1});this.blockMaterialPool.set(o,d)}if(this.blockMaterialPool.size===0)throw new Error("No block textures resolved from atlas (check block names vs atlas keys)");this.removeBlockEdgeLines();for(let o of this.blocks){let a=oh([...this.blockMaterialPool.keys()]);o.minecraftBlockName=a,o.mesh.material=this.blockMaterialPool.get(a).clone()}}setScene(e){if(!rh.includes(e)||e===this.curScene||this.transitioning)return;this.transitioning=!0,this.curScene=e;let t=R3e[e];setTimeout(()=>{if(this.disposed)return;this.applyScenePalette(t),this.ambient.color.set(t.ambient),this.dir.color.set(t.dir),this.pt1.color.set(t.pt1),this.pt2.color.set(t.pt2);for(let s of this.blocks)this.useMinecraftTextures&&s.minecraftBlockName||s.mesh.material instanceof st&&s.mesh.material.color.set(oh(t.blocks));let n=this.nebGeo.attributes.color;for(let s=0;s<p4;s++){let o=new Fe(oh(t.nebula));n.setXYZ(s,o.r,o.g,o.b)}n.needsUpdate=!0;let r=this.galGeo.attributes.color;for(let s=0;s<m4;s++){let o=.2+Math.random()*.8,a=t.galFn(o);r.setXYZ(s,a.r,a.g,a.b)}r.needsUpdate=!0,this.transitioning=!1},150)}setCamera(e){ih.includes(e)&&(this.curCam=e)}setCameraSpeed(e){this.cameraSpeed=Math.max(0,e)}setBlockSpeed(e){this.blockSpeed=Math.max(0,e)}async setBlockGroup(e){if(sh.includes(e)&&e!==this.blockGroup&&(this.blockGroup=e,!(!this.useMinecraftTextures||this.disposed))){for(let t of this.blockMaterialPool.values())t.map?.dispose(),t.dispose();this.blockMaterialPool.clear();try{await this.loadMinecraftTextures()}catch(t){console.warn("[FuturisticMenuBackground] Failed to reload block group textures:",t)}}}getSceneId(){return this.curScene}getCameraId(){return this.curCam}getBlockGroupId(){return this.blockGroup}update(e,t){t&&bd(this.camera,this.documentRenderer.canvas);let n=IGe[this.curCam],r=this.cameraSpeed,s=this.blockSpeed;this.camT+=e*n.spd*r,this.mx+=(this.tmx-this.mx)*.05,this.my+=(this.tmy-this.my)*.05;let o=this.mx*I3e,a=this.my*I3e,l=n.pos(this.camT,o,a),c=n.look(this.camT,o,a);this.camera.position.set(l.x,l.y,l.z),this.camera.lookAt(c.x,c.y,c.z),this.camera.rotation.z=n.roll(this.camT,o);let d=RGe[this.curCam]*s;this.animTime+=e*1e3*s;for(let u of this.blocks){if(u.mesh.position.z+=u.spd*d*60*e,u.mesh.position.x+=u.dx*60*e*s,u.mesh.position.y+=u.dy*60*e*s,u.mesh.rotation.x+=u.rx*d,u.mesh.rotation.y+=u.ry*d,u.mesh.rotation.z+=u.rz,!this.useMinecraftTextures&&u.mesh.material instanceof st){let p=u.mesh.userData.baseOpacity??.38;u.mesh.userData.baseOpacity==null&&(u.mesh.userData.baseOpacity=p);let v=.88+Math.abs(Math.sin(this.animTime*8e-4+u.mesh.position.x*.3))*.12;u.mesh.material.opacity=p*v}u.mesh.position.z>this.camera.position.z+15&&u.mesh.position.set((Math.random()-.5)*140,(Math.random()-.5)*70,this.camera.position.z-155-Math.random()*30)}this.pt1.position.set(Math.sin(this.camT*.8)*25+this.camera.position.x,Math.cos(this.camT*.6)*12+this.camera.position.y,this.camera.position.z-18),this.pt2.position.set(Math.cos(this.camT*.5)*20+this.camera.position.x,Math.sin(this.camT*.9)*15+this.camera.position.y,this.camera.position.z-30),this.galaxy.rotation.y+=e*.006*s,this.nebula.rotation.y-=e*.003*s,this.stars.rotation.y+=e*4e-4*s}dispose(){this.disposed=!0,this.scene.clear(),this.bGeo.dispose(),this.eGeo.dispose(),this.galGeo.dispose(),this.nebGeo.dispose(),this.gradientSkyTexture?.dispose(),this.atlasTexture?.dispose();for(let e of this.blockMaterialPool.values())e.map?.dispose(),e.dispose();this.blockMaterialPool.clear()}};f();m();h();yt();f();m();h();var fge=Yr(V3e(),1),hge=Yr(uge(),1);var mge=i=>{let e=(0,fge.default)(i),t=(0,hge.default)(i),n=new e(i).sync,r=sje(n);for(let s of r)if(s.startsWith("set")&&s!=="setColumn"){let o=n[s].bind(n);n[s]=(...a)=>{let l=a[0];l.x!==void 0&&!n.getColumnAt(l)&&n.setColumn(Math.floor(l.x/16),Math.floor(l.z/16),new t(void 0)),o(...a)}}return n};function sje(i){let e=new Set,t=i;do for(let n of Object.getOwnPropertyNames(t))typeof i[n]=="function"&&n!=="constructor"&&e.add(n);while(t=Object.getPrototypeOf(t));return[...e]}f();m();h();var pge={paused:!1,showChunkBorders:!1,enableDebugOverlay:!1,debugWasmPerf:!1,debugModelVariant:void 0,futuristicReveal:!1,wasmMesher:!0,shaderCubeBlocks:!1,shaderCubeDebugMode:0,mesherWorkers:1,addChunksBatchWaitTime:200,_experimentalSmoothChunkLoading:!0,_renderByChunks:!1,autoLowerRenderDistance:!1,disableMesherConversionCache:!1,dedicatedChangeWorker:!1,shadingTheme:"high-contrast",cardinalLight:"default",dayCycle:!0,smoothLighting:!0,enableLighting:!0,starfield:!0,defaultSkybox:!0,renderEntities:!0,extraBlockRenderers:!0,foreground:!0,fov:75,volume:1,showHand:!1,viewBobbing:!1,handRenderer:"vanilla",renderEars:!0,highlightBlockColor:"blue",fetchPlayerSkins:!0,skinTexturesProxy:void 0,vrSupport:!0,vrPageGameRendering:!0,clipWorldBelowY:void 0,isPlayground:!1,instantCameraUpdate:!1,isRaining:!1,moduleStates:{}};var jI=()=>({reactive:_a({world:{chunksLoaded:new Set,heightmaps:new Map,allChunksLoaded:!1,mesherWork:!1,instabilityFactors:BT(),intersectMedia:null},renderer:"...",preventEscapeMenu:!1}),nonReactive:{fps:0,worstRenderTime:0,avgRenderTime:0,world:{chunksLoaded:new Set,chunksTotalNumber:0,chunksFullInfo:"-"},renderer:{timeline:{live:[],frozen:[],lastSecond:[]}}}});f();m();h();f();m();h();f();m();h();Rs();var L2=i=>[Math.floor(i.x/16),Math.floor(i.z/16)];var oje=async(i,e,t,n=1)=>{for(let r=0;r<i.length;r+=n)e&&await new Promise(s=>setTimeout(s,e)),await t(i[r],r)},B2=class B2 extends Ol{static restoreTransferred(e,t){let n=new B2;return t&&t.addEventListener("message",({data:r})=>{r.class===B2.restorerName&&r.type==="event"&&n.emit(r.eventName,...r.args)}),n}};Cn(B2,"restorerName","WorldViewWorker");var yh=B2,n8=class extends Ol{constructor(t,n,r=new ut(0,0,0)){super();this.world=t;this.viewDistance=n;this.lastPos=new ut(0,0,0).update(r)}spiralNumber=0;gotPanicLastTime=!1;panicChunksReload=()=>{};loadedChunks={};inLoading=!1;chunkReceiveTimes=[];lastChunkReceiveTime=0;lastChunkReceiveTimeAvg=0;panicTimeout;lastPos;eventListeners={};debugChunksInfo={};waitingSpiralChunksLoad={};addWaitTime=1;keepChunksDistance=0;isPlayground=!1;allowPositionUpdate=!0;prepareForTransfer(t){if(t){let n=this.emit.bind(this);this.emit=(r,...s)=>{n(r,...s),t.postMessage({class:yh.restorerName,type:"event",eventName:r,args:X6(s)})}}return{__restorer:yh.restorerName}}setBlockStateId(t,n){let r=this.world.setBlockStateId(t,n);if(r&&typeof r.then=="function")throw new Error("setBlockStateId returned promise (not supported)");this.emit("blockUpdate",{pos:t,stateId:n})}updateViewDistance(t){this.viewDistance=t,this.emit("renderDistance",t)}async init(t,n){console.log("WorldView init"),this.updateViewDistance(this.viewDistance),this.emit("chunkPosUpdate",{pos:t}),n?.time?.timeOfDay!==void 0&&this.emit("time",n.time.timeOfDay),n?.entity&&this.emit("playerEntity",n.entity),this.emitterGotConnected(n);let[r,s]=L2(t),o=wp(this.viewDistance).map(([a,l])=>new ut((r+a)*16,0,(s+l)*16));this.lastPos.update(t),await this._loadChunks(o,t)}chunkProgress(){if(this.panicTimeout&&clearTimeout(this.panicTimeout),this.chunkReceiveTimes.length>=5){let t=this.chunkReceiveTimes.reduce((r,s)=>r+s,0)/this.chunkReceiveTimes.length;this.lastChunkReceiveTimeAvg=t;let n=t*2+1e3;this.panicTimeout&&clearTimeout(this.panicTimeout),this.panicTimeout=setTimeout(()=>{!this.gotPanicLastTime&&this.inLoading&&(console.warn("Chunk loading seems stuck, triggering panic reload"),this.gotPanicLastTime=!0,this.panicChunksReload())},n)}}async _loadChunks(t,n){this.spiralNumber++;let{spiralNumber:r}=this;for(let o of Object.keys(this.waitingSpiralChunksLoad))this.waitingSpiralChunksLoad[o](!1),delete this.waitingSpiralChunksLoad[o];let s=!0;this.inLoading=!0,await oje(t,this.addWaitTime,async o=>{!s||this.loadedChunks[`${o.x},${o.z}`]||(this.world.getColumnAt(o)||(s=await new Promise(a=>{this.waitingSpiralChunksLoad[`${o.x},${o.z}`]=a})),s&&(await this.loadChunk(o,void 0,`spiral ${r} from ${n.x},${n.z}`),this.chunkProgress()))}),this.panicTimeout&&clearTimeout(this.panicTimeout),this.inLoading=!1,this.gotPanicLastTime=!1,this.chunkReceiveTimes=[],this.lastChunkReceiveTime=0}async loadChunk(t,n=!1,r="spiral"){let[s,o]=L2(this.lastPos),a=Math.abs(s-Math.floor(t.x/16)),l=Math.abs(o-Math.floor(t.z/16));if(a<=this.viewDistance&&l<=this.viewDistance){let c=await this.world.getColumnAt(t.y!==void 0?t:new ut(t.x,0,t.z));if(c){let d=c.toJson(),u={minY:c.minY??0,worldHeight:c.worldHeight??256};this.emit("loadChunk",{x:t.x,z:t.z,chunk:d,blockEntities:c.blockEntities,worldConfig:u,isLightUpdate:n}),this.loadedChunks[`${t.x},${t.z}`]=!0,this.debugChunksInfo[`${t.x},${t.z}`]??={loads:[]},this.debugChunksInfo[`${t.x},${t.z}`].loads.push({dataLength:d.length,reason:r,time:Date.now()})}else this.isPlayground&&this.emit("markAsLoaded",{x:t.x,z:t.z})}}unloadAllChunks(){for(let t of Object.keys(this.loadedChunks)){let[n,r]=t.split(",").map(Number);this.unloadChunk({x:n,z:r})}}unloadChunk(t){this.emit("unloadChunk",{x:t.x,z:t.z}),delete this.loadedChunks[`${t.x},${t.z}`],delete this.debugChunksInfo[`${t.x},${t.z}`]}emitterGotConnected(t){typeof globalThis.WorkerGlobalScope<"u"&&globalThis instanceof globalThis.WorkerGlobalScope||!t||this.emit("blockEntities",new Proxy({},{get(r,s,o){if(typeof s!="string")return;let[a,l,c]=s.split(",").map(Number);return t.world.getBlock(new ut(a,l,c))?.entity}}))}lastBiomeId=null;updateBiome(t){try{if(!this.world.getBiome)return;let n=this.world.getBiome(t);n!==this.lastBiomeId&&(this.lastBiomeId=n,this.emit("biomeReset"))}catch(n){console.error("error updating biome",n)}}lastPosCheck=null;async updatePosition(t,n=!1){if(!this.allowPositionUpdate)return;let r=t.floored();if(!n&&this.lastPosCheck&&this.lastPosCheck.equals(r))return;this.lastPosCheck=r,this.updateBiome(t);let[s,o]=L2(this.lastPos),[a,l]=L2(t);if(s!==a||o!==l||n){this.emit("chunkPosUpdate",{pos:t});let c=[],d=n?this.viewDistance:this.viewDistance+this.keepChunksDistance;for(let p of Object.keys(this.loadedChunks)){let[v,_]=p.split(",").map(Number),b=new ut(v,0,_),[y,g]=L2(b),w=Math.abs(a-y),x=Math.abs(l-g);(w>d||x>d)&&c.push(b)}for(let p of c)this.unloadChunk(p);let u=wp(this.viewDistance).map(([p,v])=>{let _=new ut((a+p)*16,0,(l+v)*16);if(!this.loadedChunks[`${_.x},${_.z}`])return _}).filter(p=>!!p);this.lastPos.update(t),this._loadChunks(u,t)}else this.emit("chunkPosUpdate",{pos:t}),this.lastPos.update(t)}};var O2=class{constructor(e,t,n){this.documentRenderer=e;this.options=t;this.abortSignal=n;this._scene=new _r,this._scene.background=new Fe(3294568),this._camera=new Yt(85,e.canvas.width/e.canvas.height,.05,1e3),this.camera.position.set(0,0,0),this.camera.rotation.set(0,0,0)}_scene;_camera;get scene(){return this._scene}get camera(){return this._camera}worldRenderer;WorldRendererClass=yd;async init(){let e=i2,t=new Zl;if(t.currentConfig={version:e,noInventoryGui:!0},await t.updateAssetsData?.({}),this.abortSignal.aborted)return;console.time("load menu background scene");let n=mge(e),s=si()(e),a=globalThis.mcData.blocksArray.filter(v=>{if(!v.name.includes("stained_glass"))return!1;let _=s.fromStateId(v.defaultState,0);if(_.shapes?.length!==1)return!1;let b=_.shapes[0];return b[0]===0&&b[1]===0&&b[2]===0&&b[3]===1&&b[4]===1&&b[5]===1}),l=-15,c=100,d=100;for(let v=-c;v<c;v++)for(let _=-d;_<d;_++){let b=a[Math.floor(Math.random()*a.length)];n.setBlockStateId(new ut(v,_,l),b.defaultState)}this._camera.updateProjectionMatrix(),this._camera.position.set(.5,d/2+.5,.5),this._camera.rotation.set(0,0,0);let u=new ut(...this._camera.position.toArray()),p=new n8(n,2,u);this.abortSignal.aborted||(this.worldRenderer=new this.WorldRendererClass(this.documentRenderer.renderer,this.options,{version:e,worldView:p,inWorldRenderingConfig:pge,playerStateReactive:Ihe().reactive,rendererState:jI().reactive,nonReactiveState:jI().nonReactive,resourcesManager:t}),this.worldRenderer instanceof yd&&(this._scene=this.worldRenderer.realScene,this._camera=this.worldRenderer.camera),p.init(u),await this.worldRenderer.waitForChunksToRender(),!this.abortSignal.aborted&&(this.setupMouseParallax(),console.timeEnd("load menu background scene")))}update(e,t){t&&bd(this.camera,this.documentRenderer.canvas)}dispose(){this.worldRenderer?.destroy(),this.worldRenderer=void 0,this._scene.clear()}setupMouseParallax(){let e=this._camera,t=e.position.x,n=e.position.y,r;document.body.addEventListener("pointermove",s=>{if(s.pointerType!=="mouse")return;let o=.2,a=s.clientX/window.innerWidth-.5,l=-(s.clientY/window.innerHeight-.5);r?.stop(),r=new xr(e.position).to({x:t+a*o,y:n+l*o},0),r.start(),e.updateProjectionMatrix()},{signal:this.abortSignal})}};f();m();h();yt();var N2=class{constructor(e,t,n={},r=!1){this.documentRenderer=e;this.options=t;this.mode=UT(n,r)}active;abortController=new AbortController;mode;lastFrameTime=0;get futuristic(){return this.active instanceof ah?this.active:void 0}get scene(){return this.active?.scene}get camera(){return this.active?.camera}async start(e={}){this.active=this.createImplementation(e),await this.active.init(),this.active.scene.background instanceof Fe&&this.documentRenderer.renderer.setClearColor(this.active.scene.background),this.lastFrameTime=performance.now(),this.documentRenderer.render=(t=!1)=>{let n=performance.now(),r=Math.min((n-this.lastFrameTime)/1e3,.05);this.lastFrameTime=n;let s=this.active;s&&(s.update(r,t),this.documentRenderer.renderer.render(s.scene,s.camera))}}createImplementation(e){switch(this.mode){case"futuristic":return new ah(this.documentRenderer,{useMinecraftTextures:e.useMinecraftTextures,initialScene:e.futuristicScene,initialCamera:e.futuristicCamera,initialBlockGroup:e.futuristicBlockGroup,initialCameraSpeed:e.futuristicCameraSpeed,initialBlockSpeed:e.futuristicBlockSpeed,resourcesManager:e.resourcesManager},this.abortController.signal);case"worldBlocks":return new O2(this.documentRenderer,this.options,this.abortController.signal);default:return new s2(this.documentRenderer)}}dispose(){this.active?.dispose(),this.active=void 0,this.abortController.abort()}};f();m();h();var Dd=tl,aje={rendererWorldPerformance:"normal",rendererMeshersCountOverride:null,starfieldRendering:!0,defaultSkybox:!0,menuBackgroundMode:Dd.mode,menuBackgroundMinecraftTextures:Dd.minecraftTextures,menuBackgroundFuturisticScene:Dd.futuristicScene,menuBackgroundFuturisticCamera:Dd.futuristicCamera,menuBackgroundFuturisticBlockGroup:Dd.futuristicBlockGroup,menuBackgroundFuturisticCameraSpeed:Dd.futuristicCameraSpeedPercent,menuBackgroundFuturisticBlockSpeed:Dd.futuristicBlockSpeedPercent,rendererFuturisticReveal:!1,rendererPerfDebugOverlay:!1,disableBlockEntityTextures:!1,rendererMesher:"wasm",rendererShaderCubeBlocks:!1,rendererShaderCubeDebugMode:"off",showChunkBorders:!1,renderEntities:!0,renderDebug:"basic",frameLimit:!1,backgroundRendering:"20fps",vanillaLook:!1,smoothLighting:!0,newVersionsLighting:!1,vrSupport:!0,vrPageGameRendering:!1,clipWorldBelowY:void 0,highlightBlockColor:"auto",loadPlayerSkins:!0,renderEars:!0,showHand:!0,viewBobbing:!0,dayCycleAndLighting:!0,keepChunksDistance:1,gpuPreference:"default",fov:75};var lje={menuBackgroundMode:{possibleValues:[["classic","Classic"],["futuristic","Futuristic"]],requiresRestart:!0},menuBackgroundMinecraftTextures:{text:"Minecraft block textures",tooltip:"Use block atlas on futuristic menu cubes (loads assets on menu)"},menuBackgroundFuturisticScene:{possibleValues:rh.map(i=>[i,u4[i]])},menuBackgroundFuturisticCamera:{possibleValues:ih.map(i=>[i,f4[i]])},menuBackgroundFuturisticBlockGroup:{possibleValues:sh.map(i=>[i,h4[i]]),text:"Block pool",tooltip:"Block set for textured menu cubes (requires Minecraft textures)"},menuBackgroundFuturisticCameraSpeed:{text:"Camera speed",tooltip:"Orbit / fly-through camera path speed. 0 freezes the path; mouse parallax still works.",min:0,max:200,unit:"%"},menuBackgroundFuturisticBlockSpeed:{text:"Block speed",tooltip:"Floating blocks and sky rotation. Independent of camera path speed.",min:0,max:200,unit:"%"},rendererWorldPerformance:{text:"World performance",tooltip:"Background workers for chunk geometry. Reload to apply.",requiresRestart:!0,possibleValues:[["low-energy","Low Energy"],["normal","Normal"],["maximum","Maximum"]]},starfieldRendering:{text:"Starfield"},defaultSkybox:{text:"Default skybox"},rendererFuturisticReveal:{text:"Futuristic world reveal"},rendererPerfDebugOverlay:{text:"Performance debug overlay"},disableBlockEntityTextures:{text:"Disable block entity textures",tooltip:"Skips signs, banners, heads, maps, etc."},rendererMesher:{possibleValues:[["wasm","WASM"],["legacy-js","Legacy JS"]],text:"Mesher pipeline",tooltip:"WASM is faster. Use JS if WASM is not working. Requires reload.",requiresRestart:!0},rendererShaderCubeBlocks:{text:"Instanced shader cubes",tooltip:"Render full blocks through the global GPU instanced path. Requires WASM mesher and WebGL2.",requiresChunksReload:!0},rendererShaderCubeDebugMode:{text:"Shader cube debug",tooltip:"Instanced cube path visualization (requires shader cubes enabled).",possibleValues:[["off","Off"],["holes","Hole test (red)"],["texIndex","Tile index colors"],["faces","Face id colors"],["atlasAlpha","Atlas alpha"]]},showChunkBorders:{text:"Chunk borders"},renderEntities:{text:"Render entities"},renderDebug:{possibleValues:["advanced","basic","none"]},frameLimit:{text:"Frame limit",tooltip:"false = VSync / unlimited when focused"},backgroundRendering:{text:"Background FPS limit",possibleValues:[["full","NO"],["5fps","5 FPS"],["20fps","20 FPS"]]},vanillaLook:{text:"Vanilla shading",tooltip:"On: Minecraft-style face shading. Off: higher-contrast client shading."},smoothLighting:{},newVersionsLighting:{text:"Lighting in newer versions"},vrSupport:{text:"VR support",tooltip:"Shows VR entry; does not force VR on."},vrPageGameRendering:{text:"VR page game rendering"},clipWorldBelowY:{text:"Clip world below Y"},highlightBlockColor:{possibleValues:[["auto","Auto"],["blue","Blue"],["classic","Classic"]]},loadPlayerSkins:{},renderEars:{tooltip:"Deadmau5 ears when the skin texture includes them"},showHand:{},viewBobbing:{},dayCycleAndLighting:{text:"Day cycle"},keepChunksDistance:{text:"Keep chunks distance",tooltip:"Extra distance before unloading chunks",max:5,unit:""},fov:{min:30,max:110,unit:"\xB0",text:"FOV"},gpuPreference:{text:"GPU preference",tooltip:"WebGL power preference. Requires reload / backend restart to apply.",requiresRestart:!0,possibleValues:[["default","Auto"],["high-performance","Dedicated"],["low-power","Low power"]]}};fi.enabled=!1;globalThis.THREE=Lt;var vge=i=>({updateMap:i.entities.updateMap.bind(i.entities),updateCustomBlock:i.updateCustomBlock.bind(i),getBlockInfo:i.getBlockInfo.bind(i),playEntityAnimation:i.entities.playAnimation.bind(i.entities),damageEntity:i.entities.handleDamageEvent.bind(i.entities),updatePlayerSkin:i.entities.updatePlayerSkin.bind(i.entities),changeHandSwingingState:i.changeHandSwingingState.bind(i),getHighestBlocks:i.getHighestBlocks.bind(i),reloadWorld:i.reloadWorld.bind(i),updateEntityModel:i.entities.updateEntityModel.bind(i.entities),playEntityModelAnimation:i.entities.playEntityModelAnimation.bind(i.entities),addMedia:i.media.addMedia.bind(i.media),destroyMedia:i.media.destroyMedia.bind(i.media),setControlMode:i.media.setControlMode.bind(i.media),setVideoPlaying:i.media.setVideoPlaying.bind(i.media),setVideoSeeking:i.media.setVideoSeeking.bind(i.media),setVideoVolume:i.media.setVideoVolume.bind(i.media),setVideoSpeed:i.media.setVideoSpeed.bind(i.media),handleUserClick:i.media.handleUserClick.bind(i.media),addSectionAnimation(e,t){i.sectionsOffsetsAnimations[e]=t},removeSectionAnimation(e){delete i.sectionsOffsetsAnimations[e]},shakeFromDamage:i.cameraShake.shakeFromDamage.bind(i.cameraShake),onPageInteraction:i.media.onPageInteraction.bind(i.media),downloadMesherLog:i.downloadMesherLog.bind(i),explodeFirework:i.fireworksLegacy.explode.bind(i.fireworksLegacy),explodeFireworkFacingCamera:i.fireworksLegacy.explodeFacingCamera.bind(i.fireworksLegacy),addWaypoint:i.waypoints.addWaypoint.bind(i.waypoints),removeWaypoint:i.waypoints.removeWaypoint.bind(i.waypoints),startCinimaticScript:i.cinimaticScript.startScript.bind(i.cinimaticScript),stopCinimaticScript:i.cinimaticScript.stopScript.bind(i.cinimaticScript),launchFirework:i.fireworks.launchFirework.bind(i.fireworks),setSkyboxImage:i.skyboxRenderer.setSkyboxImage.bind(i.skyboxRenderer),setRain:e=>i.toggleModule("rain",e),spawnBlockBreakParticles(e,t,n,r,s,o){i.getModule("blockBreakParticles")?.spawnBlockBreakParticles(e,t,n,r,s,o)},spawnBlockCrackParticle(e,t,n,r,s,o,a){i.getModule("blockBreakParticles")?.spawnCrackParticle(e,t,n,r,s,o,a)},async loadGeometryExport(e){let{applyWorldGeometryExport:t}=await Promise.resolve().then(()=>(ET(),n3e));return t(i,e)},feedChunkPacket(e){let{kind:t,...n}=e,r={type:t,...n};for(let s of i.workers)s.postMessage(r)},getChunksDebugState(){let e={};for(let t of Object.keys(i.sectionObjects)){let[n,,r]=t.split(",").map(Number);e[`${n},${r}`]=!0}return{loadedSectionsChunks:e,loadedChunks:{...i.loadedChunks},finishedChunks:{...i.finishedChunks}}}}),cje=[],r8=(i,...e)=>{for(let t of Object.values(globalThis.loadedMods??{}))try{t.threeJsBackendModule?.[i]?.(...e)}catch(n){let r=`[mod three.js] Error calling ${i} on ${t.name}: ${n}`;throw new Error(r)}},gge=()=>{let i,e=null,t=null,n=null,r=null,s=(d,u)=>{dn?i=Lv(d,cje,globalThis):i=d,e=new $6(i,u?.canvas),globalThis.renderer=e.renderer,globalThis.documentRenderer=e,globalThis.threeJsBackend=c,r8("default",c)},o=async d=>{if(!e)throw new Error("Document renderer not initialized");n&&(n.destroy(),n=null,r=null,globalThis.world=void 0,globalThis.frameTimingCollector=void 0),t&&(t.dispose(),t=null);let u={...i.config.menuBackground,...d};t=new N2(e,{...i},u,!!process.env.SINGLE_FILE_BUILD_MODE),r8("menuBackgroundCreated",t),await t.start(u),r8("menuBackgroundReady",t)},a=async d=>{let p=dn?Lv(d,[Zl,yh],globalThis):d;if(!e)throw new Error("Document renderer not initialized");e.nonReactiveState=p.nonReactiveState,globalThis.resourcesManager=p.resourcesManager,t&&(t.dispose(),t=null),n=new yd(e.renderer,i,p),await n.worldReadyPromise,r=new J6(p.nonReactiveState),globalThis.frameTimingCollector=r;let v=e.render;e.render=function(_){v.call(this,_),r?.markFrameStart(),p.inWorldRenderingConfig.paused||n?.render(_),r?.markFrameEnd(),r?.markFrameDisplay()},e.inWorldRenderingConfig=p.inWorldRenderingConfig,globalThis.world=n,r8("worldReady",n)},l=()=>{t&&(t.dispose(),t=null),e&&e.dispose(),n&&(n.destroy(),n=null)},c={id:"threejs",displayName:`three.js ${yo}`,startMenuBackground:o,startWorld:a,disconnect:l,setRendering(d){e.setPaused(!d),n&&(n.renderingActive=d)},getMenuBackground:()=>t??void 0,getDebugOverlay:()=>({get entitiesString(){return n?.entities.getDebugString()},get left(){return{"Geo Memory":n?.chunkMeshManager.getEstimatedMemoryUsage().total??"-"}}}),updateCamera(d,u,p){r?.markCameraUpdate(!d),n?.setFirstPersonCamera(d,u,p)},get soundSystem(){return n?.soundSystem},get backendMethods(){if(n)return vge(n)}};return{main:{init:s,backend:c},workerProxy(){return hB({init(d,u){s(d,{canvas:u})},updateSizeExternal(d,u,p){e?.updateSizeExternal(d,u,p)},startMenuBackground:o,startWorld:a,disconnect:l,setRendering:c.setRendering,updateCamera(d,u,p){let v=d?new ut(d.x,d.y,d.z):null;r?.markCameraUpdate(!v),c.updateCamera(v,u,p)},async callBackendMethod(d,...u){if(!n)throw new Error("World renderer not initialized");let v=vge(n)[d];if(!v)throw new Error(`Backend method ${String(d)} is unavailable`);return v(...u)}})}}};globalThis.structuredClone??=i=>JSON.parse(JSON.stringify(i));var _ge=i=>{bC(i);let e=globalThis;e.mcData=i,e.loadedData=i,self.postMessage({type:"mcDataApplied"})};self.addEventListener("message",i=>{let e=i.data;if(e.type==="mcData"){_ge(e.mcData),console.log("data loaded");return}Array.isArray(e)&&e.forEach(t=>{t.type==="mcData"&&_ge(t.mcData)})});var dje=gge();dje.workerProxy();})();
28832
28832
  /*! Bundled license information:
28833
28833
 
28834
28834
  @jspm/core/nodelibs/browser/chunk-DtuTasat.js: