Files
sea-of-stars-studio.github.io/js/convert/nbtToMcbe/nbt-to-mcstructure.umd.js
T
2026-05-23 02:03:44 +08:00

2 lines
43 KiB
JavaScript

(function(g,D){typeof exports=="object"&&typeof module<"u"?module.exports=D():typeof define=="function"&&define.amd?define(D):(g=typeof globalThis<"u"?globalThis:g||self,g.NBTToMcStructure=D())})(this,(function(){"use strict";var g=(n=>(n[n.END=0]="END",n[n.BYTE=1]="BYTE",n[n.SHORT=2]="SHORT",n[n.INT=3]="INT",n[n.LONG=4]="LONG",n[n.FLOAT=5]="FLOAT",n[n.DOUBLE=6]="DOUBLE",n[n.BYTE_ARRAY=7]="BYTE_ARRAY",n[n.STRING=8]="STRING",n[n.LIST=9]="LIST",n[n.COMPOUND=10]="COMPOUND",n[n.INT_ARRAY=11]="INT_ARRAY",n[n.LONG_ARRAY=12]="LONG_ARRAY",n))(g||{});function D(n,t=null){return{type:1,name:t,value:n}}function B(n,t=null){return{type:2,name:t,value:n}}function C(n,t=null){return{type:3,name:t,value:n}}function St(n,t=null){return{type:4,name:t,value:n}}function It(n,t=null){return{type:5,name:t,value:n}}function At(n,t=null){return{type:6,name:t,value:n}}function Nt(n,t=null){return{type:7,name:t,value:n}}function M(n,t=null){return{type:8,name:t,value:n}}function L(n,t,e=null){return{type:9,name:e,value:n,elementType:t}}function A(n,t=null){return{type:10,name:t,value:n}}function Dt(n,t=null){return{type:11,name:t,value:n}}function Tt(n,t=null){return{type:12,name:t,value:n}}function Rt(n){const t=[];let e=0;for(;e<n.length;){const a=n[e];if((a&128)===0)t.push(a),e++;else if((a&224)===192){const o=n[e+1];t.push((a&31)<<6|o&63),e+=2}else if((a&240)===224){const o=n[e+1],i=n[e+2];t.push((a&15)<<12|(o&63)<<6|i&63),e+=3}else if(a===237&&e+5<n.length){const o=n[e+1],i=n[e+2],c=n[e+3],r=n[e+4],u=n[e+5];if((o&240)===160&&(c&240)===173){const s=(a&15)<<16|(o&15)<<10|i&63,l=(c&15)<<16|(r&63)<<6|u&63,d=65536+((s&1023)<<10)+(l&1023);t.push(d),e+=6;continue}t.push((a&15)<<12|(o&63)<<6|i&63),e+=3}else{const o=n[e+1],i=n[e+2];t.push((a&15)<<12|(o&63)<<6|i&63),e+=3}}return String.fromCodePoint(...t)}class Mt{buffer;view;offset;littleEndian;constructor(t,e=!1){this.buffer=t,this.view=new DataView(t),this.offset=0,this.littleEndian=e}readByte(){const t=this.view.getInt8(this.offset);return this.offset+=1,t}readUByte(){const t=this.view.getUint8(this.offset);return this.offset+=1,t}readShort(){const t=this.view.getInt16(this.offset,this.littleEndian);return this.offset+=2,t}readInt(){const t=this.view.getInt32(this.offset,this.littleEndian);return this.offset+=4,t}readLong(){const t=this.view.getBigInt64(this.offset,this.littleEndian);return this.offset+=8,t}readFloat(){const t=this.view.getFloat32(this.offset,this.littleEndian);return this.offset+=4,t}readDouble(){const t=this.view.getFloat64(this.offset,this.littleEndian);return this.offset+=8,t}readString(){const t=this.readShort();if(t<0)throw new Error(`Invalid string length: ${t}`);const e=new Uint8Array(this.buffer,this.offset,t);return this.offset+=t,Rt(e)}readByteArray(){const t=this.readInt();if(t<0)throw new Error(`Invalid byte array length: ${t}`);const e=new Int8Array(this.buffer,this.offset,t);return this.offset+=t,e}readIntArray(){const t=this.readInt();if(t<0)throw new Error(`Invalid int array length: ${t}`);const e=new Int32Array(t);for(let a=0;a<t;a++)e[a]=this.readInt();return e}readLongArray(){const t=this.readInt();if(t<0)throw new Error(`Invalid long array length: ${t}`);const e=new BigInt64Array(t);for(let a=0;a<t;a++)e[a]=this.readLong();return e}readList(){const t=this.readUByte(),e=this.readInt();if(e<0)throw new Error(`Invalid list length: ${e}`);const a=[];for(let o=0;o<e;o++)a.push(this.readTag(t,!1));return L(a,t,null)}readCompound(){const t=new Map;for(;;){const e=this.readUByte();if(e===g.END)break;const a=this.readString(),o=this.readTag(e,!1);o.name=a,t.set(a,o)}return A(t,null)}readTag(t,e){const a=e?this.readString():null;switch(t){case g.END:return D(0,a);case g.BYTE:return D(this.readByte(),a);case g.SHORT:return B(this.readShort(),a);case g.INT:return C(this.readInt(),a);case g.LONG:return St(this.readLong(),a);case g.FLOAT:return It(this.readFloat(),a);case g.DOUBLE:return At(this.readDouble(),a);case g.BYTE_ARRAY:return Nt(this.readByteArray(),a);case g.STRING:return M(this.readString(),a);case g.LIST:{const o=this.readList();return o.name=a,o}case g.COMPOUND:{const o=this.readCompound();return o.name=a,o}case g.INT_ARRAY:return Dt(this.readIntArray(),a);case g.LONG_ARRAY:return Tt(this.readLongArray(),a);default:throw new Error(`Unknown tag type: ${t}`)}}parse(){const t=this.readUByte();if(t!==g.COMPOUND)throw new Error(`Expected COMPOUND tag at root, got ${g[t]}`);const e=this.readString(),a=this.readCompound();return a.name=e,{name:e,value:a}}getOffset(){return this.offset}}function Ct(n,t=!1){return new Mt(n,t).parse()}function Bt(n){const t=[];for(let e=0;e<n.length;e++){const a=n.codePointAt(e);if(a===0)t.push(192,128);else if(a<=127)t.push(a);else if(a<=2047)t.push(192|a>>6&31,128|a&63);else if(a<=65535)t.push(224|a>>12&15,128|a>>6&63,128|a&63);else{const o=a-65536,i=55296|o>>10&1023,c=56320|o&1023;t.push(237,160|i>>10&15,128|i&63),t.push(237,176|c>>10&15,128|c&63),e++}}return new Uint8Array(t)}class Ot{buffer;view;offset;littleEndian;capacity;constructor(t=1024,e=!0){this.capacity=t,this.buffer=new Uint8Array(t),this.view=new DataView(this.buffer.buffer),this.offset=0,this.littleEndian=e}ensureCapacity(t){if(this.offset+t>this.capacity){let e=this.capacity;for(;e<this.offset+t;)e*=2;const a=new Uint8Array(e);a.set(this.buffer.subarray(0,this.offset)),this.buffer=a,this.view=new DataView(this.buffer.buffer),this.capacity=e}}writeByte(t){this.ensureCapacity(1),this.view.setInt8(this.offset,t),this.offset+=1}writeUByte(t){this.ensureCapacity(1),this.view.setUint8(this.offset,t),this.offset+=1}writeShort(t){this.ensureCapacity(2),this.view.setInt16(this.offset,t,this.littleEndian),this.offset+=2}writeInt(t){this.ensureCapacity(4),this.view.setInt32(this.offset,t,this.littleEndian),this.offset+=4}writeLong(t){this.ensureCapacity(8),this.view.setBigInt64(this.offset,t,this.littleEndian),this.offset+=8}writeFloat(t){this.ensureCapacity(4),this.view.setFloat32(this.offset,t,this.littleEndian),this.offset+=4}writeDouble(t){this.ensureCapacity(8),this.view.setFloat64(this.offset,t,this.littleEndian),this.offset+=8}writeString(t){const e=Bt(t);this.writeShort(e.length),this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeByteArray(t){this.writeInt(t.length),this.ensureCapacity(t.length),this.buffer.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength),this.offset),this.offset+=t.length}writeIntArray(t){this.writeInt(t.length);for(let e=0;e<t.length;e++)this.writeInt(t[e])}writeLongArray(t){this.writeInt(t.length);for(let e=0;e<t.length;e++)this.writeLong(t[e])}writeList(t){this.writeUByte(t.elementType),this.writeInt(t.value.length);for(const e of t.value)this.writeTag(e,!1)}writeCompound(t){for(const[e,a]of t.value)this.writeUByte(a.type),this.writeString(e),this.writeTag(a,!1);this.writeUByte(g.END)}writeTag(t,e){switch(e&&t.name!==null&&(this.writeUByte(t.type),this.writeString(t.name)),t.type){case g.END:break;case g.BYTE:this.writeByte(t.value);break;case g.SHORT:this.writeShort(t.value);break;case g.INT:this.writeInt(t.value);break;case g.LONG:this.writeLong(t.value);break;case g.FLOAT:this.writeFloat(t.value);break;case g.DOUBLE:this.writeDouble(t.value);break;case g.BYTE_ARRAY:this.writeByteArray(t.value);break;case g.STRING:this.writeString(t.value);break;case g.LIST:this.writeList(t);break;case g.COMPOUND:this.writeCompound(t);break;case g.INT_ARRAY:this.writeIntArray(t.value);break;case g.LONG_ARRAY:this.writeLongArray(t.value);break;default:throw new Error(`Unknown tag type: ${t.type}`)}}write(t,e=""){this.writeUByte(g.COMPOUND),this.writeString(e),this.writeCompound(t)}getBuffer(){return this.buffer.buffer.slice(this.buffer.byteOffset,this.buffer.byteOffset+this.offset)}getOffset(){return this.offset}}function Lt(n,t="",e=!0){const a=new Ot(1024,e);return a.write(n,t),a.getBuffer()}function H(n){let t=n.length;for(;--t>=0;)n[t]=0}const Ut=3,zt=258,ve=29,$t=256+1+ve,xe=30,Vt=512,Pt=new Array(($t+2)*2);H(Pt);const Ft=new Array(xe*2);H(Ft);const Zt=new Array(Vt);H(Zt);const jt=new Array(zt-Ut+1);H(jt);const Yt=new Array(ve);H(Yt);const Gt=new Array(xe);H(Gt);var ce=(n,t,e,a)=>{let o=n&65535|0,i=n>>>16&65535|0,c=0;for(;e!==0;){c=e>2e3?2e3:e,e-=c;do o=o+t[a++]|0,i=i+o|0;while(--c);o%=65521,i%=65521}return o|i<<16|0};const Ht=()=>{let n,t=[];for(var e=0;e<256;e++){n=e;for(var a=0;a<8;a++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n}return t},Kt=new Uint32Array(Ht());var U=(n,t,e,a)=>{const o=Kt,i=a+e;n^=-1;for(let c=a;c<i;c++)n=n>>>8^o[(n^t[c])&255];return n^-1},fe={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},ye={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const Jt=(n,t)=>Object.prototype.hasOwnProperty.call(n,t);var Wt=function(n){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(const a in e)Jt(e,a)&&(n[a]=e[a])}}return n},Xt=n=>{let t=0;for(let a=0,o=n.length;a<o;a++)t+=n[a].length;const e=new Uint8Array(t);for(let a=0,o=0,i=n.length;a<i;a++){let c=n[a];e.set(c,o),o+=c.length}return e},Ee={assign:Wt,flattenChunks:Xt};let Se=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Se=!1}const W=new Uint8Array(256);for(let n=0;n<256;n++)W[n]=n>=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;W[254]=W[254]=1;var qt=n=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(n);let t,e,a,o,i,c=n.length,r=0;for(o=0;o<c;o++)e=n.charCodeAt(o),(e&64512)===55296&&o+1<c&&(a=n.charCodeAt(o+1),(a&64512)===56320&&(e=65536+(e-55296<<10)+(a-56320),o++)),r+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(r),i=0,o=0;i<r;o++)e=n.charCodeAt(o),(e&64512)===55296&&o+1<c&&(a=n.charCodeAt(o+1),(a&64512)===56320&&(e=65536+(e-55296<<10)+(a-56320),o++)),e<128?t[i++]=e:e<2048?(t[i++]=192|e>>>6,t[i++]=128|e&63):e<65536?(t[i++]=224|e>>>12,t[i++]=128|e>>>6&63,t[i++]=128|e&63):(t[i++]=240|e>>>18,t[i++]=128|e>>>12&63,t[i++]=128|e>>>6&63,t[i++]=128|e&63);return t};const Qt=(n,t)=>{if(t<65534&&n.subarray&&Se)return String.fromCharCode.apply(null,n.length===t?n:n.subarray(0,t));let e="";for(let a=0;a<t;a++)e+=String.fromCharCode(n[a]);return e};var en=(n,t)=>{const e=t||n.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(n.subarray(0,t));let a,o;const i=new Array(e*2);for(o=0,a=0;a<e;){let c=n[a++];if(c<128){i[o++]=c;continue}let r=W[c];if(r>4){i[o++]=65533,a+=r-1;continue}for(c&=r===2?31:r===3?15:7;r>1&&a<e;)c=c<<6|n[a++]&63,r--;if(r>1){i[o++]=65533;continue}c<65536?i[o++]=c:(c-=65536,i[o++]=55296|c>>10&1023,i[o++]=56320|c&1023)}return Qt(i,o)},tn=(n,t)=>{t=t||n.length,t>n.length&&(t=n.length);let e=t-1;for(;e>=0&&(n[e]&192)===128;)e--;return e<0||e===0?t:e+W[n[e]]>t?e:t},ue={string2buf:qt,buf2string:en,utf8border:tn};function nn(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var an=nn;const te=16209,sn=16191;var rn=function(t,e){let a,o,i,c,r,u,s,l,d,w,f,p,T,v,m,I,k,h,x,R,b,S,y,_;const E=t.state;a=t.next_in,y=t.input,o=a+(t.avail_in-5),i=t.next_out,_=t.output,c=i-(e-t.avail_out),r=i+(t.avail_out-257),u=E.dmax,s=E.wsize,l=E.whave,d=E.wnext,w=E.window,f=E.hold,p=E.bits,T=E.lencode,v=E.distcode,m=(1<<E.lenbits)-1,I=(1<<E.distbits)-1;e:do{p<15&&(f+=y[a++]<<p,p+=8,f+=y[a++]<<p,p+=8),k=T[f&m];t:for(;;){if(h=k>>>24,f>>>=h,p-=h,h=k>>>16&255,h===0)_[i++]=k&65535;else if(h&16){x=k&65535,h&=15,h&&(p<h&&(f+=y[a++]<<p,p+=8),x+=f&(1<<h)-1,f>>>=h,p-=h),p<15&&(f+=y[a++]<<p,p+=8,f+=y[a++]<<p,p+=8),k=v[f&I];n:for(;;){if(h=k>>>24,f>>>=h,p-=h,h=k>>>16&255,h&16){if(R=k&65535,h&=15,p<h&&(f+=y[a++]<<p,p+=8,p<h&&(f+=y[a++]<<p,p+=8)),R+=f&(1<<h)-1,R>u){t.msg="invalid distance too far back",E.mode=te;break e}if(f>>>=h,p-=h,h=i-c,R>h){if(h=R-h,h>l&&E.sane){t.msg="invalid distance too far back",E.mode=te;break e}if(b=0,S=w,d===0){if(b+=s-h,h<x){x-=h;do _[i++]=w[b++];while(--h);b=i-R,S=_}}else if(d<h){if(b+=s+d-h,h-=d,h<x){x-=h;do _[i++]=w[b++];while(--h);if(b=0,d<x){h=d,x-=h;do _[i++]=w[b++];while(--h);b=i-R,S=_}}}else if(b+=d-h,h<x){x-=h;do _[i++]=w[b++];while(--h);b=i-R,S=_}for(;x>2;)_[i++]=S[b++],_[i++]=S[b++],_[i++]=S[b++],x-=3;x&&(_[i++]=S[b++],x>1&&(_[i++]=S[b++]))}else{b=i-R;do _[i++]=_[b++],_[i++]=_[b++],_[i++]=_[b++],x-=3;while(x>2);x&&(_[i++]=_[b++],x>1&&(_[i++]=_[b++]))}}else if((h&64)===0){k=v[(k&65535)+(f&(1<<h)-1)];continue n}else{t.msg="invalid distance code",E.mode=te;break e}break}}else if((h&64)===0){k=T[(k&65535)+(f&(1<<h)-1)];continue t}else if(h&32){E.mode=sn;break e}else{t.msg="invalid literal/length code",E.mode=te;break e}break}}while(a<o&&i<r);x=p>>3,a-=x,p-=x<<3,f&=(1<<p)-1,t.next_in=a,t.next_out=i,t.avail_in=a<o?5+(o-a):5-(a-o),t.avail_out=i<r?257+(r-i):257-(i-r),E.hold=f,E.bits=p};const K=15,Ie=852,Ae=592,Ne=0,he=1,De=2,on=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ln=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),cn=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),fn=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var X=(n,t,e,a,o,i,c,r)=>{const u=r.bits;let s=0,l=0,d=0,w=0,f=0,p=0,T=0,v=0,m=0,I=0,k,h,x,R,b,S=null,y;const _=new Uint16Array(K+1),E=new Uint16Array(K+1);let V=null,ee,G,F;for(s=0;s<=K;s++)_[s]=0;for(l=0;l<a;l++)_[t[e+l]]++;for(f=u,w=K;w>=1&&_[w]===0;w--);if(f>w&&(f=w),w===0)return o[i++]=1<<24|64<<16|0,o[i++]=1<<24|64<<16|0,r.bits=1,0;for(d=1;d<w&&_[d]===0;d++);for(f<d&&(f=d),v=1,s=1;s<=K;s++)if(v<<=1,v-=_[s],v<0)return-1;if(v>0&&(n===Ne||w!==1))return-1;for(E[1]=0,s=1;s<K;s++)E[s+1]=E[s]+_[s];for(l=0;l<a;l++)t[e+l]!==0&&(c[E[t[e+l]]++]=l);if(n===Ne?(S=V=c,y=20):n===he?(S=on,V=ln,y=257):(S=cn,V=fn,y=0),I=0,l=0,s=d,b=i,p=f,T=0,x=-1,m=1<<f,R=m-1,n===he&&m>Ie||n===De&&m>Ae)return 1;for(;;){ee=s-T,c[l]+1<y?(G=0,F=c[l]):c[l]>=y?(G=V[c[l]-y],F=S[c[l]-y]):(G=96,F=0),k=1<<s-T,h=1<<p,d=h;do h-=k,o[b+(I>>T)+h]=ee<<24|G<<16|F|0;while(h!==0);for(k=1<<s-1;I&k;)k>>=1;if(k!==0?(I&=k-1,I+=k):I=0,l++,--_[s]===0){if(s===w)break;s=t[e+c[l]]}if(s>f&&(I&R)!==x){for(T===0&&(T=f),b+=d,p=s-T,v=1<<p;p+T<w&&(v-=_[p+T],!(v<=0));)p++,v<<=1;if(m+=1<<p,n===he&&m>Ie||n===De&&m>Ae)return 1;x=I&R,o[x]=f<<24|p<<16|b-i|0}}return I!==0&&(o[b+I]=s-T<<24|64<<16|0),r.bits=f,0};const un=0,Te=1,Re=2,{Z_FINISH:Me,Z_BLOCK:hn,Z_TREES:ne,Z_OK:Z,Z_STREAM_END:dn,Z_NEED_DICT:wn,Z_STREAM_ERROR:O,Z_DATA_ERROR:Ce,Z_MEM_ERROR:Be,Z_BUF_ERROR:bn,Z_DEFLATED:Oe}=ye,ae=16180,Le=16181,Ue=16182,ze=16183,$e=16184,Ve=16185,Pe=16186,Fe=16187,Ze=16188,je=16189,ie=16190,z=16191,de=16192,Ye=16193,we=16194,Ge=16195,He=16196,Ke=16197,Je=16198,se=16199,re=16200,We=16201,Xe=16202,qe=16203,Qe=16204,et=16205,be=16206,tt=16207,nt=16208,N=16209,at=16210,it=16211,pn=852,gn=592,_n=15,st=n=>(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24);function mn(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const j=n=>{if(!n)return 1;const t=n.state;return!t||t.strm!==n||t.mode<ae||t.mode>it?1:0},rt=n=>{if(j(n))return O;const t=n.state;return n.total_in=n.total_out=t.total=0,n.msg="",t.wrap&&(n.adler=t.wrap&1),t.mode=ae,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(pn),t.distcode=t.distdyn=new Int32Array(gn),t.sane=1,t.back=-1,Z},ot=n=>{if(j(n))return O;const t=n.state;return t.wsize=0,t.whave=0,t.wnext=0,rt(n)},lt=(n,t)=>{let e;if(j(n))return O;const a=n.state;return t<0?(e=0,t=-t):(e=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?O:(a.window!==null&&a.wbits!==t&&(a.window=null),a.wrap=e,a.wbits=t,ot(n))},ct=(n,t)=>{if(!n)return O;const e=new mn;n.state=e,e.strm=n,e.window=null,e.mode=ae;const a=lt(n,t);return a!==Z&&(n.state=null),a},kn=n=>ct(n,_n);let ft=!0,pe,ge;const vn=n=>{if(ft){pe=new Int32Array(512),ge=new Int32Array(32);let t=0;for(;t<144;)n.lens[t++]=8;for(;t<256;)n.lens[t++]=9;for(;t<280;)n.lens[t++]=7;for(;t<288;)n.lens[t++]=8;for(X(Te,n.lens,0,288,pe,0,n.work,{bits:9}),t=0;t<32;)n.lens[t++]=5;X(Re,n.lens,0,32,ge,0,n.work,{bits:5}),ft=!1}n.lencode=pe,n.lenbits=9,n.distcode=ge,n.distbits=5},ut=(n,t,e,a)=>{let o;const i=n.state;return i.window===null&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Uint8Array(i.wsize)),a>=i.wsize?(i.window.set(t.subarray(e-i.wsize,e),0),i.wnext=0,i.whave=i.wsize):(o=i.wsize-i.wnext,o>a&&(o=a),i.window.set(t.subarray(e-a,e-a+o),i.wnext),a-=o,a?(i.window.set(t.subarray(e-a,e),0),i.wnext=a,i.whave=i.wsize):(i.wnext+=o,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=o))),0},xn=(n,t)=>{let e,a,o,i,c,r,u,s,l,d,w,f,p,T,v=0,m,I,k,h,x,R,b,S;const y=new Uint8Array(4);let _,E;const V=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(j(n)||!n.output||!n.input&&n.avail_in!==0)return O;e=n.state,e.mode===z&&(e.mode=de),c=n.next_out,o=n.output,u=n.avail_out,i=n.next_in,a=n.input,r=n.avail_in,s=e.hold,l=e.bits,d=r,w=u,S=Z;e:for(;;)switch(e.mode){case ae:if(e.wrap===0){e.mode=de;break}for(;l<16;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(e.wrap&2&&s===35615){e.wbits===0&&(e.wbits=15),e.check=0,y[0]=s&255,y[1]=s>>>8&255,e.check=U(e.check,y,2,0),s=0,l=0,e.mode=Le;break}if(e.head&&(e.head.done=!1),!(e.wrap&1)||(((s&255)<<8)+(s>>8))%31){n.msg="incorrect header check",e.mode=N;break}if((s&15)!==Oe){n.msg="unknown compression method",e.mode=N;break}if(s>>>=4,l-=4,b=(s&15)+8,e.wbits===0&&(e.wbits=b),b>15||b>e.wbits){n.msg="invalid window size",e.mode=N;break}e.dmax=1<<e.wbits,e.flags=0,n.adler=e.check=1,e.mode=s&512?je:z,s=0,l=0;break;case Le:for(;l<16;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(e.flags=s,(e.flags&255)!==Oe){n.msg="unknown compression method",e.mode=N;break}if(e.flags&57344){n.msg="unknown header flags set",e.mode=N;break}e.head&&(e.head.text=s>>8&1),e.flags&512&&e.wrap&4&&(y[0]=s&255,y[1]=s>>>8&255,e.check=U(e.check,y,2,0)),s=0,l=0,e.mode=Ue;case Ue:for(;l<32;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}e.head&&(e.head.time=s),e.flags&512&&e.wrap&4&&(y[0]=s&255,y[1]=s>>>8&255,y[2]=s>>>16&255,y[3]=s>>>24&255,e.check=U(e.check,y,4,0)),s=0,l=0,e.mode=ze;case ze:for(;l<16;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}e.head&&(e.head.xflags=s&255,e.head.os=s>>8),e.flags&512&&e.wrap&4&&(y[0]=s&255,y[1]=s>>>8&255,e.check=U(e.check,y,2,0)),s=0,l=0,e.mode=$e;case $e:if(e.flags&1024){for(;l<16;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}e.length=s,e.head&&(e.head.extra_len=s),e.flags&512&&e.wrap&4&&(y[0]=s&255,y[1]=s>>>8&255,e.check=U(e.check,y,2,0)),s=0,l=0}else e.head&&(e.head.extra=null);e.mode=Ve;case Ve:if(e.flags&1024&&(f=e.length,f>r&&(f=r),f&&(e.head&&(b=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(a.subarray(i,i+f),b)),e.flags&512&&e.wrap&4&&(e.check=U(e.check,a,f,i)),r-=f,i+=f,e.length-=f),e.length))break e;e.length=0,e.mode=Pe;case Pe:if(e.flags&2048){if(r===0)break e;f=0;do b=a[i+f++],e.head&&b&&e.length<65536&&(e.head.name+=String.fromCharCode(b));while(b&&f<r);if(e.flags&512&&e.wrap&4&&(e.check=U(e.check,a,f,i)),r-=f,i+=f,b)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=Fe;case Fe:if(e.flags&4096){if(r===0)break e;f=0;do b=a[i+f++],e.head&&b&&e.length<65536&&(e.head.comment+=String.fromCharCode(b));while(b&&f<r);if(e.flags&512&&e.wrap&4&&(e.check=U(e.check,a,f,i)),r-=f,i+=f,b)break e}else e.head&&(e.head.comment=null);e.mode=Ze;case Ze:if(e.flags&512){for(;l<16;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(e.wrap&4&&s!==(e.check&65535)){n.msg="header crc mismatch",e.mode=N;break}s=0,l=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),n.adler=e.check=0,e.mode=z;break;case je:for(;l<32;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}n.adler=e.check=st(s),s=0,l=0,e.mode=ie;case ie:if(e.havedict===0)return n.next_out=c,n.avail_out=u,n.next_in=i,n.avail_in=r,e.hold=s,e.bits=l,wn;n.adler=e.check=1,e.mode=z;case z:if(t===hn||t===ne)break e;case de:if(e.last){s>>>=l&7,l-=l&7,e.mode=be;break}for(;l<3;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}switch(e.last=s&1,s>>>=1,l-=1,s&3){case 0:e.mode=Ye;break;case 1:if(vn(e),e.mode=se,t===ne){s>>>=2,l-=2;break e}break;case 2:e.mode=He;break;case 3:n.msg="invalid block type",e.mode=N}s>>>=2,l-=2;break;case Ye:for(s>>>=l&7,l-=l&7;l<32;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if((s&65535)!==(s>>>16^65535)){n.msg="invalid stored block lengths",e.mode=N;break}if(e.length=s&65535,s=0,l=0,e.mode=we,t===ne)break e;case we:e.mode=Ge;case Ge:if(f=e.length,f){if(f>r&&(f=r),f>u&&(f=u),f===0)break e;o.set(a.subarray(i,i+f),c),r-=f,i+=f,u-=f,c+=f,e.length-=f;break}e.mode=z;break;case He:for(;l<14;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(e.nlen=(s&31)+257,s>>>=5,l-=5,e.ndist=(s&31)+1,s>>>=5,l-=5,e.ncode=(s&15)+4,s>>>=4,l-=4,e.nlen>286||e.ndist>30){n.msg="too many length or distance symbols",e.mode=N;break}e.have=0,e.mode=Ke;case Ke:for(;e.have<e.ncode;){for(;l<3;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}e.lens[V[e.have++]]=s&7,s>>>=3,l-=3}for(;e.have<19;)e.lens[V[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,_={bits:e.lenbits},S=X(un,e.lens,0,19,e.lencode,0,e.work,_),e.lenbits=_.bits,S){n.msg="invalid code lengths set",e.mode=N;break}e.have=0,e.mode=Je;case Je:for(;e.have<e.nlen+e.ndist;){for(;v=e.lencode[s&(1<<e.lenbits)-1],m=v>>>24,I=v>>>16&255,k=v&65535,!(m<=l);){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(k<16)s>>>=m,l-=m,e.lens[e.have++]=k;else{if(k===16){for(E=m+2;l<E;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(s>>>=m,l-=m,e.have===0){n.msg="invalid bit length repeat",e.mode=N;break}b=e.lens[e.have-1],f=3+(s&3),s>>>=2,l-=2}else if(k===17){for(E=m+3;l<E;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}s>>>=m,l-=m,b=0,f=3+(s&7),s>>>=3,l-=3}else{for(E=m+7;l<E;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}s>>>=m,l-=m,b=0,f=11+(s&127),s>>>=7,l-=7}if(e.have+f>e.nlen+e.ndist){n.msg="invalid bit length repeat",e.mode=N;break}for(;f--;)e.lens[e.have++]=b}}if(e.mode===N)break;if(e.lens[256]===0){n.msg="invalid code -- missing end-of-block",e.mode=N;break}if(e.lenbits=9,_={bits:e.lenbits},S=X(Te,e.lens,0,e.nlen,e.lencode,0,e.work,_),e.lenbits=_.bits,S){n.msg="invalid literal/lengths set",e.mode=N;break}if(e.distbits=6,e.distcode=e.distdyn,_={bits:e.distbits},S=X(Re,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,_),e.distbits=_.bits,S){n.msg="invalid distances set",e.mode=N;break}if(e.mode=se,t===ne)break e;case se:e.mode=re;case re:if(r>=6&&u>=258){n.next_out=c,n.avail_out=u,n.next_in=i,n.avail_in=r,e.hold=s,e.bits=l,rn(n,w),c=n.next_out,o=n.output,u=n.avail_out,i=n.next_in,a=n.input,r=n.avail_in,s=e.hold,l=e.bits,e.mode===z&&(e.back=-1);break}for(e.back=0;v=e.lencode[s&(1<<e.lenbits)-1],m=v>>>24,I=v>>>16&255,k=v&65535,!(m<=l);){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(I&&(I&240)===0){for(h=m,x=I,R=k;v=e.lencode[R+((s&(1<<h+x)-1)>>h)],m=v>>>24,I=v>>>16&255,k=v&65535,!(h+m<=l);){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}s>>>=h,l-=h,e.back+=h}if(s>>>=m,l-=m,e.back+=m,e.length=k,I===0){e.mode=et;break}if(I&32){e.back=-1,e.mode=z;break}if(I&64){n.msg="invalid literal/length code",e.mode=N;break}e.extra=I&15,e.mode=We;case We:if(e.extra){for(E=e.extra;l<E;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}e.length+=s&(1<<e.extra)-1,s>>>=e.extra,l-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=Xe;case Xe:for(;v=e.distcode[s&(1<<e.distbits)-1],m=v>>>24,I=v>>>16&255,k=v&65535,!(m<=l);){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if((I&240)===0){for(h=m,x=I,R=k;v=e.distcode[R+((s&(1<<h+x)-1)>>h)],m=v>>>24,I=v>>>16&255,k=v&65535,!(h+m<=l);){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}s>>>=h,l-=h,e.back+=h}if(s>>>=m,l-=m,e.back+=m,I&64){n.msg="invalid distance code",e.mode=N;break}e.offset=k,e.extra=I&15,e.mode=qe;case qe:if(e.extra){for(E=e.extra;l<E;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}e.offset+=s&(1<<e.extra)-1,s>>>=e.extra,l-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){n.msg="invalid distance too far back",e.mode=N;break}e.mode=Qe;case Qe:if(u===0)break e;if(f=w-u,e.offset>f){if(f=e.offset-f,f>e.whave&&e.sane){n.msg="invalid distance too far back",e.mode=N;break}f>e.wnext?(f-=e.wnext,p=e.wsize-f):p=e.wnext-f,f>e.length&&(f=e.length),T=e.window}else T=o,p=c-e.offset,f=e.length;f>u&&(f=u),u-=f,e.length-=f;do o[c++]=T[p++];while(--f);e.length===0&&(e.mode=re);break;case et:if(u===0)break e;o[c++]=e.length,u--,e.mode=re;break;case be:if(e.wrap){for(;l<32;){if(r===0)break e;r--,s|=a[i++]<<l,l+=8}if(w-=u,n.total_out+=w,e.total+=w,e.wrap&4&&w&&(n.adler=e.check=e.flags?U(e.check,o,w,c-w):ce(e.check,o,w,c-w)),w=u,e.wrap&4&&(e.flags?s:st(s))!==e.check){n.msg="incorrect data check",e.mode=N;break}s=0,l=0}e.mode=tt;case tt:if(e.wrap&&e.flags){for(;l<32;){if(r===0)break e;r--,s+=a[i++]<<l,l+=8}if(e.wrap&4&&s!==(e.total&4294967295)){n.msg="incorrect length check",e.mode=N;break}s=0,l=0}e.mode=nt;case nt:S=dn;break e;case N:S=Ce;break e;case at:return Be;case it:default:return O}return n.next_out=c,n.avail_out=u,n.next_in=i,n.avail_in=r,e.hold=s,e.bits=l,(e.wsize||w!==n.avail_out&&e.mode<N&&(e.mode<be||t!==Me))&&ut(n,n.output,n.next_out,w-n.avail_out),d-=n.avail_in,w-=n.avail_out,n.total_in+=d,n.total_out+=w,e.total+=w,e.wrap&4&&w&&(n.adler=e.check=e.flags?U(e.check,o,w,n.next_out-w):ce(e.check,o,w,n.next_out-w)),n.data_type=e.bits+(e.last?64:0)+(e.mode===z?128:0)+(e.mode===se||e.mode===we?256:0),(d===0&&w===0||t===Me)&&S===Z&&(S=bn),S},yn=n=>{if(j(n))return O;let t=n.state;return t.window&&(t.window=null),n.state=null,Z},En=(n,t)=>{if(j(n))return O;const e=n.state;return(e.wrap&2)===0?O:(e.head=t,t.done=!1,Z)},Sn=(n,t)=>{const e=t.length;let a,o,i;return j(n)||(a=n.state,a.wrap!==0&&a.mode!==ie)?O:a.mode===ie&&(o=1,o=ce(o,t,e,0),o!==a.check)?Ce:(i=ut(n,t,e,e),i?(a.mode=at,Be):(a.havedict=1,Z))};var In=ot,An=lt,Nn=rt,Dn=kn,Tn=ct,Rn=xn,Mn=yn,Cn=En,Bn=Sn,On="pako inflate (from Nodeca project)",$={inflateReset:In,inflateReset2:An,inflateResetKeep:Nn,inflateInit:Dn,inflateInit2:Tn,inflate:Rn,inflateEnd:Mn,inflateGetHeader:Cn,inflateSetDictionary:Bn,inflateInfo:On};function Ln(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Un=Ln;const ht=Object.prototype.toString,{Z_NO_FLUSH:zn,Z_FINISH:$n,Z_OK:q,Z_STREAM_END:_e,Z_NEED_DICT:me,Z_STREAM_ERROR:Vn,Z_DATA_ERROR:dt,Z_MEM_ERROR:Pn}=ye;function oe(n){this.options=Ee.assign({chunkSize:1024*64,windowBits:15,to:""},n||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(n&&n.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new an,this.strm.avail_out=0;let e=$.inflateInit2(this.strm,t.windowBits);if(e!==q)throw new Error(fe[e]);if(this.header=new Un,$.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=ue.string2buf(t.dictionary):ht.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(e=$.inflateSetDictionary(this.strm,t.dictionary),e!==q)))throw new Error(fe[e])}oe.prototype.push=function(n,t){const e=this.strm,a=this.options.chunkSize,o=this.options.dictionary;let i,c,r;if(this.ended)return!1;for(t===~~t?c=t:c=t===!0?$n:zn,ht.call(n)==="[object ArrayBuffer]"?e.input=new Uint8Array(n):e.input=n,e.next_in=0,e.avail_in=e.input.length;;){for(e.avail_out===0&&(e.output=new Uint8Array(a),e.next_out=0,e.avail_out=a),i=$.inflate(e,c),i===me&&o&&(i=$.inflateSetDictionary(e,o),i===q?i=$.inflate(e,c):i===dt&&(i=me));e.avail_in>0&&i===_e&&e.state.wrap>0&&n[e.next_in]!==0;)$.inflateReset(e),i=$.inflate(e,c);switch(i){case Vn:case dt:case me:case Pn:return this.onEnd(i),this.ended=!0,!1}if(r=e.avail_out,e.next_out&&(e.avail_out===0||i===_e))if(this.options.to==="string"){let u=ue.utf8border(e.output,e.next_out),s=e.next_out-u,l=ue.buf2string(e.output,u);e.next_out=s,e.avail_out=a-s,s&&e.output.set(e.output.subarray(u,u+s),0),this.onData(l)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(!(i===q&&r===0)){if(i===_e)return i=$.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(e.avail_in===0)break}}return!0},oe.prototype.onData=function(n){this.chunks.push(n)},oe.prototype.onEnd=function(n){n===q&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Ee.flattenChunks(this.chunks)),this.chunks=[],this.err=n,this.msg=this.strm.msg};function Fn(n,t){const e=new oe(t);if(e.push(n),e.err)throw e.msg||fe[e.err];return e.result}var Zn=Fn,jn={ungzip:Zn};const{ungzip:Yn}=jn;var Gn=Yn;function Hn(){return typeof CompressionStream<"u"&&typeof DecompressionStream<"u"}async function Kn(n){if(Hn())try{const t=new DecompressionStream("gzip"),e=t.writable.getWriter(),a=t.readable.getReader();e.write(n),e.close();const o=[];let i=0;for(;;){const{done:u,value:s}=await a.read();if(u)break;o.push(s),i+=s.length}const c=new Uint8Array(i);let r=0;for(const u of o)c.set(u,r),r+=u.length;return c}catch(t){console.warn("DecompressionStream failed, falling back to pako:",t)}return Gn(n)}function Jn(n){return n.length>=2&&n[0]===31&&n[1]===139}async function Wn(n){return(await Kn(new Uint8Array(n))).buffer}let Y={},wt={},bt={},pt={};const Xn="1.21.0.03";async function gt(){try{const[n,t,e,a]=await Promise.all([fetch("/data/blocksJ2B.json"),fetch("/data/bedsJ2B.json"),fetch("/data/skullJ2B.json"),fetch("/data/blockstates.json")]);Y=await n.json(),wt=await t.json(),bt=await e.json(),pt=await a.json()}catch(n){throw console.error("Failed to load mapping data:",n),new Error("Failed to load block mapping data")}}function qn(n){const t=n.split(".").map(Number);let e=0;for(let a=0;a<Math.min(t.length,4);a++)e=e<<8|t[a]&255;return e}function _t(n){let t="minecraft:air";const e={},a=n.value;if(a.has("name")){if(t=a.get("name").value,a.has("states")){const r=a.get("states");for(const[u,s]of r.value)s.type===1||s.type===3?e[u]=String(s.value):s.type===8&&(e[u]=s.value)}}else if(a.has("Name")&&(t=a.get("Name").value,a.has("Properties"))){const r=a.get("Properties");for(const[u,s]of r.value)s.type===8&&(e[u]=s.value)}const o=Object.keys(e).sort();if(o.length===0)return t+"[]";const i=o.map(c=>`${c}=${e[c]}`);return`${t}[${i.join(",")}]`}function mt(n,t="bedrock"){const e=n.indexOf("["),a=e>=0?n.substring(0,e):n;let o=[];if(e>=0){const c=n.substring(e+1,n.length-1);o=c?c.split(","):[]}const i={};for(const c of o){const[r,u]=c.split("=");r&&u!==void 0&&(i[r]=u)}if(t==="java"){const c=new Map,r=new Map;for(const[u,s]of Object.entries(i))r.set(u,M(s));return c.set("Name",M(a)),r.size>0&&c.set("Properties",A(r)),A(c)}else{const c=new Map,r=new Map;for(const[u,s]of Object.entries(i)){const l=pt[u];if(l){const d=l.values,w=l.type;if(w==="bool")r.set(u,D(s==="true"?1:0));else if(w==="int"){const f=parseInt(s,10);d.includes(f)&&r.set(u,C(f))}else w==="string"&&d.includes(s)&&r.set(u,M(s))}}return c.set("name",M(a)),c.set("states",A(r)),c.set("version",C(qn(Xn))),A(c)}}function Qn(n){return n.map(t=>{const e=_t(t);let a=Y[e];if(!a){const o=e.split("[")[0];a=Y[`${o}[]`]||Y[o]}return a||(console.warn(`No mapping found for ${e}, defaulting to air`),a="minecraft:air[]"),mt(a,"bedrock")})}function ea(n){return wt[n]??null}function ta(n){return bt[n]??null}function na(n){const t=n.value;if(t.has("Properties")){const e=t.get("Properties");if(e.value.has("waterlogged"))return e.value.get("waterlogged").value==="true"}return!1}function aa(n){return n.split("[")[0]}let ke={};function ia(n){return n.map(t=>{const e=_t(t),a=aa(e);let o;if(ke[e])o=ke[e];else for(const[i,c]of Object.entries(ke))if(i.includes("*")&&new RegExp("^"+i.replace(/\*/g,".*")+"$").test(e)){o=c;break}return o||(o=Y[e],o||(o=Y[`${a}[]`]||Y[a])),o||(console.warn(`No mapping found for ${e}, defaulting to air`),o="minecraft:air[]"),mt(o,"bedrock")})}function sa(n){const t=[];for(const e of n.value){const a=new Map,o=e.value;let i=1;o.has("count")?i=o.get("count").value:o.has("Count")&&(i=o.get("Count").value);let c=0;o.has("Slot")&&(c=o.get("Slot").value);let r="minecraft:air";o.has("id")&&(r=o.get("id").value),a.set("Count",D(i)),a.set("Damage",B(0)),a.set("Name",M(r)),a.set("Slot",D(c)),a.set("WasPickedUp",D(0)),t.push(A(a))}return t}function ra(n,t){const e=n.value,a=e.get("state").value,i=t[a].value;if(!i.has("Name"))return null;const c=i.get("Name").value,r=ea(c);if(r===null)return null;const s=e.get("pos").value,l=new Map,d=new Map;return d.set("id",M("Bed")),d.set("isMovable",D(1)),d.set("x",s[0]),d.set("y",s[1]),d.set("z",s[2]),d.set("color",D(r)),l.set("block_entity_data",A(d)),A(l)}function J(n,t){const e=n.value;if(!e.has("nbt"))return null;const o=e.get("nbt").value;if(!o.has("Items"))return null;const i=o.get("Items"),r=e.get("pos").value,u=new Map,s=new Map;if(s.set("id",M(t)),s.set("isMovable",D(1)),s.set("x",r[0]),s.set("y",r[1]),s.set("z",r[2]),(t==="Chest"||t==="Barrel")&&o.has("CustomName")){const d=o.get("CustomName");s.set("CustomName",M(d.value))}const l=sa(i);if(l.length>0&&s.set("Items",L(l,10)),t==="Furnace"||t==="BlastFurnace"||t==="Smoker"){if(o.has("BurnTime")){const d=o.get("BurnTime");s.set("BurnTime",B(d.value))}if(o.has("CookTime")){const d=o.get("CookTime");s.set("CookTime",B(d.value))}if(o.has("CookTimeTotal")){const d=o.get("CookTimeTotal");s.set("CookTimeTotal",B(d.value))}}if(t==="BrewingStand"&&o.has("BrewTime")){const d=o.get("BrewTime");s.set("BrewTime",B(d.value))}return u.set("block_entity_data",A(s)),A(u)}function oa(n){const t=n.value;if(!t.has("nbt"))return null;const a=t.get("nbt").value,i=t.get("pos").value,c=new Map,r=new Map;if(r.set("id",M("Comparator")),r.set("isMovable",D(1)),r.set("x",i[0]),r.set("y",i[1]),r.set("z",i[2]),a.has("OutputSignal")){const u=a.get("OutputSignal");r.set("OutputSignal",C(u.value))}return c.set("block_entity_data",A(r)),A(c)}function la(n){const a=n.value.get("pos").value,o=new Map,i=new Map;return i.set("id",M("FlowerPot")),i.set("isMovable",D(1)),i.set("x",a[0]),i.set("y",a[1]),i.set("z",a[2]),o.set("block_entity_data",A(i)),A(o)}function ca(n){const t=n.value;if(!t.has("nbt"))return null;const a=t.get("nbt").value,i=t.get("pos").value,c=new Map,r=new Map;if(r.set("id",M("Banner")),r.set("isMovable",D(1)),r.set("x",i[0]),r.set("y",i[1]),r.set("z",i[2]),a.has("Patterns")){const u=a.get("Patterns"),s=[];for(const l of u.value){const d=l.value,w=new Map;if(d.has("Color")){const f=d.get("Color");w.set("Color",C(f.value))}if(d.has("Pattern")){const f=d.get("Pattern");w.set("Pattern",M(f.value))}s.push(A(w))}s.length>0&&r.set("Patterns",L(s,10))}return c.set("block_entity_data",A(r)),A(c)}function fa(n,t){const e=n.value,a=e.get("state").value,i=t[a].value;if(!i.has("Name"))return null;const c=i.get("Name").value,r=ta(c);if(r===null)return null;const s=e.get("pos").value,l=new Map,d=new Map;if(d.set("id",M("Skull")),d.set("isMovable",D(1)),d.set("x",s[0]),d.set("y",s[1]),d.set("z",s[2]),d.set("SkullType",D(r)),i.has("Properties")){const f=i.get("Properties").value;if(f.has("rotation")){const p=f.get("rotation");d.set("Rot",D(parseInt(p.value,10)))}}if(e.has("nbt")){const f=e.get("nbt").value;if(f.has("SkullOwner")){const p=f.get("SkullOwner");if(p.value.has("Name")){const T=p.value.get("Name");d.set("CustomName",M(T.value))}}}return l.set("block_entity_data",A(d)),A(l)}function ua(n){const t=n.value;if(!t.has("nbt"))return null;const a=t.get("nbt").value,i=t.get("pos").value,c=new Map,r=new Map;if(r.set("id",M("MobSpawner")),r.set("isMovable",D(1)),r.set("x",i[0]),r.set("y",i[1]),r.set("z",i[2]),a.has("SpawnData")){const u=a.get("SpawnData");if(u.value.has("entity")){const s=u.value.get("entity");if(s.value.has("id")){const l=s.value.get("id");r.set("EntityIdentifier",M(l.value))}}}if(a.has("Delay")){const u=a.get("Delay");r.set("Delay",B(u.value))}if(a.has("MinSpawnDelay")){const u=a.get("MinSpawnDelay");r.set("MinSpawnDelay",B(u.value))}if(a.has("MaxSpawnDelay")){const u=a.get("MaxSpawnDelay");r.set("MaxSpawnDelay",B(u.value))}if(a.has("SpawnCount")){const u=a.get("SpawnCount");r.set("SpawnCount",B(u.value))}if(a.has("MaxNearbyEntities")){const u=a.get("MaxNearbyEntities");r.set("MaxNearbyEntities",B(u.value))}if(a.has("RequiredPlayerRange")){const u=a.get("RequiredPlayerRange");r.set("RequiredPlayerRange",B(u.value))}if(a.has("SpawnRange")){const u=a.get("SpawnRange");r.set("SpawnRange",B(u.value))}return c.set("block_entity_data",A(r)),A(c)}function ha(n){const t=n.value;if(!t.has("nbt"))return null;const a=t.get("nbt").value,i=t.get("pos").value,c=new Map,r=new Map;if(r.set("id",M("StructureBlock")),r.set("isMovable",D(1)),r.set("x",i[0]),r.set("y",i[1]),r.set("z",i[2]),a.has("name")){const u=a.get("name");r.set("structureName",M(u.value))}if(a.has("metadata")){const u=a.get("metadata");r.set("dataField",M(u.value))}if(a.has("mode")){const u=a.get("mode"),s={SAVE:"Save",LOAD:"Load",CORNER:"Corner",DATA:"Data"};r.set("structureBlockType",M(s[u.value]||"Data"))}if(a.has("ignoreEntities")){const u=a.get("ignoreEntities");r.set("ignoreEntities",D(u.value))}if(a.has("showboundingbox")){const u=a.get("showboundingbox");r.set("showBoundingBox",D(u.value))}return c.set("block_entity_data",A(r)),A(c)}function kt(n,t){const e={};for(const a of n){const o=a.value;if(!o.has("nbt")&&!o.has("state"))continue;const i=o.get("state").value,c=t[i];if(!c||!c.value.has("Name"))continue;const u=c.value.get("Name").value.split("[")[0];let s=null;switch(u){case"minecraft:white_bed":case"minecraft:orange_bed":case"minecraft:magenta_bed":case"minecraft:light_blue_bed":case"minecraft:yellow_bed":case"minecraft:lime_bed":case"minecraft:pink_bed":case"minecraft:gray_bed":case"minecraft:light_gray_bed":case"minecraft:cyan_bed":case"minecraft:purple_bed":case"minecraft:blue_bed":case"minecraft:brown_bed":case"minecraft:green_bed":case"minecraft:red_bed":case"minecraft:black_bed":s=ra(a,t);break;case"minecraft:chest":case"minecraft:trapped_chest":s=J(a,"Chest");break;case"minecraft:barrel":s=J(a,"Barrel");break;case"minecraft:furnace":s=J(a,"Furnace");break;case"minecraft:blast_furnace":s=J(a,"BlastFurnace");break;case"minecraft:smoker":s=J(a,"Smoker");break;case"minecraft:brewing_stand":s=J(a,"BrewingStand");break;case"minecraft:comparator":s=oa(a);break;case"minecraft:flower_pot":case"minecraft:potted_oak_sapling":case"minecraft:potted_spruce_sapling":case"minecraft:potted_birch_sapling":case"minecraft:potted_jungle_sapling":case"minecraft:potted_acacia_sapling":case"minecraft:potted_dark_oak_sapling":s=la(a);break;case"minecraft:white_banner":case"minecraft:orange_banner":case"minecraft:magenta_banner":case"minecraft:light_blue_banner":case"minecraft:yellow_banner":case"minecraft:lime_banner":case"minecraft:pink_banner":case"minecraft:gray_banner":case"minecraft:light_gray_banner":case"minecraft:cyan_banner":case"minecraft:purple_banner":case"minecraft:blue_banner":case"minecraft:brown_banner":case"minecraft:green_banner":case"minecraft:red_banner":case"minecraft:black_banner":case"minecraft:white_wall_banner":case"minecraft:orange_wall_banner":case"minecraft:magenta_wall_banner":case"minecraft:light_blue_wall_banner":case"minecraft:yellow_wall_banner":case"minecraft:lime_wall_banner":case"minecraft:pink_wall_banner":case"minecraft:gray_wall_banner":case"minecraft:light_gray_wall_banner":case"minecraft:cyan_wall_banner":case"minecraft:purple_wall_banner":case"minecraft:blue_wall_banner":case"minecraft:brown_wall_banner":case"minecraft:green_wall_banner":case"minecraft:red_wall_banner":case"minecraft:black_wall_banner":s=ca(a);break;case"minecraft:skeleton_skull":case"minecraft:skeleton_wall_skull":case"minecraft:wither_skeleton_skull":case"minecraft:wither_skeleton_wall_skull":case"minecraft:zombie_head":case"minecraft:zombie_wall_head":case"minecraft:player_head":case"minecraft:player_wall_head":case"minecraft:creeper_head":case"minecraft:creeper_wall_head":case"minecraft:dragon_head":case"minecraft:dragon_wall_head":s=fa(a,t);break;case"minecraft:spawner":s=ua(a);break;case"minecraft:structure_block":s=ha(a);break}if(s){const d=o.get("pos").value,w=`${d[0].value},${d[1].value},${d[2].value}`;e[w]=s}}return e}const da={version:"1.21.0.03",enableWaterlogged:!0,customMappings:{},preserveStructureOrigin:!1};let vt=!1;async function wa(){vt||(await gt(),vt=!0)}function ba(n){const t=n.value;if(!t.has("blocks"))throw new Error('Missing "blocks" tag in Java structure');if(!t.has("palette"))throw new Error('Missing "palette" tag in Java structure');if(!t.has("size"))throw new Error('Missing "size" tag in Java structure');return{blocks:t.get("blocks"),palette:t.get("palette"),size:t.get("size"),entities:t.get("entities")||L([],g.COMPOUND)}}function pa(n,t,e,a,o){return n*t*e+t*a+o}async function ga(n,t){const e=n.blocks.value,a=n.palette.value,o=n.size.value,i=o[0].value,c=o[1].value,r=o[2].value,u=i*c*r;let s;t.customMappings&&Object.keys(t.customMappings).length>0?s=ia(a):s=Qn(a);const l=[],d=[];for(let x=0;x<u;x++)l.push(C(-1)),d.push(C(-1));const w={};for(const x of e){const R=x.value,S=R.get("pos").value,y=R.get("state"),_=S[0].value,E=S[1].value,V=S[2].value,ee=pa(c,r,_,E,V),G=y.value;if(l[ee]=C(G),t.enableWaterlogged){const F=a[G];if(na(F)){let le=-1;for(let P=0;P<s.length;P++){const Et=s[P].value.get("name");if(Et&&Et.value==="minecraft:water"){le=P;break}}if(le===-1){le=s.length;const P=new Map;P.set("name",{type:g.STRING,name:null,value:"minecraft:water"}),P.set("states",A(new Map)),P.set("version",C(18939907)),s.push(A(P))}d[ee]=C(le)}}if(R.has("nbt")){const F=kt([x],a);Object.assign(w,F)}}const f=kt(e,a),p=new Map;let T=0;for(const x of e){const S=x.value.get("pos").value,y=`${S[0].value},${S[1].value},${S[2].value}`;f[y]&&p.set(String(T),f[y]),T++}const v=new Map,m=L([L(l,g.INT),L(d,g.INT)],g.LIST);v.set("block_indices",m),v.set("entities",L([],g.COMPOUND));const I=new Map,k=new Map;return k.set("block_palette",L(s,g.COMPOUND)),k.set("block_position_data",A(p)),I.set("default",A(k)),v.set("palette",A(I)),{format_version:C(1),size:L([C(i),C(c),C(r)],g.INT),structure_world_origin:L([C(0),C(0),C(0)],g.INT),structure:A(v)}}function _a(n){const t=new Map;return t.set("format_version",n.format_version),t.set("size",n.size),t.set("structure_world_origin",n.structure_world_origin),t.set("structure",n.structure),A(t)}async function xt(n,t,e={}){try{const a={...da,...e};await wa();let o=n;const i=new Uint8Array(n);Jn(i)&&(o=await Wn(n));const{value:c}=Ct(o),r=ba(c),u=await ga(r,a),s=_a(u),l=Lt(s,""),w=`${t.replace(/\.nbt$/i,"")}.mcstructure`;return{success:!0,data:l,filename:w}}catch(a){return console.error("Conversion error:",a),{success:!1,error:a instanceof Error?a.message:"Unknown conversion error"}}}async function ma(n,t={},e){const a=[];for(let o=0;o<n.length;o++){const i=n[o];e&&e(o,n.length,i.filename);const c=await xt(i.buffer,i.filename,t);a.push(c)}return e&&e(n.length,n.length,""),a}let Q=!1;const yt={async init(n="./data/"){if(Q){console.warn("[NBT-to-MCStructure] Already initialized");return}console.log("[NBT-to-MCStructure] Initializing with data path:",n);try{await gt(),Q=!0,console.log("[NBT-to-MCStructure] Initialization complete")}catch(t){throw console.error("[NBT-to-MCStructure] Initialization failed:",t),t}},async convert(n,t,e){return Q?xt(n,t,e):(console.warn("[NBT-to-MCStructure] Not initialized. Call init() first."),{success:!1,error:"Converter not initialized. Call init() first."})},async convertBatch(n,t,e){if(!Q)throw console.warn("[NBT-to-MCStructure] Not initialized. Call init() first."),new Error("Converter not initialized. Call init() first.");return ma(n,t,e)},isInitialized(){return Q}};return typeof window<"u"&&(window.NBTToMcStructure=yt),yt}));