minecraft-renderer 0.1.92 → 0.1.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/minecraft-renderer.js +21 -21
- package/dist/minecraft-renderer.js.meta.json +1 -1
- package/dist/threeWorker.js +3 -3
- package/package.json +1 -1
- package/src/graphicsBackend/config.ts +1 -1
- package/src/lib/worldrendererCommon.ts +1 -1
- package/src/three/entities.ts +27 -10
- package/src/three/worldRendererThree.ts +6 -5
package/dist/threeWorker.js
CHANGED
|
@@ -4643,7 +4643,7 @@ void main() {
|
|
|
4643
4643
|
applyFog();
|
|
4644
4644
|
writeLogDepth();
|
|
4645
4645
|
}
|
|
4646
|
-
`;l0=6;Xd={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},$_e={TEX_INDEX_BITS:12,DIAGONAL_FLAG_SHIFT:12,SECTION_Y_SHIFT:13,SECTION_Y_BITS:5,EMPTY_SHIFT:18,SECTION_X_HI_SHIFT:19,SECTION_Z_HI_SHIFT:25,SECTION_HI_BITS:6,SPARE_BITS:1},UYe={SECTION_BITS:22,SECTION_MASK:(1<<22)-1,LO_BITS:16,HI_BITS:6,SECTION_BIAS:2097152}});var r9,X_e=zn(()=>{"use strict";h();p();m();r9=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 i9,Y_e=zn(()=>{"use strict";h();p();m();Lt();i9=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),a=Math.round(n*255);return r<<16|s<<8|a}add(e,t,n,r,s){let a=this.packColor(e,t,n),o=`${r}:${s}`,l=this.categoryBiomeToIndex.get(o);if(l!==void 0)return l;let c=this.colorToIndex.get(a);if(c!==void 0)return this.categoryBiomeToIndex.set(o,c),c;let u=this.entries.length;return this.entries.push({r:e,g:t,b:n}),this.colorToIndex.set(a,u),this.categoryBiomeToIndex.set(o,u),u}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 di(e,256,1,Wr,Gr);return t.minFilter=ct,t.magFilter=ct,t.wrapS=$n,t.wrapT=$n,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,a=(r>>8&255)/255,o=(r&255)/255;return[s,a,o]}if(e.grass){let r=n(e.grass.default);for(let{keys:s,color:a}of e.grass.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[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:a}of e.foliage.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[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:a}of e.redstone.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[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:a}of e.constant.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[2],"constant",l)}t.add(r[0],r[1],r[2],"constant","default")}return t}}});function FYe(){let i=globalThis.loadedData?.tints;return i||(J_e||(J_e=!0,console.warn("[shaderCubeBridge] loadedData.tints missing; shader cubes use legacy path")),null)}function o9(){let i=FYe();if(!i)return null;if(s9||(s9=i9.fromTintsData(i),s9.createTexture()),!IP){let e=A3.latest??A3;IP=new r9({width:e.width,height:e.height,tileSize:e.tileSize??16,suSv:e.suSv??16,textures:e.textures??{}})}return{tintPalette:s9,textureIndexMapping:IP}}function K_e(){return 1<<$_e.EMPTY_SHIFT>>>0}var a9,s9,IP,J_e,H5=zn(()=>{"use strict";h();p();m();DE();Kc();X_e();Y_e();a9=4,s9=null,IP=null,J_e=!1});function VYe(i,e){let t=new Ea,n=new Float32Array(l0*3);t.setAttribute("position",new Mt(n,3));let r=new Uint32Array(e),s=new Uint32Array(e),a=new Uint32Array(e),o=new Uint32Array(e),l=a9;for(let c=0;c<e;c++)r[c]=i[c*l],s[c]=i[c*l+1],a[c]=i[c*l+2],o[c]=i[c*l+3];return t.setAttribute("a_w0",new Tr(r,1)),t.setAttribute("a_w1",new Tr(s,1)),t.setAttribute("a_w2",new Tr(a,1)),t.setAttribute("a_w3",new Tr(o,1)),t.instanceCount=e,t.boundingBox=new In(new $(-8,-8,-8),new $(8,8,8)),t.boundingSphere=new Rn(new $(0,0,0),Math.sqrt(3*8**2)),t}function zYe(i){i.raycast=(e,t)=>{let{geometry:n}=i;if(!n.boundingBox||(Z_e.copy(n.boundingBox).applyMatrix4(i.matrixWorld),!e.ray.intersectBox(Z_e,RP)))return;let r=e.ray.origin.distanceTo(RP);t.push({distance:r,point:RP.clone(),object:i})}}function l9(i,e){let t=VYe(i.words,i.count),n=new Ke(t,e);return n.name="shaderMesh",n.matrixAutoUpdate=!1,n.frustumCulled=!1,zYe(n),n}function CP(i){i.geometry.dispose()}var Z_e,RP,PP=zn(()=>{"use strict";h();p();m();Lt();Kc();H5();Z_e=new In,RP=new $});var i4e={};so(i4e,{applyWorldGeometryExport:()=>GYe,createMeshesFromExport:()=>n4e,downloadWorldGeometry:()=>LP,exportWorldGeometry:()=>e4e,loadTextureFromDataUrl:()=>r4e,loadWorldGeometryFromUrl:()=>HYe});function e4e(i,e,t,n=!1){let r=[],s=Ml(i.timeOfTheDay)/15,a=i.chunkMeshManager.globalLegacyBuffer;for(let[l,c]of Object.entries(i.sectionObjects)){let u=[],d=[],f=[],v=[],g=[],b=[],y=[],_=a?.getSectionGeometryData(l);_&&(u.push(..._.positions),f.push(...Kb(_.colors,_.skyLights,_.blockLights,s)),v.push(..._.skyLights),g.push(..._.blockLights),b.push(..._.uvs),y.push(..._.indices));let x=c.children.find(w=>w.name==="mesh");if(x?.geometry){let{geometry:w}=x,S=w.getAttribute("position"),A=w.getAttribute("normal"),k=w.getAttribute("color"),C=w.getAttribute("a_skyLight"),I=w.getAttribute("a_blockLight"),T=w.getAttribute("uv"),L=w.index;if(S&&L&&k){let B=u.length/3,U=S.count,O=Array.from(k.array),V=C?Array.from(C.array):new Array(U).fill(1),F=I?Array.from(I.array):new Array(U).fill(0);u.push(...Array.from(S.array)),A&&d.push(...Array.from(A.array)),f.push(...Kb(O,V,F,s)),v.push(...V),g.push(...F),T&&b.push(...Array.from(T.array));for(let J of Array.from(L.array))y.push(J+B)}}u.length===0||y.length===0||r.push({key:l,position:{x:c.worldX??0,y:c.worldY??0,z:c.worldZ??0},geometry:{positions:u,normals:d,colors:f,skyLights:v,blockLights:g,uvs:b,indices:y}})}let o={version:i.version??"unknown",exportedAt:new Date().toISOString(),camera:{position:e,rotation:t},sections:r};if(n&&i.material.map){let l=document.createElement("canvas"),c=i.material.map,{image:u}=c;u&&(l.width=u.width,l.height=u.height,l.getContext("2d").drawImage(u,0,0),o.textureAtlasDataUrl=l.toDataURL("image/png"))}return o}function LP(i,e,t,n="world-geometry.json",r=!1){let s=e4e(i,e,t,r),a=JSON.stringify(s),o=new Blob([a],{type:"application/json"}),l=URL.createObjectURL(o),c=document.createElement("a");c.href=l,c.download=n,c.click(),URL.revokeObjectURL(l)}async function HYe(i){let e=await fetch(i);if(!e.ok)throw new Error(`Failed to fetch world geometry: ${e.statusText}`);return e.json()}function t4e(i,e){let t=i.map??i.map;if(!t)return null;let n=e9();n.uniforms.u_atlas.value=t,t9(n,e);let r=o9();if(!r)return null;let{tintPalette:s}=r;return s.isReady()||s.createTexture(),n.uniforms.u_tintPalette.value=s.getTexture(),n}function n4e(i,e,t,n=1){let r=[],s=t??t4e(e,n);for(let a of i.sections){let o=new bt;if(o.name="chunk",a.geometry.positions.length>0&&a.geometry.indices.length>0){let u=new dt;if(u.setAttribute("position",new Je(a.geometry.positions,3)),a.geometry.normals.length&&u.setAttribute("normal",new Je(a.geometry.normals,3)),a.geometry.colors.length){let g=a.geometry.skyLights?.length?Kb(a.geometry.colors,a.geometry.skyLights,a.geometry.blockLights,n):a.geometry.colors;u.setAttribute("color",new Je(g,3))}a.geometry.uvs.length&&u.setAttribute("uv",new Je(a.geometry.uvs,2));let f=Math.max(...a.geometry.indices)>65535?Uint32Array:Uint16Array;u.setIndex(new Mt(new f(a.geometry.indices),1));let v=new Ke(u,e);v.position.set(a.position.x,a.position.y,a.position.z),v.name="mesh",o.add(v)}let c=a.shaderCubes;if(c&&c.count>0&&s){let u=l9(c,s);u.position.set(a.position.x,a.position.y,a.position.z),o.add(u)}o.children.length>0&&r.push(o)}return r}async function r4e(i){return new Promise((e,t)=>{let n=new Image;n.onload=()=>{let r=new sn(n);r.magFilter=ct,r.minFilter=ct,r.needsUpdate=!0,r.flipY=!1,e(r)},n.onerror=t,n.src=i})}async function GYe(i,e){let{scene:t,renderUpdateEmitter:n,material:r}=i,s=t.getObjectByName(Q_e);s&&(t.remove(s),qYe(s));let a=!!e.textureAtlasDataUrl,o;if(a&&e.textureAtlasDataUrl){let f=await r4e(e.textureAtlasDataUrl);o=new Ss({map:f,vertexColors:!0,transparent:!0,alphaTest:.1}),o.name="geometry-export-material"}else o=r;let l=Ml(i.timeOfTheDay)/15,c=e.sections.some(f=>(f.shaderCubes?.count??0)>0)?t4e(o,l):null,u=n4e(e,o,c,l),d=new bt;d.name=Q_e,a&&(d.userData.geometryExportMaterial=o);for(let f of u)d.add(f);return t.add(d),n.emit("update"),u.length}var Q_e,qYe,BP=zn(()=>{"use strict";h();p();m();Lt();d4();W_e();H5();Kc();PP();Q_e="geometry-export-root";qYe=i=>{i.traverse(t=>{t.isMesh&&t.geometry?.dispose()});let e=i.userData?.geometryExportMaterial;e&&(e.map?.dispose?.(),e.dispose?.())}});var P9=M((K9n,d8e)=>{h();p();m();var{Vec3:u8e}=gl(),ii={UNKNOWN:-999,BOTTOM:0,TOP:1,NORTH:2,SOUTH:3,WEST:4,EAST:5},C9=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 u8e(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 u8e(this.startx+this.x,0,this.starty+this.y)}},sL=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)}},aL=class{constructor(e,t,n){this.block={x:Math.floor(e.x),y:Math.floor(e.y),z:Math.floor(e.z),face:ii.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=ii.UNKNOWN,s=this.pos.minus(t);for(let a of e){let o=(a[this.invDirX>0?0:3]-s.x)*this.invDirX,l=(a[this.invDirX>0?3:0]-s.x)*this.invDirX,c=(a[this.invDirY>0?1:4]-s.y)*this.invDirY,u=(a[this.invDirY>0?4:1]-s.y)*this.invDirY,d=this.stepX>0?ii.WEST:ii.EAST;if(o>u||c>l)continue;c>o&&(o=c,d=this.stepY>0?ii.BOTTOM:ii.TOP),u<l&&(l=u);let f=(a[this.invDirZ>0?2:5]-s.z)*this.invDirZ,v=(a[this.invDirZ>0?5:2]-s.z)*this.invDirZ;o>v||f>l||(f>o&&(o=f,d=this.stepZ>0?ii.NORTH:ii.SOUTH),v<l&&(l=v),o<n&&(n=o,r=d))}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?ii.WEST:ii.EAST):(this.block.z+=this.stepZ,this.tMaxZ+=this.tDeltaZ,this.block.face=this.stepZ>0?ii.NORTH:ii.SOUTH):this.tMaxY<this.tMaxZ?(this.block.y+=this.stepY,this.tMaxY+=this.tDeltaY,this.block.face=this.stepY>0?ii.BOTTOM:ii.TOP):(this.block.z+=this.stepZ,this.tMaxZ+=this.tDeltaZ,this.block.face=this.stepZ>0?ii.NORTH:ii.SOUTH),this.block)}},oL=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}};d8e.exports={ManhattanIterator:C9,ManathanIterator:C9,OctahedronIterator:sL,RaycastIterator:aL,SpiralIterator2d:oL,BlockFace:ii}});var h8e=M((txn,f8e)=>{h();p();m();var{Vec3:bg}=gl(),{EventEmitter:BJe}=(Ra(),Ar(j0)),{RaycastIterator:DJe}=P9();function Wi(i){return new bg(Math.floor(i.x)&15,Math.floor(i.y),Math.floor(i.z)&15)}var lL=class extends BJe{constructor(e){super(),this.async=e}initialize(e,t,n,r=256,s=new bg(0,0,0)){function a(u,d,f){return!(u>=n||u<0||f>=t||f<0||d>=r||d<0)}let o=Wi(s),l=Math.ceil((t+o.z)/16),c=Math.ceil((n+o.x)/16);for(let u=0;u<l;u++){let d=u+Math.floor(s.z/16);for(let f=0;f<c;f++){let v=f+Math.floor(s.x/16),g=this.getColumn(v,d),b=f*16-o.x,y=u*16-o.z;g.initialize((_,x,w)=>a(_+b,x-s.y,w+y)?e(_+b,x-s.y,w+y):null),this.setColumn(v,d,g)}}}raycast(e,t,n,r=null){let s=new DJe(e,t,n),a=e;for(;a;){let o=new bg(a.x,a.y,a.z),l=this.getBlock(o);if(l)if(r){if(r(l,s))return l}else{let c=s.intersect([...l.shapes,...l.interactionShapes??[]],o);if(c)return l.face=c.face,l.intersect=c.pos,l}a=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 bg(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 bg(e*16,0,t*16);this.emit("chunkColumnLoad",s)}getBlock(e){let t=this.getColumnAt(e);if(!t)return null;let n=t.getBlock(Wi(e));return n.position=e.floored(),n}getBlockStateId(e){let t=this.getColumnAt(e);return t?t.getBlockStateId(Wi(e)):0}getBlockType(e){let t=this.getColumnAt(e);return t?t.getBlockType(Wi(e)):0}getBlockData(e){let t=this.getColumnAt(e);return t?t.getBlockData(Wi(e)):0}getBlockLight(e){let t=this.getColumnAt(e);return t?t.getBlockLight(Wi(e)):0}getSkyLight(e){let t=this.getColumnAt(e);return t?t.getSkyLight(Wi(e)):0}getBiome(e){let t=this.getColumnAt(e);return t?t.getBiome(Wi(e)):0}setBlock(e,t){let n=this.getColumnAt(e);if(!n)return;let r=Wi(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=Wi(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=Wi(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=Wi(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=Wi(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=Wi(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=Wi(e),s=n.getBlock(r);n.setBiome(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}};f8e.exports=lL});var p8e=M((sxn,m8e)=>{h();p();m();var{Vec3:wg}=gl(),{EventEmitter:OJe}=(Ra(),Ar(j0)),{RaycastIterator:NJe}=P9(),UJe=h8e(),{once:FJe}=(Ra(),Ar(j0));function xg(i,e){return i+","+e}function ji(i){return new wg(Math.floor(i.x)&15,Math.floor(i.y),Math.floor(i.z)&15)}var cL=class extends OJe{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 UJe(this),t&&n!==0&&this.startSaving()}initialize(e,t,n,r=256,s=new wg(0,0,0)){function a(d,f,v){return!(d>=n||d<0||v>=t||v<0||f>=r||f<0)}let o=[],l=ji(s),c=Math.ceil((t+l.z)/16),u=Math.ceil((n+l.x)/16);for(let d=0;d<c;d++){let f=d+Math.floor(s.z/16);for(let v=0;v<u;v++){let g=v+Math.floor(s.x/16);o.push(this.getColumn(g,f).then(b=>{let y=v*16-l.x,_=d*16-l.z;return b.initialize((x,w,S)=>a(x+y,w-s.y,S+_)?e(x+y,w-s.y,S+_):null),this.setColumn(g,f,b)}).then(()=>({chunkX:g,chunkZ:f})))}}return Promise.all(o)}async raycast(e,t,n,r=null){let s=new NJe(e,t,n),a=e;for(;a;){let o=new wg(a.x,a.y,a.z),l=await this.getBlock(o);if(l&&(!r||r(l))){let c=s.intersect([...l.shapes,...l.interactionShapes??[]],o);if(c)return l.face=c.face,l.intersect=c.pos,l}a=s.next()}return null}getLoadedColumn(e,t){let n=xg(e,t);return this.columns[n]}async getColumn(e,t){await Promise.resolve();let n=xg(e,t);if(!this.columns[n]){let r=null;if(this.storageProvider!=null){let a=await this.storageProvider.load(e,t);a!=null&&(r=a)}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=xg(e,t);this.columns[s]=n;let a=new wg(e*16,0,t*16);this.emit("chunkColumnLoad",a),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=xg(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 wg(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 FJe(this,"doneSaving"),await this.finishedSaving}stopSaving(){clearInterval(this.savingInt)}queueSaving(e,t){this.savingQueue.set(xg(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=ji(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(ji(e));return t.position=e.floored(),t}async getBlockStateId(e){return(await this.getColumnAt(e)).getBlockStateId(ji(e))}async getBlockType(e){return(await this.getColumnAt(e)).getBlockType(ji(e))}async getBlockData(e){return(await this.getColumnAt(e)).getBlockData(ji(e))}async getBlockLight(e){return(await this.getColumnAt(e)).getBlockLight(ji(e))}async getSkyLight(e){return(await this.getColumnAt(e)).getSkyLight(ji(e))}async getBiome(e){return(await this.getColumnAt(e)).getBiome(ji(e))}async setBlockStateId(e,t){let n=await this.getColumnAt(e),r=ji(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=ji(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=ji(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=ji(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=ji(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=ji(e),s=n.getBlock(r);n.setBiome(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}};function VJe(i){return cL}m8e.exports=VJe});var v8e=M((cxn,uL)=>{h();p();m();uL.exports=p8e();uL.exports.iterators=P9()});h();p();m();h();p();m();function OB(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 m0(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 U8e(i,e,t){return Array.isArray(i)?i.reduce((n,r)=>{let s=r[e],a=r[t];for(let o=s;o<=a;o++)n[o]=r;return n},{}):(console.warn("[augmentWorkerMcData] buildIndexFromArrayWithRanges expected array, got",typeof i),{})}function F8e(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 Cg(i,e,t){let n=OB(i[e]);if(n?.length)return n;let r=OB(i[t]);if(r?.length)return r}function NB(i){if(i.__workerIndexesBuilt)return i;let e=Cg(i,"blocksArray","blocks");e?.length&&(F8e(e),i.blocksArray=e,i.blocks=m0(e,"id"),i.blocksByName=m0(e,"name"),i.blocksByStateId=U8e(e,"minStateId","maxStateId"));let t=Cg(i,"itemsArray","items");t?.length&&(i.itemsArray=t,i.itemsByName=m0(t,"name"),i.items=m0(t,"id"));let n=Cg(i,"entitiesArray","entities");n?.length&&(i.entitiesArray=n,i.entitiesByName=m0(n,"name"),i.entities=m0(n,"id"));let r=Cg(i,"biomesArray","biomes");return r?.length&&(i.biomesArray=r,i.biomes=m0(r,"id"),i.biomesByName=m0(r,"name")),i.__workerIndexesBuilt=!0,i}h();p();m();Lt();h();p();m();var kN=Jr(gl(),1);var At=kN.default.Vec3;h();p();m();h();p();m();h();p();m();var UKe=Symbol(),bEe=Symbol();var TN=Object.getPrototypeOf,qw=new WeakMap,xEe=i=>i&&(qw.has(i)?qw.get(i):TN(i)===Object.prototype||TN(i)===Array.prototype);var IN=i=>xEe(i)&&i[bEe]||null,Gw=(i,e=!0)=>{qw.set(i,e)};var v1={},Ww=i=>typeof i=="object"&&i!==null,G0=new WeakMap,H7=new WeakSet,wEe=(i=Object.is,e=(c,u)=>new Proxy(c,u),t=c=>Ww(c)&&!H7.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,u,d=n)=>{let f=r.get(c);if(f?.[0]===u)return f[1];let v=Array.isArray(c)?[]:Object.create(Object.getPrototypeOf(c));return Gw(v,!0),r.set(c,[u,v]),Reflect.ownKeys(c).forEach(g=>{if(Object.getOwnPropertyDescriptor(v,g))return;let b=Reflect.get(c,g),{enumerable:y}=Reflect.getOwnPropertyDescriptor(c,g),_={value:b,enumerable:y,configurable:!0};if(H7.has(b))Gw(b,!1);else if(b instanceof Promise)delete _.value,_.get=()=>d(b);else if(G0.has(b)){let[x,w]=G0.get(b);_.value=s(x,w(),d)}Object.defineProperty(v,g,_)}),Object.preventExtensions(v)},a=new WeakMap,o=[1,1],l=c=>{if(!Ww(c))throw new Error("object required");let u=a.get(c);if(u)return u;let d=o[0],f=new Set,v=(T,L=++o[0])=>{d!==L&&(d=L,f.forEach(B=>B(T,L)))},g=o[1],b=(T=++o[1])=>(g!==T&&!f.size&&(g=T,_.forEach(([L])=>{let B=L[1](T);B>d&&(d=B)})),d),y=T=>(L,B)=>{let U=[...L];U[1]=[T,...U[1]],v(U,B)},_=new Map,x=(T,L)=>{if((v1.env?v1.env.MODE:void 0)!=="production"&&_.has(T))throw new Error("prop listener already exists");if(f.size){let B=L[3](y(T));_.set(T,[L,B])}else _.set(T,[L])},w=T=>{var L;let B=_.get(T);B&&(_.delete(T),(L=B[1])==null||L.call(B))},S=T=>(f.add(T),f.size===1&&_.forEach(([B,U],O)=>{if((v1.env?v1.env.MODE:void 0)!=="production"&&U)throw new Error("remove already exists");let V=B[3](y(O));_.set(O,[B,V])}),()=>{f.delete(T),f.size===0&&_.forEach(([B,U],O)=>{U&&(U(),_.set(O,[B]))})}),A=Array.isArray(c)?[]:Object.create(Object.getPrototypeOf(c)),C=e(A,{deleteProperty(T,L){let B=Reflect.get(T,L);w(L);let U=Reflect.deleteProperty(T,L);return U&&v(["delete",[L],B]),U},set(T,L,B,U){let O=Reflect.has(T,L),V=Reflect.get(T,L,U);if(O&&(i(V,B)||a.has(B)&&i(V,a.get(B))))return!0;w(L),Ww(B)&&(B=IN(B)||B);let F=B;if(B instanceof Promise)B.then(J=>{B.status="fulfilled",B.value=J,v(["resolve",[L],J])}).catch(J=>{B.status="rejected",B.reason=J,v(["reject",[L],J])});else{!G0.has(B)&&t(B)&&(F=l(B));let J=!H7.has(F)&&G0.get(F);J&&x(L,J)}return Reflect.set(T,L,F,U),v(["set",[L],B,V]),!0}});a.set(c,C);let I=[A,b,s,S];return G0.set(C,I),Reflect.ownKeys(c).forEach(T=>{let L=Object.getOwnPropertyDescriptor(c,T);"value"in L&&(C[T]=c[T],delete L.value,delete L.writable),Object.defineProperty(A,T,L)}),C})=>[l,G0,H7,i,e,t,n,r,s,a,o],[SEe]=wEe();function _l(i={}){return SEe(i)}function jw(i){let e=G0.get(i);return e?.[1]()}function g1(i,e,t){let n=G0.get(i);(v1.env?v1.env.MODE:void 0)!=="production"&&!n&&console.warn("Please use proxy object");let r,s=[],a=n[3],o=!1,c=a(u=>{if(s.push(u),t){e(s.splice(0));return}r||(r=Promise.resolve().then(()=>{r=void 0,o&&e(s.splice(0))}))});return o=!0,()=>{o=!1,c()}}function PN(i,e){let t=e??globalThis;return t.addEventListener("message",n=>{let{type:r,args:s,msgId:a}=n.data;if(i[r]){let o=i[r](...s);o instanceof Promise&&o.then(l=>{t.postMessage({type:"result",msgId:a,args:[l]})})}}),null}var LN=!1,u2={toWorker:0,fromWorker:0},RN=null,EEe=()=>{RN==null&&(typeof window>"u"||(RN=setInterval(()=>{globalThis.debugWorkerSyncStats={...u2},u2.toWorker=0,u2.fromWorker=0},1e3)))},G7=i=>{EEe(),i==="toWorker"?u2.toWorker++:u2.fromWorker++};var MEe=(i,e,t)=>{if(e.length===0)return;let n=i;for(let r=0;r<e.length-1;r++){let s=e[r];(n[s]==null||typeof n[s]!="object")&&(n[s]={}),n=n[s]}n[e[e.length-1]]=t},AEe=(i,e)=>{if(e.length===0)return;let t=i;for(let n=0;n<e.length-1;n++)if(t=t[e[n]],t==null)return;delete t[e[e.length-1]]},$w=(i,e)=>{if(i==null||typeof i!="object")return i;if(i instanceof At)return{x:i.x,y:i.y,z:i.z,__restorer:"Vec3"};if(typeof i.prepareForTransfer=="function")return i.prepareForTransfer(e);if(ArrayBuffer.isView(i))return i;if(Array.isArray(i))return i.map(n=>$w(n,e));if(jw(i)!==void 0)return q7(i);let t={};for(let n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=$w(i[n],e));return t},kEe=(i,e)=>{let t=[];for(let n of i){let r=n[0];r==="delete"?t.push({kind:"delete",path:n[1]}):r==="set"&&t.push({kind:"set",path:n[1],value:$w(n[2],e)})}return t},TEe=(i,e,t,n,r)=>{if(e.length===0)return;let s=kEe(e,t);if(s.length!==0)try{t.postMessage({type:"sync",syncId:i,ops:s}),n==="toWorker"&&G7("toWorker"),LN&&console.log(`sync ${r}`,s.length,"ops")}catch(a){console.error("Failed to send worker sync ops",a,r);for(let o of s)o.kind==="set"&&Xw(o.value)}},IEe=(i,e,t,n=!1)=>{for(let r of e)r.kind==="delete"?AEe(i,r.path):MEe(i,r.path,d2(r.value,[],t,!1,!1));n==="fromWorker"&&G7("fromWorker")},REe=(i,e,t,n,r)=>{try{let s=q7(e);t.postMessage({type:"sync",syncId:i,value:s}),n==="toWorker"&&G7("toWorker"),LN&&console.log(`sync snapshot ${r}`)}catch(s){console.error("Failed to send worker sync snapshot",s,r),Xw(e)}},CEe=(i,e,t,n=!1)=>{Object.assign(i,d2(e,[],t,!1,!1)),n==="fromWorker"&&G7("fromWorker")};var q7=i=>{if(jw(i)===void 0)return i;if(Array.isArray(i))return i.map(q7);if(typeof i=="object"&&i!==null){let e={};for(let t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=q7(i[t]));return e}return i};var Xw=(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&&Xw(i[t],[...e,t]);try{structuredClone(i[t])}catch(n){console.error(n),console.log("Failed to clone for transfer",e.join("."))}}},CN=new WeakMap,PEe=(i,e,t)=>{if(!i.__syncId)return;let n=i.__syncId,r=CN.get(e);if(r||(r=new Set,CN.set(e,r)),!r.has(n)&&(r.add(n),i.__syncToWorker&&e.addEventListener("message",s=>{s.data.type==="sync"&&s.data.syncId===n&&(s.data.ops?IEe(i,s.data.ops,e):s.data.value&&CEe(i,s.data.value,e))}),i.__syncFromWorker)){i.__valtio&&g1(i,a=>{TEe(n,a,e,"fromWorker",`fromWorker:${t}`)});let s=i.__syncFromWorkerInterval??0;s>0&&!i.__valtio&&setInterval(()=>{REe(n,i,e,"fromWorker",`fromWorker:interval:${t}`)},s)}},LEe=[{restorerName:"Vec3",restoreTransferred(i,e){return new At(i.x,i.y,i.z)}}];var d2=(i,e,t,n=!0,r=!0)=>{let s=[...LEe,...e],a=(o,l)=>{if(o==null||typeof o!="object")return o;if(o.__restorer){let c=s.find(d=>d.restorerName?d.restorerName===o.__restorer:d.name===o.__restorer);if(c)return c.restoreTransferred(o,t);let u=new Error(`Restorer ${o.__restorer} not found`);if(typeof n=="function")n(u);else{if(n)throw u;console.error(u)}return o}if(Array.isArray(o))return o.map((c,u)=>a(c,`${l}[${u}]`));for(let c in o){if(!Object.prototype.hasOwnProperty.call(o,c))continue;let u=o[c];u!=null&&typeof u=="object"&&(o[c]=a(u,`${l}.${c}`))}return o.__valtio&&(o=_l(o)),r&&PEe(o,t,l),o};return a(i,"root")};h();p();m();h();p();m();Ra();var GE=Jr(M3(),1);DE();var T0e={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 j_={"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"}}}};h();p();m();var I0e="";h();p();m();var R0e="";h();p();m();var C0e="";h();p();m();var P0e="";h();p();m();var L0e="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 B0e="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 D0e="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 O0e={"entity/chest/normal":L0e,"entity/chest/normal_left":B0e,"entity/chest/normal_right":D0e};h();p();m();h();p();m();var Na=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 o of this.versionsSorted)if((n?r<=this.semverToNumber(o):r<this.semverToNumber(o))&&this.data[o]?.[t]){s=o;break}let a;return this.strictVersioned?a=this.data[s]?.[t]:this.data[s]?.[t]?a=this.data[s][t]:this.data.latest[t]&&(a=this.data.latest[t]),a&&typeof a=="object"?structuredClone(a):a}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}};h();p();m();h();p();m();var Qn=class{oversized=!1;constructor(e=0,t=0,n=0,r=0,s=!1,a=void 0){this._width=e,this._height=t,this._x=n,this._y=r,this._data={},this._rot=s,this._allowRotation=a}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}},$_=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)}},mh=class i extends $_{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:rs.MAX_EDGE};constructor(e=X_,t=X_,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 Qn(this.maxWidth+this.padding-this.border*2,this.maxHeight+this.padding-this.border*2,this.border,this.border)),this.stage=new Qn(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 Qn(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 Qn(this.maxWidth+this.padding-this.border*2,this.maxHeight+this.padding-this.border*2,this.border,this.border)],this.stage=new Qn(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,a=0;for(;a<s;)this.splitNode(this.freeRects[a],n)&&(this.freeRects.splice(a,1),s--,a--),a++;return this.pruneFreeList(),this.verticalExpand=this.options.logic===rs.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 Qn(e.width+this.padding,e.height+this.padding,this.border,this.height+this.padding-this.border))||this.updateBinSize(new Qn(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 Qn(e.width+this.padding,e.height+this.padding,this.width+this.padding-this.border,this.border))||this.updateBinSize(new Qn(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,a,o;for(let l in this.freeRects){if(a=this.freeRects[l],a.width>=e&&a.height>=t){if(this.options.logic===rs.MAX_AREA)s=a.width*a.height-e*t;else if(this.options.logic===rs.FILL_WIDTH){let c=a.x+a.y*this.maxWidth,u=this.freeRects.filter(f=>f.x+f.y*this.maxWidth<c).length,d=a.y+t-this.height;s=u+d}else s=Math.min(a.width-e,a.height-t);s<r&&(o=new Qn(e,t,a.x,a.y),r=s)}if(n&&a.width>=t&&a.height>=e){if(this.options.logic===rs.MAX_AREA)s=a.width*a.height-t*e;else if(this.options.logic===rs.FILL_WIDTH){let c=a.x+a.y*this.maxWidth,u=this.freeRects.filter(f=>f.x+f.y*this.maxWidth<c).length,d=a.y+e-this.height;s=u+d}else s=Math.min(a.height-e,a.width-t);s<r&&(o=new Qn(t,e,a.x,a.y,!0),r=s)}}return o}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 Qn(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 Qn(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 Qn(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 Qn(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 Qn(e-this.width-this.padding,t-this.border*2,this.width+this.padding-this.border,this.border)),this.freeRects.push(new Qn(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()}},k3=class i extends $_{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 Qn(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])}},X_=4096,rs;(function(i){i[i.MAX_AREA=0]="MAX_AREA",i[i.MAX_EDGE=1]="MAX_EDGE",i[i.FILL_WIDTH=2]="FILL_WIDTH"})(rs||(rs={}));var Y_=class{width;height;padding;bins;options={smart:!0,pot:!0,square:!1,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:rs.MAX_EDGE};constructor(e=X_,t=X_,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 k3(t));else if(!this.bins.slice(this._currentBinIndex).find(r=>r.add(t)!==void 0)){let r=new mh(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 Qn(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 k3(t));else if(!this.bins.slice(this._currentBinIndex).find(r=>r.add(t)!==void 0)){let r=new mh(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,a)=>{let o=s.data&&s.data.tag?s.data.tag:s.tag?s.tag:void 0,l=a.data&&a.data.tag?a.data.tag:a.tag?a.tag:void 0;return l===void 0?-1:o===void 0?1:l>o?-1:1});let t,n=0;if(!this.bins.slice(this._currentBinIndex).find((s,a)=>{let o=s.clone();for(let l=n;l<e.length;l++){let c=e[l],u=c.data&&c.data.tag?c.data.tag:c.tag?c.tag:void 0;if(l===0&&(t=u),u!==t)return t=u,this.sort(e.slice(n,l),this.options.logic).forEach(d=>s.add(d)),n=l,this.addArray(e.slice(l)),!0;if(u===void 0)return this.sort(e.slice(l),this.options.logic).forEach(d=>this.add(d)),n=e.length,!0;if(o.add(c)===void 0)return this.sort(e.slice(n,l),this.options.logic).forEach(d=>s.add(d)),n=l,!1}return this.sort(e.slice(n),this.options.logic).forEach(l=>s.add(l)),!0})){let s=e[n],a=new mh(this.width,this.height,this.padding,this.options),o=s.data&&s.data.tag?s.data.tag:s.tag?s.tag:void 0;this.options.tag&&this.options.exclusiveTag&&o&&(a.tag=o),this.bins.push(a),a.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 k3(t.width,t.height,{}));else{let r=new mh(this.width,this.height,this.padding,t.options);r.freeRects.splice(0),t.freeRects.forEach((s,a)=>{r.freeRects.push(new Qn(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=rs.MAX_EDGE){return e.slice().sort((n,r)=>{let s=t===rs.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 J_=16384;function N0e(i){return i===0?1:(i--,i|=i>>1,i|=i>>2,i|=i>>4,i|=i>>8,i|=i>>16,i+1)}var U0e=({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(_=>{let x=e(_),w;if(x.image)w=x.image;else if(x.contents)w=new Image,w.src=x.contents;else throw new Error("No image or contents");let S=t*(x.tileWidthMult??1),A=t;if(x.useOriginalSize||x.renderWidth||x.renderHeight){let k=x.renderWidth??w.width,C=x.renderHeight??w.height;S=Math.ceil(k/t)*t,A=Math.ceil(C/t)*t}return{keyValue:_,img:w,inputData:x,renderWidth:S,renderHeight:A,renderSourceWidth:x.useOriginalSize?w.width:x.renderSourceWidth??Math.min(w.width,w.height),renderSourceHeight:x.useOriginalSize?w.height:x.renderSourceHeight??Math.min(w.width,w.height),renderSourceStartX:x.renderSourceStartX??0,renderSourceStartY:x.renderSourceStartY??0}}),a=new Y_(void 0,void 0,0,{square:!0,pot:!0,...r?{}:{smart:!0},logic:r?rs.FILL_WIDTH:rs.MAX_AREA}),o=s.map(_=>{let x=new Qn(_.renderWidth,_.renderHeight);return x.data=_,x});a.addArray(o);let l=a.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(_=>({x:_.x,y:_.y,img:{data:_.data}}))},u=new Set;for(let _ of c.coords){let x=_.img.data;if(u.has(x.keyValue))throw new Error(`Duplicate texture keyValue found in atlas: ${x.keyValue}`);u.add(x.keyValue)}if(u.size!==i.length)throw new Error(`Lost some textures in packing: ${i.length-u.size}`);let d=Math.max(N0e(c.width),N0e(c.height));if(d>J_){let _=s.reduce((w,S)=>{let A=`${S.renderWidth}x${S.renderHeight}`;return w[A]=(w[A]||0)+1,w},{}),x=Object.entries(_).sort(([,w],[,S])=>S-w).map(([w,S])=>`${w}(${S})`).join(", ");throw new Error(`Required atlas size ${d} exceeds maximum ${J_}. Texture sizes: ${x}`)}let f=n(d);f.width=d,f.height=d;let v=f.getContext("2d");v.imageSmoothingEnabled=!1;let g={},b=t/d,y=Math.ceil(d/t);for(let _ of c.coords){let x=_.img.data,w=_.x,S=_.y,A=Math.floor(S/t),k=Math.floor(w/t),C=A*y+k;try{v.drawImage(x.img,x.renderSourceStartX,x.renderSourceStartY,x.renderSourceWidth,x.renderSourceHeight,w,S,x.renderWidth,x.renderHeight)}catch(B){throw new Error(`Error drawing ${x.keyValue}: ${B}`)}let I=x.keyValue.split(".").slice(0,-1).join(".")||x.keyValue,T=x.renderWidth/d,L=x.renderHeight/d;g[I]={u:w/d,v:S/d,tileIndex:C,...T==b&&L==b?{}:{su:T,sv:L}}}return{canvas:f,json:{suSv:b,tileSize:t,width:d,height:d,textures:g}}};h();p();m();var OE=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)},qu=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 Js=class i{atlasJson;latestImage;legacyImage;atlasStore;atlasHasLegacyImage;static getTextureInfo(e,t,n,r="latest"){let s=e.get(r,n);if(!s)return;let a=(s.imageType==="latest"?t.latest:t.legacy).suSv;return{...s,su:s?.su??a,sv:s?.sv??a}}constructor(e,t,n){this.atlasJson=e,this.latestImage=t,this.legacyImage=n,this.atlasStore=new Na,this.atlasStore.inclusive=!1;let r=e,s=(a,o,l,c)=>{for(let[u,d]of Object.entries(l))a.push(o,u,{...d,version:o,imageType:c})};if(s(this.atlasStore,"latest",r.latest.textures,"latest"),this.atlasHasLegacyImage=!!n,n&&r.legacy)for(let a of Object.keys(r.legacy.textures)){let[o,l]=a.split("/");s(this.atlasStore,o,{[l]:r.legacy.textures[a]},"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 qu(n.imageType==="latest"?this.latestImage:this.legacyImage),getLoadedAtlasImage:async()=>await qu(n.imageType==="latest"?this.latestImage:this.legacyImage)}}async makeNewAtlas(e,t,n=this.atlas.latest.tileSize,r,s=[],a={}){let o=this.atlasJson,l={},c=this.atlasHasLegacyImage?await qu(this.legacyImage):null,u=await qu(this.latestImage);for(let b of new Set([...Object.keys(o.latest.textures),...s])){let y=t?.(b);if(y===!1)continue;if(y&&y!==!0){let I=typeof y=="string"?await qu(y):y;l[b]={u:0,v:0,su:1,sv:1,img:I};continue}let _=this.getTextureInfo(b,e);if(!_)throw new Error(`Missing texture info from the provided atlas for ${b} and not custom data is provided`);let{u:x,v:w,su:S,sv:A}=_,k=_.version==="latest"?o.latest:o.legacy,C=_.imageType==="latest"?u:c;if(!C)throw new Error(`Missing image for ${b}`);l[b]={u:x,v:w,su:S??k.suSv,sv:A??k.suSv,img:C}}let d=Object.keys(l);if(r){let b=typeof r=="function"?r:y=>r.includes(y)?1:-1;d.sort((y,_)=>b(_)-b(y))}let{json:f,canvas:v}=U0e({input:d,getLoadedImage:b=>{let y=l[b],_=y.img,x=_.width,w=_.height;return delete y.img,{image:_,renderWidth:y.su*x,renderHeight:y.sv*w,renderSourceStartX:y.u*x,renderSourceStartY:y.v*w,renderSourceWidth:y.su*x,renderSourceHeight:y.sv*w}},tileSize:this.atlas.latest.tileSize,...a}),g;return{canvas:v,atlas:f,get newAtlasParser(){return g||(g=new i({latest:f},v.toDataURL())),g},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(J_,t.width*(e?6:1))/t.width,s=t.height*r,a=t.width*r,o=globalThis.Canvas?new globalThis.Canvas(a,s):document.createElement("canvas");o.width=a,o.height=s;let l=o.getContext("2d");l.imageSmoothingEnabled=!1,l.webkitImageSmoothingEnabled=!1,l.mozImageSmoothingEnabled=!1,l.msImageSmoothingEnabled=!1;let c=await qu(this.latestImage);l.drawImage(c,0,0,t.width,t.height,0,0,a,s),l.strokeStyle="#ff0000",l.lineWidth=2;let u=Object.keys(t.textures),d=u.length,f=0;return u.forEach((v,g)=>{let b=t.textures[v],y=Math.floor(g/d*100);y>=f+10&&(console.log(`Processing textures: ${y}% (${g}/${d})`),f=y);let _=b.u*t.width*r,x=b.v*t.height*r,w=(b.su||t.suSv)*t.width*r,S=(b.sv||t.suSv)*t.height*r,A=l.createPattern((()=>{let k=globalThis.Canvas?new globalThis.Canvas(10,10):document.createElement("canvas");k.width=10,k.height=10;let C=k.getContext("2d");return C.fillStyle="#ff0000",C.fillRect(0,0,5,10),C.fillStyle="#ffff00",C.fillRect(5,0,5,10),k})(),"repeat");if(l.strokeStyle=A,l.strokeRect(_,x,w,S),e){let k=v,C=4,I=w-C*2,T=12;do{if(l.font=`${T}px monospace`,l.measureText(k).width<=I||T<=6)break;T-=1}while(T>6);l.fillStyle="white",l.strokeStyle="black",l.lineWidth=Math.max(1,T/6),l.textBaseline="top";let L=_+C,B=x+C,U=k.split(/(?=[A-Z_/])/g),O="",V=[];for(let J of U){let X=O+J;l.measureText(X).width>I&&O!==""?(V.push(O),O=J):O=X}V.push(O);let F=T*1.2;V.forEach((J,X)=>{l.strokeText(J,L,B+X*F),l.fillText(J,L,B+X*F)})}}),console.log(`Processing textures: 100% (${d}/${d})`),o.toDataURL()}};h();p();m();h();p();m();var F0e=i=>{let e=i.split(":");return e.length===1?"minecraft":e.length===2?e[0]:e.slice(0,-1).join(":")},ph=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 a of n)a?.elements&&r.push(...a.elements.map(({from:o,to:l})=>[o,l]));return r.length===1&&V0e(r[0][0],[0,0,0])&&V0e(r[0][1],[16,16,16])?1:r}resolvedModel={modelName:""};issues=[];matchedModels=[];matchedConditions=[];getModelsByBlock(e,t,n){this.matchedModels=[],this.matchedConditions=[];let r=(d,f)=>{if(!f)return!0;typeof f=="string"&&(f=this.parseProperties(f));let v=d.properties;if(f.OR)return f.OR.some(g=>r(d,g));if(f.AND)return f.AND.every(g=>r(d,g));for(let g in f)if(typeof f[g]!="string"&&(f[g]=String(f[g])),!f[g].split("|").some(b=>b===String(v[g])))return!1;return!0},s=[],a=this.blockStatesStore.get(this.version,e.name);if(!a){this.issues.push(`Block ${e.name} not found in all registered blockstates. Place it into assets/${F0e(e.name)}/blockstates/${e.name}.json`);return}let o=a.variants,l=!1;if(o){let d=o[""]||o.normal;for(let f in o)if(f!==""&&r(e,f)){d=o[f];break}if(d){let f=Object.entries(o).find(([v])=>d===o[v])?.[0];this.matchedConditions.push(`variant:${f}`)}if(!d)if(t){let f=Object.keys(o)[0];d=o[f],this.matchedConditions.push(`fallback:${f}`)}else return;d&&(s.push(d),l=!0)}if(a.multipart){for(let{when:d,apply:f}of a.multipart)(!d||r(e,d))&&(s.push(f),this.matchedConditions.push(d?`multipart:${JSON.stringify(d)}`:"multipart:always"));if(!s.length&&t){let f=a.multipart.filter(v=>v.when)[0]?.apply;f&&(s.push(f),this.matchedConditions.push("multipart:fallback"))}}if(!s.length){if(!l){let d=Object.keys(o??{}).length;d?this.issues.push(`Block did not match any possible state (${d} possible states)`):this.issues.push(`Blockstates for ${e.name} are not defined`)}return}let c=[],u=0;for(let d of s){u++;let f=0;c.push([]);for(let v of Array.isArray(d)?d:[d])if(f++,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+"-"+u+"-"+f,!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/${F0e(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=o=>{if(r.push(o),o.parent){let l=this.getModelData(o.parent);if(!l){this.issues.push(`Parent model ${o.parent} not found for ${t}`);return}this.matchedModels.push(`parent:${o.parent}`),s(l)}};s(e),r.reverse();for(let o of r){if(o.textures){this.resolvedModel.textures??={};for(let[l,c]of Object.entries(o.textures)){if(c.includes("#")&&(c=c.split("/").at(-1)),c.startsWith("#")){let u=c.slice(1);this.resolvedModel.textures[u]&&(c=this.resolvedModel.textures[u])}this.resolvedModel.textures[l]=c}}o.elements&&(this.resolvedModel.elements=o.elements);for(let[l,c]of Object.entries(o))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 a=(o,l,c)=>{if(c.push(l),o.includes("#")){if(o=o.split("/").at(-1).replace("#",""),this.resolvedModel.textures??={},c.includes(o)){this.issues.push(`${t}: Circular texture reference detected: ${c.join(" -> ")}`);return}let u=this.resolvedModel.textures[o];if(u)return a(u,o,c);this.issues.push(`${t}: Cannot resolve texture ${o} for ${l} because it is not defined`);return}return o};for(let[o,l]of Object.entries(this.resolvedModel.textures??{})){if(!l.includes("#"))continue;let c=a(l,o,[]);c?this.resolvedModel.textures[o]=c:delete this.resolvedModel.textures[o]}for(let o of this.resolvedModel.elements??[])for(let[l,c]of Object.entries(o.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)}},V0e=(i,e)=>!!i&&!!e&&i.length===e.length&&i.every((t,n)=>t===e[n]);h();p();m();var rMe=new Na,iMe=new Na,sMe=new Na;rMe.inclusive=!1;iMe.inclusive=!1;sMe.inclusive=!1;var K_=i=>{let e=new Na;return e.inclusive=!1,e.loadData(i.blockstates),e},Z_=i=>{let e=new Na;return e.inclusive=!1,e.loadData(i.models),e},Q_=i=>{let e=new Na;return e.inclusive=!1,e.loadData(i),e};function e4(i,e,t){let n=K_(i),r=Z_(i),s=new ph(t,n,r),a=new Js(e,"latest","legacy"),o=c=>a.getTextureInfo(c.replace("block/","").replace("blocks/",""),t),l=(c,u,d)=>{let{elements:f,textures:v,...g}=c;return{elements:f?.map((b,y)=>{try{return{...b,faces:Object.fromEntries(Object.entries(b.faces).map(([_,x])=>{let w=x.texture;if(!w)throw new Error(`Missing resolved texture ${w} for face ${_} of ${u.name}`);let S=o(w);if(!S)throw new Error(`Missing texture data ${w} for ${u.name}`);let A=b.from,k=b.to,C=16,I=x.uv||{north:[k[0],C-k[1],A[0],C-A[1]],east:[A[2],C-k[1],k[2],C-A[1]],south:[A[0],C-k[1],k[0],C-A[1]],west:[A[2],C-k[1],k[2],C-A[1]],up:[A[0],A[2],k[0],k[2]],down:[k[0],A[2],A[0],k[2]]}[_],T=(I[2]-I[0])/C*S.su,L=(I[3]-I[1])/C*S.sv;return[_,{...x,texture:{u:S.u+I[0]/16*S.su,v:S.v+I[1]/16*S.sv,su:T,sv:L,tileIndex:S.tileIndex,debugName:w}}]}))}}catch(_){return d?.push(`Error processing element ${y} in ${u.name}: ${_.message}`),null}}).filter(b=>b!==null),...g}};return{getAllResolvedModels0_1(c,u=!1,d=[],f=[],v=[],g=!1){s.issues=[],s.matchedModels=[],s.matchedConditions=[];let b=s.getAllResolvedModels(c,u)??[];if(d.push(...s.issues),f.push(...s.matchedModels),v.push(...s.matchedConditions),!b.length)return d.push(`No models found for block ${c.name}`),[];let y=["north","east","south","west","up","down"];try{let _=b.map(x=>x.map(w=>{try{return l(w,c,g?d:void 0)}catch(S){return d.push(`Error transforming model for ${c.name}: ${S.message}`),null}}).filter(w=>w?.elements?.length)).filter(x=>x.length);return _.length||d.push(`No valid models after transformation for block ${c.name}`),_}catch(_){return d.push(`Fatal error processing models for ${c.name}: ${_.message}`),[]}},transformModel:l,getTextureInfo:o}}h();p();m();Lt();var zE=Jr(z0e(),1);h();p();m();h();p();m();var t4=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 a=1/0,o=0;this.context&&(a=Math.min(a,e),o=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+" ("+a.toFixed(s)+"-"+parseFloat(o.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 H0e=class n4{constructor({logsPerSecond:e=20,samplesLog:t=100,samplesGraph:n=10,precision:r=2,minimal:s=!1,horizontal:a=!0,mode:o=0}={}){this.mode=o,this.horizontal=a,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 n4.Panel("FPS","#0ff","#002"),0),this.msPanel=this.addPanel(new n4.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=o,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 n4.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 o=0;o<t.logs.length;o++)n+=t.logs[o],t.logs[o]>r&&(r=t.logs[o]);let s=0,a=.01;for(let o=0;o<t.graph.length;o++)s+=t.graph[o],t.graph[o]>a&&(a=t.graph[o]);e&&e.update(n/Math.min(t.logs.length,this.samplesLog),s/Math.min(t.graph.length,this.samplesGraph),r,a,this.precision)}}};H0e.Panel=t4;var q0e=H0e;h();p();m();var Dr=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-Dr.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?Dr.Bounce.In(i*2)*.5:Dr.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}}}}),T3=function(){return performance.now()},gh=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=T3()),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]],a=!t;s&&s.update(e,a)===!1&&!t&&delete this._tweens[n[r]]}n=Object.keys(this._tweensAddedDuringUpdate)}return!0},i}(),vh={Linear:function(i,e){var t=i.length-1,n=t*e,r=Math.floor(n),s=vh.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=vh.Utils.Bernstein,a=0;a<=n;a++)t+=r(1-e,n-a)*r(e,a)*i[a]*s(n,a);return t},CatmullRom:function(i,e){var t=i.length-1,n=t*e,r=Math.floor(n),s=vh.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=vh.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,a=(n-e)*.5,o=r*r,l=r*o;return(2*e-2*t+s+a)*l+(-3*e+3*t-2*s-a)*o+s*r+e}}},G0e=function(){function i(){}return i.nextId=function(){return i._nextId++},i._nextId=0,i}(),FE=new gh,$r=function(){function i(e,t){t===void 0&&(t=FE),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=Dr.Linear.None,this._interpolationFunction=vh.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=G0e.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=T3()),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 a in n){var o=e[a],l=Array.isArray(o),c=l?"array":typeof o,u=!l&&Array.isArray(n[a]);if(!(c==="undefined"||c==="function")){if(u){var d=n[a];if(d.length===0)continue;for(var f=[o],v=0,g=d.length;v<g;v+=1){var b=this._handleRelativeValue(o,d[v]);if(isNaN(b)){u=!1,console.warn("Found invalid interpolation list. Skipping.");break}f.push(b)}u&&(n[a]=f)}if((c==="object"||l)&&o&&!u){t[a]=l?[]:{};var y=o;for(var _ in y)t[a][_]=y[_];r[a]=l?[]:{};var d=n[a];if(!this._isDynamic){var x={};for(var _ in d)x[_]=d[_];n[a]=d=x}this._setupProperties(y,t[a],d,r[a],s)}else(typeof t[a]>"u"||s)&&(t[a]=o),l||(t[a]*=1),u?r[a]=n[a].slice().reverse():r[a]=t[a]||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=T3()),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=T3()),!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=FE),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=Dr.Linear.None),this._easingFunction=e,this},i.prototype.interpolation=function(e){return e===void 0&&(e=vh.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=T3()),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 a=this._easingFunction(r);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,a),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 o=0,l=this._chainedTweens.length;o<l;o++)this._chainedTweens[o].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 a=t[s]||0,o=n[s],l=Array.isArray(e[s]),c=Array.isArray(o),u=!l&&c;u?e[s]=this._interpolationFunction(o,r):typeof o=="object"&&o?this._updateProperties(e[s],a,o,r):(o=this._handleRelativeValue(a,o),typeof o=="number"&&(e[s]=a+(o-a)*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 KZt=G0e.nextId,Io=FE,ZZt=Io.getAll.bind(Io),QZt=Io.removeAll.bind(Io),eQt=Io.add.bind(Io),tQt=Io.remove.bind(Io),W0e=Io.update.bind(Io);h();p();m();function VE(i){if(i==="high-performance")return"high-performance";if(i==="low-power")return"low-power"}var Bn=typeof globalThis.WorkerGlobalScope<"u"&&globalThis instanceof globalThis.WorkerGlobalScope,HE=class{constructor(e,t=0){this.canvas=e;this.stats=new zE.default,this.stats2=new zE.default,this.statsGl=new q0e({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()}},r4=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 c2({canvas:this.canvas,preserveDrawingBuffer:!0,logarithmicDepthBuffer:!0,powerPreference:VE(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.outputColorSpace=jr,t||(this.updatePixelRatio(),this.setupResizeListener()),this.sizeUpdated(),this.previousCanvasWidth=this.canvas.width,this.previousCanvasHeight=this.canvas.height;let r="WebGL2RenderingContext"in globalThis;!t&&r&&!Bn&&(this.stats=new HE(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=aMe(),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(),W0e(),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 aMe(){let i=document.createElement("canvas");return i.id="viewer-canvas",document.body.appendChild(i),i}h();p();m();var I3=class{version;itemsAtlasParser;blocksAtlasParser;blockStatesStore;modelsStore;assetsParser;constructor(e,t,n,r){this.version=e,this.itemsAtlasParser=n,this.blocksAtlasParser=r,this.blockStatesStore=K_(t),this.modelsStore=Z_(t),this.assetsParser=new ph(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(f=>f.from[0]===0&&f.from[1]===0&&f.from[2]===0&&f.to[0]===16&&f.to[1]===16&&f.to[2]===16))return;let s=n.elements[0],a=s.faces.up?.texture??s.faces.top?.texture,o=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(!a||!o||!l)return;let c=this.resolveTexture(a);if(!c)throw new Error(`Missing texture for ${t} top texture`);let u=this.resolveTexture(o);if(!u)throw new Error(`Missing texture for ${t} left texture`);let d=this.resolveTexture(l);if(!d)throw new Error(`Missing texture for ${t} right texture`);return{top:c,left:u,right:d,resolvedModel:n}}getItemTexture(e,t={},n=!1,r=!1){let[s,a]=e.includes(":")?e.split(":"):["minecraft",e],o=s==="minecraft"?"":s,l=a,c=o?`${o}:item/${l}`:`item/${l}`,u=o?`${o}:block/${l}`:`block/${l}`,d=o?`${o}:${l}`:l,f=b=>this.modelsStore.get(this.version,b),v;{if(v=f(d),!n&&!v){let y=f(c);y&&y.textures?.layer0&&(v=y)}let b=v?.parent?.includes("block/");if(!v)if(r&&!o){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=f(u),v&&(b=!0);if(b||v?.elements)return r?this.resolveBlockModel(v,d):this.tryGetFullBlock(v,d)}if(!v)return;let g=d.includes("block/")?Object.values(v.textures??{})[0]:v.textures?.layer0;if(g)return(g.startsWith("invsprite_")?this.resolveTexture(g.replace("invsprite_","")):void 0)??this.resolveTexture(g)}};h();p();m();function qE(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=>qE(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 a=qE(n[s],e+1);a!==void 0&&(r[s]=a)}return r}function i4(i){return i.map(e=>qE(e))}var s4=null;function Y0e(i){return Bn?((!s4||typeof s4.get!="function")&&(s4=Q_(j_)),s4):(J0e(i),i.itemsDefinitionsStore)}function J0e(i){Bn||typeof i.itemsDefinitionsStore?.get=="function"||(i.itemsDefinitionsStore=Q_(i.sourceItemDefinitionsJson??j_))}var R3=class{sourceItemDefinitionsJson=j_;itemsDefinitionsStore=Q_(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),J0e(this)}if(this.version){let t=globalThis.loadedData??globalThis.mcData;Bn&&t?.entitiesByName?this.mcData=t:this.mcData=(0,GE.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}},X0e="1.21.4",oc=class oc extends W0{rebuildWorkerRenderers(e){if(Bn&&!(!e.version||!e.blockstatesModels||!e.blocksAtlasJson)){if(this.blocksAtlasParser=new Js({latest:e.blocksAtlasJson},""),e.itemsAtlasJson)this.itemsAtlasParser=new Js({latest:e.itemsAtlasJson},"");else if(!this.itemsAtlasParser?.atlas?.latest){if(!this.sourceItemsAtlases||Object.keys(this.sourceItemsAtlases).length===0)return;this.itemsAtlasParser=new Js(this.sourceItemsAtlases,"")}e.itemsRenderer=new I3(e.version,e.blockstatesModels,this.itemsAtlasParser,this.blocksAtlasParser),e.worldBlockProvider=e4(e.blockstatesModels,this.blocksAtlasParser.atlas,X0e)}}static restoreTransferred(e,t){let n=new oc,r=s=>{n.currentResources=new R3(s),n.rebuildWorkerRenderers(n.currentResources)};return r(e.currentResources),t&&t.addEventListener("message",({data:s})=>{s.class===oc.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:oc.restorerName,type:"event",eventName:n,args:i4(r)}),n==="assetsTexturesUpdated"||n==="assetsInventoryReady"){let s=this.enrichTransferSnapshot(this.currentResources?.prepareForTransfer());e.postMessage({class:oc.restorerName,type:"newResources",currentResources:s})}}}return{__restorer:oc.restorerName,currentResources:this.enrichTransferSnapshot(this.currentResources?.prepareForTransfer())}}sourceBlockStatesModels=null;sourceBlocksAtlases=A3;sourceItemsAtlases=T0e;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(()=>($0e(),j0e))).default}resetResources(){this.currentResources=new R3}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 R3;r.version=this.currentConfig.version,r.texturesVersion=this.currentConfig.texturesVersion??r.version,r.mcData=(0,GE.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 I3(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,O0e);let r=new Js(this.sourceBlocksAtlases,I0e,R0e),s=Object.keys(e.customTextures.blocks?.textures??{});console.time("createBlocksAtlas");let{atlas:a,canvas:o}=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 Js({latest:a},o.toDataURL()),e.blocksAtlasImage=await createImageBitmap(o),e.blocksAtlasJson=this.blocksAtlasParser.atlas.latest,e.worldBlockProvider=e4(e.blockstatesModels,this.blocksAtlasParser.atlas,X0e)}async recreateItemsAtlas(e=this.currentResources){let t=new Js(this.sourceItemsAtlases,C0e,P0e),n=Object.keys(e.customTextures.items?.textures??{}),{atlas:r,canvas:s}=await t.makeNewAtlas(e.texturesVersion,a=>{let o=e.customTextures.items?.textures[a];if(o)return o},e.customTextures.items?.tileSize,void 0,n);this.itemsAtlasParser=new Js({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}};Hn(oc,"restorerName","ResourcesManager");var lc=oc;h();p();m();var a4=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()}};h();p();m();Lt();h();p();m();function K0e(i){let e=Math.floor(i.x/16),t=Math.floor(i.z/16);return[e,t]}function WE(i){let e=Math.floor(i.x/16),t=Math.floor(i.y/16),n=Math.floor(i.z/16);return[e,t,n]}h();p();m();Ra();h();p();m();function Sl(i,e,t,n){let r=i[e];return g1(i,()=>{let s=i[e];Object.is(r,s)||t(r=s)},n)}var men=Symbol();h();p();m();var jE={blocks:"blocksArray",blockCollisionShapes:"blockCollisionShapes",biomes:"biomesArray",tints:"tints"};h();p();m();var Z0e=16;var Q0e=(i,e)=>e?`${i}:${e}`:String(i);h();p();m();var ece=0,El={},$E=40,o4="mc-renderer-debug-overlay",l4=(i,e=80,t=ece,n=$E,r)=>{if(Bn)return{updateText(){},setVisibility(){}};let s=document.createElement("div");return s.style.position="fixed",s.style.top=`${n??$E}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),El[i]=s,n===void 0&&t===ece&&($E+=20),{updateText(a){s.innerText!==a&&(s.innerText=a)},setVisibility(a){s.style.display=a?"block":"none"}}};var XE=(i,e)=>{Bn||!El[i]||(El[i].innerText=e)},tce=i=>{if(!Bn)for(let e in El)El[e].style.display=i?"block":"none"},nce=()=>{if(!Bn)for(let i in El)lMe(i)},lMe=i=>{Bn||!El[i]||(El[i].remove(),delete El[i])};h();p();m();var cMe=()=>_l({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}),rce=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"}}),ice=()=>({reactive:cMe()});h();p();m();h();p();m();h();p();m();h();p();m();function YE(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let a=0;a<n;a++)for(let o=0;o<r;o++){let l=(a+o*n)*4;if(s.data[l+3]!==255)return!0}return!1}function c4(i){return i/64}function sce(i,e,t){if(t){if(YE(i,0,0,e,e))return}else if(YE(i,0,0,e,e/2))return;let n=c4(e),r=(s,a,o,l)=>i.clearRect(s*n,a*n,o*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 uMe(i,e){i.save(),i.scale(-1,1);let t=c4(e),n=(r,s,a,o,l,c)=>i.drawImage(i.canvas,r*t,s*t,a*t,o*t,-l*t,c*t,-a*t,o*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 JE(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),uMe(n,r),sce(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),sce(n,i.width,!0)}function dMe(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 KE(i,e){let t=dMe(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 fMe(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let a=0;a<n;a++)for(let o=0;o<r;o++){let l=(a+o*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 hMe(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let a=0;a<n;a++)for(let o=0;o<r;o++){let l=(a+o*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 ZE(i){let e=c4(i.width),t=i.getContext("2d",{willReadFrequently:!0}),n=(o,l,c,u)=>YE(t,o*e,l*e,c*e,u*e),r=(o,l,c,u)=>fMe(t,o*e,l*e,c*e,u*e),s=(o,l,c,u)=>hMe(t,o*e,l*e,c*e,u*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 QE(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=c4(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)}h();p();m();var ace="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=";h();p();m();Lt();h();p();m();var pMe=()=>{if(typeof OffscreenCanvas>"u")return!1;try{let i=new OffscreenCanvas(1,1);return(i.getContext("webgl2")||i.getContext("webgl"))!==null}catch{return!1}},vMe=pMe(),bi=(i,e)=>{if(vMe||typeof document>"u")return new OffscreenCanvas(i,e);let t=document.createElement("canvas");return t.width=i,t.height=e,t};async function Gu(i){let t=await(await fetch(i)).blob();return createImageBitmap(t)}var hr=(i,e=!1)=>{i instanceof Ke&&(i.geometry?.dispose?.(),i.material?.dispose?.()),i instanceof va&&i.skeleton?.dispose?.(),i.children&&i.children.forEach(t=>hr(t,e)),e&&i instanceof Ke&&i.material?.map?.dispose?.()},eM={},oce={},C3=i=>{let e=new sn,t=Gu(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}},_h=async i=>C3(i).texture,cc=i=>{let e=bi(i.width,i.height);e.getContext("2d").drawImage(i,0,0);let n=new sn(e);return n.magFilter=ct,n.minFilter=ct,n};function yh(i){let{texture:e,promise:t}=C3(i);return e.magFilter=ct,e.minFilter=ct,t.catch(n=>{console.error("[texture] failed to load",i,n)}),e}async function u4(i,e,t){if(!eM[i]){let{promise:r,resolve:s}=Promise.withResolvers(),a=C3(i);eM[i]=a.texture,a.promise.then(s),oce[i]=r}e(eM[i]),oce[i].then(()=>{t?.()})}var is=ace,vtn=_h(is);var lce={apiEnabled:!0},cce=i=>{Object.assign(lce,i)};async function uc(i,e){if(!lce.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 Ro(i){i.startsWith("data:")||(i=await gMe(i.replace("http://","https://")));let e=await Gu(i),t=bi(64,64);return JE(t,e),{canvas:t,image:e}}var gMe=async i=>{let t=await(await fetch(i,{})).arrayBuffer();return`data:image/png;base64,${Buffer.from(t).toString("base64")}`};d4();h();p();m();function ti(i,e,t,n){if(i.on(e,t),n.aborted){i.off(e,t);return}n.addEventListener("abort",()=>{i.off(e,t)},{once:!0})}function uce(i,e,t,n){if(i.on(e,t),n.aborted){i.off(e,t);return}n.addEventListener("abort",()=>{i.off(e,t)},{once:!0})}h();p();m();function P3(i){let e=i*2+1;if(e<=0)return[];let t=[],n=0,r=0,s=0,a=-1;for(let o=0;o<e*e;o++){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=-a,a=l}n+=s,r+=a}return t}h();p();m();var WI=Jr(FI(),1);h();p();m();var Tve=Jr(M3(),1),Ive=Jr(Ei(),1);var VI={lightLevels:{lava:15,brown_mushroom:1,torch:14,wall_torch:14,fire:15,soul_fire:10,soul_torch:10,soul_wall_torch:10,glowstone:15,nether_portal:11,jack_o_lantern:15,enchanting_table:7,brewing_stand:1,lava_cauldron:15,end_portal:15,end_portal_frame:1,dragon_egg:1,ender_chest:7,beacon:15,sea_lantern:15,end_rod:14,end_gateway:15,magma_block:3,conduit:15,lantern:15,soul_lantern:10,shroomlight:15,crying_obsidian:10,amethyst_cluster:5,large_amethyst_bud:4,medium_amethyst_bud:2,small_amethyst_bud:1,sculk_sensor:1,sculk_catalyst:6,ochre_froglight:15,verdant_froglight:15,pearlescent_froglight:15},noOcclusions:{mangrove_roots:!0,oak_leaves:!0,spruce_leaves:!0,birch_leaves:!0,jungle_leaves:!0,acacia_leaves:!0,cherry_leaves:!0,dark_oak_leaves:!0,mangrove_leaves:!0,azalea_leaves:!0,flowering_azalea_leaves:!0,glass:!0,white_bed:!0,orange_bed:!0,magenta_bed:!0,light_blue_bed:!0,yellow_bed:!0,lime_bed:!0,pink_bed:!0,gray_bed:!0,light_gray_bed:!0,cyan_bed:!0,purple_bed:!0,blue_bed:!0,brown_bed:!0,green_bed:!0,red_bed:!0,black_bed:!0,moving_piston:!0,spawner:!0,oak_door:!0,ladder:!0,iron_door:!0,ice:!0,white_stained_glass:!0,orange_stained_glass:!0,magenta_stained_glass:!0,light_blue_stained_glass:!0,yellow_stained_glass:!0,lime_stained_glass:!0,pink_stained_glass:!0,gray_stained_glass:!0,light_gray_stained_glass:!0,cyan_stained_glass:!0,purple_stained_glass:!0,blue_stained_glass:!0,brown_stained_glass:!0,green_stained_glass:!0,red_stained_glass:!0,black_stained_glass:!0,oak_trapdoor:!0,spruce_trapdoor:!0,birch_trapdoor:!0,jungle_trapdoor:!0,acacia_trapdoor:!0,cherry_trapdoor:!0,dark_oak_trapdoor:!0,mangrove_trapdoor:!0,bamboo_trapdoor:!0,iron_bars:!0,chain:!0,glass_pane:!0,lily_pad:!0,brewing_stand:!0,cauldron:!0,dragon_egg:!0,cocoa:!0,beacon:!0,hopper:!0,white_stained_glass_pane:!0,orange_stained_glass_pane:!0,magenta_stained_glass_pane:!0,light_blue_stained_glass_pane:!0,yellow_stained_glass_pane:!0,lime_stained_glass_pane:!0,pink_stained_glass_pane:!0,gray_stained_glass_pane:!0,light_gray_stained_glass_pane:!0,cyan_stained_glass_pane:!0,purple_stained_glass_pane:!0,blue_stained_glass_pane:!0,brown_stained_glass_pane:!0,green_stained_glass_pane:!0,red_stained_glass_pane:!0,black_stained_glass_pane:!0,slime_block:!0,barrier:!0,light:!0,iron_trapdoor:!0,spruce_door:!0,birch_door:!0,jungle_door:!0,acacia_door:!0,cherry_door:!0,dark_oak_door:!0,mangrove_door:!0,bamboo_door:!0,end_rod:!0,chorus_plant:!0,chorus_flower:!0,frosted_ice:!0,turtle_egg:!0,sniffer_egg:!0,sea_pickle:!0,conduit:!0,bamboo:!0,lantern:!0,soul_lantern:!0,campfire:!0,soul_campfire:!0,crimson_trapdoor:!0,warped_trapdoor:!0,crimson_door:!0,warped_door:!0,honey_block:!0,candle:!0,white_candle:!0,orange_candle:!0,magenta_candle:!0,light_blue_candle:!0,yellow_candle:!0,lime_candle:!0,pink_candle:!0,gray_candle:!0,light_gray_candle:!0,cyan_candle:!0,purple_candle:!0,blue_candle:!0,brown_candle:!0,green_candle:!0,red_candle:!0,black_candle:!0,amethyst_cluster:!0,tinted_glass:!0,lightning_rod:!0,pointed_dripstone:!0,azalea:!0,flowering_azalea:!0,frogspawn:!0,decorated_pot:!0},colors:{stone:"rgb(112, 112, 112)",granite:"rgb(151, 109, 77)",polished_granite:"rgb(151, 109, 77)",diorite:"rgb(255, 252, 245)",polished_diorite:"rgb(255, 252, 245)",andesite:"rgb(112, 112, 112)",polished_andesite:"rgb(112, 112, 112)",grass_block:"rgb(127, 178, 56)",dirt:"rgb(151, 109, 77)",coarse_dirt:"rgb(151, 109, 77)",podzol:"rgb(129, 86, 49)",cobblestone:"rgb(112, 112, 112)",oak_planks:"rgb(143, 119, 72)",spruce_planks:"rgb(129, 86, 49)",birch_planks:"rgb(247, 233, 163)",jungle_planks:"rgb(151, 109, 77)",acacia_planks:"rgb(216, 127, 51)",cherry_planks:"rgb(209, 177, 161)",dark_oak_planks:"rgb(102, 76, 51)",mangrove_planks:"rgb(153, 51, 51)",bamboo_planks:"rgb(229, 229, 51)",bamboo_mosaic:"rgb(229, 229, 51)",oak_sapling:"rgb(0, 124, 0)",spruce_sapling:"rgb(0, 124, 0)",birch_sapling:"rgb(0, 124, 0)",jungle_sapling:"rgb(0, 124, 0)",acacia_sapling:"rgb(0, 124, 0)",cherry_sapling:"rgb(242, 127, 165)",dark_oak_sapling:"rgb(0, 124, 0)",mangrove_propagule:"rgb(0, 124, 0)",bedrock:"rgb(112, 112, 112)",water:"rgb(64, 64, 255)",lava:"rgb(255, 0, 0)",sand:"rgb(247, 233, 163)",suspicious_sand:"rgb(247, 233, 163)",red_sand:"rgb(216, 127, 51)",gravel:"rgb(112, 112, 112)",suspicious_gravel:"rgb(112, 112, 112)",gold_ore:"rgb(112, 112, 112)",deepslate_gold_ore:"rgb(100, 100, 100)",iron_ore:"rgb(112, 112, 112)",deepslate_iron_ore:"rgb(100, 100, 100)",coal_ore:"rgb(112, 112, 112)",deepslate_coal_ore:"rgb(100, 100, 100)",nether_gold_ore:"rgb(112, 2, 0)",mangrove_roots:"rgb(129, 86, 49)",muddy_mangrove_roots:"rgb(129, 86, 49)",oak_wood:"rgb(143, 119, 72)",spruce_wood:"rgb(129, 86, 49)",birch_wood:"rgb(247, 233, 163)",jungle_wood:"rgb(151, 109, 77)",acacia_wood:"rgb(76, 76, 76)",cherry_wood:"rgb(57, 41, 35)",dark_oak_wood:"rgb(102, 76, 51)",mangrove_wood:"rgb(153, 51, 51)",stripped_oak_wood:"rgb(143, 119, 72)",stripped_spruce_wood:"rgb(129, 86, 49)",stripped_birch_wood:"rgb(247, 233, 163)",stripped_jungle_wood:"rgb(151, 109, 77)",stripped_acacia_wood:"rgb(216, 127, 51)",stripped_cherry_wood:"rgb(160, 77, 78)",stripped_dark_oak_wood:"rgb(102, 76, 51)",oak_leaves:"rgb(0, 124, 0)",spruce_leaves:"rgb(0, 124, 0)",birch_leaves:"rgb(0, 124, 0)",jungle_leaves:"rgb(0, 124, 0)",acacia_leaves:"rgb(0, 124, 0)",cherry_leaves:"rgb(242, 127, 165)",dark_oak_leaves:"rgb(0, 124, 0)",mangrove_leaves:"rgb(0, 124, 0)",azalea_leaves:"rgb(0, 124, 0)",flowering_azalea_leaves:"rgb(0, 124, 0)",sponge:"rgb(229, 229, 51)",wet_sponge:"rgb(229, 229, 51)",lapis_ore:"rgb(112, 112, 112)",deepslate_lapis_ore:"rgb(100, 100, 100)",lapis_block:"rgb(74, 128, 255)",dispenser:"rgb(112, 112, 112)",sandstone:"rgb(247, 233, 163)",chiseled_sandstone:"rgb(247, 233, 163)",cut_sandstone:"rgb(247, 233, 163)",note_block:"rgb(143, 119, 72)",sticky_piston:"rgb(112, 112, 112)",cobweb:"rgb(199, 199, 199)",grass:"rgb(0, 124, 0)",fern:"rgb(0, 124, 0)",dead_bush:"rgb(143, 119, 72)",seagrass:"rgb(64, 64, 255)",tall_seagrass:"rgb(64, 64, 255)",piston:"rgb(112, 112, 112)",piston_head:"rgb(112, 112, 112)",white_wool:"rgb(255, 255, 255)",orange_wool:"rgb(216, 127, 51)",magenta_wool:"rgb(178, 76, 216)",light_blue_wool:"rgb(102, 153, 216)",yellow_wool:"rgb(229, 229, 51)",lime_wool:"rgb(127, 204, 25)",pink_wool:"rgb(242, 127, 165)",gray_wool:"rgb(76, 76, 76)",light_gray_wool:"rgb(153, 153, 153)",cyan_wool:"rgb(76, 127, 153)",purple_wool:"rgb(127, 63, 178)",blue_wool:"rgb(51, 76, 178)",brown_wool:"rgb(102, 76, 51)",green_wool:"rgb(102, 127, 51)",red_wool:"rgb(153, 51, 51)",black_wool:"rgb(25, 25, 25)",moving_piston:"rgb(112, 112, 112)",dandelion:"rgb(0, 124, 0)",torchflower:"rgb(0, 124, 0)",poppy:"rgb(0, 124, 0)",blue_orchid:"rgb(0, 124, 0)",allium:"rgb(0, 124, 0)",azure_bluet:"rgb(0, 124, 0)",red_tulip:"rgb(0, 124, 0)",orange_tulip:"rgb(0, 124, 0)",white_tulip:"rgb(0, 124, 0)",pink_tulip:"rgb(0, 124, 0)",oxeye_daisy:"rgb(0, 124, 0)",cornflower:"rgb(0, 124, 0)",wither_rose:"rgb(0, 124, 0)",lily_of_the_valley:"rgb(0, 124, 0)",brown_mushroom:"rgb(102, 76, 51)",red_mushroom:"rgb(153, 51, 51)",gold_block:"rgb(250, 238, 77)",iron_block:"rgb(167, 167, 167)",bricks:"rgb(153, 51, 51)",tnt:"rgb(255, 0, 0)",bookshelf:"rgb(143, 119, 72)",chiseled_bookshelf:"rgb(143, 119, 72)",mossy_cobblestone:"rgb(112, 112, 112)",obsidian:"rgb(25, 25, 25)",fire:"rgb(255, 0, 0)",soul_fire:"rgb(102, 153, 216)",spawner:"rgb(112, 112, 112)",chest:"rgb(143, 119, 72)",diamond_ore:"rgb(112, 112, 112)",deepslate_diamond_ore:"rgb(100, 100, 100)",diamond_block:"rgb(92, 219, 213)",crafting_table:"rgb(143, 119, 72)",wheat:"rgb(0, 124, 0)",farmland:"rgb(151, 109, 77)",furnace:"rgb(112, 112, 112)",oak_sign:"rgb(143, 119, 72)",birch_sign:"rgb(247, 233, 163)",acacia_sign:"rgb(216, 127, 51)",oak_wall_sign:"rgb(143, 119, 72)",birch_wall_sign:"rgb(247, 233, 163)",acacia_wall_sign:"rgb(216, 127, 51)",birch_hanging_sign:"rgb(247, 233, 163)",acacia_hanging_sign:"rgb(216, 127, 51)",cherry_hanging_sign:"rgb(160, 77, 78)",crimson_hanging_sign:"rgb(148, 63, 97)",warped_hanging_sign:"rgb(58, 142, 140)",bamboo_hanging_sign:"rgb(229, 229, 51)",spruce_wall_hanging_sign:"rgb(143, 119, 72)",birch_wall_hanging_sign:"rgb(247, 233, 163)",acacia_wall_hanging_sign:"rgb(216, 127, 51)",cherry_wall_hanging_sign:"rgb(160, 77, 78)",crimson_wall_hanging_sign:"rgb(148, 63, 97)",warped_wall_hanging_sign:"rgb(58, 142, 140)",bamboo_wall_hanging_sign:"rgb(229, 229, 51)",stone_pressure_plate:"rgb(112, 112, 112)",iron_door:"rgb(167, 167, 167)",redstone_ore:"rgb(112, 112, 112)",deepslate_redstone_ore:"rgb(100, 100, 100)",snow:"rgb(255, 255, 255)",ice:"rgb(160, 160, 255)",snow_block:"rgb(255, 255, 255)",cactus:"rgb(0, 124, 0)",clay:"rgb(164, 168, 184)",sugar_cane:"rgb(0, 124, 0)",jukebox:"rgb(151, 109, 77)",pumpkin:"rgb(216, 127, 51)",netherrack:"rgb(112, 2, 0)",soul_sand:"rgb(102, 76, 51)",soul_soil:"rgb(102, 76, 51)",basalt:"rgb(25, 25, 25)",polished_basalt:"rgb(25, 25, 25)",glowstone:"rgb(247, 233, 163)",carved_pumpkin:"rgb(216, 127, 51)",jack_o_lantern:"rgb(216, 127, 51)",oak_trapdoor:"rgb(143, 119, 72)",spruce_trapdoor:"rgb(129, 86, 49)",birch_trapdoor:"rgb(247, 233, 163)",jungle_trapdoor:"rgb(151, 109, 77)",acacia_trapdoor:"rgb(216, 127, 51)",cherry_trapdoor:"rgb(209, 177, 161)",dark_oak_trapdoor:"rgb(102, 76, 51)",mangrove_trapdoor:"rgb(153, 51, 51)",bamboo_trapdoor:"rgb(229, 229, 51)",stone_bricks:"rgb(112, 112, 112)",mossy_stone_bricks:"rgb(112, 112, 112)",cracked_stone_bricks:"rgb(112, 112, 112)",chiseled_stone_bricks:"rgb(112, 112, 112)",mud_bricks:"rgb(135, 107, 98)",infested_stone:"rgb(164, 168, 184)",infested_cobblestone:"rgb(164, 168, 184)",infested_stone_bricks:"rgb(164, 168, 184)",infested_mossy_stone_bricks:"rgb(164, 168, 184)",infested_cracked_stone_bricks:"rgb(164, 168, 184)",infested_chiseled_stone_bricks:"rgb(164, 168, 184)",brown_mushroom_block:"rgb(151, 109, 77)",red_mushroom_block:"rgb(153, 51, 51)",mushroom_stem:"rgb(199, 199, 199)",melon:"rgb(127, 204, 25)",attached_pumpkin_stem:"rgb(0, 124, 0)",attached_melon_stem:"rgb(0, 124, 0)",pumpkin_stem:"rgb(0, 124, 0)",melon_stem:"rgb(0, 124, 0)",vine:"rgb(0, 124, 0)",glow_lichen:"rgb(127, 167, 150)",mycelium:"rgb(127, 63, 178)",lily_pad:"rgb(0, 124, 0)",nether_bricks:"rgb(112, 2, 0)",nether_brick_fence:"rgb(112, 2, 0)",nether_wart:"rgb(153, 51, 51)",enchanting_table:"rgb(153, 51, 51)",brewing_stand:"rgb(167, 167, 167)",cauldron:"rgb(112, 112, 112)",end_portal:"rgb(25, 25, 25)",end_portal_frame:"rgb(102, 127, 51)",end_stone:"rgb(247, 233, 163)",dragon_egg:"rgb(25, 25, 25)",cocoa:"rgb(0, 124, 0)",emerald_ore:"rgb(112, 112, 112)",deepslate_emerald_ore:"rgb(100, 100, 100)",ender_chest:"rgb(112, 112, 112)",emerald_block:"rgb(0, 217, 58)",command_block:"rgb(102, 76, 51)",beacon:"rgb(92, 219, 213)",carrots:"rgb(0, 124, 0)",potatoes:"rgb(0, 124, 0)",anvil:"rgb(167, 167, 167)",chipped_anvil:"rgb(167, 167, 167)",damaged_anvil:"rgb(167, 167, 167)",trapped_chest:"rgb(143, 119, 72)",light_weighted_pressure_plate:"rgb(250, 238, 77)",heavy_weighted_pressure_plate:"rgb(167, 167, 167)",daylight_detector:"rgb(143, 119, 72)",redstone_block:"rgb(255, 0, 0)",nether_quartz_ore:"rgb(112, 2, 0)",hopper:"rgb(112, 112, 112)",quartz_block:"rgb(255, 252, 245)",chiseled_quartz_block:"rgb(255, 252, 245)",quartz_pillar:"rgb(255, 252, 245)",dropper:"rgb(112, 112, 112)",white_terracotta:"rgb(209, 177, 161)",orange_terracotta:"rgb(159, 82, 36)",magenta_terracotta:"rgb(149, 87, 108)",light_blue_terracotta:"rgb(112, 108, 138)",yellow_terracotta:"rgb(186, 133, 36)",lime_terracotta:"rgb(103, 117, 53)",pink_terracotta:"rgb(160, 77, 78)",gray_terracotta:"rgb(57, 41, 35)",light_gray_terracotta:"rgb(135, 107, 98)",cyan_terracotta:"rgb(87, 92, 92)",purple_terracotta:"rgb(122, 73, 88)",blue_terracotta:"rgb(76, 62, 92)",brown_terracotta:"rgb(76, 50, 35)",green_terracotta:"rgb(76, 82, 42)",red_terracotta:"rgb(142, 60, 46)",black_terracotta:"rgb(37, 22, 16)",slime_block:"rgb(127, 178, 56)",iron_trapdoor:"rgb(167, 167, 167)",prismarine:"rgb(76, 127, 153)",prismarine_bricks:"rgb(92, 219, 213)",dark_prismarine:"rgb(92, 219, 213)",prismarine_slab:"rgb(76, 127, 153)",prismarine_brick_slab:"rgb(92, 219, 213)",dark_prismarine_slab:"rgb(92, 219, 213)",sea_lantern:"rgb(255, 252, 245)",hay_block:"rgb(229, 229, 51)",white_carpet:"rgb(255, 255, 255)",orange_carpet:"rgb(216, 127, 51)",magenta_carpet:"rgb(178, 76, 216)",light_blue_carpet:"rgb(102, 153, 216)",yellow_carpet:"rgb(229, 229, 51)",lime_carpet:"rgb(127, 204, 25)",pink_carpet:"rgb(242, 127, 165)",gray_carpet:"rgb(76, 76, 76)",light_gray_carpet:"rgb(153, 153, 153)",cyan_carpet:"rgb(76, 127, 153)",purple_carpet:"rgb(127, 63, 178)",blue_carpet:"rgb(51, 76, 178)",brown_carpet:"rgb(102, 76, 51)",green_carpet:"rgb(102, 127, 51)",red_carpet:"rgb(153, 51, 51)",black_carpet:"rgb(25, 25, 25)",terracotta:"rgb(216, 127, 51)",coal_block:"rgb(25, 25, 25)",packed_ice:"rgb(160, 160, 255)",sunflower:"rgb(0, 124, 0)",lilac:"rgb(0, 124, 0)",rose_bush:"rgb(0, 124, 0)",peony:"rgb(0, 124, 0)",tall_grass:"rgb(0, 124, 0)",large_fern:"rgb(0, 124, 0)",white_banner:"rgb(143, 119, 72)",orange_banner:"rgb(143, 119, 72)",magenta_banner:"rgb(143, 119, 72)",light_blue_banner:"rgb(143, 119, 72)",yellow_banner:"rgb(143, 119, 72)",lime_banner:"rgb(143, 119, 72)",pink_banner:"rgb(143, 119, 72)",gray_banner:"rgb(143, 119, 72)",light_gray_banner:"rgb(143, 119, 72)",cyan_banner:"rgb(143, 119, 72)",purple_banner:"rgb(143, 119, 72)",blue_banner:"rgb(143, 119, 72)",brown_banner:"rgb(143, 119, 72)",green_banner:"rgb(143, 119, 72)",red_banner:"rgb(143, 119, 72)",black_banner:"rgb(143, 119, 72)",white_wall_banner:"rgb(143, 119, 72)",orange_wall_banner:"rgb(143, 119, 72)",magenta_wall_banner:"rgb(143, 119, 72)",light_blue_wall_banner:"rgb(143, 119, 72)",yellow_wall_banner:"rgb(143, 119, 72)",lime_wall_banner:"rgb(143, 119, 72)",pink_wall_banner:"rgb(143, 119, 72)",gray_wall_banner:"rgb(143, 119, 72)",light_gray_wall_banner:"rgb(143, 119, 72)",cyan_wall_banner:"rgb(143, 119, 72)",purple_wall_banner:"rgb(143, 119, 72)",blue_wall_banner:"rgb(143, 119, 72)",brown_wall_banner:"rgb(143, 119, 72)",green_wall_banner:"rgb(143, 119, 72)",red_wall_banner:"rgb(143, 119, 72)",black_wall_banner:"rgb(143, 119, 72)",red_sandstone:"rgb(216, 127, 51)",chiseled_red_sandstone:"rgb(216, 127, 51)",cut_red_sandstone:"rgb(216, 127, 51)",oak_slab:"rgb(143, 119, 72)",spruce_slab:"rgb(129, 86, 49)",birch_slab:"rgb(247, 233, 163)",jungle_slab:"rgb(151, 109, 77)",acacia_slab:"rgb(216, 127, 51)",cherry_slab:"rgb(209, 177, 161)",dark_oak_slab:"rgb(102, 76, 51)",mangrove_slab:"rgb(153, 51, 51)",bamboo_slab:"rgb(229, 229, 51)",bamboo_mosaic_slab:"rgb(229, 229, 51)",stone_slab:"rgb(112, 112, 112)",smooth_stone_slab:"rgb(112, 112, 112)",sandstone_slab:"rgb(247, 233, 163)",cut_sandstone_slab:"rgb(247, 233, 163)",petrified_oak_slab:"rgb(143, 119, 72)",cobblestone_slab:"rgb(112, 112, 112)",brick_slab:"rgb(153, 51, 51)",stone_brick_slab:"rgb(112, 112, 112)",mud_brick_slab:"rgb(135, 107, 98)",nether_brick_slab:"rgb(112, 2, 0)",quartz_slab:"rgb(255, 252, 245)",red_sandstone_slab:"rgb(216, 127, 51)",cut_red_sandstone_slab:"rgb(216, 127, 51)",purpur_slab:"rgb(178, 76, 216)",smooth_stone:"rgb(112, 112, 112)",smooth_sandstone:"rgb(247, 233, 163)",smooth_quartz:"rgb(255, 252, 245)",smooth_red_sandstone:"rgb(216, 127, 51)",chorus_plant:"rgb(127, 63, 178)",chorus_flower:"rgb(127, 63, 178)",purpur_block:"rgb(178, 76, 216)",purpur_pillar:"rgb(178, 76, 216)",end_stone_bricks:"rgb(247, 233, 163)",torchflower_crop:"rgb(0, 124, 0)",pitcher_crop:"rgb(0, 124, 0)",pitcher_plant:"rgb(0, 124, 0)",beetroots:"rgb(0, 124, 0)",dirt_path:"rgb(151, 109, 77)",end_gateway:"rgb(25, 25, 25)",repeating_command_block:"rgb(127, 63, 178)",chain_command_block:"rgb(102, 127, 51)",frosted_ice:"rgb(160, 160, 255)",magma_block:"rgb(112, 2, 0)",nether_wart_block:"rgb(153, 51, 51)",red_nether_bricks:"rgb(112, 2, 0)",bone_block:"rgb(247, 233, 163)",observer:"rgb(112, 112, 112)",kelp:"rgb(64, 64, 255)",kelp_plant:"rgb(64, 64, 255)",dried_kelp_block:"rgb(102, 127, 51)",turtle_egg:"rgb(247, 233, 163)",sniffer_egg:"rgb(153, 51, 51)",dead_tube_coral_block:"rgb(76, 76, 76)",dead_brain_coral_block:"rgb(76, 76, 76)",dead_bubble_coral_block:"rgb(76, 76, 76)",dead_fire_coral_block:"rgb(76, 76, 76)",dead_horn_coral_block:"rgb(76, 76, 76)",tube_coral_block:"rgb(51, 76, 178)",brain_coral_block:"rgb(242, 127, 165)",bubble_coral_block:"rgb(127, 63, 178)",fire_coral_block:"rgb(153, 51, 51)",horn_coral_block:"rgb(229, 229, 51)",dead_tube_coral:"rgb(76, 76, 76)",dead_brain_coral:"rgb(76, 76, 76)",dead_bubble_coral:"rgb(76, 76, 76)",dead_fire_coral:"rgb(76, 76, 76)",dead_horn_coral:"rgb(76, 76, 76)",tube_coral:"rgb(51, 76, 178)",brain_coral:"rgb(242, 127, 165)",bubble_coral:"rgb(127, 63, 178)",fire_coral:"rgb(153, 51, 51)",horn_coral:"rgb(229, 229, 51)",dead_tube_coral_fan:"rgb(76, 76, 76)",dead_brain_coral_fan:"rgb(76, 76, 76)",dead_bubble_coral_fan:"rgb(76, 76, 76)",dead_fire_coral_fan:"rgb(76, 76, 76)",dead_horn_coral_fan:"rgb(76, 76, 76)",tube_coral_fan:"rgb(51, 76, 178)",brain_coral_fan:"rgb(242, 127, 165)",bubble_coral_fan:"rgb(127, 63, 178)",fire_coral_fan:"rgb(153, 51, 51)",horn_coral_fan:"rgb(229, 229, 51)",dead_tube_coral_wall_fan:"rgb(76, 76, 76)",dead_brain_coral_wall_fan:"rgb(76, 76, 76)",dead_bubble_coral_wall_fan:"rgb(76, 76, 76)",dead_fire_coral_wall_fan:"rgb(76, 76, 76)",dead_horn_coral_wall_fan:"rgb(76, 76, 76)",tube_coral_wall_fan:"rgb(51, 76, 178)",brain_coral_wall_fan:"rgb(242, 127, 165)",bubble_coral_wall_fan:"rgb(127, 63, 178)",fire_coral_wall_fan:"rgb(153, 51, 51)",horn_coral_wall_fan:"rgb(229, 229, 51)",sea_pickle:"rgb(102, 127, 51)",blue_ice:"rgb(160, 160, 255)",conduit:"rgb(92, 219, 213)",bamboo_sapling:"rgb(143, 119, 72)",bamboo:"rgb(0, 124, 0)",bubble_column:"rgb(64, 64, 255)",scaffolding:"rgb(247, 233, 163)",loom:"rgb(143, 119, 72)",barrel:"rgb(143, 119, 72)",smoker:"rgb(112, 112, 112)",blast_furnace:"rgb(112, 112, 112)",cartography_table:"rgb(143, 119, 72)",fletching_table:"rgb(143, 119, 72)",grindstone:"rgb(167, 167, 167)",lectern:"rgb(143, 119, 72)",smithing_table:"rgb(143, 119, 72)",stonecutter:"rgb(112, 112, 112)",bell:"rgb(250, 238, 77)",lantern:"rgb(167, 167, 167)",soul_lantern:"rgb(167, 167, 167)",campfire:"rgb(129, 86, 49)",soul_campfire:"rgb(129, 86, 49)",sweet_berry_bush:"rgb(0, 124, 0)",warped_hyphae:"rgb(86, 44, 62)",stripped_warped_hyphae:"rgb(86, 44, 62)",warped_nylium:"rgb(22, 126, 134)",warped_fungus:"rgb(76, 127, 153)",warped_wart_block:"rgb(20, 180, 133)",warped_roots:"rgb(76, 127, 153)",nether_sprouts:"rgb(76, 127, 153)",crimson_hyphae:"rgb(92, 25, 29)",stripped_crimson_hyphae:"rgb(92, 25, 29)",crimson_nylium:"rgb(189, 48, 49)",crimson_fungus:"rgb(112, 2, 0)",shroomlight:"rgb(153, 51, 51)",weeping_vines:"rgb(112, 2, 0)",weeping_vines_plant:"rgb(112, 2, 0)",twisting_vines:"rgb(76, 127, 153)",twisting_vines_plant:"rgb(76, 127, 153)",crimson_roots:"rgb(112, 2, 0)",crimson_planks:"rgb(148, 63, 97)",warped_planks:"rgb(58, 142, 140)",structure_block:"rgb(153, 153, 153)",jigsaw:"rgb(153, 153, 153)",composter:"rgb(143, 119, 72)",target:"rgb(255, 252, 245)",bee_nest:"rgb(229, 229, 51)",beehive:"rgb(143, 119, 72)",honey_block:"rgb(216, 127, 51)",honeycomb_block:"rgb(216, 127, 51)",netherite_block:"rgb(25, 25, 25)",ancient_debris:"rgb(25, 25, 25)",crying_obsidian:"rgb(25, 25, 25)",respawn_anchor:"rgb(25, 25, 25)",lodestone:"rgb(167, 167, 167)",blackstone:"rgb(25, 25, 25)",polished_blackstone_pressure_plate:"rgb(25, 25, 25)",chiseled_nether_bricks:"rgb(112, 2, 0)",cracked_nether_bricks:"rgb(112, 2, 0)",amethyst_block:"rgb(127, 63, 178)",budding_amethyst:"rgb(127, 63, 178)",amethyst_cluster:"rgb(127, 63, 178)",tuff:"rgb(57, 41, 35)",calcite:"rgb(209, 177, 161)",tinted_glass:"rgb(76, 76, 76)",powder_snow:"rgb(255, 255, 255)",sculk_sensor:"rgb(76, 127, 153)",sculk:"rgb(25, 25, 25)",sculk_vein:"rgb(25, 25, 25)",sculk_catalyst:"rgb(25, 25, 25)",sculk_shrieker:"rgb(25, 25, 25)",oxidized_copper:"rgb(22, 126, 134)",weathered_copper:"rgb(58, 142, 140)",exposed_copper:"rgb(135, 107, 98)",copper_block:"rgb(216, 127, 51)",deepslate_copper_ore:"rgb(100, 100, 100)",lightning_rod:"rgb(216, 127, 51)",pointed_dripstone:"rgb(76, 50, 35)",dripstone_block:"rgb(76, 50, 35)",cave_vines:"rgb(0, 124, 0)",cave_vines_plant:"rgb(0, 124, 0)",spore_blossom:"rgb(0, 124, 0)",azalea:"rgb(0, 124, 0)",flowering_azalea:"rgb(0, 124, 0)",moss_carpet:"rgb(102, 127, 51)",pink_petals:"rgb(0, 124, 0)",moss_block:"rgb(102, 127, 51)",big_dripleaf:"rgb(0, 124, 0)",big_dripleaf_stem:"rgb(0, 124, 0)",small_dripleaf:"rgb(0, 124, 0)",hanging_roots:"rgb(151, 109, 77)",rooted_dirt:"rgb(151, 109, 77)",mud:"rgb(87, 92, 92)",deepslate:"rgb(100, 100, 100)",infested_deepslate:"rgb(100, 100, 100)",raw_iron_block:"rgb(216, 175, 147)",raw_copper_block:"rgb(216, 127, 51)",raw_gold_block:"rgb(250, 238, 77)",ochre_froglight:"rgb(247, 233, 163)",verdant_froglight:"rgb(127, 167, 150)",pearlescent_froglight:"rgb(242, 127, 165)",frogspawn:"rgb(64, 64, 255)",reinforced_deepslate:"rgb(100, 100, 100)",decorated_pot:"rgb(142, 60, 46)"},invisibleBlocks:{air:!0,void_air:!0,cave_air:!0,barrier:!0,light:!0,moving_piston:!0},hasSemiTransparentTextuersRegex:{_stained_glass$:!0,_stained_glass_pane$:!0,"^ice$":!0,"^tinted_glass$":!0,"^slime_block$":!0,"^honey_block$":!0}};var kve=new Map,VVe=new Set(["water","flowing_water","lava","flowing_lava","grass","short_grass","tall_grass"]);function zI(i){let e=kve.get(i);if(e)return e;let t=(0,Tve.default)(i),n=(0,Ive.default)(i),r=new Set(Object.keys(VI.noOcclusions)),s=new Set(t.blocksArray.filter(l=>VI.invisibleBlocks[l.name]).map(l=>l.name)),a=0;for(let l of Object.keys(t.blocksByStateId))a=Math.max(a,Number(l));let o=new Uint8Array(a+1);for(let l of Object.keys(t.blocksByStateId)){let c=Number(l);if(!c)continue;let u=n.fromStateId(c,0);u&&(s.has(u.name)||r.has(u.name)||VVe.has(u.name)||u.boundingBox!=="empty"&&(u.transparent&&u.boundingBox!=="block"||!u.shapes||u.shapes.length===0||(o[c]=1)))}return kve.set(i,o),o}function HI(i,e){return i>0&&i<e.length&&e[i]===1}var Py=128,zVe=Py*4,Ry=(i,e,t)=>`${i},${e},${t}`,$a=i=>Math.floor(i/16)*16,Cy=i=>(i%16+16)%16,qI=(i,e,t)=>i+t*16+e*256,HVe=(i,e)=>{let t=e>>>5;return(i[t]&1<<(e&31))!==0},GI=(i,e,t)=>{let n=e>>>5,r=1<<(e&31);t?i[n]|=r:i[n]&=~r},qVe=i=>{for(let e=0;e<Py;e++)if(i[e])return!1;return!0},Ly=class{sections=new Map;Chunk;solidityTable;worldMinY=0;worldMaxY=256;constructor(e){this.Chunk=(0,WI.default)(e),this.solidityTable=zI(e)}setVersion(e){this.Chunk=(0,WI.default)(e),this.solidityTable=zI(e),this.sections.clear()}setWorldBounds(e,t){this.worldMinY===e&&this.worldMaxY===t||(this.worldMinY=e,this.worldMaxY=t,this.sections.clear())}clear(){this.sections.clear()}getAllocatedSectionCount(){return this.sections.size}getAllocatedBytes(){return this.sections.size*zVe}removeColumn(e,t){let n=$a(this.worldMinY);for(let r=n;r<this.worldMaxY;r+=16)this.sections.delete(Ry(e,r,t))}ingestColumn(e,t,n){let r=this.Chunk.fromJson(n),s=new At(0,0,0);for(let a=this.worldMinY;a<this.worldMaxY;a++){s.y=a;let o=$a(a),l=a-o;for(let c=0;c<16;c++){s.z=c;let u=t+c,d=$a(u),f=u-d;for(let v=0;v<16;v++){s.x=v;let g=r.getBlockStateId(s)||0;if(!HI(g,this.solidityTable))continue;let b=e+v,y=$a(b),_=Ry(y,o,d),x=this.sections.get(_);x||(x=new Uint32Array(Py),this.sections.set(_,x)),GI(x,qI(b-y,l,f),!0)}}}}setBlockStateId(e,t,n,r){if(t<this.worldMinY||t>=this.worldMaxY)return;let s=$a(e),a=$a(t),o=$a(n),l=Ry(s,a,o),c=qI(Cy(e),t-a,Cy(n));if(HI(r,this.solidityTable)){let f=this.sections.get(l);f||(f=new Uint32Array(Py),this.sections.set(l,f)),GI(f,c,!0);return}let d=this.sections.get(l);d&&(GI(d,c,!1),qVe(d)&&this.sections.delete(l))}isSolidBlock(e,t,n){if(t<this.worldMinY||t>=this.worldMaxY)return!1;let r=this.sections.get(Ry($a(e),$a(t),$a(n)));return r?HVe(r,qI(Cy(e),t-$a(t),Cy(n))):!1}};function Pv(i,e){return(i%e+e)%e}var jl=class jl{constructor(e,t,n){this.resourcesManager=e;this.displayOptions=t;this.initOptions=n;this.cameraCollisionBlockCache=new Ly(this.displayOptions.version),this.snapshotInitialValues(),this.worldRendererConfig=t.inWorldRenderingConfig,this.playerStateReactive=t.playerStateReactive,this.playerStateUtils=rce(this.playerStateReactive),this.reactiveState=t.rendererState,this.renderUpdateEmitter.on("update",()=>{let a=Object.keys(this.finishedChunks).length;XE("loaded-chunks",`${a}/${this.chunksLength} chunks (${this.lastChunkDistance}/${this.viewDistance})`)}),l4("downloaded-chunks",100,140,20,{className:o4}),this.connect(this.displayOptions.worldView);let r=setInterval(()=>{this.geometryReceiveCountPerSec=Object.values(this.geometryReceiveCount).reduce((a,o)=>a+o,0),this.geometryReceiveCount={},tce(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;lastMesherSkyLight=15;worldSizeParams={minY:0,worldHeight:256};cameraCollisionBlockCache;reactiveDebugParams=_l({stopRendering:!1,chunksRenderAboveOverride:void 0,chunksRenderAboveEnabled:!1,chunksRenderBelowOverride:void 0,chunksRenderBelowEnabled:!1,chunksRenderDistanceOverride:void 0,chunksRenderDistanceEnabled:!1,disableEntities:!1,caveCullingDebug:!1,smartCull:!0});active=!1;loadedChunks={};finishedChunks={};finishedSections={};sectionsWaiting=new Map;queuedChunks=new Set;queuedFunctions=[];renderUpdateEmitter=new W0;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;mesherPoolSnapshot={mesherWorkers:-1,wasmMesher:!1,dedicatedChangeWorker:!1};mesherReconfigureQueue=Promise.resolve();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;valtioUnsubs=[];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()})()]);let e=async()=>{this.active&&await this.updateAssetsData()};uce(this.resourcesManager,"assetsTexturesUpdated",e,this.abortController.signal),this.watchReactivePlayerState(),this.watchReactiveConfig(),this.watchMesherPoolConfig(),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,a]=t.split(",").map(Number);this.setBlockStateId(new At(r,s,a),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}`],a=Q0e(t,s),o=this.blockStateModelInfo.get(a);return{customBlockName:s,modelInfo:o}}getMesherWorkerScript(){return this.worldRendererConfig.wasmMesher?"wasm":"legacy"}createMesherWorker(){let e=this.getMesherWorkerScript();return GVe(t=>{Array.isArray(t)?this.messageQueue.push(...t):this.messageQueue.push(t),this.processMessageQueue("worker")},e==="wasm"?"mesherWasm.js":"mesher.js")}initWorkers(e=this.worldRendererConfig.mesherWorkers){for(let t=0;t<e;t++)this.workers.push(this.createMesherWorker())}syncMesherPoolSnapshot(){this.mesherPoolSnapshot={mesherWorkers:this.worldRendererConfig.mesherWorkers,wasmMesher:this.worldRendererConfig.wasmMesher,dedicatedChangeWorker:this.worldRendererConfig.dedicatedChangeWorker}}watchMesherPoolConfig(){this.syncMesherPoolSnapshot();let e=()=>{let t=this.worldRendererConfig,n=this.mesherPoolSnapshot;t.mesherWorkers===n.mesherWorkers&&t.wasmMesher===n.wasmMesher&&t.dedicatedChangeWorker===n.dedicatedChangeWorker||(this.syncMesherPoolSnapshot(),this.enqueueMesherWorkersReconfigure())};for(let t of["mesherWorkers","wasmMesher","dedicatedChangeWorker"])this.valtioUnsubs.push(this.onReactiveConfigUpdated(t,e,!1))}enqueueMesherWorkersReconfigure(){this.mesherReconfigureQueue=this.mesherReconfigureQueue.then(()=>this.reconfigureMesherWorkers()).catch(e=>{console.error("[Mesher] Failed to reconfigure workers:",e)})}clearMesherPendingState(){this.sectionsWaiting.clear(),this.toWorkerMessagesQueue={},this.queueAwaited=!1,this.messageQueue=[],this.isProcessingQueue=!1;for(let e of this.sectionDirtyTimers.values())clearTimeout(e);this.sectionDirtyTimers.clear(),this.sectionDirtyCount.clear(),this.sectionDirtyPendingArgs.clear(),this.reactiveState.world.mesherWork=!1}terminateAllMesherWorkers(){for(let e of this.workers)e.terminate();this.workers=[]}async bootstrapMesherWorkers(){this.workers.length!==0&&(this.sendMesherMcData(),await this.updateAssetsData(),this.logWorkerWork("# mesher workers bootstrapped"))}async reconfigureMesherWorkers(){this.active&&(this.clearMesherPendingState(),this.terminateAllMesherWorkers(),this.initWorkers(),await this.bootstrapMesherWorkers(),this.active&&await this.requestLoadedChunksReload())}async requestLoadedChunksReload(){try{let e=this.displayOptions.worldView;if(typeof e.reloadLoadedChunks=="function"){await e.reloadLoadedChunks();return}let t=globalThis;typeof t.WorkerGlobalScope<"u"&&globalThis instanceof t.WorkerGlobalScope&&self.postMessage({type:"reloadLoadedChunks"})}catch(e){console.error("[Mesher] Failed to reload chunks after worker reconfigure:",e)}}onReactivePlayerStateUpdated(e,t,n=!0){return n&&t(this.playerStateReactive[e]),Sl(this.playerStateReactive,e,t)}onReactiveConfigUpdated(e,t,n=!0){return n&&t(this.worldRendererConfig[e]),e==="*"?g1(this.worldRendererConfig,t):Sl(this.worldRendererConfig,e,t)}onReactiveDebugUpdated(e,t){t(this.reactiveDebugParams[e]),Sl(this.reactiveDebugParams,e,t)}watchReactivePlayerState(){this.valtioUnsubs.push(this.onReactivePlayerStateUpdated("backgroundColor",e=>{this.changeBackgroundColor(e)})),this.valtioUnsubs.push(this.onReactivePlayerStateUpdated("cardinalLight",e=>{this.changeCardinalLight(e)}))}watchReactiveConfig(){this.valtioUnsubs.push(this.onReactiveConfigUpdated("fetchPlayerSkins",e=>{cce({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 At(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)){console.debug(`sectionFinished for non-outstanding section ${t.key} (viewDistance=${this.viewDistance})`);return}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,a=this.getSectionHeight();for(let o=this.worldMinYRender;o<this.worldSizeParams.worldHeight;o+=a)if(!this.finishedSections[`${n[0]},${o},${n[2]}`]){s=!1;break}if(s){this.finishedChunks[r]=!0;let o=16,l=`${Math.floor(n[0]/o)},${Math.floor(n[2]/o)}`;this.reactiveState.world.chunksLoaded[l]=!0,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 a=typeof t.preTargetConvert=="number"?t.preTargetConvert:0,o=typeof t.preNeighborConvert=="number"?t.preNeighborConvert:0,l=typeof t.preNeighborCount=="number"?t.preNeighborCount:0,c=typeof t.preTypedArrayBuild=="number"?t.preTypedArrayBuild:0,u=typeof t.preOther=="number"?t.preOther:0,d=typeof t.preCacheHits=="number"?t.preCacheHits:0,f=typeof t.preCacheMisses=="number"?t.preCacheMisses:0;if(this.workersPreTargetConvertAverageTime=(this.workersPreTargetConvertAverageTime*(s-1)+a)/s,this.workersPreNeighborConvertAverageTime=(this.workersPreNeighborConvertAverageTime*(s-1)+o)/s,this.workersPreNeighborCountAverage=(this.workersPreNeighborCountAverage*(s-1)+l)/s,this.workersPreTypedArrayBuildAverageTime=(this.workersPreTypedArrayBuildAverageTime*(s-1)+c)/s,this.workersPreOtherAverageTime=(this.workersPreOtherAverageTime*(s-1)+u)/s,this.workersPreCacheHitsTotal+=d,this.workersPreCacheMissesTotal+=f,this.worldRendererConfig.debugWasmPerf&&s%jl.PHASE_PERF_LOG_INTERVAL===0){let v=this.workersPreAverageTime+this.workersWasmAverageTime+this.workersPostAverageTime,g=v>0?this.workersPreAverageTime/v*100:0,b=v>0?this.workersWasmAverageTime/v*100:0,y=v>0?this.workersPostAverageTime/v*100:0,_=this.workersPreAverageTime,x=_>0?this.workersPreTargetConvertAverageTime/_*100:0,w=_>0?this.workersPreNeighborConvertAverageTime/_*100:0,S=_>0?this.workersPreTypedArrayBuildAverageTime/_*100:0,A=_>0?this.workersPreOtherAverageTime/_*100:0,k=this.workersPreNeighborCountAverage,C=k>0?this.workersPreNeighborConvertAverageTime/k:0,I=this.workersPreCacheHitsTotal+this.workersPreCacheMissesTotal,T=I>0?this.workersPreCacheHitsTotal/I*100:0;console.log(`[wasm-mesher perf] n=${s} pre=${this.workersPreAverageTime.toFixed(2)}ms (${g.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 (${x.toFixed(1)}%) pre.neighborConvert=${this.workersPreNeighborConvertAverageTime.toFixed(2)}ms (${w.toFixed(1)}%) [n\u0304=${k.toFixed(2)}, per-nbr=${C.toFixed(2)}ms] pre.typedArrayBuild=${this.workersPreTypedArrayBuildAverageTime.toFixed(2)}ms (${S.toFixed(1)}%) pre.other=${this.workersPreOtherAverageTime.toFixed(2)}ms (${A.toFixed(1)}%) | pre.cache hits=${this.workersPreCacheHitsTotal} misses=${this.workersPreCacheMissesTotal} (${T.toFixed(1)}% hit)`)}}}if(t.type==="blockStateModelInfo")for(let[n,r]of Object.entries(t.info))this.blockStateModelInfo.set(n,r);if(t.type==="heightmap"){let n=new Int16Array(t.heightmap);this.reactiveState.world.heightmaps[t.key]=n}if(t.type==="neighborDataArrived"){let n=this.getSectionHeight();for(let r=this.worldMinYRender;r<this.worldSizeParams.worldHeight;r+=n)this.setSectionDirty(new At(t.x,r,t.z))}}}downloadMesherLog(){let e=document.createElement("a");e.href="data:text/plain;charset=utf-8,"+encodeURIComponent(this.mesherLogger.contents.join(`
|
|
4646
|
+
`;l0=6;Xd={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},$_e={TEX_INDEX_BITS:12,DIAGONAL_FLAG_SHIFT:12,SECTION_Y_SHIFT:13,SECTION_Y_BITS:5,EMPTY_SHIFT:18,SECTION_X_HI_SHIFT:19,SECTION_Z_HI_SHIFT:25,SECTION_HI_BITS:6,SPARE_BITS:1},UYe={SECTION_BITS:22,SECTION_MASK:(1<<22)-1,LO_BITS:16,HI_BITS:6,SECTION_BIAS:2097152}});var r9,X_e=zn(()=>{"use strict";h();p();m();r9=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 i9,Y_e=zn(()=>{"use strict";h();p();m();Lt();i9=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),a=Math.round(n*255);return r<<16|s<<8|a}add(e,t,n,r,s){let a=this.packColor(e,t,n),o=`${r}:${s}`,l=this.categoryBiomeToIndex.get(o);if(l!==void 0)return l;let c=this.colorToIndex.get(a);if(c!==void 0)return this.categoryBiomeToIndex.set(o,c),c;let u=this.entries.length;return this.entries.push({r:e,g:t,b:n}),this.colorToIndex.set(a,u),this.categoryBiomeToIndex.set(o,u),u}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 di(e,256,1,Wr,Gr);return t.minFilter=ct,t.magFilter=ct,t.wrapS=$n,t.wrapT=$n,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,a=(r>>8&255)/255,o=(r&255)/255;return[s,a,o]}if(e.grass){let r=n(e.grass.default);for(let{keys:s,color:a}of e.grass.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[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:a}of e.foliage.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[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:a}of e.redstone.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[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:a}of e.constant.data??[]){let o=n(a);for(let l of s)t.add(o[0],o[1],o[2],"constant",l)}t.add(r[0],r[1],r[2],"constant","default")}return t}}});function FYe(){let i=globalThis.loadedData?.tints;return i||(J_e||(J_e=!0,console.warn("[shaderCubeBridge] loadedData.tints missing; shader cubes use legacy path")),null)}function o9(){let i=FYe();if(!i)return null;if(s9||(s9=i9.fromTintsData(i),s9.createTexture()),!IP){let e=A3.latest??A3;IP=new r9({width:e.width,height:e.height,tileSize:e.tileSize??16,suSv:e.suSv??16,textures:e.textures??{}})}return{tintPalette:s9,textureIndexMapping:IP}}function K_e(){return 1<<$_e.EMPTY_SHIFT>>>0}var a9,s9,IP,J_e,H5=zn(()=>{"use strict";h();p();m();DE();Kc();X_e();Y_e();a9=4,s9=null,IP=null,J_e=!1});function VYe(i,e){let t=new Ea,n=new Float32Array(l0*3);t.setAttribute("position",new Mt(n,3));let r=new Uint32Array(e),s=new Uint32Array(e),a=new Uint32Array(e),o=new Uint32Array(e),l=a9;for(let c=0;c<e;c++)r[c]=i[c*l],s[c]=i[c*l+1],a[c]=i[c*l+2],o[c]=i[c*l+3];return t.setAttribute("a_w0",new Tr(r,1)),t.setAttribute("a_w1",new Tr(s,1)),t.setAttribute("a_w2",new Tr(a,1)),t.setAttribute("a_w3",new Tr(o,1)),t.instanceCount=e,t.boundingBox=new In(new $(-8,-8,-8),new $(8,8,8)),t.boundingSphere=new Rn(new $(0,0,0),Math.sqrt(3*8**2)),t}function zYe(i){i.raycast=(e,t)=>{let{geometry:n}=i;if(!n.boundingBox||(Z_e.copy(n.boundingBox).applyMatrix4(i.matrixWorld),!e.ray.intersectBox(Z_e,RP)))return;let r=e.ray.origin.distanceTo(RP);t.push({distance:r,point:RP.clone(),object:i})}}function l9(i,e){let t=VYe(i.words,i.count),n=new Ke(t,e);return n.name="shaderMesh",n.matrixAutoUpdate=!1,n.frustumCulled=!1,zYe(n),n}function CP(i){i.geometry.dispose()}var Z_e,RP,PP=zn(()=>{"use strict";h();p();m();Lt();Kc();H5();Z_e=new In,RP=new $});var i4e={};so(i4e,{applyWorldGeometryExport:()=>GYe,createMeshesFromExport:()=>n4e,downloadWorldGeometry:()=>LP,exportWorldGeometry:()=>e4e,loadTextureFromDataUrl:()=>r4e,loadWorldGeometryFromUrl:()=>HYe});function e4e(i,e,t,n=!1){let r=[],s=Ml(i.timeOfTheDay)/15,a=i.chunkMeshManager.globalLegacyBuffer;for(let[l,c]of Object.entries(i.sectionObjects)){let u=[],d=[],f=[],v=[],g=[],b=[],y=[],_=a?.getSectionGeometryData(l);_&&(u.push(..._.positions),f.push(...Kb(_.colors,_.skyLights,_.blockLights,s)),v.push(..._.skyLights),g.push(..._.blockLights),b.push(..._.uvs),y.push(..._.indices));let x=c.children.find(w=>w.name==="mesh");if(x?.geometry){let{geometry:w}=x,S=w.getAttribute("position"),A=w.getAttribute("normal"),k=w.getAttribute("color"),C=w.getAttribute("a_skyLight"),I=w.getAttribute("a_blockLight"),T=w.getAttribute("uv"),L=w.index;if(S&&L&&k){let B=u.length/3,U=S.count,O=Array.from(k.array),V=C?Array.from(C.array):new Array(U).fill(1),F=I?Array.from(I.array):new Array(U).fill(0);u.push(...Array.from(S.array)),A&&d.push(...Array.from(A.array)),f.push(...Kb(O,V,F,s)),v.push(...V),g.push(...F),T&&b.push(...Array.from(T.array));for(let J of Array.from(L.array))y.push(J+B)}}u.length===0||y.length===0||r.push({key:l,position:{x:c.worldX??0,y:c.worldY??0,z:c.worldZ??0},geometry:{positions:u,normals:d,colors:f,skyLights:v,blockLights:g,uvs:b,indices:y}})}let o={version:i.version??"unknown",exportedAt:new Date().toISOString(),camera:{position:e,rotation:t},sections:r};if(n&&i.material.map){let l=document.createElement("canvas"),c=i.material.map,{image:u}=c;u&&(l.width=u.width,l.height=u.height,l.getContext("2d").drawImage(u,0,0),o.textureAtlasDataUrl=l.toDataURL("image/png"))}return o}function LP(i,e,t,n="world-geometry.json",r=!1){let s=e4e(i,e,t,r),a=JSON.stringify(s),o=new Blob([a],{type:"application/json"}),l=URL.createObjectURL(o),c=document.createElement("a");c.href=l,c.download=n,c.click(),URL.revokeObjectURL(l)}async function HYe(i){let e=await fetch(i);if(!e.ok)throw new Error(`Failed to fetch world geometry: ${e.statusText}`);return e.json()}function t4e(i,e){let t=i.map??i.map;if(!t)return null;let n=e9();n.uniforms.u_atlas.value=t,t9(n,e);let r=o9();if(!r)return null;let{tintPalette:s}=r;return s.isReady()||s.createTexture(),n.uniforms.u_tintPalette.value=s.getTexture(),n}function n4e(i,e,t,n=1){let r=[],s=t??t4e(e,n);for(let a of i.sections){let o=new bt;if(o.name="chunk",a.geometry.positions.length>0&&a.geometry.indices.length>0){let u=new dt;if(u.setAttribute("position",new Je(a.geometry.positions,3)),a.geometry.normals.length&&u.setAttribute("normal",new Je(a.geometry.normals,3)),a.geometry.colors.length){let g=a.geometry.skyLights?.length?Kb(a.geometry.colors,a.geometry.skyLights,a.geometry.blockLights,n):a.geometry.colors;u.setAttribute("color",new Je(g,3))}a.geometry.uvs.length&&u.setAttribute("uv",new Je(a.geometry.uvs,2));let f=Math.max(...a.geometry.indices)>65535?Uint32Array:Uint16Array;u.setIndex(new Mt(new f(a.geometry.indices),1));let v=new Ke(u,e);v.position.set(a.position.x,a.position.y,a.position.z),v.name="mesh",o.add(v)}let c=a.shaderCubes;if(c&&c.count>0&&s){let u=l9(c,s);u.position.set(a.position.x,a.position.y,a.position.z),o.add(u)}o.children.length>0&&r.push(o)}return r}async function r4e(i){return new Promise((e,t)=>{let n=new Image;n.onload=()=>{let r=new sn(n);r.magFilter=ct,r.minFilter=ct,r.needsUpdate=!0,r.flipY=!1,e(r)},n.onerror=t,n.src=i})}async function GYe(i,e){let{scene:t,renderUpdateEmitter:n,material:r}=i,s=t.getObjectByName(Q_e);s&&(t.remove(s),qYe(s));let a=!!e.textureAtlasDataUrl,o;if(a&&e.textureAtlasDataUrl){let f=await r4e(e.textureAtlasDataUrl);o=new Ss({map:f,vertexColors:!0,transparent:!0,alphaTest:.1}),o.name="geometry-export-material"}else o=r;let l=Ml(i.timeOfTheDay)/15,c=e.sections.some(f=>(f.shaderCubes?.count??0)>0)?t4e(o,l):null,u=n4e(e,o,c,l),d=new bt;d.name=Q_e,a&&(d.userData.geometryExportMaterial=o);for(let f of u)d.add(f);return t.add(d),n.emit("update"),u.length}var Q_e,qYe,BP=zn(()=>{"use strict";h();p();m();Lt();d4();W_e();H5();Kc();PP();Q_e="geometry-export-root";qYe=i=>{i.traverse(t=>{t.isMesh&&t.geometry?.dispose()});let e=i.userData?.geometryExportMaterial;e&&(e.map?.dispose?.(),e.dispose?.())}});var P9=M((K9n,d8e)=>{h();p();m();var{Vec3:u8e}=gl(),ii={UNKNOWN:-999,BOTTOM:0,TOP:1,NORTH:2,SOUTH:3,WEST:4,EAST:5},C9=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 u8e(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 u8e(this.startx+this.x,0,this.starty+this.y)}},sL=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)}},aL=class{constructor(e,t,n){this.block={x:Math.floor(e.x),y:Math.floor(e.y),z:Math.floor(e.z),face:ii.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=ii.UNKNOWN,s=this.pos.minus(t);for(let a of e){let o=(a[this.invDirX>0?0:3]-s.x)*this.invDirX,l=(a[this.invDirX>0?3:0]-s.x)*this.invDirX,c=(a[this.invDirY>0?1:4]-s.y)*this.invDirY,u=(a[this.invDirY>0?4:1]-s.y)*this.invDirY,d=this.stepX>0?ii.WEST:ii.EAST;if(o>u||c>l)continue;c>o&&(o=c,d=this.stepY>0?ii.BOTTOM:ii.TOP),u<l&&(l=u);let f=(a[this.invDirZ>0?2:5]-s.z)*this.invDirZ,v=(a[this.invDirZ>0?5:2]-s.z)*this.invDirZ;o>v||f>l||(f>o&&(o=f,d=this.stepZ>0?ii.NORTH:ii.SOUTH),v<l&&(l=v),o<n&&(n=o,r=d))}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?ii.WEST:ii.EAST):(this.block.z+=this.stepZ,this.tMaxZ+=this.tDeltaZ,this.block.face=this.stepZ>0?ii.NORTH:ii.SOUTH):this.tMaxY<this.tMaxZ?(this.block.y+=this.stepY,this.tMaxY+=this.tDeltaY,this.block.face=this.stepY>0?ii.BOTTOM:ii.TOP):(this.block.z+=this.stepZ,this.tMaxZ+=this.tDeltaZ,this.block.face=this.stepZ>0?ii.NORTH:ii.SOUTH),this.block)}},oL=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}};d8e.exports={ManhattanIterator:C9,ManathanIterator:C9,OctahedronIterator:sL,RaycastIterator:aL,SpiralIterator2d:oL,BlockFace:ii}});var h8e=M((txn,f8e)=>{h();p();m();var{Vec3:bg}=gl(),{EventEmitter:BJe}=(Ra(),Ar(j0)),{RaycastIterator:DJe}=P9();function Wi(i){return new bg(Math.floor(i.x)&15,Math.floor(i.y),Math.floor(i.z)&15)}var lL=class extends BJe{constructor(e){super(),this.async=e}initialize(e,t,n,r=256,s=new bg(0,0,0)){function a(u,d,f){return!(u>=n||u<0||f>=t||f<0||d>=r||d<0)}let o=Wi(s),l=Math.ceil((t+o.z)/16),c=Math.ceil((n+o.x)/16);for(let u=0;u<l;u++){let d=u+Math.floor(s.z/16);for(let f=0;f<c;f++){let v=f+Math.floor(s.x/16),g=this.getColumn(v,d),b=f*16-o.x,y=u*16-o.z;g.initialize((_,x,w)=>a(_+b,x-s.y,w+y)?e(_+b,x-s.y,w+y):null),this.setColumn(v,d,g)}}}raycast(e,t,n,r=null){let s=new DJe(e,t,n),a=e;for(;a;){let o=new bg(a.x,a.y,a.z),l=this.getBlock(o);if(l)if(r){if(r(l,s))return l}else{let c=s.intersect([...l.shapes,...l.interactionShapes??[]],o);if(c)return l.face=c.face,l.intersect=c.pos,l}a=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 bg(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 bg(e*16,0,t*16);this.emit("chunkColumnLoad",s)}getBlock(e){let t=this.getColumnAt(e);if(!t)return null;let n=t.getBlock(Wi(e));return n.position=e.floored(),n}getBlockStateId(e){let t=this.getColumnAt(e);return t?t.getBlockStateId(Wi(e)):0}getBlockType(e){let t=this.getColumnAt(e);return t?t.getBlockType(Wi(e)):0}getBlockData(e){let t=this.getColumnAt(e);return t?t.getBlockData(Wi(e)):0}getBlockLight(e){let t=this.getColumnAt(e);return t?t.getBlockLight(Wi(e)):0}getSkyLight(e){let t=this.getColumnAt(e);return t?t.getSkyLight(Wi(e)):0}getBiome(e){let t=this.getColumnAt(e);return t?t.getBiome(Wi(e)):0}setBlock(e,t){let n=this.getColumnAt(e);if(!n)return;let r=Wi(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=Wi(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=Wi(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=Wi(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=Wi(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=Wi(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=Wi(e),s=n.getBlock(r);n.setBiome(r,t),this.async.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}};f8e.exports=lL});var p8e=M((sxn,m8e)=>{h();p();m();var{Vec3:wg}=gl(),{EventEmitter:OJe}=(Ra(),Ar(j0)),{RaycastIterator:NJe}=P9(),UJe=h8e(),{once:FJe}=(Ra(),Ar(j0));function xg(i,e){return i+","+e}function ji(i){return new wg(Math.floor(i.x)&15,Math.floor(i.y),Math.floor(i.z)&15)}var cL=class extends OJe{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 UJe(this),t&&n!==0&&this.startSaving()}initialize(e,t,n,r=256,s=new wg(0,0,0)){function a(d,f,v){return!(d>=n||d<0||v>=t||v<0||f>=r||f<0)}let o=[],l=ji(s),c=Math.ceil((t+l.z)/16),u=Math.ceil((n+l.x)/16);for(let d=0;d<c;d++){let f=d+Math.floor(s.z/16);for(let v=0;v<u;v++){let g=v+Math.floor(s.x/16);o.push(this.getColumn(g,f).then(b=>{let y=v*16-l.x,_=d*16-l.z;return b.initialize((x,w,S)=>a(x+y,w-s.y,S+_)?e(x+y,w-s.y,S+_):null),this.setColumn(g,f,b)}).then(()=>({chunkX:g,chunkZ:f})))}}return Promise.all(o)}async raycast(e,t,n,r=null){let s=new NJe(e,t,n),a=e;for(;a;){let o=new wg(a.x,a.y,a.z),l=await this.getBlock(o);if(l&&(!r||r(l))){let c=s.intersect([...l.shapes,...l.interactionShapes??[]],o);if(c)return l.face=c.face,l.intersect=c.pos,l}a=s.next()}return null}getLoadedColumn(e,t){let n=xg(e,t);return this.columns[n]}async getColumn(e,t){await Promise.resolve();let n=xg(e,t);if(!this.columns[n]){let r=null;if(this.storageProvider!=null){let a=await this.storageProvider.load(e,t);a!=null&&(r=a)}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=xg(e,t);this.columns[s]=n;let a=new wg(e*16,0,t*16);this.emit("chunkColumnLoad",a),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=xg(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 wg(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 FJe(this,"doneSaving"),await this.finishedSaving}stopSaving(){clearInterval(this.savingInt)}queueSaving(e,t){this.savingQueue.set(xg(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=ji(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(ji(e));return t.position=e.floored(),t}async getBlockStateId(e){return(await this.getColumnAt(e)).getBlockStateId(ji(e))}async getBlockType(e){return(await this.getColumnAt(e)).getBlockType(ji(e))}async getBlockData(e){return(await this.getColumnAt(e)).getBlockData(ji(e))}async getBlockLight(e){return(await this.getColumnAt(e)).getBlockLight(ji(e))}async getSkyLight(e){return(await this.getColumnAt(e)).getSkyLight(ji(e))}async getBiome(e){return(await this.getColumnAt(e)).getBiome(ji(e))}async setBlockStateId(e,t){let n=await this.getColumnAt(e),r=ji(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=ji(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=ji(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=ji(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=ji(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=ji(e),s=n.getBlock(r);n.setBiome(r,t),this.saveAt(e),this._emitBlockUpdate(s,n.getBlock(r),e)}};function VJe(i){return cL}m8e.exports=VJe});var v8e=M((cxn,uL)=>{h();p();m();uL.exports=p8e();uL.exports.iterators=P9()});h();p();m();h();p();m();function OB(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 m0(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 U8e(i,e,t){return Array.isArray(i)?i.reduce((n,r)=>{let s=r[e],a=r[t];for(let o=s;o<=a;o++)n[o]=r;return n},{}):(console.warn("[augmentWorkerMcData] buildIndexFromArrayWithRanges expected array, got",typeof i),{})}function F8e(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 Cg(i,e,t){let n=OB(i[e]);if(n?.length)return n;let r=OB(i[t]);if(r?.length)return r}function NB(i){if(i.__workerIndexesBuilt)return i;let e=Cg(i,"blocksArray","blocks");e?.length&&(F8e(e),i.blocksArray=e,i.blocks=m0(e,"id"),i.blocksByName=m0(e,"name"),i.blocksByStateId=U8e(e,"minStateId","maxStateId"));let t=Cg(i,"itemsArray","items");t?.length&&(i.itemsArray=t,i.itemsByName=m0(t,"name"),i.items=m0(t,"id"));let n=Cg(i,"entitiesArray","entities");n?.length&&(i.entitiesArray=n,i.entitiesByName=m0(n,"name"),i.entities=m0(n,"id"));let r=Cg(i,"biomesArray","biomes");return r?.length&&(i.biomesArray=r,i.biomes=m0(r,"id"),i.biomesByName=m0(r,"name")),i.__workerIndexesBuilt=!0,i}h();p();m();Lt();h();p();m();var kN=Jr(gl(),1);var At=kN.default.Vec3;h();p();m();h();p();m();h();p();m();var UKe=Symbol(),bEe=Symbol();var TN=Object.getPrototypeOf,qw=new WeakMap,xEe=i=>i&&(qw.has(i)?qw.get(i):TN(i)===Object.prototype||TN(i)===Array.prototype);var IN=i=>xEe(i)&&i[bEe]||null,Gw=(i,e=!0)=>{qw.set(i,e)};var v1={},Ww=i=>typeof i=="object"&&i!==null,G0=new WeakMap,H7=new WeakSet,wEe=(i=Object.is,e=(c,u)=>new Proxy(c,u),t=c=>Ww(c)&&!H7.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,u,d=n)=>{let f=r.get(c);if(f?.[0]===u)return f[1];let v=Array.isArray(c)?[]:Object.create(Object.getPrototypeOf(c));return Gw(v,!0),r.set(c,[u,v]),Reflect.ownKeys(c).forEach(g=>{if(Object.getOwnPropertyDescriptor(v,g))return;let b=Reflect.get(c,g),{enumerable:y}=Reflect.getOwnPropertyDescriptor(c,g),_={value:b,enumerable:y,configurable:!0};if(H7.has(b))Gw(b,!1);else if(b instanceof Promise)delete _.value,_.get=()=>d(b);else if(G0.has(b)){let[x,w]=G0.get(b);_.value=s(x,w(),d)}Object.defineProperty(v,g,_)}),Object.preventExtensions(v)},a=new WeakMap,o=[1,1],l=c=>{if(!Ww(c))throw new Error("object required");let u=a.get(c);if(u)return u;let d=o[0],f=new Set,v=(T,L=++o[0])=>{d!==L&&(d=L,f.forEach(B=>B(T,L)))},g=o[1],b=(T=++o[1])=>(g!==T&&!f.size&&(g=T,_.forEach(([L])=>{let B=L[1](T);B>d&&(d=B)})),d),y=T=>(L,B)=>{let U=[...L];U[1]=[T,...U[1]],v(U,B)},_=new Map,x=(T,L)=>{if((v1.env?v1.env.MODE:void 0)!=="production"&&_.has(T))throw new Error("prop listener already exists");if(f.size){let B=L[3](y(T));_.set(T,[L,B])}else _.set(T,[L])},w=T=>{var L;let B=_.get(T);B&&(_.delete(T),(L=B[1])==null||L.call(B))},S=T=>(f.add(T),f.size===1&&_.forEach(([B,U],O)=>{if((v1.env?v1.env.MODE:void 0)!=="production"&&U)throw new Error("remove already exists");let V=B[3](y(O));_.set(O,[B,V])}),()=>{f.delete(T),f.size===0&&_.forEach(([B,U],O)=>{U&&(U(),_.set(O,[B]))})}),A=Array.isArray(c)?[]:Object.create(Object.getPrototypeOf(c)),C=e(A,{deleteProperty(T,L){let B=Reflect.get(T,L);w(L);let U=Reflect.deleteProperty(T,L);return U&&v(["delete",[L],B]),U},set(T,L,B,U){let O=Reflect.has(T,L),V=Reflect.get(T,L,U);if(O&&(i(V,B)||a.has(B)&&i(V,a.get(B))))return!0;w(L),Ww(B)&&(B=IN(B)||B);let F=B;if(B instanceof Promise)B.then(J=>{B.status="fulfilled",B.value=J,v(["resolve",[L],J])}).catch(J=>{B.status="rejected",B.reason=J,v(["reject",[L],J])});else{!G0.has(B)&&t(B)&&(F=l(B));let J=!H7.has(F)&&G0.get(F);J&&x(L,J)}return Reflect.set(T,L,F,U),v(["set",[L],B,V]),!0}});a.set(c,C);let I=[A,b,s,S];return G0.set(C,I),Reflect.ownKeys(c).forEach(T=>{let L=Object.getOwnPropertyDescriptor(c,T);"value"in L&&(C[T]=c[T],delete L.value,delete L.writable),Object.defineProperty(A,T,L)}),C})=>[l,G0,H7,i,e,t,n,r,s,a,o],[SEe]=wEe();function _l(i={}){return SEe(i)}function jw(i){let e=G0.get(i);return e?.[1]()}function g1(i,e,t){let n=G0.get(i);(v1.env?v1.env.MODE:void 0)!=="production"&&!n&&console.warn("Please use proxy object");let r,s=[],a=n[3],o=!1,c=a(u=>{if(s.push(u),t){e(s.splice(0));return}r||(r=Promise.resolve().then(()=>{r=void 0,o&&e(s.splice(0))}))});return o=!0,()=>{o=!1,c()}}function PN(i,e){let t=e??globalThis;return t.addEventListener("message",n=>{let{type:r,args:s,msgId:a}=n.data;if(i[r]){let o=i[r](...s);o instanceof Promise&&o.then(l=>{t.postMessage({type:"result",msgId:a,args:[l]})})}}),null}var LN=!1,u2={toWorker:0,fromWorker:0},RN=null,EEe=()=>{RN==null&&(typeof window>"u"||(RN=setInterval(()=>{globalThis.debugWorkerSyncStats={...u2},u2.toWorker=0,u2.fromWorker=0},1e3)))},G7=i=>{EEe(),i==="toWorker"?u2.toWorker++:u2.fromWorker++};var MEe=(i,e,t)=>{if(e.length===0)return;let n=i;for(let r=0;r<e.length-1;r++){let s=e[r];(n[s]==null||typeof n[s]!="object")&&(n[s]={}),n=n[s]}n[e[e.length-1]]=t},AEe=(i,e)=>{if(e.length===0)return;let t=i;for(let n=0;n<e.length-1;n++)if(t=t[e[n]],t==null)return;delete t[e[e.length-1]]},$w=(i,e)=>{if(i==null||typeof i!="object")return i;if(i instanceof At)return{x:i.x,y:i.y,z:i.z,__restorer:"Vec3"};if(typeof i.prepareForTransfer=="function")return i.prepareForTransfer(e);if(ArrayBuffer.isView(i))return i;if(Array.isArray(i))return i.map(n=>$w(n,e));if(jw(i)!==void 0)return q7(i);let t={};for(let n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=$w(i[n],e));return t},kEe=(i,e)=>{let t=[];for(let n of i){let r=n[0];r==="delete"?t.push({kind:"delete",path:n[1]}):r==="set"&&t.push({kind:"set",path:n[1],value:$w(n[2],e)})}return t},TEe=(i,e,t,n,r)=>{if(e.length===0)return;let s=kEe(e,t);if(s.length!==0)try{t.postMessage({type:"sync",syncId:i,ops:s}),n==="toWorker"&&G7("toWorker"),LN&&console.log(`sync ${r}`,s.length,"ops")}catch(a){console.error("Failed to send worker sync ops",a,r);for(let o of s)o.kind==="set"&&Xw(o.value)}},IEe=(i,e,t,n=!1)=>{for(let r of e)r.kind==="delete"?AEe(i,r.path):MEe(i,r.path,d2(r.value,[],t,!1,!1));n==="fromWorker"&&G7("fromWorker")},REe=(i,e,t,n,r)=>{try{let s=q7(e);t.postMessage({type:"sync",syncId:i,value:s}),n==="toWorker"&&G7("toWorker"),LN&&console.log(`sync snapshot ${r}`)}catch(s){console.error("Failed to send worker sync snapshot",s,r),Xw(e)}},CEe=(i,e,t,n=!1)=>{Object.assign(i,d2(e,[],t,!1,!1)),n==="fromWorker"&&G7("fromWorker")};var q7=i=>{if(jw(i)===void 0)return i;if(Array.isArray(i))return i.map(q7);if(typeof i=="object"&&i!==null){let e={};for(let t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=q7(i[t]));return e}return i};var Xw=(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&&Xw(i[t],[...e,t]);try{structuredClone(i[t])}catch(n){console.error(n),console.log("Failed to clone for transfer",e.join("."))}}},CN=new WeakMap,PEe=(i,e,t)=>{if(!i.__syncId)return;let n=i.__syncId,r=CN.get(e);if(r||(r=new Set,CN.set(e,r)),!r.has(n)&&(r.add(n),i.__syncToWorker&&e.addEventListener("message",s=>{s.data.type==="sync"&&s.data.syncId===n&&(s.data.ops?IEe(i,s.data.ops,e):s.data.value&&CEe(i,s.data.value,e))}),i.__syncFromWorker)){i.__valtio&&g1(i,a=>{TEe(n,a,e,"fromWorker",`fromWorker:${t}`)});let s=i.__syncFromWorkerInterval??0;s>0&&!i.__valtio&&setInterval(()=>{REe(n,i,e,"fromWorker",`fromWorker:interval:${t}`)},s)}},LEe=[{restorerName:"Vec3",restoreTransferred(i,e){return new At(i.x,i.y,i.z)}}];var d2=(i,e,t,n=!0,r=!0)=>{let s=[...LEe,...e],a=(o,l)=>{if(o==null||typeof o!="object")return o;if(o.__restorer){let c=s.find(d=>d.restorerName?d.restorerName===o.__restorer:d.name===o.__restorer);if(c)return c.restoreTransferred(o,t);let u=new Error(`Restorer ${o.__restorer} not found`);if(typeof n=="function")n(u);else{if(n)throw u;console.error(u)}return o}if(Array.isArray(o))return o.map((c,u)=>a(c,`${l}[${u}]`));for(let c in o){if(!Object.prototype.hasOwnProperty.call(o,c))continue;let u=o[c];u!=null&&typeof u=="object"&&(o[c]=a(u,`${l}.${c}`))}return o.__valtio&&(o=_l(o)),r&&PEe(o,t,l),o};return a(i,"root")};h();p();m();h();p();m();Ra();var GE=Jr(M3(),1);DE();var T0e={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 j_={"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"}}}};h();p();m();var I0e="";h();p();m();var R0e="";h();p();m();var C0e="";h();p();m();var P0e="";h();p();m();var L0e="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 B0e="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 D0e="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 O0e={"entity/chest/normal":L0e,"entity/chest/normal_left":B0e,"entity/chest/normal_right":D0e};h();p();m();h();p();m();var Na=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 o of this.versionsSorted)if((n?r<=this.semverToNumber(o):r<this.semverToNumber(o))&&this.data[o]?.[t]){s=o;break}let a;return this.strictVersioned?a=this.data[s]?.[t]:this.data[s]?.[t]?a=this.data[s][t]:this.data.latest[t]&&(a=this.data.latest[t]),a&&typeof a=="object"?structuredClone(a):a}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}};h();p();m();h();p();m();var Qn=class{oversized=!1;constructor(e=0,t=0,n=0,r=0,s=!1,a=void 0){this._width=e,this._height=t,this._x=n,this._y=r,this._data={},this._rot=s,this._allowRotation=a}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}},$_=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)}},mh=class i extends $_{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:rs.MAX_EDGE};constructor(e=X_,t=X_,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 Qn(this.maxWidth+this.padding-this.border*2,this.maxHeight+this.padding-this.border*2,this.border,this.border)),this.stage=new Qn(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 Qn(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 Qn(this.maxWidth+this.padding-this.border*2,this.maxHeight+this.padding-this.border*2,this.border,this.border)],this.stage=new Qn(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,a=0;for(;a<s;)this.splitNode(this.freeRects[a],n)&&(this.freeRects.splice(a,1),s--,a--),a++;return this.pruneFreeList(),this.verticalExpand=this.options.logic===rs.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 Qn(e.width+this.padding,e.height+this.padding,this.border,this.height+this.padding-this.border))||this.updateBinSize(new Qn(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 Qn(e.width+this.padding,e.height+this.padding,this.width+this.padding-this.border,this.border))||this.updateBinSize(new Qn(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,a,o;for(let l in this.freeRects){if(a=this.freeRects[l],a.width>=e&&a.height>=t){if(this.options.logic===rs.MAX_AREA)s=a.width*a.height-e*t;else if(this.options.logic===rs.FILL_WIDTH){let c=a.x+a.y*this.maxWidth,u=this.freeRects.filter(f=>f.x+f.y*this.maxWidth<c).length,d=a.y+t-this.height;s=u+d}else s=Math.min(a.width-e,a.height-t);s<r&&(o=new Qn(e,t,a.x,a.y),r=s)}if(n&&a.width>=t&&a.height>=e){if(this.options.logic===rs.MAX_AREA)s=a.width*a.height-t*e;else if(this.options.logic===rs.FILL_WIDTH){let c=a.x+a.y*this.maxWidth,u=this.freeRects.filter(f=>f.x+f.y*this.maxWidth<c).length,d=a.y+e-this.height;s=u+d}else s=Math.min(a.height-e,a.width-t);s<r&&(o=new Qn(t,e,a.x,a.y,!0),r=s)}}return o}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 Qn(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 Qn(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 Qn(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 Qn(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 Qn(e-this.width-this.padding,t-this.border*2,this.width+this.padding-this.border,this.border)),this.freeRects.push(new Qn(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()}},k3=class i extends $_{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 Qn(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])}},X_=4096,rs;(function(i){i[i.MAX_AREA=0]="MAX_AREA",i[i.MAX_EDGE=1]="MAX_EDGE",i[i.FILL_WIDTH=2]="FILL_WIDTH"})(rs||(rs={}));var Y_=class{width;height;padding;bins;options={smart:!0,pot:!0,square:!1,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:rs.MAX_EDGE};constructor(e=X_,t=X_,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 k3(t));else if(!this.bins.slice(this._currentBinIndex).find(r=>r.add(t)!==void 0)){let r=new mh(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 Qn(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 k3(t));else if(!this.bins.slice(this._currentBinIndex).find(r=>r.add(t)!==void 0)){let r=new mh(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,a)=>{let o=s.data&&s.data.tag?s.data.tag:s.tag?s.tag:void 0,l=a.data&&a.data.tag?a.data.tag:a.tag?a.tag:void 0;return l===void 0?-1:o===void 0?1:l>o?-1:1});let t,n=0;if(!this.bins.slice(this._currentBinIndex).find((s,a)=>{let o=s.clone();for(let l=n;l<e.length;l++){let c=e[l],u=c.data&&c.data.tag?c.data.tag:c.tag?c.tag:void 0;if(l===0&&(t=u),u!==t)return t=u,this.sort(e.slice(n,l),this.options.logic).forEach(d=>s.add(d)),n=l,this.addArray(e.slice(l)),!0;if(u===void 0)return this.sort(e.slice(l),this.options.logic).forEach(d=>this.add(d)),n=e.length,!0;if(o.add(c)===void 0)return this.sort(e.slice(n,l),this.options.logic).forEach(d=>s.add(d)),n=l,!1}return this.sort(e.slice(n),this.options.logic).forEach(l=>s.add(l)),!0})){let s=e[n],a=new mh(this.width,this.height,this.padding,this.options),o=s.data&&s.data.tag?s.data.tag:s.tag?s.tag:void 0;this.options.tag&&this.options.exclusiveTag&&o&&(a.tag=o),this.bins.push(a),a.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 k3(t.width,t.height,{}));else{let r=new mh(this.width,this.height,this.padding,t.options);r.freeRects.splice(0),t.freeRects.forEach((s,a)=>{r.freeRects.push(new Qn(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=rs.MAX_EDGE){return e.slice().sort((n,r)=>{let s=t===rs.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 J_=16384;function N0e(i){return i===0?1:(i--,i|=i>>1,i|=i>>2,i|=i>>4,i|=i>>8,i|=i>>16,i+1)}var U0e=({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(_=>{let x=e(_),w;if(x.image)w=x.image;else if(x.contents)w=new Image,w.src=x.contents;else throw new Error("No image or contents");let S=t*(x.tileWidthMult??1),A=t;if(x.useOriginalSize||x.renderWidth||x.renderHeight){let k=x.renderWidth??w.width,C=x.renderHeight??w.height;S=Math.ceil(k/t)*t,A=Math.ceil(C/t)*t}return{keyValue:_,img:w,inputData:x,renderWidth:S,renderHeight:A,renderSourceWidth:x.useOriginalSize?w.width:x.renderSourceWidth??Math.min(w.width,w.height),renderSourceHeight:x.useOriginalSize?w.height:x.renderSourceHeight??Math.min(w.width,w.height),renderSourceStartX:x.renderSourceStartX??0,renderSourceStartY:x.renderSourceStartY??0}}),a=new Y_(void 0,void 0,0,{square:!0,pot:!0,...r?{}:{smart:!0},logic:r?rs.FILL_WIDTH:rs.MAX_AREA}),o=s.map(_=>{let x=new Qn(_.renderWidth,_.renderHeight);return x.data=_,x});a.addArray(o);let l=a.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(_=>({x:_.x,y:_.y,img:{data:_.data}}))},u=new Set;for(let _ of c.coords){let x=_.img.data;if(u.has(x.keyValue))throw new Error(`Duplicate texture keyValue found in atlas: ${x.keyValue}`);u.add(x.keyValue)}if(u.size!==i.length)throw new Error(`Lost some textures in packing: ${i.length-u.size}`);let d=Math.max(N0e(c.width),N0e(c.height));if(d>J_){let _=s.reduce((w,S)=>{let A=`${S.renderWidth}x${S.renderHeight}`;return w[A]=(w[A]||0)+1,w},{}),x=Object.entries(_).sort(([,w],[,S])=>S-w).map(([w,S])=>`${w}(${S})`).join(", ");throw new Error(`Required atlas size ${d} exceeds maximum ${J_}. Texture sizes: ${x}`)}let f=n(d);f.width=d,f.height=d;let v=f.getContext("2d");v.imageSmoothingEnabled=!1;let g={},b=t/d,y=Math.ceil(d/t);for(let _ of c.coords){let x=_.img.data,w=_.x,S=_.y,A=Math.floor(S/t),k=Math.floor(w/t),C=A*y+k;try{v.drawImage(x.img,x.renderSourceStartX,x.renderSourceStartY,x.renderSourceWidth,x.renderSourceHeight,w,S,x.renderWidth,x.renderHeight)}catch(B){throw new Error(`Error drawing ${x.keyValue}: ${B}`)}let I=x.keyValue.split(".").slice(0,-1).join(".")||x.keyValue,T=x.renderWidth/d,L=x.renderHeight/d;g[I]={u:w/d,v:S/d,tileIndex:C,...T==b&&L==b?{}:{su:T,sv:L}}}return{canvas:f,json:{suSv:b,tileSize:t,width:d,height:d,textures:g}}};h();p();m();var OE=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)},qu=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 Js=class i{atlasJson;latestImage;legacyImage;atlasStore;atlasHasLegacyImage;static getTextureInfo(e,t,n,r="latest"){let s=e.get(r,n);if(!s)return;let a=(s.imageType==="latest"?t.latest:t.legacy).suSv;return{...s,su:s?.su??a,sv:s?.sv??a}}constructor(e,t,n){this.atlasJson=e,this.latestImage=t,this.legacyImage=n,this.atlasStore=new Na,this.atlasStore.inclusive=!1;let r=e,s=(a,o,l,c)=>{for(let[u,d]of Object.entries(l))a.push(o,u,{...d,version:o,imageType:c})};if(s(this.atlasStore,"latest",r.latest.textures,"latest"),this.atlasHasLegacyImage=!!n,n&&r.legacy)for(let a of Object.keys(r.legacy.textures)){let[o,l]=a.split("/");s(this.atlasStore,o,{[l]:r.legacy.textures[a]},"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 qu(n.imageType==="latest"?this.latestImage:this.legacyImage),getLoadedAtlasImage:async()=>await qu(n.imageType==="latest"?this.latestImage:this.legacyImage)}}async makeNewAtlas(e,t,n=this.atlas.latest.tileSize,r,s=[],a={}){let o=this.atlasJson,l={},c=this.atlasHasLegacyImage?await qu(this.legacyImage):null,u=await qu(this.latestImage);for(let b of new Set([...Object.keys(o.latest.textures),...s])){let y=t?.(b);if(y===!1)continue;if(y&&y!==!0){let I=typeof y=="string"?await qu(y):y;l[b]={u:0,v:0,su:1,sv:1,img:I};continue}let _=this.getTextureInfo(b,e);if(!_)throw new Error(`Missing texture info from the provided atlas for ${b} and not custom data is provided`);let{u:x,v:w,su:S,sv:A}=_,k=_.version==="latest"?o.latest:o.legacy,C=_.imageType==="latest"?u:c;if(!C)throw new Error(`Missing image for ${b}`);l[b]={u:x,v:w,su:S??k.suSv,sv:A??k.suSv,img:C}}let d=Object.keys(l);if(r){let b=typeof r=="function"?r:y=>r.includes(y)?1:-1;d.sort((y,_)=>b(_)-b(y))}let{json:f,canvas:v}=U0e({input:d,getLoadedImage:b=>{let y=l[b],_=y.img,x=_.width,w=_.height;return delete y.img,{image:_,renderWidth:y.su*x,renderHeight:y.sv*w,renderSourceStartX:y.u*x,renderSourceStartY:y.v*w,renderSourceWidth:y.su*x,renderSourceHeight:y.sv*w}},tileSize:this.atlas.latest.tileSize,...a}),g;return{canvas:v,atlas:f,get newAtlasParser(){return g||(g=new i({latest:f},v.toDataURL())),g},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(J_,t.width*(e?6:1))/t.width,s=t.height*r,a=t.width*r,o=globalThis.Canvas?new globalThis.Canvas(a,s):document.createElement("canvas");o.width=a,o.height=s;let l=o.getContext("2d");l.imageSmoothingEnabled=!1,l.webkitImageSmoothingEnabled=!1,l.mozImageSmoothingEnabled=!1,l.msImageSmoothingEnabled=!1;let c=await qu(this.latestImage);l.drawImage(c,0,0,t.width,t.height,0,0,a,s),l.strokeStyle="#ff0000",l.lineWidth=2;let u=Object.keys(t.textures),d=u.length,f=0;return u.forEach((v,g)=>{let b=t.textures[v],y=Math.floor(g/d*100);y>=f+10&&(console.log(`Processing textures: ${y}% (${g}/${d})`),f=y);let _=b.u*t.width*r,x=b.v*t.height*r,w=(b.su||t.suSv)*t.width*r,S=(b.sv||t.suSv)*t.height*r,A=l.createPattern((()=>{let k=globalThis.Canvas?new globalThis.Canvas(10,10):document.createElement("canvas");k.width=10,k.height=10;let C=k.getContext("2d");return C.fillStyle="#ff0000",C.fillRect(0,0,5,10),C.fillStyle="#ffff00",C.fillRect(5,0,5,10),k})(),"repeat");if(l.strokeStyle=A,l.strokeRect(_,x,w,S),e){let k=v,C=4,I=w-C*2,T=12;do{if(l.font=`${T}px monospace`,l.measureText(k).width<=I||T<=6)break;T-=1}while(T>6);l.fillStyle="white",l.strokeStyle="black",l.lineWidth=Math.max(1,T/6),l.textBaseline="top";let L=_+C,B=x+C,U=k.split(/(?=[A-Z_/])/g),O="",V=[];for(let J of U){let X=O+J;l.measureText(X).width>I&&O!==""?(V.push(O),O=J):O=X}V.push(O);let F=T*1.2;V.forEach((J,X)=>{l.strokeText(J,L,B+X*F),l.fillText(J,L,B+X*F)})}}),console.log(`Processing textures: 100% (${d}/${d})`),o.toDataURL()}};h();p();m();h();p();m();var F0e=i=>{let e=i.split(":");return e.length===1?"minecraft":e.length===2?e[0]:e.slice(0,-1).join(":")},ph=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 a of n)a?.elements&&r.push(...a.elements.map(({from:o,to:l})=>[o,l]));return r.length===1&&V0e(r[0][0],[0,0,0])&&V0e(r[0][1],[16,16,16])?1:r}resolvedModel={modelName:""};issues=[];matchedModels=[];matchedConditions=[];getModelsByBlock(e,t,n){this.matchedModels=[],this.matchedConditions=[];let r=(d,f)=>{if(!f)return!0;typeof f=="string"&&(f=this.parseProperties(f));let v=d.properties;if(f.OR)return f.OR.some(g=>r(d,g));if(f.AND)return f.AND.every(g=>r(d,g));for(let g in f)if(typeof f[g]!="string"&&(f[g]=String(f[g])),!f[g].split("|").some(b=>b===String(v[g])))return!1;return!0},s=[],a=this.blockStatesStore.get(this.version,e.name);if(!a){this.issues.push(`Block ${e.name} not found in all registered blockstates. Place it into assets/${F0e(e.name)}/blockstates/${e.name}.json`);return}let o=a.variants,l=!1;if(o){let d=o[""]||o.normal;for(let f in o)if(f!==""&&r(e,f)){d=o[f];break}if(d){let f=Object.entries(o).find(([v])=>d===o[v])?.[0];this.matchedConditions.push(`variant:${f}`)}if(!d)if(t){let f=Object.keys(o)[0];d=o[f],this.matchedConditions.push(`fallback:${f}`)}else return;d&&(s.push(d),l=!0)}if(a.multipart){for(let{when:d,apply:f}of a.multipart)(!d||r(e,d))&&(s.push(f),this.matchedConditions.push(d?`multipart:${JSON.stringify(d)}`:"multipart:always"));if(!s.length&&t){let f=a.multipart.filter(v=>v.when)[0]?.apply;f&&(s.push(f),this.matchedConditions.push("multipart:fallback"))}}if(!s.length){if(!l){let d=Object.keys(o??{}).length;d?this.issues.push(`Block did not match any possible state (${d} possible states)`):this.issues.push(`Blockstates for ${e.name} are not defined`)}return}let c=[],u=0;for(let d of s){u++;let f=0;c.push([]);for(let v of Array.isArray(d)?d:[d])if(f++,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+"-"+u+"-"+f,!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/${F0e(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=o=>{if(r.push(o),o.parent){let l=this.getModelData(o.parent);if(!l){this.issues.push(`Parent model ${o.parent} not found for ${t}`);return}this.matchedModels.push(`parent:${o.parent}`),s(l)}};s(e),r.reverse();for(let o of r){if(o.textures){this.resolvedModel.textures??={};for(let[l,c]of Object.entries(o.textures)){if(c.includes("#")&&(c=c.split("/").at(-1)),c.startsWith("#")){let u=c.slice(1);this.resolvedModel.textures[u]&&(c=this.resolvedModel.textures[u])}this.resolvedModel.textures[l]=c}}o.elements&&(this.resolvedModel.elements=o.elements);for(let[l,c]of Object.entries(o))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 a=(o,l,c)=>{if(c.push(l),o.includes("#")){if(o=o.split("/").at(-1).replace("#",""),this.resolvedModel.textures??={},c.includes(o)){this.issues.push(`${t}: Circular texture reference detected: ${c.join(" -> ")}`);return}let u=this.resolvedModel.textures[o];if(u)return a(u,o,c);this.issues.push(`${t}: Cannot resolve texture ${o} for ${l} because it is not defined`);return}return o};for(let[o,l]of Object.entries(this.resolvedModel.textures??{})){if(!l.includes("#"))continue;let c=a(l,o,[]);c?this.resolvedModel.textures[o]=c:delete this.resolvedModel.textures[o]}for(let o of this.resolvedModel.elements??[])for(let[l,c]of Object.entries(o.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)}},V0e=(i,e)=>!!i&&!!e&&i.length===e.length&&i.every((t,n)=>t===e[n]);h();p();m();var rMe=new Na,iMe=new Na,sMe=new Na;rMe.inclusive=!1;iMe.inclusive=!1;sMe.inclusive=!1;var K_=i=>{let e=new Na;return e.inclusive=!1,e.loadData(i.blockstates),e},Z_=i=>{let e=new Na;return e.inclusive=!1,e.loadData(i.models),e},Q_=i=>{let e=new Na;return e.inclusive=!1,e.loadData(i),e};function e4(i,e,t){let n=K_(i),r=Z_(i),s=new ph(t,n,r),a=new Js(e,"latest","legacy"),o=c=>a.getTextureInfo(c.replace("block/","").replace("blocks/",""),t),l=(c,u,d)=>{let{elements:f,textures:v,...g}=c;return{elements:f?.map((b,y)=>{try{return{...b,faces:Object.fromEntries(Object.entries(b.faces).map(([_,x])=>{let w=x.texture;if(!w)throw new Error(`Missing resolved texture ${w} for face ${_} of ${u.name}`);let S=o(w);if(!S)throw new Error(`Missing texture data ${w} for ${u.name}`);let A=b.from,k=b.to,C=16,I=x.uv||{north:[k[0],C-k[1],A[0],C-A[1]],east:[A[2],C-k[1],k[2],C-A[1]],south:[A[0],C-k[1],k[0],C-A[1]],west:[A[2],C-k[1],k[2],C-A[1]],up:[A[0],A[2],k[0],k[2]],down:[k[0],A[2],A[0],k[2]]}[_],T=(I[2]-I[0])/C*S.su,L=(I[3]-I[1])/C*S.sv;return[_,{...x,texture:{u:S.u+I[0]/16*S.su,v:S.v+I[1]/16*S.sv,su:T,sv:L,tileIndex:S.tileIndex,debugName:w}}]}))}}catch(_){return d?.push(`Error processing element ${y} in ${u.name}: ${_.message}`),null}}).filter(b=>b!==null),...g}};return{getAllResolvedModels0_1(c,u=!1,d=[],f=[],v=[],g=!1){s.issues=[],s.matchedModels=[],s.matchedConditions=[];let b=s.getAllResolvedModels(c,u)??[];if(d.push(...s.issues),f.push(...s.matchedModels),v.push(...s.matchedConditions),!b.length)return d.push(`No models found for block ${c.name}`),[];let y=["north","east","south","west","up","down"];try{let _=b.map(x=>x.map(w=>{try{return l(w,c,g?d:void 0)}catch(S){return d.push(`Error transforming model for ${c.name}: ${S.message}`),null}}).filter(w=>w?.elements?.length)).filter(x=>x.length);return _.length||d.push(`No valid models after transformation for block ${c.name}`),_}catch(_){return d.push(`Fatal error processing models for ${c.name}: ${_.message}`),[]}},transformModel:l,getTextureInfo:o}}h();p();m();Lt();var zE=Jr(z0e(),1);h();p();m();h();p();m();var t4=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 a=1/0,o=0;this.context&&(a=Math.min(a,e),o=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+" ("+a.toFixed(s)+"-"+parseFloat(o.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 H0e=class n4{constructor({logsPerSecond:e=20,samplesLog:t=100,samplesGraph:n=10,precision:r=2,minimal:s=!1,horizontal:a=!0,mode:o=0}={}){this.mode=o,this.horizontal=a,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 n4.Panel("FPS","#0ff","#002"),0),this.msPanel=this.addPanel(new n4.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=o,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 n4.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 o=0;o<t.logs.length;o++)n+=t.logs[o],t.logs[o]>r&&(r=t.logs[o]);let s=0,a=.01;for(let o=0;o<t.graph.length;o++)s+=t.graph[o],t.graph[o]>a&&(a=t.graph[o]);e&&e.update(n/Math.min(t.logs.length,this.samplesLog),s/Math.min(t.graph.length,this.samplesGraph),r,a,this.precision)}}};H0e.Panel=t4;var q0e=H0e;h();p();m();var Dr=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-Dr.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?Dr.Bounce.In(i*2)*.5:Dr.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}}}}),T3=function(){return performance.now()},gh=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=T3()),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]],a=!t;s&&s.update(e,a)===!1&&!t&&delete this._tweens[n[r]]}n=Object.keys(this._tweensAddedDuringUpdate)}return!0},i}(),vh={Linear:function(i,e){var t=i.length-1,n=t*e,r=Math.floor(n),s=vh.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=vh.Utils.Bernstein,a=0;a<=n;a++)t+=r(1-e,n-a)*r(e,a)*i[a]*s(n,a);return t},CatmullRom:function(i,e){var t=i.length-1,n=t*e,r=Math.floor(n),s=vh.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=vh.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,a=(n-e)*.5,o=r*r,l=r*o;return(2*e-2*t+s+a)*l+(-3*e+3*t-2*s-a)*o+s*r+e}}},G0e=function(){function i(){}return i.nextId=function(){return i._nextId++},i._nextId=0,i}(),FE=new gh,$r=function(){function i(e,t){t===void 0&&(t=FE),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=Dr.Linear.None,this._interpolationFunction=vh.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=G0e.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=T3()),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 a in n){var o=e[a],l=Array.isArray(o),c=l?"array":typeof o,u=!l&&Array.isArray(n[a]);if(!(c==="undefined"||c==="function")){if(u){var d=n[a];if(d.length===0)continue;for(var f=[o],v=0,g=d.length;v<g;v+=1){var b=this._handleRelativeValue(o,d[v]);if(isNaN(b)){u=!1,console.warn("Found invalid interpolation list. Skipping.");break}f.push(b)}u&&(n[a]=f)}if((c==="object"||l)&&o&&!u){t[a]=l?[]:{};var y=o;for(var _ in y)t[a][_]=y[_];r[a]=l?[]:{};var d=n[a];if(!this._isDynamic){var x={};for(var _ in d)x[_]=d[_];n[a]=d=x}this._setupProperties(y,t[a],d,r[a],s)}else(typeof t[a]>"u"||s)&&(t[a]=o),l||(t[a]*=1),u?r[a]=n[a].slice().reverse():r[a]=t[a]||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=T3()),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=T3()),!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=FE),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=Dr.Linear.None),this._easingFunction=e,this},i.prototype.interpolation=function(e){return e===void 0&&(e=vh.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=T3()),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 a=this._easingFunction(r);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,a),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 o=0,l=this._chainedTweens.length;o<l;o++)this._chainedTweens[o].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 a=t[s]||0,o=n[s],l=Array.isArray(e[s]),c=Array.isArray(o),u=!l&&c;u?e[s]=this._interpolationFunction(o,r):typeof o=="object"&&o?this._updateProperties(e[s],a,o,r):(o=this._handleRelativeValue(a,o),typeof o=="number"&&(e[s]=a+(o-a)*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 KZt=G0e.nextId,Io=FE,ZZt=Io.getAll.bind(Io),QZt=Io.removeAll.bind(Io),eQt=Io.add.bind(Io),tQt=Io.remove.bind(Io),W0e=Io.update.bind(Io);h();p();m();function VE(i){if(i==="high-performance")return"high-performance";if(i==="low-power")return"low-power"}var Bn=typeof globalThis.WorkerGlobalScope<"u"&&globalThis instanceof globalThis.WorkerGlobalScope,HE=class{constructor(e,t=0){this.canvas=e;this.stats=new zE.default,this.stats2=new zE.default,this.statsGl=new q0e({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()}},r4=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 c2({canvas:this.canvas,preserveDrawingBuffer:!0,logarithmicDepthBuffer:!0,powerPreference:VE(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.outputColorSpace=jr,t||(this.updatePixelRatio(),this.setupResizeListener()),this.sizeUpdated(),this.previousCanvasWidth=this.canvas.width,this.previousCanvasHeight=this.canvas.height;let r="WebGL2RenderingContext"in globalThis;!t&&r&&!Bn&&(this.stats=new HE(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=aMe(),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(),W0e(),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 aMe(){let i=document.createElement("canvas");return i.id="viewer-canvas",document.body.appendChild(i),i}h();p();m();var I3=class{version;itemsAtlasParser;blocksAtlasParser;blockStatesStore;modelsStore;assetsParser;constructor(e,t,n,r){this.version=e,this.itemsAtlasParser=n,this.blocksAtlasParser=r,this.blockStatesStore=K_(t),this.modelsStore=Z_(t),this.assetsParser=new ph(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(f=>f.from[0]===0&&f.from[1]===0&&f.from[2]===0&&f.to[0]===16&&f.to[1]===16&&f.to[2]===16))return;let s=n.elements[0],a=s.faces.up?.texture??s.faces.top?.texture,o=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(!a||!o||!l)return;let c=this.resolveTexture(a);if(!c)throw new Error(`Missing texture for ${t} top texture`);let u=this.resolveTexture(o);if(!u)throw new Error(`Missing texture for ${t} left texture`);let d=this.resolveTexture(l);if(!d)throw new Error(`Missing texture for ${t} right texture`);return{top:c,left:u,right:d,resolvedModel:n}}getItemTexture(e,t={},n=!1,r=!1){let[s,a]=e.includes(":")?e.split(":"):["minecraft",e],o=s==="minecraft"?"":s,l=a,c=o?`${o}:item/${l}`:`item/${l}`,u=o?`${o}:block/${l}`:`block/${l}`,d=o?`${o}:${l}`:l,f=b=>this.modelsStore.get(this.version,b),v;{if(v=f(d),!n&&!v){let y=f(c);y&&y.textures?.layer0&&(v=y)}let b=v?.parent?.includes("block/");if(!v)if(r&&!o){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=f(u),v&&(b=!0);if(b||v?.elements)return r?this.resolveBlockModel(v,d):this.tryGetFullBlock(v,d)}if(!v)return;let g=d.includes("block/")?Object.values(v.textures??{})[0]:v.textures?.layer0;if(g)return(g.startsWith("invsprite_")?this.resolveTexture(g.replace("invsprite_","")):void 0)??this.resolveTexture(g)}};h();p();m();function qE(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=>qE(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 a=qE(n[s],e+1);a!==void 0&&(r[s]=a)}return r}function i4(i){return i.map(e=>qE(e))}var s4=null;function Y0e(i){return Bn?((!s4||typeof s4.get!="function")&&(s4=Q_(j_)),s4):(J0e(i),i.itemsDefinitionsStore)}function J0e(i){Bn||typeof i.itemsDefinitionsStore?.get=="function"||(i.itemsDefinitionsStore=Q_(i.sourceItemDefinitionsJson??j_))}var R3=class{sourceItemDefinitionsJson=j_;itemsDefinitionsStore=Q_(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),J0e(this)}if(this.version){let t=globalThis.loadedData??globalThis.mcData;Bn&&t?.entitiesByName?this.mcData=t:this.mcData=(0,GE.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}},X0e="1.21.4",oc=class oc extends W0{rebuildWorkerRenderers(e){if(Bn&&!(!e.version||!e.blockstatesModels||!e.blocksAtlasJson)){if(this.blocksAtlasParser=new Js({latest:e.blocksAtlasJson},""),e.itemsAtlasJson)this.itemsAtlasParser=new Js({latest:e.itemsAtlasJson},"");else if(!this.itemsAtlasParser?.atlas?.latest){if(!this.sourceItemsAtlases||Object.keys(this.sourceItemsAtlases).length===0)return;this.itemsAtlasParser=new Js(this.sourceItemsAtlases,"")}e.itemsRenderer=new I3(e.version,e.blockstatesModels,this.itemsAtlasParser,this.blocksAtlasParser),e.worldBlockProvider=e4(e.blockstatesModels,this.blocksAtlasParser.atlas,X0e)}}static restoreTransferred(e,t){let n=new oc,r=s=>{n.currentResources=new R3(s),n.rebuildWorkerRenderers(n.currentResources)};return r(e.currentResources),t&&t.addEventListener("message",({data:s})=>{s.class===oc.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:oc.restorerName,type:"event",eventName:n,args:i4(r)}),n==="assetsTexturesUpdated"||n==="assetsInventoryReady"){let s=this.enrichTransferSnapshot(this.currentResources?.prepareForTransfer());e.postMessage({class:oc.restorerName,type:"newResources",currentResources:s})}}}return{__restorer:oc.restorerName,currentResources:this.enrichTransferSnapshot(this.currentResources?.prepareForTransfer())}}sourceBlockStatesModels=null;sourceBlocksAtlases=A3;sourceItemsAtlases=T0e;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(()=>($0e(),j0e))).default}resetResources(){this.currentResources=new R3}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 R3;r.version=this.currentConfig.version,r.texturesVersion=this.currentConfig.texturesVersion??r.version,r.mcData=(0,GE.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 I3(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,O0e);let r=new Js(this.sourceBlocksAtlases,I0e,R0e),s=Object.keys(e.customTextures.blocks?.textures??{});console.time("createBlocksAtlas");let{atlas:a,canvas:o}=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 Js({latest:a},o.toDataURL()),e.blocksAtlasImage=await createImageBitmap(o),e.blocksAtlasJson=this.blocksAtlasParser.atlas.latest,e.worldBlockProvider=e4(e.blockstatesModels,this.blocksAtlasParser.atlas,X0e)}async recreateItemsAtlas(e=this.currentResources){let t=new Js(this.sourceItemsAtlases,C0e,P0e),n=Object.keys(e.customTextures.items?.textures??{}),{atlas:r,canvas:s}=await t.makeNewAtlas(e.texturesVersion,a=>{let o=e.customTextures.items?.textures[a];if(o)return o},e.customTextures.items?.tileSize,void 0,n);this.itemsAtlasParser=new Js({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}};Hn(oc,"restorerName","ResourcesManager");var lc=oc;h();p();m();var a4=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()}};h();p();m();Lt();h();p();m();function K0e(i){let e=Math.floor(i.x/16),t=Math.floor(i.z/16);return[e,t]}function WE(i){let e=Math.floor(i.x/16),t=Math.floor(i.y/16),n=Math.floor(i.z/16);return[e,t,n]}h();p();m();Ra();h();p();m();function Sl(i,e,t,n){let r=i[e];return g1(i,()=>{let s=i[e];Object.is(r,s)||t(r=s)},n)}var men=Symbol();h();p();m();var jE={blocks:"blocksArray",blockCollisionShapes:"blockCollisionShapes",biomes:"biomesArray",tints:"tints"};h();p();m();var Z0e=16;var Q0e=(i,e)=>e?`${i}:${e}`:String(i);h();p();m();var ece=0,El={},$E=40,o4="mc-renderer-debug-overlay",l4=(i,e=80,t=ece,n=$E,r)=>{if(Bn)return{updateText(){},setVisibility(){}};let s=document.createElement("div");return s.style.position="fixed",s.style.top=`${n??$E}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),El[i]=s,n===void 0&&t===ece&&($E+=20),{updateText(a){s.innerText!==a&&(s.innerText=a)},setVisibility(a){s.style.display=a?"block":"none"}}};var XE=(i,e)=>{Bn||!El[i]||(El[i].innerText=e)},tce=i=>{if(!Bn)for(let e in El)El[e].style.display=i?"block":"none"},nce=()=>{if(!Bn)for(let i in El)lMe(i)},lMe=i=>{Bn||!El[i]||(El[i].remove(),delete El[i])};h();p();m();var cMe=()=>_l({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}),rce=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"}}),ice=()=>({reactive:cMe()});h();p();m();h();p();m();h();p();m();h();p();m();function YE(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let a=0;a<n;a++)for(let o=0;o<r;o++){let l=(a+o*n)*4;if(s.data[l+3]!==255)return!0}return!1}function c4(i){return i/64}function sce(i,e,t){if(t){if(YE(i,0,0,e,e))return}else if(YE(i,0,0,e,e/2))return;let n=c4(e),r=(s,a,o,l)=>i.clearRect(s*n,a*n,o*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 uMe(i,e){i.save(),i.scale(-1,1);let t=c4(e),n=(r,s,a,o,l,c)=>i.drawImage(i.canvas,r*t,s*t,a*t,o*t,-l*t,c*t,-a*t,o*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 JE(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),uMe(n,r),sce(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),sce(n,i.width,!0)}function dMe(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 KE(i,e){let t=dMe(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 fMe(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let a=0;a<n;a++)for(let o=0;o<r;o++){let l=(a+o*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 hMe(i,e,t,n,r){let s=i.getImageData(e,t,n,r);for(let a=0;a<n;a++)for(let o=0;o<r;o++){let l=(a+o*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 ZE(i){let e=c4(i.width),t=i.getContext("2d",{willReadFrequently:!0}),n=(o,l,c,u)=>YE(t,o*e,l*e,c*e,u*e),r=(o,l,c,u)=>fMe(t,o*e,l*e,c*e,u*e),s=(o,l,c,u)=>hMe(t,o*e,l*e,c*e,u*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 QE(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=c4(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)}h();p();m();var ace="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=";h();p();m();Lt();h();p();m();var pMe=()=>{if(typeof OffscreenCanvas>"u")return!1;try{let i=new OffscreenCanvas(1,1);return(i.getContext("webgl2")||i.getContext("webgl"))!==null}catch{return!1}},vMe=pMe(),bi=(i,e)=>{if(vMe||typeof document>"u")return new OffscreenCanvas(i,e);let t=document.createElement("canvas");return t.width=i,t.height=e,t};async function Gu(i){let t=await(await fetch(i)).blob();return createImageBitmap(t)}var hr=(i,e=!1)=>{i instanceof Ke&&(i.geometry?.dispose?.(),i.material?.dispose?.()),i instanceof va&&i.skeleton?.dispose?.(),i.children&&i.children.forEach(t=>hr(t,e)),e&&i instanceof Ke&&i.material?.map?.dispose?.()},eM={},oce={},C3=i=>{let e=new sn,t=Gu(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}},_h=async i=>C3(i).texture,cc=i=>{let e=bi(i.width,i.height);e.getContext("2d").drawImage(i,0,0);let n=new sn(e);return n.magFilter=ct,n.minFilter=ct,n};function yh(i){let{texture:e,promise:t}=C3(i);return e.magFilter=ct,e.minFilter=ct,t.catch(n=>{console.error("[texture] failed to load",i,n)}),e}async function u4(i,e,t){if(!eM[i]){let{promise:r,resolve:s}=Promise.withResolvers(),a=C3(i);eM[i]=a.texture,a.promise.then(s),oce[i]=r}e(eM[i]),oce[i].then(()=>{t?.()})}var is=ace,vtn=_h(is);var lce={apiEnabled:!0},cce=i=>{Object.assign(lce,i)};async function uc(i,e){if(!lce.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 Ro(i){i.startsWith("data:")||(i=await gMe(i.replace("http://","https://")));let e=await Gu(i),t=bi(64,64);return JE(t,e),{canvas:t,image:e}}var gMe=async i=>{let t=await(await fetch(i,{})).arrayBuffer();return`data:image/png;base64,${Buffer.from(t).toString("base64")}`};d4();h();p();m();function ti(i,e,t,n){if(i.on(e,t),n.aborted){i.off(e,t);return}n.addEventListener("abort",()=>{i.off(e,t)},{once:!0})}function uce(i,e,t,n){if(i.on(e,t),n.aborted){i.off(e,t);return}n.addEventListener("abort",()=>{i.off(e,t)},{once:!0})}h();p();m();function P3(i){let e=i*2+1;if(e<=0)return[];let t=[],n=0,r=0,s=0,a=-1;for(let o=0;o<e*e;o++){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=-a,a=l}n+=s,r+=a}return t}h();p();m();var WI=Jr(FI(),1);h();p();m();var Tve=Jr(M3(),1),Ive=Jr(Ei(),1);var VI={lightLevels:{lava:15,brown_mushroom:1,torch:14,wall_torch:14,fire:15,soul_fire:10,soul_torch:10,soul_wall_torch:10,glowstone:15,nether_portal:11,jack_o_lantern:15,enchanting_table:7,brewing_stand:1,lava_cauldron:15,end_portal:15,end_portal_frame:1,dragon_egg:1,ender_chest:7,beacon:15,sea_lantern:15,end_rod:14,end_gateway:15,magma_block:3,conduit:15,lantern:15,soul_lantern:10,shroomlight:15,crying_obsidian:10,amethyst_cluster:5,large_amethyst_bud:4,medium_amethyst_bud:2,small_amethyst_bud:1,sculk_sensor:1,sculk_catalyst:6,ochre_froglight:15,verdant_froglight:15,pearlescent_froglight:15},noOcclusions:{mangrove_roots:!0,oak_leaves:!0,spruce_leaves:!0,birch_leaves:!0,jungle_leaves:!0,acacia_leaves:!0,cherry_leaves:!0,dark_oak_leaves:!0,mangrove_leaves:!0,azalea_leaves:!0,flowering_azalea_leaves:!0,glass:!0,white_bed:!0,orange_bed:!0,magenta_bed:!0,light_blue_bed:!0,yellow_bed:!0,lime_bed:!0,pink_bed:!0,gray_bed:!0,light_gray_bed:!0,cyan_bed:!0,purple_bed:!0,blue_bed:!0,brown_bed:!0,green_bed:!0,red_bed:!0,black_bed:!0,moving_piston:!0,spawner:!0,oak_door:!0,ladder:!0,iron_door:!0,ice:!0,white_stained_glass:!0,orange_stained_glass:!0,magenta_stained_glass:!0,light_blue_stained_glass:!0,yellow_stained_glass:!0,lime_stained_glass:!0,pink_stained_glass:!0,gray_stained_glass:!0,light_gray_stained_glass:!0,cyan_stained_glass:!0,purple_stained_glass:!0,blue_stained_glass:!0,brown_stained_glass:!0,green_stained_glass:!0,red_stained_glass:!0,black_stained_glass:!0,oak_trapdoor:!0,spruce_trapdoor:!0,birch_trapdoor:!0,jungle_trapdoor:!0,acacia_trapdoor:!0,cherry_trapdoor:!0,dark_oak_trapdoor:!0,mangrove_trapdoor:!0,bamboo_trapdoor:!0,iron_bars:!0,chain:!0,glass_pane:!0,lily_pad:!0,brewing_stand:!0,cauldron:!0,dragon_egg:!0,cocoa:!0,beacon:!0,hopper:!0,white_stained_glass_pane:!0,orange_stained_glass_pane:!0,magenta_stained_glass_pane:!0,light_blue_stained_glass_pane:!0,yellow_stained_glass_pane:!0,lime_stained_glass_pane:!0,pink_stained_glass_pane:!0,gray_stained_glass_pane:!0,light_gray_stained_glass_pane:!0,cyan_stained_glass_pane:!0,purple_stained_glass_pane:!0,blue_stained_glass_pane:!0,brown_stained_glass_pane:!0,green_stained_glass_pane:!0,red_stained_glass_pane:!0,black_stained_glass_pane:!0,slime_block:!0,barrier:!0,light:!0,iron_trapdoor:!0,spruce_door:!0,birch_door:!0,jungle_door:!0,acacia_door:!0,cherry_door:!0,dark_oak_door:!0,mangrove_door:!0,bamboo_door:!0,end_rod:!0,chorus_plant:!0,chorus_flower:!0,frosted_ice:!0,turtle_egg:!0,sniffer_egg:!0,sea_pickle:!0,conduit:!0,bamboo:!0,lantern:!0,soul_lantern:!0,campfire:!0,soul_campfire:!0,crimson_trapdoor:!0,warped_trapdoor:!0,crimson_door:!0,warped_door:!0,honey_block:!0,candle:!0,white_candle:!0,orange_candle:!0,magenta_candle:!0,light_blue_candle:!0,yellow_candle:!0,lime_candle:!0,pink_candle:!0,gray_candle:!0,light_gray_candle:!0,cyan_candle:!0,purple_candle:!0,blue_candle:!0,brown_candle:!0,green_candle:!0,red_candle:!0,black_candle:!0,amethyst_cluster:!0,tinted_glass:!0,lightning_rod:!0,pointed_dripstone:!0,azalea:!0,flowering_azalea:!0,frogspawn:!0,decorated_pot:!0},colors:{stone:"rgb(112, 112, 112)",granite:"rgb(151, 109, 77)",polished_granite:"rgb(151, 109, 77)",diorite:"rgb(255, 252, 245)",polished_diorite:"rgb(255, 252, 245)",andesite:"rgb(112, 112, 112)",polished_andesite:"rgb(112, 112, 112)",grass_block:"rgb(127, 178, 56)",dirt:"rgb(151, 109, 77)",coarse_dirt:"rgb(151, 109, 77)",podzol:"rgb(129, 86, 49)",cobblestone:"rgb(112, 112, 112)",oak_planks:"rgb(143, 119, 72)",spruce_planks:"rgb(129, 86, 49)",birch_planks:"rgb(247, 233, 163)",jungle_planks:"rgb(151, 109, 77)",acacia_planks:"rgb(216, 127, 51)",cherry_planks:"rgb(209, 177, 161)",dark_oak_planks:"rgb(102, 76, 51)",mangrove_planks:"rgb(153, 51, 51)",bamboo_planks:"rgb(229, 229, 51)",bamboo_mosaic:"rgb(229, 229, 51)",oak_sapling:"rgb(0, 124, 0)",spruce_sapling:"rgb(0, 124, 0)",birch_sapling:"rgb(0, 124, 0)",jungle_sapling:"rgb(0, 124, 0)",acacia_sapling:"rgb(0, 124, 0)",cherry_sapling:"rgb(242, 127, 165)",dark_oak_sapling:"rgb(0, 124, 0)",mangrove_propagule:"rgb(0, 124, 0)",bedrock:"rgb(112, 112, 112)",water:"rgb(64, 64, 255)",lava:"rgb(255, 0, 0)",sand:"rgb(247, 233, 163)",suspicious_sand:"rgb(247, 233, 163)",red_sand:"rgb(216, 127, 51)",gravel:"rgb(112, 112, 112)",suspicious_gravel:"rgb(112, 112, 112)",gold_ore:"rgb(112, 112, 112)",deepslate_gold_ore:"rgb(100, 100, 100)",iron_ore:"rgb(112, 112, 112)",deepslate_iron_ore:"rgb(100, 100, 100)",coal_ore:"rgb(112, 112, 112)",deepslate_coal_ore:"rgb(100, 100, 100)",nether_gold_ore:"rgb(112, 2, 0)",mangrove_roots:"rgb(129, 86, 49)",muddy_mangrove_roots:"rgb(129, 86, 49)",oak_wood:"rgb(143, 119, 72)",spruce_wood:"rgb(129, 86, 49)",birch_wood:"rgb(247, 233, 163)",jungle_wood:"rgb(151, 109, 77)",acacia_wood:"rgb(76, 76, 76)",cherry_wood:"rgb(57, 41, 35)",dark_oak_wood:"rgb(102, 76, 51)",mangrove_wood:"rgb(153, 51, 51)",stripped_oak_wood:"rgb(143, 119, 72)",stripped_spruce_wood:"rgb(129, 86, 49)",stripped_birch_wood:"rgb(247, 233, 163)",stripped_jungle_wood:"rgb(151, 109, 77)",stripped_acacia_wood:"rgb(216, 127, 51)",stripped_cherry_wood:"rgb(160, 77, 78)",stripped_dark_oak_wood:"rgb(102, 76, 51)",oak_leaves:"rgb(0, 124, 0)",spruce_leaves:"rgb(0, 124, 0)",birch_leaves:"rgb(0, 124, 0)",jungle_leaves:"rgb(0, 124, 0)",acacia_leaves:"rgb(0, 124, 0)",cherry_leaves:"rgb(242, 127, 165)",dark_oak_leaves:"rgb(0, 124, 0)",mangrove_leaves:"rgb(0, 124, 0)",azalea_leaves:"rgb(0, 124, 0)",flowering_azalea_leaves:"rgb(0, 124, 0)",sponge:"rgb(229, 229, 51)",wet_sponge:"rgb(229, 229, 51)",lapis_ore:"rgb(112, 112, 112)",deepslate_lapis_ore:"rgb(100, 100, 100)",lapis_block:"rgb(74, 128, 255)",dispenser:"rgb(112, 112, 112)",sandstone:"rgb(247, 233, 163)",chiseled_sandstone:"rgb(247, 233, 163)",cut_sandstone:"rgb(247, 233, 163)",note_block:"rgb(143, 119, 72)",sticky_piston:"rgb(112, 112, 112)",cobweb:"rgb(199, 199, 199)",grass:"rgb(0, 124, 0)",fern:"rgb(0, 124, 0)",dead_bush:"rgb(143, 119, 72)",seagrass:"rgb(64, 64, 255)",tall_seagrass:"rgb(64, 64, 255)",piston:"rgb(112, 112, 112)",piston_head:"rgb(112, 112, 112)",white_wool:"rgb(255, 255, 255)",orange_wool:"rgb(216, 127, 51)",magenta_wool:"rgb(178, 76, 216)",light_blue_wool:"rgb(102, 153, 216)",yellow_wool:"rgb(229, 229, 51)",lime_wool:"rgb(127, 204, 25)",pink_wool:"rgb(242, 127, 165)",gray_wool:"rgb(76, 76, 76)",light_gray_wool:"rgb(153, 153, 153)",cyan_wool:"rgb(76, 127, 153)",purple_wool:"rgb(127, 63, 178)",blue_wool:"rgb(51, 76, 178)",brown_wool:"rgb(102, 76, 51)",green_wool:"rgb(102, 127, 51)",red_wool:"rgb(153, 51, 51)",black_wool:"rgb(25, 25, 25)",moving_piston:"rgb(112, 112, 112)",dandelion:"rgb(0, 124, 0)",torchflower:"rgb(0, 124, 0)",poppy:"rgb(0, 124, 0)",blue_orchid:"rgb(0, 124, 0)",allium:"rgb(0, 124, 0)",azure_bluet:"rgb(0, 124, 0)",red_tulip:"rgb(0, 124, 0)",orange_tulip:"rgb(0, 124, 0)",white_tulip:"rgb(0, 124, 0)",pink_tulip:"rgb(0, 124, 0)",oxeye_daisy:"rgb(0, 124, 0)",cornflower:"rgb(0, 124, 0)",wither_rose:"rgb(0, 124, 0)",lily_of_the_valley:"rgb(0, 124, 0)",brown_mushroom:"rgb(102, 76, 51)",red_mushroom:"rgb(153, 51, 51)",gold_block:"rgb(250, 238, 77)",iron_block:"rgb(167, 167, 167)",bricks:"rgb(153, 51, 51)",tnt:"rgb(255, 0, 0)",bookshelf:"rgb(143, 119, 72)",chiseled_bookshelf:"rgb(143, 119, 72)",mossy_cobblestone:"rgb(112, 112, 112)",obsidian:"rgb(25, 25, 25)",fire:"rgb(255, 0, 0)",soul_fire:"rgb(102, 153, 216)",spawner:"rgb(112, 112, 112)",chest:"rgb(143, 119, 72)",diamond_ore:"rgb(112, 112, 112)",deepslate_diamond_ore:"rgb(100, 100, 100)",diamond_block:"rgb(92, 219, 213)",crafting_table:"rgb(143, 119, 72)",wheat:"rgb(0, 124, 0)",farmland:"rgb(151, 109, 77)",furnace:"rgb(112, 112, 112)",oak_sign:"rgb(143, 119, 72)",birch_sign:"rgb(247, 233, 163)",acacia_sign:"rgb(216, 127, 51)",oak_wall_sign:"rgb(143, 119, 72)",birch_wall_sign:"rgb(247, 233, 163)",acacia_wall_sign:"rgb(216, 127, 51)",birch_hanging_sign:"rgb(247, 233, 163)",acacia_hanging_sign:"rgb(216, 127, 51)",cherry_hanging_sign:"rgb(160, 77, 78)",crimson_hanging_sign:"rgb(148, 63, 97)",warped_hanging_sign:"rgb(58, 142, 140)",bamboo_hanging_sign:"rgb(229, 229, 51)",spruce_wall_hanging_sign:"rgb(143, 119, 72)",birch_wall_hanging_sign:"rgb(247, 233, 163)",acacia_wall_hanging_sign:"rgb(216, 127, 51)",cherry_wall_hanging_sign:"rgb(160, 77, 78)",crimson_wall_hanging_sign:"rgb(148, 63, 97)",warped_wall_hanging_sign:"rgb(58, 142, 140)",bamboo_wall_hanging_sign:"rgb(229, 229, 51)",stone_pressure_plate:"rgb(112, 112, 112)",iron_door:"rgb(167, 167, 167)",redstone_ore:"rgb(112, 112, 112)",deepslate_redstone_ore:"rgb(100, 100, 100)",snow:"rgb(255, 255, 255)",ice:"rgb(160, 160, 255)",snow_block:"rgb(255, 255, 255)",cactus:"rgb(0, 124, 0)",clay:"rgb(164, 168, 184)",sugar_cane:"rgb(0, 124, 0)",jukebox:"rgb(151, 109, 77)",pumpkin:"rgb(216, 127, 51)",netherrack:"rgb(112, 2, 0)",soul_sand:"rgb(102, 76, 51)",soul_soil:"rgb(102, 76, 51)",basalt:"rgb(25, 25, 25)",polished_basalt:"rgb(25, 25, 25)",glowstone:"rgb(247, 233, 163)",carved_pumpkin:"rgb(216, 127, 51)",jack_o_lantern:"rgb(216, 127, 51)",oak_trapdoor:"rgb(143, 119, 72)",spruce_trapdoor:"rgb(129, 86, 49)",birch_trapdoor:"rgb(247, 233, 163)",jungle_trapdoor:"rgb(151, 109, 77)",acacia_trapdoor:"rgb(216, 127, 51)",cherry_trapdoor:"rgb(209, 177, 161)",dark_oak_trapdoor:"rgb(102, 76, 51)",mangrove_trapdoor:"rgb(153, 51, 51)",bamboo_trapdoor:"rgb(229, 229, 51)",stone_bricks:"rgb(112, 112, 112)",mossy_stone_bricks:"rgb(112, 112, 112)",cracked_stone_bricks:"rgb(112, 112, 112)",chiseled_stone_bricks:"rgb(112, 112, 112)",mud_bricks:"rgb(135, 107, 98)",infested_stone:"rgb(164, 168, 184)",infested_cobblestone:"rgb(164, 168, 184)",infested_stone_bricks:"rgb(164, 168, 184)",infested_mossy_stone_bricks:"rgb(164, 168, 184)",infested_cracked_stone_bricks:"rgb(164, 168, 184)",infested_chiseled_stone_bricks:"rgb(164, 168, 184)",brown_mushroom_block:"rgb(151, 109, 77)",red_mushroom_block:"rgb(153, 51, 51)",mushroom_stem:"rgb(199, 199, 199)",melon:"rgb(127, 204, 25)",attached_pumpkin_stem:"rgb(0, 124, 0)",attached_melon_stem:"rgb(0, 124, 0)",pumpkin_stem:"rgb(0, 124, 0)",melon_stem:"rgb(0, 124, 0)",vine:"rgb(0, 124, 0)",glow_lichen:"rgb(127, 167, 150)",mycelium:"rgb(127, 63, 178)",lily_pad:"rgb(0, 124, 0)",nether_bricks:"rgb(112, 2, 0)",nether_brick_fence:"rgb(112, 2, 0)",nether_wart:"rgb(153, 51, 51)",enchanting_table:"rgb(153, 51, 51)",brewing_stand:"rgb(167, 167, 167)",cauldron:"rgb(112, 112, 112)",end_portal:"rgb(25, 25, 25)",end_portal_frame:"rgb(102, 127, 51)",end_stone:"rgb(247, 233, 163)",dragon_egg:"rgb(25, 25, 25)",cocoa:"rgb(0, 124, 0)",emerald_ore:"rgb(112, 112, 112)",deepslate_emerald_ore:"rgb(100, 100, 100)",ender_chest:"rgb(112, 112, 112)",emerald_block:"rgb(0, 217, 58)",command_block:"rgb(102, 76, 51)",beacon:"rgb(92, 219, 213)",carrots:"rgb(0, 124, 0)",potatoes:"rgb(0, 124, 0)",anvil:"rgb(167, 167, 167)",chipped_anvil:"rgb(167, 167, 167)",damaged_anvil:"rgb(167, 167, 167)",trapped_chest:"rgb(143, 119, 72)",light_weighted_pressure_plate:"rgb(250, 238, 77)",heavy_weighted_pressure_plate:"rgb(167, 167, 167)",daylight_detector:"rgb(143, 119, 72)",redstone_block:"rgb(255, 0, 0)",nether_quartz_ore:"rgb(112, 2, 0)",hopper:"rgb(112, 112, 112)",quartz_block:"rgb(255, 252, 245)",chiseled_quartz_block:"rgb(255, 252, 245)",quartz_pillar:"rgb(255, 252, 245)",dropper:"rgb(112, 112, 112)",white_terracotta:"rgb(209, 177, 161)",orange_terracotta:"rgb(159, 82, 36)",magenta_terracotta:"rgb(149, 87, 108)",light_blue_terracotta:"rgb(112, 108, 138)",yellow_terracotta:"rgb(186, 133, 36)",lime_terracotta:"rgb(103, 117, 53)",pink_terracotta:"rgb(160, 77, 78)",gray_terracotta:"rgb(57, 41, 35)",light_gray_terracotta:"rgb(135, 107, 98)",cyan_terracotta:"rgb(87, 92, 92)",purple_terracotta:"rgb(122, 73, 88)",blue_terracotta:"rgb(76, 62, 92)",brown_terracotta:"rgb(76, 50, 35)",green_terracotta:"rgb(76, 82, 42)",red_terracotta:"rgb(142, 60, 46)",black_terracotta:"rgb(37, 22, 16)",slime_block:"rgb(127, 178, 56)",iron_trapdoor:"rgb(167, 167, 167)",prismarine:"rgb(76, 127, 153)",prismarine_bricks:"rgb(92, 219, 213)",dark_prismarine:"rgb(92, 219, 213)",prismarine_slab:"rgb(76, 127, 153)",prismarine_brick_slab:"rgb(92, 219, 213)",dark_prismarine_slab:"rgb(92, 219, 213)",sea_lantern:"rgb(255, 252, 245)",hay_block:"rgb(229, 229, 51)",white_carpet:"rgb(255, 255, 255)",orange_carpet:"rgb(216, 127, 51)",magenta_carpet:"rgb(178, 76, 216)",light_blue_carpet:"rgb(102, 153, 216)",yellow_carpet:"rgb(229, 229, 51)",lime_carpet:"rgb(127, 204, 25)",pink_carpet:"rgb(242, 127, 165)",gray_carpet:"rgb(76, 76, 76)",light_gray_carpet:"rgb(153, 153, 153)",cyan_carpet:"rgb(76, 127, 153)",purple_carpet:"rgb(127, 63, 178)",blue_carpet:"rgb(51, 76, 178)",brown_carpet:"rgb(102, 76, 51)",green_carpet:"rgb(102, 127, 51)",red_carpet:"rgb(153, 51, 51)",black_carpet:"rgb(25, 25, 25)",terracotta:"rgb(216, 127, 51)",coal_block:"rgb(25, 25, 25)",packed_ice:"rgb(160, 160, 255)",sunflower:"rgb(0, 124, 0)",lilac:"rgb(0, 124, 0)",rose_bush:"rgb(0, 124, 0)",peony:"rgb(0, 124, 0)",tall_grass:"rgb(0, 124, 0)",large_fern:"rgb(0, 124, 0)",white_banner:"rgb(143, 119, 72)",orange_banner:"rgb(143, 119, 72)",magenta_banner:"rgb(143, 119, 72)",light_blue_banner:"rgb(143, 119, 72)",yellow_banner:"rgb(143, 119, 72)",lime_banner:"rgb(143, 119, 72)",pink_banner:"rgb(143, 119, 72)",gray_banner:"rgb(143, 119, 72)",light_gray_banner:"rgb(143, 119, 72)",cyan_banner:"rgb(143, 119, 72)",purple_banner:"rgb(143, 119, 72)",blue_banner:"rgb(143, 119, 72)",brown_banner:"rgb(143, 119, 72)",green_banner:"rgb(143, 119, 72)",red_banner:"rgb(143, 119, 72)",black_banner:"rgb(143, 119, 72)",white_wall_banner:"rgb(143, 119, 72)",orange_wall_banner:"rgb(143, 119, 72)",magenta_wall_banner:"rgb(143, 119, 72)",light_blue_wall_banner:"rgb(143, 119, 72)",yellow_wall_banner:"rgb(143, 119, 72)",lime_wall_banner:"rgb(143, 119, 72)",pink_wall_banner:"rgb(143, 119, 72)",gray_wall_banner:"rgb(143, 119, 72)",light_gray_wall_banner:"rgb(143, 119, 72)",cyan_wall_banner:"rgb(143, 119, 72)",purple_wall_banner:"rgb(143, 119, 72)",blue_wall_banner:"rgb(143, 119, 72)",brown_wall_banner:"rgb(143, 119, 72)",green_wall_banner:"rgb(143, 119, 72)",red_wall_banner:"rgb(143, 119, 72)",black_wall_banner:"rgb(143, 119, 72)",red_sandstone:"rgb(216, 127, 51)",chiseled_red_sandstone:"rgb(216, 127, 51)",cut_red_sandstone:"rgb(216, 127, 51)",oak_slab:"rgb(143, 119, 72)",spruce_slab:"rgb(129, 86, 49)",birch_slab:"rgb(247, 233, 163)",jungle_slab:"rgb(151, 109, 77)",acacia_slab:"rgb(216, 127, 51)",cherry_slab:"rgb(209, 177, 161)",dark_oak_slab:"rgb(102, 76, 51)",mangrove_slab:"rgb(153, 51, 51)",bamboo_slab:"rgb(229, 229, 51)",bamboo_mosaic_slab:"rgb(229, 229, 51)",stone_slab:"rgb(112, 112, 112)",smooth_stone_slab:"rgb(112, 112, 112)",sandstone_slab:"rgb(247, 233, 163)",cut_sandstone_slab:"rgb(247, 233, 163)",petrified_oak_slab:"rgb(143, 119, 72)",cobblestone_slab:"rgb(112, 112, 112)",brick_slab:"rgb(153, 51, 51)",stone_brick_slab:"rgb(112, 112, 112)",mud_brick_slab:"rgb(135, 107, 98)",nether_brick_slab:"rgb(112, 2, 0)",quartz_slab:"rgb(255, 252, 245)",red_sandstone_slab:"rgb(216, 127, 51)",cut_red_sandstone_slab:"rgb(216, 127, 51)",purpur_slab:"rgb(178, 76, 216)",smooth_stone:"rgb(112, 112, 112)",smooth_sandstone:"rgb(247, 233, 163)",smooth_quartz:"rgb(255, 252, 245)",smooth_red_sandstone:"rgb(216, 127, 51)",chorus_plant:"rgb(127, 63, 178)",chorus_flower:"rgb(127, 63, 178)",purpur_block:"rgb(178, 76, 216)",purpur_pillar:"rgb(178, 76, 216)",end_stone_bricks:"rgb(247, 233, 163)",torchflower_crop:"rgb(0, 124, 0)",pitcher_crop:"rgb(0, 124, 0)",pitcher_plant:"rgb(0, 124, 0)",beetroots:"rgb(0, 124, 0)",dirt_path:"rgb(151, 109, 77)",end_gateway:"rgb(25, 25, 25)",repeating_command_block:"rgb(127, 63, 178)",chain_command_block:"rgb(102, 127, 51)",frosted_ice:"rgb(160, 160, 255)",magma_block:"rgb(112, 2, 0)",nether_wart_block:"rgb(153, 51, 51)",red_nether_bricks:"rgb(112, 2, 0)",bone_block:"rgb(247, 233, 163)",observer:"rgb(112, 112, 112)",kelp:"rgb(64, 64, 255)",kelp_plant:"rgb(64, 64, 255)",dried_kelp_block:"rgb(102, 127, 51)",turtle_egg:"rgb(247, 233, 163)",sniffer_egg:"rgb(153, 51, 51)",dead_tube_coral_block:"rgb(76, 76, 76)",dead_brain_coral_block:"rgb(76, 76, 76)",dead_bubble_coral_block:"rgb(76, 76, 76)",dead_fire_coral_block:"rgb(76, 76, 76)",dead_horn_coral_block:"rgb(76, 76, 76)",tube_coral_block:"rgb(51, 76, 178)",brain_coral_block:"rgb(242, 127, 165)",bubble_coral_block:"rgb(127, 63, 178)",fire_coral_block:"rgb(153, 51, 51)",horn_coral_block:"rgb(229, 229, 51)",dead_tube_coral:"rgb(76, 76, 76)",dead_brain_coral:"rgb(76, 76, 76)",dead_bubble_coral:"rgb(76, 76, 76)",dead_fire_coral:"rgb(76, 76, 76)",dead_horn_coral:"rgb(76, 76, 76)",tube_coral:"rgb(51, 76, 178)",brain_coral:"rgb(242, 127, 165)",bubble_coral:"rgb(127, 63, 178)",fire_coral:"rgb(153, 51, 51)",horn_coral:"rgb(229, 229, 51)",dead_tube_coral_fan:"rgb(76, 76, 76)",dead_brain_coral_fan:"rgb(76, 76, 76)",dead_bubble_coral_fan:"rgb(76, 76, 76)",dead_fire_coral_fan:"rgb(76, 76, 76)",dead_horn_coral_fan:"rgb(76, 76, 76)",tube_coral_fan:"rgb(51, 76, 178)",brain_coral_fan:"rgb(242, 127, 165)",bubble_coral_fan:"rgb(127, 63, 178)",fire_coral_fan:"rgb(153, 51, 51)",horn_coral_fan:"rgb(229, 229, 51)",dead_tube_coral_wall_fan:"rgb(76, 76, 76)",dead_brain_coral_wall_fan:"rgb(76, 76, 76)",dead_bubble_coral_wall_fan:"rgb(76, 76, 76)",dead_fire_coral_wall_fan:"rgb(76, 76, 76)",dead_horn_coral_wall_fan:"rgb(76, 76, 76)",tube_coral_wall_fan:"rgb(51, 76, 178)",brain_coral_wall_fan:"rgb(242, 127, 165)",bubble_coral_wall_fan:"rgb(127, 63, 178)",fire_coral_wall_fan:"rgb(153, 51, 51)",horn_coral_wall_fan:"rgb(229, 229, 51)",sea_pickle:"rgb(102, 127, 51)",blue_ice:"rgb(160, 160, 255)",conduit:"rgb(92, 219, 213)",bamboo_sapling:"rgb(143, 119, 72)",bamboo:"rgb(0, 124, 0)",bubble_column:"rgb(64, 64, 255)",scaffolding:"rgb(247, 233, 163)",loom:"rgb(143, 119, 72)",barrel:"rgb(143, 119, 72)",smoker:"rgb(112, 112, 112)",blast_furnace:"rgb(112, 112, 112)",cartography_table:"rgb(143, 119, 72)",fletching_table:"rgb(143, 119, 72)",grindstone:"rgb(167, 167, 167)",lectern:"rgb(143, 119, 72)",smithing_table:"rgb(143, 119, 72)",stonecutter:"rgb(112, 112, 112)",bell:"rgb(250, 238, 77)",lantern:"rgb(167, 167, 167)",soul_lantern:"rgb(167, 167, 167)",campfire:"rgb(129, 86, 49)",soul_campfire:"rgb(129, 86, 49)",sweet_berry_bush:"rgb(0, 124, 0)",warped_hyphae:"rgb(86, 44, 62)",stripped_warped_hyphae:"rgb(86, 44, 62)",warped_nylium:"rgb(22, 126, 134)",warped_fungus:"rgb(76, 127, 153)",warped_wart_block:"rgb(20, 180, 133)",warped_roots:"rgb(76, 127, 153)",nether_sprouts:"rgb(76, 127, 153)",crimson_hyphae:"rgb(92, 25, 29)",stripped_crimson_hyphae:"rgb(92, 25, 29)",crimson_nylium:"rgb(189, 48, 49)",crimson_fungus:"rgb(112, 2, 0)",shroomlight:"rgb(153, 51, 51)",weeping_vines:"rgb(112, 2, 0)",weeping_vines_plant:"rgb(112, 2, 0)",twisting_vines:"rgb(76, 127, 153)",twisting_vines_plant:"rgb(76, 127, 153)",crimson_roots:"rgb(112, 2, 0)",crimson_planks:"rgb(148, 63, 97)",warped_planks:"rgb(58, 142, 140)",structure_block:"rgb(153, 153, 153)",jigsaw:"rgb(153, 153, 153)",composter:"rgb(143, 119, 72)",target:"rgb(255, 252, 245)",bee_nest:"rgb(229, 229, 51)",beehive:"rgb(143, 119, 72)",honey_block:"rgb(216, 127, 51)",honeycomb_block:"rgb(216, 127, 51)",netherite_block:"rgb(25, 25, 25)",ancient_debris:"rgb(25, 25, 25)",crying_obsidian:"rgb(25, 25, 25)",respawn_anchor:"rgb(25, 25, 25)",lodestone:"rgb(167, 167, 167)",blackstone:"rgb(25, 25, 25)",polished_blackstone_pressure_plate:"rgb(25, 25, 25)",chiseled_nether_bricks:"rgb(112, 2, 0)",cracked_nether_bricks:"rgb(112, 2, 0)",amethyst_block:"rgb(127, 63, 178)",budding_amethyst:"rgb(127, 63, 178)",amethyst_cluster:"rgb(127, 63, 178)",tuff:"rgb(57, 41, 35)",calcite:"rgb(209, 177, 161)",tinted_glass:"rgb(76, 76, 76)",powder_snow:"rgb(255, 255, 255)",sculk_sensor:"rgb(76, 127, 153)",sculk:"rgb(25, 25, 25)",sculk_vein:"rgb(25, 25, 25)",sculk_catalyst:"rgb(25, 25, 25)",sculk_shrieker:"rgb(25, 25, 25)",oxidized_copper:"rgb(22, 126, 134)",weathered_copper:"rgb(58, 142, 140)",exposed_copper:"rgb(135, 107, 98)",copper_block:"rgb(216, 127, 51)",deepslate_copper_ore:"rgb(100, 100, 100)",lightning_rod:"rgb(216, 127, 51)",pointed_dripstone:"rgb(76, 50, 35)",dripstone_block:"rgb(76, 50, 35)",cave_vines:"rgb(0, 124, 0)",cave_vines_plant:"rgb(0, 124, 0)",spore_blossom:"rgb(0, 124, 0)",azalea:"rgb(0, 124, 0)",flowering_azalea:"rgb(0, 124, 0)",moss_carpet:"rgb(102, 127, 51)",pink_petals:"rgb(0, 124, 0)",moss_block:"rgb(102, 127, 51)",big_dripleaf:"rgb(0, 124, 0)",big_dripleaf_stem:"rgb(0, 124, 0)",small_dripleaf:"rgb(0, 124, 0)",hanging_roots:"rgb(151, 109, 77)",rooted_dirt:"rgb(151, 109, 77)",mud:"rgb(87, 92, 92)",deepslate:"rgb(100, 100, 100)",infested_deepslate:"rgb(100, 100, 100)",raw_iron_block:"rgb(216, 175, 147)",raw_copper_block:"rgb(216, 127, 51)",raw_gold_block:"rgb(250, 238, 77)",ochre_froglight:"rgb(247, 233, 163)",verdant_froglight:"rgb(127, 167, 150)",pearlescent_froglight:"rgb(242, 127, 165)",frogspawn:"rgb(64, 64, 255)",reinforced_deepslate:"rgb(100, 100, 100)",decorated_pot:"rgb(142, 60, 46)"},invisibleBlocks:{air:!0,void_air:!0,cave_air:!0,barrier:!0,light:!0,moving_piston:!0},hasSemiTransparentTextuersRegex:{_stained_glass$:!0,_stained_glass_pane$:!0,"^ice$":!0,"^tinted_glass$":!0,"^slime_block$":!0,"^honey_block$":!0}};var kve=new Map,VVe=new Set(["water","flowing_water","lava","flowing_lava","grass","short_grass","tall_grass"]);function zI(i){let e=kve.get(i);if(e)return e;let t=(0,Tve.default)(i),n=(0,Ive.default)(i),r=new Set(Object.keys(VI.noOcclusions)),s=new Set(t.blocksArray.filter(l=>VI.invisibleBlocks[l.name]).map(l=>l.name)),a=0;for(let l of Object.keys(t.blocksByStateId))a=Math.max(a,Number(l));let o=new Uint8Array(a+1);for(let l of Object.keys(t.blocksByStateId)){let c=Number(l);if(!c)continue;let u=n.fromStateId(c,0);u&&(s.has(u.name)||r.has(u.name)||VVe.has(u.name)||u.boundingBox!=="empty"&&(u.transparent&&u.boundingBox!=="block"||!u.shapes||u.shapes.length===0||(o[c]=1)))}return kve.set(i,o),o}function HI(i,e){return i>0&&i<e.length&&e[i]===1}var Py=128,zVe=Py*4,Ry=(i,e,t)=>`${i},${e},${t}`,$a=i=>Math.floor(i/16)*16,Cy=i=>(i%16+16)%16,qI=(i,e,t)=>i+t*16+e*256,HVe=(i,e)=>{let t=e>>>5;return(i[t]&1<<(e&31))!==0},GI=(i,e,t)=>{let n=e>>>5,r=1<<(e&31);t?i[n]|=r:i[n]&=~r},qVe=i=>{for(let e=0;e<Py;e++)if(i[e])return!1;return!0},Ly=class{sections=new Map;Chunk;solidityTable;worldMinY=0;worldMaxY=256;constructor(e){this.Chunk=(0,WI.default)(e),this.solidityTable=zI(e)}setVersion(e){this.Chunk=(0,WI.default)(e),this.solidityTable=zI(e),this.sections.clear()}setWorldBounds(e,t){this.worldMinY===e&&this.worldMaxY===t||(this.worldMinY=e,this.worldMaxY=t,this.sections.clear())}clear(){this.sections.clear()}getAllocatedSectionCount(){return this.sections.size}getAllocatedBytes(){return this.sections.size*zVe}removeColumn(e,t){let n=$a(this.worldMinY);for(let r=n;r<this.worldMaxY;r+=16)this.sections.delete(Ry(e,r,t))}ingestColumn(e,t,n){let r=this.Chunk.fromJson(n),s=new At(0,0,0);for(let a=this.worldMinY;a<this.worldMaxY;a++){s.y=a;let o=$a(a),l=a-o;for(let c=0;c<16;c++){s.z=c;let u=t+c,d=$a(u),f=u-d;for(let v=0;v<16;v++){s.x=v;let g=r.getBlockStateId(s)||0;if(!HI(g,this.solidityTable))continue;let b=e+v,y=$a(b),_=Ry(y,o,d),x=this.sections.get(_);x||(x=new Uint32Array(Py),this.sections.set(_,x)),GI(x,qI(b-y,l,f),!0)}}}}setBlockStateId(e,t,n,r){if(t<this.worldMinY||t>=this.worldMaxY)return;let s=$a(e),a=$a(t),o=$a(n),l=Ry(s,a,o),c=qI(Cy(e),t-a,Cy(n));if(HI(r,this.solidityTable)){let f=this.sections.get(l);f||(f=new Uint32Array(Py),this.sections.set(l,f)),GI(f,c,!0);return}let d=this.sections.get(l);d&&(GI(d,c,!1),qVe(d)&&this.sections.delete(l))}isSolidBlock(e,t,n){if(t<this.worldMinY||t>=this.worldMaxY)return!1;let r=this.sections.get(Ry($a(e),$a(t),$a(n)));return r?HVe(r,qI(Cy(e),t-$a(t),Cy(n))):!1}};function Pv(i,e){return(i%e+e)%e}var jl=class jl{constructor(e,t,n){this.resourcesManager=e;this.displayOptions=t;this.initOptions=n;this.cameraCollisionBlockCache=new Ly(this.displayOptions.version),this.snapshotInitialValues(),this.worldRendererConfig=t.inWorldRenderingConfig,this.playerStateReactive=t.playerStateReactive,this.playerStateUtils=rce(this.playerStateReactive),this.reactiveState=t.rendererState,this.renderUpdateEmitter.on("update",()=>{let a=Object.keys(this.finishedChunks).length;XE("loaded-chunks",`${a}/${this.chunksLength} chunks (${this.lastChunkDistance}/${this.viewDistance})`)}),l4("downloaded-chunks",100,140,20,{className:o4}),this.connect(this.displayOptions.worldView);let r=setInterval(()=>{this.geometryReceiveCountPerSec=Object.values(this.geometryReceiveCount).reduce((a,o)=>a+o,0),this.geometryReceiveCount={},tce(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;lastMesherSkyLight=15;worldSizeParams={minY:0,worldHeight:256};cameraCollisionBlockCache;reactiveDebugParams=_l({stopRendering:!1,chunksRenderAboveOverride:void 0,chunksRenderAboveEnabled:!1,chunksRenderBelowOverride:void 0,chunksRenderBelowEnabled:!1,chunksRenderDistanceOverride:void 0,chunksRenderDistanceEnabled:!1,disableEntities:!1,caveCullingDebug:!1,smartCull:!1});active=!1;loadedChunks={};finishedChunks={};finishedSections={};sectionsWaiting=new Map;queuedChunks=new Set;queuedFunctions=[];renderUpdateEmitter=new W0;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;mesherPoolSnapshot={mesherWorkers:-1,wasmMesher:!1,dedicatedChangeWorker:!1};mesherReconfigureQueue=Promise.resolve();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;valtioUnsubs=[];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()})()]);let e=async()=>{this.active&&await this.updateAssetsData()};uce(this.resourcesManager,"assetsTexturesUpdated",e,this.abortController.signal),this.watchReactivePlayerState(),this.watchReactiveConfig(),this.watchMesherPoolConfig(),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,a]=t.split(",").map(Number);this.setBlockStateId(new At(r,s,a),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}`],a=Q0e(t,s),o=this.blockStateModelInfo.get(a);return{customBlockName:s,modelInfo:o}}getMesherWorkerScript(){return this.worldRendererConfig.wasmMesher?"wasm":"legacy"}createMesherWorker(){let e=this.getMesherWorkerScript();return GVe(t=>{Array.isArray(t)?this.messageQueue.push(...t):this.messageQueue.push(t),this.processMessageQueue("worker")},e==="wasm"?"mesherWasm.js":"mesher.js")}initWorkers(e=this.worldRendererConfig.mesherWorkers){for(let t=0;t<e;t++)this.workers.push(this.createMesherWorker())}syncMesherPoolSnapshot(){this.mesherPoolSnapshot={mesherWorkers:this.worldRendererConfig.mesherWorkers,wasmMesher:this.worldRendererConfig.wasmMesher,dedicatedChangeWorker:this.worldRendererConfig.dedicatedChangeWorker}}watchMesherPoolConfig(){this.syncMesherPoolSnapshot();let e=()=>{let t=this.worldRendererConfig,n=this.mesherPoolSnapshot;t.mesherWorkers===n.mesherWorkers&&t.wasmMesher===n.wasmMesher&&t.dedicatedChangeWorker===n.dedicatedChangeWorker||(this.syncMesherPoolSnapshot(),this.enqueueMesherWorkersReconfigure())};for(let t of["mesherWorkers","wasmMesher","dedicatedChangeWorker"])this.valtioUnsubs.push(this.onReactiveConfigUpdated(t,e,!1))}enqueueMesherWorkersReconfigure(){this.mesherReconfigureQueue=this.mesherReconfigureQueue.then(()=>this.reconfigureMesherWorkers()).catch(e=>{console.error("[Mesher] Failed to reconfigure workers:",e)})}clearMesherPendingState(){this.sectionsWaiting.clear(),this.toWorkerMessagesQueue={},this.queueAwaited=!1,this.messageQueue=[],this.isProcessingQueue=!1;for(let e of this.sectionDirtyTimers.values())clearTimeout(e);this.sectionDirtyTimers.clear(),this.sectionDirtyCount.clear(),this.sectionDirtyPendingArgs.clear(),this.reactiveState.world.mesherWork=!1}terminateAllMesherWorkers(){for(let e of this.workers)e.terminate();this.workers=[]}async bootstrapMesherWorkers(){this.workers.length!==0&&(this.sendMesherMcData(),await this.updateAssetsData(),this.logWorkerWork("# mesher workers bootstrapped"))}async reconfigureMesherWorkers(){this.active&&(this.clearMesherPendingState(),this.terminateAllMesherWorkers(),this.initWorkers(),await this.bootstrapMesherWorkers(),this.active&&await this.requestLoadedChunksReload())}async requestLoadedChunksReload(){try{let e=this.displayOptions.worldView;if(typeof e.reloadLoadedChunks=="function"){await e.reloadLoadedChunks();return}let t=globalThis;typeof t.WorkerGlobalScope<"u"&&globalThis instanceof t.WorkerGlobalScope&&self.postMessage({type:"reloadLoadedChunks"})}catch(e){console.error("[Mesher] Failed to reload chunks after worker reconfigure:",e)}}onReactivePlayerStateUpdated(e,t,n=!0){return n&&t(this.playerStateReactive[e]),Sl(this.playerStateReactive,e,t)}onReactiveConfigUpdated(e,t,n=!0){return n&&t(this.worldRendererConfig[e]),e==="*"?g1(this.worldRendererConfig,t):Sl(this.worldRendererConfig,e,t)}onReactiveDebugUpdated(e,t){t(this.reactiveDebugParams[e]),Sl(this.reactiveDebugParams,e,t)}watchReactivePlayerState(){this.valtioUnsubs.push(this.onReactivePlayerStateUpdated("backgroundColor",e=>{this.changeBackgroundColor(e)})),this.valtioUnsubs.push(this.onReactivePlayerStateUpdated("cardinalLight",e=>{this.changeCardinalLight(e)}))}watchReactiveConfig(){this.valtioUnsubs.push(this.onReactiveConfigUpdated("fetchPlayerSkins",e=>{cce({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 At(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)){console.debug(`sectionFinished for non-outstanding section ${t.key} (viewDistance=${this.viewDistance})`);return}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,a=this.getSectionHeight();for(let o=this.worldMinYRender;o<this.worldSizeParams.worldHeight;o+=a)if(!this.finishedSections[`${n[0]},${o},${n[2]}`]){s=!1;break}if(s){this.finishedChunks[r]=!0;let o=16,l=`${Math.floor(n[0]/o)},${Math.floor(n[2]/o)}`;this.reactiveState.world.chunksLoaded[l]=!0,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 a=typeof t.preTargetConvert=="number"?t.preTargetConvert:0,o=typeof t.preNeighborConvert=="number"?t.preNeighborConvert:0,l=typeof t.preNeighborCount=="number"?t.preNeighborCount:0,c=typeof t.preTypedArrayBuild=="number"?t.preTypedArrayBuild:0,u=typeof t.preOther=="number"?t.preOther:0,d=typeof t.preCacheHits=="number"?t.preCacheHits:0,f=typeof t.preCacheMisses=="number"?t.preCacheMisses:0;if(this.workersPreTargetConvertAverageTime=(this.workersPreTargetConvertAverageTime*(s-1)+a)/s,this.workersPreNeighborConvertAverageTime=(this.workersPreNeighborConvertAverageTime*(s-1)+o)/s,this.workersPreNeighborCountAverage=(this.workersPreNeighborCountAverage*(s-1)+l)/s,this.workersPreTypedArrayBuildAverageTime=(this.workersPreTypedArrayBuildAverageTime*(s-1)+c)/s,this.workersPreOtherAverageTime=(this.workersPreOtherAverageTime*(s-1)+u)/s,this.workersPreCacheHitsTotal+=d,this.workersPreCacheMissesTotal+=f,this.worldRendererConfig.debugWasmPerf&&s%jl.PHASE_PERF_LOG_INTERVAL===0){let v=this.workersPreAverageTime+this.workersWasmAverageTime+this.workersPostAverageTime,g=v>0?this.workersPreAverageTime/v*100:0,b=v>0?this.workersWasmAverageTime/v*100:0,y=v>0?this.workersPostAverageTime/v*100:0,_=this.workersPreAverageTime,x=_>0?this.workersPreTargetConvertAverageTime/_*100:0,w=_>0?this.workersPreNeighborConvertAverageTime/_*100:0,S=_>0?this.workersPreTypedArrayBuildAverageTime/_*100:0,A=_>0?this.workersPreOtherAverageTime/_*100:0,k=this.workersPreNeighborCountAverage,C=k>0?this.workersPreNeighborConvertAverageTime/k:0,I=this.workersPreCacheHitsTotal+this.workersPreCacheMissesTotal,T=I>0?this.workersPreCacheHitsTotal/I*100:0;console.log(`[wasm-mesher perf] n=${s} pre=${this.workersPreAverageTime.toFixed(2)}ms (${g.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 (${x.toFixed(1)}%) pre.neighborConvert=${this.workersPreNeighborConvertAverageTime.toFixed(2)}ms (${w.toFixed(1)}%) [n\u0304=${k.toFixed(2)}, per-nbr=${C.toFixed(2)}ms] pre.typedArrayBuild=${this.workersPreTypedArrayBuildAverageTime.toFixed(2)}ms (${S.toFixed(1)}%) pre.other=${this.workersPreOtherAverageTime.toFixed(2)}ms (${A.toFixed(1)}%) | pre.cache hits=${this.workersPreCacheHitsTotal} misses=${this.workersPreCacheMissesTotal} (${T.toFixed(1)}% hit)`)}}}if(t.type==="blockStateModelInfo")for(let[n,r]of Object.entries(t.info))this.blockStateModelInfo.set(n,r);if(t.type==="heightmap"){let n=new Int16Array(t.heightmap);this.reactiveState.world.heightmaps[t.key]=n}if(t.type==="neighborDataArrived"){let n=this.getSectionHeight();for(let r=this.worldMinYRender;r<this.worldSizeParams.worldHeight;r+=n)this.setSectionDirty(new At(t.x,r,t.z))}}}downloadMesherLog(){let e=document.createElement("a");e.href="data:text/plain;charset=utf-8,"+encodeURIComponent(this.mesherLogger.contents.join(`
|
|
4647
4647
|
`)),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]=K0e(this.viewerChunkPosition),r=16,s=Math.abs(t-Math.floor(e.x/r)),a=Math.abs(n-Math.floor(e.z/r));return[s,a]}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.syncMesherPoolSnapshot(),this.sendMesherMcData()}getMesherConfig(){let e=this.timeOfTheDay,t=e<0||e>24e3?15:Ml(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;WVe(this.workers,this.version,jE,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 Z0e}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.chunksLoadedCount=e.length,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,XE("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}`,a=this.protocolCustomBlocks.get(s);for(let c of this.workers)c.postMessage({type:"chunk",x:e,z:t,chunk:n,customBlockModels:a||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:a?Object.keys(a).length:0})}`),this.mesherLogReader?.chunkReceived(e,t,n.length),this.cameraCollisionBlockCache.ingestColumn(e,t,n);let o=this.getSectionHeight(),l=16;for(let c=this.worldMinYRender;c<this.worldSizeParams.worldHeight;c+=o){let u=new At(e,c,t);this.setSectionDirty(u),this.neighborChunkUpdates&&(!r||this.worldRendererConfig.smoothLighting)&&(this.setSectionDirty(u.offset(-l,0,0)),this.setSectionDirty(u.offset(l,0,0)),this.setSectionDirty(u.offset(0,0,-l)),this.setSectionDirty(u.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,l]of this.sectionDirtyTimers)o.startsWith(`${e},`)&&o.endsWith(`,${t}`)&&(clearTimeout(l),this.sectionDirtyTimers.delete(o),this.sectionDirtyCount.delete(o),this.sectionDirtyPendingArgs.delete(o));for(let o=0;o<this.workers.length;o++)this.toWorkerMessagesQueue[o]??=[],this.toWorkerMessagesQueue[o].push({type:"unloadChunk",x:e,z:t});this.dispatchMessages(),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.worldMinYRender;o<this.worldSizeParams.worldHeight;o+=s){let l=`${e},${o},${t}`,c=this.sectionsWaiting.get(l);c!==void 0&&c>0&&console.debug(`[removeColumn] clearing non-zero sectionsWaiting for ${l}: ${c} (chunk ${e},${t}, viewDistance=${this.viewDistance})`),this.sectionsWaiting.delete(l),delete this.finishedSections[l]}this.highestBlocksByChunks.delete(`${e},${t}`),this.cameraCollisionBlockCache.removeColumn(e,t);let a=`${Math.floor(e/16)},${Math.floor(t/16)}`;delete this.reactiveState.world.heightmaps[a],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 a=Math.floor(e.x/16)*16,o=Math.floor(e.z/16)*16;this.queuedChunks.has(`${a},${o}`)&&await new Promise(l=>{this.queuedFunctions.push(()=>{l()})}),this.loadedChunks[`${a},${o}`],this.setBlockStateIdInner(e,t,n)})()}updateEntity(e,t=!1){}lightUpdate(e,t){}connect(e){let t=e,n=this.abortController.signal;ti(t,"entity",s=>{this.updateEntity(s,!1)},n),ti(t,"entityMoved",s=>{this.updateEntity(s,!0)},n),ti(t,"playerEntity",s=>{this.updatePlayerEntity?.(s)},n);let r=null;ti(t,"loadChunk",({x:s,z:a,chunk:o,worldConfig:l,isLightUpdate:c})=>{this.worldSizeParams=l,this.cameraCollisionBlockCache.setWorldBounds(l.minY,l.worldHeight),this.queuedChunks.add(`${s},${a}`);let u=[s,a,o,c];r||(r={data:[],timeout:setTimeout(()=>{for(let d of r.data)this.queuedChunks.delete(`${d[0]},${d[1]}`),this.addColumn(...d);for(let d of this.queuedFunctions)d();this.queuedFunctions=[],r=null},this.worldRendererConfig.addChunksBatchWaitTime)}),r.data.push(u)},n),ti(t,"blockEntities",s=>{this.blockEntities=s},n),ti(t,"unloadChunk",({x:s,z:a})=>{this.removeColumn(s,a)},n),ti(t,"blockUpdate",({pos:s,stateId:a})=>{this.setBlockStateId(new At(s.x,s.y,s.z),a)},n),ti(t,"chunkPosUpdate",({pos:s})=>{this.updateViewerPosition(s)},n),ti(t,"end",()=>{this.worldStop?.()},n),ti(t,"renderDistance",s=>{this.viewDistance=s,this.chunksLength=s===0?1:P3(s).length,this.allChunksFinished=Object.keys(this.finishedChunks).length===this.chunksLength,this.onRenderDistanceChanged?.(s)},n),ti(t,"markAsLoaded",({x:s,z:a})=>{this.markAsLoaded(s,a)},n),ti(t,"updateLight",({pos:s})=>{this.lightUpdate(s.x,s.z)},n),ti(t,"onWorldSwitch",()=>{this.cameraCollisionBlockCache.clear();for(let s of this.onWorldSwitched)try{s()}catch(a){setTimeout(()=>{throw console.log("[Renderer Backend] Error in onWorldSwitched:"),a},0)}},n),ti(t,"time",s=>{if(!this.worldRendererConfig.dayCycle)return;this.timeUpdated?.(s),this.timeOfTheDay=s;let a=s<0||s>24e3?15:Ml(s);this.lastMesherSkyLight!==a&&(this.lastMesherSkyLight=a,this.workers.length>0&&this.sendWorkers({config:{skyLight:a}}),this.onDayCycleSkyLightChanged?.(a))},n),ti(t,"biomeUpdate",({biome:s})=>{this.biomeUpdated?.(s)},n),ti(t,"biomeReset",()=>{this.biomeReset?.()},n)}setBlockStateIdInner(e,t,n=!0){let s=`${Math.floor(e.x/16)*16},${Math.floor(e.z/16)*16}`,a=`${e.x},${e.y},${e.z}`,o=this.protocolCustomBlocks.get(s)||{};for(let l of this.workers)l.postMessage({type:"blockUpdate",pos:e,stateId:t,customBlockModels:o});if(this.anyModuleRequiresHeightmap()){let l=Math.floor(e.x/16)*16,c=Math.floor(e.z/16)*16,u=`${l},${c}`;if(!this.worldRendererConfig.wasmMesher){let d=this.heightmapDebounceTimers.get(u);d&&clearTimeout(d),this.heightmapDebounceTimers.set(u,setTimeout(()=>{this.heightmapDebounceTimers.delete(u),this.workers[0]?.postMessage({type:"getHeightmap",x:l,z:c})},100))}}if(this.logWorkerWork(`-> blockUpdate ${JSON.stringify({pos:e,stateId:t,customBlockModels:o})}`),t!==void 0&&this.cameraCollisionBlockCache.setBlockStateId(e.x,e.y,e.z,t),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 Pv(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]){let c=this.workers.length-1;return Pv(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),c)}return this.workers.length-1}let a=this.workers.length-1;return Pv(Math.floor(e.x/16)+Math.floor(e.y/r)+Math.floor(e.z/16),a)}if(this.worldRendererConfig.wasmMesher)return Pv(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]))return 0}return Pv(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,a=this.getSectionHeight(),o=`${Math.floor(e.x/s)*s},${Math.floor(e.y/a)*a},${Math.floor(e.z/s)*s}`,l=(this.sectionDirtyCount.get(o)??0)+1;this.sectionDirtyCount.set(o,l),l<=jl.GEOMETRY_THROTTLE_THRESHOLD?(this._dispatchDirtyImmediate(e,t,n),this.sectionDirtyTimers.has(o)||this.sectionDirtyTimers.set(o,setTimeout(()=>{let c=this.sectionDirtyPendingArgs.get(o);this.sectionDirtyCount.delete(o),this.sectionDirtyTimers.delete(o),this.sectionDirtyPendingArgs.delete(o),c&&this._dispatchDirtyImmediate(c.pos,c.value,c.useChangeWorker)},jl.GEOMETRY_THROTTLE_DELAY))):(this.sectionDirtyPendingArgs.set(o,{pos:e,value:t,useChangeWorker:n}),this.sectionDirtyTimers.has(o)||this.sectionDirtyTimers.set(o,setTimeout(()=>{let c=this.sectionDirtyPendingArgs.get(o);this.sectionDirtyCount.delete(o),this.sectionDirtyTimers.delete(o),this.sectionDirtyPendingArgs.delete(o),c&&this._dispatchDirtyImmediate(c.pos,c.value,c.useChangeWorker)},jl.GEOMETRY_THROTTLE_DELAY)))}_dispatchDirtyImmediate(e,t,n){this.reactiveState.world.mesherWork=!0;let r=16,s=this.getSectionHeight(),a=`${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 o=this.getWorkerNumber(e,n&&(this.mesherLogger.active||this.worldRendererConfig.dedicatedChangeWorker));this.sectionsWaiting.set(a,(this.sectionsWaiting.get(a)??0)+1),this.forceCallFromMesherReplayer?this.workers[o].postMessage({type:"dirty",x:e.x,y:e.y,z:e.z,value:t,config:this.getMesherConfig()}):(this.toWorkerMessagesQueue[o]??=[],this.toWorkerMessagesQueue[o].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 a=()=>{this.loadedChunks[s]&&(this.renderUpdateEmitter.removeListener("update",a),t())};this.renderUpdateEmitter.on("update",a)})}destroy(){for(let e of this.valtioUnsubs)e();this.valtioUnsubs=[];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(),nce()}};Hn(jl,"PHASE_PERF_LOG_INTERVAL",64),Hn(jl,"GEOMETRY_THROTTLE_THRESHOLD",1),Hn(jl,"GEOMETRY_THROTTLE_DELAY",100);var By=jl,GVe=(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},Rve=!1,WVe=(i,e,t=jE,n)=>{let r={version:JSON.parse(JSON.stringify(n.version))};for(let[s,a]of Object.entries(t))r[s]=n[a];"tints"in t&&!r.tints&&!Rve&&(Rve=!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})};d4();h();p();m();Lt();h();p();m();function Oy(i,e){let t=e/180*Math.PI,n=Math.cos(t),r=Math.sin(t),s={x:0,y:1,z:2}[i],a=(s+1)%3,o=(s+2)%3,l=[[0,0,0],[0,0,0],[0,0,0]];return l[s][s]=1,l[a][a]=n,l[a][o]=-r,l[o][a]=+r,l[o][o]=n,l}function jI(i,e){return e?[i[0]+e[0],i[1]+e[1],i[2]+e[2]]:i}function Dy(i,e){return e?[i[0]-e[0],i[1]-e[1],i[2]-e[2]]:i}function Md(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 $I(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],a=i[0][1],o=i[1][1],l=i[2][1],c=i[0][2],u=i[1][2],d=i[2][2],f=e[0][0],v=e[1][0],g=e[2][0],b=e[0][1],y=e[1][1],_=e[2][1],x=e[0][2],w=e[1][2],S=e[2][2];return t[0][0]=n*f+r*b+s*x,t[1][0]=n*v+r*y+s*w,t[2][0]=n*g+r*_+s*S,t[0][1]=a*f+o*b+l*x,t[1][1]=a*v+o*y+l*w,t[2][1]=a*g+o*_+l*S,t[0][2]=c*f+u*b+d*x,t[1][2]=c*v+u*y+d*w,t[2][2]=c*g+u*_+d*S,t}function Cve(i){let e=Oy(i.axis,i.angle),t=Dy(i.origin,Md(e,i.origin));if(i.rescale){let n=2-Math.sqrt(2),r=i.angle*Math.PI/180,s=Math.abs(Math.sin(r))*n,a=i.axis==="x"?1:0,o=i.axis==="y"?1:0,l=i.axis==="z"?1:0,c=[[(1-a)*s+1,0,0],[0,(1-o)*s+1,0],[0,0,(1-l)*s+1]];e=$I(e,c),t=Dy(i.origin,Md(e,i.origin))}return{localMatrix:e,localShift:t}}var XI={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 jVe(i,e,t,n,r,s,a,o){let l=new At(0,0,0);for(let c in i.faces){let u=i.faces[c],{corners:d,mask1:f,mask2:v}=XI[c],g=Md(n,XI[c].dir);if(u.cullface&&o[c])continue;let b=i.from[0],y=i.from[1],_=i.from[2],x=i.to[0],w=i.to[1],S=i.to[2],A=u.texture,{u:k}=A,{v:C}=A,{su:I}=A,{sv:T}=A,L=Math.floor(t.positions.length/3),B=[1,1,1];u.tintindex!==void 0&&u.tintindex===0&&(B=[.5686274509803921,.7411764705882353,.34901960784313724]);let U=u.rotation||0,O=Math.cos(U*Math.PI/180),V=-Math.sin(U*Math.PI/180),F=null,J=null;i.rotation&&({localMatrix:F,localShift:J}=Cve(i.rotation));let X=[],ne=1;for(let se of d){let j=[se[0]?x:b,se[1]?w:y,se[2]?S:_];j=jI(Md(F,j),J),j=jI(Md(n,j),r),j=j.map(re=>re/16),t.positions.push(j[0],j[1],j[2]),t.normals.push(...g);let q=(se[3]-.5)*O-(se[4]-.5)*V+.5,z=(se[3]-.5)*V+(se[4]-.5)*O+.5;t.uvs.push(q*I+k,z*T+C);let K=1;e&&(K=4/4*(15/15),X.push(3)),t.colors.push(ne*B[0]*K,ne*B[1]*K,ne*B[2]*K)}e&&X[0]+X[3]>=X[1]+X[2]?t.indices.push(L,L+3,L+2,L,L+1,L+3):t.indices.push(L,L+1,L+2,L+2,L+1,L+3)}}var $Ve=(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[d,f]of i.entries()){let v=f[r[d]]??f[0];if(!v)continue;let g=null,b=null;for(let _ of["x","y","z"])_ in v&&(g?g=$I(g,Oy(_,-(v[_]??0))):g=Oy(_,-(v[_]??0)));g&&(b=[8,8,8],b=Dy(b,Md(g,b)));let y=v.ao??!0;for(let _ of v.elements??[])jVe(_,y,c,g,b,e,t,s)}let u=c.positions.length/3;for(let d=0;d<c.t_positions.length/12;d++)c.indices.push(u,u+1,u+2,u+2,u+1,u+3,u,u+2,u+1,u+2,u+3,u+1),u+=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},XVe=(...i)=>{let t={geometry:$Ve(...i)},n=new dt;return n.setAttribute("position",new Mt(t.geometry.positions,3)),n.setAttribute("normal",new Mt(t.geometry.normals,3)),n.setAttribute("color",new Mt(t.geometry.colors,3)),n.setAttribute("uv",new Mt(t.geometry.uvs,2)),n.setIndex(t.geometry.indices),n.name="block-geometry",n},YI=(i,...e)=>{let t=XVe(...e),n=new Ke(t,i);n.position.set(-.5,-.5,-.5);let r=new bt;return r.add(n),r.rotation.set(0,-Ot.degToRad(90),0,"ZYX"),globalThis.mesh=r,r},Pve=(i,e)=>{i.position.set(e.x+.5,e.y+.5,e.z+.5)};h();p();m();Lt();var Lv=async(i,e)=>{let t;if(!i&&!e){let{canvas:c}=await Ro(is);t=new Nn(c)}else{if(i||(i=await uc(e,"skin")),!i)return;let{canvas:c}=await Ro(i);t=new Nn(c)}t.magFilter=ct,t.minFilter=ct;let n=!1,s=YVe(40,16,n?-2:-3,-2,-2,n?3:4,12,4,64,64),a=new Zr;a.map=t,a.needsUpdate=!0;let o=new Ke(s,a),l=new bt;return l.add(o),l};function YVe(i,e,t,n,r,s,a,o,l,c,u=!1){let d=t/16,f=n/16,v=r/16,g=(t+s)/16,b=(n+a)/16,y=(r+o)/16;u&&([d,g]=[g,d]);let _=[[d,f,v],[g,f,v],[g,b,v],[d,b,v],[d,f,y],[g,f,y],[g,b,y],[d,b,y]],x=i,w=i+o,S=i+o+s,A=i+o+s+s,k=i+o+s+o,C=i+o+s+o+s,I=e,T=e+o,L=e+o+a,B=[{vi:[5,4,0,1],uv:[w,I,S,T],n:[0,-1,0]},{vi:[2,3,7,6],uv:[S,T,A,I],n:[0,1,0]},{vi:[0,4,7,3],uv:[x,T,w,L],n:[-1,0,0]},{vi:[1,0,3,2],uv:[w,T,S,L],n:[0,0,-1]},{vi:[5,1,2,6],uv:[S,T,k,L],n:[1,0,0]},{vi:[4,5,6,7],uv:[k,T,C,L],n:[0,0,1]}],U=[],O=[],V=[],F=[];for(let X=0;X<B.length;X++){let ne=B[X],se=X*4,[j,q,z,K]=ne.uv,re=[[z/l,1-q/c],[j/l,1-q/c],[j/l,1-K/c],[z/l,1-K/c]],Z=u?[3,2,1,0]:[0,1,2,3],Y=u?-ne.n[0]:ne.n[0];for(let Q=0;Q<4;Q++){let ue=_[ne.vi[Z[Q]]];U.push(ue[0],ue[1],ue[2]),O.push(re[Q][0],re[Q][1]),V.push(Y,ne.n[1],ne.n[2])}F.push(se,se+1,se+2,se,se+2,se+3)}let J=new dt;return J.setAttribute("position",new Je(U,3)),J.setAttribute("uv",new Je(O,2)),J.setAttribute("normal",new Je(V,3)),J.setIndex(F),J}h();p();m();h();p();m();Lt();h();p();m();h();p();m();var Lc=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",a=>a.stopPropagation()),this.domElement.addEventListener("keyup",a=>a.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)}},JI=class extends Lc{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 KI(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 JVe={isPrimitive:!0,match:i=>typeof i=="string",fromHexString:KI,toHexString:KI},Dv={isPrimitive:!0,match:i=>typeof i=="number",fromHexString:i=>parseInt(i.substring(1),16),toHexString:i=>"#"+i.toString(16).padStart(6,0)},KVe={isPrimitive:!1,match:i=>Array.isArray(i),fromHexString(i,e,t=1){let n=Dv.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 Dv.toHexString(r)}},ZVe={isPrimitive:!1,match:i=>Object(i)===i,fromHexString(i,e,t=1){let n=Dv.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 Dv.toHexString(r)}},QVe=[JVe,Dv,KVe,ZVe];function eze(i){return QVe.find(e=>e.match(i))}var ZI=class extends Lc{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=eze(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=KI(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}},Bv=class extends Lc{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}},QI=class extends Lc{constructor(e,t,n,r,s,a){super(e,t,n,"number"),this._initInput(),this.min(r),this.max(s);let o=a!==void 0;this.step(o?a:this._getImplicitStep(),o),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 x=parseFloat(this.$input.value);isNaN(x)||(this._stepExplicit&&(x=this._snap(x)),this.setValue(this._clamp(x)))},n=x=>{let w=parseFloat(this.$input.value);isNaN(w)||(this._snapClampSetValue(w+x),this.$input.value=this.getValue())},r=x=>{x.key==="Enter"&&this.$input.blur(),x.code==="ArrowUp"&&(x.preventDefault(),n(this._step*this._arrowKeyMultiplier(x))),x.code==="ArrowDown"&&(x.preventDefault(),n(this._step*this._arrowKeyMultiplier(x)*-1))},s=x=>{this._inputFocused&&(x.preventDefault(),n(this._step*this._normalizeMouseWheel(x)))},a=!1,o,l,c,u,d,f=5,v=x=>{o=x.clientX,l=c=x.clientY,a=!0,u=this.getValue(),d=0,window.addEventListener("mousemove",g),window.addEventListener("mouseup",b)},g=x=>{if(a){let w=x.clientX-o,S=x.clientY-l;Math.abs(S)>f?(x.preventDefault(),this.$input.blur(),a=!1,this._setDraggingStyle(!0,"vertical")):Math.abs(w)>f&&b()}if(!a){let w=x.clientY-c;d-=w*this._step*this._arrowKeyMultiplier(x),u+d>this._max?d=this._max-u:u+d<this._min&&(d=this._min-u),this._snapClampSetValue(u+d)}c=x.clientY},b=()=>{this._setDraggingStyle(!1,"vertical"),this._callOnFinishChange(),window.removeEventListener("mousemove",g),window.removeEventListener("mouseup",b)},y=()=>{this._inputFocused=!0},_=()=>{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",_)}_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=(_,x,w,S,A)=>(_-x)/(w-x)*(A-S)+S,t=_=>{let x=this.$slider.getBoundingClientRect(),w=e(_,x.left,x.right,this._min,this._max);this._snapClampSetValue(w)},n=_=>{this._setDraggingStyle(!0),t(_.clientX),window.addEventListener("mousemove",r),window.addEventListener("mouseup",s)},r=_=>{t(_.clientX)},s=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",s)},a=!1,o,l,c=_=>{_.preventDefault(),this._setDraggingStyle(!0),t(_.touches[0].clientX),a=!1},u=_=>{_.touches.length>1||(this._hasScrollBar?(o=_.touches[0].clientX,l=_.touches[0].clientY,a=!0):c(_),window.addEventListener("touchmove",d,{passive:!1}),window.addEventListener("touchend",f))},d=_=>{if(a){let x=_.touches[0].clientX-o,w=_.touches[0].clientY-l;Math.abs(x)>Math.abs(w)?c(_):(window.removeEventListener("touchmove",d),window.removeEventListener("touchend",f))}else _.preventDefault(),t(_.touches[0].clientX)},f=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("touchmove",d),window.removeEventListener("touchend",f)},v=this._callOnFinishChange.bind(this),g=400,b,y=_=>{if(Math.abs(_.deltaX)<Math.abs(_.deltaY)&&this._hasScrollBar)return;_.preventDefault();let w=this._normalizeMouseWheel(_)*this._step;this._snapClampSetValue(this.getValue()+w),this.$input.value=this.getValue(),clearTimeout(b),b=setTimeout(v,g)};this.$slider.addEventListener("mousedown",n),this.$slider.addEventListener("touchstart",u,{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}},eR=class extends Lc{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 a=document.createElement("option");a.innerHTML=s,this.$select.appendChild(a)}),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}},tR=class extends Lc{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}},tze=`.lil-gui {
|
|
4648
4648
|
font-family: var(--font-family);
|
|
4649
4649
|
font-size: var(--font-size);
|
|
@@ -29379,7 +29379,7 @@ f 72/204/51 67/203/51 65/202/51 70/201/51
|
|
|
29379
29379
|
f 71/208/52 72/207/52 70/206/52 69/205/52
|
|
29380
29380
|
f 70/212/53 65/211/53 66/210/53 69/209/53
|
|
29381
29381
|
f 71/216/54 68/215/54 67/214/54 72/213/54`;var mP={allay:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAV1BMVEUAAAA4jNkuh9Ypg9FBnNpCm9r///+c/P+A/P9k+/9N8/hM6f9Q2f8+5eo94PdG0P821+4s1ewiz/8syf8ox/8bxPNNq+wQwf8os+hCnNpCm9oep9s0h8D7j8AOAAAABnRSTlMAoKCg3PODq/XXAAAA60lEQVR42tWP0W7DIAxFb9OtwdA6xQ3rzZL//84BD0nRljzsZdqxZCx8hLio3Lz4GwtYMWLDi4jnPM+vwogNKTTC43Elr6vgRMQ1wvM5ktsbvRPXN38wGxKHMmnI9M65vgxavwsg2WCpCvlSg6iqlCF4ceKbFEGZVC+5NFFXYUtxZzILl1xmiffoxUcA5DUHKULZp6iqsQzU6KNWYcxBUMnp8A2mwWxAhTPR0qRYFs6sDT+zTMZpWj5pO8L0wamexJ9xXvm10J27rrQ94dSdOqC0PSFXPV4JRuwRzIxGHMB38O14j4N9Wf4/vgDzpRGDwkNeQQAAAABJRU5ErkJggg==",axolotl:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAP1BMVEUAAACvsv+zsPmmqv+nn/+GkPXWhCt+iOyBb+d1b/9odutodOyTWuRbb+NlZfS0W0xsV+JpVuNNWc82QZ86AGw+Ir4cAAAAAXRSTlMAQObYZgAAAUdJREFUeNrtk9FugzAMRXG4twFS1jbl/791cbJUQnuAmE2VKk5cKpDukeNA9zeAhP4mwDlgahdAEoDm1dAukIzmlXaB/HBcUGbQJCBkBejgkMrt3j5WeYGD0iAglkXkehVZFlBQ2b0FkKjtE2CjIIYEUfIhESdMCUyWoyBFZPZI+Nks8OUs/f7kXSsLgCxwiRbBl9YRgddazcC5lhnc/T1VFdQObDMIwdJBRQQhYNWBTTCXYzR0AMZIyOy9c373FuQFGXLJLzYFEJQvQSHKgwKwJQAF1BWqIBC6hNlKbAg0GPXyjDHkeqoj6iVAn4DdP/NQhuHxsAr6HroAswB52QUcySTgeGQGg3J8lPY55h7Q9705XQdpEgwaHXVhtHZQX6Whew+X+mfldsn5W3fEYM9fVjfm/pXShd1g38UrdvuIGZycnJy8kW/CDQ5IMRlUUgAAAABJRU5ErkJggg==",blaze:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAJ1BMVEUAAAD//////4T/+Ef/1Sj8shf8lgDReACrdQGLNAFsMQBfAgExDgs044iSAAAAAXRSTlMAQObYZgAAAPdJREFUeNrdzzFuAjEQheH3vNR4xtCkibyQA4CSCyAlfZocIjdKm4sFxAHwGKVmQo21Ts9X//IbE1evBfpBjG9ozXDlJZkKTkAr4IpShNVkMjiJ7wuUkwEJhcAmAzFGNcTJoFisJZph6heJiG7xDLT4XKRC4KiubvSf24kY6hiLnVPMVfE+NhPbo2Y3YVBfPA2/Q3PkchGGx++H4yZvd3GdNrjBr32FeDzPUdN88Mvn7QRHHiSX9SkMwnxYNTdkq7sDlMsLkZHRBEwBGaBpKnQ6GqsVegLIfrDOfOkGI0W7gQTN6JhJQlcYCOm+oJyjHyD+F7jg7v0B5TtIgi1mkx4AAAAASUVORK5CYII=",boat:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABABAMAAAAg+GJMAAAAG1BMVEX///8AAADCbT+6YzetXTKgVjCZUCuPTCqIRyg96zNeAAAAAnRSTlMAAHaTzTgAAAPOSURBVHja7VTLbus2EBX6XOcPimGzL3jG7rbIzChdFjap3GUB65Fl0ZtY/oFr67NLqoljFVDkRXFXOZZnQI/nmOYcnqL4se/7U59xyGGy+qtI+OanHDdWvOLmEkXxnWp1DKZqj43mVB2jakiroH+8EfhZgu8t2BdVC/opWCbKq6hppfbbG8F2juApxqp9RRPDp+G0f112hyF9/9tfxr+wmiF4NvZE6VmNMdyfWoAB3oHRHs4ENrsDgzYChcYc4/3eHhq1YFWOXfr+D3/mrjueIdhHgVgVhMcYu2c1a/dRY473ZwKPGYLh6Df0MzndjvFxeFoDW1glOT4Q2n6/81TcydwOyqHvhqHfH3I6NN3jcBoSDmM6Oq2GUxAqUM5OQTjEIGBhtm28b7Sq2pgnGWJbslWJ/cnP6+C5jGKKlUXvaePrh7axJmjT1ow1r7ns0kZOvpAwt4PSOyFHxBpFtL6vYQIBx6oxq1zZJ4IvVGy2s2NkgEO0ynYcY7yvg2pVNe1zp0lh+RD7/u9EMDvGath3w6k7jOkxH2I/5AMc0/HcJavZMToLEI0rckSrx+GztcGsqncQcHfuWtmskG69c3TriDlaFbvPNUSwEw5V0/bnLtLZMSqiCrOM2wgP+1A2eYSat/G2A8YcgVngChaj5G3kyxSqJ2vbRrBrD+cux7O3cXKd4+/T69z4HZFLj3u5tGvXTwmKuEXGCv0rLn9COELBlfqXSxvlvwS0oYxbGl5xSbDsieS33hP8ypG/cyBP7C/qy54I2TFUsE5xJyrKpVzUlz0RWgsEWiprrQLWUi/qy57Y79Ohp6frcsro2ov6sidSAI8GagJhAURxUV/2RG1ijM/pXcUzLurLnlhgOyeDjGVPzDqYymBSd/owHM+eOKMDAmHlHYknELtJnfvDcIz6jici7FjApQlqQGUtk/qv2RFbfccTEWqooDRkGUxUkHGbCfYyeuK8DrqzDCYqyKC+Hw9x3hMpMNYKmIIFIuBJfdkTsw4eJjKY1Jc9sQBGJbykfoJUX/TEgjw2BHKgjSM/TJDqi55I3rmNzwyUkvPkSQj5gzvv6GbZEzH6ADgK1xCDCtISlhJUbpY9EVFWdVSwxUY4WgDXMQgHrsHxCk9sX+ygzcjpctneLCL7gVhAaRaE2QRQBpeM8TXfOPWDf6VwVsN5GRe6l3VwDYHztElvuJQchgmuIaCEDdFForu3dAUBtpIHBnAevKmkzAJAa6heRTB2ytgBE6juFGBBLSwzXf+zDsaBrwUQiAnALChFwIB+DR28X/4g+CD4ILgW/wAFIWww3uybGQAAAABJRU5ErkJggg==",camel:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAATlBMVEUAAAD8w2n1ul3prUrbnz3xi1ywmYjLkzfrdTmoilu4gieqg0Scf1DaZiyMcEV/b2OnTiFtX0h3XTNfUj5VSENfSCN/ORlJPzBRIQwvKBwTHWK4AAAAAXRSTlMAQObYZgAACApJREFUeNrtmItiqzYMho2kE7VeKbRJGX3/F110sQ0xlNC0y85Z/6aJLwJ92EYWhBC6U4iil5fjy0uYCppGPmEiRIyRtSBFkVVYC66maQCbs8JH+iuYDgngeDxuAwAwovQhInA0GpAazwAauBbgcAgGcBTNAUBOBLPrB0A+awrAaADMMwDYAkjmXQb4+wIAFQDDkgAQHKCWHnYNgGsdABpYBXgCYI58K0BUMRMicTRlAAQAXAbAx8dHfGLmpxUAaK4D4OwfkLkCwBpAqZ6ezgBPT1Iu/fsXoQOwAAAgOYH6yLeZFKQOJut8fX17ent9XQcAhD0ARAhYAAQH3t7ftfb+/gZClwHwTZgeXx8RpfxpgOcCQITqQ1YBJ4DJCCQAdIDz9aukgPjZNWBBJ68AI5DpiIEIVFEEKmEUFAyAKCswf8PyGsAtgBeLu+5fgG0VEHEQbwXA2QhFFNbUFBkANHMB6HVlgGMGkHa3YDIAZUKKMZIUzL+OwToAFE+N/+UmrQBOASTurgGgE5Ao+Qe7F8KaAJNrkTlzlLME3ucwE4QMgJCngIg5gBO4Y/sxrQMgpqtEQkLU7wwiVflUQ8h2E6iIWKRxAI1A/8mmAUQY1qReHbdIWmDWWgGwDjupSVQFVIfyXQq4FBdXMok9Nub+LPk2AA4I6ZILCC7dBSuZxB4b88zEImIDELcZIJWJkJAqgKVMYo+N+0ciGwsFmM5ALhLLnwJsbeQ7bAyAAIGYMgAnAiz+mVj11QDqH4EsCjrAljYziWJj3RyLagAktI8RMIUtbWQSRZHZt9lVAGZxTc+EhEZA2wBLmQQvAcy7DbkGiM9Hfubjc0S3C5uqMwmRpjIi9Hs7+AAROYAQ14P0fDw+H+XrYiAbFTBYQc/pIqLLTEIVfBNSC+JQ+tVadX2sUvcKAAbARUQXmYRfMjg0s1bNf14FeuD1sUq2J2iQUH8b4qnoMpMg8RIaE5OIA3m3E7AYXR+rfGdH39fTNfjv5UaOZxUAJhuB1A0GIEbboaIApG1U3bh/MoIagAjnI7AEQLQHAETEBCIFiHJmKyxlEgVANJkCQAMQo+tjlR+ZvHjcIbddzCTyIiRi4ckGnnCL0YeximcAlkawpRWN+08El5mENTqAj1SIeiw5tk3iZqwqAN7MYuMAZQSWMwmPAzGyAzAno+VoWcWq2RSgYzFj0/gApDNVmYSYCTSILZtN7k0cXAPMY5V8pgBGpABGkgGqTIItnRWB+YuBrBOdwGxmmscq8zGZAo4mRmjm/mOVSVhCb4rmTwDIbdhBLwDqWGWMDhCTHIBUalllEjOAyOs2M1WhQk1qgPouWM4kygjYFPDEhsxmH8D6CCxmEtMRiGs2M63HqnoNlEUgzcuZBJp0KtdsZlqPVfVd4P6dYDmTQJPBrtjMNI9VVSByaPYRyABmVCsDmMK2qlhVRULzawCRZkbogvwE0yBKgeQ3Nc9VAUxiVQ3gCbcGy2ozcgDKTzBi5G8TGqloq1mU73ChKlaJlwwAYHcOAfgUuOYAVN4IEBIgkdZUVACkWAOUWFUBgG2HbJsh1GtAz5sB0F9pIBFpbQ7gPVc/GdUJSfJfRiCfFwHBLpKJDZkQtZUEUcTWVwOsxyqwlIwtJQOOsQxAAdA29a5dFEk5jcHaDICjnfv6JyN7s4SMoIk5c0kIHIAFwNeQHipOSBxZFcVWARij7bY1wHqsUv+AhKAEpH3qRWTH6hVb3GPx7GKeNiMjl8fXfU9GnhVL0c5WQvEXyV+q6o8WSoMWbQq0XDq1Vo5LQv/dCeDnqAWz54LKJru/GcCvL6uUPVsldD+1XTm4AEDYI7DrnF0hpjKQrzzKLTgbIRsbx4MI+wHyO8lyJSAVL4p/JQD3KJ354ss7TDsuWh/uBGgAmTC/1wWgNOeAFE2EkNYEJTutMEKzC2BcADACBPRNldK6xwkApnuCiqH5NwABjwSwBTDUAHIK9sQIPLpaK6ImSfKFmJ9Bix0xa6t2ap8W9gHYhHuMRf2j6GsCiSPbh9DnPLqVZyZgrQAOJwUK6+pXXrJH4pxykzqBRgGSCHWWtS9bMkWwPduWMpMVkrP24eGh7YfhQwDf6/NG6/Eb9cxS1T9m5UTpy3Zi6f49qfWJrC67d79tGyrZLehZrCgngQAYI6f9V+v5CTbb6wSopO5coVb7IAr/ltqhFw1t+D7p/I6iUGsYx2GQr3A/Cdmt8on73DgO/RDuqr7t/1yAdq3WnSqAr/dSolldO5xuXgPbXsqOWtcOh677srtgWK2N7sTVjaXYnU5fEwfavu+G3gdRCl3ft63GnrYagTtEwjVqL/SC+uvXL8Gt274PSgfMh6w19Uttfy7AMPbmYRyG3jQstX3n9jOI9Ne11BZ+9KMf/eh30tj37XkLa/t+vBdAa7oXwJABhh+A/yVAOw69J3L9MPbjXGFRnrkmm9t0dpnTmHFsLxKNsKgzrxCb5a0AYXKGuzzq3x+gHwpL/wPwA/AD8F+OA22/0fW7ArTTveCjzait6KquT6mf7oYfbUb9sLGMvjsfuD/AuNH13QDDuNF1f4D7Pxd0J1F3pycjf4vbHQ4b8aKqjEPvMzDus9zWNoCfd7C3bTst9wMMVWWv5e37Xl3ZtvxjAA790FWn3WN5O8DYySry17ujlK0STKk+mqUbjl/22qAbxlM57eTNbnKQ62JZUL3/9kDUnfur8LnD8vZANI5V/L7J0r12G4XqtFXFtd/Sx32j8N0Ap9N24R/eOq3aGiGdPwAAAABJRU5ErkJggg==",cat:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAMAAACVQ462AAAATlBMVEXv9O3r8Oj72bPW1sz71Wf2ymD1yF7ywFnxv1jvt1Pqq0uvdh57bWJjSy9KMBc6Kh0RDxgAAADq6urOzs6vr7C+c3NanRJWU18kJDEcGCdfq47cAAAAEnRSTlMAAAAAAAAAAAAAAAAAAAAAAACVcz0/AAABUUlEQVR42t3T3VrCMAyA4Yi1SmtlSxSS+79Rkz6R0dEywTO/0rPyPst+IFhiMSJyAW+amJBFA08EEWBeBQtQ/1BKuRuY5yAusACo4ABSBUpFxbsCPkJKDgiLgAktANYYOFhyDlxQgFCFbUA6VaGg9lsAj3LExmBCi1i8MdDNBWJ5GBDmFmBhFuE7ANQWgInVY+q8B8wh58w8gy2rBxASIRJ2gVwBOOf3oAFQ6wL1kP0QeQU0AhRdIb5eAe+15V1vAWqB/X4E2PgrADtA3O/XgJ3WTSDeCJi8zcc4eAo+QroBsC7hC4AMOAspxGQNAUZdTDwAtkdAQrTdALQAMYX4FkIYA1VwoNZ+CynqCLeuIOSkAYyAqRZjFyDNAe8FytIOLuoCNv3hkLPtkP3k8xNc1RthZ6YiPwAMmmoAHUC028DGCKevkwg8DnxafwDmO/uHwDebkIAap1EwrQAAAABJRU5ErkJggg==",chicken:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAALVBMVEUAAAD////i4uL85XDT09PhzGLGxsbgu2nTrlrQqT/Bk0OWcjRjVkH/AAAAAADtfCsnAAAAAXRSTlMAQObYZgAAAO9JREFUeNrtzMFJxFAQxvFZrGAewaMwwxQg2IA7fMzZElQecxZswHZc7CAd2MM72IlJVoXEbATP+7998OMj2kmHW6LXQ9/T0AUt25UuB/D+dgQ317+AXLZ7OgxN4vmJ5vGxforGXhbgSj9ElFqjrxYXomN+GriqmqG1H3E3B7DmQN0A0Wpk0laqKlw2gKv9AdycbRNE1dgA1SOy0hTWQCIrgqaUlnGBqkLY4aeAq0FYfT/OFRBQVGERWQddAKh7ZuFVUCwqorow8166jgVzoBaZWV2FRZS5iM2BYwKwBzEfjJSYg/zOIx7hDk86948+AcUmS5dD8ZFCAAAAAElFTkSuQmCC",cod:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAJFBMVEX///8AAADr2sPWxa3KtJXCqIW2lmusiVmScVqEZVEiHyYAAAB2QJV6AAAAAnRSTlMAAHaTzTgAAACbSURBVHja7coxCsJAEIXh5w18RSRiZQT7sAS8Rgyz2kbYIN5CiDBbx8CewHM6QS3sLf1hivl4yMc626+ZCgKQzENVF6eSsaCVkRCRfCiZhFYwcM4t+13SqFdOwS6/Vw+5HA3qFyz7beOqriX9ezFsKmlcySn4lFKMMQiJGYWwR9VQyTnGmggh3M7eeyGBQ0u4TwZkR/C7P/weVk/OOkCzBdD8ogAAAABJRU5ErkJggg==",creeper:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAK2klEQVR42tWZ61NU5/3And+L3zTNdDpT08Q0NiamOtFG8cJlQa4uy22vsCzLLrssgtw0KooIMcaqFFFRXOSiQjA11lwIVRF1QRBW7gIuy9H1pLgpM9SZ/hmf7j4zzXT6Jn1jkTPzzNlzec6e7+f53s+yn9piOzdzwltJp3SdNrmZW1IHKc5E+ufvUDJhJndYR4/UTa5Pw8ePrWQ1mrjp/5qhhT76JRfLlvoWcXYzceei+EMAws7v06n070R9LpXxF0NktKSjuR1L7/wtSr3ZHBgsYNDfi8Gp5Za3gw7/1aUPIHkwjLSxKAytGg5KBZT1FOD3+/nkWTH75uwMzQ0w9sJNXk86X/nbyT5lpuqvhWSPJnFL/mrpAyh6bMI+osPUmEnetA7bPS0j824OeXdS6DbR4+ui23MDSZKYm5sT+3JvPoYuJU2e00sfQHrfdpTd4bh9A0LVi3stQsiqsV3sdtnF7wOTeZQ/ykeWZbzyY/IeGnDUOrgndy59AHG1CmxuHa1yPabmDF68eEHB5wVitXd2Z9Ev9XJkdhelXTYBQ1+nE5B2XilgcL536QPoePInrnmvsOz6MrT3NUzNj2NxWshx5uBodmB2ZmHo2c7M/BTGJgPWhmwRKfZM5nBwomDpAzD0a9gxYhQAXr/6Os8XvhcAhuUB0j/X4BjWUThnxNRjRD0Ry26fhYzzBg75Cyh/UPjqA1DPxKC/r6Td24RjVI+lJ42cOgtFY1nYh/Rcf/wFy7/9JZruBNrH24Wa1/gP8tn0XrTONEpnzOwbzaPl6VkB6Xe33iWpbjslwxby+4w898/hGDSwtzdPRI978i0+9lnZNW1FU5+2+ICyHqSgP6PjrHSUlBYV2t446qQTJN2PEgnQusa1ATAWElzh7H1UiKYhhTK/ncJ+k4Cx566D5AYl9z33gwDEuC13cGikhPl/PMfRZse90EvpkF1cW92+msrJQgrdWVzw1LL4Kt6ow+fz0em/ykXpnMj24k/GEn8+AMBTTvJoOKsy30KRvZlG+SzmS1m8q1sRPBYrWnilUHj/q1NX2dS1id989zY51VbMrZlIPi+H/1rMoYDArmnXj4CyhtScnq1h73j+4gOonCrih4UfMHuTyXmqpsN/DZd8gxb5LK2yE81UjBA4cCvFMyaSb0eK329FvUGVpzioDQJE/qwRi5TG9/5nYv7oC7fQkE/9JVQMltAr32PFzTf4xdev0/aojdimGJTuMP6vbdnPFhWAozsDkcpOWcXqKFyh2CU16uloqqUjnJZOUOgy0yTXs1L/Br/VvMmw5CblrIpcr4bM7kQhaPXf9lPeJ7RBCH3YU0qLVMdl2UnR7WwkeZY94zmUDxaKOsLQoqPoSebia0DecDoXZScJDbECwPKOX5E3qSX+dhjX59r4s9RK+kWdUPnA7WKsMq2gWDYxKPWxe9gmkh/9ZQ2Vo6UiTzgwvYMDDwuCgor0WFevERlj0YgZe4udPc9zMM4oGZOHFh9AbJOCK1Ije6d2EXVRQeaFDOJubqXaW0mDp0ZUdcVXi4Tg/z4c/QbSL2nRtKcKDbjmacXozMDeamP/QD4LCwtMShMMzw1gv2wjsS6Bsgc7xPlPPKWYXSkBGDYWXwMmdUEBRIJz1ddMu9yMsS+RG95vSGlMEit94m9lwuYbpT8Gzwsz2FYfQcmMGePkdjq912iW64MOVAh9yF3K7LwHq9PKvhk7H89YSW8w0Om/hnu+lz0PczFeNlA1Xfzq5QkZl/W0+xqEEzwmVfG+6h10Bi3bdfEoDKH8ZPXYmIA07xUFkk/2sacvlztyJ9f9X9Ar3eVLbyvai6lBkxCmUDCQyRVvCxVPCnCM6BYfSDAiqM7Fc9RTToOnmhXhb/KB4X00VdtZqfk1PzU/GDojzmyiyXdK+ABbgw31hWTOeY6z85kRw8x2kTdc9jYQcS6MzR3riHVFcdxXRlpf7OIDyD2Zy+GZErJGE0U4eztlOaEV61hr+oBVmrf5qfnbasJIm1BgH1YzK3kplIzYn6gxNOsolI0YHii5LrdRIBkJda1HRJ7eUHIGNDxaGFl8ADMLjyj63sTO/mBr6yve177DyqS3eCN0Oe9pVvxXGmCYiiPTpcITeNa+GRtlQ/kk1Megn44ht19H91xHAHAqb327nJQBFbWzxznmKRcR438ucLCo2ekxYvWoaXhaJ1bkva53yK4145YG+HjQjqYrhpOeCmESyV0Rwjeo7ilI7FaIVpnyYSiq4fDgPSJ9zn6YSlqtikfSGFGHN+NwGfjUWymumbtTRNTR9SuxdxuELyiczRDzj3krhSPdULWWNRnvCT/00gEE/1T7OJbtfwnn/PRJRNX3zWtY2yzMyjNknTeyz72DW/6vWd3+Hkc8VWgbU4WPiOvcjOF4CiFHP+DDPatIP5HGGtNqdrgzyGjS81R+QpgplKQj0XQG5oef28oV2RmYnyaSqdIHVlE3FDxLF6F395kS1ls/JGT/GrRNqQLuSwegcaZSMGIUL7Kx6SNCLm3gnq+LHZKBfRO5jM8PiZfXt2tYdWOlKIxCT29AUb+VyMBQnNmMyqUQqx92KoSPLOuprDuIZTKZ5PEoATTqQhgfFa0XYfCy9zza5lRMLUZszTnoz2pxPDBQefIgIZaPSL+kF5mpfUaDeiLm5QMom3Dw2Q+7eDo/i31Wzac/lOJocbB/No+Do0V4pRmsj1Ip8ZsIrRMtcsJPhwiBoxtCUT0MReOJFoVT5piSbF8qCls4m459yLbbm1D3JbHy9pusav0NIbYNNEunSGxMEN2irM+NZE4mElUTgq3GROa0EtOTJIQZ3n0b2+D/ICzW/r2C8gGRw1Mynv2vUPfjfmruEbl9OvIHM0W1eFE+i84TTfL9SCIDKq19vA3lnQihrmXj+aJrvKM+jy2V61HsD/mxAoy5t4XMaj364ymEVq8npGINH5jfZeOxNWwIqHxNYH6mW0VKb7S4/2df/D9bKta/fACHRoqxNdkEgP8QXuwDQxRE6XeVYvWD3wlSxxSo7oRR7SkXDdOw2hDhwAwXdFhdapHsZLgTOSkd5bWm1/j5n36OqnubmK9siEM7GUuyK1oci/mnN4lnJThjSOmKxdFsI6T2Q2Euy171LbIhTAgfcIoilT4tHSHmeAQR9VuFUOrxSKJrtlBRVyaupbQkkv/AyA3pujCbmEZFsM8gntEr3+XIuU+IyozC2mrmxvy3rz6AkKO/I++4GdWJSNLOxPJZ9RFR5YkGi+xENxVN0QML+2p2EXl0I6b7SSKcJl5IQDsdzw6fnrGFIYzjCcIciqrz6Jr/jpvSN8Fy/NUHYO7WCJtd17saU18SJdUFRBzfgPlJkugFnJKOkuPS0OG9TuSRjYSUrWVPTQlrzKtRnNhA6IH1VJ05yMZAKN1YsVZohmNCg8GTENSqVx/Altu/FwA2XQph273NQq1//+lq1u17H6fvlHBusefFt0VsPTp0dRoRYYyTcaJeUN0JF98RExpjUN6NEB2prEklCbe2cmwpAPjll78QAPJHLWxoWidyg8SuSMrO7KLs5G76JBc5ly3onGrS7kYJh2rxpKC8E0Z8QxTGVl0QlACnu6BG2RxP/M2tXJMuBfsRS6CtPhZNm+wU9noyMAKrJjrK33ivEGLdyOHnxRQ8y0DfrAmGUfElKfNuUgBUGFkziZgmVQzIvaIBUx+A853vS5J6FOI40Rn30gH8ExZbYyyH/1DEAAAAAElFTkSuQmCC",dolphin:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAP1BMVEX///+wwc2In7V8gp1ZV3NXVHBIRWP////D0uO/0Nu9y92wxNmwwc2lutCmuc2dssmSo7qKmrGAhqJrcY4ICR+8V/49AAAAB3RSTlMAAAAAAAAAVWTqWAAAAc1JREFUeNrt1GGPokAMxvFRz9sd2+kz5fb7f9ZrmYECnuDmkn3FL0oaSf8RJaT7iB6Pz8/Hg3J3u91+mzRCITtVIJwNS3JcUzMHSlkErtfr3fQAPQxB8uhVYPAA5xHf3fQNSguU6eSLwJ9hHXBpROTXR5S7F4GcLTBd5ioQP9BuwJF4gWU/wAt2tumBpnQRINoEhGUORIHeDggE0gJlWgLKPHUvLkEEqLUCIhZAVQXsaCoAP2q38yMG1Y8vdcOg7utD9VsBFgNf9zfEcO7eCuTMvdG3bb0X+K3AL3sDzGmlFNpVZskB22xxR9sRENkGUAqA4rDWPoqPk+OngIaKWdVnaVAVo2pDBKotGl+KQhurUa1zQAQjMRHICywCE3/vSrq2h0+/8KnDvC5s95m5D6ntR4BZLpfL+BgRv7WEKKY0Y03d3UWALZ5GlLMAkjPFdBQgskCOQKbl4ThQiEoEQHlEiGkRwItA3OsKalsa07cCg+/51hBTBGQvIIJxTWHUJ0Bk/V8AEXsKpD3M8Ux1ywCI8F5AwJD/CAhUtBUkFYeNMvlXQABVf3kCHgBq1YVagQgcid2N6tIxEWGXZ+ykScdie4En6XQ6nU6n00/7C3s4RNq7Xn9vAAAAAElFTkSuQmCC",ender_dragon:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAdVBMVEUAAADgefqKioqFhYV9fX17e3t2dnZ0dHRwcHBpaWliYmJdXV3MAPpXV1dNTU1LS0tHR0eWALwjIyMiIiIhISEgICAcHBwbGxsaGhoYGBgXFxcWFhYREREQEBAPDw8ODg4NDQ0MDAwLCwsKCgoJCQkICAgDAwM0IucAAAAAAXRSTlMAQObYZgAAEQRJREFUeNrtXYt22ygTdm13JSVxnKa/XQsS+1/U7fs/4goj9AkNFyFF9lqHOWcOFwFWycx8DAzqStHb2/5N5Rjn3Mfh9uH+GAc0rG+YRvZ92+/3zQCMH49HyadjnWfgaz2zt1dt6j4MZcknlT82KVP9rykI46g+jKlx9JhH/WzQBOBdkdYcmoDX11eVK0v5spp52S+72/v6oV71USmIjiPbkL4+ouOU5fC++7e3RqQ5/3U6nTQz3i+T9u0zVz/an3OZmkTac0b7DiDefYfhfZ+f3/bNAJhzLXxG2dPe7Mdc9eAViI7DWL8/GzQB5B0G9f3+/e0VAxiC2Ct72qMt6ddpU5aSf/9Tp9YXhxKRvkMnAL+FvFf493me/yXTmk3B47xftrRHW+7oB3aKIhX4vnINRQH8FvKevvvn3fPzfves0rc96wsi65Y5c7fnui0sP2Xmtt4hJRqKAuTd/X1fX9+enl53T69Pu9c6/xpCAdKetoUAU4YozoUCx0gUkIK8e3veve32V6EOoQBpT9oSAQ5bcqAAVSgw6RsYh3PaN0yc+VFgqNV1oYP/d8F8LAqopRQQB78bohgUAPHSKrTIe/rTcaajgEIZyquhRFAgYMUNy08t8GBLjvZQqDCCjPRHfMT8gmhZw6OtzQIPteSkPeMsqq8UeL3+N/0T7WMcdbvAWroVvkZ4ugLuWMNTxHD5AmEUgBKRvnGW/0RQaRCahASItrcKrdMX8K7hz5+y3fmslAh5WR/qSy1/D5WQJ1ZzGjtQgEWigHz++SnbfZ6hRDIv67197ejDnPm+1WyEBRZTCxKHEnTL2sqr8iAUQL13Aj4+ZJuPMwRY5mV9AEF8/git91hfziPKsPbUgY32BajAc24ohacv8UGQD/sFjBGr7y8zj68AjvcFjn2B56yvFGEE4SyQp+OUPUsbLJe+8iRfAAIPhYJSDEOQkuYpQlELCuZmmYXLHGV3u/Ca3BB4KNsgFHCgD3chFDU+YBbaEXK297YLr+cNgdfLGCgF42wYCtjzzMj7JqAcXSY+RBwKGAIPxPk4y/TjQ+aHoIADlcoACritN6fP3eVwvW+JRVFgOFutvQuhIlCAWnn6PJSnKKLGNPf9+8se9RwCDAe3aav3/Hvv7LT8zIVEAatOygQVSF/aDsx99UABn3JBsPFbkXnfTgyPKMPaU0sbjQ4WX4AHlAt9I/O+nRgWUYa1j/AFOEMf3jkEO/z8+fPw+fmzTj/PMv9TtjMPyGQf9Ee9f/1PEcG3E1OS8jH0fJgvgDZ2Pry/vx8+Pt7r9OMs8+94FmSMH3wfigJEwMaiAicWeIgv8CUnwp73CfsC/jV8EBWmngswhrbmya4qrwaQC4kGnRGUx5CVD6BCOe1cwIoy4NizAIJEwR0hzkO+QBgVgALxvgDHb3KO8azto30BO1qFUCBq7U9QINYX4F1rzsjvk/ZhXyCICBEoAKvqKyNfxvsC2FWSqf8cItoXsL93wBfg5FzAW55yOgwU0P1Jv0koQPNhX4BY+cCOUSQKcCsKYIlDfn8CCnDkZ/cFqNUdfC5Q6rYqlTwWBfA+9N2G7gixoC/gbR+upyig26oU449BgbBvQscM7viwAAqwqBghigIYkyEfiwK+9T9Fq8Bp8CTfgCJCwKqT8caiAP1dZz7mNDiqDOaDT4cZ6TcuLkhxB0lUvlUAKJr/XGC8L0DahX2BMApFRIdGMEEB/9o/phyut59GXwUUB3NN3oYa1v6aL79fvtX08vuCfmELGtr3D5V9J7OE+dTTaEv/E9fvggmIiAnCDg22HM2yFmpSPsWcDmPMSez1Ay6/f9Qz8PLj9wXt4mJq4tlhgX2Rosdmza9OpOXuT9O33g1SYzZl/RtqPFX2IsDl95+Xmv5ABeYnxuN8AXraXPNB5g8HxsOn097fryfgz48ff/5ABeanoC8QRBFZdzgef177hHwRf4ySnABJUIH5KTJSFKEYunz89vKtrCfgndeZkxGfZEMd724QJuB2KhARKQp0gDLU7b69vHxjdVmmsmwokM83wO8DBRTdUgVid4QCvkew7PMDMAE3VIHoc4H6Gay7HVXa/KBIVTjTnQkorZeCZqDoSFEWPC0m7QMogDU+IypALgVNp6mRojTmqM9xkarGCbNHBfb7t/08KFCOOh3WbenSCu08t9ZAxpbqpaXSci9iBhXwRIp6bpOZVp6zv1++XenlbziwQAke9iVaZcIEoJ1xNXQGIrsuodghRnyD/7cTwGzPwyjQKgEmgFmvhs5BFmsfE95wFdx2AkrynJQH+jI3RYH4GCFttS0ogOcnLtsj5UphRvLMKECtvbt+KlPnupeXKcrN786IAlxbc2LZ4QCjfvLveeKDfM9mQ4FYYfwK1OEaLbhCCSgVFFKVgSi7nQMFIFzL5vwvoIBzLQ22L2/6yxXkewrQllEPNhQETBSIXN6x+wLYByQoIC1/w9/z799l2jKx4kGO3P8fOW58jBEmQCpCixby2X632z0rllc9ZaoYiIAdnTDHWfsZxrX7AtgINU+A9b1oxfv6wr9MFQMRYFXjOLzzM8O4dl8AG6GGsrb3op92kl+fnpA3EIFHCGZ05Od4Hnz3mGMj1NiR0uv/mq9Cv9upVNZJJhsakRze+WFjxou/e8yxD0iiQeX6/8r6wr/MNzx5AsL7/5PGDZ8u0wnovkvkXeHx7LLWI1Eg/u5xdxeIRZwqT0WB8K0xNse4nHkmgESDRuzoRHH86XA8D480xQQQFIg/HY7nQIxQNMdHmmICjLV/5I5OPIdjhOZBF88E4Ddxihymuaz1SHSJjzS9tIQ+ZXkrFOCc+erH8/BIU0wA+vDZUSAcEToZXRz1ngnAVyJiUOD+vsD0GCPKYRS4my8wHV3GsedwcwYUwFp+RnRB3FIvL1OUm34zTABQ4Ia+AE6PZblU7ciuFNqGUYHx/6gv4KgfqwSeff15doQmjutEgTn29WGxSaiCbzuzbdf202M0ZYwJwcT4qMNYxju0bQ3hn2Vf/5F4tRQq8jy/Jbtf5F4TkGVZsV5nRbZeb400U7yuy0hlXf1cporrtiiD67p2PFlux1y5KF/dh/Jiu91sY7koxvZzv8j5cp8J2Gw3m2gucvSLYvffObvTBChhjeZsbD+3Ll7uMwNFAQGN4KLYjuvnfhFxPt8PBa4CmteMNM9VCguuhF/mNyhL1v2R5i33FCf3TsDlTihwIw6gQHW5qRLkRVHckakqbPLL+ZYykOcFEVZVhjDX9aYAq7LuhzpDYVR7jKvHqp/pvpuCqsI6u07AzeyAWsJgKRPF6De2P1WFbSEuUgluJQOFtuajUCAvSP+paLDNxVnJwG2EQAuzSuMY/fLR/ekEZGoCbmUJCr1WHyHA8Bmy0f2pESwqqQAt3wAF1JoeKeWu0KKueV6nqp9uo/2DXh2UBfVWFKjU3x88Nwrk92MrCmACuiyyOR1lup8/th1o3CfVgQImVxCWeYhzXGr3neaq57gY4z3kwyV6FUXqaU1RwGRR5Le4bIVQ57HtQKwTJh0Ik6AoQBVgK2aERZxKt1ue4XYq9YZ6tFu07jAJLwqAi21ezWsMGfb/h/y/A1y3DyoV2loVxo8CUIBNLmaeAOz/D/lqNGNBoeb4PwY8n2DxokCrDFmRiZn9A4Ro+4XVvEXmRQFczm8mIBYFKq0AVaEUYzUjDd3v56fP0+nMuEoDKMBlO8QnxaKAAALM5yTHfyHi83j6lNZdpj4UkG0YMz7CG4kCmIB1pvJzWf/eF+RUeiy59W7wx/H0IZ+pNLy0AkeiQNVRgKK65me2/jTlnLY/n36dT1ynY/+HmQEo0KY56mb74gSzp5zR9ufj8fPEdEqe98Mh8OFeogwBFKhaBUDdbF+c6N8Ndlr5o/yHf5yOOqWC3wusM1AAS6IwClTnJs23SgHmUQJ8PxQRpShTK3+6Wn/5TKVkPBKSwTinF2+4BwVyZQTFWaVy61DnZxABXHbvpviiHJkAZf2POiXjkfBqxjgNtmMeFMhEdwKqrFaAJi95FhSAcJKUTICy/keVuifACPMgwXoe9NAWX7QK0HOQ57hrDOG0pNzgX8r6OwPkIPhUGRBs50WBQnSWwUIqgMzPJQP4fqghpCgz8zulR2X9G8FGvSqbH/6iyqDrvCjQnYAq0+UOz+cDQEibMvmwbvn+fn5//zi805giy9VNxCupZ1AwDwps8wp+gCi2hWjy4Bm+OGFYf5SpgB8On4fD+X+H2WKLtptcSPTXCmDdIfpSFIDAQrBRXt2atutMQAGyNSxAl79wAmCpCRrAgb0hba7LnkohQNEoxIXwl/oCuE9A0eD2E4BlDxTAwnPtBDFmpqtb03otJ4AoAOUZfAFYf6SrGxJQwKUAMxyaEetPfIFbEVBAI0C+zYXKO/gLUQDWH+X7oYBWAHJGMIMlcPkAGh3uggJOBai+XhFg9a07QvdCgSrPN9oxBtvl4ct8AaAByndCAYUAPQWoxHkGRMA9gM7llxLpXVDAqgAV8hae6X7CfVBAK0AXAUSFvJUXcFcAKFBk6x4CIO/iL70rsJYp4v91GQFx9rsCTRtLH5nirkAIBVRMTgHhh0Ps5i++K1D062Q8EOoQF4Tn6Icx0Eazjg51nhGokGMshwSEf7YVwT3ignBoxlkPBZQCZLAAs04ABPm2XGK5VfZRYFszwiQG8mj9b4QbAq7TDRXg4vq8fdYKOSJF0V6PSxRL/fu4Wm5Rf2Obb4AA4NmMoD/mX+fRRrMZAm0wqeu1y+VvKuFXitBDASBADE9BgHswCZ6bSMXqYWiWJdclXz0AwQHXwo/8NMf7XGWrhyGOHaiym5/y97+IB1IB1u44cY78pO3Xy1k8hgpgG7YRfuQnbL+qSNLVw1DZuXyP/PjtVxVH9Ego0J4/MI78r5EqoDdLHh4Fjmyk8Csu1quHoc7/VgNFsKFAXvgPwbq+QL5dPQx1LT/jyNvcdGHf+dN14HyzegwCCjQHcMjTlhkOxgIssgdSgXYJBEVwBM5Vg53iqnggFYAjjAs69kM4kefYCveyKB5DBXAY16IA8rSlvCk2cAIeDQUQko38ilJVbYYpQfVQKMAh/MhbD+EuQ5VAPBQKsDYWyVgOWScASrAsFEDgnPejXLgsQ4X+cVEAjjAzlkP2pa5UAuvf/IFRABGprJt3TEC2tiqBiECBx90R6t4Y84ZKVA/qC4R2hJSji8C5LlcPjgLUKXZMwEXYY4Wqx0OB+A/v6ltjuDQDFgQFFkjN39oaMSoeDgUm7PhcQxKEdwLWqyVS5+6wvjgDrggKLI4MK69DJlBHUGBxZH5CZZ1lFVUCoMACqbfU2RZm4Fy1eBQw/975dtPzC8TSUYDs+vRukImFo0DfAaaxQ9WyUYB8Skd9+lB0jd+iUcCy9ZnJIDohMAGLRgG6CySaL74JKMGCUcD2PSlRIIiuKwP5ElHAuv9fNZ8nr4SxHMq2C1QB6xmAqAoVrVlV3fpiszwVcG2BV81HaSvRrdssRgXCEyD0h3AF6rL18lTAfRBWVSqcGbtEoi6vFkbecyDRfM1ZwE9YhAqEJwBwqC6piKa8PBSA1ZepfUmEXaJqcShgGD0hnEuiTS6qhaEAJiAwCXpJVIgFooB9CVSZdZW+pFJVS0MBt/UX5pKouZAiFoYCDutP7w8LfNt/USjgjweqKlGRJdECUMCvANQoYkmk0GABKhAxAdRBXgIKhBXA6yCvFkDYCYxhoRzkVaJEiRIlSpQoUaJEiRIlSpQoUaJEiRIlSpQoUaJEiRIlSpQoUaJEiRIlSpQoUaJEiRIlSpQoUaJEiRIlSpQo0X+M/gVoPrkgKWtroAAAAABJRU5ErkJggg==",enderman:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAABGdBTUEAALGPC/xhBQAAAY5JREFUaN7lWNESgzAI8yv8/z/tXjZPHSShYitb73rXedo1AQJ0WchY17WhudQZ7TS18Qb5AXtY/yUBO8tXIaCRqRNwXlcgwDJgmAALfBUP8AjYEdHnAZUIAGdvPy+CnobJIVw9DVIPEABawuEyyvYx1sMIMP8fAbUO7ukBImZmCCEP2AhglnRip8vio7MIxYEsaVkdeYNjYfbN/BBA1twP9AxpB0qlMwj48gBP5Ji1rXc8nfBImk6A5+KqShNwdTwgKy0xYRzdS4yoY651W8EDRwGVJEDVITGtjiEAaEBq3o4SwGqRVAKsdVYIsAzDCACV6VwCFMBCpqLvgudzQ6CnjL5afmeX4pdE0LIQuYCBzZbQfT4rC6COUQGn9B3MQ28pSIxDSDdNrKdQSZJ7lDurMeZm6iEjKVENh8cQgBowBFK5gEHhsO3xFA/oKXp6vg8RoHaD2QRkiaDnAYcZAcB+E6GTRVAhQCVJyVImKOUiBLW3KL4jzU2POHp64RIQ/ADO6D6Ry1gl9tlN1Xm+AK8s2jHadDijAAAAAElFTkSuQmCC",endermite:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAADR0lEQVRo3u2Y61ITQRCF5wGsEhESCrkloiEhITctQG4xiQQRuRuIKPrH93+Etr8OHQOloPyQbJKu6prNzu5mz+nuMz0bwpWtL+7LVqkl69lzWU5tS3IiJ9NjL+TZ0+cyF89I6LJ66di8+qoZ5mLpkIhnuqfD6KO4+e/stvse1OqFc9EXk1rpSCAD4G1Pysx46hoBq4Vv5mvZZpifzBuYvyXgtvseDHi9qF44k7N4yXwzeyicf1dsaTY0ZDW9K5WlExvVw1buOOg1YS2zF/TeUM03yaDwdun0Gvju47vuezDTP5dq/pMBfZP+YOPyy4bsvv5u55mnJJhTANKzQO5rRBaQ5fmqFBKbUkxWZGXhvUW/VmgaaH5TFmTGXFfd3kzz21K/501T3qKoGWCCSCbUVBNUtKwcOKeiJRNPZiU+MmOORiS6BDKSBADcvHjeIcEBVwqnspE9MgIgBLCTowkjITYyLVNj8zIbW2D+j7Xf80bd4lrvDv6fMyCSte/WKH0xEfMRcXPA1Hwlf3JnBiCKCOLG4kHnOZExIs8L+0gpAN6WR40+vQHgOefNEeBjj6esR/AMWEvvGQn+nChlgC53TfGRqOOoP/2BAlMCdkTB6crwWbZLF7Y6+HWsIlzLvGZA5zlRygB7YR8BbYAU+Eb2wIBxjHMe8FzD0klvwDzHdo0e+3MiQwAR5YV99PpfvVr7iaodZz7K/soP6w+cAL8G4LaXUIL8OZEigKj62O78diy9yQCAA5RmiPTmOgjgHPNEnBaZ+5wAnhMlAtidtZc7dYRONynmCjIoAUEjHzTyJpAInp3XJRPRY2QViKwRsc3cUafOKQGEDWdOI29LG0RBAOA18qb27AsgJNIEmKJfEcCIOwnUsjY7oa+NKLt6m+Jn2moPAZBDc0Oa9zMBmtotaZS/At7qmpRWAsgOAx+pxuY+GWDKXbwwEm7u7yHCxY7a7zv7BbxljupbVuimiBECEDxteoyIvrOd8qUBZROk67+pPEABTjZo+9sBjx70tfnX3tRUOSQnsmHgbCV/aV9t+Vw9M54aPAL4Xk8GaDfYG5+s/1MjZILHqE2Q7ev53Ra/Zuj7PgDxAyhC6B80BqoPGNrQhja0Qbaf/P4PM3XaxMkAAAAASUVORK5CYII=",fox:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAgBAMAAACm+uYvAAAAJ1BMVEWAgIAAAAD59PTn2dPVtp/nj0G0j4PifCHMaSCwUSKOPyRWPzQGBA4kh8LGAAAAAnRSTlMAAHaTzTgAAAGUSURBVHjahdAxb9NAFAfw8wRIDLkFEsSCG4kMHVAzwAiV5W9gXUdA1omugPWOEdpwzxthaP2qLhnrD9ClHaKuvQ/Vv2OnrZuhf1myrJ/+vvdO6YcZ8p/4jdZqoKLB87AchKCQqA9X2+F1HJa3sNuCUv/3ZfRV/q3hMP4E0A8DSABN46knV1prUYm4FJGK/d4KyJgyTfP74FZQZOZvkiSfG2AA86xYwyHg4x0U9AgUtAlDZiYibvN7Mknyb5PJeKxGVQelIPM4RjVG1Ahl7CF41XU9j8e3IG77bfb9yssJYKHXAWCf5kctoIwnArySra3pdLqzI3UD7RwK0f0cTD/cAS7rwL5TK0D5HjzJfmK7TYhedoBPDCsiHfgf4b0LQWvnOE9S9n5WuAaSXazVgO/AFRn1piIuARUTGQNQEtTg2ekyAghAmAz1wXXgjSGAVFwPWU4WOPyXTeyx95R1cAaQhSZyNrWeiIoWShkB5gDObcpEM9qEfAXG9MC50ua2whlmD3ARzu2Ly+vzL5pZjuy+MPvC3QC9wfXEFSoo+QAAAABJRU5ErkJggg==",frog:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEUAAAD9trb/ioq+rWqxnl+mkE9/oFjlXl5zlktjkC6NdEVWgCLMPj5NgDBGaypJax46Whk3VBkxRhRGKiktJi0uHRCwcSzMAAAAAXRSTlMAQObYZgAAAadJREFUeNrFleFShDAMhBEoZ1x1Qz3f/1VtQm9qgVoZf7h0pqWXr2k2M8eQJMBwSSJSvStpow0sUmdgCHMIbEQTIgCo5CMkzNM0zaEBgPf7x0SNUfUBhHmeQwOoiq4zTPOUhk32BF+VomvAlDAPT1jY+LRxXrQlqA638G3lHkKQxFL0i501vxzus2WIyunjfidUYwb8uClU98mr7CyRFGwrh4ecUwABj61Iwlt15zcwSeHjAGgS379fILxTk+I2mt0gCRmyXpNs5qeJZ4BQKQW43ToABITgEgAU4DaOt58Bwp/fAxChlAzj0zj2gOcKGK8Brh6wyBmw6bv9SCMpAybfy408ZPB4UlUpAp/pBAEbBTiqZO7V4Nm1NESU/BFYdsDSBaQCpAvIDpAWUOwnSBDwSSTt2foUICT7SqVPjx3qaeOUsHBTjOoiAdrr0BCEGK5Ilg7wtwwgrEj3ZKXscnM9AFRCBO5JZE0IGc/+xbIpCV53v8eVjQ9K3qdgV1zro8hrtuIKkC3Cr53dPFIqcxG9EjaPTIPb1DGpVmlEaUNHa924dfgHfQFwmyc0LyT5NwAAAABJRU5ErkJggg==",ghast:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAIVBMVEUAAAD////5+fnw8PDl5OTk4uLd2trYzMydmZlzc3NLSkr5ldknAAAAAXRSTlMAQObYZgAAAYdJREFUeNp9ksGN2zAQRdmDO5iBfN95JlWAgeRuAkLOZuRNzgrcQYLdBoJVOoirjCmRYDYy8i//wIc/n+Q4J7gs6YgdJxFRBBNXVQENRE8yZZG187sKkEIGLi/z/HL5D/Blvt3mH+8Ay044ZgBeb3e90QDVCkz94QFgpbGugOmvDPy2vxNYgMPnDFCAloCoLgDXqf9wfJBgKwAfU/+M8S9AGQH9MXzDSskGYJQRgcMEurkmDSCxfSiABtCeegsssuJbQETFTKS6q6r/v/FOl/1wXSrRtQOESDh1F6aeZG12mKBvC6N9Bq6nBtA8xApM5vCJRxpXAAdgEfg6f/80/wS8wggrMCwjbCl33T09Zw+6dqolB5/Yw45p9xRAORMiaB2hQLTRlLSWHNTXBHICwD6Jv0Qg3E3CGTDWLffOJ7B9NFkTRP1ZYbTRkyCaUxiS6TCyaBhNwwgoOQGcMsp+RBRe38CE4axrhxhKAlYqALmEEqIpRA9D+SwTikQpt1n93R5IcTOKi/wBKsTOnkkgxrkAAAAASUVORK5CYII=",goat:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAMFBMVEUAAAD////6+vrw7+zq597b1cLArJCenp6ciHaDg4OFcmF0c3NXV1dNTU1APj40MzImjJ+xAAAAAXRSTlMAQObYZgAAA5JJREFUeNqNk71u7EQUx0eb9YqKZ4jOeFPchjAze4s0rObDQrcy9ngU3QKixDNaueAFaChIFFHQR4IGci2078ADoER5g0g8ANqKHs7YeONsyIqf5HP88fP5j3dt8r+ZAAOokPxVQaDgvc/J9Q8bgsQ24oCnlFehfVWYUMrAuT0CMAZVE8JpCFer8O1HfRtFCKVUFdbeVRVuZ7O+jSfQOGEdqkrHKwm2XQHAhRYFaYzOk76Nn0Kg0GCEBW2O8lnfxk8hMCK0rjJSSrNM+razBtc0vtAppOnhpG9PQlJFmjbYAiTY5bRvO4IL+BS1qWqXJ33bFVzjv7z//f5h88fHfXsREXxOxuwKIbhd4YDSyiDaDpQUAXb4TNAaBdxiQQGQ4+H5U7CZ1kbXeL0rRQqAznZCFDDC1tZWOpbzFCPE0wQKtdHZ5/H277pSUEjnczYIBxSsMVGwUbBRoGNhmrLaZeZdVdf2g4mlECk9eiuXg7Dg/tQZ8+Gytu+rWC4WgtIL9SRIu3KZD5d1cFkshRGpkmqISLLitlmFq6v2arXKYvk5M9qWehBmzrbfN6v21za2WG5xSbW3+fN3nkrgez9Myrgkw9DQ/c3h681WONCCA+wRJlQoyvcJAJwPE3zmry79zIbTlcuHCEbVdpE2tb62iTSZM8ttBJdCkZ4UZG3lRKZHRh+OItgQYebSGj0t7Fzb5RAhmIRBcM464xPvTf20BsqVGtbw5/2P95vN8NoPEamiQP4TCsAAIMUe97oXmo/d7rQCzijITq2QYiSkwAAFilWim9LT6+vrchwRBd7BUKAvBQZM/itIBhyi8CyCoUGV4lwA7okXE1IZ71NKCRFn6fnuBCrRUFpbISSTUnUTKoA363Uv8KKUkluFApOqKBcVMhbUpCykKpVdCCnL4sAQJKF8K9hJXZbleSEW87K059OcRIQ+GYR8mkxre14sjua2TqakF7R+txVwYELK6fz4GDseJwhRNApbEjIlx8tlMhwlREIU9sDYyX4B2Jsd4eGGjPnk79eF7v1N/+oaQnpuvrm5ITPnvD9be8Uov+DATXMLKem5++nujiSZ83W+/oqDMJVm9LP3t1yMJySLrC5z/wUHjjD6aeX5gvQ8/vb4SMjbk18u4mdhBLLQzjmddZ9dTvBTuCekyZOWtHi+MsY4pLWOEGqEJJuHzYaQszyZkbZFpaNt16EhhLuFIhuEoDF78ZP9A0Obf2KBegjhAAAAAElFTkSuQmCC",guardian:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAhFBMVEX///+rjEZQjnQtWUcAAADX1c/Y1cvX1czX1MzX08vW083X08rW08vX0snW0snV0crAuq7Auq3Auaq+ua3dkET/gi+DpZy5k2Syk0/wdyjecipqlYPsZCqFhmBmiYDLZSNdf3XeSSh4dVCmXCxOeWbUQSDKPBxBcVpkW1BgVko5ZVJ5CxKoxgN0AAAABXRSTlMAAAAAAMJrBrEAAAOASURBVHjapZaJcttIDAW5lvfIHtnLYiLDee4kzwsL+///F45I66AkW467akSoIHRhhjOkuq5bLper4fL/wHAhiscBItiMIYSgm+j76GOga1xdXXWD4PNy2epHQ9q1HrAz0+mneCswfeB+K/i8Wi6HsZoEA4vFojtP4E1vO8GmvvWw5QUBEd4TrFabBj53F9LbEfZOcLt8WN2ubi8WTEu7J1g9DPUPt5cLPBM83N3e3g2C6+tu4PqYmaCPxk5w99/9XRsvCaLR9+G0Y8ID3f3916/DuO8azwmMgTA4WuQWp7uvEy8KYFObOQpsR4K7S4kJ7Izod1MYaSvwetoivk2wWAyCGR4PUNmZbawHnOWLBTQeqxgZj3PBWQEHbhPRD2TfrlNuOqCmPQs2I6M/I0hCAleAgtwKNrmeMhIux1lBLwklknpy1l0rbfXinMD0SEDTxDwXLlVt2tubwrrbY02fNZFxlEMoKpB2gsfDHz2G/fev735+/6/NcU6yC0lxVtDbv7z78aff39s6EiRylRFxdgoB//z25x/v/kKa5ygD0T778/tAYMCS5rmKsoTKz9wFYRc4kee3OBU0byJtBZr9SFkViAqsnG8yQGpDz0whWqmi0DynPU4eJmy6xUDLffz06UueP+xnBMkueXPz4UvW9ws+thZEveaBkmV2325ubj59gXqFgPV6r4OhhQ9DD4cCIZ0XPK7Xj/MO8lDgFwWzNcjZDBC6cArddBcOkcyld6Htgx+6GXq+g2z6Z8HivEDPCSyxGchInN3K50A22Iim8ZNAESnFgKTjg5URaEyiAZA4mEK4CtPcCs97rngqEukcW5gJsgzGZTEThBKaYaynEjutQ0FRxs4T5z8kmbGF5nJVumYCtdo28NFDVEjpafZ22lQWsw5Mtmo4fg8IcE6fzjKm8EwALrBPvQckV1S5QrgYMDYHAoHBzjqeQogKRVRIY49ZTjQT2K288NEiQiE1C5AeV6o83wdNXRiYC4KUhFNIZELl0SLKgKn2oflG0saaaMCYsdOZYCQlceo9gJTQrttvB4JdOAVItCcTgl0sYIqRnuKUOBJk2i1pp/fi9BS3a/va4nK6uxqReqHFq7naCix5X3B9kiNB9yToUzJvEVi8SSBDvlXwpjVAAl19h6BX3wNm2ng4/SqB3MCVU5T1OgGokfb0/LVpczpVfuqPyjdt8tQvCjuwWwAAAABJRU5ErkJggg==",horse:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAh1BMVEUAAAD///+lpaWGhoareS2nbh92dnZxcXGPaR1jY2OKVS6AXCJyVBp2SShRUVFvQh9hOh1FPC9ZMxc2NDdOLBM2MCZTJQ5OIgsrKi1JHwkqJR0/Gwg6GAUhHiEfHBcuEwQpDwMjEQcmDQEiDgMbDQUcCAAZBgAPBwMNBgMQAgAIAAABAQEAAAAaegGbAAAAAXRSTlMAQObYZgAABHpJREFUeNqllouaojgQhTOzuurYitKsNCS7pR1lF2fe//n21CUBvMznN3MISYVQP5VKEN0LKitT6Z6rKovNZlMUm6KsnCtgVlVRpbFduYMw8qIKq0zlDkAgd+WrgNKqDNiIilcBmwXXi6rAPARQKOD1CCqroNVWAd++IYJfBVQ7+IOwq55M+PmF1WKLUlRlWRRlWRUPAbufXNiutihlIRE8m8KiwjLxQqHCWVaLtJgFlr6sxqtfoYstURQvRQBgwcAxgB/GusvY8wvVo8HX9Tog+IASRTfbetp9Dqjr3wL4+nCofYxEU8BisX3anQLgf/CRoOjqEELycCuzcvex6voARKQQKGImaPJWUmPoPpb41xQgIplJ3jvuJQXOQTAAKcCErTdspPtljMT5R+w1/CPbZB03SPfv47cRLl9+IHYR1T++AKEdDO7/Ev2TWqci6G8U7XiJAM6ASASeuKOA5Xw2my/b1I4AHyjaCd5z1BFCg04g7WCwnWoCiNEAsnJZ3LPufgh9ZCbA+8fH+yQRCB1Rj7Wftfv5DKHP25Hpa68FHnzYLmDdAdoW5etXhD4yzZGLVAZgZFAAP2e5tAiW6z//WC/bkalugpDWpnA6Se7uALP523qmUzDT3P10CieIRi/yev325vZwBA2lHZleUiA1ceN42U7fz+fvJ1kPKAN0/RFPOzLFjbimyC0DTud/z+f/zifyQnCm9qE83EicI/lIEQA6nUUAgKAAn0VpfxiY/YiiFhwOPichIAuyMl4BbB/QC1GVART1iAQBENAogOS9NACccaCPYQtBAeFGznSAyBLQNPIDpYBAcQLYrlar7Ttqad+3E0CMY4AiAKABcDwenQn29YrmBgAnTgNcFZEB4RlA36JHABQFxEcR9N3n8fjZ9RNAfpsBgIQShEB3EbA/E6QT4x0gzyFQAlxVvZYLnAG5TACQ8Q2AIhEIub/KgdKhvly6z8/ucuFbWYEoeC/mQWQNACFCaDq4dz28u65Hm3IgN3ueqnxf1c8A0wjgBoB4d5DlIEWARFoEYwQ6CMAAcNPH94zIOZBlgz8RI2ALoc4QW0YMX3sGcLniHHIAwS2IP9zNURGyjBkAP10CnNMcjJJoADFqi0AUCF62kHzc5MBLEjUJFoFUDEhz0EejdGxMc+DtwyxmbRGg4CAK9tGSh+dqkgOLIJg3BAMCwFNMe/k60ZCDNIc8AwPAm68TO0O3gCEH+isfIEFoIoM0zKXhbcTbi9OanIMUAE2SCJjNLAPIwdFOFOSg7zkHtvJp8sZLyyjmeEwb7/PX0Y23b9PoLmzYsMVoGrXQGgMyf4/Dwc67rpGmwc2ocBm12kIffic9hEpax3Zjg3Kr5L6BakHZ7jSKAOEScGraXEAl4UkcHDp8feOZYIZctBswPV0ye/0AgDSGPMXGs4TTsKFJys8PqvRXLAihEQQqGPII8UTRAGVA86H+pAcMRyR7WEOGPGTQZECNDcsgsYJVLnLrs9hBx1hqycUkHrUvqxgONt9iUv+p7ocjlD66/wNdcSNfhkmkngAAAABJRU5ErkJggg==",llama:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABACAMAAADlCI9NAAAAVFBMVEUAAAD868b14rjx3K/v2anr057jypXMqX7EonmlpaW6mnOvkW2liWaGhoareS2nbh92dnaiayOPaR2AXCJyVBpjUT1FPC9BOy82MCYzKSMqJR0fHBcP+iOkAAAAAXRSTlMAQObYZgAAA3lJREFUeNrtV0t22zAMJDAg+0ulxm7URr3/PYsPmUiMXja0vPJYJMbyAiOAGjynN7ACCmVkPO0AButlC1ueRnEkgBydAHBA45afIICJ8bEG/htvdhHRcI4APIGU7wVAauUB4wJiUX6OgAIymjaACLNLEBjPxJRZTjkDh4Ag5EHEuCUvym8pgOgTAZFWdw3Gc4EU3LQCpPhEQJbs2TXGpxTbbyygKNIhcom8UpRVbiwNQxS0AytEuvaqMs+YlWz4jQQwMdEL8wuRUgaaAIFyhkjN27ILwgvcjIhsx5AAZiL+8kWDUiiqAHddAL0AAM2TiWvVBgXw9x9PTz++814Ac61H2SFMUAFiplq2dAaYTctRC/RCawCFbQ1B4oFaopwC4OZ9uwJ49+HpowWg0QqAHCgVKdCsf18CEYn7cWbIdx61QQf3AhQQRc67FrgEA9roHK0AVXQCwIAAbj8NSt2R2xvC8R6eI6COYOwFZEEMZmlngGm0BYi3Gf0hjFZDcu58KH7xJhA5GRmCBLCjFpRqTGK3cHgEAGZhrkYA8Fjx+etXIl1MtaDOkgCsS7JsBcRcZF+ul2ngDEROejUBrxTgGuMQKnojMgAMRdWMsRYwRSt1cSy/m9gSSVbsBCjEhHH1oiEfgCVn9h3vb3bMl3oCvABdE9pAYpACAxUAwTP7jhbIQvJBAM3fIfttqS4wZkQIv4+AoI0nWP2lHEDCDaoCDAgQ1ONskQXuL4ibSRD171sQXYCA6ykEBgRYqpAB1tWiHD/U8tfxr8U0imimeNoMiImp3+VtIG3cebnM0zRf1hbTKCQjQ0R0N6Iri4SoQwFrhzSKLJLjgywwgqzL4wcBy3vplf65SRcsP8xbxFjRLS7lBwKmdZknLf28bmgaQv2H4SEr8Ri8pN6ZlnXV69u31eNyky54Ul1xOQ1eckm9M9ljX66/fl4vq9Hn5+d5uAKezD7FVv1W99Q7k2Wd5t/XaV6DXqZpVEDpbCZvQuqdabHE02xZGx0X8AlS70xLvP/zrPGdpvPQO9N6hFMF9M50bxw4033RO9PRMDoVvTMdDaNT0TvT0TA6Fb0zbSbQcpcu9M7kE8hH0LqhZwrosJlAm7mU7od47FmH0Bpz6eev6+XuAqbpMmt0ev2t9J4CZheg17qh6X6ICTSHDzR6TwHrIdIDDzzwwAMPjOA/NfpDB1xAY2EAAAAASUVORK5CYII=",minecart:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAMAAACVQ462AAAAM1BMVEUAAADBxMW2ubqvsrOprq+epKaUl5iMkJKFiYt1g4ludXlsdHhham5SVVZNUVI/QkMaGx04QmSDAAAAAXRSTlMAQObYZgAAATFJREFUeNrtk9FuwyAMRVMa7jWzwf3/rx3QLmsiOlpV2lOPk+BYypFRzLIs53A6hXA617sSzsurEABTSkRPsLxGAIEYI0ACiCAC4tqp5fbARGApJavRsLoggLHGyrWvmAoOIPSWtiamgmw7MgIhcQuAM0G+U+TcBERcY+wNgJwJPO9wBAq3Blo+E+wM7ghSIRqkVGaCPV3w9RsTQUVAMRMC+MlkUHusISVfLlkoW8ZRbRmTRFXNTG9YZ1wdCoTqXsy8dNysuJtQ7Z6JoBTV0rlmrk3gB0zHW2gCU7XS6ZlrugrKxp+Ccuyg3ATljscC0eLtM/d+aX+tVfOy46GAQwGfFsiwA5HnBRwK+O4W/k/w/m+U4SDJ84MkMhxlmY7y8TCVGy8fpsR+WnXDGuPq8mHIN8fuL8tkDiT4AAAAAElFTkSuQmCC",parrot:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAP1BMVEUAAAD/////7nn/6j3/5TPGxsa7u7vZra23t7ewsLCoqKienp6ZmZmWlpaRkZGQkJD3cwmGhoYlJSUPDw8AAAD7udxiAAAAAXRSTlMAQObYZgAAANJJREFUeNrN0tEKwjAMBdDGxpnbZqtx/v+32jYMN9QKPnkhYdBDk0EDHSIQ0CGBDkEV/pFgahtgBhxEZu7nSGj1Ajg6SAmpVQe4M98hgHCMVUAgqklbObgyXwGhXczUWlXg10Z+bj/4i3X19gra1KJrDfVGakcARdFyqyEHS353w35J2oGiBRO8++miqrU2MJdZIN6pJy+Lz3Cgs04yeaees6qeByMypZQo548jLDdl9mnE8D18B+EyBiG4+AGMduBwCi2/g+BiAAJ/BTwEW/4XPABsMA1LwNN2rAAAAABJRU5ErkJggg==",piglin:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAWlBMVEUAAAD/gID/////7aj/5bX12iryuobMzIPCwnTooHTVlXreihzJgmWHh1e6ZkWtVTKiWTplXEOhPjiESzOXQyKNNQ1rOSR6JiF2Kw08OS5TKxpgIwo6GgwhHhyEOBusAAAAAnRSTlMABHH+CSEAAAKgSURBVHja7ZZxU9swDMXDWAMSRspwYiDQ7/81pyd5Vzzf3Oz4t78GRU2kF9m5Hm8y7h8sMM34zMQrcKZj3BvTRHMVoHVVJwRm41n1eSDwYFSB2QW0AoG4psY0JgRAK5BeiV7TWCD2wLt7AXkhehE1Du1BL6CPKT0quL4HgMgFxIBAy6xt3hICsYniHBRIzET+6Ij1jxg3/NUyXxEwiK0wiITZBJC3And3d10uzCzKjOkNOzGrX6wKJoUVpiTJQ5MbVseyqpX9SEQWmHUV+4obhI8LQCd5aHJDBALCRLIaQuRfWSRhBK51M7bKQ5MbqwpLjAyB5Kmw6AoFToZAgNCE0OQQMIXEGHkFtU3UUsUU9XX6DnlocgNNql4HvEuRAzWO/Kx342xMFXbibWwb81TJOS+oOyQg9reK8mafqbLkJR8UEFEW3nRjzDBV8nJwAgGs1qoY5DKB0QrEukrJZc9BcXz7S6AiolspC8AMIJeLQME9xC9JJppL3FmKen/J1moPsOhFzfi4gXNZvMuKdiL0xmPLVjBaHTBiK1DQH8lealfyB1mIsbEqIABcBETQKjiDYsRi84I0WwYp6yeilFgSp/iFBgJVSMchBeTsR82RVgFiCIAJgMRkihBn/w0XI9ZS+/GxtK1LXyaQVnkHn3acLDhlh6TIkQms6s05/Tw9vQUfJzs+3v45Aa4mXCTCCnh3nj73T0wQOY6oQyT080WAqcKO70H2F9tsQq3zpzdLOJ/P7+/nX+84I8SqvT//2QKEv+umGzdu3ABH/cLAFxwVGPuC4xMs353AGAmM/ELvC8b0fqHzBUN6v9D7gjG9X+h8wZjeL3S+YEzvFzpfMKb3C91/5TG9XxD5zgTy3xP0fqHzBWN6v9D5gjG9X7jmC34DNs5yRa6KJBYAAAAASUVORK5CYII=",pillager:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAflBMVEWnra0CAgIAAAD////Hzs6Trq2VoKCVnJyVm5uTmZmQlpaOk5OLkZGKkJCIjo6EiYlmh4VzeXlwdXVobm5nbm5SWFhQVlYyZjx2QypfNiEmR0daLzg5Ojk5OTlPKxlLJi0fNjYqKikeKio+Hg8lJSU2GB4yFwkeHRwjEBQUFBN24XvqAAAAA3RSTlMAAAD6dsTeAAACP0lEQVR42u2VYZOaMBCG1TOCDUYQemeqRDEq8v//YN9laQYckaAzbT/ckyPEmXsfdhlnnUwbwlBKGS7CBjmZfn6m6WQ6G2DiBHUegrTmFUHIpGeQSorT9fcEixANvCt4rwVm4V5ig7/AvQRJ+AuQQPOSgjjwzYHPw4Im267AnaW3wIXbdxINC9zDZUPbADwEHMnztZTrPOc467wEa+SJc54vl3l+bgqADPgJJHf78SXl1wd/oDgb1sMCeg4yifqxXC5Vwk93DAsSMoBE/QQqkZxPEvrDNSxIWJGyIOW4Y1gwG+BfCS4Nt4YXBJso2ngLTsBe7bUlQB6GMQLkrYfAvwJq4Z0KYEDeR3C6QzOGBEb/wQCtRwjMZbVabQ7G5Qk/weFCa3fYIb874Nxa/YLj0QkuN1r49/0eEZxbq1dw/AWDp8C/haLwbMGa7XarjTa2UwGWXwXNW7a6Zqu7EQ8BPfoKDDSEfcJDAYWtIQlTMBVvXR4KIDaoHApotLmWTFWUZVGVXXoEhquHgS4nAF6C2Qi+Bd8CYi60ibIoe1mAvAmy4C2BzWB4XSCszdDDaAGHxVzE2jCxGC2IYyHimAcOBPFoAWY34MFJuxMU+5pyPhei5PPDCcRD9niiHaP34AQlJg+oRFGIqgA9A6Q9XGlrC0oSxKCi/FiBfcJdC27R5gQ49662gN8VV0ibE7jCUOWzH5KiNrgOuwJXEZ7aJ7jd4QT3pfa1oJTKAqWCDPcsU9noL5IKAhUFUaRqAvX/TKTfnHu1gRak8lQAAAAASUVORK5CYII=",rabbit:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAMFBMVEUAAAD02ezy2Ovx1unxzue0pZSkjXOUgWKUfWKLdVp7aUpqWUFjVENhU0NZTDtSSDkNYhzDAAAAAXRSTlMAQObYZgAAAYBJREFUeNp10L1uE0EUxfERBdhQ0PAivAFPgUJHFT5ewC7TBJ8LBW4i3TM0VEgz09B6ptiOV+ARkjJt5GJyNbubtZLdv7zro52fJWtdq5aqENe3prV37vl2v959dK2SCsERQBrYwtoNwOdAP4AVrAsDZ7iUAWSG6B/AZtsAvsgl6VqBjGkEL84/NcAPvBoBlSnFfmL37z/Exxi/xj8x9kBVUsptBsX1DRjtCIAbUkjqSptZYflSyikA0HVdm8dM0pdaK87x7WwC9qTNZ+/ckH7G1Xv7RVCIj+3emXrzdgT0geJczaH9JcKnarlHGSDhoynOg2PJQYUqPpVuDtRjUVGIip3PAedrf7kVLtz0NYXarkUAEBBgGQgVBBeBMlKC+kUQfLQPEyGK3WYLi3RT2adDyr7kYAAbWD6dgpJKLnYr2UBfKqegDh0jx2JH96TVz9tpzLX+MYJf8+Bl+juNuV7FEeQFcPg9jbleH/YDuNvPA3s+jcd9L+1FqEiqVlZMZ/eZmCL8uK8JdAAAAABJRU5ErkJggg==",shulker:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAzFBMVEWOYI4AAAD////m8K3h6KjT1ZrHw426tnmzr3GsqGujdqOjdKOjcqOec56ecp6ecZ6ecJ6ebp6ebZ6Xa5eXapeXaZeXZ5eXZpeXZZePZ4+PZo+PZY+PZI+OZI6PY4+OY46OYY6OYI6MYYyMYIyMXoyJYImHYYeJX4mHYIeHX4eHXoeHXIeHW4d/XH+BWoF/W3+BWYF/Wn9/WX9/WH9/V39/Vn93V3d3VXd3VHd3Und3UHdwUHBwT3BwTnBuT25wTHBuTG5uS25uSm4AAADM1DMFAAAAAnRSTlMAAHaTzTgAAASDSURBVHja5ZN/e5s2EMdpk2Xrthg8dKfYuMVet4U7sTr86CRskuL2/b+nnUiN/Xh7nhT2574guNOdPjoJEby6ULFYlEWSbGtp5Sr5ayM6xnr7QsFlR9I4JtswuYbZunITBOc5LwMWlhGZpOUKjK1HAwpCpTWAQq2U4v1oQM3gpQBiRMzay/iLgJUlRAWAKBi2xWjA0rGK1R2AFga5ajSgYI34fAMCP44H0B0opTQqQEQevweJywCw3wJUxpWjAe8aAwBKAfR7UE/YAwC8Q+URCBOWUFKMKlaACCJqzw+SmJtv+Iy50szSSEPWlKMBya5h43ZM1nJmXTEaYIu6bauybevicV9V7Yu/c7EMk+JduCyW0bJIwmybhCtvl8l8IbGsTEKxZ6tiEa2KJJK45C3mSz9uu5xlwdKxJUeWHTnecbtyxpkdu9yxv/ZLlzXkjDXea8w+OeY6FovaYE6NQdMwsDOKXBlJBMUG6t/lTOiaLSuWnMyVoXEEvS9viQeJ7Q8/+AuQWqkIUWkQyYPalTWAIF3gZSSegyiOAaVTKiiNQp+qfBa7emsQlEIEgdyxqwqGGJWSBNCKmqrIUAN6Oorv6iBxJI4IY60cp0njfQ+RHsebd45RpMUFbWm9sKRVjH4IgvhBRE5s6YoRFdsqMo1CD9DyMk01zy0o6NNjJFuGPl8jgC+LXOUrSDdp2jdQ1EoF6dr78lTQ70mart9u0rdpisD7lSXx5ZIbNbfB1sBwOEK/5uzkz8X/kzE9+rfUFIWBwZ/5Cu6dSQeAy9f3jk6+zHYvbQBak0r+egA43gRzY0/E3FUh2VMCuTLkZohHZMsod+sBmLsy+N09nBJ+/dDeu4chIfztw/7efThN8P7h031zlv/+YR9441Kbr/L2oTscum64uxf/xkt1xCLKmTNmw58nALr80PX6fOj4MAXAncmNlxgvL2Fz4XZ5ZwTiJSR+Gg/gjg7S2AjniSdUIOP6S9afT1qCr5sOxhdiDjQNcJDLc7ibAqDOPLEcJpnfs0YDpOp+C5npMKkCX7c/SE9yC2LCUc46zpmIc8PUTQHQ8U96kuckALHpb5GhlwGXv3Mnkqll+v7570d5dhtGURRGx85ZeBvezue3Rz+chdE8nIdDfC7ZMmQAhICgENNhACoFZ/6tUggAp3iM+hgPnhMkrPTwBSONWqtzICAinIAQK1QDwBMV4NkMMwRBxCfAnfZTDBP8on3B6hmwXcoKNUAMAD8nW1Mns9DPqATy07L4Y5tE8xkoP0D9uCqzIpHFgxaiBolnQWIpZkdgHGtyvF5YFtsAO5ZG6dLbO4O0Y2QrccnLXQ7kqI8HBTfsZIQ8M0u23LKTniZrSHrJlaWxfUTiufRVEheW5R1Jy3ZlsEyrtkzL9mNayPvjp9W6eqylr07rtko/7pO0fpT4XmJttSnbZVpLbvlYie/7vh6k6+urq+vrm5s3b25uXo3SEXAl+i+Aq17/V4Df/3Ndf9W3A64uNBbw/T/0Q68RS/B6/eXq6svrZ/u7XiMBNzd+CycDjhs5BfA3y7f3PUOzujsAAAAASUVORK5CYII=",sniffer:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAMAAABlApw1AAAAe1BMVEUAAAD83VH6yTfyuCrpsSvopSHfnzHejyfUjifRgR/GeRxFnYrDchU4jXspiGCqVAilVAEsc02SQQBXUDOTMR1xQQIdXTwcWzpKNE6BIRhbNglENCUTRzM8LEREKxFxExMPNCosIjdgDQ0kHi5QCAgaGSJBCAg8BwYIBwb3shenAAAAAXRSTlMAQObYZgAADgFJREFUeNrUmYGK4zgMhsPOsjdXXz0nanSIBgSmsPP+T3jSL3vTpl2oZ8zA/iO7iexQfYkVJZ3ll2QZkSxDygTl7M0MO96WeSrzZ29C8J0CoUP5TwLop5+JmbHr9qcAxOnPlFNC/L7hni8AUFEzEXx+GIBAkJMbCLBv3dcAaA0K/RQAzj9n4hBRSl8BIB57xUX4BEDP34Tw13Vl38lzllA1aa1iQph3AN0wFBvG1PR0Em83UAPgSORZAOoAimVeRO8BTBuAxMRBgLaCiF0rgodrEoCqtfIQQKV68OgB4NOKqmN7e/ouBIJMfQXZ1iyAfgGKI5QiOwB1QFGn9KFSYiKu2whALwW8sotSItMkAJOWokXsb5ee/14LAEV8IgCMbqAS4w7q8ZNvpGmPEjXWgwOg3QH80wQAAUApVUcAPNi0ZbDjoBbMAnArovIAAOH/bfJP5ERRlQCw9nwSk4shoowVNBcAyVlEdgAe/V+QMSAnYmKkwEgSE0MoAQYAojkAEYloUSToYr10u8UBgCDZawXCSBLHbXSrAXlSIdOKtaBSIrZFkMtF3ORutogWMxw0UAeoZQG3KmzNNQcg7qOlRGwO4MLHPUBpAAqAsdtoLCEGQZ6XA205e7gBUEK/AShugkMG6gARGBzAtzhPzIGzqrcAKLog9q57gJMNquls9iwAzna/BHib5Hk5UFnVGpdTEQ4AifX/GIAcgM/K6vZsHYhnoUzxJMF5Yg6sFsyZz0ynwkbBixhAtzsAOREXa+uZ7Rg9P7+EyOLfnuXMMQ+Az35eiE7MJwIA9BDAZpgRTqOhrwN1gBjLHwQzC9nKq5k1IjfcKcPkQRKzh0GYv7oGrkBUAiJnpxSeKQCrmTWPjRi1Svub8AMAXnxWO2Yd+1nFjNjk/cQl5IZI2P5Mx2vdAVgjHIYDR96JuT8MrZRBNPVnFY1ibDoSHekI+aa7xMZM/XWyWFuG1OPPCbUYKQDNA8BrMervkV394fEo8KLaAaB8CIBM2ysZT63EoUu9VFEVKXTjpyLurjZ+EdXiANZ0GVKkAJtBUY3zbICL4o3gdtkf1VeQXmIcO2UcIOInQ9hqGTnERABT9fjr7gpUD7peXCpGGBAyCNCV8tVLGdFsgJ/v7++Vb/xczfezYhjVIQDKaBL36AlJQKbJSwghimjVHYB63Ii/4vyL9zIOgCrGxCZcgZxoNkC9SK1COwBy58WH1XMYJW4cIH6V4Owk222IaCZA/LZCfLjxH5hKURsLACSwyihALJh4FGoinr2EUAiE395u/G9vLCgDDoBKp6Ki4wAhZm9GMj0HtIpZUT78uPH/OLAagJq5cAeSMpzErv5fDYbINBVAxUyUX7/f+L+/srsV1m6j4wC7+FES4JoHICoIkO4ACH7YJ26j/aW4P1TkaJMBrNHh9cb/eqAYCBMkgo4/C0ENotPMBnA7PQA4dQL0Ju8iAuu6bQ506LcOE9qMjtEpuudq5HocxG1rP/d6DaosAFj2AsAicuuN0NJN9BFjSi3qRH3pJ+s6wAbtI9ahx5xwowVBp06mvoeWcp++bBI0XvbiGNljEQAShWUEQXBkAgVCii/GFELXGKkPEGIjdOChcAZ2bOFM4ZDmQSMCwF7/PeFxUdxVMuf2PUwRnltbAJxSe+5n32cMpGDckiHFVpvXnRFj3qgzYyYAURAjguWjwtqwxpnCEGNzEJMLcBhhsj46XJk4ID6BFdMwBbg5BoOBOWM8INsARwTLA728fHv5Fnp5+S0AvgYhrejjuxHrytjj/lUYCQ/C4P/buQLdxHEg6tOqQidVp1XlXcUnegOG8v+feDPvzcjUC6E6jiyR/MD2eDx23nOSkinb/StsHwc8ZYZchGMQy5nDZNDFTaLQiwJI/w9KSFfAHcSjpQkwFdxWPmvy0wp81YYAOra+z4CL9JOD7pYiIXDL32ZjPreFmhmO5qIAsNc3SroCW9DKVmGsIUBbsIgXzg530Gp2GnmMw0W+W51iq5nTAlQsDUr2uC3l+8SrAv7Q96wA23uUrbGgCnLE2tQTbqRhIGDRcXLIQf0gF2o8Tg1EgCpX4eUUS5LBdQGKWQE4LPdnt/25gxoFyJMLHKiCJiQFeRgM4V6EgHCAMSrnzfmxbWSQLsDoA9pcFbClAJDZ7rY7XVE9O/XY2maYR99oYOCtheS5o/AwZKctJ7lyko6ZfuX4qoYZAYEZAT93WIynd7fb8SDkrYYKgh6G6csMeHAhNEnqcso78MJczuBk620pwH3mxOozAn78YDUngIspYQowAtZssXbQVS8ogpaWXRMDAwVjmE8BocHnoPLLUGNQqYcMrlxCP/5RAVrNCdhCgPMA1S14g0ATAGkmwApqbTkKpwXvUGMmunBDE31UprX54KTczwJe+OkFgDsqx7eXl5dvhBovKdlC2ECuqS8DxZjH+ZkvBCCQfpDh+YEb7Lgi9Pl0W9gFWIOFQ4DHpwawCwF/K3etAOd9jpTIE5vA9XxF2CBGBtFHTaahnQ6XxWUoQJu2LLiTdrhgeJP+K8AM6/qbhQcKJQpW9NKPxj1scF2xAwHhjmWbbW92wky3wH8oEf/UoIELJrDpjtIqepq3NbTaNG1SC2bT+oDPbwJQbgsAe+CCADNiXevEYYNH6o5Pf0qNS2PujRnWwB8zYKcu8IsCXtsJOBeAozQ7liIdVBy2DtugQDcMKAxvapPQY1RzekALZ+frAl4hYHV4VfgVtFoBfhOs9AzwJuZNsE4BTcFaz8Am8Oxn4AUPEgQeRLVyfFOkp8cGj2sQYZkMKoU/CG3S0wP8jbG/zYRFBekeHK/hxoyK+nRiBcwIMHxrAHcAI8sLOIUA8q+oZwRsyF8LDLTom7HZLCxA6SrlWo0zXtbTdk7A5kU1WIFBG4C5tABSrmAP5tU6dUbA29v3t+/Ea8A6bwqtlhZQlbdBOZuOit6sgD83DXECoq9jiwvAnmsDS1/szF1CvOKt2mjRl3q05j2x+E0cCtyIakYAuBLNao7fIICcz5Xc/jEK6h04sLCAuGxi86vf0fP3wMs16F2wuADSjh8+VlV8DtyB5QXwJJgA415Px1UJ4AcxuFtrAvQcrEeAsSZOZvNCqisSUMHbysls3MurFKCGk1+XgHiO45XTPgnWJEAVYP9XK6BCAF/AmgTUyud/sraGZr06gTh87Pf7j8Ot8SUE8CcnBbACbgj4AMGPW+OLC9AX6i8IOOwPIDg7vkhKGfdu+zxbq4D4PMM5uCngY69lfnwJAeBfIYJJPdrjVwQctMyOLyaAF77y9gz/hBlrEQCYBNzJJ1SqZTUCTiFAAe5QcUGASKD4X3WrwVZKTcl6Itlgbkf28AcKwHZHTsNaXfWCgCJaSpUslSQzRIjakhLEhIAsXfiDBVQXoIjUrKYOtRSQrdz2agKUP95G0HpmZXorzkyEP1KAopJ71HhdEJCLsa7YXxNQQT0IuhkCuvDHCUAOHNR9/y8LkKysRaoYNSWX1UMfBUAOBQiIl7Pwh6aU53t/RFHzVwFTybWITGKscYnUXE2AekwA5Ey55GwxXfgiH2TVf9F+OR+YJgEfazNqmQpYqq0E1aHsJ1Tq6cIf/kHGnz0w6zUB0/tk1TsrItqUaPbjEfLYS4g7j7u5XhXwbqze9/aQ9m6PaXs6+FaCaLvxFvHIDzLfeW3OBZxSh73ioMQUe9SHw77h1vhjP4lP8SRH9rwd1pKRnU4UYFCz3c9rycj460SQR6knltNaEho8uCm0QaGh9f8r4PjbcUdG9qwCbucDQ8AQcIYkAaZgx1xylSJMA/xxujL9ysdaIjYz4gkEFGZYkYJV5VbRtnwAQ1VbG9BOgYDyNAJAKVKwyIeVa2RkUOQRFGA+lPIEAvjHwpGCWSN+1eR6JkC9TZ+F12cS0FIwI4Wrp4rkWkIA0y8IKFDqAuQJBEyfUjAjVa1SW4VRwDQh7+QoxCK70d70BAK6FExJ2Q6raS9JJnDy9EsgzBO0yZpnEDCfcc1nbM8hYD7jms/YnkDAnRnZEwi4LyN7AgF3ZGTPI+D+hKZquRv1gmMhAVKlHRQVCiEsdNGu0mLQa4u02WIVl+vWaebdGZlgISmSj8VZFKfUaMlRxDgUuNRGYQyYlljEZ6BUEQx08yCMS4rF3ZkPFKlS8Y3CMevCYMEDoKKnHAuOntVmX8AAMRpdciyi8SSJ8Vw4A3Wsgy2BWXCgewVk4VNsrrnosGSxlruVcbBiY6JOi0O/GAPGwJPbIsovixGDomzUz+dlJc2hmtWucrcAiedvAQ01+gSoCMZQaWhLhjyG+6z1xYyqm5f90RluKVaSiEBJN8HDU+r5Kc75ZR5fEI2oLgGKb6icAIhgNz1GUEq+nFF188icywnFJ7CR0k/w8JR6fkUUpfEzF95cvHQJUOyLR4I0nB4TIq5lVKXNQ8soLkqG/n++9BNcSkq/8IPexg/ljHifAMUgCXCH23dUFKK+axlVE1C4vjXm6QT8MsHDU+r5UUDwcxE1CwOKXEqAGMLrvvtKC/2ZjEpSmwcCGUs1UqmfMPmEJqDnVz7zYzKUtJeqCNrUJ0AJK2UdlZos9bBAxKAvNRZpGVViRiWf5iUcVC1zqrtop0vBhJmWiIZPRadHspbzVDWqS9DsHsEbRpLENkmxo4JHUfY2bg0iBPQZ4/1UIEttwbxibnvJ+Tx40YMGsJPUpWCeaakFn8ZaSlYmqyf1tAStgN/yWOA7sgWwwHdky+D+78gGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBtaCfwE/iN7wd4XgKAAAAABJRU5ErkJggg==",spider:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgBAMAAABQs2O3AAAAKlBMVEUAAACSiX+MgndgVEhPRTxHPjWoDg49NC0yKyYmIBsmHxoaFA88AgIiAADotIQjAAAAAXRSTlMAQObYZgAAAgpJREFUeNp10rFu1EAQBuB7B8RDUCIs0tB5rUuUNAivfBKvkI5b/eNLyVkzg6hQYGfyAkn6oDwAFUUqUvA4rHTGthTlb7b4P+3urHZV4uqqsuKbHdNNz3S9A5V1NUVIVW0leQfOCuQvhNzTDJhF3W6RlUvJV5R7przjBSBxu5KbHmV73OJaUc7DBDIVIKs5zuSU4nSIkYotgSUox25z0GAtfe+qk+GWN0PCARhI1fgwyJhjpOb7QDQBN0DVJ9BRiJmhB8CQAlhlAfZNaxAfb8ziwuSLQeqmrdx8BMJi0qsvBrms6hP3AuZIFxNYRJBj6L5W9d8UYg8SGcGmjSlRFuOB1/vqz7v6mLYbcscIEoYOAjNLoB+/6urtbwarGabB2q4juBnR5dnj+fnZ4wlDM2QEbQhdVHXOoLr69PBwVFfM0sNmgEE9g5Ve34U3dTh9IcZu/0Gsw2atboDL6f37u48vL+7E4c4jaD80YU2ult0v/NvP01d+707CGMG2DVVH5uNrPk0a2oog7vYM4G1qgN6FngEAgZmc8aQKMTSBgY62KbShCwIKaTODGPhztU6csA11FTgJQhNpBuGoNM2QIGDsQx0ktfF4ARKDIiKYmUAhdMZtxzIDYN+g5xLJVO4Aw8BYAG9L7waQeiaQGwlIZ5ARu9g7a9Yc0wYFK+kCeAbgDvfegdK7qyy+4z9b0kGP3NmJngAAAABJRU5ErkJggg==",tadpole:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAABtUz1jSTNTOSNJLxlEKhQWCgDfr9AwAAAAAXRSTlMAQObYZgAAADdJREFUeNpjYGAyCglgAAFGRVcHMINNzMgARBuliSUZGQEZzkZGxsHODNiAs6KwA5RlYsBAOQAAqGUGQPKmAvcAAAAASUVORK5CYII=",turtle:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAABABAMAAAAg+GJMAAAAMFBMVEUAAAD////K0JHCt4ComnNHv0qUi2OCiFQ/pEI4jTopfUkwcj8gakMlZDMbWzExMTA/pVLKAAAAAXRSTlMAQObYZgAABDNJREFUeNqd1s9r40YUB/DAZr1Z3JT+By2S6XnRiJyD9ZjmtBRSUbWnQITMQlgKXeJL6aGxlpltD2VZjKY2uRW2JodAlxAxm9DD4satYnKuI7OH0qUkEfQ/6Iwk/7isrNnvSUb2h5n3pHlekqkG9AVC60vvnLuEPJsCDxMRL01pYIWQ1hRwo+T6leeBixUA234MsJV98Cxdxx5YFuDSwG3b/tzFX8nLigtoDZngpdlSAHYbOYCMmoZMBaAa+LaIQ0/i+GKpsm1ouqYhFYARCRCWAZamGcLACkD4ITn+nvzXyQCUAWvlgdWQBQGlrBNLYFn8WO7BVABGTQ/Aa56kQAUAtBoAzgHl3DI0rV4XVVQDVvyWtT4FdE0dcDbr9yaAbiJ1wN80Pkqv7riWoWsIGmrAXX9Py4BbKN2CjhQBsolmQE0dWAlaZlaDZWTUTFNDpirwDNazGnhQr2mAVWsQMjf7cgWQ2IJuYjWgGoZTwHIxbIMqwHl7AmCrpmMFYBkAHhx5YfpSt971ZL7tt8yC35Y5Vfdq97JLxoiFkNwBqJyq5Ds9B8IgIIQ89lzLQGZ5wHmqTQBGbZ+0AOmarius4CnKAR4y33E+Qyapm6R8DeietZ4DzJft2CAy5YcjbYEEKp5nU992GKEAIMu4VRLotPGP2aWF0AZlbQCsMl2rnaMJQEQC9gIZCFQAfvTgMAd8/wvKfpU9MKHkXCSs7fE2iGx8uuQ4NmX8uGVstJA5edpNE0q/W7IHtHNMZPIVpPMaewtr8tYuWHJezwD1pPN6rRiocnbm22TQ4SPO/2XsivOLOcAwFgNhNyBdxnnMTznrnPITNWCV8796vd6IixE75pyfxvEMSOf1x8XAe6PLg2ESHYwuo+RG7CJOrn+b3kznNS4G7kT9YZIk/eh3r/FtEg2T5lzT5bxetIJlgETkbxDBjWbTA1ifA3StEKiOX0H28oDIcMSvB75t0+jqMAd0ExUC798IADdFdgVwniSsG9hOl+2/zu6n8xoXrSDuAzSaMi7g81HI6B+93oCyw5IPUvXkDVgZsA2f3PAwePLcdnpkBtQWAWNAzTRfm/djzsgvsgbPaX5EyHm9CHCnwMOYd3uB/Ov600EOuHJee4VFvGx4GbDb2ImTq5eBWAHp8kkR5bzGBcDqOJqtYGcYhzSSXRjQvAbpvMaFW7h8NAW+kTVwRBfOnEkN0nldCPB5YCQAW3Th5ylQcQGKpr0EmtMapMCXogZPJFCQghXsR2kbD4blANmFeUB0IRgQ26FnndclAdkFKwdAdiH44YyQSD6JpSK70NjNa9DciTlnpBtFAe2UB8YwXcF9CTCxggErD8RvADLgkXiZRjzsMkK7jJcFVuN/5l7nm3icRCFjL4fJRdkuXPfngCi54uxP1hEzonQX4v7sRMLnMefhfpIwXrAFhXyw4P7/kgmYSeJwxJwAAAAASUVORK5CYII=",vex:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAMFBMVEUAAABthJtgeY9Ta4H////z+Pzg6fHG2eqivNWUrMOGn7eCl6t5kqp6j6RthJtgcoMKluMvAAAABHRSTlMAoKCgEjok+wAAAPlJREFUeNq1yL1Kw1AAhuE3hxYrRYm5gmivQL0Hwa1LnAtCFpdOjuKY4KBjfnYhIUPWEnIBhgxZRSjHC8hp3KWxkg5ndfD5pu8FDqNAKQkwKXIE9Fuj3zCQjECYDCaPs4tOQP9pDME4B1MAbIwTgJEwv2yixPcCPw2igGkcljlZ3YfP33WSJTB9yhG25HaJPLUBtkCdvl5fpVlVVRy3ntdQZW+eX6e77UIcNqAke0eq+JCgGvam4apoUGqtHtC067K9Q1O+l2WMJl9RvPAnl7+0L5Ao9NBB16GxZpZloTGFeWYC47l7DzrXcUF3sHTQjW9YoHMW4zn/5QeNK1xt8XQSVQAAAABJRU5ErkJggg==",villager:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAbFBMVEX///++iGy3gnKze2J6enpra2thYWFUVFRUU1NISElMODM9LSkAAAD///++iGy3gnKUj4m1e2eze2KBfXl/e3eja01vbWqQXkNjYmAAlhFUU1N1Ry93QjVcQjpISElMODM9LSkzJBEjIyMjGBTjk4HHAAAADXRSTlMAAAAAAAAAAAAAAAAA7Uh4SAAAAn9JREFUeNrtlN1ymzAQRm3cuG5C9oMFJIW0idu+/zt2/wieiTNAk0ufgdEKs0cryWJXB0RguUEO1/Xzc871Irs3AViTQdnYLgAzGfmPkFnT9V4tiAI+IyCB/19AVgA+KyCaF9FZL3iDlfUCAl0AjpYmFgWagjkJfjNCtCwgml7niyrmcJ0gho7mQkDrBJALsAhwyYY1IAP4bahgdmKFgBme8PjE/PRI3mMGG1gWxMpnE3GetmFiWQA/yJl/CpzJutggYAYYIjAyQfu8XlAv8DWCb5sFqW2Btk2llJSKctwqIAFJ8oVFQRL+ChcCEKGlKwJSQLRfENBHFYCMZYG+2F6tAOauFgRtC8K1RYSdVqhgd6eCUmIUxTtdKknySXchOYOQEhkAmNmm4YJ5FPWM0nRdbKNGZRxHH2KElx8CRmWCvu+7roxd17nADE1qhdR0RfP1mQZMbAqwnxcT9KnYS5Lc903Tq0U6jVTt+Xo5SesWCUMvIheUMvh5GnwqqpKUJPU0jUSik57jnyswABWgitMYU2MjZlw0X9ppDbpOTMSkwCCQCXw+FBe4uGGUdehGy3950ScaEC4/duwCaWHPorEdGSM/0mMRRlKYogD2bZzGZvuJIa+/SFIQYfCjqvb7w6EKDiYAGe5h4DU4/3o9ezSzF94JGK4IC84Tr+d3PHzwTbTqvQVkqjMlSEa5KjhYLUElPJxOD8r9/cmjGQJxJmMgQVN2B0UCbUxxPJ2+OyI4BnfKEcAwxF95mARL1BcAnJmcTIRqq0DzQsCZwJsEUIgGFUCIKmiTQEceZsGwRlBPQGHY3EOQB2Jalz9XAB11crFWUH+Sm+AmuAlugi8T/AM2/NtEbUTDnAAAAABJRU5ErkJggg==",warden:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAOVBMVEUAAADR1ra7w5sp3+uir4aBmYhudXsAkpVAV2wFYl0HSFcDQVAXKC8GLjcLISoRGyERFRoNEhcFBBJsUoYuAAAAAXRSTlMAQObYZgAABmJJREFUeNrtmuti4ygMhWMChEYrjtn3f9iVEG7r4E7iSyf7wyfcbGetzxIixTuXbyqloICdiCHDJV1+U0UEgFNiAOUdAIZApObfBlAUoLwToBCVE+B1gNvl+laA6+12e68HPoTgvXOAru8FYNrpgbJCAJwIgLHwhW4Sgo8jAfCjcSMIzgXAnJGZSO1f9wFgydiP4pS4fSNnMX+Rx98JIMLUQNQYRD0Mknog2bnMdDXrh4UAOQPIZl/GvWuiGwYXJ4DL5VgAZKDkYhqBRwIwwCKA8dKqTCkE9xoAGkAZpf+QRjQHADjF4NQDLsTEwHOApBFb4QELey7lH+WwwyZoZX0gUQiJ0XtgfxZkoHa1GQuQH6YhGCyyCDwHsOdf4YEMMz9qJ70AzASNwTBoBPAKAKWwDgBoIBMA5vYtBhaBg0LQA4xFalaGDsAYRHYexwNkmGGhGBUDetQgMF8Jf2EOQAHQ7FehmwPMthIy/9YcUAoNv3R2+F2wRLQk/J05kAH1/fJK2BCZJ7DjFiJ8AejwwxC+AeDLCRwCl1cBSAnW/hjZ43+OUeZCSrDR8SHof45nMhb1gI4PBFgnMBvYGwC6deBoEd3vdyKWXkV/cVdmMrMiae/0FgC6VQQpSSj+OgCpWhDoHSEww1MM3uIBc32bjG/wgJrV5qZNeg5wvdyOzgJqifCaB2Rjfj02BDf6ss89QG//4/A5UC3fTU8BrnRo5IkSiexAC7VLVuyKXZo8QHwAADMR852ll08temCH2lpzl5rbN5pZ3Znf6MJ7AVRZpPeXponaqczI+mFmaUi/ALQkUAIizvsAckaWCjVXTRXpqvSoIGsjKmUc60mUCUCccBGEvI+gAMVqwchjgRRoq6q2pVfr9Vt6AANoDNe9LjDrKjNq4uW3JbDuG4BoL8BMI1jUUCZBy3e9fscVAFkbsCUFN5zZrs2EXwIwcfm3Sga9+r3i9Ot5EAAKq3ETd6Ff+CO52uf7/TAAyLOrxA8ovZjLXLY47gdosTb7ED0Q9CHIfwTI2zwwFuR6Tya2tyUwtv4d5aTpd2N+rz6BV2zNOAOQjtHfrP9/SXcmsU/fAHLptAoAmAYvzQF7fuJFD5jwIkC/De4VQ4gdgKbhPATo77BqRbTUIlr8DjP3bCYsjfMWAHusZYBhGLAUjHYSHcEKgH5164XBDeoF1K6UUYuJWejMNApg/VYAspndS9+Vs5c6DMkNbNlrzz4MSqUCSs6zNWMdABPRTyEIzg1JanCDspSmUXn0pDkggwhZR2s9MLY58GMIvHMuSaMM3g0oTc6FWmoIMiElUK72sSEE9/pZBhCrUaowBO8FIFdsOCcnXfUAQCknKZSBzZPwfuflEHjnozdzMm4GgODkggFkCi47KYHyawBLGc3Mi6tYEKvRe6cgUgGU0QCC90JQjIBCILP/IsD4sNhC0n0aPgL4GAQgSgkegHlAD/Tajr8Jx5bKDiySdEdjmANEr7a8lz7FYAAZiDGFmLYDmMRsqinupbo4OGEA8xwgBIEQ6z5SSp8eoETKsBnAHGBWw+CEw2kfKtFsIUoxqAvEGFEitOCBiUmv7fPA4LyYFPmkzZTb83e/lNT3UQZMjGICM4goxk0AaE+BwfsghoUjSpXeSTcHYOIkDDFxYhFKExh6aSMAGoDzwUz66M0Z0rnwAKBOSMykNjGFD9UJnDYCQM1XAK8Q3kfp1BnehzkAbNdO0j2+zFYA3gegGeakSO8FQKsM5wBgUbVf9FPy7I/6zQBjBQiaSGK7proUn2JI84mFwlLkU83PNEpFv7au8UBKFH2qa11QBrVOibqdNOx5l7QdoGAEJSIxqg4IMUWtxMRzgF77AQosgjbF1XBIOohEBH4GMFq7C6CJRYlTrHlGHLUB49c98Imv1kgYki1zicGMsgQAaw8DaAJQ85wsz2p5uIVZBSxk+A4xO8gbtmY1FQtamjPAsDs+TlilrC0BBqHVrphpbN6cVpMsH0jBwn/MRAARMZqj6hAytEFZElbvDdGs9wD0RL3/Ta9Mwp5jtLrln4Pgs8ULAE+0CmASNkzCowBW7w27hQ3WaYP1AP3e8DkAFt9NWIatA9i0NyyosGDriqV5aWmOVQD93lCV/3yPKYlrpdKl+RqATXtDeqI1ACv3hsfrx73hqVOnTp06derUqVOnTp06derU/1n/AR0CP3Q2vq+HAAAAAElFTkSuQmCC",witch:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAACACAMAAACMX59YAAAAmVBMVEUAAAD///+2qJWrn42rnYmmmoijlIOgkoCPj4+YiXeWdliWdFcltDWUc1Z6d3eAcl6PbFNra2uQXkN6XnBhYWFoWUwMixp1Ry8vaDVaTTZMTExHT0hQQy0/Pz9IPCc6OjpANSQkQCg1Lh0dPAkxKRwoKCgsKRg2F1guJxonJiYwFE0YKRoTLgEeHh4oEEIdCy8REREVByUKDAvCurIkAAAAAXRSTlMAQObYZgAAA1lJREFUeNrtloFS2kAQhiPphVJbKVq10XDG2Ba4mjvx/R+u/+5yR1U0d2SqYyefgcuO+T/2NoYxyw4PMyLPlVL5KN+gsuz8/Pg46+bw65dPtEoeginjBdFAkAvTEkwVxen1eoJRjg30FfTbgjAKQ0wlD0NQTEKQNq98ntcANhU3fQkVile1talogRJBkQsiIFG3QPnrVQHkNBhAt8BHCgKFxBURJSh8/hcjFeULECXwMzs4KYqTAwpLXgxFtwBXkWM6/gDGU0kHugUTMoDpeHx6Oh5PleQnExy0dAsmrICAmUp8S/ZeKQum/BFIFUyYWIEGP0GMYAEM+OeCgnkVQQNqCJrlcqlBDXBWqVGuKlSE1lVZVpW2wAtoeSxoWEB1XZVaKV2WqEBVleCBwNEaBFoEsm4Epaa3RgQlTvHmSGCQdxCYIKglWEOAbpdNAxclaoR8hWZwOGedgcABWkVQe0ENFY4lIIFmgVQaabw4CPzKglrX/MkNTuigAJpmQaUbrl4WIMXD07JKhHagMfiGigYmHFXVIahl9UNssANUAGdIw7FTgMslSAMAItAiCDpsCT/ZLubzppHcfD4D4tFVSV1UGwHycOwWXMwR/Hg0w3JBAuwaR83AQhORHtDjbgGYHc1mtH4DMjbN1DpUPKnseRZ+eRFjrbPWGKx88vev4gQGOQPYZJIFoQO7swNZXsSGLTzpYNEpcIA7gEHOxRY7RBFgBs4L/BycW6P0HaBar52VLxz7tAMJiUC6ySwiEBiZMucd8oR5IkAqCMS1EVi+2iwMFw5hEUTAAkuC2xsIaENUCdEC9EICRGy6wPEMsGkvWKcK1jKDrcAlbmENgoArt7/A7CFwDwRuDwFP0W+BJ5J+GyEwj+6CSRQYEZitgH6iBU4ExgtMssAaayCgR5QqK/8B2PgtWMsCePhhIB+wCX8H4PYGQdKJAG9JHYjAypNhKQ0ShshXs8DtIXCISMECrliYpbEK3AcSBS2zv6C9Y9pB8IaC/rfRkyZYRfKsoI0kspGOzrtuQdtHcEe8R0H/GfS/C23gd/uYNMH19+u9BFcbLs8+n11ePSSpgxU6WLUeea6TJsiz2xd88tsJ+m8h9osj+gvl3QnA6j7rBQ+uD9z2wMDAwMDAwH/EH571WWMJHeH4AAAAAElFTkSuQmCC",wolf:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAMAAACVQ462AAAAw1BMVEXt5+jk3t/c3Nzf2dnW0NHKxsfIwsO3t7ferIWzs7Nu1Je3q6WhoaGdnU10oIaBgYEatVh+dnBegyJlZi1iWkAodi5WVlZUVFRERERHQjs+PTBENiY5ODVDNSWAAHY/MCQzMzMtLSg1Kh8sLCo0KR4ZGRkAAAD////k2Nnd2tvV0NDTz8/Kx8jJwcLBvr7UtaTOr5bEq5ywqqefmpaalZGnj36ajIiVhnmheFuUe2iBdm2Mb1JJQjk5PD85ODUtLSgSFBY76smzAAAAJ3RSTlMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAi/HzzAAADR0lEQVR42s2UbXfbNgyF6Wli41WZqm3NtkQOZ3ZVwwCFbShO6r6k/v+/ahdwtjOp/dJvvZT5gqP7HAC2GYZhWFDBYBIilsvLy5Ty8HsPiY4yirIQBgtfX1/HLlbD/xUcQIXh51JI1ut1TumiXyz6SKKkAi4AzEQGCLH7AhCpFDxMmBmAlNIffYw9MlMgPewrAPDHKWCxiAtmEFjYyogIrNd//frixU8/lyKIF4htdUAIsxIETiEAfMPGQRmDC0HzGt1Xz6AKUwAXJxC8VAgkb+TgIgIacV//7UE1K8Fsb477/fGN+Q1HAFw9e5auErZi5KcVANcsA+D3H+7vP+yFvA9CvBZhr8qmU4dP9Ukx3AzABP/DAwjE9hbGb1TcYnYCynCOksJYpwCR/cM9QfcPe3lSApWwAgJ5AbazPhhqCkgpvdwddnjOzlLKOZnEatH/CKKEgJ0w5CuA7WHrgL8dkNMVLMKj18BWxegBIgVHZQrIOb/cHDYO+CGfAIl1VMHjDYRvFATYQ9hMAb9Am08bJHF2dg6Z/wqq+9j3nf3wYmhjFWOoY+xirOowBWw3Nzc3R3w22+1utz0fHqFl09Z919e1WAqS61hBDsA6B4Bg/g36cNidP5bySKVtYmeDCkSr6nl8jiy6PkYsU8Dh+Omk4+EEIHosVFV17LouFhKlEioQapj7LoZYTwE2NaucXl9cvLa9XwSLUHW9DaERDayRd4ghdH++whzngM+f373LKwA+fnz/dvCLIIaqRgv6qGKAEJxQhVcd0ghfBSQHvH2P0I8h4O3Tt6Cqo+riZK8i9MV98HThcVZMQsyDiLVO7CjYEGYqSlSFAABYUwDx6T/YwEesTANWOIRxNCuRFLZWLtGqpmmW7QxAzGZdqllUDFBOAMvA9pgVuTRt2yyXmOYZCDOsjYqjeGAqEBPEBSIERkCaJue2BWbeA7jwcYACMbAl4CWI+NYBVAyQVmkOuNPxTvVubAUWJZQAJxh2ZAD8RKNyaVv7r+c5AH6MUbMKwW5NZKtamP26RgiPjkwruLMxpgBhvr29ZTEAmwsAtq3gMdbpNDIjfSBWaTUFrFJOVlvGQHrAm9XNPmEAwCqc7UWbpoDh2/WdAf4B+LQj08eGOFAAAAAASUVORK5CYII=",zombie:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAclBMVEUAAAAAzMyPj495nGVxlVtvlVxtlVtnkFYAr69ph1Z6d3cAqKgAnp5ae0gAmZlra2tXdUdOezZhYWFIdTJJcTVWScwAf39KaS0+aS07Yi9MTExGOqU2WiUAaGg4UiYAW1s/Pz86MYkwKHImIVsoKCgaGho5R/XAAAAAAXRSTlMAQObYZgAAAkJJREFUeNrtk2FzmzAMhpPNm+0akmjVqFRGEsPy///iXtnlml27laRfeWwswZ0eI3NsZkRFVWwUdHMrIqzKitKC3C4gVjhgOQLVOwQEAcvdAmViwZQiuKOFsj2J3i1gZWEVrAqEbxaIlkHMAni5QK15VRSpwTI/UFuYFnx/q2ZCQYyMEq5PSKWMJW8gZSv//av75rneqcJFxMqLemdiiq1zLraR6llimEtk2fdnpvZycfFyaeGScggkqKclLQjqWShG1RhR/XIKCEgWtCByLJs96tOTPiIROoogMhEvO0QWqf+AWqXdsQIEWfhP/AS/wXy//VXYji/Mz8N2G5iIPxYcC28EW0CsnxOwqnyqhTf/yQhy3/fjNE096Lru1CRl0dR0oGlSCAn5bteZYI7vCcYiGIYuhUa1CQH5kFIAVRbAHP8S9FeCoQhC2XgAKSDB8h9BroIMQc79aRhOwQwoqzkyTMt3Ke3m+CrIVWAxwzacTiZIRQBCgwyXgAgEtGAzk/tcdh6R2ETNkEyAOSCfBcykLjovyuy9j68CVPUAS4lWZB3AkQa8b1WlJMzqW9eykvhD9O8IkM1foR5Bg3wwlzlQJ967loQ0Ru+vD7EKMjJggnJsuKosYZpA2TsXiVnjdQvnsxVa+fm8B93QdbanlRUBkoBFWMk574RF/PUbPJ9R+OVhj/BsgnEap1xIoZsmyO1EcyYI0IFXQTz4+CoA+4f93uIPAMHYF3JTcyRokkmodbFVEo6HeNisrKysrKysrPyDP68WY0lh7YK7AAAAAElFTkSuQmCC",zombie_villager:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAt1BMVEVskkNwbWdVczVjW1tWYC5jVC9IYC4/WChUSSg4TSM4OyExPSUuNyQAAAD///+Iqlt3oEd2kk9skkOCe3RyhFFmij9ffzdwbWdedUVXdUdVczVjW1tUZkBOazBgXjhOaC1HZTdQVzdUTU1PUTNBWSiZKys/WChcQjpURypDTCQ4TSNKPj42TCpJQSRMODNCNzcxRB8vQh44OyExPSUsPRw7MTEyNyQqOSE9LSk2MiAzJBEgKxgjIyNApSiHAAAADnRSTlMAAAAAAAAAAAAAAAAAAKroblcAAAMeSURBVHja7dF/X9s2EMfxrGs3oGtxHXTSztIuE+mtyG1+2HNKxp7/49pXIoHSUhxe65/52E6cmHs7MpMXuxxR3p0iFF6+3Gz+vPztlxdP9AZN9h8IfQ1c/vEMgMkgItV/kYbN5upys/nw4dWhAOarGkS4Ay6vthmYfL8HAHNViD2w3VxdbbfPAGoMV1VVuz2w/fTpeUBt6ro6r4yWwtnZycnJ2dmrgwHMwqjODbmADgeIqrx6Q5XBKvALSlRyOCZjAJM5ZyJig0dgKkN3sw4HjwMEwTAFNlRfuIpDnkIF4DAOMAsRgGAMuYvzEBwmQRTG0SGAGlYX5hfv8AjfzYMT54QzwJ4OAkRFHc//Kc2ZhJQ9xvHCBwDCAkGE3r4P4f1bkuxB9ThRFR4FNCVFqQ9zFHp8wr7OX616XBsFUt+vUwbmf6M5ZtI6rYHgwqpfrQ4BUhb6eanv0rpba5dS32G8GwdOT1+f5iYjjQG/PvmHTwE/o5/Q5EFWhVnUNnc9FxBCfChgUd91/et7gDGu9AjgyNHnm8833wIQvgDoe7+A6to9CnQQvgQYgDwCmLqmGwhjS1Bh4scAMiQPgCZnse2zdmqbiHkS2Qm2URG11iEict47T6gAbRObaNvYNjhpbIyxzIsw42War8a4U/M8Nod5vQdibNs4DC0MGzNgpzGlJEiTLfMQUIwYNo68I3WexO2BdgCgQ3awNVlJuzrcGpP5FVkhckCIRLGLuwVaTaopJLyBGuK9gPmptRbfNFMc1qozZfFCglQKoIgDOeagA7Ym3zEOXa7MN1gASBBRlQwZQ96JOBwF4MCeidg5puQ4YMELPNgO5UeXsWVEgAYVJlMALkIBKIAAwHnH0SI8FE2xybddYr5tmzZFJAwAeWYIorcACzE5KC4wBwDLYVgu24gwPeR57KlFHpN1XRsiZgehACKz2wUJ+xnOF7uu/1pcL77Kq6caZUD2/0ZFAk9zM9XrfYvrb1L1TPXvNbFnhwqQEPOKZbVKaZW0aWIpvy+bZVOypUYT7vFx9tGz9zOcFuDN/+gIHIEjcASOwBH44cB/1lQM4ZNhKecAAAAASUVORK5CYII="};h();p();m();Lt();var pP=class{constructor(e,t){this.object=e;this.animations=t}timer=new qs;animatedObjects=new Set;state;createAnimationState(){let e=new Jf(this.object),t=new Map;for(let n of this.animations)t.set(n.name,e.clipAction(n));return this.state={mixer:e,animations:this.animations,actions:t,speed:1,loop:!0},this.object.traverse(n=>{if(n instanceof Ke||n instanceof Di||n instanceof yr||n instanceof Zi){let r=n.onBeforeRender;n.onBeforeRender=(s,a,o,l,c,u)=>{this.timer.update(performance.now());let d=this.timer.getDelta();e.update(d),r?.(s,a,o,l,c,u)}}}),this.animatedObjects.add(this.object),this.state}playAnimation(e,t,n){let r=this.state.actions.get(e);if(!r)return console.warn(`Animation "${e}" not found`),!1;this.state.mixer.stopAllAction();let s=t??this.state.loop;return r.setLoop(s?d1:u1,1/0),r.clampWhenFinished=!s,n===void 0?r.timeScale=this.state.speed:r.timeScale=n,r.reset().fadeIn(.1).play(),!0}updateAnimationParams(e,t){e!==void 0&&(this.state.speed=e),t!==void 0&&(this.state.loop=t);for(let n of this.state.actions.values())e!==void 0&&(n.timeScale=e),t!==void 0&&(n.setLoop(t?d1:u1,1/0),n.clampWhenFinished=!t)}stopAnimations(){this.state.mixer.stopAllAction()}getDelta(){return this.timer.update(performance.now()),this.timer.getDelta()}};function H7e(i,e){let t=new pP(i,e);return t.createAnimationState(),t}function qXe(i){return"parts"in i&&Array.isArray(i.parts)?i.parts:[i]}var GXe={up:{dir:[0,1,0],u0:[0,0,1],v0:[0,0,0],u1:[1,0,1],v1:[0,0,1],corners:[[0,1,1,0,0],[1,1,1,1,0],[0,1,0,0,1],[1,1,0,1,1]]},down:{dir:[0,-1,0],u0:[1,0,1],v0:[0,0,0],u1:[2,0,1],v1:[0,0,1],corners:[[1,0,1,0,0],[0,0,1,1,0],[1,0,0,0,1],[0,0,0,1,1]]},east:{dir:[1,0,0],u0:[0,0,0],v0:[0,0,1],u1:[0,0,1],v1:[0,1,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],u0:[1,0,1],v0:[0,0,1],u1:[1,0,2],v1:[0,1,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],u0:[0,0,1],v0:[0,0,1],u1:[1,0,1],v1:[0,1,1],corners:[[1,0,0,0,1],[0,0,0,1,1],[1,1,0,0,0],[0,1,0,1,0]]},south:{dir:[0,0,1],u0:[1,0,2],v0:[0,0,1],u1:[2,0,2],v1:[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 q7e(i,e){return i[0]*e[0]+i[1]*e[1]+i[2]*e[2]}function WXe(i,e,t,n,r=!1,s=64,a=64,o=!1,l=[]){let c=new _r(0,0,0);n.rotation&&(c.x=-n.rotation[0]*Math.PI/180,c.y=-n.rotation[1]*Math.PI/180,c.z=-n.rotation[2]*Math.PI/180);for(let{dir:u,corners:d,u0:f,v0:v,u1:g,v1:b}of Object.values(GXe)){let y=Math.floor(i.positions.length/3),_=u[0]!==0,x=[];for(let w of d){let S,A;r?(S=(n.uv[0]+w[3]*n.size[0])/s,A=(n.uv[1]+w[4]*n.size[1])/a):(S=(n.uv[0]+q7e(w[3]?g:f,n.size))/s,A=(n.uv[1]+q7e(w[4]?b:v,n.size))/a);let k=_&&o?w[0]^1:w[0],C=w[1],I=_&&o?w[2]^1:w[2],T=n.inflate??0,L=new $(n.origin[0]+k*n.size[0]+(k?T:-T),n.origin[1]+C*n.size[1]+(C?T:-T),n.origin[2]+I*n.size[2]+(I?T:-T));L=L.applyEuler(c),L=L.sub(t.position),L=L.applyEuler(t.rotation),L=L.add(t.position),i.positions.push(L.x,L.y,L.z),i.normals.push(u[0],u[1],u[2]),x.push(S,A),i.skinIndices.push(e,0,0,0),i.skinWeights.push(1,0,0,0)}if(o)for(let w=0;w+1<d.length;w+=2){let S=w*2,A=x.slice(S,S+4);x[S]=A[2],x[S+1]=A[_?1:3],x[S+2]=A[0],x[S+3]=A[_?3:1]}i.uvs.push(...x),i.indices.push(y,y+1,y+2,y+2,y+1,y+3)}}function Xc(i,e,t,n={},r={}){let s=t.texturewidth??64,a=t.textureheight??64,o,l=e.startsWith("block:"),c=i?.material.map;if(l){if(!i)throw new Error("worldRenderer is required for block textures");let x=e.slice(6),w=i.resourcesManager.currentResources.blocksAtlasJson.textures[x];w?(s=c?.image.width??s,a=c?.image.height??a,o=[w.u,w.v]):console.error(`Unknown block ${x}`)}let u={},d={positions:[],normals:[],uvs:[],indices:[],skinIndices:[],skinWeights:[]},f=0;for(let x of t.bones){let w=new ho;if(x.pivot&&(w.position.x=x.pivot[0],w.position.y=x.pivot[1],w.position.z=x.pivot[2]),x.bind_pose_rotation?(w.rotation.x=-x.bind_pose_rotation[0]*Math.PI/180,w.rotation.y=-x.bind_pose_rotation[1]*Math.PI/180,w.rotation.z=-x.bind_pose_rotation[2]*Math.PI/180):x.rotation&&(w.rotation.x=-x.rotation[0]*Math.PI/180,w.rotation.y=-x.rotation[1]*Math.PI/180,w.rotation.z=-x.rotation[2]*Math.PI/180),n.rotation?.[x.name]&&(w.rotation.x-=(n.rotation[x.name].x??0)*Math.PI/180,w.rotation.y-=(n.rotation[x.name].y??0)*Math.PI/180,w.rotation.z-=(n.rotation[x.name].z??0)*Math.PI/180),w.name=`bone_${x.name}`,u[x.name]=w,x.cubes)for(let S of x.cubes){let A=[];WXe(d,f,w,S,l,s,a,x.mirror,A),A.length&&(r.errors??=[],r.errors.push(...A.map(k=>`Bone ${x.name}: ${k}`)))}f++}let v=[];for(let x of t.bones)x.parent&&u[x.parent]?u[x.parent].add(u[x.name]):v.push(u[x.name]);let g=new ll(Object.values(u)),b=new dt;b.setAttribute("position",new Je(d.positions,3)),b.setAttribute("normal",new Je(d.normals,3)),b.setAttribute("uv",new Je(d.uvs,2)),b.setAttribute("skinIndex",new L0(d.skinIndices,4)),b.setAttribute("skinWeight",new Je(d.skinWeights,4)),b.setIndex(d.indices);let y=new Ss({transparent:!0,alphaTest:.1,side:Cn}),_=new va(b,y);if(_.add(...v),_.bind(g),_.scale.set(1/16,1/16,1/16),o){let x=c.clone();x.offset.set(o[0],o[1]),x.needsUpdate=!0,y.map=x}else u4(e,x=>{y.map||(x.magFilter=ct,x.minFilter=ct,x.flipY=!1,x.wrapS=bs,x.wrapT=bs,y.map=x)},()=>{let x=y.map;if(!x)return;let w=x.image.width;w&&s!==w&&(x.repeat.x=s/w);let S=x.image.height;S&&a!==S&&(x.repeat.y=a/S),y.needsUpdate=!0});return _}var jXe=[{pattern:"furnace_minecart",target:"minecart"},{pattern:"spawner_minecart",target:"minecart"},{pattern:"chest_minecart",target:"minecart"},{pattern:"hopper_minecart",target:"minecart"},{pattern:"command_block_minecart",target:"minecart"},{pattern:"tnt_minecart",target:"minecart"},{pattern:"glow_item_frame",target:"item_frame"},{pattern:"glow_squid",target:"squid"},{pattern:"trader_llama",target:"llama"},{pattern:"chest_boat",target:"boat"},{pattern:"spectral_arrow",target:"arrow"},{pattern:"husk",target:"zombie"},{pattern:"zombie_horse",target:"horse"},{pattern:"donkey",target:"horse"},{pattern:"skeleton_horse",target:"horse"},{pattern:"mule",target:"horse"},{pattern:"ocelot",target:"cat"},{pattern:/_minecraft$/,target:"minecraft"},{pattern:/_boat$/,target:"boat"},{pattern:/_raft$/,target:"boat"},{pattern:/_horse$/,target:"horse"},{pattern:/_zombie$/,target:"zombie"},{pattern:/_arrow$/,target:"zombie"}];function G7e(i){for(let e of jXe)if(typeof e.pattern=="string"){if(e.pattern===i)return e.target}else if(e.pattern.test(i))return e.target}var W7e=i=>i7e[i],j7e={zombie:1.85,husk:1.85,arrow:.0025},$Xe={zombie:new At(0,1,0),husk:new At(0,1,0),boat:new At(0,-1,0),arrow:new At(0,-.9,0)},o0=class{mesh;animations;animationControllers=[];constructor(e,t,n,r={},s={}){let a=t,o=G7e(t);if(o&&(t=o,s.tempMap=o),r.customModel){let c=qXe(r.customModel);this.mesh=new Ut;for(let u=0;u<c.length;u++){let{modelPath:d,modelType:f,metadata:v}=c[u],g=new Ut;switch(g.name=`custom_part_${u}`,f){case"gltf":{new Rb().parseAsync(d,"").then(y=>{if(g.add(y.scene),v?.scale){let _=v.scale;g.scale.set(_,_,_)}if(v?.offset){let{x:_=0,y:x=0,z:w=0}=v.offset;g.position.set(_,x,w)}if(v?.texture){let _=yh(v.texture);g.traverse(x=>{x instanceof Ke&&(x.material=new _t({map:_,transparent:!0,alphaTest:.1}))})}if(y.animations?.length){this.animations=[...this.animations??[],...y.animations];let _=H7e(g,y.animations);this.animationControllers.push(_);let x=v?.animation,w=v?.animationLoop??!0;x?_.playAnimation(x,w):_.playAnimation(y.animations[0].name,w)}}).catch(y=>{console.error("Failed to load GLTF model:",y)});break}case"obj":{let y=new N5().parse(d);if(v?.scale){let{scale:_}=v;y.scale.set(_,_,_)}if(v?.offset){let{x:_=0,y:x=0,z:w=0}=v.offset;y.position.set(_,x,w)}if(v?.texture){let _=yh(v.texture),x=new _t({map:_,transparent:!0,alphaTest:.1});y.traverse(w=>{w instanceof Ke&&(w.material=x)})}g.add(y);break}case"bedrock":{let b=JSON.parse(d);if(v?.scale&&g.scale.set(v.scale,v.scale,v.scale),v?.offset){let{x:y=0,y:_=0,z:x=0}=v.offset;g.position.set(y,_,x)}for(let[y,_]of Object.entries(b.geometry)){let x=v?.textures?.[y]??b.textures?.[y];if(!x)continue;let w=Xc(n,x.endsWith(".png")||x.startsWith("data:image/")||x.startsWith("block:")?x:x+".png",_,r,s);w.name=`geometry_${y}`,g.add(w)}break}}this.mesh.add(g)}s.type=c.length===1?c[0].modelType:"special";return}if(jd[t]){let c=new N5,u={zombie_horse:`textures/${e}/entity/horse/horse_zombie.png`,husk:Q6e,skeleton_horse:`textures/${e}/entity/horse/horse_skeleton.png`,donkey:`textures/${e}/entity/horse/donkey.png`,mule:`textures/${e}/entity/horse/mule.png`,ocelot:e7e,arrow:t7e,spectral_arrow:n7e,tipped_arrow:r7e},d=u[a]||u[t];d&&(s.textureMap=!0);let f=d||mP[t];if(mP[t]&&(s.isHardcodedTexture=!0),!f)throw new Error(`No texture for ${t}`);let v=yh(f),g=new _t({map:v,transparent:!0,alphaTest:.1}),b=c.parse(jd[t]),y=j7e[a]||j7e[t];y&&b.scale.set(y,y,y);let _=$Xe[a];_&&b.position.set(_.x,_.y,_.z),b.traverse(x=>{x instanceof Ke&&(x.material=g,x.name==="Head layer"&&(x.visible=!1),x.name==="Head"&&r.rotation?.head&&(x.rotation.x-=(r.rotation.head.x??0)*Math.PI/180,x.rotation.y-=(r.rotation.head.y??0)*Math.PI/180,x.rotation.z-=(r.rotation.head.z??0)*Math.PI/180))}),this.mesh=b,s.type="obj";return}let l=W7e(t);if(l){this.mesh=new Ut;for(let[c,u]of Object.entries(l.geometry)){let d=r.textures?.[c]??l.textures[c];if(!d)continue;let f=Xc(n,d.endsWith(".png")||d.startsWith("data:image/")||d.startsWith("block:")?d:d+".png",u,r,s);f.name=`geometry_${c}`,this.mesh.add(f)}s.type="bedrock"}}playAnimation(e,t=!1){if(!this.animationControllers.length){console.warn("No animation controller available");return}let n=!1;for(let r of this.animationControllers)r.playAnimation(e,t)&&(n=!0);n||console.warn(`Animation "${e}" not found on any custom model part`)}update(e){}static getStaticData(e){if(e=G7e(e)||e,jd[e])return{boneNames:[]};let t=W7e(e);if(!t)throw new Error(`Unknown entity ${e}`);return{boneNames:Object.values(t.geometry).flatMap(n=>n.name)}}};globalThis.EntityMesh=o0;h();p();m();h();p();m();var $7e="";h();p();m();var X7e="";h();p();m();var Y7e="";h();p();m();var J7e="";h();p();m();var K7e="";h();p();m();var Z7e="";h();p();m();var Q7e="";h();p();m();var e_e="";h();p();m();var t_e="";h();p();m();var n_e="";h();p();m();var r_e="";h();p();m();var i_e="";h();p();m();var s_e="";h();p();m();var a_e="";h();p();m();var o_e="";h();p();m();var vP="";var Yc={skull:{bones:[{name:"head",pivot:[0,12,0],cubes:[{origin:[-4,0,-4],size:[8,8,8],uv:[0,0],inflate:1}]},{name:"overlay",parent:"head",pivot:[0,12,0],cubes:[{origin:[-4,0,-4],size:[8,8,8],uv:[32,0],inflate:1.2}]}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},head:{bones:[{name:"armor",pivot:[0,12,0]},{name:"head",parent:"armor",pivot:[0,12,0],cubes:[{origin:[-4,23,-4],size:[8,8,8],uv:[0,0],inflate:1}]},{name:"overlay",parent:"head",pivot:[0,12,0],cubes:[{origin:[-4,23,-4],size:[8,8,8],uv:[32,0],inflate:1.2}]}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},chest:{bones:[{name:"armor",pivot:[0,12,0]},{name:"body",parent:"armor",pivot:[0,13,0],cubes:[{origin:[-4,12,-2],size:[8,12,4],uv:[16,16],inflate:1}]},{name:"leftarm",parent:"armor",pivot:[5,10,0],cubes:[{origin:[4,12,-2],size:[4,12,4],uv:[40,16],inflate:.85}]},{name:"rightarm",parent:"armor",pivot:[-5,10,0],cubes:[{origin:[-8,12,-2],size:[4,12,4],uv:[40,16],inflate:.85}],mirror:!0}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},legs:{bones:[{name:"armor",pivot:[0,12,0]},{name:"body",parent:"armor",pivot:[0,13,0],cubes:[{origin:[-4,12,-2],size:[8,12,4],uv:[16,16],inflate:.5}]},{name:"leftleg",parent:"armor",pivot:[1.9,1,0],cubes:[{origin:[-.1,0,-2],size:[4,12,4],uv:[0,16],inflate:.5}]},{name:"rightleg",parent:"armor",pivot:[-1.9,1,0],cubes:[{origin:[-3.9,0,-2.01],size:[4,12,4],uv:[0,16],inflate:.5}],mirror:!0}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32},feet:{bones:[{name:"armor",pivot:[0,12,0]},{name:"leftleg",parent:"armor",pivot:[1.9,1,0],cubes:[{origin:[-.1,0,-2],size:[4,12,4],uv:[0,16],inflate:.8}]},{name:"rightleg",parent:"armor",pivot:[-1.9,1,0],cubes:[{origin:[-3.9,.01,-2.01],size:[4,12,4],uv:[0,16],inflate:.8}],mirror:!0}],visible_bounds_width:1.5,visible_bounds_offset:[0,.5,0],texturewidth:64,textureheight:32}};var l_e={leather_layer_1:t_e,leather_layer_1_overlay:n_e,leather_layer_2:r_e,leather_layer_2_overlay:i_e,chainmail_layer_1:$7e,chainmail_layer_2:X7e,iron_layer_1:Q7e,iron_layer_2:e_e,diamond_layer_1:Y7e,diamond_layer_2:J7e,golden_layer_1:K7e,golden_layer_2:Z7e,netherite_layer_1:s_e,netherite_layer_2:a_e,turtle_layer_1:o_e};var h_e=_h(is),JXe=120,gP=i=>i*(Math.PI/180);function KXe(i){return i<0&&(i=4294967295+i+1>>>0),i.toString(16)}function ZXe(i){if(i===void 0)return;if(parseInt(i,10)===0)return"rgba(0, 0, 0, 0)";let e=KXe(parseInt(i,10));return e.length===8?`#${e.slice(2,8)}${e.slice(0,2)}`:`#${e}`}function c_e(i,e){return i===void 0?e:i instanceof zt?i:Array.isArray(i)?new zt(i[0],i[1],i[2],i[3]):new zt(i.x,i.y,i.z,i.w)}function Xo(i,e){return i===void 0?e??new _r:i instanceof _r?i:i.yaw!==void 0&&i.pitch!==void 0&&i.roll!==void 0?new _r(-gP(i.pitch),-gP(i.yaw),gP(i.roll),"ZYX"):i.x!==void 0&&i.y!==void 0&&i.z!==void 0?new _r(i.z,i.y,i.x,"ZYX"):Array.isArray(i)?new _r(i[0],i[1],i[2]):e??new _r}var Lb=Math.PI*2;function QXe(i,e){let t=((e-i)%Lb+Lb)%Lb;return t>Math.PI?t-Lb:t}function m_e({username:i,nameTagBackgroundColor:e="rgba(0, 0, 0, 0.3)",nameTagTextOpacity:t=255},{fontFamily:n="mojangles"},r){let s=bi(64,64),a=(0,yP.default)(r),o=s.getContext("2d");if(!o)throw new Error("Could not get 2d context");let l=48,c=5;o.font=`${l}px ${n}`;let u=String(typeof i=="string"?i:new a(i).toString()).split(`
|
|
29382
|
-
`),d=0;for(let v of u){let g=o.measureText(v).width+c*2;g>d&&(d=g)}if(s.width=d,s.height=(l+c)*u.length,o.fillStyle=e,o.fillRect(0,0,s.width,s.height),o.globalAlpha=t/255,!!DC(i,a,s,l,"white",-c+l))return o.globalAlpha=1,s}globalThis.getUsernameTexture=m_e;var Ob=(i,e,t,n)=>{for(let l of t.children)l.name==="nametag"&&l.removeFromParent();if(i.username===void 0||i.username===null||(typeof i.username=="string"?i.username:new((0,yP.default)(n))(i.username).toString()).startsWith("EMPTY"))return;let s=m_e(i,e,n);if(!s)return;let a=new sn(s);a.needsUpdate=!0;let o;if(i.nameTagFixed){let l=new qn,c=new _t({map:a});c.transparent=!0,o=new Ke(l,c),o.rotation.set(i.pitch,Ot.degToRad(i.yaw+180),0),o.position.y+=i.height+.3}else{let l=new xs({map:a});o=new Zi(l),o.position.y+=i.height+.6}return o.renderOrder=1e3,o.scale.set(s.width*.005,s.height*.005,1),i.nameTagRotationRight&&o.applyQuaternion(i.nameTagRotationRight),i.nameTagScale&&o.scale.multiply(i.nameTagScale),i.nameTagRotationLeft&&o.applyQuaternion(i.nameTagRotationLeft),i.nameTagTranslation&&o.position.add(i.nameTagTranslation),o.name="nametag",t.add(o),o},u_e={},eYe=i=>i.charAt(0)===i.charAt(0).toUpperCase();function d_e(i){if(i!=null){if(Array.isArray(i))return i;if(typeof i=="object"){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&&t.every((n,r)=>n===r))return t.map(n=>e[String(n)])}}}function tYe(i,e,t,n,r){if(e.name)try{let c=(eYe(e.name)?LC(e.name):e.name).toLowerCase(),u=new o0("1.16.4",c,t,r);if(u.mesh)return Ob(e,n,u.mesh,t.version),u.mesh}catch(c){reportError?.(c)}if(!i||!(0,f_e.isEntityAttackable)(i,e))return;let s=new Mn(e.width,e.height,e.width);s.translate(0,e.height/2,0);let a=new _t({color:16711935}),o=new Ke(s,a);return(u_e[e.name]=(u_e[e.name]||0)+1)<6&&Ob({username:e.name,height:e.height},n,o,t.version),o}var Nb=class{constructor(e,t){this.worldRenderer=e;this.mcData=t;this.debugMode="none",this.onSkinUpdate=()=>{},this.watchResourcesUpdates()}entities={};playerEntity=null;entitiesOptions={fontFamily:"mojangles"};debugMode;onSkinUpdate;clock=new qs;currentlyRendering=!0;cachedMapsImages={};itemFrameMaps={};pendingModelOverrides=new Map;get entitiesByName(){let e={};for(let t of Object.values(this.entities))t.realName&&(e[t.realName]=e[t.realName]||[],e[t.realName].push(t));return e}get entitiesRenderingCount(){return Object.values(this.entities).filter(e=>e.visible).length}getDebugString(){let e=Object.keys(this.entities).length,t=this.entitiesRenderingCount,n=Object.values(this.entities).filter(s=>s.playerObject),r=n.filter(s=>s.visible);return`${t}/${e} ${r.length}/${n.length}`}handlePlayerEntity(e){if(!this.playerEntity){let t=new bt;t.originalEntity={...e,name:"player"};let n=new bt,r=this.setupPlayerObject(e,n,{});t.playerObject=r,t.add(n),t.name="player_entity",this.playerEntity=t,this.worldRenderer.scene.add(t),this.updatePlayerSkin(e.id,e.username,e.uuid??void 0,is)}this.playerEntity.originalEntity={...e,name:"player"},e.position&&(this.worldRenderer.sceneOrigin.getWorldPosition(this.playerEntity)||this.worldRenderer.sceneOrigin.track(this.playerEntity),this.playerEntity.position.set(e.position.x,e.position.y,e.position.z)),e.yaw!==void 0&&(this.playerEntity.rotation.y=e.yaw),this.updateEntityEquipment(this.playerEntity,e)}clear(){for(let e of Object.values(this.entities))this.worldRenderer.sceneOrigin.removeAndUntrack(e),hr(e);this.entities={},this.currentSkinUrls={},this.playerEntity&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.playerEntity),hr(this.playerEntity),this.playerEntity=null)}reloadEntities(){for(let e of Object.values(this.entities))this.update({...e.originalEntity,delete:!0},{}),this.update(e.originalEntity,{})}watchResourcesUpdates(){this.worldRenderer.resourcesManager.on("assetsTexturesUpdated",()=>this.reloadEntities()),this.worldRenderer.resourcesManager.on("assetsInventoryReady",()=>this.reloadEntities())}setDebugMode(e,t=null){this.debugMode=e;for(let n of t?[t]:Object.values(this.entities)){let r=n.children.find(s=>s.name==="debug");r.visible=!1,this.debugMode==="basic"&&(r.visible=!0)}}setRendering(e,t=null){this.currentlyRendering=e;for(let n of t?[t]:Object.values(this.entities))e?this.worldRenderer.scene.children.includes(n)||this.worldRenderer.scene.add(n):this.worldRenderer.scene.remove(n)}playEntityModelAnimation(e,t,n=!1){let r=this.entities[e];r&&r.traverse(s=>{s instanceof o0&&s.playAnimation(t,n)})}render(){let e=this.worldRenderer.worldRendererConfig.renderEntities;e!==this.currentlyRendering&&this.setRendering(e),this.clock.update(performance.now());let t=Math.min(this.clock.getDelta(),1/30),n=this.worldRenderer.viewerChunkPosition,r=10*10;for(let[s,a]of[...Object.entries(this.entities),["player_entity",this.playerEntity]]){if(!a)continue;let o=s==="player_entity";if(o){let c=this.worldRenderer.playerStateUtils.isThirdPerson();if(a.visible=c,c){let u=this.worldRenderer.playerStateReactive.eyeHeight;a.position.set(this.worldRenderer.cameraWorldPos.x,this.worldRenderer.cameraWorldPos.y-u,this.worldRenderer.cameraWorldPos.z)}}let{playerObject:l}=a;if(l?.animation&&l.animation.update(l,t),a.traverse(c=>{c instanceof o0&&c.update(t)}),!o&&n&&a.position){let c=a.position.x-n.x,u=a.position.y-n.y,d=a.position.z-n.z,f=c*c+u*u+d*d,v=this.worldRenderer.entitySectionKey(a.position.x,a.position.y,a.position.z),g=this.worldRenderer.isSectionOcclusionVisible(v);a.visible=!!((f<r||this.worldRenderer.shouldObjectVisible(a))&&g),this.maybeRenderPlayerSkin(s)}if(a.visible&&this.syncArmorPositions(a),o&&a.visible){let c=this.worldRenderer.cameraShake.getBaseRotation();a.rotation.set(0,c.yaw,0),a.traverse(u=>{u.name==="head"&&u.rotation.set(-c.pitch,0,0)})}}}syncArmorPositions(e){e.playerObject&&e.traverse(t=>{if(!t.name.startsWith("geometry_armor_"))return;let{skin:n}=e.playerObject;switch(t.name){case"geometry_armor_head":t.children[0]?.children[0]&&t.children[0].children[0].rotation.set(-n.head.rotation.x,n.head.rotation.y,n.head.rotation.z,n.head.rotation.order);break;case"geometry_armor_legs":t.children[0]&&(t.children[0].children[2]&&t.children[0].children[2].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,n.leftLeg.rotation.z,n.leftLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order));break;case"geometry_armor_feet":t.children[0]&&(t.children[0].children[0]&&t.children[0].children[0].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,-n.leftLeg.rotation.z,n.leftLeg.rotation.order));break}})}getPlayerObject(e){return this.playerEntity?.originalEntity.id===e?this.playerEntity?.playerObject:this.entities[e]?.playerObject}uuidPerSkinUrlsCache={};currentSkinUrls={};isCanvasBlank(e){return!e.getContext("2d")?.getImageData(0,0,e.width,e.height).data.some(n=>n!==0)}async updatePlayerSkin(e,t,n,r,s=void 0){r!==is&&this.loadedSkinEntityIds.add(String(e)),n&&((typeof r=="string"||typeof s=="string")&&(this.uuidPerSkinUrlsCache[n]={}),typeof r=="string"&&(this.uuidPerSkinUrlsCache[n].skinUrl=r),typeof s=="string"&&(this.uuidPerSkinUrlsCache[n].capeUrl=s),r===!0&&(r=this.uuidPerSkinUrlsCache[n]?.skinUrl??r),s??=this.uuidPerSkinUrlsCache[n]?.capeUrl);let o=this.getPlayerObject(e);if(!o)return;if(r===!0){if(!t)return;let c=await uc(t,"skin");if(!this.getPlayerObject(e)||!c)return;r=c}if(typeof r!="string")throw new Error("Invalid skin url");if(this.currentSkinUrls[String(e)]===r){if(s){if(s===!0&&t){let c=await uc(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}return}r!==is&&(this.currentSkinUrls[String(e)]=r);let l=this.worldRenderer.worldRendererConfig.renderEars||t==="deadmau5";this.loadAndApplySkin(e,r,l).then(async()=>{if(s){if(s===!0&&t){let c=await uc(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}}),o.cape.visible=!1,s||(o.backEquipment=null,o.elytra.map=null,o.cape.map&&o.cape.map.dispose(),o.cape.map=null)}async applyTemporaryPlayerSkinOverride(e,t,n,r){this.worldRenderer.playerStateReactive.playerSkin=e,await this.updatePlayerSkin(t,n,r,e,void 0)}async loadAndApplySkin(e,t,n){let r=this.getPlayerObject(e);if(r)try{let s;if(r=this.getPlayerObject(e),!r)return;let a,o;if(t===is){let c=await Ro(is);s=c.image,a=new Nn(c.canvas),o=c.canvas}else{let{canvas:c,image:u}=await Ro(t);s=u,a=new Nn(c),o=c}a.magFilter=ct,a.minFilter=ct,a.needsUpdate=!0,r.skin.map=a,r.skin.modelType=ZE(o),r.skin.isCustom=t!==is,OC(r);let l;if(s?n&&(l=bi(64,64),QE(l,s),n=!this.isCanvasBlank(l)):n=!1,n){let c=new Nn(l);c.magFilter=ct,c.minFilter=ct,c.needsUpdate=!0,r.ears.map=c,r.ears.visible=!0}else r.ears.map=null,r.ears.visible=!1;this.onSkinUpdate?.()}catch(s){console.error("Error loading skin:",s)}}async loadAndApplyCape(e,t){let n=this.getPlayerObject(e);if(n)try{let{canvas:r,image:s}=await Ro(t);if(n=this.getPlayerObject(e),!n)return;KE(r,s);let a=new Nn(r);a.magFilter=ct,a.minFilter=ct,a.needsUpdate=!0,n.cape.map=a,n.cape.visible=!0,n.elytra.map=a,this.onSkinUpdate?.(),n.backEquipment||(n.backEquipment="cape")}catch(r){console.error("Error loading cape:",r)}}debugSwingArm(){let e=Object.values(this.entities).find(n=>n.playerObject?.animation);if(!e||!e.playerObject?.animation)return;let t=e.playerObject.animation;t.swingArm&&t.swingArm()}applyMovementAnimation(e,t){let n=e.animation;if(n){if(t==="oneSwing"){n.swingArm();return}n.switchAnimationCallback=null,n.isMoving=t==="walking"||t==="running"||t==="crouchWalking",n.isRunning=t==="running",n.isCrouched=t==="crouch"||t==="crouchWalking"}}playAnimation(e,t){let n=e==="player_entity"?this.playerEntity?.playerObject:this.getPlayerObject(e)??this.playerEntity?.playerObject;n&&this.applyMovementAnimation(n,t)}parseEntityLabel(e){if(e)try{if(e.type==="string")return e.value;let t=typeof e=="string"?rg.default.simplify(rg.default.parse(e)):Db.default.simplify(e);return RC(t).map(this.textFromComponent).join("")}catch{return e}}textFromComponent(e){return typeof e=="string"?e:e.text??""}getItemMesh(e,t,n=!1,r){!e.nbt&&e.nbtData&&(e.nbt=e.nbtData);let s=this.worldRenderer.getItemRenderData(e,t);if(!(r&&r===s?.modelName)){if(s&&"resolvedModel"in s){let a=Ove(this.worldRenderer.material,s.resolvedModel,s.modelName,this.worldRenderer.resourcesManager.currentResources.worldBlockProvider,this.worldRenderer.resourcesManager.currentResources.mcData),o=1;t["minecraft:display_context"]==="ground"?o=.5:t["minecraft:display_context"]==="thirdperson"&&(o=6),a.scale.set(o,o,o);let l=new bt;return l.add(a),{mesh:l,isBlock:!0,modelName:s.modelName}}if(s){let a=s.renderInfo?.texture==="blocks"?this.worldRenderer.material.map:this.worldRenderer.itemsTexture,{u:o,v:l,su:c,sv:u}=s,v=U6e(a,{u:o,v:l,sizeX:c??1,sizeY:u??1},{faceCamera:n,use3D:!n}),g=1;return t["minecraft:display_context"]==="ground"?g=.5:t["minecraft:display_context"]==="thirdperson"&&(g=6),v.mesh.scale.set(g,g,g),{mesh:v.mesh,isBlock:!1,modelName:s.modelName,cleanup:v.cleanup}}}}setVisible(e,t){t?e.scale.set(1,1,1):e.scale.set(0,0,0)}update(e,t){let n=e.name==="player";(e.name==="zombie_villager"||e.name==="husk")&&(t.texture=`textures/1.16.4/entity/${e.name==="zombie_villager"?"zombie_villager/zombie_villager.png":`zombie/${e.name}.png`}`),e.name==="glow_item_frame"&&(t.textures||(t.textures=[]),t.textures.background="block:glow_item_frame");let r=this.entities[e.id],s=!r;if(e.delete){if(!r)return;r.userData._posTween?.stop(),r.userData._rotTween?.stop(),r.additionalCleanup&&r.additionalCleanup(),r.traverse(g=>{g.additionalCleanup&&g.additionalCleanup()}),this.onRemoveEntity(e),this.worldRenderer.sceneOrigin.removeAndUntrack(r),hr(r),delete this.entities[e.id];return}let a;if(r===void 0){this.beforeEntityAdded(e);let g=new bt;if(g.originalEntity=e,e.name==="item"||e.name==="tnt"||e.name==="falling_block"||e.name==="snowball"||e.name==="egg"||e.name==="ender_pearl"||e.name==="experience_bottle"||e.name==="splash_potion"||e.name==="lingering_potion"){let _=e.name==="tnt"||e.type==="projectile"?{name:e.name}:e.name==="falling_block"?{blockState:e.objectData}:d_e(e.metadata)?.find(x=>typeof x=="object"&&x?.itemCount);if(_){let x=this.getItemMesh(_,{"minecraft:display_context":"ground"},e.type==="projectile");if(x){if(a=x.mesh,e.name==="item"||e.type==="projectile"?(a.scale.set(.5,.5,.5),a.position.set(0,e.name==="item"?.2:.1,0)):(a.scale.set(2,2,2),a.position.set(0,.5,0)),e.name==="item"){let w=new qs;a.onBeforeRender=()=>{w.update(performance.now());let S=w.getDelta();a.rotation.y+=S}}g.additionalCleanup=()=>{x.cleanup&&x.cleanup()}}}}else if(n){let _=new bt,x=this.setupPlayerObject(e,_,t);if(g.playerObject=x,a=_,e.username){let w=Ob(e,{fontFamily:"mojangles"},_,this.worldRenderer.version);w&&(w.position.y=x.position.y+x.scale.y*16+3,w.scale.multiplyScalar(12))}}else a=tYe(this.mcData,e,this.worldRenderer,this.entitiesOptions,{...t,customModel:e.customModel});if(!a)return;a.name="mesh";let b=e.pos??e.position;this.worldRenderer.sceneOrigin.track(g),g.position.set(b.x,b.y,b.z);let y=new Ma(a,e.type==="hostile"?16711680:e.type==="mob"?65280:e.type==="player"?255:16753920);y.name="debug",g.add(a),g.add(y),y.visible=!1,this.worldRenderer.scene.add(g),r=g,r.name="entity",r.realName=e.name,this.entities[e.id]=r,n&&this.updatePlayerSkin(e.id,e.username,t?.texture?e.uuid:void 0,t?.texture||is),this.setDebugMode(this.debugMode,g),this.setRendering(this.currentlyRendering,g),this.afterAddEntity(e)}else a=r.children.find(g=>g.name==="mesh");this.updateEntityEquipment(r,e);let o=p_e(e,this.mcData),c=(d_e(e.metadata)?.[0]??e.metadata?.[0]??0)&32||this.worldRenderer.playerStateReactive.cameraSpectatingEntity===e.id&&this.worldRenderer.playerStateUtils.isSpectator();for(let g of a.children??[])g.name!=="nametag"&&(g.visible=!c);o.baby?r.scale.set(.5,.5,.5):r.scale.set(1,1,1);let u=Bb("text_display",e,this.mcData),d=u?.text||o.custom_name_visible&&o.custom_name;if(e.name!=="player"&&d){let g=u&&(u.billboard_render_constraints==="fixed"||!u.billboard_render_constraints),b=u&&!(parseInt(u.style_flags,10)&4)?ZXe(u.background_color):void 0,y;if(u?.text_opacity){let _=parseInt(u?.text_opacity,10);y=_>0?_:256-_}Ob({...e,username:typeof d=="string"?rg.default.simplify(rg.default.parse(d)):Db.default.simplify(d),nameTagBackgroundColor:b,nameTagTextOpacity:y,nameTagFixed:g,nameTagScale:u?.scale,nameTagTranslation:u&&(u.translation||new $(0,0,0)),nameTagRotationLeft:c_e(u?.left_rotation),nameTagRotationRight:c_e(u?.right_rotation)},this.entitiesOptions,a,this.worldRenderer.version)}let f=Bb("armor_stand",e,this.mcData);if(f){let g=(parseInt(f.client_flags,10)&1)!==0,b=(parseInt(f.client_flags,10)&4)!==0,y=(parseInt(f.client_flags,10)&8)===0,_=(parseInt(f.client_flags,10)&16)!==0;a.castShadow=!_,a.receiveShadow=!_,g?r.scale.set(.5,.5,.5):r.scale.set(1,1,1),r.traverse(x=>{switch(x.name){case"bone_baseplate":this.setVisible(x,y),x.rotation.y=-r.rotation.y;break;case"bone_head":f.head_pose&&x.setRotationFromEuler(Xo(f.head_pose));break;case"bone_body":f.body_pose&&x.setRotationFromEuler(Xo(f.body_pose));break;case"bone_rightarm":x.parent?.name!=="bone_armor"&&this.setVisible(x,b),f.left_arm_pose?x.setRotationFromEuler(Xo(f.left_arm_pose)):x.setRotationFromEuler(Xo({yaw:-10,pitch:-10,roll:0}));break;case"bone_leftarm":x.parent?.name!=="bone_armor"&&this.setVisible(x,b),f.right_arm_pose?x.setRotationFromEuler(Xo(f.right_arm_pose)):x.setRotationFromEuler(Xo({yaw:10,pitch:-10,roll:0}));break;case"bone_rightleg":f.left_leg_pose?x.setRotationFromEuler(Xo(f.left_leg_pose)):x.setRotationFromEuler(Xo({yaw:-1,pitch:-1,roll:0}));break;case"bone_leftleg":f.right_leg_pose?x.setRotationFromEuler(Xo(f.right_leg_pose)):x.setRotationFromEuler(Xo({yaw:1,pitch:1,roll:0}));break}})}let v=Bb("item_frame",e,this.mcData);if(v||(v=Bb("glow_item_frame",e,this.mcData)),v){let g=v?.item??e.metadata?.[8];if(a.scale.set(1,1,1),a.position.set(0,0,-.5),r.rotation.x=-e.pitch,r.children.find(b=>{if(b.name.startsWith("map_")){hr(b);let y=parseInt(b.name.split("_")[1],10);return this.itemFrameMaps[y]=this.itemFrameMaps[y]?.filter(_=>_!==b),b instanceof Ke&&b.material?.map?.dispose(),!0}else if(b.name==="item")return hr(b),!0;return!1})?.removeFromParent(),g&&(g.itemId??g.blockId??0)!==0){let b=v.rotation??0,y=g.nbtData?.value?.map?.value??g.components?.find(_=>_.type==="map_id")?.data;if(y)a.scale.set(16/12,16/12,1),this.addMapModel(r,y,b);else{let _=this.getItemMesh(g,{"minecraft:display_context":"fixed"});_&&(_.mesh.position.set(0,0,-.05),_.isBlock?_.mesh.scale.set(.25,.25,.25):_.mesh.scale.set(.5,.5,.5),_.mesh.rotateY(Math.PI),_.mesh.rotateZ(-b*Math.PI/4),_.mesh.name="item",r.add(_.mesh))}}}e.username!==void 0&&(r.username=e.username),this.updateNameTagVisibility(r),this.updateEntityPosition(e,s,t)}updateEntityPosition(e,t,n){let r=this.entities[e.id];if(!r)return;let s=t?0:JXe;if(e.position){let o=this.worldRenderer.sceneOrigin.getWorldPosition(r)??{x:e.position.x,y:e.position.y,z:e.position.z};r.userData._tweenTarget||(r.userData._tweenTarget={x:o.x,y:o.y,z:o.z}),r.userData._posTween?.stop(),r.userData._posTween=new $r(r.userData._tweenTarget).to({x:e.position.x,y:e.position.y,z:e.position.z},s).onUpdate(()=>{r.position.set(r.userData._tweenTarget.x,r.userData._tweenTarget.y,r.userData._tweenTarget.z)}).start()}let a;if(r.playerObject&&n?.rotation?.head){let o=n.rotation.head.y,l=typeof o=="number"&&Number.isFinite(o)?o:e.yaw;typeof l=="number"&&Number.isFinite(l)&&(a=l)}else typeof e.yaw=="number"&&Number.isFinite(e.yaw)&&(a=e.yaw);if(typeof a=="number"&&Number.isFinite(a)){let o=QXe(r.rotation.y,a);r.userData._rotTween?.stop(),r.userData._rotTween=new $r(r.rotation).to({y:r.rotation.y+o},s).start()}if(r?.playerObject&&n?.rotation?.head){let{playerObject:o}=r;o.skin.head.rotation.y=0;let l=n.rotation.head.x;o.skin.head.rotation.x=typeof l=="number"&&Number.isFinite(l)?-l:0}}afterAddEntity(e){}beforeEntityAdded(e){let t=this.pendingModelOverrides.get(e.id.toString());if(t){let{parts:n}=t;e.customModel=n.length===1?n[0]:{parts:n},this.pendingModelOverrides.delete(e.id.toString())}}loadedSkinEntityIds=new Set;maybeRenderPlayerSkin(e){let t=this.entities[e];if(e==="player_entity"&&(t=this.playerEntity,e=this.playerEntity?.originalEntity.id),!t||!t.playerObject||!t.visible)return;let n=128,r=this.worldRenderer.getCameraPosition(),s=this.worldRenderer.sceneOrigin.getWorldPosition(t),o=(s?new $(s.x,s.y,s.z):t.position.clone().add(new $(this.worldRenderer.sceneOrigin.x,this.worldRenderer.sceneOrigin.y,this.worldRenderer.sceneOrigin.z))).distanceTo(r);if(o<n&&o<this.worldRenderer.viewDistance*16){if(this.loadedSkinEntityIds.has(String(e)))return;this.updatePlayerSkin(e,t.playerObject.realUsername,t.playerObject.realPlayerUuid,!0,!0)}}onRemoveEntity(e){this.loadedSkinEntityIds.delete(e.id.toString()),delete this.currentSkinUrls[e.id.toString()]}updateMap(e,t){this.cachedMapsImages[e]=t;let n=this.itemFrameMaps[e];if(n&&(n=n.filter(r=>r.parent),this.itemFrameMaps[e]=n,n))for(let r of n)r.material.map=this.loadMap(t),r.material.needsUpdate=!0,r.visible=!0}updateNameTagVisibility(e){let t=this.worldRenderer.playerStateReactive.team,n=e.originalEntity.team,r=n?.nameTagVisibility||"always",s=r==="always"||r==="hideForOwnTeam"&&n?.team!==t?.team||r==="hideForOtherTeams"&&(n?.team===t?.team||t===void 0);e.traverse(a=>{a.name==="nametag"&&(a.visible=s)})}addMapModel(e,t,n){let r=this.cachedMapsImages?.[t],s=null;r&&(s=this.loadMap(r));let a={transparent:!0,alphaTest:.1};s&&(a.map=s);let o=new Ss(a),l=new Ke(new qn(1,1),o);l.rotation.set(0,Math.PI,0),e.add(l);let c=!0;e.traverseVisible(u=>{u.name==="geometry_frame"&&(c=!1)}),c?l.position.set(0,0,.499):l.position.set(0,0,.437),l.rotateZ(Math.PI*2-n*Math.PI/2),l.name=`map_${t}`,s||(l.visible=!1),this.itemFrameMaps[t]||(this.itemFrameMaps[t]=[]),this.itemFrameMaps[t].push(l)}loadMap(e){let t=yh(e);return t.needsUpdate=!0,t}addItemModel(e,t,n,r=!1){let s=`bone_${t}item`,a=`custom_item_${t}`;if(e.traverse(l=>{l.name===a&&(l.removeFromParent(),l.additionalCleanup&&l.additionalCleanup())}),!n)return;let o=this.getItemMesh(n,{"minecraft:display_context":"thirdperson"});o?.mesh&&e.traverse(l=>{if(l.name.toLowerCase()===s||l.name===`${t}Arm`){let c=new Ut;c.additionalCleanup=()=>{o.cleanup&&o.cleanup()};let u=o.mesh;c.rotation.z=-Math.PI/16,o.isBlock?c.rotation.y=Math.PI/4:(u.rotation.z=-Math.PI/4,c.rotation.y=Math.PI/2,c.scale.multiplyScalar(2)),r&&(c.position.y=-8,c.position.z=5,c.position.x=t==="left"?1:-1,c.rotation.x=Math.PI),c.add(u),c.name=a,l.add(c)}})}handleDamageEvent(e,t){let n=this.entities[e]?.children.find(r=>r.name==="mesh");n&&n.traverse(r=>{if(r instanceof Ke&&r.material.clone){r.material.clone().dispose(),r.material=r.material.clone();let a=r.material.color.clone();r.material.color.set(16711680),new $r(r.material.color).to(a,500).start()}})}raycastSceneDebug(){let e=new U0;return e.setFromCamera(new ze(0,0),this.worldRenderer.camera),e.intersectObjects(this.worldRenderer.scene.children)[0]?.object}updateEntityModel(e,t,n,r){let s=Array.isArray(t)?t:[{modelPath:t,modelType:n,metadata:r}];this.pendingModelOverrides.set(e,{parts:s});let a=this.entities[e];a&&(this.update({...a.originalEntity,delete:!0},{}),this.update(a.originalEntity,{}))}setupPlayerObject(e,t,n){let r=new B5;r.realPlayerUuid=e.uuid??"",r.realUsername=e.username??"",r.position.set(0,16,0),OC(r),t.add(r);let s=1/16;return t.scale.set(s,s,s),t.rotation.set(0,Math.PI,0),r.animation=new eg,r.animation.isMoving=!1,r}updateEntityEquipment(e,t){if(!e||!t.equipment)return;let n=t.type==="player";if(this.addItemModel(e,n?"right":"left",t.equipment[0],n),this.addItemModel(e,n?"left":"right",t.equipment[1],n),ig(this.worldRenderer,e,"feet",t.equipment[2]),ig(this.worldRenderer,e,"legs",t.equipment[3],2),ig(this.worldRenderer,e,"chest",t.equipment[4]),ig(this.worldRenderer,e,"head",t.equipment[5]),n&&e.playerObject){let{playerObject:r}=e;r.backEquipment=t.equipment.some(s=>s?.name==="elytra")?"elytra":"cape",r.backEquipment==="elytra"&&this.loadAndApplyCape(t.id,vP),r.cape.map===null&&(r.cape.visible=!1)}}};function p_e(i,e){let t=e?.entitiesByName[i.name];return new Proxy({},{get(n,r,s){if(typeof r!="string"||!t)return;let a=t.metadataKeys?.indexOf(r);return i.metadata?.[a??-1]}})}function Bb(i,e,t){if(e.name===i)return p_e(e,t)}function ig(i,e,t,n,r=1,s=!1){if(!n){_P(e,t);return}let a=n.name.split("_"),o,l=t==="head"&&n.name==="player_head";if(l)if(_P(e,t),n.nbt){let g=Db.default.simplify(n.nbt);try{let b;if(g.SkullOwner?b=g.SkullOwner.Properties.textures[0]?.Value:b=g["minecraft:profile"]?.Properties?.find(y=>y.name==="textures")?.value,b){o=JSON.parse(Buffer.from(b,"base64").toString()).textures?.SKIN?.url;let{skinTexturesProxy:_}=i.worldRendererConfig;_&&(o=o?.replace("http://textures.minecraft.net/",_).replace("https://textures.minecraft.net/",_))}}catch(b){console.error("Error decoding player head texture:",b)}}else o=is;let c=a[0];if(!o){let g=`${c}_layer_${r}${s?"_overlay":""}`;o=i.resourcesManager.currentResources.customTextures.armor?.textures[g]?.src??l_e[g]}if(!o||!Yc[t]){_P(e,t);return}let u=`geometry_armor_${t}${s?"_overlay":""}`,d=e.children.findLast(g=>g.name===u),f;if(d?(f=d.material,u4(o,g=>{g.magFilter=ct,g.minFilter=ct,g.flipY=!1,g.wrapS=ma,g.wrapT=ma,f.map=g})):(d=Xc(i,o,Yc[t]),t==="head"&&(d.children[0].position.y+=.01),d.name=u,f=d.material,l||(f.side=Cn)),c==="leather"&&!s){let g=n.nbt?.value?.display?.value?.color?.value;if(g){let b=g>>16&255,y=g>>8&255,_=g&255;f.color.setRGB(b/255,y/255,_/255)}else f.color.setHex(11890001);ig(i,e,t,n,r,!0)}else f.color.setHex(16777215);let v=new Ut;v.name=`armor_${t}${s?"_overlay":""}`,v.add(d),e.add(d)}function _P(i,e){for(let t of i.children)(t.name===`geometry_armor_${e}`||t.name===`geometry_armor_${e}_overlay`)&&t.removeFromParent()}var bP=async(i,e)=>{let t;if(!i&&!e)t=await h_e;else{if(i||(i=await uc(e,"skin")),!i)return;let{canvas:l}=await Ro(i);t=new Nn(l)}t.magFilter=ct,t.minFilter=ct;let n=new Mn,r=new Zr,s=!1,a=new Ke(n,r);a.scale.x=s?3:4,a.scale.y=12,a.scale.z=4,rYe(n,40,16,s?3:4,12,4),r.map=t,r.needsUpdate=!0;let o=new bt;return o.add(a),o.scale.set(.1,.1,.1),a.rotation.z=Math.PI,o};function nYe(i,e,t,n,r,s,a,o){let l=(C,I,T,L)=>[new ze(C/a,1-L/o),new ze(T/a,1-L/o),new ze(T/a,1-I/o),new ze(C/a,1-I/o)],c=l(e+s,t,e+n+s,t+s),u=l(e+n+s,t,e+n*2+s,t+s),d=l(e,t+s,e+s,t+s+r),f=l(e+s,t+s,e+n+s,t+s+r),v=l(e+n+s,t+s,e+n+s*2,t+r+s),g=l(e+n+s*2,t+s,e+n*2+s*2,t+r+s),b=i.attributes.uv,y=[v[3],v[2],v[0],v[1]],_=[d[3],d[2],d[0],d[1]],x=[c[3],c[2],c[0],c[1]],w=[u[0],u[1],u[3],u[2]],S=[f[3],f[2],f[0],f[1]],A=[g[3],g[2],g[0],g[1]],k=[];for(let C of[y,_,x,w,S,A])for(let I of C)k.push(I.x,I.y);b.set(new Float32Array(k)),b.needsUpdate=!0}function rYe(i,e,t,n,r,s){nYe(i,e,t,n,r,s,64,64)}var v_e={itemRight:{rotation:[0,-90,25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},itemLeft:{rotation:[0,90,-25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},blockRight:{rotation:[0,45,0],translation:[0,0,0],scale:[.4,.4,.4]},blockLeft:{rotation:[0,225,0],translation:[0,0,0],scale:[.4,.4,.4]}},sg=class{constructor(e,t=!1){this.worldRenderer=e;this.offHand=t;this.initCameraGroup(),this.unsubs.push(Sl(this.worldRenderer.playerStateReactive,"heldItemMain",()=>{this.offHand||this.updateItem()})),this.unsubs.push(Sl(this.worldRenderer.playerStateReactive,"heldItemOff",()=>{this.offHand&&this.updateItem()})),this.config=e.displayOptions.inWorldRenderingConfig,this.offHandDisplay=this.offHand,this.offHand||bP().then(n=>{this.disposed||(this.playerHand=n,this.updateItem())}).then(()=>{if(this.disposed)return;let n=Uy(async()=>bP(this.worldRenderer.playerStateReactive.playerSkin,this.worldRenderer.playerStateReactive.onlineMode?this.worldRenderer.playerStateReactive.username:void 0),this.worldRenderer.playerStateReactive,"playerSkin",r=>{r&&(this.playerHand=r,this.updateItem())},r=>{hr(r,!0)});this.unsubs.push(n)})}holdingBlock=void 0;blockSwapAnimation=void 0;cameraGroup=new Ke;objectOuterGroup=new bt;objectInnerGroup=new bt;holdingBlockInnerGroup=new bt;camera=new fn(75,1,.1,100);stopUpdate=!1;lastHeldItem;lastHeldItemRenderKey;isSwinging=!1;nextIterStopCallbacks;idleAnimator;ready=!1;lastUpdate=0;playerHand;offHandDisplay=!1;offHandModeLegacy=!1;swingAnimator;config;disposed=!1;unsubs=[];updateItem(){if(!this.ready)return;let e=this.offHand?this.worldRenderer.playerStateReactive.heldItemOff:this.worldRenderer.playerStateReactive.heldItemMain;e?this.setNewItem(e):this.offHand?this.setNewItem():this.setNewItem({type:"hand"})}initCameraGroup(){this.cameraGroup=new Ke}startSwing(){this.swingAnimator?.startSwing()}stopSwing(){this.swingAnimator?.stopSwing()}render(e,t,n,r){if(!this.lastHeldItem)return;let s=performance.now();this.lastUpdate&&s-this.lastUpdate>50&&this.replaceItemModel(this.lastHeldItem),this.swingAnimator?.isCurrentlySwinging()||this.swingAnimator?.debugParams.animationStage?this.swingAnimator?.update():this.idleAnimator?.update(),this.blockSwapAnimation?.switcher.update();let a=new Cr;a.add(this.cameraGroup),this.updateCameraGroup(),a.add(n.clone()),a.add(r.clone());let o=t.getSize(new ze),l=Math.min(o.width,o.height),c=o.width-l,{offHandDisplay:u}=this;if(u&&(this.cameraGroup.scale.x=-1),t.autoClear=!1,t.clearDepth(),this.offHandDisplay)t.setViewport(0,0,l,l);else{let d=o.width-l;t.setViewport(d,0,l,l)}t.render(a,this.camera),t.setViewport(0,0,o.width,o.height),u&&(this.cameraGroup.scale.x=1)}async playBlockSwapAnimation(e){this.blockSwapAnimation??={switcher:new Ad(()=>({y:this.objectInnerGroup.position.y}),(s,a)=>{s==="y"&&(this.objectInnerGroup.position.y=a)},{y:16})};let t=e,n=this.objectInnerGroup.position.y+this.objectInnerGroup.scale.y*1.5*(t==="appeared"?1:-1),r=!1;return new Promise(s=>{this.blockSwapAnimation.switcher.transitionTo({y:n},t,()=>{r||s(!0)},()=>{r=!0,s(!1)})})}isDifferentItem(e){return this.lastHeldItemRenderKey!==s5(this.worldRenderer,e)}updateCameraGroup(){if(this.stopUpdate)return;let{camera:e}=this;this.cameraGroup.position.copy(e.position),this.cameraGroup.rotation.copy(e.rotation);let t=1,{position:n,scale:r}=this.getHandHeld3d(),s=-n.z,a=this.offHandModeLegacy?-1:1;this.objectOuterGroup.position.set(s*n.x*t*a,s*n.y,-s);let o=r*2.22*.2;this.objectOuterGroup.scale.set(o,o,o)}lastItemModelName;async createItemModel(e){if(this.lastUpdate=performance.now(),!e||e.type==="hand"&&!this.playerHand)return;let t;if(e.type==="item"||e.type==="block"){let r=this.worldRenderer.entities.getItemMesh({...e.fullItem,itemId:e.id},Vy(this.worldRenderer),!1,this.lastItemModelName);if(r){let{mesh:s,isBlock:a,modelName:o}=r;a?(t=s,e.type="block"):(s.position.set(.5,.5,.5),t=s,e.type="item"),this.lastItemModelName=o}}else t=this.playerHand;if(!t)return;t.name="holdingBlock";let n=this.getHandHeld3d().rotation;return t.rotation.x=Ot.degToRad(n.x),t.rotation.y=Ot.degToRad(n.y),t.rotation.z=Ot.degToRad(n.z),{model:t,type:e.type}}async replaceItemModel(e){if(this.blockSwapAnimation?.switcher.isTransitioning)return;if(!e){this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0;return}let t=await this.createItemModel(e);t&&(this.holdingBlock?.removeFromParent(),this.holdingBlock=t.model,this.holdingBlockInnerGroup.add(t.model))}testUnknownBlockSwitch(){this.setNewItem({type:"item",name:"minecraft:some-unknown-block",id:0,fullItem:{}})}switchRequest=0;async setNewItem(e){let t=s5(this.worldRenderer,e),n=this.lastHeldItemRenderKey!==t;if(this.lastHeldItem=e,!n)return;this.lastHeldItemRenderKey=t,this.lastItemModelName=void 0;let r=++this.switchRequest,s=!1;if(this.holdingBlock){if(s=!0,!await this.playBlockSwapAnimation("disappeared"))return;this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0}if(!e){this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0,this.blockSwapAnimation=void 0;return}if(r!==this.switchRequest)return;let a=await this.createItemModel(e);if(!a||r!==this.switchRequest)return;let o=new bt;this.holdingBlockInnerGroup.removeFromParent(),this.holdingBlockInnerGroup=new bt,this.holdingBlockInnerGroup.add(a.model),o.add(this.holdingBlockInnerGroup),this.holdingBlock=a.model,this.objectInnerGroup=new bt,this.objectInnerGroup.add(o),this.objectInnerGroup.position.set(-.5,-.5,-.5),s&&(this.objectInnerGroup.position.y-=this.objectInnerGroup.scale.y*1.5),Object.assign(o.position,{x:.5,y:.5,z:.5}),this.objectOuterGroup=new bt,this.objectOuterGroup.add(this.objectInnerGroup),this.cameraGroup.add(this.objectOuterGroup);let l=this.getHandHeld3d().rotation;this.objectOuterGroup.rotation.y=Ot.degToRad(l.yOuter),s&&await this.playBlockSwapAnimation("appeared"),this.swingAnimator??=new wP(this.holdingBlockInnerGroup),this.swingAnimator.setHandMesh(this.holdingBlockInnerGroup),this.swingAnimator.type=a.type,this.config.viewBobbing&&(this.idleAnimator=new xP(this.holdingBlockInnerGroup,this.worldRenderer.playerStateReactive))}getHandHeld3d(){let e=this.lastHeldItem?.type??"hand",t=this.offHandModeLegacy?"Left":"Right",n=.8*1.15,r={x:.4,y:-.7,z:-.45},s={x:-32.4,y:42.8,z:-41.3,yOuter:0};if(e==="item"){let a=v_e[`item${t}`];r={x:-.05,y:-.7,z:-.45},s={x:a.rotation[0],y:a.rotation[1],z:a.rotation[2],yOuter:0},n=a.scale[0]*1.15}else if(e==="block"){let a=v_e[`block${t}`];r={x:.4,y:-.7,z:-.45},s={x:a.rotation[0],y:a.rotation[1],z:a.rotation[2],yOuter:0},n=a.scale[0]*1.15}return{rotation:s,position:r,scale:n}}dispose(){this.disposed=!0,this.ready=!1,this.unsubs.forEach(e=>e()),this.unsubs=[],this.idleAnimator?.destroy(),this.idleAnimator=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.blockSwapAnimation?.switcher.forceFinish(),this.blockSwapAnimation=void 0,hr(this.cameraGroup,!0),hr(this.objectOuterGroup,!0),hr(this.objectInnerGroup,!0),hr(this.holdingBlockInnerGroup,!0),this.holdingBlock=void 0,this.playerHand&&(hr(this.playerHand,!0),this.playerHand=void 0)}},xP=class{constructor(e,t){this.handMesh=e;this.playerState=t;this.handMesh=e,this.globalTime=0,this.currentState="NOT_MOVING",this.targetState="NOT_MOVING",this.defaultPosition={x:e.position.x,y:e.position.y,z:e.position.z,rotationX:e.rotation.x,rotationY:e.rotation.y,rotationZ:e.rotation.z},this.stateSwitcher=new Ad(()=>({x:this.handMesh.position.x,y:this.handMesh.position.y,z:this.handMesh.position.z,rotationX:this.handMesh.rotation.x,rotationY:this.handMesh.rotation.y,rotationZ:this.handMesh.rotation.z}),(n,r)=>{switch(n){case"x":this.handMesh.position.x=r;break;case"y":this.handMesh.position.y=r;break;case"z":this.handMesh.position.z=r;break;case"rotationX":this.handMesh.rotation.x=r;break;case"rotationY":this.handMesh.rotation.y=r;break;case"rotationZ":this.handMesh.rotation.z=r;break}},{x:2,y:2,z:2,rotation:Math.PI}),this.debugGui=new $l("idle_animator",this.debugParams)}globalTime=0;lastTime=0;currentState;targetState;defaultPosition;idleOffset={y:0,rotationZ:0};tween=new gh;idleTween=null;stateSwitcher;debugParams={walkingSpeed:8,sprintingSpeed:16,walkingAmplitude:{x:1/30,y:1/10,rotationZ:.25},sprintingAmplitude:{x:1/30,y:1/10,rotationZ:.4}};debugGui;startIdleAnimation(){this.idleTween&&this.idleTween.stop(),this.idleOffset.y=this.handMesh.position.y-this.defaultPosition.y,this.idleOffset.rotationZ=this.handMesh.rotation.z-this.defaultPosition.rotationZ,this.idleTween=new $r(this.idleOffset,this.tween).to({y:.05,rotationZ:.05},3e3).easing(Dr.Sinusoidal.InOut).yoyo(!0).repeat(1/0).start()}stopIdleAnimation(){this.idleTween&&(this.idleTween.stop(),this.idleOffset.y=0,this.idleOffset.rotationZ=0)}getStateTransform(e,t){switch(e){case"NOT_MOVING":case"SNEAKING":return{x:this.defaultPosition.x,y:this.defaultPosition.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ};case"WALKING":case"SPRINTING":{let n=e==="SPRINTING"?this.debugParams.sprintingSpeed:this.debugParams.walkingSpeed,r=e==="SPRINTING"?this.debugParams.sprintingAmplitude:this.debugParams.walkingAmplitude;return{x:this.defaultPosition.x+Math.sin(t*n)*r.x,y:this.defaultPosition.y-Math.abs(Math.cos(t*n))*r.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ}}}}setState(e){if(e===this.targetState)return;this.targetState=e;let t=!1;if(this.currentState!==e){if(this.stopIdleAnimation(),!t){let n=this.getStateTransform(e,this.globalTime);this.stateSwitcher.transitionTo(n,e)}this.currentState=e}}updated=!1;update(){this.stateSwitcher.update();let e=performance.now(),t=(e-this.lastTime)/1e3;if(this.lastTime=e,!this.stateSwitcher.isTransitioning)switch(this.currentState){case"NOT_MOVING":case"SNEAKING":this.globalTime=Math.PI/4;break;case"SPRINTING":case"WALKING":this.globalTime+=t;break}if(this.playerState){let n=this.playerState.movementState;n!==this.targetState&&this.setState(n)}if(!this.stateSwitcher.isTransitioning&&(this.currentState==="NOT_MOVING"||this.currentState==="SNEAKING")&&(this.idleTween?.isPlaying()||this.startIdleAnimation(),this.tween.update(),this.handMesh.position.y=this.defaultPosition.y+this.idleOffset.y,this.handMesh.rotation.z=this.defaultPosition.rotationZ+this.idleOffset.rotationZ),!this.stateSwitcher.isTransitioning&&(this.currentState==="WALKING"||this.currentState==="SPRINTING")){let n=this.getStateTransform(this.currentState,this.globalTime);Object.assign(this.handMesh.position,n),Object.assign(this.handMesh.rotation,{x:n.rotationX,y:n.rotationY,z:n.rotationZ})}}getCurrentState(){return this.currentState}destroy(){this.stopIdleAnimation(),this.stateSwitcher.forceFinish()}},wP=class{constructor(e){this.handMesh=e;this.handMesh=e,this.originalRotation=e.rotation.clone(),this.originalPosition=e.position.clone(),this.originalScale=e.scale.clone(),this.debugGui=new $l("hand_animator",this.debugParams,void 0,{animationStage:{min:0,max:1,step:.01},itemSwingXPosScale:{min:-2,max:2,step:.1},itemSwingYPosScale:{min:-2,max:2,step:.1},itemSwingZPosScale:{min:-2,max:2,step:.1},itemHeightScale:{min:-2,max:2,step:.1},itemPreswingRotY:{min:-180,max:180,step:5},itemSwingXRotAmount:{min:-180,max:180,step:5},itemSwingYRotAmount:{min:-180,max:180,step:5},itemSwingZRotAmount:{min:-180,max:180,step:5},armSwingXPosScale:{min:-2,max:2,step:.1},armSwingYPosScale:{min:-2,max:2,step:.1},armSwingZPosScale:{min:-2,max:2,step:.1},armSwingYRotAmount:{min:-180,max:180,step:5},armSwingZRotAmount:{min:-180,max:180,step:5},armHeightScale:{min:-2,max:2,step:.1}})}PI=Math.PI;animationTimer=0;lastTime=0;isAnimating=!1;stopRequested=!1;originalRotation;originalPosition;originalScale;debugParams={animationTime:250,animationStage:0,useClassicSwing:!0,itemSwingXPosScale:-.8,itemSwingYPosScale:.2,itemSwingZPosScale:-.2,itemHeightScale:-.6,itemPreswingRotY:45,itemSwingXRotAmount:-30,itemSwingYRotAmount:-35,itemSwingZRotAmount:-5,armSwingXPosScale:-.3,armSwingYPosScale:.4,armSwingZPosScale:-.4,armSwingYRotAmount:70,armSwingZRotAmount:-20,armHeightScale:-.6};debugGui;type="hand";setHandMesh(e){this.handMesh=e,this.originalRotation.copy(e.rotation),this.originalPosition.copy(e.position),this.originalScale.copy(e.scale)}update(){if(!this.isAnimating&&!this.debugParams.animationStage){this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}let e=performance.now(),t=(e-this.lastTime)/1e3;this.lastTime=e,this.animationTimer+=t*1e3;let n=this.debugParams.animationStage||Math.min(this.animationTimer/this.debugParams.animationTime,1);if(n>=1){if(this.stopRequested){this.isAnimating=!1,this.stopRequested=!1,this.animationTimer=0,this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}this.animationTimer=0;return}this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);let r=n,s=Math.sqrt(r),a=Math.sin(r*this.PI),o=Math.sin(s*this.PI);if(this.type==="hand"){let l=this.debugParams.armSwingXPosScale*o,c=this.debugParams.armSwingYPosScale*Math.sin(s*this.PI*2),u=this.debugParams.armSwingZPosScale*a;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.armHeightScale*r,this.handMesh.position.z+=u,this.handMesh.rotation.y+=Ot.degToRad(this.debugParams.armSwingYRotAmount*o),this.handMesh.rotation.z+=Ot.degToRad(this.debugParams.armSwingZRotAmount*a)}else{let l=this.debugParams.itemSwingXPosScale*o,c=this.debugParams.itemSwingYPosScale*Math.sin(s*this.PI*2),u=this.debugParams.itemSwingZPosScale*a;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.itemHeightScale*r,this.handMesh.position.z+=u,this.handMesh.rotation.y+=Ot.degToRad(this.debugParams.itemPreswingRotY),this.handMesh.rotation.x+=Ot.degToRad(this.debugParams.itemSwingXRotAmount*a),this.handMesh.rotation.y+=Ot.degToRad(this.debugParams.itemSwingYRotAmount*o),this.handMesh.rotation.z+=Ot.degToRad(this.debugParams.itemSwingZRotAmount*a)}}startSwing(){this.stopRequested=!1,!this.isAnimating&&(this.isAnimating=!0,this.animationTimer=0,this.lastTime=performance.now())}stopSwing(){this.isAnimating&&(this.stopRequested=!0)}isCurrentlySwinging(){return this.isAnimating}};function ag(i,e=!1){return i.displayOptions.inWorldRenderingConfig.handRenderer==="legacy"?new sg(i,e):new Ov(i,e)}h();p();m();Lt();var g_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAALUlEQVR42mP4//8/IyWYYdSAwW6Ara3tf4oMmD179n9ChhD0AsiQ0Wgc7AYAAOqH+zNQ3r9kAAAAAElFTkSuQmCC";var __e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAOklEQVR42mP4//8/IyWYYdQA3AbY2tr+H1gDZs+e/R9mCD7D8IYBzBAQTXYgEvIKQQPw2T6aEqlkAADEA/W3ycLXvwAAAABJRU5ErkJggg==";var y_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVR42mP4//8/IyWYYRgbYGtr+39wGQDiYzMUpwGzZ8+GawDRID4IkxSIMEOwaSQ6FgiFBW0NIOR8osJgBOQFALo37sVTOo/LAAAAAElFTkSuQmCC";var b_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWElEQVR42mP4//8/IyWYYXAbYGtr+59sA0CaZ8+eTZkBhNg4DQApQlYIcglMDN1VWA0AKYJpQvYONi/hDUSYIfjCgmA0EooJ2hmAK9CINgBXoA2xvEAMBgBGPud3dYZtOQAAAABJRU5ErkJggg==";var x_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYklEQVR42r1TQQrAMAxyD8tL89iMHgQJoQxHewi0UsWYFFX1/CkcF4iIsgUWOTM9ASV3F3rHF+v9rK4wEVnEFoFYbwmTbRZFFN9m0B9QZBfk2THaAhqktQdTkHYL9iZe+40vs7nda+BuVOMAAAAASUVORK5CYII=";var w_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcElEQVR42rWTWwpAIQhEbWGu1MUaXRgQcXpyP8SIPI1jibu3l5DfAKrqyFgfAczsKxx5xJUCFGYFUZXMpOe9CAa8BOS+0U5UVbYQ6Siqbi0BFT0auTSRHZqNkE6BGXgEYKYtAczIbQAz8ukzXT3l3egz49IXvXQCVAAAAABJRU5ErkJggg==";var S_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAeElEQVQ4jaWSQQ4AIQgD9WG8tI/tnkgaUgmuBw8YHcqERXK/nOUuI4JPAABMSESwA1qAQgAQwBygnfNjTaCpWoBzUlNZQJ07x9FUdgSlV5FaW4Cjq8isW8BJ2GgPtEuVdr0HKvLXHjiRI0An8jTKqo9dF000cnBzPgKuxXtbq/m1AAAAAElFTkSuQmCC";var E_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAhUlEQVR42qWTSRKAMAgE8WF5KY/FygEL2yEp9cAhCz0wJBYRx58wbowxYsZngLvHjITsgNYpJySBrPIBUMqZSHhdSw+oQlgVa01U7VRQ7huTk67aUWZaVyaNZFsSQBCTVBW3KahLyo/lQ6KR1Y+2BTUyGqke1AXoxsSzpYlU3FW0/Exv1ie0hq53Bf15aAAAAABJRU5ErkJggg==";var M_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAmklEQVR42o2SYQ6FMAiDeQfbSXdYXjSpqd869QeZQiilpbr7l2KM0cc75+xUV77YpGCjAPUqitMU3uCAXrsAlPSCcgJMbG4M0mQ1Etz/i0KlXQnmwyqpv1uH4h7fiws7ISneTYNEk0ImCxcAArGJrE4AXhypPtl7AqTdeJG8k3gHb0L6QfmK9WQTa59cSFdHRssKFHHngteV/wPDepaHIu0QVAAAAABJRU5ErkJggg==";var A_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVR42n2Tyw3AIAxD3cGYlGFTUSmV+2o4IEEAf2JQVV1rjDGq576ec5avWVdfWIW12aMPEJBEImoPv+CAvvcCODsVNWBS8wA4A5ndv1/ytciQvBLMyeTSHD3ZYXPXXH7Y0ZMdJvCxQJls5O6tKHlPPWGEfU58WZR6ive1kKSleFNC2kXGRnrcDqhTTOmPeP3pAZnTq6Oin4X0oXbfnNZu626Io6lqGCwAAAAASUVORK5CYII=";var Ub=class{constructor(e){this.worldRenderer=e;let t=[g_e,__e,y_e,b_e,x_e,w_e,S_e,E_e,M_e,A_e];for(let r=0;r<10;r++)_h(t[r]).then(s=>{s.magFilter=ct,s.minFilter=ct,this.breakTextures.push(s)});let n=new _t({transparent:!0,blending:Qf,premultipliedAlpha:!0,alphaTest:.5});this.blockBreakMesh=new Ke(new Mn(1,1,1),n),this.blockBreakMesh.visible=!1,this.blockBreakMesh.renderOrder=999,this.blockBreakMesh.name="blockBreakMesh",this.worldRenderer.sceneOrigin.addAndTrack(this.blockBreakMesh),this.worldRenderer.onReactivePlayerStateUpdated("gameMode",()=>{this.updateLineMaterial()}),setTimeout(()=>{this.updateLineMaterial(),this.interactionLines&&this.setHighlightCursorBlock(this.interactionLines.blockPos,this.interactionLines.shapePositions,!0)})}_cursorLinesHidden=!1;get cursorLinesHidden(){return this._cursorLinesHidden}set cursorLinesHidden(e){this.interactionLines&&(this.interactionLines.mesh.visible=!e),this._cursorLinesHidden=e}cursorLineMaterial;interactionLines=null;prevColor;blockBreakMesh;breakTextures=[];updateLineMaterial(){let e=this.worldRenderer.playerStateReactive.gameMode==="creative",t=this.worldRenderer.renderer.getPixelRatio();this.cursorLineMaterial&&this.cursorLineMaterial.dispose(),this.cursorLineMaterial=new Gd({color:(()=>{switch(this.worldRenderer.worldRendererConfig.highlightBlockColor){case"blue":return 4227327;case"classic":return 0;default:return e?4227327:0}})(),linewidth:Math.max(t*.7,1)*2}),this.prevColor=this.worldRenderer.worldRendererConfig.highlightBlockColor}updateBreakAnimation(e,t,n){if(this.hideBreakAnimation(),t===null||!e||!n)return;let{position:r,width:s,height:a,depth:o}=n,l=new At(r.x,r.y,r.z);this.blockBreakMesh.scale.set(s*1.001,a*1.001,o*1.001),l.add(new At(e.x,e.y,e.z)),this.blockBreakMesh.position.set(l.x,l.y,l.z),this.blockBreakMesh.visible=!0,this.blockBreakMesh.material.map=this.breakTextures[t]??this.breakTextures.at(-1),this.blockBreakMesh.material.needsUpdate=!0}hideBreakAnimation(){this.blockBreakMesh&&(this.blockBreakMesh.visible=!1)}updateDisplay(){if(this.cursorLineMaterial){let{renderer:e}=this.worldRenderer;this.cursorLineMaterial.resolution.set(e.domElement.width,e.domElement.height),this.cursorLineMaterial.dashOffset=performance.now()/750}}setHighlightCursorBlock(e,t,n=!1){if(e&&this.interactionLines&&e.equals(this.interactionLines.blockPos)&&mYe(t??[],this.interactionLines.shapePositions??[])&&!n||(this.interactionLines!==null&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.interactionLines.mesh),this.interactionLines=null),e===null))return;let r=new bt;for(let{position:s,width:a,height:o,depth:l}of t??[]){let c=new At(s.x,s.y,s.z),u=[1.0001*a,1.0001*o,1.0001*l],d=new Mn(...u),f=new qd().fromEdgesGeometry(new dl(d)),v=new tg(f,this.cursorLineMaterial);v.position.set(c.x,c.y,c.z),v.computeLineDistances(),r.add(v)}this.worldRenderer.sceneOrigin.addAndTrack(r),r.position.set(e.x,e.y,e.z),r.visible=!this.cursorLinesHidden,this.interactionLines={blockPos:e,mesh:r,shapePositions:t}}render(){this.prevColor!==this.worldRenderer.worldRendererConfig.highlightBlockColor&&this.updateLineMaterial(),this.updateDisplay()}},mYe=(i,e)=>{if(i.length!==e.length)return!1;for(let[t,n]of i.entries())if(n!==e[t])return!1;return!0};h();p();m();h();p();m();var gYe=Jr(av(),1),SP=Jr(ss(),1);h();p();m();var k_e=(i,e,t)=>({...e,"minecraft:date":new Date});h();p();m();var pYe=(i,e)=>{let t=(i.getMonth()+1).toString().padStart(2,"0"),n=i.getDate().toString().padStart(2,"0");return e.replace("MM",t).replace("dd",n)},vYe=(i,e,t,n)=>{switch(e){case"daytime":return n["minecraft:time"];case"random":return Math.random();default:let r=n[i];return typeof r=="number"?r:void 0}},F5=(i,e)=>{switch(i.type){case"minecraft:model":return{model:i.model,...i.tints&&{tints:i.tints}};case"minecraft:empty":return{model:"minecraft:builtin/empty"};case"minecraft:select":{let t=e[i.property],n=t;i.pattern&&(i.property==="minecraft:local_time"||i.property==="minecraft:date")&&t&&(n=pYe(t,i.pattern));let s=i.cases.find(o=>Array.isArray(o.when)?o.when.some(l=>l===n):o.when===n)?.model??i.fallback;if(!s)throw new Error(`No matching case for ${i.property}=${n}`);let a=F5(s,e);return{...a,watchProperties:[...a.watchProperties||[],{property:i.property,type:"select",currentValue:n}]}}case"minecraft:range_dispatch":{let t=vYe(i.property,i.source,i.target,e);if(typeof t!="number")return F5(i.fallback??i.entries[0].model,e);let n=i.scale?t*i.scale:t,s=i.entries.sort((o,l)=>l.threshold-o.threshold).find(o=>n>=o.threshold)?.model??i.fallback,a=F5(s,e);return{...a,watchProperties:[...a.watchProperties||[],{property:i.property,type:"range",currentValue:t,source:i.source,...i.target&&{target:i.target}}]}}case"minecraft:condition":{let t=e[i.property],n=t?i.on_true:i.on_false,r=F5(n,e);return{...r,watchProperties:[...r.watchProperties||[],{property:i.property,type:"condition",currentValue:t}]}}case"minecraft:composite":{for(let t of i.models)try{return F5(t,e)}catch{continue}throw new Error("No resolvable model found in composite")}case"minecraft:special":return{model:"minecraft:special",special:i.model};default:throw new Error(`Unknown model type: ${i.type}`)}},T_e=(i,e)=>{let{version:t,name:n,properties:r}=e;if(r.use_duration_ms!==void 0){let a=Math.floor(r.use_duration_ms/50);r["minecraft:use_duration"]=a}let s=i.get(t,n);if(s)try{return F5(s.model,r)}catch(a){console.warn(`Error resolving model for ${n} in version ${t}:`,a);return}};var _Ye=(i,e)=>{let t,n,r=i.name;r.includes(":")||(r=`minecraft:${r}`);let s=e.currentResources?.customItemModelNames[r];if(i.components){let a=new Map;for(let u of i.components)a.set(u.type,u);let o=a.get("custom_name")||a.get("item_name");o&&(t=typeof o.data=="string"?o.data:SP.default.simplify(o.data));let l=a.get("item_model");if(l&&(n=l.data),s){let u=a.get("custom_model_data");if(u?.data){let d;typeof u.data=="number"?d=u.data:typeof u.data=="object"&&"floats"in u.data&&Array.isArray(u.data.floats)&&u.data.floats.length>0&&(d=u.data.floats[0]),d&&s[d]&&(n=s[d])}}let c=a.get("lore");c&&(t??=i.displayName??i.name,t+=`
|
|
29382
|
+
`),d=0;for(let v of u){let g=o.measureText(v).width+c*2;g>d&&(d=g)}if(s.width=d,s.height=(l+c)*u.length,o.fillStyle=e,o.fillRect(0,0,s.width,s.height),o.globalAlpha=t/255,!!DC(i,a,s,l,"white",-c+l))return o.globalAlpha=1,s}globalThis.getUsernameTexture=m_e;var Ob=(i,e,t,n)=>{for(let l of t.children)l.name==="nametag"&&l.removeFromParent();if(i.username===void 0||i.username===null||(typeof i.username=="string"?i.username:new((0,yP.default)(n))(i.username).toString()).startsWith("EMPTY"))return;let s=m_e(i,e,n);if(!s)return;let a=new sn(s);a.needsUpdate=!0;let o;if(i.nameTagFixed){let l=new qn,c=new _t({map:a});c.transparent=!0,o=new Ke(l,c),o.rotation.set(i.pitch,Ot.degToRad(i.yaw+180),0),o.position.y+=i.height+.3}else{let l=new xs({map:a});o=new Zi(l),o.position.y+=i.height+.6}return o.renderOrder=1e3,o.scale.set(s.width*.005,s.height*.005,1),i.nameTagRotationRight&&o.applyQuaternion(i.nameTagRotationRight),i.nameTagScale&&o.scale.multiply(i.nameTagScale),i.nameTagRotationLeft&&o.applyQuaternion(i.nameTagRotationLeft),i.nameTagTranslation&&o.position.add(i.nameTagTranslation),o.name="nametag",t.add(o),o},u_e={},eYe=i=>i.charAt(0)===i.charAt(0).toUpperCase();function d_e(i){if(i!=null){if(Array.isArray(i))return i;if(typeof i=="object"){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&&t.every((n,r)=>n===r))return t.map(n=>e[String(n)])}}}function tYe(i,e,t,n,r){if(e.name)try{let c=(eYe(e.name)?LC(e.name):e.name).toLowerCase(),u=new o0("1.16.4",c,t,r);if(u.mesh)return Ob(e,n,u.mesh,t.version),u.mesh}catch(c){reportError?.(c)}if(!i||!(0,f_e.isEntityAttackable)(i,e))return;let s=new Mn(e.width,e.height,e.width);s.translate(0,e.height/2,0);let a=new _t({color:16711935}),o=new Ke(s,a);return(u_e[e.name]=(u_e[e.name]||0)+1)<6&&Ob({username:e.name,height:e.height},n,o,t.version),o}var Nb=class{constructor(e,t){this.worldRenderer=e;this.mcData=t;this.debugMode="none",this.onSkinUpdate=()=>{},this.watchResourcesUpdates()}entities={};playerEntity=null;entitiesOptions={fontFamily:"mojangles"};debugMode;onSkinUpdate;clock=new qs;currentlyRendering=!0;cachedMapsImages={};itemFrameMaps={};pendingModelOverrides=new Map;get entitiesByName(){let e={};for(let t of Object.values(this.entities))t.realName&&(e[t.realName]=e[t.realName]||[],e[t.realName].push(t));return e}get entitiesRenderingCount(){return Object.values(this.entities).filter(e=>e.visible).length}getDebugString(){let e=Object.keys(this.entities).length,t=this.entitiesRenderingCount,n=Object.values(this.entities).filter(s=>s.playerObject),r=n.filter(s=>s.visible);return`${t}/${e} ${r.length}/${n.length}`}handlePlayerEntity(e){if(this.isRenderingAllowed()){if(!this.playerEntity){let t=new bt;t.originalEntity={...e,name:"player"};let n=new bt,r=this.setupPlayerObject(e,n,{});t.playerObject=r,t.add(n),t.name="player_entity",this.playerEntity=t,this.syncSceneAttachment(t),this.updatePlayerSkin(e.id,e.username,e.uuid??void 0,is)}this.playerEntity.originalEntity={...e,name:"player"},e.position&&(this.worldRenderer.sceneOrigin.getWorldPosition(this.playerEntity)||this.worldRenderer.sceneOrigin.track(this.playerEntity),this.playerEntity.position.set(e.position.x,e.position.y,e.position.z)),e.yaw!==void 0&&(this.playerEntity.rotation.y=e.yaw),this.updateEntityEquipment(this.playerEntity,e)}}clear(){for(let e of Object.values(this.entities))this.worldRenderer.sceneOrigin.removeAndUntrack(e),hr(e);this.entities={},this.currentSkinUrls={},this.playerEntity&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.playerEntity),hr(this.playerEntity),this.playerEntity=null)}reloadEntities(){for(let e of Object.values(this.entities))this.update({...e.originalEntity,delete:!0},{}),this.update(e.originalEntity,{})}watchResourcesUpdates(){this.worldRenderer.resourcesManager.on("assetsTexturesUpdated",()=>this.reloadEntities()),this.worldRenderer.resourcesManager.on("assetsInventoryReady",()=>this.reloadEntities())}setDebugMode(e,t=null){this.debugMode=e;for(let n of t?[t]:Object.values(this.entities)){let r=n.children.find(s=>s.name==="debug");r.visible=!1,this.debugMode==="basic"&&(r.visible=!0)}}setRendering(e,t=null){this.currentlyRendering=e&&this.isRenderingAllowed(),this.setSceneAttached(this.currentlyRendering,t)}isRenderingAllowed(){return this.worldRenderer.worldRendererConfig.renderEntities!==!1&&!this.worldRenderer.reactiveDebugParams.disableEntities}syncSceneAttachment(e=null){let t=this.isRenderingAllowed();this.currentlyRendering=t,this.setSceneAttached(t,e)}setSceneAttached(e,t=null){let n=t?[t]:[...Object.values(this.entities),...this.playerEntity?[this.playerEntity]:[]];for(let r of n)e?this.worldRenderer.scene.children.includes(r)||this.worldRenderer.scene.add(r):this.worldRenderer.scene.remove(r)}playEntityModelAnimation(e,t,n=!1){let r=this.entities[e];r&&r.traverse(s=>{s instanceof o0&&s.playAnimation(t,n)})}render(){if(this.syncSceneAttachment(),!this.isRenderingAllowed())return;this.clock.update(performance.now());let e=Math.min(this.clock.getDelta(),1/30),t=this.worldRenderer.viewerChunkPosition,n=10*10;for(let[r,s]of[...Object.entries(this.entities),["player_entity",this.playerEntity]]){if(!s)continue;let a=r==="player_entity";if(a){let l=this.worldRenderer.playerStateUtils.isThirdPerson();if(s.visible=l,l){let c=this.worldRenderer.playerStateReactive.eyeHeight;s.position.set(this.worldRenderer.cameraWorldPos.x,this.worldRenderer.cameraWorldPos.y-c,this.worldRenderer.cameraWorldPos.z)}}let{playerObject:o}=s;if(o?.animation&&o.animation.update(o,e),s.traverse(l=>{l instanceof o0&&l.update(e)}),!a&&t&&s.position){let l=s.position.x-t.x,c=s.position.y-t.y,u=s.position.z-t.z,d=l*l+c*c+u*u,f=this.worldRenderer.entitySectionKey(s.position.x,s.position.y,s.position.z),v=this.worldRenderer.isSectionOcclusionVisible(f);s.visible=!!((d<n||this.worldRenderer.shouldObjectVisible(s))&&v),this.maybeRenderPlayerSkin(r)}if(s.visible&&this.syncArmorPositions(s),a&&s.visible){let l=this.worldRenderer.cameraShake.getBaseRotation();s.rotation.set(0,l.yaw,0),s.traverse(c=>{c.name==="head"&&c.rotation.set(-l.pitch,0,0)})}}}syncArmorPositions(e){e.playerObject&&e.traverse(t=>{if(!t.name.startsWith("geometry_armor_"))return;let{skin:n}=e.playerObject;switch(t.name){case"geometry_armor_head":t.children[0]?.children[0]&&t.children[0].children[0].rotation.set(-n.head.rotation.x,n.head.rotation.y,n.head.rotation.z,n.head.rotation.order);break;case"geometry_armor_legs":t.children[0]&&(t.children[0].children[2]&&t.children[0].children[2].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,n.leftLeg.rotation.z,n.leftLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order));break;case"geometry_armor_feet":t.children[0]&&(t.children[0].children[0]&&t.children[0].children[0].rotation.set(-n.rightLeg.rotation.x,n.rightLeg.rotation.y,n.rightLeg.rotation.z,n.rightLeg.rotation.order),t.children[0].children[1]&&t.children[0].children[1].rotation.set(-n.leftLeg.rotation.x,n.leftLeg.rotation.y,-n.leftLeg.rotation.z,n.leftLeg.rotation.order));break}})}getPlayerObject(e){return this.playerEntity?.originalEntity.id===e?this.playerEntity?.playerObject:this.entities[e]?.playerObject}uuidPerSkinUrlsCache={};currentSkinUrls={};isCanvasBlank(e){return!e.getContext("2d")?.getImageData(0,0,e.width,e.height).data.some(n=>n!==0)}async updatePlayerSkin(e,t,n,r,s=void 0){r!==is&&this.loadedSkinEntityIds.add(String(e)),n&&((typeof r=="string"||typeof s=="string")&&(this.uuidPerSkinUrlsCache[n]={}),typeof r=="string"&&(this.uuidPerSkinUrlsCache[n].skinUrl=r),typeof s=="string"&&(this.uuidPerSkinUrlsCache[n].capeUrl=s),r===!0&&(r=this.uuidPerSkinUrlsCache[n]?.skinUrl??r),s??=this.uuidPerSkinUrlsCache[n]?.capeUrl);let o=this.getPlayerObject(e);if(!o)return;if(r===!0){if(!t)return;let c=await uc(t,"skin");if(!this.getPlayerObject(e)||!c)return;r=c}if(typeof r!="string")throw new Error("Invalid skin url");if(this.currentSkinUrls[String(e)]===r){if(s){if(s===!0&&t){let c=await uc(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}return}r!==is&&(this.currentSkinUrls[String(e)]=r);let l=this.worldRenderer.worldRendererConfig.renderEars||t==="deadmau5";this.loadAndApplySkin(e,r,l).then(async()=>{if(s){if(s===!0&&t){let c=await uc(t,"cape");if(!this.getPlayerObject(e)||!c)return;s=c}typeof s=="string"&&this.loadAndApplyCape(e,s)}}),o.cape.visible=!1,s||(o.backEquipment=null,o.elytra.map=null,o.cape.map&&o.cape.map.dispose(),o.cape.map=null)}async applyTemporaryPlayerSkinOverride(e,t,n,r){this.worldRenderer.playerStateReactive.playerSkin=e,await this.updatePlayerSkin(t,n,r,e,void 0)}async loadAndApplySkin(e,t,n){let r=this.getPlayerObject(e);if(r)try{let s;if(r=this.getPlayerObject(e),!r)return;let a,o;if(t===is){let c=await Ro(is);s=c.image,a=new Nn(c.canvas),o=c.canvas}else{let{canvas:c,image:u}=await Ro(t);s=u,a=new Nn(c),o=c}a.magFilter=ct,a.minFilter=ct,a.needsUpdate=!0,r.skin.map=a,r.skin.modelType=ZE(o),r.skin.isCustom=t!==is,OC(r);let l;if(s?n&&(l=bi(64,64),QE(l,s),n=!this.isCanvasBlank(l)):n=!1,n){let c=new Nn(l);c.magFilter=ct,c.minFilter=ct,c.needsUpdate=!0,r.ears.map=c,r.ears.visible=!0}else r.ears.map=null,r.ears.visible=!1;this.onSkinUpdate?.()}catch(s){console.error("Error loading skin:",s)}}async loadAndApplyCape(e,t){let n=this.getPlayerObject(e);if(n)try{let{canvas:r,image:s}=await Ro(t);if(n=this.getPlayerObject(e),!n)return;KE(r,s);let a=new Nn(r);a.magFilter=ct,a.minFilter=ct,a.needsUpdate=!0,n.cape.map=a,n.cape.visible=!0,n.elytra.map=a,this.onSkinUpdate?.(),n.backEquipment||(n.backEquipment="cape")}catch(r){console.error("Error loading cape:",r)}}debugSwingArm(){let e=Object.values(this.entities).find(n=>n.playerObject?.animation);if(!e||!e.playerObject?.animation)return;let t=e.playerObject.animation;t.swingArm&&t.swingArm()}applyMovementAnimation(e,t){let n=e.animation;if(n){if(t==="oneSwing"){n.swingArm();return}n.switchAnimationCallback=null,n.isMoving=t==="walking"||t==="running"||t==="crouchWalking",n.isRunning=t==="running",n.isCrouched=t==="crouch"||t==="crouchWalking"}}playAnimation(e,t){let n=e==="player_entity"?this.playerEntity?.playerObject:this.getPlayerObject(e)??this.playerEntity?.playerObject;n&&this.applyMovementAnimation(n,t)}parseEntityLabel(e){if(e)try{if(e.type==="string")return e.value;let t=typeof e=="string"?rg.default.simplify(rg.default.parse(e)):Db.default.simplify(e);return RC(t).map(this.textFromComponent).join("")}catch{return e}}textFromComponent(e){return typeof e=="string"?e:e.text??""}getItemMesh(e,t,n=!1,r){!e.nbt&&e.nbtData&&(e.nbt=e.nbtData);let s=this.worldRenderer.getItemRenderData(e,t);if(!(r&&r===s?.modelName)){if(s&&"resolvedModel"in s){let a=Ove(this.worldRenderer.material,s.resolvedModel,s.modelName,this.worldRenderer.resourcesManager.currentResources.worldBlockProvider,this.worldRenderer.resourcesManager.currentResources.mcData),o=1;t["minecraft:display_context"]==="ground"?o=.5:t["minecraft:display_context"]==="thirdperson"&&(o=6),a.scale.set(o,o,o);let l=new bt;return l.add(a),{mesh:l,isBlock:!0,modelName:s.modelName}}if(s){let a=s.renderInfo?.texture==="blocks"?this.worldRenderer.material.map:this.worldRenderer.itemsTexture,{u:o,v:l,su:c,sv:u}=s,v=U6e(a,{u:o,v:l,sizeX:c??1,sizeY:u??1},{faceCamera:n,use3D:!n}),g=1;return t["minecraft:display_context"]==="ground"?g=.5:t["minecraft:display_context"]==="thirdperson"&&(g=6),v.mesh.scale.set(g,g,g),{mesh:v.mesh,isBlock:!1,modelName:s.modelName,cleanup:v.cleanup}}}}setVisible(e,t){t?e.scale.set(1,1,1):e.scale.set(0,0,0)}update(e,t){let n=e.name==="player";(e.name==="zombie_villager"||e.name==="husk")&&(t.texture=`textures/1.16.4/entity/${e.name==="zombie_villager"?"zombie_villager/zombie_villager.png":`zombie/${e.name}.png`}`),e.name==="glow_item_frame"&&(t.textures||(t.textures=[]),t.textures.background="block:glow_item_frame");let r=this.entities[e.id],s=!r;if(e.delete){if(!r)return;r.userData._posTween?.stop(),r.userData._rotTween?.stop(),r.additionalCleanup&&r.additionalCleanup(),r.traverse(g=>{g.additionalCleanup&&g.additionalCleanup()}),this.onRemoveEntity(e),this.worldRenderer.sceneOrigin.removeAndUntrack(r),hr(r),delete this.entities[e.id];return}if(!this.isRenderingAllowed())return;let a;if(r===void 0){this.beforeEntityAdded(e);let g=new bt;if(g.originalEntity=e,e.name==="item"||e.name==="tnt"||e.name==="falling_block"||e.name==="snowball"||e.name==="egg"||e.name==="ender_pearl"||e.name==="experience_bottle"||e.name==="splash_potion"||e.name==="lingering_potion"){let _=e.name==="tnt"||e.type==="projectile"?{name:e.name}:e.name==="falling_block"?{blockState:e.objectData}:d_e(e.metadata)?.find(x=>typeof x=="object"&&x?.itemCount);if(_){let x=this.getItemMesh(_,{"minecraft:display_context":"ground"},e.type==="projectile");if(x){if(a=x.mesh,e.name==="item"||e.type==="projectile"?(a.scale.set(.5,.5,.5),a.position.set(0,e.name==="item"?.2:.1,0)):(a.scale.set(2,2,2),a.position.set(0,.5,0)),e.name==="item"){let w=new qs;a.onBeforeRender=()=>{w.update(performance.now());let S=w.getDelta();a.rotation.y+=S}}g.additionalCleanup=()=>{x.cleanup&&x.cleanup()}}}}else if(n){let _=new bt,x=this.setupPlayerObject(e,_,t);if(g.playerObject=x,a=_,e.username){let w=Ob(e,{fontFamily:"mojangles"},_,this.worldRenderer.version);w&&(w.position.y=x.position.y+x.scale.y*16+3,w.scale.multiplyScalar(12))}}else a=tYe(this.mcData,e,this.worldRenderer,this.entitiesOptions,{...t,customModel:e.customModel});if(!a)return;a.name="mesh";let b=e.pos??e.position;this.worldRenderer.sceneOrigin.track(g),g.position.set(b.x,b.y,b.z);let y=new Ma(a,e.type==="hostile"?16711680:e.type==="mob"?65280:e.type==="player"?255:16753920);y.name="debug",g.add(a),g.add(y),y.visible=!1,r=g,r.name="entity",r.realName=e.name,this.entities[e.id]=r,n&&this.updatePlayerSkin(e.id,e.username,t?.texture?e.uuid:void 0,t?.texture||is),this.setDebugMode(this.debugMode,g),this.syncSceneAttachment(g),this.afterAddEntity(e)}else a=r.children.find(g=>g.name==="mesh");this.updateEntityEquipment(r,e);let o=p_e(e,this.mcData),c=(d_e(e.metadata)?.[0]??e.metadata?.[0]??0)&32||this.worldRenderer.playerStateReactive.cameraSpectatingEntity===e.id&&this.worldRenderer.playerStateUtils.isSpectator();for(let g of a.children??[])g.name!=="nametag"&&(g.visible=!c);o.baby?r.scale.set(.5,.5,.5):r.scale.set(1,1,1);let u=Bb("text_display",e,this.mcData),d=u?.text||o.custom_name_visible&&o.custom_name;if(e.name!=="player"&&d){let g=u&&(u.billboard_render_constraints==="fixed"||!u.billboard_render_constraints),b=u&&!(parseInt(u.style_flags,10)&4)?ZXe(u.background_color):void 0,y;if(u?.text_opacity){let _=parseInt(u?.text_opacity,10);y=_>0?_:256-_}Ob({...e,username:typeof d=="string"?rg.default.simplify(rg.default.parse(d)):Db.default.simplify(d),nameTagBackgroundColor:b,nameTagTextOpacity:y,nameTagFixed:g,nameTagScale:u?.scale,nameTagTranslation:u&&(u.translation||new $(0,0,0)),nameTagRotationLeft:c_e(u?.left_rotation),nameTagRotationRight:c_e(u?.right_rotation)},this.entitiesOptions,a,this.worldRenderer.version)}let f=Bb("armor_stand",e,this.mcData);if(f){let g=(parseInt(f.client_flags,10)&1)!==0,b=(parseInt(f.client_flags,10)&4)!==0,y=(parseInt(f.client_flags,10)&8)===0,_=(parseInt(f.client_flags,10)&16)!==0;a.castShadow=!_,a.receiveShadow=!_,g?r.scale.set(.5,.5,.5):r.scale.set(1,1,1),r.traverse(x=>{switch(x.name){case"bone_baseplate":this.setVisible(x,y),x.rotation.y=-r.rotation.y;break;case"bone_head":f.head_pose&&x.setRotationFromEuler(Xo(f.head_pose));break;case"bone_body":f.body_pose&&x.setRotationFromEuler(Xo(f.body_pose));break;case"bone_rightarm":x.parent?.name!=="bone_armor"&&this.setVisible(x,b),f.left_arm_pose?x.setRotationFromEuler(Xo(f.left_arm_pose)):x.setRotationFromEuler(Xo({yaw:-10,pitch:-10,roll:0}));break;case"bone_leftarm":x.parent?.name!=="bone_armor"&&this.setVisible(x,b),f.right_arm_pose?x.setRotationFromEuler(Xo(f.right_arm_pose)):x.setRotationFromEuler(Xo({yaw:10,pitch:-10,roll:0}));break;case"bone_rightleg":f.left_leg_pose?x.setRotationFromEuler(Xo(f.left_leg_pose)):x.setRotationFromEuler(Xo({yaw:-1,pitch:-1,roll:0}));break;case"bone_leftleg":f.right_leg_pose?x.setRotationFromEuler(Xo(f.right_leg_pose)):x.setRotationFromEuler(Xo({yaw:1,pitch:1,roll:0}));break}})}let v=Bb("item_frame",e,this.mcData);if(v||(v=Bb("glow_item_frame",e,this.mcData)),v){let g=v?.item??e.metadata?.[8];if(a.scale.set(1,1,1),a.position.set(0,0,-.5),r.rotation.x=-e.pitch,r.children.find(b=>{if(b.name.startsWith("map_")){hr(b);let y=parseInt(b.name.split("_")[1],10);return this.itemFrameMaps[y]=this.itemFrameMaps[y]?.filter(_=>_!==b),b instanceof Ke&&b.material?.map?.dispose(),!0}else if(b.name==="item")return hr(b),!0;return!1})?.removeFromParent(),g&&(g.itemId??g.blockId??0)!==0){let b=v.rotation??0,y=g.nbtData?.value?.map?.value??g.components?.find(_=>_.type==="map_id")?.data;if(y)a.scale.set(16/12,16/12,1),this.addMapModel(r,y,b);else{let _=this.getItemMesh(g,{"minecraft:display_context":"fixed"});_&&(_.mesh.position.set(0,0,-.05),_.isBlock?_.mesh.scale.set(.25,.25,.25):_.mesh.scale.set(.5,.5,.5),_.mesh.rotateY(Math.PI),_.mesh.rotateZ(-b*Math.PI/4),_.mesh.name="item",r.add(_.mesh))}}}e.username!==void 0&&(r.username=e.username),this.updateNameTagVisibility(r),this.updateEntityPosition(e,s,t)}updateEntityPosition(e,t,n){let r=this.entities[e.id];if(!r)return;let s=t?0:JXe;if(e.position){let o=this.worldRenderer.sceneOrigin.getWorldPosition(r)??{x:e.position.x,y:e.position.y,z:e.position.z};r.userData._tweenTarget||(r.userData._tweenTarget={x:o.x,y:o.y,z:o.z}),r.userData._posTween?.stop(),r.userData._posTween=new $r(r.userData._tweenTarget).to({x:e.position.x,y:e.position.y,z:e.position.z},s).onUpdate(()=>{r.position.set(r.userData._tweenTarget.x,r.userData._tweenTarget.y,r.userData._tweenTarget.z)}).start()}let a;if(r.playerObject&&n?.rotation?.head){let o=n.rotation.head.y,l=typeof o=="number"&&Number.isFinite(o)?o:e.yaw;typeof l=="number"&&Number.isFinite(l)&&(a=l)}else typeof e.yaw=="number"&&Number.isFinite(e.yaw)&&(a=e.yaw);if(typeof a=="number"&&Number.isFinite(a)){let o=QXe(r.rotation.y,a);r.userData._rotTween?.stop(),r.userData._rotTween=new $r(r.rotation).to({y:r.rotation.y+o},s).start()}if(r?.playerObject&&n?.rotation?.head){let{playerObject:o}=r;o.skin.head.rotation.y=0;let l=n.rotation.head.x;o.skin.head.rotation.x=typeof l=="number"&&Number.isFinite(l)?-l:0}}afterAddEntity(e){}beforeEntityAdded(e){let t=this.pendingModelOverrides.get(e.id.toString());if(t){let{parts:n}=t;e.customModel=n.length===1?n[0]:{parts:n},this.pendingModelOverrides.delete(e.id.toString())}}loadedSkinEntityIds=new Set;maybeRenderPlayerSkin(e){let t=this.entities[e];if(e==="player_entity"&&(t=this.playerEntity,e=this.playerEntity?.originalEntity.id),!t||!t.playerObject||!t.visible)return;let n=128,r=this.worldRenderer.getCameraPosition(),s=this.worldRenderer.sceneOrigin.getWorldPosition(t),o=(s?new $(s.x,s.y,s.z):t.position.clone().add(new $(this.worldRenderer.sceneOrigin.x,this.worldRenderer.sceneOrigin.y,this.worldRenderer.sceneOrigin.z))).distanceTo(r);if(o<n&&o<this.worldRenderer.viewDistance*16){if(this.loadedSkinEntityIds.has(String(e)))return;this.updatePlayerSkin(e,t.playerObject.realUsername,t.playerObject.realPlayerUuid,!0,!0)}}onRemoveEntity(e){this.loadedSkinEntityIds.delete(e.id.toString()),delete this.currentSkinUrls[e.id.toString()]}updateMap(e,t){this.cachedMapsImages[e]=t;let n=this.itemFrameMaps[e];if(n&&(n=n.filter(r=>r.parent),this.itemFrameMaps[e]=n,n))for(let r of n)r.material.map=this.loadMap(t),r.material.needsUpdate=!0,r.visible=!0}updateNameTagVisibility(e){let t=this.worldRenderer.playerStateReactive.team,n=e.originalEntity.team,r=n?.nameTagVisibility||"always",s=r==="always"||r==="hideForOwnTeam"&&n?.team!==t?.team||r==="hideForOtherTeams"&&(n?.team===t?.team||t===void 0);e.traverse(a=>{a.name==="nametag"&&(a.visible=s)})}addMapModel(e,t,n){let r=this.cachedMapsImages?.[t],s=null;r&&(s=this.loadMap(r));let a={transparent:!0,alphaTest:.1};s&&(a.map=s);let o=new Ss(a),l=new Ke(new qn(1,1),o);l.rotation.set(0,Math.PI,0),e.add(l);let c=!0;e.traverseVisible(u=>{u.name==="geometry_frame"&&(c=!1)}),c?l.position.set(0,0,.499):l.position.set(0,0,.437),l.rotateZ(Math.PI*2-n*Math.PI/2),l.name=`map_${t}`,s||(l.visible=!1),this.itemFrameMaps[t]||(this.itemFrameMaps[t]=[]),this.itemFrameMaps[t].push(l)}loadMap(e){let t=yh(e);return t.needsUpdate=!0,t}addItemModel(e,t,n,r=!1){let s=`bone_${t}item`,a=`custom_item_${t}`;if(e.traverse(l=>{l.name===a&&(l.removeFromParent(),l.additionalCleanup&&l.additionalCleanup())}),!n)return;let o=this.getItemMesh(n,{"minecraft:display_context":"thirdperson"});o?.mesh&&e.traverse(l=>{if(l.name.toLowerCase()===s||l.name===`${t}Arm`){let c=new Ut;c.additionalCleanup=()=>{o.cleanup&&o.cleanup()};let u=o.mesh;c.rotation.z=-Math.PI/16,o.isBlock?c.rotation.y=Math.PI/4:(u.rotation.z=-Math.PI/4,c.rotation.y=Math.PI/2,c.scale.multiplyScalar(2)),r&&(c.position.y=-8,c.position.z=5,c.position.x=t==="left"?1:-1,c.rotation.x=Math.PI),c.add(u),c.name=a,l.add(c)}})}handleDamageEvent(e,t){let n=this.entities[e]?.children.find(r=>r.name==="mesh");n&&n.traverse(r=>{if(r instanceof Ke&&r.material.clone){r.material.clone().dispose(),r.material=r.material.clone();let a=r.material.color.clone();r.material.color.set(16711680),new $r(r.material.color).to(a,500).start()}})}raycastSceneDebug(){let e=new U0;return e.setFromCamera(new ze(0,0),this.worldRenderer.camera),e.intersectObjects(this.worldRenderer.scene.children)[0]?.object}updateEntityModel(e,t,n,r){let s=Array.isArray(t)?t:[{modelPath:t,modelType:n,metadata:r}];this.pendingModelOverrides.set(e,{parts:s});let a=this.entities[e];a&&(this.update({...a.originalEntity,delete:!0},{}),this.update(a.originalEntity,{}))}setupPlayerObject(e,t,n){let r=new B5;r.realPlayerUuid=e.uuid??"",r.realUsername=e.username??"",r.position.set(0,16,0),OC(r),t.add(r);let s=1/16;return t.scale.set(s,s,s),t.rotation.set(0,Math.PI,0),r.animation=new eg,r.animation.isMoving=!1,r}updateEntityEquipment(e,t){if(!e||!t.equipment)return;let n=t.type==="player";if(this.addItemModel(e,n?"right":"left",t.equipment[0],n),this.addItemModel(e,n?"left":"right",t.equipment[1],n),ig(this.worldRenderer,e,"feet",t.equipment[2]),ig(this.worldRenderer,e,"legs",t.equipment[3],2),ig(this.worldRenderer,e,"chest",t.equipment[4]),ig(this.worldRenderer,e,"head",t.equipment[5]),n&&e.playerObject){let{playerObject:r}=e;r.backEquipment=t.equipment.some(s=>s?.name==="elytra")?"elytra":"cape",r.backEquipment==="elytra"&&this.loadAndApplyCape(t.id,vP),r.cape.map===null&&(r.cape.visible=!1)}}};function p_e(i,e){let t=e?.entitiesByName[i.name];return new Proxy({},{get(n,r,s){if(typeof r!="string"||!t)return;let a=t.metadataKeys?.indexOf(r);return i.metadata?.[a??-1]}})}function Bb(i,e,t){if(e.name===i)return p_e(e,t)}function ig(i,e,t,n,r=1,s=!1){if(!n){_P(e,t);return}let a=n.name.split("_"),o,l=t==="head"&&n.name==="player_head";if(l)if(_P(e,t),n.nbt){let g=Db.default.simplify(n.nbt);try{let b;if(g.SkullOwner?b=g.SkullOwner.Properties.textures[0]?.Value:b=g["minecraft:profile"]?.Properties?.find(y=>y.name==="textures")?.value,b){o=JSON.parse(Buffer.from(b,"base64").toString()).textures?.SKIN?.url;let{skinTexturesProxy:_}=i.worldRendererConfig;_&&(o=o?.replace("http://textures.minecraft.net/",_).replace("https://textures.minecraft.net/",_))}}catch(b){console.error("Error decoding player head texture:",b)}}else o=is;let c=a[0];if(!o){let g=`${c}_layer_${r}${s?"_overlay":""}`;o=i.resourcesManager.currentResources.customTextures.armor?.textures[g]?.src??l_e[g]}if(!o||!Yc[t]){_P(e,t);return}let u=`geometry_armor_${t}${s?"_overlay":""}`,d=e.children.findLast(g=>g.name===u),f;if(d?(f=d.material,u4(o,g=>{g.magFilter=ct,g.minFilter=ct,g.flipY=!1,g.wrapS=ma,g.wrapT=ma,f.map=g})):(d=Xc(i,o,Yc[t]),t==="head"&&(d.children[0].position.y+=.01),d.name=u,f=d.material,l||(f.side=Cn)),c==="leather"&&!s){let g=n.nbt?.value?.display?.value?.color?.value;if(g){let b=g>>16&255,y=g>>8&255,_=g&255;f.color.setRGB(b/255,y/255,_/255)}else f.color.setHex(11890001);ig(i,e,t,n,r,!0)}else f.color.setHex(16777215);let v=new Ut;v.name=`armor_${t}${s?"_overlay":""}`,v.add(d),e.add(d)}function _P(i,e){for(let t of i.children)(t.name===`geometry_armor_${e}`||t.name===`geometry_armor_${e}_overlay`)&&t.removeFromParent()}var bP=async(i,e)=>{let t;if(!i&&!e)t=await h_e;else{if(i||(i=await uc(e,"skin")),!i)return;let{canvas:l}=await Ro(i);t=new Nn(l)}t.magFilter=ct,t.minFilter=ct;let n=new Mn,r=new Zr,s=!1,a=new Ke(n,r);a.scale.x=s?3:4,a.scale.y=12,a.scale.z=4,rYe(n,40,16,s?3:4,12,4),r.map=t,r.needsUpdate=!0;let o=new bt;return o.add(a),o.scale.set(.1,.1,.1),a.rotation.z=Math.PI,o};function nYe(i,e,t,n,r,s,a,o){let l=(C,I,T,L)=>[new ze(C/a,1-L/o),new ze(T/a,1-L/o),new ze(T/a,1-I/o),new ze(C/a,1-I/o)],c=l(e+s,t,e+n+s,t+s),u=l(e+n+s,t,e+n*2+s,t+s),d=l(e,t+s,e+s,t+s+r),f=l(e+s,t+s,e+n+s,t+s+r),v=l(e+n+s,t+s,e+n+s*2,t+r+s),g=l(e+n+s*2,t+s,e+n*2+s*2,t+r+s),b=i.attributes.uv,y=[v[3],v[2],v[0],v[1]],_=[d[3],d[2],d[0],d[1]],x=[c[3],c[2],c[0],c[1]],w=[u[0],u[1],u[3],u[2]],S=[f[3],f[2],f[0],f[1]],A=[g[3],g[2],g[0],g[1]],k=[];for(let C of[y,_,x,w,S,A])for(let I of C)k.push(I.x,I.y);b.set(new Float32Array(k)),b.needsUpdate=!0}function rYe(i,e,t,n,r,s){nYe(i,e,t,n,r,s,64,64)}var v_e={itemRight:{rotation:[0,-90,25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},itemLeft:{rotation:[0,90,-25],translation:[1.13,3.2,1.13],scale:[.68,.68,.68]},blockRight:{rotation:[0,45,0],translation:[0,0,0],scale:[.4,.4,.4]},blockLeft:{rotation:[0,225,0],translation:[0,0,0],scale:[.4,.4,.4]}},sg=class{constructor(e,t=!1){this.worldRenderer=e;this.offHand=t;this.initCameraGroup(),this.unsubs.push(Sl(this.worldRenderer.playerStateReactive,"heldItemMain",()=>{this.offHand||this.updateItem()})),this.unsubs.push(Sl(this.worldRenderer.playerStateReactive,"heldItemOff",()=>{this.offHand&&this.updateItem()})),this.config=e.displayOptions.inWorldRenderingConfig,this.offHandDisplay=this.offHand,this.offHand||bP().then(n=>{this.disposed||(this.playerHand=n,this.updateItem())}).then(()=>{if(this.disposed)return;let n=Uy(async()=>bP(this.worldRenderer.playerStateReactive.playerSkin,this.worldRenderer.playerStateReactive.onlineMode?this.worldRenderer.playerStateReactive.username:void 0),this.worldRenderer.playerStateReactive,"playerSkin",r=>{r&&(this.playerHand=r,this.updateItem())},r=>{hr(r,!0)});this.unsubs.push(n)})}holdingBlock=void 0;blockSwapAnimation=void 0;cameraGroup=new Ke;objectOuterGroup=new bt;objectInnerGroup=new bt;holdingBlockInnerGroup=new bt;camera=new fn(75,1,.1,100);stopUpdate=!1;lastHeldItem;lastHeldItemRenderKey;isSwinging=!1;nextIterStopCallbacks;idleAnimator;ready=!1;lastUpdate=0;playerHand;offHandDisplay=!1;offHandModeLegacy=!1;swingAnimator;config;disposed=!1;unsubs=[];updateItem(){if(!this.ready)return;let e=this.offHand?this.worldRenderer.playerStateReactive.heldItemOff:this.worldRenderer.playerStateReactive.heldItemMain;e?this.setNewItem(e):this.offHand?this.setNewItem():this.setNewItem({type:"hand"})}initCameraGroup(){this.cameraGroup=new Ke}startSwing(){this.swingAnimator?.startSwing()}stopSwing(){this.swingAnimator?.stopSwing()}render(e,t,n,r){if(!this.lastHeldItem)return;let s=performance.now();this.lastUpdate&&s-this.lastUpdate>50&&this.replaceItemModel(this.lastHeldItem),this.swingAnimator?.isCurrentlySwinging()||this.swingAnimator?.debugParams.animationStage?this.swingAnimator?.update():this.idleAnimator?.update(),this.blockSwapAnimation?.switcher.update();let a=new Cr;a.add(this.cameraGroup),this.updateCameraGroup(),a.add(n.clone()),a.add(r.clone());let o=t.getSize(new ze),l=Math.min(o.width,o.height),c=o.width-l,{offHandDisplay:u}=this;if(u&&(this.cameraGroup.scale.x=-1),t.autoClear=!1,t.clearDepth(),this.offHandDisplay)t.setViewport(0,0,l,l);else{let d=o.width-l;t.setViewport(d,0,l,l)}t.render(a,this.camera),t.setViewport(0,0,o.width,o.height),u&&(this.cameraGroup.scale.x=1)}async playBlockSwapAnimation(e){this.blockSwapAnimation??={switcher:new Ad(()=>({y:this.objectInnerGroup.position.y}),(s,a)=>{s==="y"&&(this.objectInnerGroup.position.y=a)},{y:16})};let t=e,n=this.objectInnerGroup.position.y+this.objectInnerGroup.scale.y*1.5*(t==="appeared"?1:-1),r=!1;return new Promise(s=>{this.blockSwapAnimation.switcher.transitionTo({y:n},t,()=>{r||s(!0)},()=>{r=!0,s(!1)})})}isDifferentItem(e){return this.lastHeldItemRenderKey!==s5(this.worldRenderer,e)}updateCameraGroup(){if(this.stopUpdate)return;let{camera:e}=this;this.cameraGroup.position.copy(e.position),this.cameraGroup.rotation.copy(e.rotation);let t=1,{position:n,scale:r}=this.getHandHeld3d(),s=-n.z,a=this.offHandModeLegacy?-1:1;this.objectOuterGroup.position.set(s*n.x*t*a,s*n.y,-s);let o=r*2.22*.2;this.objectOuterGroup.scale.set(o,o,o)}lastItemModelName;async createItemModel(e){if(this.lastUpdate=performance.now(),!e||e.type==="hand"&&!this.playerHand)return;let t;if(e.type==="item"||e.type==="block"){let r=this.worldRenderer.entities.getItemMesh({...e.fullItem,itemId:e.id},Vy(this.worldRenderer),!1,this.lastItemModelName);if(r){let{mesh:s,isBlock:a,modelName:o}=r;a?(t=s,e.type="block"):(s.position.set(.5,.5,.5),t=s,e.type="item"),this.lastItemModelName=o}}else t=this.playerHand;if(!t)return;t.name="holdingBlock";let n=this.getHandHeld3d().rotation;return t.rotation.x=Ot.degToRad(n.x),t.rotation.y=Ot.degToRad(n.y),t.rotation.z=Ot.degToRad(n.z),{model:t,type:e.type}}async replaceItemModel(e){if(this.blockSwapAnimation?.switcher.isTransitioning)return;if(!e){this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0;return}let t=await this.createItemModel(e);t&&(this.holdingBlock?.removeFromParent(),this.holdingBlock=t.model,this.holdingBlockInnerGroup.add(t.model))}testUnknownBlockSwitch(){this.setNewItem({type:"item",name:"minecraft:some-unknown-block",id:0,fullItem:{}})}switchRequest=0;async setNewItem(e){let t=s5(this.worldRenderer,e),n=this.lastHeldItemRenderKey!==t;if(this.lastHeldItem=e,!n)return;this.lastHeldItemRenderKey=t,this.lastItemModelName=void 0;let r=++this.switchRequest,s=!1;if(this.holdingBlock){if(s=!0,!await this.playBlockSwapAnimation("disappeared"))return;this.holdingBlock?.removeFromParent(),this.holdingBlock=void 0}if(!e){this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.idleAnimator=void 0,this.blockSwapAnimation=void 0;return}if(r!==this.switchRequest)return;let a=await this.createItemModel(e);if(!a||r!==this.switchRequest)return;let o=new bt;this.holdingBlockInnerGroup.removeFromParent(),this.holdingBlockInnerGroup=new bt,this.holdingBlockInnerGroup.add(a.model),o.add(this.holdingBlockInnerGroup),this.holdingBlock=a.model,this.objectInnerGroup=new bt,this.objectInnerGroup.add(o),this.objectInnerGroup.position.set(-.5,-.5,-.5),s&&(this.objectInnerGroup.position.y-=this.objectInnerGroup.scale.y*1.5),Object.assign(o.position,{x:.5,y:.5,z:.5}),this.objectOuterGroup=new bt,this.objectOuterGroup.add(this.objectInnerGroup),this.cameraGroup.add(this.objectOuterGroup);let l=this.getHandHeld3d().rotation;this.objectOuterGroup.rotation.y=Ot.degToRad(l.yOuter),s&&await this.playBlockSwapAnimation("appeared"),this.swingAnimator??=new wP(this.holdingBlockInnerGroup),this.swingAnimator.setHandMesh(this.holdingBlockInnerGroup),this.swingAnimator.type=a.type,this.config.viewBobbing&&(this.idleAnimator=new xP(this.holdingBlockInnerGroup,this.worldRenderer.playerStateReactive))}getHandHeld3d(){let e=this.lastHeldItem?.type??"hand",t=this.offHandModeLegacy?"Left":"Right",n=.8*1.15,r={x:.4,y:-.7,z:-.45},s={x:-32.4,y:42.8,z:-41.3,yOuter:0};if(e==="item"){let a=v_e[`item${t}`];r={x:-.05,y:-.7,z:-.45},s={x:a.rotation[0],y:a.rotation[1],z:a.rotation[2],yOuter:0},n=a.scale[0]*1.15}else if(e==="block"){let a=v_e[`block${t}`];r={x:.4,y:-.7,z:-.45},s={x:a.rotation[0],y:a.rotation[1],z:a.rotation[2],yOuter:0},n=a.scale[0]*1.15}return{rotation:s,position:r,scale:n}}dispose(){this.disposed=!0,this.ready=!1,this.unsubs.forEach(e=>e()),this.unsubs=[],this.idleAnimator?.destroy(),this.idleAnimator=void 0,this.swingAnimator?.stopSwing(),this.swingAnimator=void 0,this.blockSwapAnimation?.switcher.forceFinish(),this.blockSwapAnimation=void 0,hr(this.cameraGroup,!0),hr(this.objectOuterGroup,!0),hr(this.objectInnerGroup,!0),hr(this.holdingBlockInnerGroup,!0),this.holdingBlock=void 0,this.playerHand&&(hr(this.playerHand,!0),this.playerHand=void 0)}},xP=class{constructor(e,t){this.handMesh=e;this.playerState=t;this.handMesh=e,this.globalTime=0,this.currentState="NOT_MOVING",this.targetState="NOT_MOVING",this.defaultPosition={x:e.position.x,y:e.position.y,z:e.position.z,rotationX:e.rotation.x,rotationY:e.rotation.y,rotationZ:e.rotation.z},this.stateSwitcher=new Ad(()=>({x:this.handMesh.position.x,y:this.handMesh.position.y,z:this.handMesh.position.z,rotationX:this.handMesh.rotation.x,rotationY:this.handMesh.rotation.y,rotationZ:this.handMesh.rotation.z}),(n,r)=>{switch(n){case"x":this.handMesh.position.x=r;break;case"y":this.handMesh.position.y=r;break;case"z":this.handMesh.position.z=r;break;case"rotationX":this.handMesh.rotation.x=r;break;case"rotationY":this.handMesh.rotation.y=r;break;case"rotationZ":this.handMesh.rotation.z=r;break}},{x:2,y:2,z:2,rotation:Math.PI}),this.debugGui=new $l("idle_animator",this.debugParams)}globalTime=0;lastTime=0;currentState;targetState;defaultPosition;idleOffset={y:0,rotationZ:0};tween=new gh;idleTween=null;stateSwitcher;debugParams={walkingSpeed:8,sprintingSpeed:16,walkingAmplitude:{x:1/30,y:1/10,rotationZ:.25},sprintingAmplitude:{x:1/30,y:1/10,rotationZ:.4}};debugGui;startIdleAnimation(){this.idleTween&&this.idleTween.stop(),this.idleOffset.y=this.handMesh.position.y-this.defaultPosition.y,this.idleOffset.rotationZ=this.handMesh.rotation.z-this.defaultPosition.rotationZ,this.idleTween=new $r(this.idleOffset,this.tween).to({y:.05,rotationZ:.05},3e3).easing(Dr.Sinusoidal.InOut).yoyo(!0).repeat(1/0).start()}stopIdleAnimation(){this.idleTween&&(this.idleTween.stop(),this.idleOffset.y=0,this.idleOffset.rotationZ=0)}getStateTransform(e,t){switch(e){case"NOT_MOVING":case"SNEAKING":return{x:this.defaultPosition.x,y:this.defaultPosition.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ};case"WALKING":case"SPRINTING":{let n=e==="SPRINTING"?this.debugParams.sprintingSpeed:this.debugParams.walkingSpeed,r=e==="SPRINTING"?this.debugParams.sprintingAmplitude:this.debugParams.walkingAmplitude;return{x:this.defaultPosition.x+Math.sin(t*n)*r.x,y:this.defaultPosition.y-Math.abs(Math.cos(t*n))*r.y,z:this.defaultPosition.z,rotationX:this.defaultPosition.rotationX,rotationY:this.defaultPosition.rotationY,rotationZ:this.defaultPosition.rotationZ}}}}setState(e){if(e===this.targetState)return;this.targetState=e;let t=!1;if(this.currentState!==e){if(this.stopIdleAnimation(),!t){let n=this.getStateTransform(e,this.globalTime);this.stateSwitcher.transitionTo(n,e)}this.currentState=e}}updated=!1;update(){this.stateSwitcher.update();let e=performance.now(),t=(e-this.lastTime)/1e3;if(this.lastTime=e,!this.stateSwitcher.isTransitioning)switch(this.currentState){case"NOT_MOVING":case"SNEAKING":this.globalTime=Math.PI/4;break;case"SPRINTING":case"WALKING":this.globalTime+=t;break}if(this.playerState){let n=this.playerState.movementState;n!==this.targetState&&this.setState(n)}if(!this.stateSwitcher.isTransitioning&&(this.currentState==="NOT_MOVING"||this.currentState==="SNEAKING")&&(this.idleTween?.isPlaying()||this.startIdleAnimation(),this.tween.update(),this.handMesh.position.y=this.defaultPosition.y+this.idleOffset.y,this.handMesh.rotation.z=this.defaultPosition.rotationZ+this.idleOffset.rotationZ),!this.stateSwitcher.isTransitioning&&(this.currentState==="WALKING"||this.currentState==="SPRINTING")){let n=this.getStateTransform(this.currentState,this.globalTime);Object.assign(this.handMesh.position,n),Object.assign(this.handMesh.rotation,{x:n.rotationX,y:n.rotationY,z:n.rotationZ})}}getCurrentState(){return this.currentState}destroy(){this.stopIdleAnimation(),this.stateSwitcher.forceFinish()}},wP=class{constructor(e){this.handMesh=e;this.handMesh=e,this.originalRotation=e.rotation.clone(),this.originalPosition=e.position.clone(),this.originalScale=e.scale.clone(),this.debugGui=new $l("hand_animator",this.debugParams,void 0,{animationStage:{min:0,max:1,step:.01},itemSwingXPosScale:{min:-2,max:2,step:.1},itemSwingYPosScale:{min:-2,max:2,step:.1},itemSwingZPosScale:{min:-2,max:2,step:.1},itemHeightScale:{min:-2,max:2,step:.1},itemPreswingRotY:{min:-180,max:180,step:5},itemSwingXRotAmount:{min:-180,max:180,step:5},itemSwingYRotAmount:{min:-180,max:180,step:5},itemSwingZRotAmount:{min:-180,max:180,step:5},armSwingXPosScale:{min:-2,max:2,step:.1},armSwingYPosScale:{min:-2,max:2,step:.1},armSwingZPosScale:{min:-2,max:2,step:.1},armSwingYRotAmount:{min:-180,max:180,step:5},armSwingZRotAmount:{min:-180,max:180,step:5},armHeightScale:{min:-2,max:2,step:.1}})}PI=Math.PI;animationTimer=0;lastTime=0;isAnimating=!1;stopRequested=!1;originalRotation;originalPosition;originalScale;debugParams={animationTime:250,animationStage:0,useClassicSwing:!0,itemSwingXPosScale:-.8,itemSwingYPosScale:.2,itemSwingZPosScale:-.2,itemHeightScale:-.6,itemPreswingRotY:45,itemSwingXRotAmount:-30,itemSwingYRotAmount:-35,itemSwingZRotAmount:-5,armSwingXPosScale:-.3,armSwingYPosScale:.4,armSwingZPosScale:-.4,armSwingYRotAmount:70,armSwingZRotAmount:-20,armHeightScale:-.6};debugGui;type="hand";setHandMesh(e){this.handMesh=e,this.originalRotation.copy(e.rotation),this.originalPosition.copy(e.position),this.originalScale.copy(e.scale)}update(){if(!this.isAnimating&&!this.debugParams.animationStage){this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}let e=performance.now(),t=(e-this.lastTime)/1e3;this.lastTime=e,this.animationTimer+=t*1e3;let n=this.debugParams.animationStage||Math.min(this.animationTimer/this.debugParams.animationTime,1);if(n>=1){if(this.stopRequested){this.isAnimating=!1,this.stopRequested=!1,this.animationTimer=0,this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);return}this.animationTimer=0;return}this.handMesh.rotation.copy(this.originalRotation),this.handMesh.position.copy(this.originalPosition),this.handMesh.scale.copy(this.originalScale);let r=n,s=Math.sqrt(r),a=Math.sin(r*this.PI),o=Math.sin(s*this.PI);if(this.type==="hand"){let l=this.debugParams.armSwingXPosScale*o,c=this.debugParams.armSwingYPosScale*Math.sin(s*this.PI*2),u=this.debugParams.armSwingZPosScale*a;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.armHeightScale*r,this.handMesh.position.z+=u,this.handMesh.rotation.y+=Ot.degToRad(this.debugParams.armSwingYRotAmount*o),this.handMesh.rotation.z+=Ot.degToRad(this.debugParams.armSwingZRotAmount*a)}else{let l=this.debugParams.itemSwingXPosScale*o,c=this.debugParams.itemSwingYPosScale*Math.sin(s*this.PI*2),u=this.debugParams.itemSwingZPosScale*a;this.handMesh.position.x+=l,this.handMesh.position.y+=c+this.debugParams.itemHeightScale*r,this.handMesh.position.z+=u,this.handMesh.rotation.y+=Ot.degToRad(this.debugParams.itemPreswingRotY),this.handMesh.rotation.x+=Ot.degToRad(this.debugParams.itemSwingXRotAmount*a),this.handMesh.rotation.y+=Ot.degToRad(this.debugParams.itemSwingYRotAmount*o),this.handMesh.rotation.z+=Ot.degToRad(this.debugParams.itemSwingZRotAmount*a)}}startSwing(){this.stopRequested=!1,!this.isAnimating&&(this.isAnimating=!0,this.animationTimer=0,this.lastTime=performance.now())}stopSwing(){this.isAnimating&&(this.stopRequested=!0)}isCurrentlySwinging(){return this.isAnimating}};function ag(i,e=!1){return i.displayOptions.inWorldRenderingConfig.handRenderer==="legacy"?new sg(i,e):new Ov(i,e)}h();p();m();Lt();var g_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAALUlEQVR42mP4//8/IyWYYdSAwW6Ara3tf4oMmD179n9ChhD0AsiQ0Wgc7AYAAOqH+zNQ3r9kAAAAAElFTkSuQmCC";var __e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAOklEQVR42mP4//8/IyWYYdQA3AbY2tr+H1gDZs+e/R9mCD7D8IYBzBAQTXYgEvIKQQPw2T6aEqlkAADEA/W3ycLXvwAAAABJRU5ErkJggg==";var y_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQklEQVR42mP4//8/IyWYYRgbYGtr+39wGQDiYzMUpwGzZ8+GawDRID4IkxSIMEOwaSQ6FgiFBW0NIOR8osJgBOQFALo37sVTOo/LAAAAAElFTkSuQmCC";var b_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAWElEQVR42mP4//8/IyWYYXAbYGtr+59sA0CaZ8+eTZkBhNg4DQApQlYIcglMDN1VWA0AKYJpQvYONi/hDUSYIfjCgmA0EooJ2hmAK9CINgBXoA2xvEAMBgBGPud3dYZtOQAAAABJRU5ErkJggg==";var x_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYklEQVR42r1TQQrAMAxyD8tL89iMHgQJoQxHewi0UsWYFFX1/CkcF4iIsgUWOTM9ASV3F3rHF+v9rK4wEVnEFoFYbwmTbRZFFN9m0B9QZBfk2THaAhqktQdTkHYL9iZe+40vs7nda+BuVOMAAAAASUVORK5CYII=";var w_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAcElEQVR42rWTWwpAIQhEbWGu1MUaXRgQcXpyP8SIPI1jibu3l5DfAKrqyFgfAczsKxx5xJUCFGYFUZXMpOe9CAa8BOS+0U5UVbYQ6Siqbi0BFT0auTSRHZqNkE6BGXgEYKYtAczIbQAz8ukzXT3l3egz49IXvXQCVAAAAABJRU5ErkJggg==";var S_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAeElEQVQ4jaWSQQ4AIQgD9WG8tI/tnkgaUgmuBw8YHcqERXK/nOUuI4JPAABMSESwA1qAQgAQwBygnfNjTaCpWoBzUlNZQJ07x9FUdgSlV5FaW4Cjq8isW8BJ2GgPtEuVdr0HKvLXHjiRI0An8jTKqo9dF000cnBzPgKuxXtbq/m1AAAAAElFTkSuQmCC";var E_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAhUlEQVR42qWTSRKAMAgE8WF5KY/FygEL2yEp9cAhCz0wJBYRx58wbowxYsZngLvHjITsgNYpJySBrPIBUMqZSHhdSw+oQlgVa01U7VRQ7huTk67aUWZaVyaNZFsSQBCTVBW3KahLyo/lQ6KR1Y+2BTUyGqke1AXoxsSzpYlU3FW0/Exv1ie0hq53Bf15aAAAAABJRU5ErkJggg==";var M_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAmklEQVR42o2SYQ6FMAiDeQfbSXdYXjSpqd869QeZQiilpbr7l2KM0cc75+xUV77YpGCjAPUqitMU3uCAXrsAlPSCcgJMbG4M0mQ1Etz/i0KlXQnmwyqpv1uH4h7fiws7ISneTYNEk0ImCxcAArGJrE4AXhypPtl7AqTdeJG8k3gHb0L6QfmK9WQTa59cSFdHRssKFHHngteV/wPDepaHIu0QVAAAAABJRU5ErkJggg==";var A_e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVR42n2Tyw3AIAxD3cGYlGFTUSmV+2o4IEEAf2JQVV1rjDGq576ec5avWVdfWIW12aMPEJBEImoPv+CAvvcCODsVNWBS8wA4A5ndv1/ytciQvBLMyeTSHD3ZYXPXXH7Y0ZMdJvCxQJls5O6tKHlPPWGEfU58WZR6ive1kKSleFNC2kXGRnrcDqhTTOmPeP3pAZnTq6Oin4X0oXbfnNZu626Io6lqGCwAAAAASUVORK5CYII=";var Ub=class{constructor(e){this.worldRenderer=e;let t=[g_e,__e,y_e,b_e,x_e,w_e,S_e,E_e,M_e,A_e];for(let r=0;r<10;r++)_h(t[r]).then(s=>{s.magFilter=ct,s.minFilter=ct,this.breakTextures.push(s)});let n=new _t({transparent:!0,blending:Qf,premultipliedAlpha:!0,alphaTest:.5});this.blockBreakMesh=new Ke(new Mn(1,1,1),n),this.blockBreakMesh.visible=!1,this.blockBreakMesh.renderOrder=999,this.blockBreakMesh.name="blockBreakMesh",this.worldRenderer.sceneOrigin.addAndTrack(this.blockBreakMesh),this.worldRenderer.onReactivePlayerStateUpdated("gameMode",()=>{this.updateLineMaterial()}),setTimeout(()=>{this.updateLineMaterial(),this.interactionLines&&this.setHighlightCursorBlock(this.interactionLines.blockPos,this.interactionLines.shapePositions,!0)})}_cursorLinesHidden=!1;get cursorLinesHidden(){return this._cursorLinesHidden}set cursorLinesHidden(e){this.interactionLines&&(this.interactionLines.mesh.visible=!e),this._cursorLinesHidden=e}cursorLineMaterial;interactionLines=null;prevColor;blockBreakMesh;breakTextures=[];updateLineMaterial(){let e=this.worldRenderer.playerStateReactive.gameMode==="creative",t=this.worldRenderer.renderer.getPixelRatio();this.cursorLineMaterial&&this.cursorLineMaterial.dispose(),this.cursorLineMaterial=new Gd({color:(()=>{switch(this.worldRenderer.worldRendererConfig.highlightBlockColor){case"blue":return 4227327;case"classic":return 0;default:return e?4227327:0}})(),linewidth:Math.max(t*.7,1)*2}),this.prevColor=this.worldRenderer.worldRendererConfig.highlightBlockColor}updateBreakAnimation(e,t,n){if(this.hideBreakAnimation(),t===null||!e||!n)return;let{position:r,width:s,height:a,depth:o}=n,l=new At(r.x,r.y,r.z);this.blockBreakMesh.scale.set(s*1.001,a*1.001,o*1.001),l.add(new At(e.x,e.y,e.z)),this.blockBreakMesh.position.set(l.x,l.y,l.z),this.blockBreakMesh.visible=!0,this.blockBreakMesh.material.map=this.breakTextures[t]??this.breakTextures.at(-1),this.blockBreakMesh.material.needsUpdate=!0}hideBreakAnimation(){this.blockBreakMesh&&(this.blockBreakMesh.visible=!1)}updateDisplay(){if(this.cursorLineMaterial){let{renderer:e}=this.worldRenderer;this.cursorLineMaterial.resolution.set(e.domElement.width,e.domElement.height),this.cursorLineMaterial.dashOffset=performance.now()/750}}setHighlightCursorBlock(e,t,n=!1){if(e&&this.interactionLines&&e.equals(this.interactionLines.blockPos)&&mYe(t??[],this.interactionLines.shapePositions??[])&&!n||(this.interactionLines!==null&&(this.worldRenderer.sceneOrigin.removeAndUntrack(this.interactionLines.mesh),this.interactionLines=null),e===null))return;let r=new bt;for(let{position:s,width:a,height:o,depth:l}of t??[]){let c=new At(s.x,s.y,s.z),u=[1.0001*a,1.0001*o,1.0001*l],d=new Mn(...u),f=new qd().fromEdgesGeometry(new dl(d)),v=new tg(f,this.cursorLineMaterial);v.position.set(c.x,c.y,c.z),v.computeLineDistances(),r.add(v)}this.worldRenderer.sceneOrigin.addAndTrack(r),r.position.set(e.x,e.y,e.z),r.visible=!this.cursorLinesHidden,this.interactionLines={blockPos:e,mesh:r,shapePositions:t}}render(){this.prevColor!==this.worldRenderer.worldRendererConfig.highlightBlockColor&&this.updateLineMaterial(),this.updateDisplay()}},mYe=(i,e)=>{if(i.length!==e.length)return!1;for(let[t,n]of i.entries())if(n!==e[t])return!1;return!0};h();p();m();h();p();m();var gYe=Jr(av(),1),SP=Jr(ss(),1);h();p();m();var k_e=(i,e,t)=>({...e,"minecraft:date":new Date});h();p();m();var pYe=(i,e)=>{let t=(i.getMonth()+1).toString().padStart(2,"0"),n=i.getDate().toString().padStart(2,"0");return e.replace("MM",t).replace("dd",n)},vYe=(i,e,t,n)=>{switch(e){case"daytime":return n["minecraft:time"];case"random":return Math.random();default:let r=n[i];return typeof r=="number"?r:void 0}},F5=(i,e)=>{switch(i.type){case"minecraft:model":return{model:i.model,...i.tints&&{tints:i.tints}};case"minecraft:empty":return{model:"minecraft:builtin/empty"};case"minecraft:select":{let t=e[i.property],n=t;i.pattern&&(i.property==="minecraft:local_time"||i.property==="minecraft:date")&&t&&(n=pYe(t,i.pattern));let s=i.cases.find(o=>Array.isArray(o.when)?o.when.some(l=>l===n):o.when===n)?.model??i.fallback;if(!s)throw new Error(`No matching case for ${i.property}=${n}`);let a=F5(s,e);return{...a,watchProperties:[...a.watchProperties||[],{property:i.property,type:"select",currentValue:n}]}}case"minecraft:range_dispatch":{let t=vYe(i.property,i.source,i.target,e);if(typeof t!="number")return F5(i.fallback??i.entries[0].model,e);let n=i.scale?t*i.scale:t,s=i.entries.sort((o,l)=>l.threshold-o.threshold).find(o=>n>=o.threshold)?.model??i.fallback,a=F5(s,e);return{...a,watchProperties:[...a.watchProperties||[],{property:i.property,type:"range",currentValue:t,source:i.source,...i.target&&{target:i.target}}]}}case"minecraft:condition":{let t=e[i.property],n=t?i.on_true:i.on_false,r=F5(n,e);return{...r,watchProperties:[...r.watchProperties||[],{property:i.property,type:"condition",currentValue:t}]}}case"minecraft:composite":{for(let t of i.models)try{return F5(t,e)}catch{continue}throw new Error("No resolvable model found in composite")}case"minecraft:special":return{model:"minecraft:special",special:i.model};default:throw new Error(`Unknown model type: ${i.type}`)}},T_e=(i,e)=>{let{version:t,name:n,properties:r}=e;if(r.use_duration_ms!==void 0){let a=Math.floor(r.use_duration_ms/50);r["minecraft:use_duration"]=a}let s=i.get(t,n);if(s)try{return F5(s.model,r)}catch(a){console.warn(`Error resolving model for ${n} in version ${t}:`,a);return}};var _Ye=(i,e)=>{let t,n,r=i.name;r.includes(":")||(r=`minecraft:${r}`);let s=e.currentResources?.customItemModelNames[r];if(i.components){let a=new Map;for(let u of i.components)a.set(u.type,u);let o=a.get("custom_name")||a.get("item_name");o&&(t=typeof o.data=="string"?o.data:SP.default.simplify(o.data));let l=a.get("item_model");if(l&&(n=l.data),s){let u=a.get("custom_model_data");if(u?.data){let d;typeof u.data=="number"?d=u.data:typeof u.data=="object"&&"floats"in u.data&&Array.isArray(u.data.floats)&&u.data.floats.length>0&&(d=u.data.floats[0]),d&&s[d]&&(n=s[d])}}let c=a.get("lore");c&&(t??=i.displayName??i.name,t+=`
|
|
29383
29383
|
${JSON.stringify(c.data)}`)}if(i.nbt){let a=SP.default.simplify(i.nbt),o=a.display?.Name;o&&(t=o),s&&a.CustomModelData&&s[a.CustomModelData]&&(n=s[a.CustomModelData])}return{customText:t,customModel:n}};var I_e=(i,e,t,n)=>{let r=i.name,{customModel:s}=_Ye(i,t);s&&(r=s);let a=k_e(n,{...e}),o=t.currentResources,l=T_e(Y0e(o),{name:r,version:o.version,properties:a})?.model;return(l==="minecraft:special"?void 0:l)??r};h();p();m();var B_e=Jr(L_e(),1);var D_e=(i,e,t=!1,n=!1)=>{let r=i.modelName,s=globalThis.loadedData.itemsByName[r];OE(e.currentResources.version)<OE("1.13")&&(r=(0,B_e.getRenamedData)(s?"items":"blocks",r,e.currentResources.version,"1.13.1"));let a;if(!n){let l=e.currentResources?.guiAtlas?.json,c=d=>d&&l?.textures[d.replace("minecraft:","").replace("block/","").replace("blocks/","").replace("item/","").replace("items/","").replace("_inventory","")],u=c(r)??c(i.originalItemName);if(u){let d=u.u*l.width,f=u.v*l.height;return{texture:"gui",slice:[d,f,l.tileSize,l.tileSize],scale:.25,blockData:null,modelName:null}}}let o=l=>l.top??l;try{if(!e.currentResources?.itemsRenderer)throw new Error("Items renderer is not available");a=e.currentResources.itemsRenderer.getItemTexture(r,{},!1,n)??(i.originalItemName?e.currentResources.itemsRenderer.getItemTexture(i.originalItemName,{},!1,n):void 0)??e.currentResources.itemsRenderer.getItemTexture("item/missing_texture")}catch(l){reportError?.(`Failed to render item ${r} (original: ${i.originalItemName}) on ${e.currentResources.version} (resourcepack: TODO!): ${l.stack}`),a=o(e.currentResources.itemsRenderer.getItemTexture("errored"))}return a??=o(e.currentResources.itemsRenderer.getItemTexture("unknown")),"type"in a?{texture:a.type,slice:a.slice,modelName:r,blockData:null,scale:null}:{texture:"blocks",blockData:a,modelName:r,slice:null,scale:null}};var O_e=(i,e,t,n)=>{let r=t.currentResources;if(!r)throw new Error("Resources not loaded");let s=i.itemId??i.blockId??i.name,{blockState:a}=i;try{let o=a?globalThis.loadedData.blocksByStateId[a]?.name:typeof s=="number"?globalThis.loadedData.items[s]?.name:s;if(!o)throw new Error(`Item not found: ${s}`);let l=I_e({...i,name:o},e,t,n),c=D_e({modelName:l},t,!1,!0);if(!c)throw new Error(`Failed to get render info for item ${o}`);let u=c.texture==="blocks"?r.blocksAtlasImage:r.itemsAtlasImage;if(c.blockData)return{resolvedModel:c.blockData.resolvedModel,modelName:c.modelName};if(c.slice){let[d,f,v,g]=c.slice,[b,y,_,x]=[d/u.width,f/u.height,v/u.width,g/u.height];return{u:b,v:y,su:_,sv:x,renderInfo:c,modelName:c.modelName}}throw new Error(`Invalid render info for item ${o}`)}catch(o){return reportError?.(o),{u:0,v:0,su:16/r.blocksAtlasImage.width,sv:16/r.blocksAtlasImage.width,modelName:"missing"}}};h();p();m();Lt();h();p();m();function SYe(i){return Math.min(Math.max(i,0),1)}function N_e(i,e){return{individualGain:SYe(i),maxDistance:Math.max(i,1)*e}}function U_e(i,e){i.distanceModel="linear",i.refDistance=0,i.rolloffFactor=1,i.maxDistance=e}function F_e(i,e,t,n,r){let s=e.currentTime;i.positionX?(i.positionX.setValueAtTime(t,s),i.positionY.setValueAtTime(n,s),i.positionZ.setValueAtTime(r,s)):i.setPosition(t,n,r)}var Vb=new $,MYe=new zt,AYe=new $,zb=class{constructor(e){this.worldRenderer=e;e.onWorldSwitched.push(()=>{this.stopAll()}),e.onReactiveConfigUpdated("volume",t=>{this.changeVolume(t)})}audioListener;activeSounds=new Set;audioContext;soundVolumes=new Map;baseVolume=1;initAudioListener(){this.audioListener||(this.audioListener=new Yf,this.worldRenderer.camera.add(this.audioListener))}playSound(e,t,n=1,r=1,s=500,a=16){this.initAudioListener();let o=new N0(this.audioListener);this.activeSounds.add(o);let{individualGain:l,maxDistance:c}=N_e(n,a);this.soundVolumes.set(o,l);let u=new Xf,d=Date.now();u.loadAsync(t).then(f=>{if(Date.now()-d>s){console.warn("Ignored playing sound",t,"due to timeout:",s,"ms <",Date.now()-d,"ms"),this.activeSounds.delete(o),this.soundVolumes.delete(o);return}o.setBuffer(f),U_e(o.panner,c),o.setVolume(l*this.baseVolume),o.setPlaybackRate(r),this.worldRenderer.sceneOrigin.addAndTrack(o),o.position.set(e.x,e.y,e.z),o.updateMatrixWorld(!0),o.matrixWorld.decompose(Vb,MYe,AYe),F_e(o.panner,this.audioListener.context,Vb.x,Vb.y,Vb.z),o.onEnded=()=>{this.worldRenderer.sceneOrigin.removeAndUntrack(o),o.source&&o.disconnect(),this.activeSounds.delete(o),this.soundVolumes.delete(o),u.manager.itemEnd(t)},o.play()})}stopAll(){for(let e of this.activeSounds)e&&(e.stop(),e.source&&e.disconnect(),this.worldRenderer.sceneOrigin.removeAndUntrack(e));this.activeSounds.clear(),this.soundVolumes.clear()}changeVolume(e){this.baseVolume=e;for(let[t,n]of this.soundVolumes)t.setVolume(n*this.baseVolume)}destroy(){this.stopAll(),this.audioListener&&(this.audioListener.removeFromParent(),this.audioListener=void 0)}playTestSound(){let{x:e,y:t,z:n}=this.worldRenderer.cameraWorldPos;this.playSound({x:e,y:t,z:n},"/sound.mp3")}};h();p();m();Lt();var Hb=class{constructor(e,t){this.worldRenderer=e;this.onRenderCallbacks=t;t.push(()=>{this.update()})}rollAngle=0;get damageRollAmount(){return 5}get damageAnimDuration(){return 200}rollAnimation;basePitch=0;baseYaw=0;cameraBobInput=null;setCameraBobInput(e){this.cameraBobInput=e}setBaseRotation(e,t){this.basePitch=e,this.baseYaw=t,this.update()}getBaseRotation(){return{pitch:this.basePitch,yaw:this.baseYaw}}shakeFromDamage(e){let t=this.rollAngle,n=t+(e??(Math.random()<.5?-1:1))*this.damageRollAmount;this.rollAnimation={startTime:performance.now(),startRoll:t,targetRoll:n,duration:this.damageAnimDuration/2}}update(){if(this.worldRenderer.playerStateUtils.isSpectatingEntity()&&(this.rollAngle=0,this.rollAnimation=void 0),this.rollAnimation){let t=performance.now(),n=t-this.rollAnimation.startTime,r=Math.min(n/this.rollAnimation.duration,1);this.rollAnimation.returnToZero?(this.rollAngle=this.rollAnimation.startRoll*(1-this.easeInOut(r)),r===1&&(this.rollAnimation=void 0)):(this.rollAngle=this.rollAnimation.startRoll+(this.rollAnimation.targetRoll-this.rollAnimation.startRoll)*this.easeOut(r),r===1&&(this.rollAnimation={startTime:t,startRoll:this.rollAngle,targetRoll:0,duration:this.damageAnimDuration/2,returnToZero:!0}))}let e=this.worldRenderer.cameraObject;if(this.worldRenderer.cameraGroupVr){let t=new zt().setFromAxisAngle(new $(0,1,0),this.baseYaw);e.setRotationFromQuaternion(t)}else{let t=this.addAntiZfightingOffset(this.basePitch),n=this.addAntiZfightingOffset(this.baseYaw),r=new zt().setFromAxisAngle(new $(1,0,0),t),s=new zt().setFromAxisAngle(new $(0,1,0),n),a=new zt().setFromAxisAngle(new $(0,0,1),Ot.degToRad(this.rollAngle)),o=new zt,l=new zt,c=this.worldRenderer.playerStateReactive.perspective;if(this.cameraBobInput){let d=Fy(this.cameraBobInput);o=new zt().setFromAxisAngle(new $(0,0,1),d.rotation.z),l=new zt().setFromAxisAngle(new $(1,0,0),d.rotation.x),c==="first_person"&&this.worldRenderer.camera.position.set(d.position.x,d.position.y,0)}else c==="first_person"&&this.worldRenderer.camera.position.set(0,0,0);let u=s.multiply(r).multiply(a).multiply(o).multiply(l);e.setRotationFromQuaternion(u)}}easeOut(e){return 1-(1-e)*(1-e)}easeInOut(e){return e<.5?2*e*e:1-(-2*e+2)**2/2}addAntiZfightingOffset(e){let n=(e%(Math.PI*2)+Math.PI*2)%(Math.PI*2),r=.01;return Math.abs(n)<r||Math.abs(n-Math.PI/2)<r||Math.abs(n-Math.PI)<r||Math.abs(n-3*Math.PI/2)<r?e+.001:e}};h();p();m();Lt();var qb=class{constructor(e){this.worldRenderer=e;this.worldRenderer.onWorldSwitched.push(()=>{this.onWorldGone()}),this.worldRenderer.onRender.push(()=>{this.render()}),this.worldRenderer.onReactiveConfigUpdated("volume",()=>{let{volume:t}=this.worldRenderer.worldRendererConfig;for(let[n,r]of this.customMedia.entries())r.positionalAudio&&r.positionalAudio.setVolume((r.props.volume??1)*t)})}customMedia=new Map;onWorldGone(){for(let[e,t]of this.customMedia.entries())this.destroyMedia(e)}onWorldStop(){for(let[e,t]of this.customMedia.entries())this.setVideoPlaying(e,!1)}createErrorTexture(e,t,n=16777215,r="Failed to load"){let s=new OffscreenCanvas(100,100),a=100;s.width=a,s.height=a;let o=s.getContext("2d");if(!o)return new Nn(s);o.clearRect(0,0,s.width,s.height),o.fillStyle=`rgba(${n>>16&255}, ${n>>8&255}, ${n&255}, 1)`,o.fillRect(0,0,s.width,s.height),o.fillStyle="#ff0000",o.font="bold 10px sans-serif",o.textAlign="center",o.textBaseline="middle",o.fillText(r,s.width/2,s.height/2,s.width);let l=new Nn(s);return l.minFilter=Xt,l.magFilter=Xt,l}createBackgroundTexture(e,t,n=0,r=1){let s=new OffscreenCanvas(1,1);s.width=1,s.height=1;let a=s.getContext("2d");if(!a)return new Nn(s);let o=n>>16&255,l=n>>8&255,c=n&255;a.fillStyle=`rgba(${o}, ${l}, ${c}, ${r})`,a.fillRect(0,0,1,1);let u=new Nn(s);return u.minFilter=ct,u.magFilter=ct,u}validateOrigin(e,t){if(t===!0)return!0;if(t===!1)return!1;let n=new URL(e);return t.some(r=>n.origin.endsWith(r))}onPageInteraction(){for(let[e,t]of this.customMedia.entries())t.hadAutoPlayError&&(t.hadAutoPlayError=!1,this.playVideo(e))}addMedia(e,t){let n=structuredClone(t);this.destroyMedia(e);let r=!1;t.src.startsWith("https://disk.yandex.ru/i/")&&(r=!0,t.src=`/ya-image?url=${t.src}`);let{scene:s}=this.worldRenderer;t.allowOrigins!==void 0&&!this.validateOrigin(t.src,t.allowOrigins)&&(console.warn("Remote resource blocked due to security policy",t.src,"allowed origins:",t.allowOrigins,"you can control it with `remoteContentNotSameOrigin` option"),t.src="");let o=t.src.endsWith(".png")||t.src.endsWith(".jpg")||t.src.endsWith(".jpeg")||t.imageOverride;r&&!t.imageOverride&&fetch(t.src,{method:"HEAD"}).then(A=>{A.headers.get("content-type")?.startsWith("image/")&&(this.destroyMedia(e),this.addMedia(e,{...n,src:t.src,imageOverride:!0}))}).catch(console.error);let l,c,u=Bn&&!o;if(u&&console.warn(`[addMedia] Video "${e}" skipped in off-thread renderer (no HTMLVideoElement)`),!o&&!u){l=document.createElement("video"),l.src=t.src.endsWith(".gif")?t.src.replace(".gif",".mp4"):t.src,l.loop=t.loop??!0;let A=(t.volume??1)*this.worldRenderer.worldRendererConfig.volume;l.volume=Math.min(A,1),l.playsInline=!0,l.crossOrigin="anonymous";let k=this.worldRenderer.soundSystem;if(k.initAudioListener(),!k.audioListener)throw new Error("Audio listener not initialized");c=new N0(k.audioListener),c.setRefDistance(6),c.setVolume(A),this.worldRenderer.sceneOrigin.addAndTrack(c),c.position.set(t.position.x,t.position.y,t.position.z),c.setMediaElementSource(l),c.connect(),l.addEventListener("pause",()=>{c?.pause(),globalThis.tempSendVideoStop?.(e,"paused",l.currentTime)}),l.addEventListener("play",()=>{c?.play(),globalThis.tempSendVideoPlay?.(e)}),l.addEventListener("seeked",()=>{c&&l&&(c.offset=l.currentTime)}),l.addEventListener("stalled",()=>{globalThis.tempSendVideoStop?.(e,"stalled",l.currentTime)}),l.addEventListener("waiting",()=>{globalThis.tempSendVideoStop?.(e,"waiting",l.currentTime)}),l.addEventListener("error",({error:C})=>{globalThis.tempSendVideoStop?.(e,`error: ${C}`,l.currentTime)}),l.addEventListener("ended",()=>{globalThis.tempSendVideoStop?.(e,"ended",l.currentTime),t.loop||(l.currentTime=0,S.ended=!0)})}let d=this.createBackgroundTexture(t.size.width,t.size.height,t.background),f=A=>{let k=this.createErrorTexture(t.size.width,t.size.height,t.background,A);b.map=k,b.needsUpdate=!0},v=new qn(1,1),g=t.allowLighting?Ss:_t,b=new g({map:d,transparent:!0,side:t.doubleSide?Cn:fi,alphaTest:.1}),y;if(l)y=new xu(l);else if(u)y=this.createErrorTexture(t.size.width,t.size.height,t.background,"Video unavailable (multi-thread)");else if(Bn){let A=C3(t.src);y=A.texture,y.minFilter=ct,y.magFilter=ct,A.promise.then(()=>{this.customMedia.get(e)?.texture===y&&(b.map=y,b.needsUpdate=!0)}).catch(()=>f())}else y=new _o().load(t.src,()=>{this.customMedia.get(e)?.texture===y&&(b.map=y,b.needsUpdate=!0)},void 0,()=>f());y.minFilter=ct,y.magFilter=ct,y.generateMipmaps=!1;let _=new Ke(v,b),{mesh:x}=this.positionMeshExact(_,Ot.degToRad((t.rotation??0)*90),t.position,t.size.width,t.size.height);s.add(x),l&&(_.onBeforeRender=()=>{l.readyState===l.HAVE_ENOUGH_DATA&&(!l.paused||!S?.hadAutoPlayError)&&(b.map!==y&&(b.map=y,b.needsUpdate=!0),y.needsUpdate=!0,c&&(c.position.copy(x.position),c.rotation.copy(x.rotation)))});let w=A=>{let k=v.attributes.uv.array;k[0]=A.startU,k[1]=A.startV,k[2]=A.endU,k[3]=A.startV,k[4]=A.endU,k[5]=A.endV,k[6]=A.startU,k[7]=A.endV,v.attributes.uv.needsUpdate=!0};t.uvMapping&&w(t.uvMapping);let S={mesh:x,video:l,texture:y,updateUVMapping:w,positionalAudio:c,props:n,hadAutoPlayError:!1,pausedBecuaseHidden:!1,ended:!1,handleError(A){if(S.destroyed)return;console.error(`Failed to play video ${e}:`,A);let k=C=>C;f(A.name==="NotAllowedError"||A.name==="AbortError"?k("Waiting for user interaction"):k("Failed to auto play"))}};return this.customMedia.set(e,S),l&&t.autoPlay&&this.playVideo(e,!0),e}playVideo(e,t=!1){let n=this.customMedia.get(e);if(n?.video){if(!t&&n.positionalAudio&&n.video.currentTime<1){let r=n.video.currentTime;this.addMedia(e,n.props),n.video.currentTime=r,n.props.autoPlay||this.playVideo(e,!0);return}n.video.play().then(()=>{n.hadAutoPlayError=!1,console.log(`Playing video ${e}`)}).catch(r=>{n.pausedBecuaseHidden||((r.name==="NotAllowedError"||r.name==="AbortError"||r.message?.includes("not allowed")&&!n.pausedBecuaseHidden)&&(n.hadAutoPlayError=!0),n.handleError(r))})}}render(){for(let[e,t]of this.customMedia.entries()){let n=t.mesh.visible;t.mesh.visible=this.worldRenderer.shouldObjectVisible(t.mesh)&&!t.mesh.forceHide,n!==t.mesh.visible&&t.video&&(t.mesh.visible?t.pausedBecuaseHidden&&(this.playVideo(e),t.pausedBecuaseHidden=!1):t.video.paused||(t.video.pause(),t.pausedBecuaseHidden=!0))}}setVideoPlaying(e,t){let n=this.customMedia.get(e);n?.video&&(t?this.playVideo(e):n.video.pause())}setVideoSeeking(e,t){let n=this.customMedia.get(e);n?.video&&(n.video.currentTime=t)}setVideoVolume(e,t){let n=this.customMedia.get(e);n?.video&&(n.video.volume=t)}setVideoSpeed(e,t){let n=this.customMedia.get(e);n?.video&&(n.video.playbackRate=t)}setControlMode(e,t,n){let r=this.customMedia.get(e);r?.video&&(r.props.controlMode={mouseButton:t,controlMode:n})}destroyMedia(e){let{scene:t}=this.worldRenderer,n=this.customMedia.get(e);if(n){n.destroyed=!0,n.video&&(n.video.pause(),n.video.src="",n.video.remove()),n.positionalAudio&&this.worldRenderer.sceneOrigin.removeAndUntrack(n.positionalAudio),this.worldRenderer.sceneOrigin.removeAndUntrack(n.mesh),n.texture.dispose();let r=n.mesh.children[0];r&&(r.geometry.dispose(),r.material instanceof kn&&r.material.dispose()),this.customMedia.delete(e)}}positionMeshExact(e,t,n,r,s,a=1){t===0&&(n.z+=.001),t===Math.PI/2&&(n.x-=.001),t===Math.PI&&(n.z-=.001),t===3*Math.PI/2&&(n.x+=.001),t===0&&(n.z+=1),t===Math.PI&&(n.x+=1),t===3*Math.PI/2&&(n.z+=1,n.x+=1),e.matrix.identity(),e.position.set(0,0,0),e.rotation.set(0,0,0),e.scale.set(1,1,1),e.rotateY(t),(t===Math.PI/2||t===3*Math.PI/2)&&(e.rotateZ(-Math.PI),e.rotateX(-Math.PI)),e.scale.set(r,s,a),e.geometry.translate(.5,.5,0),e.geometry.attributes.position.needsUpdate=!0,this.worldRenderer.sceneOrigin.track(e),e.position.set(n.x,n.y,n.z);let o=new bt;o.add(e);let l=new Ke(new Mn(.1,.1,.1),new _t({color:16711680}));l.position.set(n.x,n.y,n.z),o.add(l);let c=n.x+Math.cos(t)*r,u=n.z+Math.sin(t)*r,d=new Ke(new Mn(.1,.1,.1),new _t({color:255}));d.position.set(n.x,n.y+s,n.z),o.add(d);let f=new Ke(new Mn(.1,.1,.1),new _t({color:16776960}));f.position.set(c,n.y,u),o.add(f);let v=new Ke(new Mn(.1,.1,.1),new _t({color:16711935}));v.position.set(c,n.y+s,u),o.add(v);let g=new $(this.worldRenderer.sceneOrigin.toSceneX(n.x),this.worldRenderer.sceneOrigin.toSceneY(n.y),this.worldRenderer.sceneOrigin.toSceneZ(n.z)),b=new F0(new $(Math.cos(t),0,Math.sin(t)),g,1,16711680);return o.add(b),{mesh:e,debugGroup:o}}createTestCanvasTexture(){let e=new OffscreenCanvas(100,100);e.width=100,e.height=100;let t=e.getContext("2d");return t?(t.font="10px Arial",t.fillStyle="red",t.fillText("Hello World",0,10),new Nn(e)):null}lastCheck=0;THROTTLE_TIME=100;tryIntersectMedia(){if(Date.now()-this.lastCheck<this.THROTTLE_TIME)return;if(this.customMedia.size===0){this.worldRenderer.reactiveState.world.intersectMedia=null,this.worldRenderer.debugVideo=null,this.worldRenderer.cursorBlock.cursorLinesHidden=!1;return}this.lastCheck=Date.now();let{camera:e,scene:t}=this.worldRenderer,n=new U0,r=new ze(0,0);n.setFromCamera(r,e);let s=n.intersectObjects(t.children,!0);if(s.length>0){let a=s[0],o=a.object;for(let[l,c]of this.customMedia.entries())if(o===c.mesh||c.mesh.children.includes(o)){let{uv:u}=a;if(u){let d={id:l,x:u.x,y:u.y};this.worldRenderer.reactiveState.world.intersectMedia=d,this.worldRenderer.debugVideo=c,this.worldRenderer.cursorBlock.cursorLinesHidden=!0;return}}}this.worldRenderer.reactiveState.world.intersectMedia=null,this.worldRenderer.debugVideo=null,this.worldRenderer.cursorBlock.cursorLinesHidden=!1}handleUserClick(e){let t=this.worldRenderer.reactiveState.world.intersectMedia;if(t){let{id:n,x:r,y:s}=t,a=this.customMedia.get(n),o=a?.props.controlMode;if(a?.video&&(o?.mouseButton==="both"||o?.mouseButton===e))switch(o?.controlMode){case"play_pause":{this.setVideoPlaying(n,a.video.paused);break}case"play_if_ended":{a.ended&&this.setVideoPlaying(n,!0);break}case"toggle_mute":{a.video.muted=!a.video.muted;break}}}}};h();p();m();Lt();h();p();m();Lt();var kYe=1,V_e=10,ro={TARGET_SCREEN_PX:150,CANVAS_SIZE:256,LAYOUT:{DOT_Y:.3,NAME_Y:.45,DISTANCE_Y:.55},CANVAS_SCALE:2,ARROW:{enabledDefault:!1,pixelSize:50,paddingPx:50},DEFAULT_VISUAL_SCALE:1,DEFAULT_OPACITY:1};function H_e(i){let e=i.color??16711680,t=i.depthTest??!1,n=i.visualScale??i.metadata?.visualScale??(typeof window>"u"?void 0:window.serverMetadata?.waypointVisualScale)??ro.DEFAULT_VISUAL_SCALE,r=i.opacity??i.metadata?.opacity??(typeof window>"u"?void 0:window.serverMetadata?.waypointOpacity)??ro.DEFAULT_OPACITY,s=bi(z_e(),z_e());Gb(s,e,i.label??"","0m",n);let a=new Nn(s);a.anisotropy=1,a.magFilter=Xt,a.minFilter=Xt;let o=new xs({map:a,transparent:!0,opacity:1,depthTest:t,depthWrite:!1}),l=new Zi(o);l.position.set(0,0,0),l.renderOrder=10,l.material.opacity=r;let c=i.label??"",u="0m",d=Number.NaN,f,v,g,b,y=null,_=ro.ARROW.enabledDefault,x=new bt;x.add(l);let{x:w,y:S,z:A}=i.position;x.position.set(w,S,A);function k(){a.needsUpdate=!0}function C(){if(!v||!g)return;let q=v.width;g.clearRect(0,0,q,q),g.beginPath(),g.moveTo(q*.15,q*.5),g.lineTo(q*.85,q*.5),g.lineTo(q*.5,q*.15),g.closePath();let z=`#${e.toString(16).padStart(6,"0")}`;g.lineWidth=6,g.strokeStyle="black",g.stroke(),g.fillStyle=z,g.fill(),b&&(b.needsUpdate=!0)}function I(q){e=q,u="0m",d=0,Gb(s,e,c,"0m",n),k(),f&&C()}function T(q){c=q??"",Gb(s,e,c,u,n),k()}function L(q,z){z!==u&&(u=z,Gb(s,e,q,z,n),k())}function B(q){l.visible=q}function U(q,z,K){x.position.set(q,z,K)}function O(q,z,K,re){let Z=z*Math.PI/180,Q=Math.tan(Z/2)*2*K*(ro.TARGET_SCREEN_PX*n/re);l.scale.set(Q,Q,1)}function V(){if(f)return;let q=128;v=bi(q,q),g=v.getContext("2d"),C(),b=new Nn(v),b.anisotropy=1,b.magFilter=Xt,b.minFilter=Xt;let z=new xs({map:b,transparent:!0,depthTest:!1,depthWrite:!1,opacity:r});f=new Zi(z),f.renderOrder=12,f.visible=!1,y&&y.add(f)}function F(q){_=q,!q&&f&&(f.visible=!1)}function J(q){f?.parent&&f.parent.remove(f),y=q,f&&q&&q.add(f)}function X(q,z,K){if(!_||(V(),!f))return!0;let re=i.metadata?.onlyLeftRight===!0,Z=new $;q.getWorldDirection(Z);let Y=q.up.clone().normalize(),Q=new $().copy(Z).cross(Y).normalize(),ue=new $().copy(Q).cross(Z).normalize(),me=new $().setFromMatrixPosition(q.matrixWorld),we=new $(x.position.x,x.position.y,x.position.z).sub(me),ye=we.dot(Z),pe=we.dot(Q),Ge=we.dot(ue),ge=z/K,Ie=q.fov*Math.PI/180,ke=2*Math.atan(Math.tan(Ie/2)*ge),je=Math.atan2(pe,ye),he=Math.atan2(Ge,ye);if(ye>0&&Math.abs(je)<=ke/2&&Math.abs(he)<=Ie/2)return f.visible=!1,!0;let ae=je/(ke/2),Qe=he/(Ie/2);ye<=0&&(Math.abs(ae)>Math.abs(Qe)?(ae=Math.sign(ae),Qe=0):(ae=0,Qe=Math.sign(Qe))),re&&(Math.abs(ae)>Math.abs(Qe)||(ae=ae>=0?1:-1),Qe=0);let Xe=Math.max(Math.abs(ae),Math.abs(Qe))||1,te=ae/Xe,D=Qe/Xe,ee=ro.ARROW.paddingPx,P=(te+1)*.5*z,E=(1-D)*.5*K,R=Math.min(Math.max(P,ee),z-ee),N=Math.min(Math.max(E,ee),K-ee);te=R/z*2-1,D=-(N/K)*2+1;let H=Math.max(2,q.near*4),G=Math.tan(Ie/2)*H,oe=G*ge,fe=me.clone().add(Z.clone().multiplyScalar(H)).add(Q.clone().multiplyScalar(te*oe)).add(ue.clone().multiplyScalar(D*G));f.visible=!0,f.position.copy(fe);let _e=Math.atan2(Qe,ae);f.material.rotation=_e-Math.PI/2;let Te=Math.tan(Ie/2)*2*H*(ro.ARROW.pixelSize*n/K);return f.scale.set(Te,Te,1),!1}function ne(q){return q.distanceTo(x.position)}function se(q,z,K,re){let Z=ne(q);O(q,z.fov,Z,re);let Y=Math.round(Z/V_e)*V_e;Y!==d&&(d=Y,L(c,`${Math.max(0,Y)}m`));let Q=X(z,K,re);return B(Q),Q}function j(){let q=l.material;if(q.map?.dispose(),q.dispose(),f){f.parent&&f.parent.remove(f);let z=f.material;z.map?.dispose(),z.dispose()}f=void 0,v=void 0,g=void 0,b=void 0}return{group:x,sprite:l,enableOffscreenArrow:F,setArrowParent:J,updateForCamera:se,setColor:I,setLabel:T,updateDistanceText:L,setVisible:B,setPosition:U,dispose:j}}function q_e(){let i=globalThis.devicePixelRatio||1,e=Math.min(i,kYe);return ro.CANVAS_SCALE*e}function z_e(){return Math.round(ro.CANVAS_SIZE*q_e())}function Gb(i,e,t,n,r){let s=i.width,a=q_e(),o=i.getContext("2d");o.clearRect(0,0,s,s);let l=s/2,c=Math.round(s*ro.LAYOUT.DOT_Y),u=Math.round(s*.05*r),d=Math.max(2,Math.round(4*a*r)),f=u+d;o.beginPath(),o.arc(l,c,f,0,Math.PI*2),o.fillStyle=`#${e.toString(16).padStart(6,"0")}`,o.fill(),o.textAlign="center",o.textBaseline="middle";let v=Math.round(s*.08*r),g=Math.round(s*.06*r);o.font=`800 ${v}px mojangles`,o.lineWidth=Math.max(2,Math.round(3*a*r));let b=Math.round(s*ro.LAYOUT.NAME_Y);o.strokeStyle="black",o.strokeText(t,l,b),o.fillStyle="white",o.fillText(t,l,b),o.font=`800 ${g}px mojangles`,o.lineWidth=Math.max(2,Math.round(2*a*r));let y=Math.round(s*ro.LAYOUT.DISTANCE_Y);o.strokeStyle="black",o.strokeText(n,l,y),o.fillStyle="#CCCCCC",o.fillText(n,l,y)}var Wb=class{constructor(e){this.worldRenderer=e}waypoints=new Map;waypointScene=new Cr;lastCameraPosition=new $;lastUpdateTime=0;UPDATE_THROTTLE_MS=16;updateWaypoints(){let e=performance.now(),t=this.worldRenderer.getCameraPosition(),n=this.lastCameraPosition.distanceTo(t)>.5,r=e-this.lastUpdateTime>this.UPDATE_THROTTLE_MS;if(!n&&!r)return;this.lastCameraPosition.copy(t),this.lastUpdateTime=e;let s=this.worldRenderer.renderer.getSize(new ze);for(let a of this.waypoints.values()){let o=new $(a.x,a.y,a.z),l=t.distanceTo(o),c=(!a.minDistance||l>=a.minDistance)&&(a.maxDistance===1/0||l<=a.maxDistance);a.sprite.setVisible(c),c&&(a.sprite.setPosition(this.worldRenderer.sceneOrigin.toSceneX(a.x),this.worldRenderer.sceneOrigin.toSceneY(a.y),this.worldRenderer.sceneOrigin.toSceneZ(a.z)),a.sprite.updateForCamera(this.worldRenderer.getCameraPosition(),this.worldRenderer.camera,s.width,s.height))}}render(){this.waypoints.size!==0&&(this.updateWaypoints(),this.worldRenderer.renderer.render(this.waypointScene,this.worldRenderer.camera))}addWaypoint(e,t,n,r,s={}){this.removeWaypoint(e);let a=s.color??16711680,{label:o,metadata:l}=s,c=s.minDistance??0,u=s.maxDistance??1/0,d=H_e({position:new $(t,n,r),color:a,label:o||e,metadata:l});d.enableOffscreenArrow(!0),d.setArrowParent(this.waypointScene),this.waypointScene.add(d.group),this.waypoints.set(e,{id:e,x:t+.5,y:n+.5,z:r+.5,minDistance:c,maxDistance:u,color:a,label:o,sprite:d})}removeWaypoint(e){let t=this.waypoints.get(e);t&&(this.waypointScene.remove(t.sprite.group),t.sprite.dispose(),this.waypoints.delete(e))}clear(){for(let e of this.waypoints.keys())this.removeWaypoint(e)}testWaypoint(){this.addWaypoint("Test Point",0,70,0,{color:65280,label:"Test Point"}),this.addWaypoint("Spawn",0,64,0,{color:16776960,label:"Spawn"}),this.addWaypoint("Far Point",100,70,100,{color:255,label:"Far Point"}),this.addWaypoint("Far Point 2",180,170,100,{color:255,label:"Far Point 2"}),this.addWaypoint("Far Point 3",1e3,100,1e3,{color:255,label:"Far Point 3"})}getWaypoint(e){return this.waypoints.get(e)}getAllWaypoints(){return[...this.waypoints.values()]}setWaypointColor(e,t){let n=this.waypoints.get(e);n&&(n.sprite.setColor(t),n.color=t)}setWaypointLabel(e,t){let n=this.waypoints.get(e);n&&(n.label=t,n.sprite.setLabel(t))}};h();p();m();Lt();var Vn=class Vn{constructor(e){this.worldRenderer=e;this.particleGeometry=new Mn(Vn.DEFAULT_PARTICLE_SIZE,Vn.DEFAULT_PARTICLE_SIZE,Vn.DEFAULT_PARTICLE_SIZE),this.createParticleMaterials()}explosions=new Map;particleGeometry;particleMaterials=[];testModeTimer;explosionCounter=0;createParticleMaterials(){let e=[16711680,65280,255,16776960,16711935,65535,16753920,8388736,16761035,16777215];for(let t of e){let n=new _t({color:t,transparent:!0,opacity:1});this.particleMaterials.push(n)}}getRandomMaterial(){return this.particleMaterials[Math.floor(Math.random()*this.particleMaterials.length)]}createExplosion(e,t=1,n,r=Vn.DEFAULT_EXPLOSION_DURATION){let s=`firework_${this.explosionCounter++}_${Date.now()}`,a=[],o=Math.floor(Vn.DEFAULT_PARTICLE_COUNT*t),l;if(Vn.DEBUG_SHOW_EXPLOSION_CENTER){let u=.5*t,d=new ws(u,8,8),f=new _t({color:16711680,wireframe:!0,transparent:!0,opacity:.8});l=new Ke(d,f),l.renderOrder=999,this.worldRenderer.sceneOrigin.addAndTrack(l),l.position.set(e.x,e.y,e.z),console.log(`Debug: Created explosion center sphere at (${e.x}, ${e.y}, ${e.z}) with radius ${u}`)}for(let u=0;u<o;u++){let d=Math.random()*Math.PI*2,f=Math.sqrt(Math.random())*Vn.VELOCITY_FACTOR*t,v=new At(f*Math.cos(d),Math.random()*.5-.25,f*Math.sin(d));u<5&&(console.log(`Debug: Particle ${u} - Initial pos: (${e.x}, ${e.y}, ${e.z}), Velocity: (${v.x.toFixed(3)}, ${v.y.toFixed(3)}, ${v.z.toFixed(3)}), Distance: ${f.toFixed(3)}`),console.log(`Debug: Particle ${u} - Velocity magnitude: ${v.toString()}, Expected max: ${(Vn.VELOCITY_FACTOR*t).toFixed(3)}`));let g=n===void 0?this.getRandomMaterial().clone():new _t({color:n,transparent:!0,opacity:1}),b=new Ke(this.particleGeometry,g);b.renderOrder=1e3,this.worldRenderer.sceneOrigin.addAndTrack(b),b.position.set(e.x,e.y,e.z),u<5&&console.log(`Debug: Particle ${u} mesh created at (${b.position.x}, ${b.position.y}, ${b.position.z}) with size ${Vn.DEFAULT_PARTICLE_SIZE}`);let y={position:e.clone(),velocity:v,color:new We(g.color),life:1,maxLife:1,mesh:b};a.push(y)}let c={id:s,position:e.clone(),particles:a,startTime:Date.now(),duration:r,size:t,debugSphere:l};return this.explosions.set(s,c),console.log(`Debug: Created firework explosion ${s} at (${e.x}, ${e.y}, ${e.z}) with ${o} particles, duration ${r}ms`),console.log(`Debug: Expected behavior - All particles should start at explosion center and move outward with velocities up to ${(Vn.VELOCITY_FACTOR*t).toFixed(3)} units/second`),console.log(`Debug: Debug sphere radius: ${(.5*t).toFixed(3)}, Particle size: ${Vn.DEFAULT_PARTICLE_SIZE}`),c}createExplosionFacingCamera(e,t=1,n,r=Vn.DEFAULT_EXPLOSION_DURATION){let s=`firework_${this.explosionCounter++}_${Date.now()}`,a=[],o=Math.floor(Vn.DEFAULT_PARTICLE_COUNT*t),l;if(Vn.DEBUG_SHOW_EXPLOSION_CENTER){let f=.5*t,v=new ws(f,8,8),g=new _t({color:16711680,wireframe:!0,transparent:!0,opacity:.8});l=new Ke(v,g),l.renderOrder=999,this.worldRenderer.sceneOrigin.addAndTrack(l),l.position.set(e.x,e.y,e.z),console.log(`Debug: Created camera-facing explosion center sphere at (${e.x}, ${e.y}, ${e.z}) with radius ${f}`)}let c=this.worldRenderer.getCameraPosition(),u=new At(c.x-e.x,c.y-e.y,c.z-e.z).normalize();for(let f=0;f<o;f++){let v=Math.random()*Math.PI*2,g=Math.sqrt(Math.random())*Vn.VELOCITY_FACTOR*t,b=new At(g*Math.cos(v),g*Math.sin(v),0),y=new At(b.x*u.x-b.z*u.z,b.y,b.x*u.z+b.z*u.x);f<5&&console.log(`Debug: Camera-facing Particle ${f} - Velocity: (${y.x.toFixed(3)}, ${y.y.toFixed(3)}, ${y.z.toFixed(3)}), Distance: ${g.toFixed(3)}`);let _=n===void 0?this.getRandomMaterial().clone():new _t({color:n,transparent:!0,opacity:1}),x=new Ke(this.particleGeometry,_);x.renderOrder=1e3,this.worldRenderer.sceneOrigin.addAndTrack(x),x.position.set(e.x,e.y,e.z);let w={position:e.clone(),velocity:y,color:new We(_.color),life:1,maxLife:1,mesh:x};a.push(w)}let d={id:s,position:e.clone(),particles:a,startTime:Date.now(),duration:r,size:t,debugSphere:l};return this.explosions.set(s,d),console.log(`Debug: Created camera-facing firework explosion ${s} at (${e.x}, ${e.y}, ${e.z}) with ${o} particles, duration ${r}ms`),d}explode(e,t=1,n,r){return this.createExplosion(e,t,n,r).id}explodeFacingCamera(e,t=1,n,r){return this.createExplosionFacingCamera(e,t,n,r).id}startTestMode(){let e=this.worldRenderer.getCameraPosition(),t=new At(e.x,e.y+10,e.z);this.testModeTimer=setInterval(()=>{let n=.8+Math.random()*.4,r=[16711680,65280,255,16776960,16711935,65535,16753920],s=r[Math.floor(Math.random()*r.length)];console.log("fireworkPos",t),this.explodeFacingCamera(t,n,s)},Vn.TEST_INTERVAL)}updateParticle(e,t,n){let r=e.mesh.position.x===e.position.x&&e.mesh.position.y===e.position.y&&e.mesh.position.z===e.position.z;r&&e.life>.95&&(console.log(`Debug: First particle update - DeltaTime: ${t}ms (${(t/1e3).toFixed(3)}s), Duration: ${n}`),console.log(`Debug: Initial velocity: (${e.velocity.x.toFixed(3)}, ${e.velocity.y.toFixed(3)}, ${e.velocity.z.toFixed(3)}) units/s`),console.log(`Debug: Initial position: (${e.position.x.toFixed(3)}, ${e.position.y.toFixed(3)}, ${e.position.z.toFixed(3)})`)),e.velocity.y+=Vn.GRAVITY;let s=e.position.clone(),a=t/1e3;e.position.add(e.velocity.scaled(a)),e.mesh.position.set(e.position.x,e.position.y,e.position.z);let o=e.life;e.life-=t/n;let l=Math.max(0,e.life);if(e.mesh.material instanceof _t&&(e.mesh.material.opacity=l),r&&o>.95){let c=e.position.distanceTo(s);console.log(`Debug: Particle moved ${c.toFixed(4)} units in ${(t/1e3).toFixed(3)}s, new pos: (${e.position.x.toFixed(3)}, ${e.position.y.toFixed(3)}, ${e.position.z.toFixed(3)})`),console.log(`Debug: Life: ${o.toFixed(3)} -> ${e.life.toFixed(3)}, Opacity: ${l.toFixed(3)}`)}return e.life>0}render(){let e=Date.now(),t=16.67;this.explosions.size>0&&Math.random()<.01&&console.log(`Debug: Render called with ${this.explosions.size} explosions, deltaTime: ${t}`);for(let[n,r]of this.explosions.entries()){let s=e-r.startTime;if(s>=r.duration){console.log(`Debug: Removing expired explosion ${n} after ${s}ms`),this.removeExplosion(n);continue}s%2e3<16&&console.log(`Debug: Explosion ${n} - Elapsed: ${s}ms, Particles alive: ${r.particles.length}`),r.particles=r.particles.filter(a=>this.updateParticle(a,t,r.duration)),r.particles.length===0&&(console.log(`Debug: Removing explosion ${n} - no particles left`),this.removeExplosion(n))}}removeExplosion(e){let t=this.explosions.get(e);if(t){for(let n of t.particles)this.worldRenderer.sceneOrigin.removeAndUntrack(n.mesh),n.mesh.material instanceof kn&&n.mesh.material.dispose();t.debugSphere&&(this.worldRenderer.sceneOrigin.removeAndUntrack(t.debugSphere),t.debugSphere.geometry.dispose(),t.debugSphere.material instanceof kn&&t.debugSphere.material.dispose(),console.log("Debug: Removed explosion center sphere")),this.explosions.delete(e)}}stopTestMode(){this.testModeTimer&&(clearInterval(this.testModeTimer),this.testModeTimer=void 0)}destroy(){this.stopTestMode();for(let e of this.explosions.keys())this.removeExplosion(e);for(let e of this.particleMaterials)e.dispose();this.particleGeometry.dispose()}};Hn(Vn,"DEFAULT_PARTICLE_COUNT",50),Hn(Vn,"DEFAULT_PARTICLE_SIZE",.05),Hn(Vn,"DEFAULT_EXPLOSION_DURATION",6e3),Hn(Vn,"GRAVITY",-.005),Hn(Vn,"VELOCITY_FACTOR",1.5),Hn(Vn,"TEST_INTERVAL",1e3),Hn(Vn,"DEBUG_SHOW_EXPLOSION_CENTER",!0),Hn(Vn,"DEBUG_SHOW_PARTICLE_TRAILS",!1);var jb=Vn;h();p();m();Lt();var $b=class i{constructor(e,t,n,r){this.worldRenderer=e;this.updateCamera=t;this.updateFov=n;this.getInitialState=r}isRunning=!1;currentScript=null;currentPointIndex=0;currentTweens=[];startTime=0;totalDuration=0;currentPosition={x:0,y:0,z:0};currentRotation={yaw:0,pitch:0};currentFov=75;startScript(e){if(this.isRunning)return console.warn("Cinematic script already running. Stop current script first."),!1;if(!e.points||e.points.length===0)return console.warn("Cinematic script has no points"),!1;this.currentScript=e,this.isRunning=!0,this.currentPointIndex=0,this.startTime=performance.now(),this.totalDuration=e.points.reduce((n,r)=>n+r.duration,0);let t=this.getInitialState();return this.currentPosition={x:t.position.x,y:t.position.y,z:t.position.z},this.currentRotation={yaw:t.yaw,pitch:t.pitch},this.currentFov=t.fov,console.log(`Starting cinematic script: ${e.name||"Unnamed"} (${this.totalDuration}ms)`),this.moveToPoint(0),!0}stopScript(){if(this.isRunning){for(let e of this.currentTweens)e.stop();this.currentTweens=[],this.isRunning=!1,this.currentScript=null,this.currentPointIndex=0}}runExampleScripts(e){let t=this.worldRenderer.getCameraPosition(),n=new At(t.x,t.y,t.z),r=i.createCircularFlyby(n,30,20,15e3),s=i.createSpiralDescent(n.offset(0,50,0),n,3,12e3),a=i.createBuildingTour([{pos:n.offset(-20,10,-20),lookAt:n,duration:3e3},{pos:n.offset(20,15,-20),lookAt:n,duration:3e3},{pos:n.offset(20,20,20),lookAt:n,duration:3e3},{pos:n.offset(-20,25,20),lookAt:n,duration:3e3}]),o=[r,s,a];return this.startScript(o[e]),{circular:r,spiral:s,buildingTour:a}}moveToPoint(e){if(!this.currentScript||e>=this.currentScript.points.length){this.handleScriptComplete();return}let t=this.currentScript.points[e],{duration:n}=t,r={x:t.x,y:t.y,z:t.z},s={yaw:t.yaw,pitch:t.pitch},a=t.fov??this.currentFov;if(t.lookAt){let d=new $(t.lookAt.x,t.lookAt.y,t.lookAt.z),f=new $(t.x,t.y,t.z),v=d.sub(f).normalize();s.yaw=Math.atan2(-v.x,-v.z),s.pitch=Math.asin(v.y)}let o=this.getEasingFunction(t.easing||"easeInOut"),l=new $r(this.currentPosition).to(r,n).easing(o).onUpdate(()=>{this.updateCamera(new At(this.currentPosition.x,this.currentPosition.y,this.currentPosition.z),this.currentRotation.yaw,this.currentRotation.pitch)}),c=new $r(this.currentRotation).to(this.wrapRotation(s),n).easing(o).onUpdate(()=>{this.updateCamera(new At(this.currentPosition.x,this.currentPosition.y,this.currentPosition.z),this.currentRotation.yaw,this.currentRotation.pitch)}),u=null;if(Math.abs(a-this.currentFov)>.1){let d={fov:this.currentFov};u=new $r(d).to({fov:a},n).easing(o).onUpdate(()=>{this.currentFov=d.fov,this.updateFov(this.currentFov)})}this.currentTweens=[l,c],u&&this.currentTweens.push(u),l.start(),c.start(),u?.start(),l.onComplete(()=>{this.currentPointIndex++,this.currentScript?.onPointReached?.(e,t),this.isRunning&&this.moveToPoint(this.currentPointIndex)})}wrapRotation(e){let t=e.yaw,n=t-this.currentRotation.yaw;n>Math.PI?t-=2*Math.PI:n<-Math.PI&&(t+=2*Math.PI);let r=Math.max(-Math.PI/2+.01,Math.min(Math.PI/2-.01,e.pitch));return{yaw:t,pitch:r}}getEasingFunction(e){switch(e){case"linear":return Dr.Linear.None;case"easeIn":return Dr.Quadratic.In;case"easeOut":return Dr.Quadratic.Out;case"easeInOut":return Dr.Quadratic.InOut;case"smoothstep":return Dr.Cubic.InOut;case"bounce":return Dr.Bounce.Out;default:return Dr.Quadratic.InOut}}handleScriptComplete(){if(!this.currentScript)return;let e=this.currentScript;e.loop?(this.currentPointIndex=0,this.moveToPoint(0)):(console.log(`Cinematic script completed: ${e.name||"Unnamed"}`),e.onComplete?.(),this.stopScript())}get running(){return this.isRunning}get progress(){if(!this.isRunning||this.totalDuration===0)return 0;let e=performance.now()-this.startTime;return Math.min(e/this.totalDuration,1)}get currentScriptName(){return this.currentScript?.name}static createCircularFlyby(e,t,n,r){let s=[];for(let o=0;o<=8;o++){let l=o/8*Math.PI*2,c=e.x+Math.cos(l)*t,u=e.z+Math.sin(l)*t,d=e.y+n;s.push({x:c,y:d,z:u,yaw:l+Math.PI/2,pitch:-.2,duration:r/8,easing:"smoothstep",lookAt:{x:e.x,y:e.y,z:e.z}})}return{name:"Circular Flyby",points:s,loop:!1}}static createSpiralDescent(e,t,n,r){let s=[],a=n*8,o=20;for(let l=0;l<=a;l++){let c=l/a,u=c*n*Math.PI*2,d=Ot.lerp(e.x,t.x,c)+Math.cos(u)*o*(1-c),f=Ot.lerp(e.z,t.z,c)+Math.sin(u)*o*(1-c),v=Ot.lerp(e.y,t.y,c);s.push({x:d,y:v,z:f,yaw:u+Math.PI/2,pitch:-.3*c,duration:r/a,easing:"easeInOut"})}return{name:"Spiral Descent",points:s,loop:!1}}static createBuildingTour(e){return{name:"Building Tour",points:e.map((n,r)=>({x:n.pos.x,y:n.pos.y,z:n.pos.z,yaw:0,pitch:0,duration:n.duration||3e3,easing:"smoothstep",lookAt:n.lookAt?{x:n.lookAt.x,y:n.lookAt.y,z:n.lookAt.z}:void 0})),loop:!1}}};h();p();m();Lt();var EP=.75,Xb=class{constructor(e,t,n){this.scene=e;this.defaultSkybox=t;this.initialImage=n;this.debugGui=new $l("skybox_renderer",this,["temperature","worldTime","inWater","waterBreathing","fogOrangeness","brightnessAtPosition","distanceFactor"],{brightnessAtPosition:{min:0,max:1,step:.01},temperature:{min:0,max:1,step:.01},worldTime:{min:0,max:24e3,step:1},fogOrangeness:{min:-1,max:1,step:.01},distanceFactor:{min:0,max:5,step:.01}}),n||this.createGradientSky()}texture=null;mesh=null;skyMesh=null;voidMesh=null;worldTime=0;partialTicks=0;viewDistance=4;temperature=EP;inWater=!1;waterBreathing=!1;fogBrightness=0;prevFogBrightness=0;fogOrangeness=0;distanceFactor=2.7;brightnessAtPosition=1;debugGui;async init(){this.initialImage&&await this.setSkyboxImage(this.initialImage)}async setSkyboxImage(e){this.texture&&this.texture.dispose();let t=new _o;if(this.texture=await new Promise(n=>{t.load(e,r=>{r.mapping=V0,r.colorSpace=sr,r.minFilter=ct,r.magFilter=ct,r.needsUpdate=!0,n(r)})}),this.mesh)this.mesh.material.map=this.texture,this.mesh.material.needsUpdate=!0;else{let n=new ws(500,60,40);n.scale(-1,1,1);let r=new _t({map:this.texture,side:fi});this.mesh=new Ke(n,r),this.scene.add(this.mesh)}}update(e,t){t!==this.viewDistance&&(this.viewDistance=t,this.updateSkyColors()),this.mesh?this.mesh.position.set(0,0,0):this.skyMesh&&(this.skyMesh.position.set(0,0,0),this.voidMesh?.position.set(0,0,0),this.updateSkyColors())}updateTime(e,t=0){this.debugGui.visible||(this.worldTime=e,this.partialTicks=t,this.updateSkyColors())}updateViewDistance(e){this.viewDistance=e,this.updateSkyColors()}updateTemperature(e){this.debugGui.visible||(this.temperature=e,this.updateSkyColors())}updateWaterState(e,t){this.debugGui.visible||(this.inWater=e,this.waterBreathing=t,this.updateSkyColors())}updateDefaultSkybox(e){this.debugGui.visible||(this.defaultSkybox=e,this.updateSkyColors())}createGradientSky(){{let n=new qn(768,768);n.rotateX(-Math.PI/2),n.translate(0,16,0);let r=new _t({color:16777215,side:Cn,depthTest:!1});this.skyMesh=new Ke(n,r),this.scene.add(this.skyMesh)}{let n=new qn(768,768);n.rotateX(-Math.PI/2),n.translate(0,-16,0);let r=new _t({color:16777215,side:Cn,depthTest:!1});this.voidMesh=new Ke(n,r),this.scene.add(this.voidMesh)}this.updateSkyColors()}getFogColor(e=0){let t=this.getCelestialAngle(e),n=Math.cos(t*Math.PI*2)*2+.5;n=Math.max(0,Math.min(1,n));let r=.7529412,s=.84705883,a=1;return r*=n*.94+.06,s*=n*.94+.06,a*=n*.91+.09,new $(r,s,a)}getSkyColor(e=0,t=0,n=0){let r=this.getCelestialAngle(n),s=Math.cos(r*3.141593*2)*2+.5;s<0&&(s=0),s>1&&(s=1);let a=this.getTemperature(e,t),o=this.getSkyColorByTemp(a),l=(o>>16&255)/255,c=(o>>8&255)/255,u=(o&255)/255;return new $(l*s,c*s,u*s)}calculateCelestialAngle(e,t){let r=(e%24e3+t)/24e3-.25;return r<0&&r++,r>1&&r--,r=1-(Math.cos(r*Math.PI)+1)/2,r+=(r-r)/3,r}getCelestialAngle(e){return this.calculateCelestialAngle(this.worldTime,e)}getTemperature(e,t){return this.temperature}getSkyColorByTemp(e){e/=3,e<-1&&(e=-1),e>1&&(e=1);let t=.6222222-e*.05,r=this.fogOrangeness>0?t+(.12-t)*this.fogOrangeness*.8:t+this.fogOrangeness*.1,s=.5+e*.1+Math.abs(this.fogOrangeness)*.3;return this.hsbToRgb(r,s,1)}hsbToRgb(e,t,n){let r=0,s=0,a=0;if(t===0)r=s=a=Math.floor(n*255+.5);else{let o=(e-Math.floor(e))*6,l=o-Math.floor(o),c=n*(1-t),u=n*(1-t*l),d=n*(1-t*(1-l));switch(Math.floor(o)){case 0:r=Math.floor(n*255+.5),s=Math.floor(d*255+.5),a=Math.floor(c*255+.5);break;case 1:r=Math.floor(u*255+.5),s=Math.floor(n*255+.5),a=Math.floor(c*255+.5);break;case 2:r=Math.floor(c*255+.5),s=Math.floor(n*255+.5),a=Math.floor(d*255+.5);break;case 3:r=Math.floor(c*255+.5),s=Math.floor(u*255+.5),a=Math.floor(n*255+.5);break;case 4:r=Math.floor(d*255+.5),s=Math.floor(c*255+.5),a=Math.floor(n*255+.5);break;case 5:r=Math.floor(n*255+.5),s=Math.floor(c*255+.5),a=Math.floor(u*255+.5);break}}return 4278190080|r<<16|s<<8|Math.trunc(a)}updateSkyColors(){if(!this.skyMesh||!this.voidMesh)return;if(!this.defaultSkybox){this.skyMesh.visible=!1,this.voidMesh.visible=!1,this.mesh&&(this.mesh.visible=!1);return}this.skyMesh.visible=!0,this.voidMesh.visible=!0,this.mesh&&(this.mesh.visible=!0),this.prevFogBrightness=this.fogBrightness;let e=this.viewDistance/32,t=this.brightnessAtPosition*(1-e)+e;if(this.fogBrightness+=(t-this.fogBrightness)*.1,this.inWater){let g=this.waterBreathing?100:5;this.scene.fog=new P0(new We(0,0,1),.0025,g),this.scene.background=new We(0,0,1),this.skyMesh.material.color.set(new We(0,0,1)),this.voidMesh.material.color.set(new We(0,0,.6));return}let n=this.viewDistance*16,r=1-(.25+.75*this.viewDistance/32)**.25,s=this.getCelestialAngle(this.partialTicks),a=this.getSkyColor(0,0,this.partialTicks),o=this.getFogColor(this.partialTicks),l=Math.cos(s*Math.PI*2)*2+.5,c=Math.max(0,Math.min(1,l)),u=this.prevFogBrightness+(this.fogBrightness-this.prevFogBrightness)*this.partialTicks,d=(o.x+(a.x-o.x)*r)*c*u,f=(o.y+(a.y-o.y)*r)*c*u,v=(o.z+(a.z-o.z)*r)*c*u;this.scene.background=new We(d,f,v),this.scene.fog=new P0(new We(d,f,v),.0025,n*this.distanceFactor),this.skyMesh.material.color.set(new We(a.x,a.y,a.z)),this.voidMesh.material.color.set(new We(a.x*.2+.04,a.y*.2+.04,a.z*.6+.1))}dispose(){this.texture&&this.texture.dispose(),this.mesh&&(this.mesh.geometry.dispose(),this.mesh.material.dispose(),this.scene.remove(this.mesh)),this.skyMesh&&(this.skyMesh.geometry.dispose(),this.skyMesh.material.dispose(),this.scene.remove(this.skyMesh)),this.voidMesh&&(this.voidMesh.geometry.dispose(),this.voidMesh.material.dispose(),this.scene.remove(this.voidMesh))}};h();p();m();Lt();var TYe=`
|
|
29384
29384
|
precision highp float;
|
|
29385
29385
|
attribute vec3 position;
|
|
@@ -29576,7 +29576,7 @@ void main() {
|
|
|
29576
29576
|
|
|
29577
29577
|
#include <tonemapping_fragment>
|
|
29578
29578
|
#include <${wJe>=154?"colorspace_fragment":"encodings_fragment"}>
|
|
29579
|
-
}`})}},YP=class{constructor(e){this.worldRenderer=e}points;timer=new qs;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=()=>{if(!this.points)return;this.points.position.set(0,0,0);let e=this.points.material;this.timer.update(performance.now()),e.uniforms.time.value=this.timer.getElapsed()*.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,a=new dt,o=b=>new $().setFromSpherical(new Kf(b,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)),l=[],c=[],u=Array.from({length:n},()=>(.5+.5*Math.random())*r),d=new We,f=e+t,v=t/n;for(let b=0;b<n;b++)f-=v*Math.random(),l.push(...o(f).toArray()),d.setHSL(b/n,s,.9),c.push(d.r,d.g,d.b);a.setAttribute("position",new Je(l,3)),a.setAttribute("color",new Je(c,3)),a.setAttribute("size",new Je(u,1));let g=new XP;g.blending=es,g.depthTest=!0,g.depthWrite=!1,g.transparent=!0,this.points=new yr(a,g),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)}},t8e={id:"starfield",controller:YP,enabledDefault:!0,cannotBeDisabled:!0};var n8e={starfield:t8e,futuristicReveal:e8e,rain:J4e,cameraBobbing:j4e,blockBreakParticles:W4e};h();p();m();h();p();m();var JP=()=>({longRenderTime:!1,constantLongRenderTime:!1,tooManyEntities:!1,tooManyTextures:!1,unknownReason:!1});h();p();m();h();p();m();var gg=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,a=this.renderTimeHistory.filter(f=>f>=30).length,o=s>=8&&a/s>=.65,l=e.loadedTextureCount>=100,c=t&&e.entitiesMs>=8&&n<=20,d=t&&!(r||o||c||l);this.factors.longRenderTime=r,this.factors.constantLongRenderTime=o,this.factors.tooManyEntities=c,this.factors.tooManyTextures=l,this.factors.unknownReason=d}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}};h();p();m();var TJe=[{key:"longRenderTime",code:"LR"},{key:"constantLongRenderTime",code:"CLR"},{key:"tooManyEntities",code:"ENT"},{key:"tooManyTextures",code:"TEX"},{key:"unknownReason",code:"UNK"}];function ZP(i){let e=TJe.filter(({key:t})=>i[t]).map(({code:t})=>t);return e.length>0?e.join("+"):""}var sa=class sa extends By{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 gg(this.reactiveState.world.instabilityFactors),this.renderer=t;let s=sa.getRendererInfo(t)??"...";r.rendererState.renderer=s,this.chunkMeshManager=new vg(this,this.scene,this.material,this.worldSizeParams.worldHeight,this.viewDistance),this.onRenderDistanceChanged=a=>{this.chunkMeshManager.updateViewDistance(a)},typeof window<"u"&&(window.setBlockLightmap=a=>{this.chunkMeshManager.setBlockLightmapParams(a)}),this.syncSkyLevelFromTime(this.timeOfTheDay),this.cursorBlock=new Ub(this),this.holdingBlock=ag(this),this.holdingBlockLeft=ag(this,!0);for(let a of Object.values(n8e))this.registerModule(a);this.skyboxRenderer=new Xb(this.realScene,!1,null),this.skyboxRenderer.init(),this.addDebugOverlay(),this.resetScene(),this.init(),this.soundSystem=new zb(this),this.cameraShake=new Hb(this,this.onRender),this.media=new qb(this),this.fireworksLegacy=new jb(this),this.waypoints=new Wb(this),this.cinimaticScript=new $b(this,(a,o,l)=>this.setCinimaticCamera(a,o,l),a=>this.setCinimaticFov(a),()=>({position:new At(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 Yb(this.realScene,this.sceneOrigin),this.renderUpdateEmitter.on("chunkFinished",a=>{this.finishChunk(a)}),this.worldSwitchActions(),this.initializeModules()}outputFormat="threeJs";isShaderCubeBlocksEnabled(){return this.worldRendererConfig.shaderCubeBlocks===!0&&!!this.renderer?.capabilities?.isWebGL2}isSmartCullEnabled(){return this.worldRendererConfig.smartCull!==!1&&this.reactiveDebugParams.smartCull!==!1&&this.playerStateReactive.gameMode!=="spectator"}isSectionOcclusionVisible(t){return this.isSmartCullEnabled()?this.chunkMeshManager.isSectionOcclusionVisible(t):!0}entitySectionKey(t,n,r){let s=this.getSectionHeight(),a=Math.floor(t/16)*16,o=Math.floor(n/s)*s,l=Math.floor(r/16)*16;return`${a},${o},${l}`}chunkMeshManager;get sectionObjects(){return this.chunkMeshManager.sectionObjects}cameraSectionPos=new At(0,0,0);holdingBlock;holdingBlockLeft;scene=new Cr;get realScene(){return this.scene}ambientLight=new Sa(13421772,sa.LEGACY_TO_PHYSICAL_LIGHT);directionalLight=new Es(16777215,.5*sa.LEGACY_TO_PHYSICAL_LIGHT);entities=new Nb(this,globalThis.mcData);performanceMonitor;cameraGroupVr;material=new _t({vertexColors:!0,transparent:!0,alphaTest:.1});itemsTexture;cursorBlock;onRender=[];lastRenderTime=0;lastSciFiTickMs=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 Jb(this.scene);cameraWorldPos={x:0,y:0,z:0};_cameraPositionAccessWarned=!1;_tmpCameraPos=new $;currentPosTween;currentRotTween;_tpDirection=new $;_tpPitchQuat=new zt;_tpYawQuat=new zt;_tpFinalQuat=new zt;_tpScenePos=new $;_tpAxisX=new $(1,0,0);_tpAxisY=new $(0,1,0);_tpChunkWorldPos=new $;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 a=this.onRender.indexOf(r.controller.render);a>-1&&this.onRender.splice(a,1)}return s}setRain(t){this.worldRendererConfig.isRaining=t,this.toggleModule("rain",t)}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,u)=>Math.abs(l)>r||Math.abs(c)>r||Math.abs(u)>r,a=()=>{!n._cameraPositionAccessWarned&&typeof process<"u"},o=new Proxy(t,{set(l,c,u){return(c==="x"||c==="y"||c==="z")&&typeof u=="number"&&Math.abs(u)>r&&a(),l[c]=u,!0},get(l,c,u){let d=l[c];return c==="set"?function(f,v,g){return s(f,v,g)&&a(),l.set(f,v,g)}:c==="setX"||c==="setY"||c==="setZ"?function(f){return Math.abs(f)>r&&a(),l[c](f)}:c==="copy"?function(f){return s(f.x,f.y,f.z)&&a(),l.copy(f)}:typeof d=="function"?d.bind(l):d}});Object.defineProperty(this.camera,"position",{value:o,configurable:!0,enumerable:!0})}worldSwitchActions(){this.onWorldSwitched.push(()=>{this.getModule("futuristicReveal")?.onWorldSwitched?.(),this.protocolCustomBlocks.clear(),this.sectionsOffsetsAnimations={},this.waypoints.clear(),this.cinimaticScript.stopScript(),this.fireworks.clear(),this.syncSkyLevelFromTime(this.timeOfTheDay)})}downloadWorldGeometry(){LP(this,new $(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 We(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 ze);this.camera=new fn(75,t.x/t.y,.1,1e3),this._wrapCameraPositionWithWarning(),this.cameraContainer=new Ut,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*sa.LEGACY_TO_PHYSICAL_LIGHT)}),this.onReactivePlayerStateUpdated("directionalLight",t=>{t&&(this.directionalLight.intensity=t*sa.LEGACY_TO_PHYSICAL_LIGHT)}),this.onReactivePlayerStateUpdated("lookingAtBlock",t=>{this.cursorBlock.setHighlightCursorBlock(t?new At(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 At(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",r=>{this.updateShowChunksBorder(r)}),this.onReactiveConfigUpdated("defaultSkybox",r=>{this.skyboxRenderer.updateDefaultSkybox(r)}),this.onReactiveConfigUpdated("shaderCubeDebugMode",()=>{this.chunkMeshManager.syncCubeShaderUniforms(),this.chunkMeshManager.syncLegacyShaderUniforms()});let t=()=>{let r=this.worldRendererConfig;this.chunkMeshManager.setShadingTheme(r.shadingTheme,r.cardinalLight)};this.onReactiveConfigUpdated("shadingTheme",t),this.onReactiveConfigUpdated("cardinalLight",t),this.onReactiveConfigUpdated("futuristicReveal",()=>{this.updateModulesFromConfig()});let n=this.displayOptions.inWorldRenderingConfig.handRenderer;this.onReactiveConfigUpdated("handRenderer",r=>{if(r===n)return;n=r;let s=this.holdingBlock.ready,a=this.holdingBlockLeft.ready;this.holdingBlock.dispose(),this.holdingBlockLeft.dispose(),this.holdingBlock=ag(this),this.holdingBlockLeft=ag(this,!0),s&&(this.holdingBlock.ready=!0,this.holdingBlock.updateItem()),a&&(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 a=r.controller.autoEnableCheck();a&&!r.enabled?this.toggleModule(n,!0):!a&&r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1)}else{let a=r.manifest.enabledDefault??!1;a&&!r.enabled?this.toggleModule(n,!0):!a&&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=cc(t.blocksAtlasImage);s.needsUpdate=!0,s.flipY=!1,this.material.map=s,this.chunkMeshManager.syncCubeShaderUniforms(),this.chunkMeshManager.syncLegacyShaderUniforms();let a=cc(t.itemsAtlasImage);a.needsUpdate=!0,a.flipY=!1,this.itemsTexture=a,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 We(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),this.syncSkyLevelFromTime(t)}syncSkyLevelFromTime(t){let n=Ml(t)/15;this.chunkMeshManager.setSkyLevel(n)}onDayCycleSkyLightChanged(t){}biomeUpdated(t){t?.temperature!==void 0&&this.skyboxRenderer.updateTemperature(t.temperature)}biomeReset(){this.skyboxRenderer.updateTemperature(EP)}getItemRenderData(t,n){return O_e(t,n,this.resourcesManager,this.playerStateReactive)}async demoModel(){let t=cursorBlockRel(0,1,0).position,n=await Lv();Pve(n,t);let r=new Ma(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 Ma(n,16776960);n.add(r),this.realScene.add(n)}debugOverlayAdded=!1;addDebugOverlay(){if(this.debugOverlayAdded)return;this.debugOverlayAdded=!0;let t=l4("debug-overlay",80,0,void 0,{className:o4});setInterval(()=>{if(t.setVisibility(this.displayAdvancedStats),this.displayAdvancedStats){let n=u=>new Intl.NumberFormat("en-US",{}).format(u),r=u=>new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(u),s="";s+=`TE: ${n(this.renderer.info.memory.textures)} `;let a=this.chunkMeshManager.getGlobalBufferStats();if(a.shaderFaces){let u=a.shaderFaces;s+=`CUBE: ${r(u.used)}/${r(u.capacity)}f `}if(a.legacyOpaque){let u=a.legacyOpaque;s+=`LEG-O: ${r(u.used)}/${r(u.capacity)}q `}if(a.legacyBlend){let u=a.legacyBlend;s+=`LEG-B: ${r(u.used)}/${r(u.capacity)}q `}let o=this.chunkMeshManager.getDrawnStats();s+=`DRAWN: ${r(o.cubeFaces)}f ${r(o.legacyOpaqueQuads)}q ${r(o.legacyBlendQuads)}q `,s+=`MEM: ${this.chunkMeshManager.getEstimatedMemoryUsage().total} `;let l=this.cameraCollisionBlockCache.getAllocatedBytes();l>0&&(s+=`CAM: ${r(l)}b `);let c=ZP(this.reactiveState.world.instabilityFactors);c&&(s+=`PF: ${c} `),t.updateText(s),this.backendInfoReport=s}},200)}updatePosDataChunk(t){let n=this.sectionObjects[t];if(!n)return;let[r,s,a]=t.split(",").map(u=>Math.floor(+u/16)),l=500-(Math.abs(r-this.cameraSectionPos.x)+Math.abs(s-this.cameraSectionPos.y)+Math.abs(a-this.cameraSectionPos.z)),c=n.mesh??n.shaderMesh??n.children.find(u=>u.name==="mesh"||u.name==="shaderMesh");c&&(c.renderOrder=l)}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),this.getModule("futuristicReveal")?.onChunkFinished?.()}applyPendingSectionUpdates(){if(this.pendingSectionUpdates.size===0)return;let t=performance.now(),n=this.getSectionHeight(),r=[];for(let s of this.pendingSectionUpdates.keys()){let a=this.pendingSectionBufferStartTimes.get(s)??t;if(t-a<sa.MAX_SECTION_UPDATE_BUFFER_MS){let[l,c,u]=s.split(",").map(Number),d=[`${l-16},${c},${u}`,`${l+16},${c},${u}`,`${l},${c-n},${u}`,`${l},${c+n},${u}`,`${l},${c},${u-16}`,`${l},${c},${u+16}`],f=!1;for(let v of d)if(this.sectionsWaiting.has(v)&&!this.pendingSectionUpdates.has(v)&&this.sectionObjects[v]){f=!0;break}if(f)continue}r.push(s)}if(r.length!==0)for(let s of r){let a=this.pendingSectionUpdates.get(s);this.pendingSectionUpdates.delete(s),this.pendingSectionBufferStartTimes.delete(s);let o=a.key.split(","),l=`${o[0]},${o[2]}`;if(!this.loadedChunks[l]||!this.active){this.chunkMeshManager.releaseSection(a.key);continue}if(!this.chunkMeshManager.sectionHasRenderableContent(a.geometry)){this.chunkMeshManager.releaseSection(a.key);continue}let c=this.chunkMeshManager.updateSection(a.key,a.geometry);this.updatePosDataChunk(a.key),c&&this.getModule("futuristicReveal")?.onSectionMeshed?.(a.key,a.geometry,c)}}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}let s=this.chunkMeshManager.updateSection(t.key,t.geometry);this.updatePosDataChunk(t.key),s&&this.getModule("futuristicReveal")?.onSectionMeshed?.(t.key,t.geometry,s)}}getCameraPosition(t){return(t??this._tmpCameraPos).set(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z)}getSectionCameraPosition(){let t=this.getCameraPosition();return new At(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 $(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z);let s=this.playerStateReactive.perspective==="third_person_back",a=4,o=this._tpDirection.set(0,0,-1),l=this._tpPitchQuat.setFromAxisAngle(this._tpAxisX,r),c=this._tpYawQuat.setFromAxisAngle(this._tpAxisY,n),u=this._tpFinalQuat.multiplyQuaternions(c,l);o.applyQuaternion(u),s&&o.multiplyScalar(-1),this.DEBUG_RAYCAST&&this.debugRaycast(t,o,a);let d=.25,f=.05,v=.4,g=this.cameraCollisionBlockCache,b=z4e(t.x,t.y,t.z,o.x,o.y,o.z,a,d,f,(_,x,w)=>g.isSolidBlock(_,x,w)),y=a;return b!==void 0&&(y=Math.min(y,b.distance)),y<v&&(y=v),new At(t.x+o.x*y,t.y+o.y*y,t.z+o.z*y)}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 $(this.sceneOrigin.toSceneX(t.x),this.sceneOrigin.toSceneY(t.y),this.sceneOrigin.toSceneZ(t.z));this.debugRaycastHelper=new F0(n.clone().normalize(),s,r,16711680,r*.1,r*.05),this.realScene.add(this.debugRaycastHelper);let a=new ws(.2,8,8),o=new _t({color:65280});this.debugHitPoint=new Ke(a,o),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 a=s-this.lastFovAnimTime,o=Math.min(a/sa.FOV_TRANSITION_MS,1),l=c=>1-(1-c)**3;this.animatedFov+=(r-this.animatedFov)*l(o),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 $r(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(),a=0,o=Math.PI/2;s.yaw<o&&n>Math.PI+o?a=-Math.PI*2:n<o&&s.yaw>Math.PI+o&&(a=Math.PI*2),this.currentRotTween?.stop(),this.currentRotTween=new $r(s).to({pitch:r,yaw:n+a},100).onUpdate(l=>this.cameraShake.setBaseRotation(l.pitch,l.yaw-a)).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 a=new $(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),o=this.getThirdPersonCamera(a,n,r),l=a.distanceTo(new $(o.x,o.y,o.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:a,chunksRenderDistanceEnabled:o}=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[u,d]of Object.entries(this.sectionObjects)){if(d._waitingForChunkDisplay)continue;let[f,v,g]=u.split(",").map(Number),b=s&&t!==void 0?v<=c+t:a&&n!==void 0?v>=c-n:o&&r!==void 0?Math.abs(v-c)<=r:!0;d.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 A=this.renderer.getSize(new ze);this.camera.aspect=A.width/A.height,this.camera.updateProjectionMatrix()}let a=0,o=this.cameraGroupVr instanceof bt?this.cameraGroupVr.children.find(A=>A instanceof fn):this.camera;this.applyPendingSectionUpdates();let l=performance.now(),c=l-this.lastSciFiTickMs;this.lastSciFiTickMs=l,this.getModule("futuristicReveal")?.tick?.(c,l);let u=this.cameraWorldPos.x,d=this.cameraWorldPos.y,f=this.cameraWorldPos.z;this.chunkMeshManager.maybeRebase({x:u,y:d,z:f});let v=this.chunkMeshManager.getRenderOrigin(),g=this.chunkMeshManager.globalBlockBuffer;g&&(g.setCameraOrigin(v,u,d,f),g.setDebugOverlay(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay),g.compactStep(),g.hasPendingUploads()&&g.uploadDirtyRange(),g.suppressThreeDraw());let b=this.chunkMeshManager.globalLegacyBuffer;b&&(b.setDebugOverlay(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay),b.compactStep(),b.hasPendingUploads()&&b.uploadDirtyRange(),b.suppressThreeDraw());let y=this.chunkMeshManager.globalLegacyBlendBuffer,_=!1;y&&(y.setDebugOverlay(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay),y.compactStep(),y.hasPendingUploads()&&(y.uploadDirtyRange(),_=!0),y.suppressThreeDraw()),this.chunkMeshManager.markCullDirtyIfBufferStateChanged(),this.chunkMeshManager.setLegacyCameraOrigin(u,d,f),this.chunkMeshManager.updateCullDirtyFromCamera(o,u,d,f);let x=this.isSmartCullEnabled();if(this.chunkMeshManager.notifySmartCullChanged(x),this.chunkMeshManager.cullDirty&&(this.chunkMeshManager.updateSectionCullAndSort(o,this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z,x),this.chunkMeshManager.clearCullDirty()),this.chunkMeshManager.updateCaveCullingDebug(this.reactiveDebugParams.caveCullingDebug,x),!this.reactiveDebugParams.disableEntities){let A=performance.now();this.entities.render(),a=performance.now()-A}this.chunkMeshManager.sortVisibleBlendSections(u,d,f),!_&&y?.hasPendingIndexUploads()&&y.uploadDirtyIndexRange(),this.renderer.render(this.scene,o),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 A of this.fountains)this.sectionObjects[A.sectionId]&&!this.sectionObjects[A.sectionId].foutain&&(A.createParticles(this.sectionObjects[A.sectionId]),this.sectionObjects[A.sectionId].foutain=!0),A.render();this.waypoints.render(),this.fireworks.update();for(let A of this.onRender)A(r);let S=performance.now()-n;this.worldRendererConfig.autoLowerRenderDistance&&this.chunkMeshManager.recordRenderTime(S),this.renderTimeAvgCount++,this.renderTimeAvg=(this.renderTimeAvg*(this.renderTimeAvgCount-1)+S)/this.renderTimeAvgCount,this.renderTimeMax=Math.max(this.renderTimeMax,S),this.performanceMonitor.onFrame({totalMs:S,entitiesMs:a,loadedTextureCount:this.renderer.info.memory.textures,fps:this.lastFps})}renderHead(t,n,r,s){let a;if(s.SkullOwner?a=s.SkullOwner.Properties?.textures?.[0]?.Value:a=s.profile?.properties?.find(o=>o.name==="textures")?.value,!!a)try{let l=JSON.parse(Buffer.from(a,"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 u=Xc(this,l,Yc.head),d=new bt;return r&&u.position.set(0,.3125,.3125),u.position.y-=23/16,d.add(u),this.sceneOrigin.track(d),d.position.set(t.x+.5,t.y+.045,t.z+.5),d.rotation.set(0,-Ot.degToRad(n*(r?90:45/2)),0),d.scale.set(.8,.8,.8),d}catch(o){console.error("Error decoding player texture:",o)}}lightUpdate(t,n){for(let r=this.worldSizeParams.minY;r<this.worldSizeParams.worldHeight;r+=16)this.setSectionDirty(new At(t,r,n))}rerenderAllChunks(){for(let t of Object.keys(this.sectionObjects)){let[n,r,s]=t.split(",").map(Number);this.setSectionDirty(new At(n,r,s))}}updateShowChunksBorder(t){this.chunkMeshManager.updateAllBoxHelpers(t)}resetWorld(){super.resetWorld(),this.pendingSectionUpdates.clear(),this.pendingSectionBufferStartTimes.clear(),this.chunkMeshManager.dispose(),this.chunkMeshManager=new vg(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,a]=WE(t);return Object.fromEntries(Object.entries(this.sectionObjects).map(([o,l])=>{let[c,u,d]=o.split(",").map(Number),[f,v,g]=WE({x:c,y:u,z:d});return[n?`${f-r},${v-s},${g-a}`:`${f-r},${g-a}`,l]}))}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.clearPendingSectionUpdatesForChunk(t,n);let r=this.getSectionHeight(),s=this.worldMinYRender;for(let a=s;a<this.worldSizeParams.worldHeight;a+=r){let o=`${t},${a},${n}`;this.chunkMeshManager.sectionObjects[o]&&this.chunkMeshManager.releaseSection(o)}this.chunkMeshManager.onChunkRemovedFromGate(`${t},${n}`)}updateViewerPosition(t){super.updateViewerPosition(t),this.chunkMeshManager.pendingNearReveal.size>0&&this.chunkMeshManager.tryRevealPending()}onViewerChunkPositionChanged(){this.chunkMeshManager.tryRevealPending()}setSectionDirty(...t){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,a,o,l=this.sceneOrigin.getWorldPosition(t);l?(s=l.x,a=l.y,o=l.z):(s=this.sceneOrigin.toWorldX(t.position.x),a=this.sceneOrigin.toWorldY(t.position.y),o=this.sceneOrigin.toWorldZ(t.position.z));let c=Math.floor(s/16)*16,u=Math.floor(o/16)*16,d=Math.floor(a/r)*r,f=`${c},${u}`,v=`${c},${d},${u}`;return!!this.finishedChunks[f]||!!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 a=this.sectionObjects[n];a&&(a.position.set(r.currentOffsetX,r.currentOffsetY,r.currentOffsetZ),a.updateMatrix())}}reloadWorld(){this.entities.reloadEntities()}};Hn(sa,"LEGACY_TO_PHYSICAL_LIGHT",Math.PI),Hn(sa,"FOV_TRANSITION_MS",200),Hn(sa,"MAX_SECTION_UPDATE_BUFFER_MS",500);var Jd=sa;h();p();m();h();p();m();var _g="1.21.4";h();p();m();function Kd(i,e){i.aspect=e.width/e.height,i.updateProjectionMatrix()}h();p();m();h();p();m();var u0={mode:"v2",minecraftTextures:!0,v2Scene:"light",v2Camera:"dive",v2BlockGroup:"stainedGlass",v2CameraSpeedPercent:80,v2BlockSpeedPercent:40},QP=i=>i/100,M9={camera:QP(u0.v2CameraSpeedPercent),block:QP(u0.v2BlockSpeedPercent)};function eL(i,e=!1){return i?.mode?i.mode:e?"worldBlocks":u0.mode}h();p();m();Lt();h();p();m();var tL={};function nL(...i){let e=i.filter(n=>n.length>0).join("/"),t=typeof globalThis.location<"u"&&globalThis.location.href?globalThis.location.href:typeof tL<"u"&&tL.url?tL.url:`/${e}`;try{return new URL(e,t).href}catch{return`/${e}`}}var rL=new Date,s8e=rL.getMonth()===11&&rL.getDate()>=24&&rL.getDate()<=26,IJe=["panorama_3.webp","panorama_1.webp","panorama_4.webp","panorama_5.webp","panorama_0.webp","panorama_2.webp"],RJe=200,yg=class{constructor(e){this.documentRenderer=e;this.scene=new Cr,this.scene.background=new We(3294568);let t=new Sa(13421772);this.scene.add(t);let n=new Es(16777215,.5);n.position.set(1,1,.5).normalize(),n.castShadow=!0,this.scene.add(n),this.camera=new fn(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&&Kd(this.camera,this.documentRenderer.canvas)}dispose(){this.scene.clear(),this.panoramaGroup=null,this.startTimes.clear()}buildCubemap(){let e=new Mn(1e3,1e3,1e3),t=[];for(let s of IJe)(async()=>{let o=nL("background",s8e?"christmas":"",s),l=await Gu(o),c=cc(l);c.matrixAutoUpdate=!1,c.matrix.set(-1,0,1,0,1,0,0,0,1),c.wrapS=$n,c.wrapT=$n,c.minFilter=Xt,c.magFilter=Xt;let u=new _t({map:c,transparent:!0,side:Cn,depthWrite:!1,opacity:0});this.startTimes.set(u,Date.now()),t.push(u)})().catch(o=>{console.warn("[ClassicMenuBackground] Failed to load panorama face:",s,o)});let n=new Ke(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 a=this.startTimes.get(s);if(a){let o=Date.now()-a;s.opacity=Math.min(1,o/RJe)}}};let r=new Ut;if(r.add(n),!s8e)for(let s=0;s<20;s++){let a=new o0("1.16.4","squid").mesh;a.position.set(Math.random()*30-15,Math.random()*20-10,Math.random()*10-17),a.rotation.set(0,Math.PI+Math.random(),-Math.PI/4,"ZYX");let o=Math.random()*.01;a.children[0].onBeforeRender=()=>{a.rotation.y+=o,a.rotation.z=Math.cos(n.rotation.y*3)*Math.PI/4-Math.PI/2},r.add(a)}this.scene.add(r),this.panoramaGroup=r}async debugImageInFrontOfCamera(){let e=await Gu(nL("background","panorama_0.webp")),t=cc(e),n=new Ke(new qn(1e3,1e3),new _t({map:t}));n.position.set(0,0,-500),this.scene.add(n)}};h();p();m();Lt();h();p();m();var G5=["galaxy","nether","end","cyber","light"],W5=["cruise","barrel","dive","orbit","snake"],A9={galaxy:"Galaxy",nether:"Nether",end:"The End",cyber:"Cyber",light:"Light Space"},k9={cruise:"Cruise",barrel:"Barrel",dive:"Dive",orbit:"Orbit",snake:"Snake"},j5=["mixed","stainedGlass","wool","construction","glow","world"],T9={mixed:"Mixed",stainedGlass:"Stained glass",wool:"Wool",construction:"Construction",glow:"Glow",world:"World (grass & ores)"};var a8e=.1,c8e={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"]},o8e={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 We(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 We(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 We(i*.4,0,i),ambient:393232,dir:10040319,pt1:11158783,pt2:4456618,name:"THE END"},cyber:{bg:792610,fog:792610,fogD:.008,blocks:[65535,4521932,11206468,6741503,8978278,65450],emit:[666163,668450,665656],nebula:[1192e3,1587240,1323588],galFn:i=>new We(i*.15,i*.85,i*.95),ambient:1716288,dir:6750156,pt1:4521966,pt2:10092356,name:"CYBER",starColor:13431039,starOpacity:.75,galaxyOpacity:.62,nebulaOpacity:.36,edgeLineColor:4521949,blockOpacity:[.38,.54]},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 We;return i<.4?e.lerpColors(new We(16054527),new We(14215423),i/.4):i<.75?e.lerpColors(new We(14215423),new We(11061488),(i-.4)/.35):e.lerpColors(new We(11061488),new We(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]}},CJe={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}},PJe={cruise:1,barrel:1.6,dive:2.2,orbit:.7,snake:1.4},LJe=250,I9=1e4,R9=3e3,$5=i=>i[Math.floor(Math.random()*i.length)],iL=i=>"#"+i.toString(16).padStart(6,"0"),l8e=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,iL(i.top)),i.mid!=null&&s.addColorStop(.45,iL(i.mid)),s.addColorStop(1,iL(i.bottom)),t.fillStyle=s,t.fillRect(0,0,n,r);let a=new Nn(e);return a.needsUpdate=!0,a},X5=class{constructor(e,t={},n){this.documentRenderer=e;this.abortSignal=n;let r=u0;this.curScene=t.initialScene??r.v2Scene,this.curCam=t.initialCamera??r.v2Camera,this.blockGroup=t.initialBlockGroup??r.v2BlockGroup,this.cameraSpeed=t.initialCameraSpeed??M9.camera,this.blockSpeed=t.initialBlockSpeed??M9.block,this.useMinecraftTextures=t.useMinecraftTextures??r.minecraftTextures,this.resourcesManager=t.resourcesManager;let s=o8e[this.curScene];this.scene=new Cr,this.scene.fog=new C0(s.fog,s.fogD),this.applyScenePalette(s),this.camera=new fn(80,this.documentRenderer.canvas.width/this.documentRenderer.canvas.height,.1,700),this.ambient=new Sa(s.ambient,2.5),this.scene.add(this.ambient),this.dir=new Es(s.dir,4),this.dir.position.set(1,1,0),this.scene.add(this.dir),this.pt1=new yo(s.pt1,5,100),this.scene.add(this.pt1),this.pt2=new yo(s.pt2,4,80),this.pt2.position.set(30,20,-30),this.scene.add(this.pt2);for(let f=0;f<LJe;f++)this.spawnBlock(s,!0);if(!this.useMinecraftTextures){let f=s.edgeLineColor??62975;for(let v=0;v<40;v++){let g=new Ln({color:f,transparent:!0,opacity:.25});$5(this.blocks).mesh.add(new Zn(this.eGeo,g))}}this.scene.add(this.bGroup);let a=new dt,o=new Float32Array(5e3*3);for(let f=0;f<5e3*3;f++)o[f]=(Math.random()-.5)*500;a.setAttribute("position",new Mt(o,3)),this.stars=new yr(a,new Kr({color:s.starColor??16777215,size:.3,transparent:!0,opacity:s.starOpacity??.7,sizeAttenuation:!0})),this.scene.add(this.stars),this.galGeo=new dt;let l=new Float32Array(I9*3),c=new Float32Array(I9*3);for(let f=0;f<I9;f++){let v=f%3,g=Math.random(),b=v/3*Math.PI*2+g*Math.PI*5,y=g*90+Math.random()*10,_=(1-g)*18;l[f*3]=Math.cos(b)*y+(Math.random()-.5)*_,l[f*3+1]=(Math.random()-.5)*7,l[f*3+2]=Math.sin(b)*y+(Math.random()-.5)*_-180;let x=.2+g*.8,w=s.galFn(x);c[f*3]=w.r,c[f*3+1]=w.g,c[f*3+2]=w.b}this.galGeo.setAttribute("position",new Mt(l,3)),this.galGeo.setAttribute("color",new Mt(c,3)),this.galaxy=new yr(this.galGeo,new Kr({size:.9,vertexColors:!0,transparent:!0,opacity:s.galaxyOpacity??.55,sizeAttenuation:!0})),this.scene.add(this.galaxy),this.nebGeo=new dt;let u=new Float32Array(R9*3),d=new Float32Array(R9*3);for(let f=0;f<R9;f++){let v=25+Math.random()*110,g=Math.random()*Math.PI*2,b=(Math.random()-.5)*Math.PI*.5;u[f*3]=v*Math.cos(g)*Math.cos(b),u[f*3+1]=v*Math.sin(b)*.6,u[f*3+2]=v*Math.sin(g)*Math.cos(b)-80;let y=new We($5(s.nebula));d[f*3]=y.r,d[f*3+1]=y.g,d[f*3+2]=y.b}this.nebGeo.setAttribute("position",new Mt(u,3)),this.nebGeo.setAttribute("color",new Mt(d,3)),this.nebula=new yr(this.nebGeo,new Kr({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 bt;galaxy;nebula;stars;galGeo;nebGeo;bGeo=new Mn(1,1,1);eGeo=new dl(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;texturesApplied=!1;textureLoadInProgress=!1;onAssetsTexturesUpdated;async init(){this.useMinecraftTextures&&this.scheduleMinecraftTextureLoad()}scheduleMinecraftTextureLoad(){!this.useMinecraftTextures||this.disposed||this.texturesApplied||this.textureLoadInProgress||this.tryApplyMinecraftTextures()}attachAssetsListener(){let e=this.resourcesManager;!e||this.onAssetsTexturesUpdated||(this.onAssetsTexturesUpdated=()=>this.scheduleMinecraftTextureLoad(),e.on("assetsTexturesUpdated",this.onAssetsTexturesUpdated))}detachAssetsListener(){let e=this.resourcesManager;!e||!this.onAssetsTexturesUpdated||(e.off("assetsTexturesUpdated",this.onAssetsTexturesUpdated),this.onAssetsTexturesUpdated=void 0)}hasBlockAtlas(e){let t=e.currentResources;return!!(t?.blocksAtlasImage&&t.blocksAtlasJson)}async ensureAtlasReady(e){if(await this.ensureMcDataLoaded(),this.hasBlockAtlas(e))return!0;if(typeof document>"u"&&e!==this.resourcesManager)return!1;e.currentConfig={...e.currentConfig,version:_g,noInventoryGui:!0};try{await e.updateAssetsData?.({})}catch{return!1}return this.hasBlockAtlas(e)}async tryApplyMinecraftTextures(){if(!(this.disposed||!this.useMinecraftTextures||this.texturesApplied)){this.textureLoadInProgress=!0;try{let e=this.resourcesManager??new lc;if(!await this.ensureAtlasReady(e)){this.resourcesManager&&this.attachAssetsListener();return}if(this.disposed)return;this.applyMinecraftTexturesFromAtlas(e),this.texturesApplied=!0,this.detachAssetsListener()}catch(e){console.warn("[V2MenuBackground] Failed to load Minecraft textures, using solid colors:",e),this.useMinecraftTextures=!1,this.detachAssetsListener()}finally{this.textureLoadInProgress=!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=l8e(e.gradientBg);s&&(this.gradientSkyTexture.dispose(),this.gradientSkyTexture=s,this.gradientSky.material.map=s,this.gradientSky.material.needsUpdate=!0)}}else{let s=l8e(e.gradientBg);s?(this.gradientSkyTexture=s,this.gradientSky=new Ke(new qn(900,700),new _t({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 We(e.bg)}else this.scene.background=new We(e.bg),this.gradientSky&&(this.gradientSky.visible=!1);this.scene.fog instanceof C0&&(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 Nn(n),a=new Ke(new qn(280,105),new _t({map:s,transparent:!0,opacity:1,depthWrite:!1,side:Cn,blending:es}));a.position.set(8,4,-320),this.scene.add(a)}spawnBlock(e,t,n){let r=this.createBlockMaterial(e,n),s=new Ke(this.bGeo,r),a=.3+Math.random()*3;s.scale.setScalar(a),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 o={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(o),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 _t({color:$5(e.blocks),transparent:!0,opacity:n+Math.random()*(r-n),depthWrite:!1,blending:es})}removeBlockEdgeLines(){for(let e of this.blocks){let t=e.mesh.children.filter(n=>n instanceof Zn);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 a=t[s];return a?{u:a.u,v:a.v,su:a.su??n.suSv,sv:a.sv??n.suSv}:null};if(t[e])return r(e);for(let s of["_top","_side","_front","_0"]){let a=r(`${e}${s}`);if(a)return a}for(let s of Object.keys(t))if(s.startsWith(e))return r(s);return null}applyMinecraftTexturesFromAtlas(e){let t=e.currentResources;if(!t?.blocksAtlasImage||!t.blocksAtlasJson)throw new Error("Block atlas not available");let n=t.blocksAtlasJson,r=n.textures;this.atlasTexture=cc(t.blocksAtlasImage),this.atlasTexture.flipY=!1,this.atlasTexture.needsUpdate=!0;for(let s of c8e[this.blockGroup]){let a=this.resolveBlockAtlasUv(s,r,n);if(!a)continue;let o=this.atlasTexture.clone();o.flipY=!1,o.offset.set(a.u,a.v),o.repeat.set(a.su,a.sv),o.needsUpdate=!0;let l=s.includes("glass"),c=new _t({map:o,side:Cn,transparent:l,opacity:l?.85:1,alphaTest:l?.08:0,depthWrite:!0,toneMapped:!1});this.blockMaterialPool.set(s,c)}if(this.blockMaterialPool.size===0)throw new Error("No block textures resolved from atlas (check block names vs atlas keys)");this.removeBlockEdgeLines();for(let s of this.blocks){let a=$5([...this.blockMaterialPool.keys()]);s.minecraftBlockName=a,s.mesh.material=this.blockMaterialPool.get(a).clone()}}setScene(e){if(!G5.includes(e)||e===this.curScene||this.transitioning)return;this.transitioning=!0,this.curScene=e;let t=o8e[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 _t&&s.mesh.material.color.set($5(t.blocks));let n=this.nebGeo.attributes.color;for(let s=0;s<R9;s++){let a=new We($5(t.nebula));n.setXYZ(s,a.r,a.g,a.b)}n.needsUpdate=!0;let r=this.galGeo.attributes.color;for(let s=0;s<I9;s++){let a=.2+Math.random()*.8,o=t.galFn(a);r.setXYZ(s,o.r,o.g,o.b)}r.needsUpdate=!0,this.transitioning=!1},150)}setCamera(e){W5.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(j5.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(),this.texturesApplied=!1,this.scheduleMinecraftTextureLoad()}}getSceneId(){return this.curScene}getCameraId(){return this.curCam}getBlockGroupId(){return this.blockGroup}update(e,t){t&&Kd(this.camera,this.documentRenderer.canvas);let n=CJe[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 a=this.mx*a8e,o=this.my*a8e,l=n.pos(this.camT,a,o),c=n.look(this.camT,a,o);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,a);let u=PJe[this.curCam]*s;this.animTime+=e*1e3*s;for(let d of this.blocks){if(d.mesh.position.z+=d.spd*u*60*e,d.mesh.position.x+=d.dx*60*e*s,d.mesh.position.y+=d.dy*60*e*s,d.mesh.rotation.x+=d.rx*u,d.mesh.rotation.y+=d.ry*u,d.mesh.rotation.z+=d.rz,!this.useMinecraftTextures&&d.mesh.material instanceof _t){let f=d.mesh.userData.baseOpacity??.38;d.mesh.userData.baseOpacity==null&&(d.mesh.userData.baseOpacity=f);let v=.88+Math.abs(Math.sin(this.animTime*8e-4+d.mesh.position.x*.3))*.12;d.mesh.material.opacity=f*v}d.mesh.position.z>this.camera.position.z+15&&d.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.detachAssetsListener(),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()}};h();p();m();Lt();h();p();m();var g8e=Jr(v8e(),1),_8e=Jr(FI(),1);var y8e=i=>{let e=(0,g8e.default)(i),t=(0,_8e.default)(i),n=new e(i).sync,r=zJe(n);for(let s of r)if(s.startsWith("set")&&s!=="setColumn"){let a=n[s].bind(n);n[s]=(...o)=>{let l=o[0];l.x!==void 0&&!n.getColumnAt(l)&&n.setColumn(Math.floor(l.x/16),Math.floor(l.z/16),new t(void 0)),a(...o)}}return n};function zJe(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]}h();p();m();var b8e={paused:!1,showChunkBorders:!1,enableDebugOverlay:!1,debugWasmPerf:!1,debugModelVariant:void 0,futuristicReveal:!1,smartCull:!0,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,rainColor:"rgb(118, 148, 226)",rainOpacity:.5,moduleStates:{}};var dL=()=>({reactive:_l({world:{chunksLoaded:{},heightmaps:{},allChunksLoaded:!1,mesherWork:!1,instabilityFactors:JP(),intersectMedia:null},renderer:"...",preventEscapeMenu:!1}),nonReactive:{fps:0,worstRenderTime:0,avgRenderTime:0,world:{chunksLoadedCount:0,chunksTotalNumber:0,chunksFullInfo:"-"},renderer:{timeline:{live:[],frozen:[],lastSecond:[]}}}});h();p();m();h();p();m();h();p();m();Ra();var Sg=i=>[Math.floor(i.x/16),Math.floor(i.z/16)];var HJe=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)},Y5=new WeakMap,Eg=class Eg extends W0{static restoreTransferred(e,t){let n=new Eg;if(!t)return n;let r=Y5.get(t);if(r)r.activeWorldView=n;else{let s=({data:a})=>{let l=Y5.get(t)?.activeWorldView;!l||a?.class!==Eg.restorerName||a.type==="event"&&l.emit(a.eventName,...a.args)};t.addEventListener("message",s),r={activeWorldView:n,handler:s},Y5.set(t,r)}return n}static clearWorkerBridgeForTest(e){let t=Y5.get(e);t&&(e.removeEventListener("message",t.handler),Y5.delete(e))}static getWorkerBridgeListenerCountForTest(e){return Y5.has(e)?1:0}};Hn(Eg,"restorerName","WorldViewWorker");var J5=Eg,L9=class extends W0{constructor(t,n,r=new At(0,0,0)){super();this.world=t;this.viewDistance=n;this.lastPos=new At(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:J5.restorerName,type:"event",eventName:r,args:i4(s)})}}return{__restorer:J5.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]=Sg(t),a=P3(this.viewDistance).map(([o,l])=>new At((r+o)*16,0,(s+l)*16));this.lastPos.update(t),await this._loadChunks(a,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 a of Object.keys(this.waitingSpiralChunksLoad))this.waitingSpiralChunksLoad[a](!1),delete this.waitingSpiralChunksLoad[a];let s=!0;this.inLoading=!0,await HJe(t,this.addWaitTime,async a=>{!s||this.loadedChunks[`${a.x},${a.z}`]||(this.world.getColumnAt(a)||(s=await new Promise(o=>{this.waitingSpiralChunksLoad[`${a.x},${a.z}`]=o})),s&&(await this.loadChunk(a,void 0,`spiral ${r} from ${n.x},${n.z}`),this.chunkProgress()))}),r===this.spiralNumber&&(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,a]=Sg(this.lastPos),o=Math.abs(s-Math.floor(t.x/16)),l=Math.abs(a-Math.floor(t.z/16));if(o<=this.viewDistance&&l<=this.viewDistance){let c=await this.world.getColumnAt(t.y!==void 0?t:new At(t.x,0,t.z));if(c){let u=c.toJson(),d={minY:c.minY??0,worldHeight:c.worldHeight??256};this.emit("loadChunk",{x:t.x,z:t.z,chunk:u,blockEntities:c.blockEntities,worldConfig:d,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:u.length,reason:r,time:Date.now()})}else this.isPlayground&&this.emit("markAsLoaded",{x:t.x,z:t.z})}}async reloadLoadedChunks(){let t=Object.keys(this.loadedChunks);for(let n of t){let[r,s]=n.split(",").map(Number);await this.loadChunk({x:r,z:s},!1,"mesher-reconfigure")}}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,a){if(typeof s!="string")return;let[o,l,c]=s.split(",").map(Number);return t.world.getBlock(new At(o,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,a]=Sg(this.lastPos),[o,l]=Sg(t);if(s!==o||a!==l||n){this.emit("chunkPosUpdate",{pos:t});let c=[],u=n?this.viewDistance:this.viewDistance+this.keepChunksDistance;for(let f of Object.keys(this.loadedChunks)){let[v,g]=f.split(",").map(Number),b=new At(v,0,g),[y,_]=Sg(b),x=Math.abs(o-y),w=Math.abs(l-_);(x>u||w>u)&&c.push(b)}for(let f of c)this.unloadChunk(f);let d=P3(this.viewDistance).map(([f,v])=>{let g=new At((o+f)*16,0,(l+v)*16);if(!this.loadedChunks[`${g.x},${g.z}`])return g}).filter(f=>!!f);this.lastPos.update(t),this._loadChunks(d,t)}else this.emit("chunkPosUpdate",{pos:t}),this.lastPos.update(t)}};var Mg=class{constructor(e,t,n){this.documentRenderer=e;this.options=t;this.abortSignal=n;this._scene=new Cr,this._scene.background=new We(3294568),this._camera=new fn(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=Jd;async init(){let e=_g,t=new lc;if(t.currentConfig={version:e,noInventoryGui:!0},await t.updateAssetsData?.({}),this.abortSignal.aborted)return;console.time("load menu background scene");let n=y8e(e),s=Ei()(e),o=globalThis.mcData.blocksArray.filter(v=>{if(!v.name.includes("stained_glass"))return!1;let g=s.fromStateId(v.defaultState,0);if(g.shapes?.length!==1)return!1;let b=g.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,u=100;for(let v=-c;v<c;v++)for(let g=-u;g<u;g++){let b=o[Math.floor(Math.random()*o.length)];n.setBlockStateId(new At(v,g,l),b.defaultState)}this._camera.updateProjectionMatrix(),this._camera.position.set(.5,u/2+.5,.5),this._camera.rotation.set(0,0,0);let d=new At(...this._camera.position.toArray()),f=new L9(n,2,d);this.abortSignal.aborted||(this.worldRenderer=new this.WorldRendererClass(this.documentRenderer.renderer,this.options,{version:e,worldView:f,inWorldRenderingConfig:b8e,playerStateReactive:ice().reactive,rendererState:dL().reactive,nonReactiveState:dL().nonReactive,resourcesManager:t}),this.worldRenderer instanceof Jd&&(this._scene=this.worldRenderer.realScene,this._camera=this.worldRenderer.camera),f.init(d),await this.worldRenderer.waitForChunksToRender(),!this.abortSignal.aborted&&(this.setupMouseParallax(),console.timeEnd("load menu background scene")))}update(e,t){t&&Kd(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 a=.2,o=s.clientX/window.innerWidth-.5,l=-(s.clientY/window.innerHeight-.5);r?.stop(),r=new $r(e.position).to({x:t+o*a,y:n+l*a},0),r.start(),e.updateProjectionMatrix()},{signal:this.abortSignal})}};h();p();m();Lt();var Ag=class{constructor(e,t,n={},r=!1){this.documentRenderer=e;this.options=t;this.mode=eL(n,r)}active;abortController=new AbortController;mode;lastFrameTime=0;get v2(){return this.active instanceof X5?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 We&&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"v2":return new X5(this.documentRenderer,{useMinecraftTextures:e.useMinecraftTextures,initialScene:e.v2Scene,initialCamera:e.v2Camera,initialBlockGroup:e.v2BlockGroup,initialCameraSpeed:e.v2CameraSpeed,initialBlockSpeed:e.v2BlockSpeed,resourcesManager:e.resourcesManager},this.abortController.signal);case"worldBlocks":return new Mg(this.documentRenderer,this.options,this.abortController.signal);default:return new yg(this.documentRenderer)}}dispose(){this.active?.dispose(),this.active=void 0,this.abortController.abort()}};h();p();m();var Zd=u0,qJe={rendererWorldPerformance:"normal",rendererMeshersCountOverride:null,starfieldRendering:!0,defaultSkybox:!0,menuBackgroundMode:Zd.mode,menuBackgroundMinecraftTextures:Zd.minecraftTextures,menuBackgroundV2Scene:Zd.v2Scene,menuBackgroundV2Camera:Zd.v2Camera,menuBackgroundV2BlockGroup:Zd.v2BlockGroup,menuBackgroundV2CameraSpeed:Zd.v2CameraSpeedPercent,menuBackgroundV2BlockSpeed:Zd.v2BlockSpeedPercent,rendererFuturisticReveal:!1,rendererPerfDebugOverlay:!1,disableBlockEntityTextures:!1,rendererMesher:"wasm",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 GJe={menuBackgroundMode:{possibleValues:[["classic","Classic"],["v2","V2"]],requiresRestart:!0},menuBackgroundMinecraftTextures:{text:"Minecraft block textures",tooltip:"Use block atlas on V2 menu cubes (loads assets on menu)"},menuBackgroundV2Scene:{possibleValues:G5.map(i=>[i,A9[i]])},menuBackgroundV2Camera:{possibleValues:W5.map(i=>[i,k9[i]])},menuBackgroundV2BlockGroup:{possibleValues:j5.map(i=>[i,T9[i]]),text:"Block pool",tooltip:"Block set for textured menu cubes (requires Minecraft textures)"},menuBackgroundV2CameraSpeed:{text:"Camera speed",tooltip:"Orbit / fly-through camera path speed. 0 freezes the path; mouse parallax still works.",min:0,max:200,unit:"%"},menuBackgroundV2BlockSpeed:{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. Recreates mesher workers and reloads chunks.",requiresChunksReload:!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:"Browser technology for processing world geometry before render. WASM is the fastest; if you see a dead tab icon, reloads, or other errors, switch to Legacy JS.",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"]]}};qt.enabled=!1;globalThis.THREE=Gt;var x8e=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),applyTemporaryPlayerSkinOverride:i.entities.applyTemporaryPlayerSkinOverride.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:i.setRain.bind(i),spawnBlockBreakParticles(e,t,n,r,s,a){i.getModule("blockBreakParticles")?.spawnBlockBreakParticles(e,t,n,r,s,a)},spawnBlockCrackParticle(e,t,n,r,s,a,o){i.getModule("blockBreakParticles")?.spawnCrackParticle(e,t,n,r,s,a,o)},async loadGeometryExport(e){let{applyWorldGeometryExport:t}=await Promise.resolve().then(()=>(BP(),i4e));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}}}}),WJe=[],B9=(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)}},w8e=()=>{let i,e=null,t=null,n=null,r=null,s=(u,d)=>{u.hello&&console.log("Thanks for using minecraft-renderer project: one of the most performant Minecraft world renderers for the web!"),Bn?i=d2(u,WJe,globalThis):i=u,e=new r4(i,d?.canvas),globalThis.renderer=e.renderer,globalThis.documentRenderer=e,globalThis.threeJsBackend=c,B9("default",c)},a=async u=>{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 d={...i.config.menuBackground,...u};t=new Ag(e,{...i},d,!!process.env.SINGLE_FILE_BUILD_MODE),B9("menuBackgroundCreated",t),await t.start(d),B9("menuBackgroundReady",t)},o=async u=>{if(!e)throw new Error("Document renderer not initialized");t&&(t.dispose(),t=null),n&&(n.destroy(),n=null,r=null,globalThis.world=void 0,globalThis.frameTimingCollector=void 0);let f=Bn?d2(u,[lc,J5],globalThis):u;e.nonReactiveState=f.nonReactiveState,globalThis.resourcesManager=f.resourcesManager,n=new Jd(e.renderer,i,f),await n.worldReadyPromise,r=f.inWorldRenderingConfig.enableDebugOverlay?new a4(f.nonReactiveState):null,globalThis.frameTimingCollector=r;let v=e.render;e.render=function(g){v.call(this,g),r?.markFrameStart(),f.inWorldRenderingConfig.paused||n?.render(g),r?.markFrameEnd(),r?.markFrameDisplay()},e.inWorldRenderingConfig=f.inWorldRenderingConfig,globalThis.world=n,B9("worldReady",n)},l=()=>{t&&(t.dispose(),t=null),e&&e.dispose(),n&&(n.destroy(),n=null)},c={id:"threejs",displayName:`three.js ${Aa}`,startMenuBackground:a,startWorld:o,disconnect:l,setRendering(u){e.setPaused(!u),n&&(n.renderingActive=u)},getMenuBackground:()=>t??void 0,getDebugOverlay:()=>({get entitiesString(){return n?.entities.getDebugString()},get left(){return{"Geo Memory":n?.chunkMeshManager.getEstimatedMemoryUsage().total??"-"}}}),updateCamera(u,d,f){r?.markCameraUpdate(!u),n?.setFirstPersonCamera(u,d,f)},get soundSystem(){return n?.soundSystem},get backendMethods(){if(n)return x8e(n)}};return{main:{init:s,backend:c},workerProxy(){return PN({init(u,d){s(u,{canvas:d})},updateSizeExternal(u,d,f){e?.updateSizeExternal(u,d,f)},startMenuBackground:a,startWorld:o,disconnect:l,setRendering:c.setRendering,updateCamera(u,d,f){let v=u?new At(u.x,u.y,u.z):null;r?.markCameraUpdate(!v),c.updateCamera(v,d,f)},async callBackendMethod(u,...d){if(!n)throw new Error("World renderer not initialized");let v=x8e(n)[u];if(!v)throw new Error(`Backend method ${String(u)} is unavailable`);return v(...d)}})}}};globalThis.structuredClone??=i=>JSON.parse(JSON.stringify(i));var S8e=i=>{NB(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"){S8e(e.mcData),console.log("data loaded");return}Array.isArray(e)&&e.forEach(t=>{t.type==="mcData"&&S8e(t.mcData)})});var jJe=w8e();jJe.workerProxy();})();
|
|
29579
|
+
}`})}},YP=class{constructor(e){this.worldRenderer=e}points;timer=new qs;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=()=>{if(!this.points)return;this.points.position.set(0,0,0);let e=this.points.material;this.timer.update(performance.now()),e.uniforms.time.value=this.timer.getElapsed()*.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,a=new dt,o=b=>new $().setFromSpherical(new Kf(b,Math.acos(1-Math.random()*2),Math.random()*2*Math.PI)),l=[],c=[],u=Array.from({length:n},()=>(.5+.5*Math.random())*r),d=new We,f=e+t,v=t/n;for(let b=0;b<n;b++)f-=v*Math.random(),l.push(...o(f).toArray()),d.setHSL(b/n,s,.9),c.push(d.r,d.g,d.b);a.setAttribute("position",new Je(l,3)),a.setAttribute("color",new Je(c,3)),a.setAttribute("size",new Je(u,1));let g=new XP;g.blending=es,g.depthTest=!0,g.depthWrite=!1,g.transparent=!0,this.points=new yr(a,g),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)}},t8e={id:"starfield",controller:YP,enabledDefault:!0,cannotBeDisabled:!0};var n8e={starfield:t8e,futuristicReveal:e8e,rain:J4e,cameraBobbing:j4e,blockBreakParticles:W4e};h();p();m();h();p();m();var JP=()=>({longRenderTime:!1,constantLongRenderTime:!1,tooManyEntities:!1,tooManyTextures:!1,unknownReason:!1});h();p();m();h();p();m();var gg=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,a=this.renderTimeHistory.filter(f=>f>=30).length,o=s>=8&&a/s>=.65,l=e.loadedTextureCount>=100,c=t&&e.entitiesMs>=8&&n<=20,d=t&&!(r||o||c||l);this.factors.longRenderTime=r,this.factors.constantLongRenderTime=o,this.factors.tooManyEntities=c,this.factors.tooManyTextures=l,this.factors.unknownReason=d}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}};h();p();m();var TJe=[{key:"longRenderTime",code:"LR"},{key:"constantLongRenderTime",code:"CLR"},{key:"tooManyEntities",code:"ENT"},{key:"tooManyTextures",code:"TEX"},{key:"unknownReason",code:"UNK"}];function ZP(i){let e=TJe.filter(({key:t})=>i[t]).map(({code:t})=>t);return e.length>0?e.join("+"):""}var sa=class sa extends By{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 gg(this.reactiveState.world.instabilityFactors),this.renderer=t;let s=sa.getRendererInfo(t)??"...";r.rendererState.renderer=s,this.chunkMeshManager=new vg(this,this.scene,this.material,this.worldSizeParams.worldHeight,this.viewDistance),this.onRenderDistanceChanged=a=>{this.chunkMeshManager.updateViewDistance(a)},typeof window<"u"&&(window.setBlockLightmap=a=>{this.chunkMeshManager.setBlockLightmapParams(a)}),this.syncSkyLevelFromTime(this.timeOfTheDay),this.cursorBlock=new Ub(this),this.holdingBlock=ag(this),this.holdingBlockLeft=ag(this,!0);for(let a of Object.values(n8e))this.registerModule(a);this.skyboxRenderer=new Xb(this.realScene,!1,null),this.skyboxRenderer.init(),this.addDebugOverlay(),this.resetScene(),this.init(),this.soundSystem=new zb(this),this.cameraShake=new Hb(this,this.onRender),this.media=new qb(this),this.fireworksLegacy=new jb(this),this.waypoints=new Wb(this),this.cinimaticScript=new $b(this,(a,o,l)=>this.setCinimaticCamera(a,o,l),a=>this.setCinimaticFov(a),()=>({position:new At(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 Yb(this.realScene,this.sceneOrigin),this.renderUpdateEmitter.on("chunkFinished",a=>{this.finishChunk(a)}),this.worldSwitchActions(),this.initializeModules()}outputFormat="threeJs";isShaderCubeBlocksEnabled(){return this.worldRendererConfig.shaderCubeBlocks===!0&&!!this.renderer?.capabilities?.isWebGL2}isSmartCullEnabled(){return this.worldRendererConfig.smartCull!==!1&&this.reactiveDebugParams.smartCull!==!1&&this.playerStateReactive.gameMode!=="spectator"}isSectionOcclusionVisible(t){return this.isSmartCullEnabled()?this.chunkMeshManager.isSectionOcclusionVisible(t):!0}entitySectionKey(t,n,r){let s=this.getSectionHeight(),a=Math.floor(t/16)*16,o=Math.floor(n/s)*s,l=Math.floor(r/16)*16;return`${a},${o},${l}`}chunkMeshManager;get sectionObjects(){return this.chunkMeshManager.sectionObjects}cameraSectionPos=new At(0,0,0);holdingBlock;holdingBlockLeft;scene=new Cr;get realScene(){return this.scene}ambientLight=new Sa(13421772,sa.LEGACY_TO_PHYSICAL_LIGHT);directionalLight=new Es(16777215,.5*sa.LEGACY_TO_PHYSICAL_LIGHT);entities=new Nb(this,globalThis.mcData);performanceMonitor;cameraGroupVr;material=new _t({vertexColors:!0,transparent:!0,alphaTest:.1});itemsTexture;cursorBlock;onRender=[];lastRenderTime=0;lastSciFiTickMs=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 Jb(this.scene);cameraWorldPos={x:0,y:0,z:0};_cameraPositionAccessWarned=!1;_tmpCameraPos=new $;currentPosTween;currentRotTween;_tpDirection=new $;_tpPitchQuat=new zt;_tpYawQuat=new zt;_tpFinalQuat=new zt;_tpScenePos=new $;_tpAxisX=new $(1,0,0);_tpAxisY=new $(0,1,0);_tpChunkWorldPos=new $;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 a=this.onRender.indexOf(r.controller.render);a>-1&&this.onRender.splice(a,1)}return s}setRain(t){this.worldRendererConfig.isRaining=t,this.toggleModule("rain",t)}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,u)=>Math.abs(l)>r||Math.abs(c)>r||Math.abs(u)>r,a=()=>{!n._cameraPositionAccessWarned&&typeof process<"u"},o=new Proxy(t,{set(l,c,u){return(c==="x"||c==="y"||c==="z")&&typeof u=="number"&&Math.abs(u)>r&&a(),l[c]=u,!0},get(l,c,u){let d=l[c];return c==="set"?function(f,v,g){return s(f,v,g)&&a(),l.set(f,v,g)}:c==="setX"||c==="setY"||c==="setZ"?function(f){return Math.abs(f)>r&&a(),l[c](f)}:c==="copy"?function(f){return s(f.x,f.y,f.z)&&a(),l.copy(f)}:typeof d=="function"?d.bind(l):d}});Object.defineProperty(this.camera,"position",{value:o,configurable:!0,enumerable:!0})}worldSwitchActions(){this.onWorldSwitched.push(()=>{this.getModule("futuristicReveal")?.onWorldSwitched?.(),this.protocolCustomBlocks.clear(),this.sectionsOffsetsAnimations={},this.waypoints.clear(),this.cinimaticScript.stopScript(),this.fireworks.clear(),this.syncSkyLevelFromTime(this.timeOfTheDay)})}downloadWorldGeometry(){LP(this,new $(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 We(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 ze);this.camera=new fn(75,t.x/t.y,.1,1e3),this._wrapCameraPositionWithWarning(),this.cameraContainer=new Ut,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*sa.LEGACY_TO_PHYSICAL_LIGHT)}),this.onReactivePlayerStateUpdated("directionalLight",t=>{t&&(this.directionalLight.intensity=t*sa.LEGACY_TO_PHYSICAL_LIGHT)}),this.onReactivePlayerStateUpdated("lookingAtBlock",t=>{this.cursorBlock.setHighlightCursorBlock(t?new At(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 At(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",r=>{this.updateShowChunksBorder(r)}),this.onReactiveConfigUpdated("defaultSkybox",r=>{this.skyboxRenderer.updateDefaultSkybox(r)}),this.onReactiveConfigUpdated("shaderCubeDebugMode",()=>{this.chunkMeshManager.syncCubeShaderUniforms(),this.chunkMeshManager.syncLegacyShaderUniforms()});let t=()=>{let r=this.worldRendererConfig;this.chunkMeshManager.setShadingTheme(r.shadingTheme,r.cardinalLight)};this.onReactiveConfigUpdated("shadingTheme",t),this.onReactiveConfigUpdated("cardinalLight",t),this.onReactiveConfigUpdated("futuristicReveal",()=>{this.updateModulesFromConfig()}),this.onReactiveDebugUpdated("disableEntities",()=>{this.entities.syncSceneAttachment()});let n=this.displayOptions.inWorldRenderingConfig.handRenderer;this.onReactiveConfigUpdated("handRenderer",r=>{if(r===n)return;n=r;let s=this.holdingBlock.ready,a=this.holdingBlockLeft.ready;this.holdingBlock.dispose(),this.holdingBlockLeft.dispose(),this.holdingBlock=ag(this),this.holdingBlockLeft=ag(this,!0),s&&(this.holdingBlock.ready=!0,this.holdingBlock.updateItem()),a&&(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 a=r.controller.autoEnableCheck();a&&!r.enabled?this.toggleModule(n,!0):!a&&r.enabled&&!r.manifest.cannotBeDisabled&&this.toggleModule(n,!1)}else{let a=r.manifest.enabledDefault??!1;a&&!r.enabled?this.toggleModule(n,!0):!a&&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=cc(t.blocksAtlasImage);s.needsUpdate=!0,s.flipY=!1,this.material.map=s,this.chunkMeshManager.syncCubeShaderUniforms(),this.chunkMeshManager.syncLegacyShaderUniforms();let a=cc(t.itemsAtlasImage);a.needsUpdate=!0,a.flipY=!1,this.itemsTexture=a,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 We(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),this.syncSkyLevelFromTime(t)}syncSkyLevelFromTime(t){let n=Ml(t)/15;this.chunkMeshManager.setSkyLevel(n)}onDayCycleSkyLightChanged(t){}biomeUpdated(t){t?.temperature!==void 0&&this.skyboxRenderer.updateTemperature(t.temperature)}biomeReset(){this.skyboxRenderer.updateTemperature(EP)}getItemRenderData(t,n){return O_e(t,n,this.resourcesManager,this.playerStateReactive)}async demoModel(){let t=cursorBlockRel(0,1,0).position,n=await Lv();Pve(n,t);let r=new Ma(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 Ma(n,16776960);n.add(r),this.realScene.add(n)}debugOverlayAdded=!1;addDebugOverlay(){if(this.debugOverlayAdded)return;this.debugOverlayAdded=!0;let t=l4("debug-overlay",80,0,void 0,{className:o4});setInterval(()=>{if(t.setVisibility(this.displayAdvancedStats),this.displayAdvancedStats){let n=u=>new Intl.NumberFormat("en-US",{}).format(u),r=u=>new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(u),s="";s+=`TE: ${n(this.renderer.info.memory.textures)} `;let a=this.chunkMeshManager.getGlobalBufferStats();if(a.shaderFaces){let u=a.shaderFaces;s+=`CUBE: ${r(u.used)}/${r(u.capacity)}f `}if(a.legacyOpaque){let u=a.legacyOpaque;s+=`LEG-O: ${r(u.used)}/${r(u.capacity)}q `}if(a.legacyBlend){let u=a.legacyBlend;s+=`LEG-B: ${r(u.used)}/${r(u.capacity)}q `}let o=this.chunkMeshManager.getDrawnStats();s+=`DRAWN: ${r(o.cubeFaces)}f ${r(o.legacyOpaqueQuads)}q ${r(o.legacyBlendQuads)}q `,s+=`MEM: ${this.chunkMeshManager.getEstimatedMemoryUsage().total} `;let l=this.cameraCollisionBlockCache.getAllocatedBytes();l>0&&(s+=`CAM: ${r(l)}b `);let c=ZP(this.reactiveState.world.instabilityFactors);c&&(s+=`PF: ${c} `),t.updateText(s),this.backendInfoReport=s}},200)}updatePosDataChunk(t){let n=this.sectionObjects[t];if(!n)return;let[r,s,a]=t.split(",").map(u=>Math.floor(+u/16)),l=500-(Math.abs(r-this.cameraSectionPos.x)+Math.abs(s-this.cameraSectionPos.y)+Math.abs(a-this.cameraSectionPos.z)),c=n.mesh??n.shaderMesh??n.children.find(u=>u.name==="mesh"||u.name==="shaderMesh");c&&(c.renderOrder=l)}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),this.getModule("futuristicReveal")?.onChunkFinished?.()}applyPendingSectionUpdates(){if(this.pendingSectionUpdates.size===0)return;let t=performance.now(),n=this.getSectionHeight(),r=[];for(let s of this.pendingSectionUpdates.keys()){let a=this.pendingSectionBufferStartTimes.get(s)??t;if(t-a<sa.MAX_SECTION_UPDATE_BUFFER_MS){let[l,c,u]=s.split(",").map(Number),d=[`${l-16},${c},${u}`,`${l+16},${c},${u}`,`${l},${c-n},${u}`,`${l},${c+n},${u}`,`${l},${c},${u-16}`,`${l},${c},${u+16}`],f=!1;for(let v of d)if(this.sectionsWaiting.has(v)&&!this.pendingSectionUpdates.has(v)&&this.sectionObjects[v]){f=!0;break}if(f)continue}r.push(s)}if(r.length!==0)for(let s of r){let a=this.pendingSectionUpdates.get(s);this.pendingSectionUpdates.delete(s),this.pendingSectionBufferStartTimes.delete(s);let o=a.key.split(","),l=`${o[0]},${o[2]}`;if(!this.loadedChunks[l]||!this.active){this.chunkMeshManager.releaseSection(a.key);continue}if(!this.chunkMeshManager.sectionHasRenderableContent(a.geometry)){this.chunkMeshManager.releaseSection(a.key);continue}let c=this.chunkMeshManager.updateSection(a.key,a.geometry);this.updatePosDataChunk(a.key),c&&this.getModule("futuristicReveal")?.onSectionMeshed?.(a.key,a.geometry,c)}}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}let s=this.chunkMeshManager.updateSection(t.key,t.geometry);this.updatePosDataChunk(t.key),s&&this.getModule("futuristicReveal")?.onSectionMeshed?.(t.key,t.geometry,s)}}getCameraPosition(t){return(t??this._tmpCameraPos).set(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z)}getSectionCameraPosition(){let t=this.getCameraPosition();return new At(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 $(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z);let s=this.playerStateReactive.perspective==="third_person_back",a=4,o=this._tpDirection.set(0,0,-1),l=this._tpPitchQuat.setFromAxisAngle(this._tpAxisX,r),c=this._tpYawQuat.setFromAxisAngle(this._tpAxisY,n),u=this._tpFinalQuat.multiplyQuaternions(c,l);o.applyQuaternion(u),s&&o.multiplyScalar(-1),this.DEBUG_RAYCAST&&this.debugRaycast(t,o,a);let d=.25,f=.05,v=.4,g=this.cameraCollisionBlockCache,b=z4e(t.x,t.y,t.z,o.x,o.y,o.z,a,d,f,(_,x,w)=>g.isSolidBlock(_,x,w)),y=a;return b!==void 0&&(y=Math.min(y,b.distance)),y<v&&(y=v),new At(t.x+o.x*y,t.y+o.y*y,t.z+o.z*y)}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 $(this.sceneOrigin.toSceneX(t.x),this.sceneOrigin.toSceneY(t.y),this.sceneOrigin.toSceneZ(t.z));this.debugRaycastHelper=new F0(n.clone().normalize(),s,r,16711680,r*.1,r*.05),this.realScene.add(this.debugRaycastHelper);let a=new ws(.2,8,8),o=new _t({color:65280});this.debugHitPoint=new Ke(a,o),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 a=s-this.lastFovAnimTime,o=Math.min(a/sa.FOV_TRANSITION_MS,1),l=c=>1-(1-c)**3;this.animatedFov+=(r-this.animatedFov)*l(o),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 $r(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(),a=0,o=Math.PI/2;s.yaw<o&&n>Math.PI+o?a=-Math.PI*2:n<o&&s.yaw>Math.PI+o&&(a=Math.PI*2),this.currentRotTween?.stop(),this.currentRotTween=new $r(s).to({pitch:r,yaw:n+a},100).onUpdate(l=>this.cameraShake.setBaseRotation(l.pitch,l.yaw-a)).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 a=new $(this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z),o=this.getThirdPersonCamera(a,n,r),l=a.distanceTo(new $(o.x,o.y,o.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:a,chunksRenderDistanceEnabled:o}=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[u,d]of Object.entries(this.sectionObjects)){if(d._waitingForChunkDisplay)continue;let[f,v,g]=u.split(",").map(Number),b=s&&t!==void 0?v<=c+t:a&&n!==void 0?v>=c-n:o&&r!==void 0?Math.abs(v-c)<=r:!0;d.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 k=this.renderer.getSize(new ze);this.camera.aspect=k.width/k.height,this.camera.updateProjectionMatrix()}let a=0,o=this.cameraGroupVr instanceof bt?this.cameraGroupVr.children.find(k=>k instanceof fn):this.camera;this.applyPendingSectionUpdates();let l=performance.now(),c=l-this.lastSciFiTickMs;this.lastSciFiTickMs=l,this.getModule("futuristicReveal")?.tick?.(c,l);let u=this.cameraWorldPos.x,d=this.cameraWorldPos.y,f=this.cameraWorldPos.z;this.chunkMeshManager.maybeRebase({x:u,y:d,z:f});let v=this.chunkMeshManager.getRenderOrigin(),g=this.chunkMeshManager.globalBlockBuffer;g&&(g.setCameraOrigin(v,u,d,f),g.setDebugOverlay(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay),g.compactStep(),g.hasPendingUploads()&&g.uploadDirtyRange(),g.suppressThreeDraw());let b=this.chunkMeshManager.globalLegacyBuffer;b&&(b.setDebugOverlay(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay),b.compactStep(),b.hasPendingUploads()&&b.uploadDirtyRange(),b.suppressThreeDraw());let y=this.chunkMeshManager.globalLegacyBlendBuffer,_=!1;y&&(y.setDebugOverlay(this.displayOptions.inWorldRenderingConfig.enableDebugOverlay),y.compactStep(),y.hasPendingUploads()&&(y.uploadDirtyRange(),_=!0),y.suppressThreeDraw()),this.chunkMeshManager.markCullDirtyIfBufferStateChanged(),this.chunkMeshManager.setLegacyCameraOrigin(u,d,f),this.chunkMeshManager.updateCullDirtyFromCamera(o,u,d,f);let x=this.isSmartCullEnabled();this.chunkMeshManager.notifySmartCullChanged(x),this.chunkMeshManager.cullDirty&&(this.chunkMeshManager.updateSectionCullAndSort(o,this.cameraWorldPos.x,this.cameraWorldPos.y,this.cameraWorldPos.z,x),this.chunkMeshManager.clearCullDirty()),this.chunkMeshManager.updateCaveCullingDebug(this.reactiveDebugParams.caveCullingDebug,x);let w=performance.now();this.entities.render(),a=performance.now()-w,this.chunkMeshManager.sortVisibleBlendSections(u,d,f),!_&&y?.hasPendingIndexUploads()&&y.uploadDirtyIndexRange(),this.renderer.render(this.scene,o),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 k of this.fountains)this.sectionObjects[k.sectionId]&&!this.sectionObjects[k.sectionId].foutain&&(k.createParticles(this.sectionObjects[k.sectionId]),this.sectionObjects[k.sectionId].foutain=!0),k.render();this.waypoints.render(),this.fireworks.update();for(let k of this.onRender)k(r);let A=performance.now()-n;this.worldRendererConfig.autoLowerRenderDistance&&this.chunkMeshManager.recordRenderTime(A),this.renderTimeAvgCount++,this.renderTimeAvg=(this.renderTimeAvg*(this.renderTimeAvgCount-1)+A)/this.renderTimeAvgCount,this.renderTimeMax=Math.max(this.renderTimeMax,A),this.performanceMonitor.onFrame({totalMs:A,entitiesMs:a,loadedTextureCount:this.renderer.info.memory.textures,fps:this.lastFps})}renderHead(t,n,r,s){let a;if(s.SkullOwner?a=s.SkullOwner.Properties?.textures?.[0]?.Value:a=s.profile?.properties?.find(o=>o.name==="textures")?.value,!!a)try{let l=JSON.parse(Buffer.from(a,"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 u=Xc(this,l,Yc.head),d=new bt;return r&&u.position.set(0,.3125,.3125),u.position.y-=23/16,d.add(u),this.sceneOrigin.track(d),d.position.set(t.x+.5,t.y+.045,t.z+.5),d.rotation.set(0,-Ot.degToRad(n*(r?90:45/2)),0),d.scale.set(.8,.8,.8),d}catch(o){console.error("Error decoding player texture:",o)}}lightUpdate(t,n){for(let r=this.worldSizeParams.minY;r<this.worldSizeParams.worldHeight;r+=16)this.setSectionDirty(new At(t,r,n))}rerenderAllChunks(){for(let t of Object.keys(this.sectionObjects)){let[n,r,s]=t.split(",").map(Number);this.setSectionDirty(new At(n,r,s))}}updateShowChunksBorder(t){this.chunkMeshManager.updateAllBoxHelpers(t)}resetWorld(){super.resetWorld(),this.pendingSectionUpdates.clear(),this.pendingSectionBufferStartTimes.clear(),this.chunkMeshManager.dispose(),this.chunkMeshManager=new vg(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,a]=WE(t);return Object.fromEntries(Object.entries(this.sectionObjects).map(([o,l])=>{let[c,u,d]=o.split(",").map(Number),[f,v,g]=WE({x:c,y:u,z:d});return[n?`${f-r},${v-s},${g-a}`:`${f-r},${g-a}`,l]}))}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.clearPendingSectionUpdatesForChunk(t,n);let r=this.getSectionHeight(),s=this.worldMinYRender;for(let a=s;a<this.worldSizeParams.worldHeight;a+=r){let o=`${t},${a},${n}`;this.chunkMeshManager.sectionObjects[o]&&this.chunkMeshManager.releaseSection(o)}this.chunkMeshManager.onChunkRemovedFromGate(`${t},${n}`)}updateViewerPosition(t){super.updateViewerPosition(t),this.chunkMeshManager.pendingNearReveal.size>0&&this.chunkMeshManager.tryRevealPending()}onViewerChunkPositionChanged(){this.chunkMeshManager.tryRevealPending()}setSectionDirty(...t){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,a,o,l=this.sceneOrigin.getWorldPosition(t);l?(s=l.x,a=l.y,o=l.z):(s=this.sceneOrigin.toWorldX(t.position.x),a=this.sceneOrigin.toWorldY(t.position.y),o=this.sceneOrigin.toWorldZ(t.position.z));let c=Math.floor(s/16)*16,u=Math.floor(o/16)*16,d=Math.floor(a/r)*r,f=`${c},${u}`,v=`${c},${d},${u}`;return!!this.finishedChunks[f]||!!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 a=this.sectionObjects[n];a&&(a.position.set(r.currentOffsetX,r.currentOffsetY,r.currentOffsetZ),a.updateMatrix())}}reloadWorld(){this.entities.reloadEntities()}};Hn(sa,"LEGACY_TO_PHYSICAL_LIGHT",Math.PI),Hn(sa,"FOV_TRANSITION_MS",200),Hn(sa,"MAX_SECTION_UPDATE_BUFFER_MS",500);var Jd=sa;h();p();m();h();p();m();var _g="1.21.4";h();p();m();function Kd(i,e){i.aspect=e.width/e.height,i.updateProjectionMatrix()}h();p();m();h();p();m();var u0={mode:"v2",minecraftTextures:!0,v2Scene:"light",v2Camera:"dive",v2BlockGroup:"stainedGlass",v2CameraSpeedPercent:80,v2BlockSpeedPercent:40},QP=i=>i/100,M9={camera:QP(u0.v2CameraSpeedPercent),block:QP(u0.v2BlockSpeedPercent)};function eL(i,e=!1){return i?.mode?i.mode:e?"worldBlocks":u0.mode}h();p();m();Lt();h();p();m();var tL={};function nL(...i){let e=i.filter(n=>n.length>0).join("/"),t=typeof globalThis.location<"u"&&globalThis.location.href?globalThis.location.href:typeof tL<"u"&&tL.url?tL.url:`/${e}`;try{return new URL(e,t).href}catch{return`/${e}`}}var rL=new Date,s8e=rL.getMonth()===11&&rL.getDate()>=24&&rL.getDate()<=26,IJe=["panorama_3.webp","panorama_1.webp","panorama_4.webp","panorama_5.webp","panorama_0.webp","panorama_2.webp"],RJe=200,yg=class{constructor(e){this.documentRenderer=e;this.scene=new Cr,this.scene.background=new We(3294568);let t=new Sa(13421772);this.scene.add(t);let n=new Es(16777215,.5);n.position.set(1,1,.5).normalize(),n.castShadow=!0,this.scene.add(n),this.camera=new fn(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&&Kd(this.camera,this.documentRenderer.canvas)}dispose(){this.scene.clear(),this.panoramaGroup=null,this.startTimes.clear()}buildCubemap(){let e=new Mn(1e3,1e3,1e3),t=[];for(let s of IJe)(async()=>{let o=nL("background",s8e?"christmas":"",s),l=await Gu(o),c=cc(l);c.matrixAutoUpdate=!1,c.matrix.set(-1,0,1,0,1,0,0,0,1),c.wrapS=$n,c.wrapT=$n,c.minFilter=Xt,c.magFilter=Xt;let u=new _t({map:c,transparent:!0,side:Cn,depthWrite:!1,opacity:0});this.startTimes.set(u,Date.now()),t.push(u)})().catch(o=>{console.warn("[ClassicMenuBackground] Failed to load panorama face:",s,o)});let n=new Ke(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 a=this.startTimes.get(s);if(a){let o=Date.now()-a;s.opacity=Math.min(1,o/RJe)}}};let r=new Ut;if(r.add(n),!s8e)for(let s=0;s<20;s++){let a=new o0("1.16.4","squid").mesh;a.position.set(Math.random()*30-15,Math.random()*20-10,Math.random()*10-17),a.rotation.set(0,Math.PI+Math.random(),-Math.PI/4,"ZYX");let o=Math.random()*.01;a.children[0].onBeforeRender=()=>{a.rotation.y+=o,a.rotation.z=Math.cos(n.rotation.y*3)*Math.PI/4-Math.PI/2},r.add(a)}this.scene.add(r),this.panoramaGroup=r}async debugImageInFrontOfCamera(){let e=await Gu(nL("background","panorama_0.webp")),t=cc(e),n=new Ke(new qn(1e3,1e3),new _t({map:t}));n.position.set(0,0,-500),this.scene.add(n)}};h();p();m();Lt();h();p();m();var G5=["galaxy","nether","end","cyber","light"],W5=["cruise","barrel","dive","orbit","snake"],A9={galaxy:"Galaxy",nether:"Nether",end:"The End",cyber:"Cyber",light:"Light Space"},k9={cruise:"Cruise",barrel:"Barrel",dive:"Dive",orbit:"Orbit",snake:"Snake"},j5=["mixed","stainedGlass","wool","construction","glow","world"],T9={mixed:"Mixed",stainedGlass:"Stained glass",wool:"Wool",construction:"Construction",glow:"Glow",world:"World (grass & ores)"};var a8e=.1,c8e={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"]},o8e={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 We(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 We(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 We(i*.4,0,i),ambient:393232,dir:10040319,pt1:11158783,pt2:4456618,name:"THE END"},cyber:{bg:792610,fog:792610,fogD:.008,blocks:[65535,4521932,11206468,6741503,8978278,65450],emit:[666163,668450,665656],nebula:[1192e3,1587240,1323588],galFn:i=>new We(i*.15,i*.85,i*.95),ambient:1716288,dir:6750156,pt1:4521966,pt2:10092356,name:"CYBER",starColor:13431039,starOpacity:.75,galaxyOpacity:.62,nebulaOpacity:.36,edgeLineColor:4521949,blockOpacity:[.38,.54]},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 We;return i<.4?e.lerpColors(new We(16054527),new We(14215423),i/.4):i<.75?e.lerpColors(new We(14215423),new We(11061488),(i-.4)/.35):e.lerpColors(new We(11061488),new We(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]}},CJe={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}},PJe={cruise:1,barrel:1.6,dive:2.2,orbit:.7,snake:1.4},LJe=250,I9=1e4,R9=3e3,$5=i=>i[Math.floor(Math.random()*i.length)],iL=i=>"#"+i.toString(16).padStart(6,"0"),l8e=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,iL(i.top)),i.mid!=null&&s.addColorStop(.45,iL(i.mid)),s.addColorStop(1,iL(i.bottom)),t.fillStyle=s,t.fillRect(0,0,n,r);let a=new Nn(e);return a.needsUpdate=!0,a},X5=class{constructor(e,t={},n){this.documentRenderer=e;this.abortSignal=n;let r=u0;this.curScene=t.initialScene??r.v2Scene,this.curCam=t.initialCamera??r.v2Camera,this.blockGroup=t.initialBlockGroup??r.v2BlockGroup,this.cameraSpeed=t.initialCameraSpeed??M9.camera,this.blockSpeed=t.initialBlockSpeed??M9.block,this.useMinecraftTextures=t.useMinecraftTextures??r.minecraftTextures,this.resourcesManager=t.resourcesManager;let s=o8e[this.curScene];this.scene=new Cr,this.scene.fog=new C0(s.fog,s.fogD),this.applyScenePalette(s),this.camera=new fn(80,this.documentRenderer.canvas.width/this.documentRenderer.canvas.height,.1,700),this.ambient=new Sa(s.ambient,2.5),this.scene.add(this.ambient),this.dir=new Es(s.dir,4),this.dir.position.set(1,1,0),this.scene.add(this.dir),this.pt1=new yo(s.pt1,5,100),this.scene.add(this.pt1),this.pt2=new yo(s.pt2,4,80),this.pt2.position.set(30,20,-30),this.scene.add(this.pt2);for(let f=0;f<LJe;f++)this.spawnBlock(s,!0);if(!this.useMinecraftTextures){let f=s.edgeLineColor??62975;for(let v=0;v<40;v++){let g=new Ln({color:f,transparent:!0,opacity:.25});$5(this.blocks).mesh.add(new Zn(this.eGeo,g))}}this.scene.add(this.bGroup);let a=new dt,o=new Float32Array(5e3*3);for(let f=0;f<5e3*3;f++)o[f]=(Math.random()-.5)*500;a.setAttribute("position",new Mt(o,3)),this.stars=new yr(a,new Kr({color:s.starColor??16777215,size:.3,transparent:!0,opacity:s.starOpacity??.7,sizeAttenuation:!0})),this.scene.add(this.stars),this.galGeo=new dt;let l=new Float32Array(I9*3),c=new Float32Array(I9*3);for(let f=0;f<I9;f++){let v=f%3,g=Math.random(),b=v/3*Math.PI*2+g*Math.PI*5,y=g*90+Math.random()*10,_=(1-g)*18;l[f*3]=Math.cos(b)*y+(Math.random()-.5)*_,l[f*3+1]=(Math.random()-.5)*7,l[f*3+2]=Math.sin(b)*y+(Math.random()-.5)*_-180;let x=.2+g*.8,w=s.galFn(x);c[f*3]=w.r,c[f*3+1]=w.g,c[f*3+2]=w.b}this.galGeo.setAttribute("position",new Mt(l,3)),this.galGeo.setAttribute("color",new Mt(c,3)),this.galaxy=new yr(this.galGeo,new Kr({size:.9,vertexColors:!0,transparent:!0,opacity:s.galaxyOpacity??.55,sizeAttenuation:!0})),this.scene.add(this.galaxy),this.nebGeo=new dt;let u=new Float32Array(R9*3),d=new Float32Array(R9*3);for(let f=0;f<R9;f++){let v=25+Math.random()*110,g=Math.random()*Math.PI*2,b=(Math.random()-.5)*Math.PI*.5;u[f*3]=v*Math.cos(g)*Math.cos(b),u[f*3+1]=v*Math.sin(b)*.6,u[f*3+2]=v*Math.sin(g)*Math.cos(b)-80;let y=new We($5(s.nebula));d[f*3]=y.r,d[f*3+1]=y.g,d[f*3+2]=y.b}this.nebGeo.setAttribute("position",new Mt(u,3)),this.nebGeo.setAttribute("color",new Mt(d,3)),this.nebula=new yr(this.nebGeo,new Kr({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 bt;galaxy;nebula;stars;galGeo;nebGeo;bGeo=new Mn(1,1,1);eGeo=new dl(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;texturesApplied=!1;textureLoadInProgress=!1;onAssetsTexturesUpdated;async init(){this.useMinecraftTextures&&this.scheduleMinecraftTextureLoad()}scheduleMinecraftTextureLoad(){!this.useMinecraftTextures||this.disposed||this.texturesApplied||this.textureLoadInProgress||this.tryApplyMinecraftTextures()}attachAssetsListener(){let e=this.resourcesManager;!e||this.onAssetsTexturesUpdated||(this.onAssetsTexturesUpdated=()=>this.scheduleMinecraftTextureLoad(),e.on("assetsTexturesUpdated",this.onAssetsTexturesUpdated))}detachAssetsListener(){let e=this.resourcesManager;!e||!this.onAssetsTexturesUpdated||(e.off("assetsTexturesUpdated",this.onAssetsTexturesUpdated),this.onAssetsTexturesUpdated=void 0)}hasBlockAtlas(e){let t=e.currentResources;return!!(t?.blocksAtlasImage&&t.blocksAtlasJson)}async ensureAtlasReady(e){if(await this.ensureMcDataLoaded(),this.hasBlockAtlas(e))return!0;if(typeof document>"u"&&e!==this.resourcesManager)return!1;e.currentConfig={...e.currentConfig,version:_g,noInventoryGui:!0};try{await e.updateAssetsData?.({})}catch{return!1}return this.hasBlockAtlas(e)}async tryApplyMinecraftTextures(){if(!(this.disposed||!this.useMinecraftTextures||this.texturesApplied)){this.textureLoadInProgress=!0;try{let e=this.resourcesManager??new lc;if(!await this.ensureAtlasReady(e)){this.resourcesManager&&this.attachAssetsListener();return}if(this.disposed)return;this.applyMinecraftTexturesFromAtlas(e),this.texturesApplied=!0,this.detachAssetsListener()}catch(e){console.warn("[V2MenuBackground] Failed to load Minecraft textures, using solid colors:",e),this.useMinecraftTextures=!1,this.detachAssetsListener()}finally{this.textureLoadInProgress=!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=l8e(e.gradientBg);s&&(this.gradientSkyTexture.dispose(),this.gradientSkyTexture=s,this.gradientSky.material.map=s,this.gradientSky.material.needsUpdate=!0)}}else{let s=l8e(e.gradientBg);s?(this.gradientSkyTexture=s,this.gradientSky=new Ke(new qn(900,700),new _t({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 We(e.bg)}else this.scene.background=new We(e.bg),this.gradientSky&&(this.gradientSky.visible=!1);this.scene.fog instanceof C0&&(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 Nn(n),a=new Ke(new qn(280,105),new _t({map:s,transparent:!0,opacity:1,depthWrite:!1,side:Cn,blending:es}));a.position.set(8,4,-320),this.scene.add(a)}spawnBlock(e,t,n){let r=this.createBlockMaterial(e,n),s=new Ke(this.bGeo,r),a=.3+Math.random()*3;s.scale.setScalar(a),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 o={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(o),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 _t({color:$5(e.blocks),transparent:!0,opacity:n+Math.random()*(r-n),depthWrite:!1,blending:es})}removeBlockEdgeLines(){for(let e of this.blocks){let t=e.mesh.children.filter(n=>n instanceof Zn);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 a=t[s];return a?{u:a.u,v:a.v,su:a.su??n.suSv,sv:a.sv??n.suSv}:null};if(t[e])return r(e);for(let s of["_top","_side","_front","_0"]){let a=r(`${e}${s}`);if(a)return a}for(let s of Object.keys(t))if(s.startsWith(e))return r(s);return null}applyMinecraftTexturesFromAtlas(e){let t=e.currentResources;if(!t?.blocksAtlasImage||!t.blocksAtlasJson)throw new Error("Block atlas not available");let n=t.blocksAtlasJson,r=n.textures;this.atlasTexture=cc(t.blocksAtlasImage),this.atlasTexture.flipY=!1,this.atlasTexture.needsUpdate=!0;for(let s of c8e[this.blockGroup]){let a=this.resolveBlockAtlasUv(s,r,n);if(!a)continue;let o=this.atlasTexture.clone();o.flipY=!1,o.offset.set(a.u,a.v),o.repeat.set(a.su,a.sv),o.needsUpdate=!0;let l=s.includes("glass"),c=new _t({map:o,side:Cn,transparent:l,opacity:l?.85:1,alphaTest:l?.08:0,depthWrite:!0,toneMapped:!1});this.blockMaterialPool.set(s,c)}if(this.blockMaterialPool.size===0)throw new Error("No block textures resolved from atlas (check block names vs atlas keys)");this.removeBlockEdgeLines();for(let s of this.blocks){let a=$5([...this.blockMaterialPool.keys()]);s.minecraftBlockName=a,s.mesh.material=this.blockMaterialPool.get(a).clone()}}setScene(e){if(!G5.includes(e)||e===this.curScene||this.transitioning)return;this.transitioning=!0,this.curScene=e;let t=o8e[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 _t&&s.mesh.material.color.set($5(t.blocks));let n=this.nebGeo.attributes.color;for(let s=0;s<R9;s++){let a=new We($5(t.nebula));n.setXYZ(s,a.r,a.g,a.b)}n.needsUpdate=!0;let r=this.galGeo.attributes.color;for(let s=0;s<I9;s++){let a=.2+Math.random()*.8,o=t.galFn(a);r.setXYZ(s,o.r,o.g,o.b)}r.needsUpdate=!0,this.transitioning=!1},150)}setCamera(e){W5.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(j5.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(),this.texturesApplied=!1,this.scheduleMinecraftTextureLoad()}}getSceneId(){return this.curScene}getCameraId(){return this.curCam}getBlockGroupId(){return this.blockGroup}update(e,t){t&&Kd(this.camera,this.documentRenderer.canvas);let n=CJe[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 a=this.mx*a8e,o=this.my*a8e,l=n.pos(this.camT,a,o),c=n.look(this.camT,a,o);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,a);let u=PJe[this.curCam]*s;this.animTime+=e*1e3*s;for(let d of this.blocks){if(d.mesh.position.z+=d.spd*u*60*e,d.mesh.position.x+=d.dx*60*e*s,d.mesh.position.y+=d.dy*60*e*s,d.mesh.rotation.x+=d.rx*u,d.mesh.rotation.y+=d.ry*u,d.mesh.rotation.z+=d.rz,!this.useMinecraftTextures&&d.mesh.material instanceof _t){let f=d.mesh.userData.baseOpacity??.38;d.mesh.userData.baseOpacity==null&&(d.mesh.userData.baseOpacity=f);let v=.88+Math.abs(Math.sin(this.animTime*8e-4+d.mesh.position.x*.3))*.12;d.mesh.material.opacity=f*v}d.mesh.position.z>this.camera.position.z+15&&d.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.detachAssetsListener(),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()}};h();p();m();Lt();h();p();m();var g8e=Jr(v8e(),1),_8e=Jr(FI(),1);var y8e=i=>{let e=(0,g8e.default)(i),t=(0,_8e.default)(i),n=new e(i).sync,r=zJe(n);for(let s of r)if(s.startsWith("set")&&s!=="setColumn"){let a=n[s].bind(n);n[s]=(...o)=>{let l=o[0];l.x!==void 0&&!n.getColumnAt(l)&&n.setColumn(Math.floor(l.x/16),Math.floor(l.z/16),new t(void 0)),a(...o)}}return n};function zJe(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]}h();p();m();var b8e={paused:!1,showChunkBorders:!1,enableDebugOverlay:!1,debugWasmPerf:!1,debugModelVariant:void 0,futuristicReveal:!1,smartCull:!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,rainColor:"rgb(118, 148, 226)",rainOpacity:.5,moduleStates:{}};var dL=()=>({reactive:_l({world:{chunksLoaded:{},heightmaps:{},allChunksLoaded:!1,mesherWork:!1,instabilityFactors:JP(),intersectMedia:null},renderer:"...",preventEscapeMenu:!1}),nonReactive:{fps:0,worstRenderTime:0,avgRenderTime:0,world:{chunksLoadedCount:0,chunksTotalNumber:0,chunksFullInfo:"-"},renderer:{timeline:{live:[],frozen:[],lastSecond:[]}}}});h();p();m();h();p();m();h();p();m();Ra();var Sg=i=>[Math.floor(i.x/16),Math.floor(i.z/16)];var HJe=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)},Y5=new WeakMap,Eg=class Eg extends W0{static restoreTransferred(e,t){let n=new Eg;if(!t)return n;let r=Y5.get(t);if(r)r.activeWorldView=n;else{let s=({data:a})=>{let l=Y5.get(t)?.activeWorldView;!l||a?.class!==Eg.restorerName||a.type==="event"&&l.emit(a.eventName,...a.args)};t.addEventListener("message",s),r={activeWorldView:n,handler:s},Y5.set(t,r)}return n}static clearWorkerBridgeForTest(e){let t=Y5.get(e);t&&(e.removeEventListener("message",t.handler),Y5.delete(e))}static getWorkerBridgeListenerCountForTest(e){return Y5.has(e)?1:0}};Hn(Eg,"restorerName","WorldViewWorker");var J5=Eg,L9=class extends W0{constructor(t,n,r=new At(0,0,0)){super();this.world=t;this.viewDistance=n;this.lastPos=new At(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:J5.restorerName,type:"event",eventName:r,args:i4(s)})}}return{__restorer:J5.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]=Sg(t),a=P3(this.viewDistance).map(([o,l])=>new At((r+o)*16,0,(s+l)*16));this.lastPos.update(t),await this._loadChunks(a,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 a of Object.keys(this.waitingSpiralChunksLoad))this.waitingSpiralChunksLoad[a](!1),delete this.waitingSpiralChunksLoad[a];let s=!0;this.inLoading=!0,await HJe(t,this.addWaitTime,async a=>{!s||this.loadedChunks[`${a.x},${a.z}`]||(this.world.getColumnAt(a)||(s=await new Promise(o=>{this.waitingSpiralChunksLoad[`${a.x},${a.z}`]=o})),s&&(await this.loadChunk(a,void 0,`spiral ${r} from ${n.x},${n.z}`),this.chunkProgress()))}),r===this.spiralNumber&&(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,a]=Sg(this.lastPos),o=Math.abs(s-Math.floor(t.x/16)),l=Math.abs(a-Math.floor(t.z/16));if(o<=this.viewDistance&&l<=this.viewDistance){let c=await this.world.getColumnAt(t.y!==void 0?t:new At(t.x,0,t.z));if(c){let u=c.toJson(),d={minY:c.minY??0,worldHeight:c.worldHeight??256};this.emit("loadChunk",{x:t.x,z:t.z,chunk:u,blockEntities:c.blockEntities,worldConfig:d,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:u.length,reason:r,time:Date.now()})}else this.isPlayground&&this.emit("markAsLoaded",{x:t.x,z:t.z})}}async reloadLoadedChunks(){let t=Object.keys(this.loadedChunks);for(let n of t){let[r,s]=n.split(",").map(Number);await this.loadChunk({x:r,z:s},!1,"mesher-reconfigure")}}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,a){if(typeof s!="string")return;let[o,l,c]=s.split(",").map(Number);return t.world.getBlock(new At(o,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,a]=Sg(this.lastPos),[o,l]=Sg(t);if(s!==o||a!==l||n){this.emit("chunkPosUpdate",{pos:t});let c=[],u=n?this.viewDistance:this.viewDistance+this.keepChunksDistance;for(let f of Object.keys(this.loadedChunks)){let[v,g]=f.split(",").map(Number),b=new At(v,0,g),[y,_]=Sg(b),x=Math.abs(o-y),w=Math.abs(l-_);(x>u||w>u)&&c.push(b)}for(let f of c)this.unloadChunk(f);let d=P3(this.viewDistance).map(([f,v])=>{let g=new At((o+f)*16,0,(l+v)*16);if(!this.loadedChunks[`${g.x},${g.z}`])return g}).filter(f=>!!f);this.lastPos.update(t),this._loadChunks(d,t)}else this.emit("chunkPosUpdate",{pos:t}),this.lastPos.update(t)}};var Mg=class{constructor(e,t,n){this.documentRenderer=e;this.options=t;this.abortSignal=n;this._scene=new Cr,this._scene.background=new We(3294568),this._camera=new fn(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=Jd;async init(){let e=_g,t=new lc;if(t.currentConfig={version:e,noInventoryGui:!0},await t.updateAssetsData?.({}),this.abortSignal.aborted)return;console.time("load menu background scene");let n=y8e(e),s=Ei()(e),o=globalThis.mcData.blocksArray.filter(v=>{if(!v.name.includes("stained_glass"))return!1;let g=s.fromStateId(v.defaultState,0);if(g.shapes?.length!==1)return!1;let b=g.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,u=100;for(let v=-c;v<c;v++)for(let g=-u;g<u;g++){let b=o[Math.floor(Math.random()*o.length)];n.setBlockStateId(new At(v,g,l),b.defaultState)}this._camera.updateProjectionMatrix(),this._camera.position.set(.5,u/2+.5,.5),this._camera.rotation.set(0,0,0);let d=new At(...this._camera.position.toArray()),f=new L9(n,2,d);this.abortSignal.aborted||(this.worldRenderer=new this.WorldRendererClass(this.documentRenderer.renderer,this.options,{version:e,worldView:f,inWorldRenderingConfig:b8e,playerStateReactive:ice().reactive,rendererState:dL().reactive,nonReactiveState:dL().nonReactive,resourcesManager:t}),this.worldRenderer instanceof Jd&&(this._scene=this.worldRenderer.realScene,this._camera=this.worldRenderer.camera),f.init(d),await this.worldRenderer.waitForChunksToRender(),!this.abortSignal.aborted&&(this.setupMouseParallax(),console.timeEnd("load menu background scene")))}update(e,t){t&&Kd(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 a=.2,o=s.clientX/window.innerWidth-.5,l=-(s.clientY/window.innerHeight-.5);r?.stop(),r=new $r(e.position).to({x:t+o*a,y:n+l*a},0),r.start(),e.updateProjectionMatrix()},{signal:this.abortSignal})}};h();p();m();Lt();var Ag=class{constructor(e,t,n={},r=!1){this.documentRenderer=e;this.options=t;this.mode=eL(n,r)}active;abortController=new AbortController;mode;lastFrameTime=0;get v2(){return this.active instanceof X5?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 We&&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"v2":return new X5(this.documentRenderer,{useMinecraftTextures:e.useMinecraftTextures,initialScene:e.v2Scene,initialCamera:e.v2Camera,initialBlockGroup:e.v2BlockGroup,initialCameraSpeed:e.v2CameraSpeed,initialBlockSpeed:e.v2BlockSpeed,resourcesManager:e.resourcesManager},this.abortController.signal);case"worldBlocks":return new Mg(this.documentRenderer,this.options,this.abortController.signal);default:return new yg(this.documentRenderer)}}dispose(){this.active?.dispose(),this.active=void 0,this.abortController.abort()}};h();p();m();var Zd=u0,qJe={rendererWorldPerformance:"normal",rendererMeshersCountOverride:null,starfieldRendering:!0,defaultSkybox:!0,menuBackgroundMode:Zd.mode,menuBackgroundMinecraftTextures:Zd.minecraftTextures,menuBackgroundV2Scene:Zd.v2Scene,menuBackgroundV2Camera:Zd.v2Camera,menuBackgroundV2BlockGroup:Zd.v2BlockGroup,menuBackgroundV2CameraSpeed:Zd.v2CameraSpeedPercent,menuBackgroundV2BlockSpeed:Zd.v2BlockSpeedPercent,rendererFuturisticReveal:!1,rendererPerfDebugOverlay:!1,disableBlockEntityTextures:!1,rendererMesher:"wasm",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 GJe={menuBackgroundMode:{possibleValues:[["classic","Classic"],["v2","V2"]],requiresRestart:!0},menuBackgroundMinecraftTextures:{text:"Minecraft block textures",tooltip:"Use block atlas on V2 menu cubes (loads assets on menu)"},menuBackgroundV2Scene:{possibleValues:G5.map(i=>[i,A9[i]])},menuBackgroundV2Camera:{possibleValues:W5.map(i=>[i,k9[i]])},menuBackgroundV2BlockGroup:{possibleValues:j5.map(i=>[i,T9[i]]),text:"Block pool",tooltip:"Block set for textured menu cubes (requires Minecraft textures)"},menuBackgroundV2CameraSpeed:{text:"Camera speed",tooltip:"Orbit / fly-through camera path speed. 0 freezes the path; mouse parallax still works.",min:0,max:200,unit:"%"},menuBackgroundV2BlockSpeed:{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. Recreates mesher workers and reloads chunks.",requiresChunksReload:!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:"Browser technology for processing world geometry before render. WASM is the fastest; if you see a dead tab icon, reloads, or other errors, switch to Legacy JS.",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"]]}};qt.enabled=!1;globalThis.THREE=Gt;var x8e=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),applyTemporaryPlayerSkinOverride:i.entities.applyTemporaryPlayerSkinOverride.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:i.setRain.bind(i),spawnBlockBreakParticles(e,t,n,r,s,a){i.getModule("blockBreakParticles")?.spawnBlockBreakParticles(e,t,n,r,s,a)},spawnBlockCrackParticle(e,t,n,r,s,a,o){i.getModule("blockBreakParticles")?.spawnCrackParticle(e,t,n,r,s,a,o)},async loadGeometryExport(e){let{applyWorldGeometryExport:t}=await Promise.resolve().then(()=>(BP(),i4e));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}}}}),WJe=[],B9=(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)}},w8e=()=>{let i,e=null,t=null,n=null,r=null,s=(u,d)=>{u.hello&&console.log("Thanks for using minecraft-renderer project: one of the most performant Minecraft world renderers for the web!"),Bn?i=d2(u,WJe,globalThis):i=u,e=new r4(i,d?.canvas),globalThis.renderer=e.renderer,globalThis.documentRenderer=e,globalThis.threeJsBackend=c,B9("default",c)},a=async u=>{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 d={...i.config.menuBackground,...u};t=new Ag(e,{...i},d,!!process.env.SINGLE_FILE_BUILD_MODE),B9("menuBackgroundCreated",t),await t.start(d),B9("menuBackgroundReady",t)},o=async u=>{if(!e)throw new Error("Document renderer not initialized");t&&(t.dispose(),t=null),n&&(n.destroy(),n=null,r=null,globalThis.world=void 0,globalThis.frameTimingCollector=void 0);let f=Bn?d2(u,[lc,J5],globalThis):u;e.nonReactiveState=f.nonReactiveState,globalThis.resourcesManager=f.resourcesManager,n=new Jd(e.renderer,i,f),await n.worldReadyPromise,r=f.inWorldRenderingConfig.enableDebugOverlay?new a4(f.nonReactiveState):null,globalThis.frameTimingCollector=r;let v=e.render;e.render=function(g){v.call(this,g),r?.markFrameStart(),f.inWorldRenderingConfig.paused||n?.render(g),r?.markFrameEnd(),r?.markFrameDisplay()},e.inWorldRenderingConfig=f.inWorldRenderingConfig,globalThis.world=n,B9("worldReady",n)},l=()=>{t&&(t.dispose(),t=null),e&&e.dispose(),n&&(n.destroy(),n=null)},c={id:"threejs",displayName:`three.js ${Aa}`,startMenuBackground:a,startWorld:o,disconnect:l,setRendering(u){e.setPaused(!u),n&&(n.renderingActive=u)},getMenuBackground:()=>t??void 0,getDebugOverlay:()=>({get entitiesString(){return n?.entities.getDebugString()},get left(){return{"Geo Memory":n?.chunkMeshManager.getEstimatedMemoryUsage().total??"-"}}}),updateCamera(u,d,f){r?.markCameraUpdate(!u),n?.setFirstPersonCamera(u,d,f)},get soundSystem(){return n?.soundSystem},get backendMethods(){if(n)return x8e(n)}};return{main:{init:s,backend:c},workerProxy(){return PN({init(u,d){s(u,{canvas:d})},updateSizeExternal(u,d,f){e?.updateSizeExternal(u,d,f)},startMenuBackground:a,startWorld:o,disconnect:l,setRendering:c.setRendering,updateCamera(u,d,f){let v=u?new At(u.x,u.y,u.z):null;r?.markCameraUpdate(!v),c.updateCamera(v,d,f)},async callBackendMethod(u,...d){if(!n)throw new Error("World renderer not initialized");let v=x8e(n)[u];if(!v)throw new Error(`Backend method ${String(u)} is unavailable`);return v(...d)}})}}};globalThis.structuredClone??=i=>JSON.parse(JSON.stringify(i));var S8e=i=>{NB(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"){S8e(e.mcData),console.log("data loaded");return}Array.isArray(e)&&e.forEach(t=>{t.type==="mcData"&&S8e(t.mcData)})});var jJe=w8e();jJe.workerProxy();})();
|
|
29580
29580
|
/*! Bundled license information:
|
|
29581
29581
|
|
|
29582
29582
|
@jspm/core/nodelibs/browser/chunk-DtuTasat.js:
|