hytopia 0.7.7 → 0.7.8

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/node-server.mjs CHANGED
@@ -367,7 +367,7 @@ ${W}${x8.bold}==========[ RUNTIME ${G?"WARNING":"ERROR"} #${H} | ${K} ]=========
367
367
  `);else console.log("The server encountered a recoverable error and did not crash."),console.log(`You should fix this to prevent undefined-like return values and unexpected behavior.
368
368
  `);let F=Q?"FATAL ERROR":G?"WARNING":"ERROR";if(V(`${W}${x8.bold}⚠️ ${F}:${x8.reset} ${x8.bold}${J}${x8.reset}`),Y)V(`${x8.cyan}ℹ️ CONTEXT:${x8.reset} ${Y}`);let z=X.stack?.split(`
369
369
  `)??[];if(z.length>1)V(`${x8.cyan}\uD83D\uDD0D STACK TRACE:${x8.reset}`),z.slice(1).forEach((q)=>{let B=q.trim().replace(/at\s+([^\s]+)/,`at ${x8.green}$1${x8.reset}`).replace(/\(([^:]+):(\d+):(\d+)\)/,`(${x8.cyan}$1${x8.reset}:${x8.yellow}$2:$3${x8.reset})`);V(` ${B}`)});console.log(`${W}${x8.bold}=================================================${x8.reset}
370
- `)}}var ym=r(fm(),1);var bm=ym.default;class O0{static globalInstance=new O0;_emitter=new bm;_finalListeners={};emit(Z,J){if(this.listenerCount(Z)===0)return!1;try{this._emitter.emit(Z,J),this._finalListeners[Z]?.(J)}catch(X){console.error(`EventRouter.emit(): Error emitting event "${Z}":`,X)}return!0}emitWithGlobal(Z,J){this.emit(Z,J),O0.globalInstance.emit(Z,J)}emitWithWorld(Z,J,X){this.emit(J,X),Z.emit(J,X)}final(Z,J){if(this._finalListeners[Z]&&J!==this._finalListeners[Z])return d.error(`EventRouter.final(): Listener for event type "${Z}" already exists. It must be removed explicitly with .off() before a different final listener can be set.`);this._finalListeners[Z]=J}hasListeners(Z){return this._emitter.listenerCount(Z)>0||Z in this._finalListeners}listeners(Z){return[...this._emitter.listeners(Z),...this._finalListeners[Z]?[this._finalListeners[Z]]:[]]}listenerCount(Z){return this._emitter.listenerCount(Z)+(this._finalListeners[Z]?1:0)}off(Z,J){if(this._emitter.removeListener(Z,J),this._finalListeners[Z]===J)delete this._finalListeners[Z]}offAll(Z){if(this._emitter.removeAllListeners(Z),Z)delete this._finalListeners[Z];else this._finalListeners={}}on(Z,J){this._emitter.addListener(Z,J)}once(Z,J){this._emitter.once(Z,J)}}class P0{static serializeAudio(Z,J){if(Z.id===void 0)d.fatalError(`Serializer.serializeAudio(): Audio ${Z.uri} is not playing!`);if(Z.attachedToEntity&&!Z.attachedToEntity.isSpawned)d.warning(`Serializer.serializeAudio(): Audio ${Z.uri} is attached to an entity that is not spawned or was recently despawned, reverting to unattached!`);let X=J.getObject();return X.i=Z.id,X.a=Z.uri,X.cd=Z.cutoffDistance,X.d=Z.duration,X.de=Z.detune,X.di=Z.distortion,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.l=Z.loop,X.o=Z.offset,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.pa=!Z.isPlaying,X.pl=Z.isPlaying,X.pr=Z.playbackRate,X.rd=Z.referenceDistance,X.s=Z.startTick,X.v=Z.volume,X}static serializeBlockType(Z,J){let X=J.getObject();return X.i=Z.id,X.l=Z.isLiquid,X.n=Z.name,X.t=Z.textureUri,X}static serializeBlockTypeRegistry(Z,J){let X=J.getArray();for(let Y of Z.getAllBlockTypes())X.push(this.serializeBlockType(Y,J));return X}static serializeChunk(Z,J){let X=J.getObject();return X.c=this.serializeVector(Z.originCoordinate,J),X.b=J.getArray(Z.blocks),X}static serializeEntity(Z,J){if(!Z.world||Z.id===void 0)d.fatalError("Serializer.serializeEntity(): Entity is not in a world");let X=J.getObject();return X.i=Z.id,X.al=J.getArray(Z.modelLoopedAnimations),X.ap=Z.modelAnimationsPlaybackRate,X.bt=Z.blockTextureUri,X.bh=Z.blockHalfExtents?this.serializeVector(Z.blockHalfExtents,J):void 0,X.h=J.getArray(Z.modelHiddenNodes),X.m=Z.modelUri,X.mt=Z.modelTextureUri,X.n=Z.name,X.o=Z.opacity,X.p=this.serializeVector(Z.position,J),X.pe=Z.parent?Z.parent.id:void 0,X.pn=Z.parentNodeName,X.r=this.serializeQuaternion(Z.rotation,J),X.s=Z.modelScale,X.sn=J.getArray(Z.modelShownNodes),X.t=Z.tintColor?this.serializeRgbColor(Z.tintColor,J):void 0,X}static serializeLight(Z,J){if(!Z.world||Z.id===void 0)d.fatalError("Serializer.serializeLight(): Light is not in a world");let X=J.getObject();return X.i=Z.id,X.a=Z.angle,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.c=this.serializeRgbColor(Z.color,J),X.d=Z.distance,X.n=Z.intensity,X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.pe=Z.penumbra,X.t=Z.type,X.te=Z.trackedEntity?.isSpawned?Z.trackedEntity.id:void 0,X.tp=Z.trackedPosition?this.serializeVector(Z.trackedPosition,J):void 0,X}static serializeParticleEmitter(Z,J){if(!Z.world||Z.id===void 0)d.fatalError("Serializer.serializeParticleEmitter(): ParticleEmitter is not in a world");let X=J.getObject();return X.i=Z.id,X.at=Z.alphaTest,X.ce=Z.colorEnd?this.serializeRgbColor(Z.colorEnd,J):void 0,X.cev=Z.colorEndVariance?this.serializeRgbColor(Z.colorEndVariance,J):void 0,X.cs=Z.colorStart?this.serializeRgbColor(Z.colorStart,J):void 0,X.csv=Z.colorStartVariance?this.serializeRgbColor(Z.colorStartVariance,J):void 0,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.en=Z.attachedToEntityNodeName,X.g=Z.gravity?this.serializeVector(Z.gravity,J):void 0,X.l=Z.lifetime,X.lv=Z.lifetimeVariance,X.mp=Z.maxParticles,X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.oe=Z.opacityEnd,X.oev=Z.opacityEndVariance,X.os=Z.opacityStart,X.osv=Z.opacityStartVariance,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.pa=Z.paused,X.pv=Z.positionVariance?this.serializeVector(Z.positionVariance,J):void 0,X.r=Z.rate,X.rv=Z.rateVariance,X.se=Z.sizeEnd,X.sev=Z.sizeEndVariance,X.ss=Z.sizeStart,X.ssv=Z.sizeStartVariance,X.t=Z.transparent,X.tu=Z.textureUri,X.v=Z.velocity?this.serializeVector(Z.velocity,J):void 0,X.vv=Z.velocityVariance?this.serializeVector(Z.velocityVariance,J):void 0,X}static serializePhysicsDebugRaycast(Z,J){let X=J.getObject();return X.o=this.serializeVector(Z.origin,J),X.d=this.serializeVector(Z.direction,J),X.l=Z.length,X.h=Z.hit,X}static serializePlayer(Z,J){let X=J.getObject();return X.i=Z.id,X.u=Z.username,X.p=Z.profilePictureUrl,X}static serializePlayerCamera(Z,J){let X=J.getObject();return X.m=Z.mode,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.et=Z.trackedEntity?.isSpawned?Z.trackedEntity.id:void 0,X.fo=Z.filmOffset,X.ffo=Z.forwardOffset,X.fv=Z.fov,X.h=J.getArray(Z.modelHiddenNodes),X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.p=Z.attachedToPosition?this.serializeVector(Z.attachedToPosition,J):void 0,X.pt=Z.trackedPosition?this.serializeVector(Z.trackedPosition,J):void 0,X.s=J.getArray(Z.modelShownNodes),X.sa=Z.shoulderAngle,X.z=Z.zoom,X}static serializeQuaternion(Z,J){let X=J.getArray4Number();return X[0]=Z.x,X[1]=Z.y,X[2]=Z.z,X[3]=Z.w,X}static serializeRgbColor(Z,J){let X=J.getArray3Number();return X[0]=Z.r,X[1]=Z.g,X[2]=Z.b,X}static serializeSceneUI(Z,J){if(Z.id===void 0)d.fatalError("Serializer.serializeSceneUI(): SceneUI is not loaded!");let X=J.getObject();return X.i=Z.id,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.s=Z.state,X.t=Z.templateId,X.v=Z.viewDistance,X}static serializeVector(Z,J){let X=J.getArray3Number();return X[0]=Z.x,X[1]=Z.y,X[2]=Z.z,X}static serializeWorld(Z,J){let X=J.getObject();return X.i=Z.id,X.ac=this.serializeRgbColor(Z.ambientLightColor,J),X.ai=Z.ambientLightIntensity,X.dc=this.serializeRgbColor(Z.directionalLightColor,J),X.di=Z.directionalLightIntensity,X.dp=this.serializeVector(Z.directionalLightPosition,J),X.fc=Z.fogColor?this.serializeRgbColor(Z.fogColor,J):void 0,X.ff=Z.fogFar,X.fn=Z.fogNear,X.n=Z.name,X.s=Z.skyboxUri,X.si=Z.skyboxIntensity,X.t=Z.loop.timestepS,X}}var gm=5,CP;((F)=>{F.PAUSE="AUDIO.PAUSE";F.PLAY="AUDIO.PLAY";F.PLAY_RESTART="AUDIO.PLAY_RESTART";F.SET_ATTACHED_TO_ENTITY="AUDIO.SET_ATTACHED_TO_ENTITY";F.SET_CUTOFF_DISTANCE="AUDIO.SET_CUTOFF_DISTANCE";F.SET_DETUNE="AUDIO.SET_DETUNE";F.SET_DISTORTION="AUDIO.SET_DISTORTION";F.SET_POSITION="AUDIO.SET_POSITION";F.SET_PLAYBACK_RATE="AUDIO.SET_PLAYBACK_RATE";F.SET_REFERENCE_DISTANCE="AUDIO.SET_REFERENCE_DISTANCE";F.SET_VOLUME="AUDIO.SET_VOLUME"})(CP||={});class P3 extends O0{_id;_attachedToEntity;_cutoffDistance;_duration;_detune;_distortion;_loop;_offset;_position;_playbackRate;_playing;_referenceDistance;_startTick;_uri;_volume;_world;constructor(Z){super();this._attachedToEntity=Z.attachedToEntity,this._cutoffDistance=Z.cutoffDistance??(this.isPositional?(Z.referenceDistance??gm)+10:0),this._duration=Z.duration,this._detune=Z.detune??0,this._distortion=Z.distortion??0,this._loop=Z.loop??!1,this._offset=Z.offset??0,this._position=Z.position,this._playing=!1,this._playbackRate=Z.playbackRate??1,this._referenceDistance=Z.referenceDistance??(this.isPositional?gm:0),this._uri=Z.uri,this._volume=Z.volume??0.5}get id(){return this._id}get attachedToEntity(){return this._attachedToEntity}get cutoffDistance(){return this._cutoffDistance}get duration(){return this._duration}get detune(){return this._detune}get distortion(){return this._distortion}get loop(){return this._loop}get offset(){return this._offset}get isLoaded(){return this._id!==void 0}get isPlaying(){return this._playing}get isPositional(){return this._attachedToEntity!==void 0||this._position!==void 0}get position(){return this._position}get playbackRate(){return this._playbackRate}get referenceDistance(){return this._referenceDistance}get startTick(){return this._startTick}get uri(){return this._uri}get volume(){return this._volume}get world(){return this._world}play(Z,J=!1){if(this.isPlaying&&!J)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return d.error(`Audio.play(): Attached entity ${this._attachedToEntity.id} is not spawned!`);let X=J&&this._id!==void 0?"AUDIO.PLAY_RESTART":"AUDIO.PLAY";this._id??=Z.audioManager.registerAudio(this),this._playing=!0,this._startTick=Z.loop.currentTick,this._world=this._world??Z,this.emitWithWorld(Z,X,{audio:this})}pause(){if(!this.isPlaying||!this._world)return;this._playing=!1,this.emitWithWorld(this._world,"AUDIO.PAUSE",{audio:this})}setAttachedToEntity(Z){if(!this._requirePositional())return;if(!Z.isSpawned)return d.error(`Audio.setAttachedToEntity(): Entity ${Z.id} is not spawned!`);if(this._attachedToEntity===Z)return;if(this._attachedToEntity=Z,this._position=void 0,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_ATTACHED_TO_ENTITY",{audio:this,entity:Z})}setCutoffDistance(Z){if(!this._requirePositional())return;if(Z<=0||Z<this._referenceDistance)return d.error("Audio.setCutoffDistance(): Cutoff distance cannot be less than or equal to 0 or less than reference distance!");if(this._cutoffDistance===Z)return;if(this._cutoffDistance=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_CUTOFF_DISTANCE",{audio:this,cutoffDistance:Z})}setDetune(Z){if(this._detune===Z)return;if(this._detune=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_DETUNE",{audio:this,detune:Z})}setDistortion(Z){if(Z<0)return d.error("Distortion cannot be less than 0");if(this._distortion===Z)return;if(this._distortion=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_DISTORTION",{audio:this,distortion:Z})}setPosition(Z){if(!this._requirePositional())return;if(this._position===Z)return;if(this._attachedToEntity=void 0,this._position=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_POSITION",{audio:this,position:Z})}setPlaybackRate(Z){if(Z<=0)return d.error("Playback rate cannot be less than or equal to 0");if(this._playbackRate===Z)return;if(this._playbackRate=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_PLAYBACK_RATE",{audio:this,playbackRate:Z})}setReferenceDistance(Z){if(!this._requirePositional())return;if(Z<=0)return d.error("Reference distance cannot be less than or equal to 0");if(this._referenceDistance===Z)return;if(this._referenceDistance=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_REFERENCE_DISTANCE",{audio:this,referenceDistance:Z})}setVolume(Z){if(Z<0||Z>1)return d.error("Volume must be between 0 and 1");if(this._volume===Z)return;if(this._volume=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_VOLUME",{audio:this,volume:Z})}serialize(){if(!this._world)d.fatalError("Audio.serialize(): Audio is not in a world and cannot be serialized!");return P0.serializeAudio(this,this._world.tickAllocator)}_requirePositional(){if(!this.isPositional)d.error("Audio._requirePositional(): Audio is not positional. and therefor does not support the invoked method.");return this.isPositional}}class D3{_audios=new Map;_nextAudioId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}getAllAudios(Z=!1){return Z?this._world.tickAllocator.getArray(this._audios.values()):Array.from(this._audios.values())}getAllEntityAttachedAudios(Z){return this.getAllAudios().filter((J)=>J.attachedToEntity===Z)}getAllLoopedAudios(){return this.getAllAudios().filter((Z)=>Z.loop)}getAllOneshotAudios(){return this.getAllAudios().filter((Z)=>!Z.loop)}registerAudio(Z){if(Z.id!==void 0)d.fatalError(`AudioManager.registerAudio(): Provided audio instance with uri ${Z.uri} is already assigned the id ${Z.id}!`);let J=this._nextAudioId;return this._audios.set(J,Z),this._nextAudioId++,J}unregisterAudio(Z){if(Z.id===void 0)return d.error(`AudioManager.unregisterAudio(): Provided audio instance with uri ${Z.uri} is not assigned an id!`);Z.pause(),this._audios.delete(Z.id)}unregisterEntityAttachedAudios(Z){this.getAllEntityAttachedAudios(Z).forEach((J)=>{this.unregisterAudio(J)})}}var mm;((K)=>{K.ATTACH="BASE_ENTITY_CONTROLLER.ATTACH";K.DESPAWN="BASE_ENTITY_CONTROLLER.DESPAWN";K.DETACH="BASE_ENTITY_CONTROLLER.DETACH";K.SPAWN="BASE_ENTITY_CONTROLLER.SPAWN";K.TICK="BASE_ENTITY_CONTROLLER.TICK";K.TICK_WITH_PLAYER_INPUT="BASE_ENTITY_CONTROLLER.TICK_WITH_PLAYER_INPUT"})(mm||={});class _Y extends O0{attach(Z){this.emit("BASE_ENTITY_CONTROLLER.ATTACH",{entity:Z})}despawn(Z){this.emit("BASE_ENTITY_CONTROLLER.DESPAWN",{entity:Z})}detach(Z){this.emit("BASE_ENTITY_CONTROLLER.DETACH",{entity:Z})}spawn(Z){this.emit("BASE_ENTITY_CONTROLLER.SPAWN",{entity:Z})}tickWithPlayerInput(Z,J,X,Y){this.emit("BASE_ENTITY_CONTROLLER.TICK_WITH_PLAYER_INPUT",{entity:Z,input:J,cameraOrientation:X,deltaTimeMs:Y})}tick(Z,J){this.emit("BASE_ENTITY_CONTROLLER.TICK",{entity:Z,deltaTimeMs:J})}}class FK{globalCoordinate;blockType;constructor(Z,J){this.globalCoordinate=Z,this.blockType=J}static fromGlobalCoordinate(Z,J){return new FK(Z,J)}getNeighborGlobalCoordinateFromHitPoint(Z){let J={x:Z.x-(this.globalCoordinate.x+0.5),y:Z.y-(this.globalCoordinate.y+0.5),z:Z.z-(this.globalCoordinate.z+0.5)},X="x",Y=Math.abs(J.x);for(let[$,Q]of Object.entries(J))if(Math.abs(Q)>Y)X=$,Y=Math.abs(Q);return{x:this.globalCoordinate.x+(X==="x"?Math.sign(J.x):0),y:this.globalCoordinate.y+(X==="y"?Math.sign(J.y):0),z:this.globalCoordinate.z+(X==="z"?Math.sign(J.z):0)}}}var p8=r(KH(),1);var yY;((w)=>{w[w.BLOCK=1]="BLOCK";w[w.ENTITY=2]="ENTITY";w[w.ENTITY_SENSOR=4]="ENTITY_SENSOR";w[w.ENVIRONMENT_ENTITY=8]="ENVIRONMENT_ENTITY";w[w.PLAYER=16]="PLAYER";w[w.GROUP_1=32]="GROUP_1";w[w.GROUP_2=64]="GROUP_2";w[w.GROUP_3=128]="GROUP_3";w[w.GROUP_4=256]="GROUP_4";w[w.GROUP_5=512]="GROUP_5";w[w.GROUP_6=1024]="GROUP_6";w[w.GROUP_7=2048]="GROUP_7";w[w.GROUP_8=4096]="GROUP_8";w[w.GROUP_9=8192]="GROUP_9";w[w.GROUP_10=16384]="GROUP_10";w[w.GROUP_11=32768]="GROUP_11";w[w.ALL=65535]="ALL"})(yY||={});class T4{static BELONGS_TO_SHIFT=16;static COLLIDES_WITH_MASK=65535;static buildRawCollisionGroups(Z){return this.combineGroups(Z.belongsTo)<<this.BELONGS_TO_SHIFT|this.combineGroups(Z.collidesWith)}static decodeRawCollisionGroups(Z){return{belongsTo:this.bitsToGroups(Z>>>this.BELONGS_TO_SHIFT),collidesWith:this.bitsToGroups(Z&this.COLLIDES_WITH_MASK)}}static decodeCollisionGroups(Z){return{belongsTo:Z.belongsTo.map((J)=>this.groupToName(J)),collidesWith:Z.collidesWith.map((J)=>this.groupToName(J))}}static isDefaultCollisionGroups(Z){return Z.belongsTo.includes(65535)&&Z.collidesWith.includes(65535)}static combineGroups(Z){return Z.reduce((J,X)=>J|X,0)}static bitsToGroups(Z){if(Z===65535)return[65535];return Object.values(yY).filter((J)=>typeof J==="number"&&J!==65535&&(Z&J)!==0)}static groupToName(Z){let J=Object.entries(yY).find(([X,Y])=>Y===Z);if(!J)d.fatalError(`CollisionGroupsBuilder.groupToName(): Unknown collision group: ${Z}`);return J[0]}}import XE1 from"crypto";import QX from"fs";import $9 from"path";function P8(Z){if(typeof Z!=="object"||Z===null)return!1;let J=Object.getPrototypeOf(Z);return(J===null||J===Object.prototype||Object.getPrototypeOf(J)===null)&&!(Symbol.toStringTag in Z)&&!(Symbol.iterator in Z)}import{fileURLToPath as hV1}from"node:url";var DK=(Z,J)=>{let X=YD(fV1(Z));if(typeof X!=="string")throw new TypeError(`${J} must be a string or a file URL: ${X}.`);return X},fV1=(Z)=>XD(Z)?Z.toString():Z,XD=(Z)=>typeof Z!=="string"&&Z&&Object.getPrototypeOf(Z)===String.prototype,YD=(Z)=>Z instanceof URL?hV1(Z):Z;var LL=(Z,J=[],X={})=>{let Y=DK(Z,"First argument"),[$,Q]=P8(J)?[[],J]:[J,X];if(!Array.isArray($))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${$}`);if($.some((W)=>typeof W==="object"&&W!==null))throw new TypeError(`Second argument must be an array of strings: ${$}`);let K=$.map(String),G=K.find((W)=>W.includes("\x00"));if(G!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${G}`);if(!P8(Q))throw new TypeError(`Last argument must be an options object: ${Q}`);return[Y,K,Q]};import{ChildProcess as cV1}from"node:child_process";import{StringDecoder as yV1}from"node:string_decoder";var{toString:_u}=Object.prototype,Su=(Z)=>_u.call(Z)==="[object ArrayBuffer]",d8=(Z)=>_u.call(Z)==="[object Uint8Array]",MZ=(Z)=>new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength),bV1=new TextEncoder,vu=(Z)=>bV1.encode(Z),gV1=new TextDecoder,BL=(Z)=>gV1.decode(Z),Au=(Z,J)=>{return mV1(Z,J).join("")},mV1=(Z,J)=>{if(J==="utf8"&&Z.every((Q)=>typeof Q==="string"))return Z;let X=new yV1(J),Y=Z.map((Q)=>typeof Q==="string"?vu(Q):Q).map((Q)=>X.write(Q)),$=X.end();return $===""?Y:[...Y,$]},GH=(Z)=>{if(Z.length===1&&d8(Z[0]))return Z[0];return $D(uV1(Z))},uV1=(Z)=>Z.map((J)=>typeof J==="string"?vu(J):J),$D=(Z)=>{let J=new Uint8Array(dV1(Z)),X=0;for(let Y of Z)J.set(Y,X),X+=Y.length;return J},dV1=(Z)=>{let J=0;for(let X of Z)J+=X.length;return J};var yu=(Z)=>Array.isArray(Z)&&Array.isArray(Z.raw),bu=(Z,J)=>{let X=[];for(let[Q,K]of Z.entries())X=lV1({templates:Z,expressions:J,tokens:X,index:Q,template:K});if(X.length===0)throw new TypeError("Template script must not be empty");let[Y,...$]=X;return[Y,$,{}]},lV1=({templates:Z,expressions:J,tokens:X,index:Y,template:$})=>{if($===void 0)throw new TypeError(`Invalid backslash sequence: ${Z.raw[Y]}`);let{nextTokens:Q,leadingWhitespaces:K,trailingWhitespaces:G}=pV1($,Z.raw[Y]),W=hu(X,Q,K);if(Y===J.length)return W;let H=J[Y],V=Array.isArray(H)?H.map((F)=>fu(F)):[fu(H)];return hu(W,V,G)},pV1=(Z,J)=>{if(J.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let X=[],Y=0,$=xu.has(J[0]);for(let K=0,G=0;K<Z.length;K+=1,G+=1){let W=J[G];if(xu.has(W)){if(Y!==K)X.push(Z.slice(Y,K));Y=K+1}else if(W==="\\"){let H=J[G+1];if(H===`
370
+ `)}}var ym=r(fm(),1);var bm=ym.default;class O0{static globalInstance=new O0;_emitter=new bm;_finalListeners={};emit(Z,J){if(this.listenerCount(Z)===0)return!1;try{this._emitter.emit(Z,J),this._finalListeners[Z]?.(J)}catch(X){console.error(`EventRouter.emit(): Error emitting event "${Z}":`,X)}return!0}emitWithGlobal(Z,J){this.emit(Z,J),O0.globalInstance.emit(Z,J)}emitWithWorld(Z,J,X){this.emit(J,X),Z.emit(J,X)}final(Z,J){if(this._finalListeners[Z]&&J!==this._finalListeners[Z])return d.error(`EventRouter.final(): Listener for event type "${Z}" already exists. It must be removed explicitly with .off() before a different final listener can be set.`);this._finalListeners[Z]=J}hasListeners(Z){return this._emitter.listenerCount(Z)>0||Z in this._finalListeners}listeners(Z){return[...this._emitter.listeners(Z),...this._finalListeners[Z]?[this._finalListeners[Z]]:[]]}listenerCount(Z){return this._emitter.listenerCount(Z)+(this._finalListeners[Z]?1:0)}off(Z,J){if(this._emitter.removeListener(Z,J),this._finalListeners[Z]===J)delete this._finalListeners[Z]}offAll(Z){if(this._emitter.removeAllListeners(Z),Z)delete this._finalListeners[Z];else this._finalListeners={}}on(Z,J){this._emitter.addListener(Z,J)}once(Z,J){this._emitter.once(Z,J)}}class P0{static serializeAudio(Z,J){if(Z.id===void 0)d.fatalError(`Serializer.serializeAudio(): Audio ${Z.uri} is not playing!`);if(Z.attachedToEntity&&!Z.attachedToEntity.isSpawned)d.warning(`Serializer.serializeAudio(): Audio ${Z.uri} is attached to an entity that is not spawned or was recently despawned, reverting to unattached!`);let X=J.getObject();return X.i=Z.id,X.a=Z.uri,X.cd=Z.cutoffDistance,X.d=Z.duration,X.de=Z.detune,X.di=Z.distortion,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.l=Z.loop,X.o=Z.offset,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.pa=!Z.isPlaying,X.pl=Z.isPlaying,X.pr=Z.playbackRate,X.rd=Z.referenceDistance,X.s=Z.startTick,X.v=Z.volume,X}static serializeBlockType(Z,J){let X=J.getObject();return X.i=Z.id,X.l=Z.isLiquid,X.n=Z.name,X.t=Z.textureUri,X}static serializeBlockTypeRegistry(Z,J){let X=J.getArray();for(let Y of Z.getAllBlockTypes())X.push(this.serializeBlockType(Y,J));return X}static serializeChunk(Z,J){let X=J.getObject();return X.c=this.serializeVector(Z.originCoordinate,J),X.b=J.getArray(Z.blocks),X}static serializeEntity(Z,J){if(!Z.world||Z.id===void 0)d.fatalError("Serializer.serializeEntity(): Entity is not in a world");let X=J.getObject();return X.i=Z.id,X.al=J.getArray(Z.modelLoopedAnimations),X.ap=Z.modelAnimationsPlaybackRate,X.bt=Z.blockTextureUri,X.bh=Z.blockHalfExtents?this.serializeVector(Z.blockHalfExtents,J):void 0,X.h=J.getArray(Z.modelHiddenNodes),X.m=Z.modelUri,X.mt=Z.modelTextureUri,X.n=Z.name,X.o=Z.opacity,X.p=this.serializeVector(Z.position,J),X.pe=Z.parent?Z.parent.id:void 0,X.pn=Z.parentNodeName,X.r=this.serializeQuaternion(Z.rotation,J),X.s=Z.modelScale,X.sn=J.getArray(Z.modelShownNodes),X.t=Z.tintColor?this.serializeRgbColor(Z.tintColor,J):void 0,X}static serializeLight(Z,J){if(!Z.world||Z.id===void 0)d.fatalError("Serializer.serializeLight(): Light is not in a world");let X=J.getObject();return X.i=Z.id,X.a=Z.angle,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.c=this.serializeRgbColor(Z.color,J),X.d=Z.distance,X.n=Z.intensity,X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.pe=Z.penumbra,X.t=Z.type,X.te=Z.trackedEntity?.isSpawned?Z.trackedEntity.id:void 0,X.tp=Z.trackedPosition?this.serializeVector(Z.trackedPosition,J):void 0,X}static serializeParticleEmitter(Z,J){if(!Z.world||Z.id===void 0)d.fatalError("Serializer.serializeParticleEmitter(): ParticleEmitter is not in a world");let X=J.getObject();return X.i=Z.id,X.at=Z.alphaTest,X.ce=Z.colorEnd?this.serializeRgbColor(Z.colorEnd,J):void 0,X.cev=Z.colorEndVariance?this.serializeRgbColor(Z.colorEndVariance,J):void 0,X.cs=Z.colorStart?this.serializeRgbColor(Z.colorStart,J):void 0,X.csv=Z.colorStartVariance?this.serializeRgbColor(Z.colorStartVariance,J):void 0,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.en=Z.attachedToEntityNodeName,X.g=Z.gravity?this.serializeVector(Z.gravity,J):void 0,X.l=Z.lifetime,X.lv=Z.lifetimeVariance,X.mp=Z.maxParticles,X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.oe=Z.opacityEnd,X.oev=Z.opacityEndVariance,X.os=Z.opacityStart,X.osv=Z.opacityStartVariance,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.pa=Z.paused,X.pv=Z.positionVariance?this.serializeVector(Z.positionVariance,J):void 0,X.r=Z.rate,X.rv=Z.rateVariance,X.se=Z.sizeEnd,X.sev=Z.sizeEndVariance,X.ss=Z.sizeStart,X.ssv=Z.sizeStartVariance,X.t=Z.transparent,X.tu=Z.textureUri,X.v=Z.velocity?this.serializeVector(Z.velocity,J):void 0,X.vv=Z.velocityVariance?this.serializeVector(Z.velocityVariance,J):void 0,X}static serializePhysicsDebugRaycast(Z,J){let X=J.getObject();return X.o=this.serializeVector(Z.origin,J),X.d=this.serializeVector(Z.direction,J),X.l=Z.length,X.h=Z.hit,X}static serializePlayer(Z,J){let X=J.getObject();return X.i=Z.id,X.u=Z.username,X.p=Z.profilePictureUrl,X}static serializePlayerCamera(Z,J){let X=J.getObject();return X.m=Z.mode,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.et=Z.trackedEntity?.isSpawned?Z.trackedEntity.id:void 0,X.fo=Z.filmOffset,X.ffo=Z.forwardOffset,X.fv=Z.fov,X.h=J.getArray(Z.modelHiddenNodes),X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.p=Z.attachedToPosition?this.serializeVector(Z.attachedToPosition,J):void 0,X.pt=Z.trackedPosition?this.serializeVector(Z.trackedPosition,J):void 0,X.s=J.getArray(Z.modelShownNodes),X.sa=Z.shoulderAngle,X.z=Z.zoom,X}static serializeQuaternion(Z,J){let X=J.getArray4Number();return X[0]=Z.x,X[1]=Z.y,X[2]=Z.z,X[3]=Z.w,X}static serializeRgbColor(Z,J){let X=J.getArray3Number();return X[0]=Z.r,X[1]=Z.g,X[2]=Z.b,X}static serializeSceneUI(Z,J){if(Z.id===void 0)d.fatalError("Serializer.serializeSceneUI(): SceneUI is not loaded!");let X=J.getObject();return X.i=Z.id,X.e=Z.attachedToEntity?.isSpawned?Z.attachedToEntity.id:void 0,X.o=Z.offset?this.serializeVector(Z.offset,J):void 0,X.p=Z.position?this.serializeVector(Z.position,J):void 0,X.s=Z.state,X.t=Z.templateId,X.v=Z.viewDistance,X}static serializeVector(Z,J){let X=J.getArray3Number();return X[0]=Z.x,X[1]=Z.y,X[2]=Z.z,X}static serializeWorld(Z,J){let X=J.getObject();return X.i=Z.id,X.ac=this.serializeRgbColor(Z.ambientLightColor,J),X.ai=Z.ambientLightIntensity,X.dc=this.serializeRgbColor(Z.directionalLightColor,J),X.di=Z.directionalLightIntensity,X.dp=this.serializeVector(Z.directionalLightPosition,J),X.fc=Z.fogColor?this.serializeRgbColor(Z.fogColor,J):void 0,X.ff=Z.fogFar,X.fn=Z.fogNear,X.n=Z.name,X.s=Z.skyboxUri,X.si=Z.skyboxIntensity,X.t=Z.loop.timestepS,X}}var gm=5,CP;((F)=>{F.PAUSE="AUDIO.PAUSE";F.PLAY="AUDIO.PLAY";F.PLAY_RESTART="AUDIO.PLAY_RESTART";F.SET_ATTACHED_TO_ENTITY="AUDIO.SET_ATTACHED_TO_ENTITY";F.SET_CUTOFF_DISTANCE="AUDIO.SET_CUTOFF_DISTANCE";F.SET_DETUNE="AUDIO.SET_DETUNE";F.SET_DISTORTION="AUDIO.SET_DISTORTION";F.SET_POSITION="AUDIO.SET_POSITION";F.SET_PLAYBACK_RATE="AUDIO.SET_PLAYBACK_RATE";F.SET_REFERENCE_DISTANCE="AUDIO.SET_REFERENCE_DISTANCE";F.SET_VOLUME="AUDIO.SET_VOLUME"})(CP||={});class P3 extends O0{_id;_attachedToEntity;_cutoffDistance;_duration;_detune;_distortion;_loop;_offset;_position;_playbackRate;_playing;_referenceDistance;_startTick;_uri;_volume;_world;constructor(Z){super();this._attachedToEntity=Z.attachedToEntity,this._cutoffDistance=Z.cutoffDistance??(this.isPositional?(Z.referenceDistance??gm)+10:0),this._duration=Z.duration,this._detune=Z.detune??0,this._distortion=Z.distortion??0,this._loop=Z.loop??!1,this._offset=Z.offset??0,this._position=Z.position,this._playing=!1,this._playbackRate=Z.playbackRate??1,this._referenceDistance=Z.referenceDistance??(this.isPositional?gm:0),this._uri=Z.uri,this._volume=Z.volume??0.5}get id(){return this._id}get attachedToEntity(){return this._attachedToEntity}get cutoffDistance(){return this._cutoffDistance}get duration(){return this._duration}get detune(){return this._detune}get distortion(){return this._distortion}get loop(){return this._loop}get offset(){return this._offset}get isLoaded(){return this._id!==void 0}get isPlaying(){return this._playing}get isPositional(){return this._attachedToEntity!==void 0||this._position!==void 0}get position(){return this._position}get playbackRate(){return this._playbackRate}get referenceDistance(){return this._referenceDistance}get startTick(){return this._startTick}get uri(){return this._uri}get volume(){return this._volume}get world(){return this._world}play(Z,J=!1){if(this.isPlaying&&!J)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return d.error(`Audio.play(): Attached entity ${this._attachedToEntity.id} is not spawned!`);let X=J&&this._id!==void 0?"AUDIO.PLAY_RESTART":"AUDIO.PLAY";this._id??=Z.audioManager.registerAudio(this),this._playing=!0,this._startTick=Z.loop.currentTick,this._world=this._world??Z,this.emitWithWorld(Z,X,{audio:this})}pause(){if(!this.isPlaying||!this._world)return;this._playing=!1,this.emitWithWorld(this._world,"AUDIO.PAUSE",{audio:this})}setAttachedToEntity(Z){if(!this._requirePositional())return;if(!Z.isSpawned)return d.error(`Audio.setAttachedToEntity(): Entity ${Z.id} is not spawned!`);if(this._attachedToEntity===Z)return;if(this._attachedToEntity=Z,this._position=void 0,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_ATTACHED_TO_ENTITY",{audio:this,entity:Z})}setCutoffDistance(Z){if(!this._requirePositional())return;if(Z<=0||Z<this._referenceDistance)return d.error("Audio.setCutoffDistance(): Cutoff distance cannot be less than or equal to 0 or less than reference distance!");if(this._cutoffDistance===Z)return;if(this._cutoffDistance=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_CUTOFF_DISTANCE",{audio:this,cutoffDistance:Z})}setDetune(Z){if(this._detune===Z)return;if(this._detune=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_DETUNE",{audio:this,detune:Z})}setDistortion(Z){if(Z<0)return d.error("Distortion cannot be less than 0");if(this._distortion===Z)return;if(this._distortion=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_DISTORTION",{audio:this,distortion:Z})}setPosition(Z){if(!this._requirePositional())return;if(this._position===Z)return;if(this._attachedToEntity=void 0,this._position=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_POSITION",{audio:this,position:Z})}setPlaybackRate(Z){if(Z<=0)return d.error("Playback rate cannot be less than or equal to 0");if(this._playbackRate===Z)return;if(this._playbackRate=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_PLAYBACK_RATE",{audio:this,playbackRate:Z})}setReferenceDistance(Z){if(!this._requirePositional())return;if(Z<=0)return d.error("Reference distance cannot be less than or equal to 0");if(this._referenceDistance===Z)return;if(this._referenceDistance=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_REFERENCE_DISTANCE",{audio:this,referenceDistance:Z})}setVolume(Z){if(Z<0||Z>1)return d.error("Volume must be between 0 and 1");if(this._volume===Z)return;if(this._volume=Z,this.isLoaded&&this._world)this.emitWithWorld(this._world,"AUDIO.SET_VOLUME",{audio:this,volume:Z})}serialize(){if(!this._world)d.fatalError("Audio.serialize(): Audio is not in a world and cannot be serialized!");return P0.serializeAudio(this,this._world.tickAllocator)}_requirePositional(){if(!this.isPositional)d.error("Audio._requirePositional(): Audio is not positional. and therefor does not support the invoked method.");return this.isPositional}}class D3{_audios=new Map;_nextAudioId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}getAllAudios(Z=!1){return Z?this._world.tickAllocator.getArray(Array.from(this._audios.values())):Array.from(this._audios.values())}getAllEntityAttachedAudios(Z,J=!1){return J?this._world.tickAllocator.filter(this.getAllAudios(!0),(X)=>X.attachedToEntity===Z):this.getAllAudios().filter((X)=>X.attachedToEntity===Z)}getAllLoopedAudios(Z=!1){return Z?this._world.tickAllocator.filter(this.getAllAudios(!0),(J)=>J.loop):this.getAllAudios().filter((J)=>J.loop)}getAllOneshotAudios(Z=!1){return Z?this._world.tickAllocator.filter(this.getAllAudios(!0),(J)=>!J.loop):this.getAllAudios().filter((J)=>!J.loop)}registerAudio(Z){if(Z.id!==void 0)d.fatalError(`AudioManager.registerAudio(): Provided audio instance with uri ${Z.uri} is already assigned the id ${Z.id}!`);let J=this._nextAudioId;return this._audios.set(J,Z),this._nextAudioId++,J}unregisterAudio(Z){if(Z.id===void 0)return d.error(`AudioManager.unregisterAudio(): Provided audio instance with uri ${Z.uri} is not assigned an id!`);Z.pause(),this._audios.delete(Z.id)}unregisterEntityAttachedAudios(Z){this.getAllEntityAttachedAudios(Z).forEach((J)=>{this.unregisterAudio(J)})}}var mm;((K)=>{K.ATTACH="BASE_ENTITY_CONTROLLER.ATTACH";K.DESPAWN="BASE_ENTITY_CONTROLLER.DESPAWN";K.DETACH="BASE_ENTITY_CONTROLLER.DETACH";K.SPAWN="BASE_ENTITY_CONTROLLER.SPAWN";K.TICK="BASE_ENTITY_CONTROLLER.TICK";K.TICK_WITH_PLAYER_INPUT="BASE_ENTITY_CONTROLLER.TICK_WITH_PLAYER_INPUT"})(mm||={});class _Y extends O0{attach(Z){this.emit("BASE_ENTITY_CONTROLLER.ATTACH",{entity:Z})}despawn(Z){this.emit("BASE_ENTITY_CONTROLLER.DESPAWN",{entity:Z})}detach(Z){this.emit("BASE_ENTITY_CONTROLLER.DETACH",{entity:Z})}spawn(Z){this.emit("BASE_ENTITY_CONTROLLER.SPAWN",{entity:Z})}tickWithPlayerInput(Z,J,X,Y){this.emit("BASE_ENTITY_CONTROLLER.TICK_WITH_PLAYER_INPUT",{entity:Z,input:J,cameraOrientation:X,deltaTimeMs:Y})}tick(Z,J){this.emit("BASE_ENTITY_CONTROLLER.TICK",{entity:Z,deltaTimeMs:J})}}class FK{globalCoordinate;blockType;constructor(Z,J){this.globalCoordinate=Z,this.blockType=J}static fromGlobalCoordinate(Z,J){return new FK(Z,J)}getNeighborGlobalCoordinateFromHitPoint(Z){let J={x:Z.x-(this.globalCoordinate.x+0.5),y:Z.y-(this.globalCoordinate.y+0.5),z:Z.z-(this.globalCoordinate.z+0.5)},X="x",Y=Math.abs(J.x);for(let[$,Q]of Object.entries(J))if(Math.abs(Q)>Y)X=$,Y=Math.abs(Q);return{x:this.globalCoordinate.x+(X==="x"?Math.sign(J.x):0),y:this.globalCoordinate.y+(X==="y"?Math.sign(J.y):0),z:this.globalCoordinate.z+(X==="z"?Math.sign(J.z):0)}}}var p8=r(KH(),1);var yY;((w)=>{w[w.BLOCK=1]="BLOCK";w[w.ENTITY=2]="ENTITY";w[w.ENTITY_SENSOR=4]="ENTITY_SENSOR";w[w.ENVIRONMENT_ENTITY=8]="ENVIRONMENT_ENTITY";w[w.PLAYER=16]="PLAYER";w[w.GROUP_1=32]="GROUP_1";w[w.GROUP_2=64]="GROUP_2";w[w.GROUP_3=128]="GROUP_3";w[w.GROUP_4=256]="GROUP_4";w[w.GROUP_5=512]="GROUP_5";w[w.GROUP_6=1024]="GROUP_6";w[w.GROUP_7=2048]="GROUP_7";w[w.GROUP_8=4096]="GROUP_8";w[w.GROUP_9=8192]="GROUP_9";w[w.GROUP_10=16384]="GROUP_10";w[w.GROUP_11=32768]="GROUP_11";w[w.ALL=65535]="ALL"})(yY||={});class T4{static BELONGS_TO_SHIFT=16;static COLLIDES_WITH_MASK=65535;static buildRawCollisionGroups(Z){return this.combineGroups(Z.belongsTo)<<this.BELONGS_TO_SHIFT|this.combineGroups(Z.collidesWith)}static decodeRawCollisionGroups(Z){return{belongsTo:this.bitsToGroups(Z>>>this.BELONGS_TO_SHIFT),collidesWith:this.bitsToGroups(Z&this.COLLIDES_WITH_MASK)}}static decodeCollisionGroups(Z){return{belongsTo:Z.belongsTo.map((J)=>this.groupToName(J)),collidesWith:Z.collidesWith.map((J)=>this.groupToName(J))}}static isDefaultCollisionGroups(Z){return Z.belongsTo.includes(65535)&&Z.collidesWith.includes(65535)}static combineGroups(Z){return Z.reduce((J,X)=>J|X,0)}static bitsToGroups(Z){if(Z===65535)return[65535];return Object.values(yY).filter((J)=>typeof J==="number"&&J!==65535&&(Z&J)!==0)}static groupToName(Z){let J=Object.entries(yY).find(([X,Y])=>Y===Z);if(!J)d.fatalError(`CollisionGroupsBuilder.groupToName(): Unknown collision group: ${Z}`);return J[0]}}import XE1 from"crypto";import QX from"fs";import $9 from"path";function P8(Z){if(typeof Z!=="object"||Z===null)return!1;let J=Object.getPrototypeOf(Z);return(J===null||J===Object.prototype||Object.getPrototypeOf(J)===null)&&!(Symbol.toStringTag in Z)&&!(Symbol.iterator in Z)}import{fileURLToPath as hV1}from"node:url";var DK=(Z,J)=>{let X=YD(fV1(Z));if(typeof X!=="string")throw new TypeError(`${J} must be a string or a file URL: ${X}.`);return X},fV1=(Z)=>XD(Z)?Z.toString():Z,XD=(Z)=>typeof Z!=="string"&&Z&&Object.getPrototypeOf(Z)===String.prototype,YD=(Z)=>Z instanceof URL?hV1(Z):Z;var LL=(Z,J=[],X={})=>{let Y=DK(Z,"First argument"),[$,Q]=P8(J)?[[],J]:[J,X];if(!Array.isArray($))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${$}`);if($.some((W)=>typeof W==="object"&&W!==null))throw new TypeError(`Second argument must be an array of strings: ${$}`);let K=$.map(String),G=K.find((W)=>W.includes("\x00"));if(G!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${G}`);if(!P8(Q))throw new TypeError(`Last argument must be an options object: ${Q}`);return[Y,K,Q]};import{ChildProcess as cV1}from"node:child_process";import{StringDecoder as yV1}from"node:string_decoder";var{toString:_u}=Object.prototype,Su=(Z)=>_u.call(Z)==="[object ArrayBuffer]",d8=(Z)=>_u.call(Z)==="[object Uint8Array]",MZ=(Z)=>new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength),bV1=new TextEncoder,vu=(Z)=>bV1.encode(Z),gV1=new TextDecoder,BL=(Z)=>gV1.decode(Z),Au=(Z,J)=>{return mV1(Z,J).join("")},mV1=(Z,J)=>{if(J==="utf8"&&Z.every((Q)=>typeof Q==="string"))return Z;let X=new yV1(J),Y=Z.map((Q)=>typeof Q==="string"?vu(Q):Q).map((Q)=>X.write(Q)),$=X.end();return $===""?Y:[...Y,$]},GH=(Z)=>{if(Z.length===1&&d8(Z[0]))return Z[0];return $D(uV1(Z))},uV1=(Z)=>Z.map((J)=>typeof J==="string"?vu(J):J),$D=(Z)=>{let J=new Uint8Array(dV1(Z)),X=0;for(let Y of Z)J.set(Y,X),X+=Y.length;return J},dV1=(Z)=>{let J=0;for(let X of Z)J+=X.length;return J};var yu=(Z)=>Array.isArray(Z)&&Array.isArray(Z.raw),bu=(Z,J)=>{let X=[];for(let[Q,K]of Z.entries())X=lV1({templates:Z,expressions:J,tokens:X,index:Q,template:K});if(X.length===0)throw new TypeError("Template script must not be empty");let[Y,...$]=X;return[Y,$,{}]},lV1=({templates:Z,expressions:J,tokens:X,index:Y,template:$})=>{if($===void 0)throw new TypeError(`Invalid backslash sequence: ${Z.raw[Y]}`);let{nextTokens:Q,leadingWhitespaces:K,trailingWhitespaces:G}=pV1($,Z.raw[Y]),W=hu(X,Q,K);if(Y===J.length)return W;let H=J[Y],V=Array.isArray(H)?H.map((F)=>fu(F)):[fu(H)];return hu(W,V,G)},pV1=(Z,J)=>{if(J.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let X=[],Y=0,$=xu.has(J[0]);for(let K=0,G=0;K<Z.length;K+=1,G+=1){let W=J[G];if(xu.has(W)){if(Y!==K)X.push(Z.slice(Y,K));Y=K+1}else if(W==="\\"){let H=J[G+1];if(H===`
371
371
  `)K-=1,G+=1;else if(H==="u"&&J[G+2]==="{")G=J.indexOf("}",G+3);else G+=iV1[H]??1}}let Q=Y===Z.length;if(!Q)X.push(Z.slice(Y));return{nextTokens:X,leadingWhitespaces:$,trailingWhitespaces:Q}},xu=new Set([" ","\t","\r",`
372
372
  `]),iV1={x:3,u:5},hu=(Z,J,X)=>X||Z.length===0||J.length===0?[...Z,...J]:[...Z.slice(0,-1),`${Z.at(-1)}${J[0]}`,...J.slice(1)],fu=(Z)=>{let J=typeof Z;if(J==="string")return Z;if(J==="number")return String(Z);if(P8(Z)&&(("stdout"in Z)||("isMaxBuffer"in Z)))return nV1(Z);if(Z instanceof cV1||Object.prototype.toString.call(Z)==="[object Promise]")throw new TypeError("Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}.");throw new TypeError(`Unexpected "${J}" in template expression`)},nV1=({stdout:Z})=>{if(typeof Z==="string")return Z;if(d8(Z))return BL(Z);if(Z===void 0)throw new TypeError(`Missing result.stdout in template expression. This is probably due to the previous subprocess' "stdout" option.`);throw new TypeError(`Unexpected "${typeof Z}" stdout in template expression`)};import{spawnSync as ZB1}from"node:child_process";import{debuglog as aV1}from"node:util";import QD from"node:process";var E4=(Z)=>wL.includes(Z),wL=[QD.stdin,QD.stdout,QD.stderr],_9=["stdin","stdout","stderr"],jL=(Z)=>_9[Z]??`stdio[${Z}]`;var mu=(Z)=>{let J={...Z};for(let X of WD)J[X]=KD(Z,X);return J},KD=(Z,J)=>{let X=Array.from({length:sV1(Z)+1}),Y=oV1(Z[J],X,J);return Jz1(Y,J)},sV1=({stdio:Z})=>Array.isArray(Z)?Math.max(Z.length,_9.length):_9.length,oV1=(Z,J,X)=>P8(Z)?rV1(Z,J,X):J.fill(Z),rV1=(Z,J,X)=>{for(let Y of Object.keys(Z).sort(tV1))for(let $ of eV1(Y,X,J))J[$]=Z[Y];return J},tV1=(Z,J)=>gu(Z)<gu(J)?1:-1,gu=(Z)=>{if(Z==="stdout"||Z==="stderr")return 0;return Z==="all"?2:1},eV1=(Z,J,X)=>{if(Z==="ipc")return[X.length-1];let Y=GD(Z);if(Y===void 0||Y===0)throw new TypeError(`"${J}.${Z}" is invalid.
373
373
  It must be "${J}.stdout", "${J}.stderr", "${J}.all", "${J}.ipc", or "${J}.fd3", "${J}.fd4" (and so on).`);if(Y>=X.length)throw new TypeError(`"${J}.${Z}" is invalid: that file descriptor does not exist.
@@ -457,7 +457,7 @@ qYGMwU/HBVHkLAn5XvT2a9xM0mzZ558d+ahbw8qAgRxg7BZ+2PW/bf7F2WRBUk1f
457
457
  xauhAoGBALEspoxQozwohGQnP7EMF0/0JoKNpdNv0b0qCVvNiMo0+N297lI2mFQp
458
458
  6xYlW/1l9afLokklF/J2IsyBrTCZoY7SaEk/lMMrQSyra+y0z71ogZ8A4ny9fxsj
459
459
  0dDYJZGllL+3E/MQfd7k+KnOM/+A+cPoAnci76+L3vdkUb2P8SJk
460
- -----END RSA PRIVATE KEY-----`;var nv=process.env.PORT??8080,av="0.7.7",sv;(($)=>{$.READY="WEBSERVER.READY";$.STOPPED="WEBSERVER.STOPPED";$.ERROR="WEBSERVER.ERROR";$.UPGRADE="WEBSERVER.UPGRADE"})(sv||={});class FW extends O0{static instance=new FW;_webserver=NO.default();_internalHttpServer;constructor(){super();this._webserver.use((Z,J,X)=>{J.header("Access-Control-Allow-Origin","*"),X()}),this._webserver.get("/",(Z,J)=>{J.json({status:"OK",version:av,runtime:typeof Bun!=="undefined"?"bun":"node"})}),this._webserver.use(NO.default.static("assets"));try{this._webserver.use(NO.default.static(io1.dirname(m.resolve("/Users/arkdev/Desktop/HYTOPIA/hytopia/assets/release/index.js"))))}catch{}}start(){if(!this._internalHttpServer)this._internalHttpServer=process.env.NODE_ENV==="production"?lo1.createServer(this._webserver):po1.createServer({key:RO.existsSync("assets/certs/localhost.key")?RO.readFileSync("assets/certs/localhost.key"):AK0,cert:RO.existsSync("assets/certs/localhost.crt")?RO.readFileSync("assets/certs/localhost.crt"):vK0},this._webserver),this._internalHttpServer.on("upgrade",this._onUpgrade),this._internalHttpServer.on("error",this._onError),this._internalHttpServer.on("close",this._onStopped);else d.warning("WebServer.start(): server already started!");this._internalHttpServer.listen(nv,this._onStarted),console.info(`WebServer.start(): Server running on port ${nv}.`)}stop(){if(this._internalHttpServer)return new Promise((Z,J)=>{this._internalHttpServer.close((X)=>{if(X)J(X);else Z(!0)})});else return d.warning("WebServer.stop(): server not started."),Promise.resolve(!1)}_onStarted=()=>{this.emitWithGlobal("WEBSERVER.READY",{})};_onUpgrade=async(Z,J,X)=>{let Y=no1.parse(Z.url??"",!0).query,$=Y.connectionId?.toString(),Q=Y.sessionToken?.toString()??"";if($&&a7.instance.isValidConnectionId($))Z.connectionId=$;else{let K=await f7.instance.getPlayerSession(Q);if(K?.error){let G=`${K.error.code}: ${K.error.message}`;J.write(`HTTP/1.1 401 Unauthorized\r
460
+ -----END RSA PRIVATE KEY-----`;var nv=process.env.PORT??8080,av="0.7.8",sv;(($)=>{$.READY="WEBSERVER.READY";$.STOPPED="WEBSERVER.STOPPED";$.ERROR="WEBSERVER.ERROR";$.UPGRADE="WEBSERVER.UPGRADE"})(sv||={});class FW extends O0{static instance=new FW;_webserver=NO.default();_internalHttpServer;constructor(){super();this._webserver.use((Z,J,X)=>{J.header("Access-Control-Allow-Origin","*"),X()}),this._webserver.get("/",(Z,J)=>{J.json({status:"OK",version:av,runtime:typeof Bun!=="undefined"?"bun":"node"})}),this._webserver.use(NO.default.static("assets"));try{this._webserver.use(NO.default.static(io1.dirname(m.resolve("/Users/arkdev/Desktop/HYTOPIA/hytopia/assets/release/index.js"))))}catch{}}start(){if(!this._internalHttpServer)this._internalHttpServer=process.env.NODE_ENV==="production"?lo1.createServer(this._webserver):po1.createServer({key:RO.existsSync("assets/certs/localhost.key")?RO.readFileSync("assets/certs/localhost.key"):AK0,cert:RO.existsSync("assets/certs/localhost.crt")?RO.readFileSync("assets/certs/localhost.crt"):vK0},this._webserver),this._internalHttpServer.on("upgrade",this._onUpgrade),this._internalHttpServer.on("error",this._onError),this._internalHttpServer.on("close",this._onStopped);else d.warning("WebServer.start(): server already started!");this._internalHttpServer.listen(nv,this._onStarted),console.info(`WebServer.start(): Server running on port ${nv}.`)}stop(){if(this._internalHttpServer)return new Promise((Z,J)=>{this._internalHttpServer.close((X)=>{if(X)J(X);else Z(!0)})});else return d.warning("WebServer.stop(): server not started."),Promise.resolve(!1)}_onStarted=()=>{this.emitWithGlobal("WEBSERVER.READY",{})};_onUpgrade=async(Z,J,X)=>{let Y=no1.parse(Z.url??"",!0).query,$=Y.connectionId?.toString(),Q=Y.sessionToken?.toString()??"";if($&&a7.instance.isValidConnectionId($))Z.connectionId=$;else{let K=await f7.instance.getPlayerSession(Q);if(K?.error){let G=`${K.error.code}: ${K.error.message}`;J.write(`HTTP/1.1 401 Unauthorized\r
461
461
  Content-Type: text/plain\r
462
462
  Content-Length: ${G.length}\r
463
463
  Connection: close\r
@@ -490,4 +490,4 @@ ${$.stack}`:"unknown"}}}}}var we1=(Z={})=>{let J=Z.limit??Ve1;return{name:ze1,pr
490
490
  `),U=q.shift();if(!U)return Z.destroy(),X(new Error("No header received from proxy CONNECT response"));let B=U.split(" "),L=+(B[1]||0),w=B.slice(2).join(" "),O={};for(let M of q){if(!M)continue;let R=M.indexOf(":");if(R===-1)return Z.destroy(),X(new Error(`Invalid header from proxy CONNECT response: "${M}"`));let D=M.slice(0,R).toLowerCase(),N=M.slice(R+1).trimStart(),C=O[D];if(typeof C==="string")O[D]=[C,N];else if(Array.isArray(C))C.push(N);else O[D]=N}eN("got proxy server response: %o %o",U,O),K(),J({connect:{statusCode:L,statusText:w,headers:O},buffered:F})}Z.on("error",W),Z.on("end",G),Q()})}function KU(...Z){g.log("[https-proxy-agent]",...Z)}class ZP extends Vm{static __initStatic(){this.protocols=["http","https"]}constructor(Z,J){super(J);this.options={},this.proxy=typeof Z==="string"?new URL(Z):Z,this.proxyHeaders=J?.headers??{},KU("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let X=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),Y=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...J?z31(J,"headers"):null,host:X,port:Y}}async connect(Z,J){let{proxy:X}=this;if(!J.host)throw new TypeError('No "host" provided');let Y;if(X.protocol==="https:"){KU("Creating `tls.Socket`: %o",this.connectOpts);let F=this.connectOpts.servername||this.connectOpts.host;Y=zm.connect({...this.connectOpts,servername:F&&kJ.isIP(F)?void 0:F})}else KU("Creating `net.Socket`: %o",this.connectOpts),Y=kJ.connect(this.connectOpts);let $=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders},Q=kJ.isIPv6(J.host)?`[${J.host}]`:J.host,K=`CONNECT ${Q}:${J.port} HTTP/1.1\r
491
491
  `;if(X.username||X.password){let F=`${decodeURIComponent(X.username)}:${decodeURIComponent(X.password)}`;$["Proxy-Authorization"]=`Basic ${Buffer.from(F).toString("base64")}`}if($.Host=`${Q}:${J.port}`,!$["Proxy-Connection"])$["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close";for(let F of Object.keys($))K+=`${F}: ${$[F]}\r
492
492
  `;let G=V31(Y);Y.write(`${K}\r
493
- `);let{connect:W,buffered:H}=await G;if(Z.emit("proxyConnect",W),this.emit("proxyConnect",W,Z),W.statusCode===200){if(Z.once("socket",DQ6),J.secureEndpoint){KU("Upgrading socket connection to TLS");let F=J.servername||J.host;return zm.connect({...z31(J,"host","path","port"),socket:Y,servername:kJ.isIP(F)?void 0:F})}return Y}Y.destroy();let V=new kJ.Socket({writable:!1});return V.readable=!0,Z.once("socket",(F)=>{KU("Replaying proxy buffer for failed request"),F.push(H),F.push(null)}),V}}ZP.__initStatic();function DQ6(Z){Z.resume()}function z31(Z,...J){let X={},Y;for(Y in Z)if(!J.includes(Y))X[Y]=Z[Y];return X}var IQ6=32768;function _Q6(Z){return new EQ6({read(){this.push(Z),this.push(null)}})}function JP(Z){let J;try{J=new URL(Z.url)}catch(W){return $8(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),EW(Z,()=>Promise.resolve({}))}let X=J.protocol==="https:",Y=SQ6(J,Z.proxy||(X?process.env.https_proxy:void 0)||process.env.http_proxy),$=X?TQ6:CQ6,Q=Z.keepAlive===void 0?!1:Z.keepAlive,K=Y?new ZP(Y):new $.Agent({keepAlive:Q,maxSockets:30,timeout:2000}),G=vQ6(Z,Z.httpModule??$,K);return EW(Z,G)}function SQ6(Z,J){let{no_proxy:X}=process.env;if(X?.split(",").some(($)=>Z.host.endsWith($)||Z.hostname.endsWith($)))return;else return J}function vQ6(Z,J,X){let{hostname:Y,pathname:$,port:Q,protocol:K,search:G}=new URL(Z.url);return function W(H){return new Promise((V,F)=>{EF(()=>{let z=_Q6(H.body),q={...Z.headers};if(H.body.length>IQ6)q["content-encoding"]="gzip",z=z.pipe(kQ6());let U=J.request({method:"POST",agent:X,headers:q,hostname:Y,path:`${$}${G}`,port:Q,protocol:K,ca:Z.caCerts},(B)=>{B.on("data",()=>{}),B.on("end",()=>{}),B.setEncoding("utf8");let L=B.headers["retry-after"]??null,w=B.headers["x-sentry-rate-limits"]??null;V({statusCode:B.statusCode,headers:{"retry-after":L,"x-sentry-rate-limits":Array.isArray(w)?w[0]||null:w}})});U.on("error",F),z.pipe(U)})})}}var AQ6=new Set(["false","f","n","no","off","0"]),xQ6=new Set(["true","t","y","yes","on","1"]);function XP(Z,J){let X=String(Z).toLowerCase();if(AQ6.has(X))return!1;if(xQ6.has(X))return!0;return J?.strict?null:Boolean(Z)}import{posix as hQ6,sep as fQ6}from"node:path";function F31(Z){return Z.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function YP(Z=process.argv[1]?qx(process.argv[1]):process.cwd(),J=fQ6==="\\"){let X=J?F31(Z):Z;return(Y)=>{if(!Y)return;let $=J?F31(Y):Y,{dir:Q,base:K,ext:G}=hQ6.parse($);if(G===".js"||G===".mjs"||G===".cjs")K=K.slice(0,G.length*-1);let W=decodeURIComponent(K);if(!Q)Q=".";let H=Q.lastIndexOf("/node_modules");if(H>-1)return`${Q.slice(H+14).replace(/\//g,".")}:${W}`;if(Q.startsWith(X)){let V=Q.slice(X.length+1).replace(/\//g,".");return V?`${V}:${W}`:W}return W}}function $P(Z){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(j0.SENTRY_RELEASE?.id)return j0.SENTRY_RELEASE.id;let J=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,X=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,Y=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return J||X||Y||Z}var QP=AO(Cx(YP()));var U31=r(X0(),1),L31=r(K1(),1);import*as q31 from"node:os";import{threadId as yQ6,isMainThread as bQ6}from"worker_threads";var gQ6=60000;class GU extends aO{constructor(Z){let J=Z.serverName||global.process.env.SENTRY_NAME||q31.hostname(),X={...Z,platform:"node",runtime:{name:"node",version:global.process.version},serverName:J};if(Z.openTelemetryInstrumentations)L31.registerInstrumentations({instrumentations:Z.openTelemetryInstrumentations});$x(X,"node"),g.log(`Initializing Sentry: process: ${process.pid}, thread: ${bQ6?"main":`worker-${yQ6}`}.`);super(X);if(this.getOptions()._experiments?.enableLogs){if(this._logOnExitFlushListener=()=>{yX(this)},J)this.on("beforeCaptureLog",(Y)=>{Y.attributes={...Y.attributes,"server.address":J}});process.on("beforeExit",this._logOnExitFlushListener)}}get tracer(){if(this._tracer)return this._tracer;let Z="@sentry/node",J=L8,X=U31.trace.getTracer(Z,J);return this._tracer=X,X}async flush(Z){let X=this.traceProvider?.activeSpanProcessor;if(X)await X.forceFlush();if(this.getOptions().sendClientReports)this._flushOutcomes();return super.flush(Z)}close(Z){if(this._clientReportInterval)clearInterval(this._clientReportInterval);if(this._clientReportOnExitFlushListener)process.off("beforeExit",this._clientReportOnExitFlushListener);if(this._logOnExitFlushListener)process.off("beforeExit",this._logOnExitFlushListener);return super.close(Z)}startClientReportTracking(){let Z=this.getOptions();if(Z.sendClientReports)this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{m0&&g.log("Flushing client reports based on interval."),this._flushOutcomes()},Z.clientReportFlushInterval??gQ6).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener)}_getTraceInfoFromScope(Z){if(!Z)return[void 0,void 0];return h41(this,Z)}}var F7=r(X0(),1),B31=r(iy(),1),w31=r(sy(),1),O3=r(P1(),1);var j31=r($y(),1);import mQ6 from"module";var Fm=1e6;function KP(Z,J={}){if(Z.getOptions().debug)M31();let X=dQ6(Z,J);Z.traceProvider=X}function qm(){let[Z=0,J=0]=process.versions.node.split(".").map(Number);if(Z>=21||Z===20&&J>=6||Z===18&&J>=19){if(!j0._sentryEsmLoaderHookRegistered)try{let{addHookMessagePort:X}=j31.createAddHookMessageChannel();mQ6.register("import-in-the-middle/hook.mjs",import.meta.url,{data:{addHookMessagePort:X,include:[]},transferList:[X]})}catch(X){g.warn("Failed to register ESM hook",X)}}else $8(()=>{console.warn(`[Sentry] You are using Node.js v${process.versions.node} in ESM mode ("import syntax"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS ("require() syntax"), or upgrade your Node.js version.`)})}function O31(Z={}){let{debug:J}=Z;if(J)g.enable(),M31();if(!U4())qm();uQ6(Z.integrations).forEach((X)=>{if(X(),J)g.log(`[Sentry] Preloaded ${X.id} instrumentation`)})}function uQ6(Z){let J=H31();if(!Z)return J;return J.filter((X)=>Z.includes(X.id))}function dQ6(Z,J={}){let X=new w31.BasicTracerProvider({sampler:new Lb(Z),resource:new B31.Resource({[O3.ATTR_SERVICE_NAME]:"node",[O3.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[O3.ATTR_SERVICE_VERSION]:L8}),forceFlushTimeoutMillis:500,spanProcessors:[new Ub({timeout:cQ6(Z.getOptions().maxSpanWaitDuration)}),...J.spanProcessors||[]]});return F7.trace.setGlobalTracerProvider(X),F7.propagation.setGlobalPropagator(new Hb),F7.context.setGlobalContextManager(new rN),X}function cQ6(Z){if(Z==null)return;if(Z>Fm)return m0&&g.warn(`\`maxSpanWaitDuration\` is too high, using the maximum value of ${Fm}`),Fm;else if(Z<=0||Number.isNaN(Z)){m0&&g.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return Z}function M31(){let Z=new Proxy(g,{get(J,X,Y){return Reflect.get(J,X==="verbose"?"debug":X,Y)}});F7.diag.disable(),F7.diag.setLogger(Z,F7.DiagLogLevel.DEBUG)}function lQ6(){return U4()?[cR()]:[]}function Um(){return[fF(),hF(),yF(),bF(),gF(),SR(),hR(),lR(),pR(),gR(),dR(),bR(),sN(),W31(),...lQ6()]}function Lm(Z){return[...Um(),...z5(Z)?tN():[]]}function GP(Z={}){return N31(Z,Lm)}function R31(Z={}){return N31(Z,()=>[])}function N31(Z={},J){let X=pQ6(Z,J);if(X.debug===!0)if(m0)g.enable();else $8(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")});if(!U4()&&X.registerEsmLoaderHooks!==!1)qm();if(ER(),l0().update(X.initialScope),X.spotlight&&!X.integrations.some(({name:Q})=>Q===og))X.integrations.push(yN({sidecarUrl:typeof X.spotlight==="string"?X.spotlight:void 0}));let $=new GU(X);if(l0().setClient($),$.init(),g.log(`Running in ${U4()?"CommonJS":"ESM"} mode.`),$.startClientReportTracking(),aQ6(),!X.skipOpenTelemetrySetup)KP($,{spanProcessors:X.openTelemetrySpanProcessors}),Bm();return T41($),f41($),$}function Bm(){if(!m0)return;let Z=_41(),J=["SentryContextManager","SentryPropagator"];if(z5())J.push("SentrySpanProcessor");for(let X of J)if(!Z.includes(X))g.error(`You have to set up the ${X}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);if(!Z.includes("SentrySampler"))g.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}function pQ6(Z,J){let X=iQ6(Z.release),Y=Z.spotlight??XP(process.env.SENTRY_SPOTLIGHT,{strict:!0})??process.env.SENTRY_SPOTLIGHT,$=nQ6(Z.tracesSampleRate),Q={...Z,dsn:Z.dsn??process.env.SENTRY_DSN,environment:Z.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:Z.sendClientReports??!0,transport:Z.transport??JP,stackParser:UA(Z.stackParser||QP),release:X,tracesSampleRate:$,spotlight:Y,debug:XP(Z.debug??process.env.SENTRY_DEBUG)},K=Z.integrations,G=Z.defaultIntegrations??J(Q);return{...Q,integrations:nA({defaultIntegrations:G,integrations:K})}}function iQ6(Z){if(Z!==void 0)return Z;let J=$P();if(J!==void 0)return J;return}function nQ6(Z){if(Z!==void 0)return Z;let J=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!J)return;let X=parseFloat(J);return isFinite(X)?X:void 0}function aQ6(){if(XP(process.env.SENTRY_USE_ENVIRONMENT)!==!1){let Z=process.env.SENTRY_TRACE,J=process.env.SENTRY_BAGGAGE,X=QQ(Z,J);l0().setPropagationContext(X)}}var sQ6=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];function XK(Z){return sQ6.reduce((J,[X,Y])=>J.replace(new RegExp(X,"gi"),Y),Z)}var P31="Automatic instrumentation of CronJob only supports crontab string";function D31(Z,J){let X=!1;return new Proxy(Z,{construct(Y,$){let[Q,K,G,W,H,...V]=$;if(typeof Q!=="string")throw new Error(P31);if(X)throw new Error(`A job named '${J}' has already been scheduled`);X=!0;let F=XK(Q);async function z(q,U){return o7(J,async()=>{try{await K(q,U)}catch(B){throw F1(B),B}},{schedule:{type:"crontab",value:F},timezone:H||void 0})}return new Y(Q,z,G,W,H,...V)},get(Y,$){if($==="from")return(Q)=>{let{cronTime:K,onTick:G,timeZone:W}=Q;if(typeof K!=="string")throw new Error(P31);if(X)throw new Error(`A job named '${J}' has already been scheduled`);X=!0;let H=XK(K);return Q.onTick=async(V,F)=>{return o7(J,async()=>{try{await G(V,F)}catch(z){throw F1(z),z}},{schedule:{type:"crontab",value:H},timezone:W||void 0})},Y.from(Q)};else return Y[$]}})}function C31(Z){return new Proxy(Z,{get(J,X){if(X==="schedule"&&J.schedule)return new Proxy(J.schedule,{apply(Y,$,Q){let[K,G,W]=Q,H=W?.name,V=W?.timezone;if(!H)throw new Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let F=async()=>{return o7(H,async()=>{try{return await G()}catch(z){throw F1(z),z}},{schedule:{type:"crontab",value:XK(K)},timezone:V})};return Y.apply($,[K,F,W])}});else return J[X]}})}function T31(Z){return new Proxy(Z,{get(J,X){if(X==="scheduleJob")return new Proxy(J.scheduleJob,{apply(Y,$,Q){let[K,G,W]=Q;if(typeof K!=="string"||typeof G!=="string"||typeof W!=="function")throw new Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");let H=K,V=G;async function F(){return o7(H,async()=>{await W?.()},{schedule:{type:"crontab",value:XK(V)}})}return Y.apply($,[H,V,F])}});return J[X]}})}var E31={instrumentCron:D31,instrumentNodeCron:C31,instrumentNodeSchedule:T31};var YK;((L)=>{L.BUILD_PACKETS="build_packets";L.ENTITIES_EMIT_UPDATES="entities_emit_updates";L.ENTITIES_TICK="entities_tick";L.NETWORK_SYNCHRONIZE="network_synchronize";L.NETWORK_SYNCHRONIZE_CLEANUP="network_synchronize_cleanup";L.PHYSICS_CLEANUP="physics_cleanup";L.PHYSICS_STEP="physics_step";L.RELEASE_TICK_ALLOCATION="release_tick_allocation";L.SEND_ALL_PACKETS="send_all_packets";L.SEND_PACKETS="send_packets";L.SERIALIZE_FREE_BUFFERS="serialize_free_buffers";L.SERIALIZE_PACKETS="serialize_packets";L.SERIALIZE_PACKETS_ENCODE="serialize_packets_encode";L.SIMULATION_STEP="simulation_step";L.TICKER_TICK="ticker_tick";L.WORLD_TICK="world_tick"})(YK||={});class r1{static getProcessStats(Z=!1){let J=process.memoryUsage(),X={jsHeapSizeMb:{value:J.heapUsed/1024/1024,unit:"megabyte"},jsHeapCapacityMb:{value:J.heapTotal/1024/1024,unit:"megabyte"},jsHeapUsagePercent:{value:J.heapUsed/J.heapTotal,unit:"percent"},processHeapSizeMb:{value:J.heapUsed/1024/1024,unit:"megabyte"},rssSizeMb:{value:J.rss/1024/1024,unit:"megabyte"}};if(Z)return X;return Object.fromEntries(Object.entries(X).map(([Y,$])=>[Y,$.value]))}static initializeSentry(Z,J=50){GP({dsn:Z,release:av,environment:process.env.NODE_ENV||"development",tracesSampleRate:1,initialScope:{tags:{gameId:process.env.HYTOPIA_GAME_ID??"unknown",gameSlug:process.env.HYTOPIA_GAME_SLUG??"unknown",lobbyId:process.env.HYTOPIA_LOBBY_ID??"unknown",region:process.env.REGION??"unknown"}},beforeSend:(X)=>{return X.extra=r1.getProcessStats(),X},beforeSendTransaction:(X)=>{if(X.contexts?.trace?.op==="ticker_tick"){let $=X?.start_timestamp,Q=X?.timestamp;if(!$||!Q)return null;if((Q-$)*1000>J)return X.measurements=r1.getProcessStats(!0),X}return null}})}static startSpan(Z,J){if(vF())return e9({attributes:Z.attributes,name:Z.operation,op:Z.operation},J);else return J()}static sentry(){return wm}}var k31=new f$,oQ6=5000;class i4 extends O0{static _cachedPacketsSerializedBuffer=new Map;_closeTimeout=null;_wrtcDirectTransport=null;_wrtcClientServerTransport=null;_wrtcClientServerDataProducers=[];_wrtcClientServerDataConsumers=[];_wrtcServerClientTransport=null;_wrtcServerClientReliableDataProducer=null;_wrtcServerClientUnreliableDataProducer=null;_wrtcServerClientDataConsumers=[];_ws;id;constructor(Z,J){super();this.id=w40(),this.onPacket(Y0.PacketId.CONNECTION,this._onConnectionPacket),this.onPacket(Y0.PacketId.HEARTBEAT,this._onHeartbeatPacket),this.bindWs(Z),O0.globalInstance.emit("CONNECTION.OPENED",{connection:this,req:J})}static clearCachedPacketsSerializedBuffers(){if(i4._cachedPacketsSerializedBuffer.size>0)i4._cachedPacketsSerializedBuffer.clear()}static serializePackets(Z){for(let X of Z)if(!Y0.isValidPacket(X))return d.error(`Connection.serializePackets(): Invalid packet payload: ${JSON.stringify(X)}`);let J=i4._cachedPacketsSerializedBuffer.get(Z);if(J)return J;return r1.startSpan({operation:"serialize_packets",attributes:{packets:Z.length,packetIds:Z.map((X)=>X[0]).join(",")}},(X)=>{let Y=r1.startSpan({operation:"serialize_packets_encode"},()=>k31.pack(Z));return X?.setAttribute("serializedBytes",Y.byteLength),i4._cachedPacketsSerializedBuffer.set(Z,Y),Y})}bindWs(Z){let J=!!this._ws;if(J&&this._closeTimeout)clearTimeout(this._closeTimeout),this._closeTimeout=null;if(this._ws)this._ws.onmessage=()=>{},this._ws.onclose=()=>{},this._ws.onerror=()=>{},this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{k:!0})]);if(this._ws=Z,this._ws.binaryType="nodebuffer",this._ws.onmessage=(X)=>this._onMessage(X.data),this._ws.onclose=this._onWsClose,this._ws.onerror=this._onWsError,this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{i:this.id})],!0,!0),J)this.emitWithGlobal("CONNECTION.RECONNECTED",{connection:this});if(a7.instance.isWrtcEnabled)this._upgradeToWRTC()}closeWrtc(){this._closeWrtcClientServerTransport(),this._closeWrtcServerClientTransport()}disconnect(){try{this._ws.close()}catch(Z){d.error(`Connection.disconnect(): Connection disconnect failed. Error: ${Z}`)}}onPacket(Z,J){this.on("CONNECTION.PACKET_RECEIVED",({packet:X})=>{if(X[0]===Z)J(X)})}send(Z,J=!0,X=!1){if(this._closeTimeout)return;if(this._ws.readyState!==U_.default.OPEN)return;r1.startSpan({operation:"send_packets",attributes:{forceWs:X?"true":"false",wrtcConnected:this._wrtcServerClientTransport?.iceState==="completed"?"true":"false"}},()=>{try{let Y=i4.serializePackets(Z);if(!Y)return;if(this._wrtcServerClientTransport?.iceState==="completed"&&Y.length<(this._wrtcServerClientTransport?.sctpParameters?.maxMessageSize??0)&&!X)try{(J?this._wrtcServerClientReliableDataProducer:this._wrtcServerClientUnreliableDataProducer).send(Y)}catch{this._ws.send(Y)}else this._ws.send(Y);this.emitWithGlobal("CONNECTION.PACKETS_SENT",{connection:this,packets:Z})}catch(Y){d.error(`Connection.send(): Packet send failed. Error: ${Y}`)}})}_closeWrtcClientServerTransport(){this._wrtcDirectTransport?.close(),this._wrtcDirectTransport=null,this._wrtcClientServerTransport?.close(),this._wrtcClientServerTransport=null,this._wrtcClientServerDataProducers.forEach((Z)=>Z.close()),this._wrtcClientServerDataProducers=[],this._wrtcClientServerDataConsumers.forEach((Z)=>Z.close()),this._wrtcClientServerDataConsumers=[]}_closeWrtcServerClientTransport(){this._wrtcServerClientTransport?.close(),this._wrtcServerClientTransport=null,this._wrtcServerClientDataConsumers.forEach((Z)=>Z.close()),this._wrtcServerClientDataConsumers=[],this._wrtcServerClientReliableDataProducer?.close(),this._wrtcServerClientReliableDataProducer=null,this._wrtcServerClientUnreliableDataProducer?.close(),this._wrtcServerClientUnreliableDataProducer=null}_onConnectionPacket=async(Z)=>{let J=Z[1],X=J.c,Y=J.d;if(X){let{i:$,d:Q}=X,K=!1;if($==this._wrtcClientServerTransport?.id)await this._wrtcClientServerTransport.connect({dtlsParameters:Q}),K=!0;if($==this._wrtcServerClientTransport?.id)await this._wrtcServerClientTransport.connect({dtlsParameters:Q}),K=!0;if(K)this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{ca:{i:$}})])}if(Y)for(let $ of Y){let{s:Q,l:K}=$,G=await this._wrtcClientServerTransport.produceData({label:K,sctpStreamParameters:Q}),W=await this._wrtcDirectTransport.consumeData({dataProducerId:G.id});this._wrtcClientServerDataProducers.push(G),this._wrtcClientServerDataConsumers.push(W),W.on("message",(H)=>this._onMessage(H)),this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{pa:{i:G.id,l:K}})])}};_onHeartbeatPacket=()=>{this.send([Y0.createPacket(Y0.bidirectionalPackets.heartbeatPacketDefinition,null)],!0,!0)};_onMessage=(Z)=>{try{let J=this._deserialize(Z);if(!J)return;this.emitWithGlobal("CONNECTION.PACKET_RECEIVED",{connection:this,packet:J})}catch(J){d.error(`Connection._ws.onmessage(): Error: ${J}`)}};_onWrtcIceStateChange=(Z,J)=>{if(["disconnected","closed"].includes(J)){if(Z==this._wrtcClientServerTransport)this._closeWrtcClientServerTransport();else if(Z==this._wrtcServerClientTransport)this._closeWrtcServerClientTransport()}};_onWsClose=()=>{this.closeWrtc(),this.emitWithGlobal("CONNECTION.DISCONNECTED",{connection:this}),this._closeTimeout=setTimeout(()=>{this.emitWithGlobal("CONNECTION.CLOSED",{connection:this}),this.offAll()},oQ6)};_onWsError=(Z)=>{this.emitWithGlobal("CONNECTION.ERROR",{connection:this,error:Z})};_upgradeToWRTC=async()=>{let Z=await a7.instance.createWrtcTransports();if(!Z)return!1;let{directTransport:J,clientServerTransport:X,serverClientTransport:Y}=Z;this._wrtcDirectTransport=J,this._wrtcClientServerTransport=X,this._wrtcClientServerTransport.on("icestatechange",(K)=>{this._onWrtcIceStateChange(this._wrtcClientServerTransport,K)}),this._wrtcServerClientTransport=Y,this._wrtcServerClientTransport.on("icestatechange",(K)=>{this._onWrtcIceStateChange(this._wrtcServerClientTransport,K)}),this._wrtcServerClientReliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scr",sctpStreamParameters:{streamId:0,ordered:!0}}),this._wrtcServerClientUnreliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scu",sctpStreamParameters:{streamId:1,ordered:!1,maxPacketLifeTime:35}});let $=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientReliableDataProducer.id}),Q=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientUnreliableDataProducer.id});return this._wrtcServerClientDataConsumers.push($,Q),this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{d:[{i:$.id,pi:$.dataProducerId,l:"scr",s:$.sctpStreamParameters},{i:Q.id,pi:Q.dataProducerId,l:"scu",s:Q.sctpStreamParameters}],t:[{i:this._wrtcClientServerTransport.id,f:"cs",d:this._wrtcClientServerTransport.dtlsParameters,ic:this._wrtcClientServerTransport.iceCandidates,ip:this._wrtcClientServerTransport.iceParameters,s:this._wrtcClientServerTransport.sctpParameters},{i:this._wrtcServerClientTransport.id,f:"sc",d:this._wrtcServerClientTransport.dtlsParameters,ic:this._wrtcServerClientTransport.iceCandidates,ip:this._wrtcServerClientTransport.iceParameters,s:this._wrtcServerClientTransport.sctpParameters}]})]),!0};_deserialize(Z){let J=k31.unpack(Z);if(!J||typeof J!=="object"||typeof J[0]!=="number")return d.error(`Connection._deserialize(): Invalid packet format. Packet: ${JSON.stringify(J)}`);if(!Y0.isValidPacket(J))return d.error(`Connection._deserialize(): Invalid packet payload. Packet: ${JSON.stringify(J)}`);return J}}class WU{_lights=new Map;_nextLightId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}despawnEntityAttachedLights(Z){this.getAllEntityAttachedLights(Z).forEach((J)=>{J.despawn()})}getAllLights(Z=!1){return Z?this._world.tickAllocator.getArray(this._lights.values()):Array.from(this._lights.values())}getAllEntityAttachedLights(Z){return this.getAllLights().filter((J)=>J.attachedToEntity===Z)}registerLight(Z){if(Z.id!==void 0)return Z.id;let J=this._nextLightId;return this._lights.set(J,Z),this._nextLightId++,J}unregisterLight(Z){if(Z.id===void 0)return;this._lights.delete(Z.id)}}class z6{_map=new Map;_values=[];_isDirty=!1;get size(){return this._map.size}get valuesArray(){if(this._isDirty)this._syncArray();return this._values}get(Z){return this._map.get(Z)}set(Z,J){let X=this._map.has(Z);if(this._map.set(Z,J),!X)this._values.push(J);else this._isDirty=!0;return this}has(Z){return this._map.has(Z)}delete(Z){let J=this._map.delete(Z);if(J)this._isDirty=!0;return J}clear(){this._map.clear(),this._values.length=0,this._isDirty=!1}forEach(Z,J){this._map.forEach((X,Y)=>{Z.call(J,X,Y,this)})}keys(){return this._map.keys()}values(){return this._map.values()}entries(){return this._map.entries()}[Symbol.iterator](){return this._map[Symbol.iterator]()}_syncArray(){this._values.length=0;for(let Z of this._map.values())this._values.push(Z);this._isDirty=!1}}var I31;((X)=>{X[X.POINTLIGHT=0]="POINTLIGHT";X[X.SPOTLIGHT=1]="SPOTLIGHT"})(I31||={});var jm;((z)=>{z.DESPAWN="LIGHT.DESPAWN";z.SET_ANGLE="LIGHT.SET_ANGLE";z.SET_ATTACHED_TO_ENTITY="LIGHT.SET_ATTACHED_TO_ENTITY";z.SET_COLOR="LIGHT.SET_COLOR";z.SET_DISTANCE="LIGHT.SET_DISTANCE";z.SET_INTENSITY="LIGHT.SET_INTENSITY";z.SET_OFFSET="LIGHT.SET_OFFSET";z.SET_PENUMBRA="LIGHT.SET_PENUMBRA";z.SET_POSITION="LIGHT.SET_POSITION";z.SET_TRACKED_ENTITY="LIGHT.SET_TRACKED_ENTITY";z.SET_TRACKED_POSITION="LIGHT.SET_TRACKED_POSITION";z.SPAWN="LIGHT.SPAWN"})(jm||={});class Om extends O0{_id;_angle;_attachedToEntity;_color;_distance;_intensity;_offset;_penumbra;_position;_trackedEntity;_trackedPosition;_type;_world;constructor(Z){if(!!Z.attachedToEntity===!!Z.position)d.fatalError("Either attachedToEntity or position must be set, but not both.");super();d.warning("WARNING: Lights are poorly optimized at this time. Using more than a few lights in your game can cause extremely bad performance (FPS) issues. Use lights sparingly!"),this._angle=Z.angle,this._attachedToEntity=Z.attachedToEntity,this._color=Z.color??{r:255,g:255,b:255},this._distance=Z.distance,this._intensity=Z.intensity??1,this._offset=Z.offset,this._penumbra=Z.penumbra,this._position=Z.position,this._trackedEntity=Z.trackedEntity,this._trackedPosition=Z.trackedPosition,this._type=Z.type??0}get id(){return this._id}get angle(){return this._angle}get attachedToEntity(){return this._attachedToEntity}get color(){return this._color}get distance(){return this._distance}get intensity(){return this._intensity}get isSpawned(){return this._id!==void 0}get offset(){return this._offset}get penumbra(){return this._penumbra}get position(){return this._position}get trackedEntity(){return this._trackedEntity}get trackedPosition(){return this._trackedPosition}get type(){return this._type}get world(){return this._world}setAngle(Z){if(this._angle===Z)return;if(this._angle=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ANGLE",{light:this,angle:Z})}setAttachedToEntity(Z){if(!Z.isSpawned)return d.error(`Light.setAttachedToEntity(): Entity ${Z.id} is not spawned!`);if(this._attachedToEntity===Z)return;if(this._attachedToEntity=Z,this._position=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ATTACHED_TO_ENTITY",{light:this,entity:Z})}setColor(Z){if(this._color.r===Z.r&&this._color.g===Z.g&&this._color.b===Z.b)return;if(this._color=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_COLOR",{light:this,color:Z})}setDistance(Z){if(this._distance===Z)return;if(this._distance=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_DISTANCE",{light:this,distance:Z})}setIntensity(Z){if(this._intensity===Z)return;if(this._intensity=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_INTENSITY",{light:this,intensity:Z})}setOffset(Z){if(this._offset&&this._offset.x===Z.x&&this._offset.y===Z.y&&this._offset.z===Z.z)return;if(this._offset=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_OFFSET",{light:this,offset:Z})}setPenumbra(Z){if(this._penumbra===Z)return;if(this._penumbra=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_PENUMBRA",{light:this,penumbra:Z})}setPosition(Z){if(this._position&&this._position.x===Z.x&&this._position.y===Z.y&&this._position.z===Z.z)return;if(this._position=Z,this._attachedToEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_POSITION",{light:this,position:Z})}setTrackedEntity(Z){if(!Z.isSpawned)return d.error(`Light.setTrackedEntity(): Entity ${Z.id} is not spawned!`);if(this._trackedEntity===Z)return;if(this._trackedEntity=Z,this._trackedPosition=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_ENTITY",{light:this,entity:Z})}setTrackedPosition(Z){if(this._trackedPosition===Z)return;if(this._trackedPosition=Z,this._trackedEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_POSITION",{light:this,position:Z})}despawn(){if(!this.isSpawned||!this._world)return;this._world.lightManager.unregisterLight(this),this.emitWithWorld(this._world,"LIGHT.DESPAWN",{light:this}),this._id=void 0,this._world=void 0}spawn(Z){if(this.isSpawned)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return d.error(`Light.spawn(): Attached entity ${this._attachedToEntity.id} must be spawned before spawning Light!`);this._id=Z.lightManager.registerLight(this),this._world=Z,this.emitWithWorld(Z,"LIGHT.SPAWN",{light:this})}serialize(){if(!this._world)d.fatalError("Light.serialize(): Light is not in a world and cannot be serialized!");return P0.serializeLight(this,this._world.tickAllocator)}}var Mm;((A)=>{A.DESPAWN="PARTICLE_EMITTER.DESPAWN";A.SET_ALPHA_TEST="PARTICLE_EMITTER.SET_ALPHA_TEST";A.SET_ATTACHED_TO_ENTITY="PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY";A.SET_ATTACHED_TO_ENTITY_NODE_NAME="PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY_NODE_NAME";A.SET_COLOR_END="PARTICLE_EMITTER.SET_COLOR_END";A.SET_COLOR_END_VARIANCE="PARTICLE_EMITTER.SET_COLOR_END_VARIANCE";A.SET_COLOR_START="PARTICLE_EMITTER.SET_COLOR_START";A.SET_COLOR_START_VARIANCE="PARTICLE_EMITTER.SET_COLOR_START_VARIANCE";A.SET_GRAVITY="PARTICLE_EMITTER.SET_GRAVITY";A.SET_LIFETIME="PARTICLE_EMITTER.SET_LIFETIME";A.SET_LIFETIME_VARIANCE="PARTICLE_EMITTER.SET_LIFETIME_VARIANCE";A.SET_MAX_PARTICLES="PARTICLE_EMITTER.SET_MAX_PARTICLES";A.SET_OFFSET="PARTICLE_EMITTER.SET_OFFSET";A.SET_OPACITY_END="PARTICLE_EMITTER.SET_OPACITY_END";A.SET_OPACITY_END_VARIANCE="PARTICLE_EMITTER.SET_OPACITY_END_VARIANCE";A.SET_OPACITY_START="PARTICLE_EMITTER.SET_OPACITY_START";A.SET_OPACITY_START_VARIANCE="PARTICLE_EMITTER.SET_OPACITY_START_VARIANCE";A.SET_PAUSED="PARTICLE_EMITTER.SET_PAUSED";A.SET_POSITION="PARTICLE_EMITTER.SET_POSITION";A.SET_POSITION_VARIANCE="PARTICLE_EMITTER.SET_POSITION_VARIANCE";A.SET_RATE="PARTICLE_EMITTER.SET_RATE";A.SET_RATE_VARIANCE="PARTICLE_EMITTER.SET_RATE_VARIANCE";A.SET_SIZE_END="PARTICLE_EMITTER.SET_SIZE_END";A.SET_SIZE_END_VARIANCE="PARTICLE_EMITTER.SET_SIZE_END_VARIANCE";A.SET_SIZE_START="PARTICLE_EMITTER.SET_SIZE_START";A.SET_SIZE_START_VARIANCE="PARTICLE_EMITTER.SET_SIZE_START_VARIANCE";A.SET_TEXTURE_URI="PARTICLE_EMITTER.SET_TEXTURE_URI";A.SET_TRANSPARENT="PARTICLE_EMITTER.SET_TRANSPARENT";A.SET_VELOCITY="PARTICLE_EMITTER.SET_VELOCITY";A.SET_VELOCITY_VARIANCE="PARTICLE_EMITTER.SET_VELOCITY_VARIANCE";A.SPAWN="PARTICLE_EMITTER.SPAWN"})(Mm||={});class Rm extends O0{_id;_alphaTest;_attachedToEntity;_attachedToEntityNodeName;_colorEnd;_colorEndVariance;_colorStart;_colorStartVariance;_gravity;_lifetime;_lifetimeVariance;_maxParticles;_offset;_opacityEnd;_opacityEndVariance;_opacityStart;_opacityStartVariance;_paused;_position;_positionVariance;_rate;_rateVariance;_sizeEnd;_sizeEndVariance;_sizeStart;_sizeStartVariance;_sizeVariance;_textureUri;_transparent;_velocity;_velocityVariance;_world;constructor(Z){if(!!Z.attachedToEntity===!!Z.position)d.fatalError("Either attachedToEntity or position must be set, but not both.");if(!Z.textureUri)d.fatalError("ParticleEmitter.constructor(): textureUri must be provided.");super();this._alphaTest=Z.alphaTest??0.5,this._attachedToEntity=Z.attachedToEntity,this._attachedToEntityNodeName=Z.attachedToEntityNodeName,this._colorEnd=Z.colorEnd,this._colorEndVariance=Z.colorEndVariance,this._colorStart=Z.colorStart,this._colorStartVariance=Z.colorStartVariance,this._gravity=Z.gravity,this._lifetime=Z.lifetime,this._lifetimeVariance=Z.lifetimeVariance,this._maxParticles=Z.maxParticles,this._offset=Z.offset,this._opacityEnd=Z.opacityEnd,this._opacityEndVariance=Z.opacityEndVariance,this._opacityStart=Z.opacityStart,this._opacityStartVariance=Z.opacityStartVariance,this._paused=!1,this._position=Z.position,this._positionVariance=Z.positionVariance,this._rate=Z.rate,this._rateVariance=Z.rateVariance,this._sizeEnd=Z.sizeEnd,this._sizeEndVariance=Z.sizeEndVariance,this._sizeStart=Z.sizeStart,this._sizeStartVariance=Z.sizeStartVariance,this._textureUri=Z.textureUri,this._transparent=Z.transparent,this._velocity=Z.velocity,this._velocityVariance=Z.velocityVariance}get id(){return this._id}get alphaTest(){return this._alphaTest}get attachedToEntity(){return this._attachedToEntity}get attachedToEntityNodeName(){return this._attachedToEntityNodeName}get colorEnd(){return this._colorEnd}get colorEndVariance(){return this._colorEndVariance}get colorStart(){return this._colorStart}get colorStartVariance(){return this._colorStartVariance}get gravity(){return this._gravity}get isSpawned(){return this._id!==void 0}get lifetime(){return this._lifetime}get lifetimeVariance(){return this._lifetimeVariance}get maxParticles(){return this._maxParticles}get offset(){return this._offset}get opacityEnd(){return this._opacityEnd}get opacityEndVariance(){return this._opacityEndVariance}get opacityStart(){return this._opacityStart}get opacityStartVariance(){return this._opacityStartVariance}get paused(){return this._paused}get position(){return this._position}get positionVariance(){return this._positionVariance}get rate(){return this._rate}get rateVariance(){return this._rateVariance}get sizeEnd(){return this._sizeEnd}get sizeEndVariance(){return this._sizeEndVariance}get sizeStart(){return this._sizeStart}get sizeStartVariance(){return this._sizeStartVariance}get sizeVariance(){return this._sizeVariance}get textureUri(){return this._textureUri}get transparent(){return this._transparent}get velocity(){return this._velocity}get velocityVariance(){return this._velocityVariance}get world(){return this._world}setAlphaTest(Z){if(this._alphaTest===Z)return;if(this._alphaTest=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_ALPHA_TEST",{particleEmitter:this,alphaTest:Z})}setAttachedToEntity(Z){if(!Z.isSpawned)return d.error(`ParticleEmitter.setAttachedToEntity(): Entity ${Z.id} is not spawned!`);if(this._attachedToEntity===Z)return;if(this._attachedToEntity=Z,this._position=void 0,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY",{particleEmitter:this,entity:Z})}setAttachedToEntityNodeName(Z){if(this._attachedToEntityNodeName===Z)return;if(this._attachedToEntityNodeName=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY_NODE_NAME",{particleEmitter:this,attachedToEntityNodeName:Z})}setColorEnd(Z){if(this._colorEnd&&this._colorEnd.r===Z.r&&this._colorEnd.g===Z.g&&this._colorEnd.b===Z.b)return;if(this._colorEnd=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_END",{particleEmitter:this,colorEnd:Z})}setColorEndVariance(Z){if(this._colorEndVariance&&this._colorEndVariance.r===Z.r&&this._colorEndVariance.g===Z.g&&this._colorEndVariance.b===Z.b)return;if(this._colorEndVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_END_VARIANCE",{particleEmitter:this,colorEndVariance:Z})}setColorStart(Z){if(this._colorStart&&this._colorStart.r===Z.r&&this._colorStart.g===Z.g&&this._colorStart.b===Z.b)return;if(this._colorStart=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_START",{particleEmitter:this,colorStart:Z})}setColorStartVariance(Z){if(this._colorStartVariance&&this._colorStartVariance.r===Z.r&&this._colorStartVariance.g===Z.g&&this._colorStartVariance.b===Z.b)return;if(this._colorStartVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_START_VARIANCE",{particleEmitter:this,colorStartVariance:Z})}setGravity(Z){if(this._gravity&&this._gravity.x===Z.x&&this._gravity.y===Z.y&&this._gravity.z===Z.z)return;if(this._gravity=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_GRAVITY",{particleEmitter:this,gravity:Z})}setLifetime(Z){if(this._lifetime===Z)return;if(this._lifetime=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_LIFETIME",{particleEmitter:this,lifetime:Z})}setLifetimeVariance(Z){if(this._lifetimeVariance===Z)return;if(this._lifetimeVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_LIFETIME_VARIANCE",{particleEmitter:this,lifetimeVariance:Z})}setMaxParticles(Z){if(this._maxParticles===Z)return;if(this._maxParticles=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_MAX_PARTICLES",{particleEmitter:this,maxParticles:Z})}setOffset(Z){if(this._offset&&this._offset.x===Z.x&&this._offset.y===Z.y&&this._offset.z===Z.z)return;if(this._offset=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OFFSET",{particleEmitter:this,offset:Z})}setOpacityEnd(Z){if(this._opacityEnd===Z)return;if(this._opacityEnd=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_END",{particleEmitter:this,opacityEnd:Z})}setOpacityEndVariance(Z){if(this._opacityEndVariance===Z)return;if(this._opacityEndVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_END_VARIANCE",{particleEmitter:this,opacityEndVariance:Z})}setOpacityStart(Z){if(this._opacityStart===Z)return;if(this._opacityStart=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_START",{particleEmitter:this,opacityStart:Z})}setOpacityStartVariance(Z){if(this._opacityStartVariance===Z)return;if(this._opacityStartVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_START_VARIANCE",{particleEmitter:this,opacityStartVariance:Z})}setPosition(Z){if(this._position&&this._position.x===Z.x&&this._position.y===Z.y&&this._position.z===Z.z)return;if(this._position=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_POSITION",{particleEmitter:this,position:Z})}setPositionVariance(Z){if(this._positionVariance&&this._positionVariance.x===Z.x&&this._positionVariance.y===Z.y&&this._positionVariance.z===Z.z)return;if(this._positionVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_POSITION_VARIANCE",{particleEmitter:this,positionVariance:Z})}setRate(Z){if(this._rate===Z)return;if(this._rate=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_RATE",{particleEmitter:this,rate:Z})}setRateVariance(Z){if(this._rateVariance===Z)return;if(this._rateVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_RATE_VARIANCE",{particleEmitter:this,rateVariance:Z})}setSizeEnd(Z){if(this._sizeEnd===Z)return;if(this._sizeEnd=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_END",{particleEmitter:this,sizeEnd:Z})}setSizeEndVariance(Z){if(this._sizeEndVariance===Z)return;if(this._sizeEndVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_END_VARIANCE",{particleEmitter:this,sizeEndVariance:Z})}setSizeStart(Z){if(this._sizeStart===Z)return;if(this._sizeStart=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_START",{particleEmitter:this,sizeStart:Z})}setSizeStartVariance(Z){if(this._sizeStartVariance===Z)return;if(this._sizeStartVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_START_VARIANCE",{particleEmitter:this,sizeStartVariance:Z})}setTextureUri(Z){if(this._textureUri===Z)return;if(this._textureUri=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_TEXTURE_URI",{particleEmitter:this,textureUri:Z})}setTransparent(Z){if(this._transparent===Z)return;if(this._transparent=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_TRANSPARENT",{particleEmitter:this,transparent:Z})}setVelocity(Z){if(this._velocity&&this._velocity.x===Z.x&&this._velocity.y===Z.y&&this._velocity.z===Z.z)return;if(this._velocity=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_VELOCITY",{particleEmitter:this,velocity:Z})}setVelocityVariance(Z){if(this._velocityVariance&&this._velocityVariance.x===Z.x&&this._velocityVariance.y===Z.y&&this._velocityVariance.z===Z.z)return;if(this._velocityVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_VELOCITY_VARIANCE",{particleEmitter:this,velocityVariance:Z})}despawn(){if(!this.isSpawned||!this._world)return;this._world.particleEmitterManager.unregisterParticleEmitter(this),this.emitWithWorld(this._world,"PARTICLE_EMITTER.DESPAWN",{particleEmitter:this}),this._id=void 0,this._world=void 0}restart(){if(!this._paused)return;if(this._paused=!1,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_PAUSED",{particleEmitter:this,paused:this._paused})}stop(){if(this._paused)return;if(this._paused=!0,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_PAUSED",{particleEmitter:this,paused:this._paused})}spawn(Z){if(this.isSpawned)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return d.error(`ParticleEmitter.spawn(): Attached entity ${this._attachedToEntity.id} must be spawned before spawning ParticleEmitter!`);this._id=Z.particleEmitterManager.registerParticleEmitter(this),this._world=Z,this.emitWithWorld(Z,"PARTICLE_EMITTER.SPAWN",{particleEmitter:this})}serialize(){if(!this._world)d.fatalError("ParticleEmitter.serialize(): ParticleEmitter is not in a world and cannot be serialized!");return P0.serializeParticleEmitter(this,this._world.tickAllocator)}}var HU=r(KH(),1);var rQ6={x:0,y:-32,z:0},Nm=60,Pm;(($)=>{$.STEP_START="SIMULATION.STEP_START";$.STEP_END="SIMULATION.STEP_END";$.DEBUG_RAYCAST="SIMULATION.DEBUG_RAYCAST";$.DEBUG_RENDER="SIMULATION.DEBUG_RENDER"})(Pm||={});class VU extends O0{_colliderMap=new oV;_debugRaycastingEnabled=!1;_debugRenderingEnabled=!1;_debugRenderingFilterFlags;_rapierEventQueue;_rapierSimulation;_world;constructor(Z,J=Nm,X=rQ6){super();this._rapierEventQueue=new HU.default.EventQueue(!0),this._rapierSimulation=new HU.default.World(X),this._rapierSimulation.timestep=Math.fround(1/J),this._world=Z}get colliderMap(){return this._colliderMap}get isDebugRaycastingEnabled(){return this._debugRaycastingEnabled}get isDebugRenderingEnabled(){return this._debugRenderingEnabled}get gravity(){return this._rapierSimulation.gravity}get timestepS(){return this._rapierSimulation.timestep}get world(){return this._world}createRawCollider(Z,J){return this._rapierSimulation.createCollider(Z,J)}createRawRigidBody(Z){return this._rapierSimulation.createRigidBody(Z)}enableDebugRaycasting(Z){this._debugRaycastingEnabled=Z}enableDebugRendering(Z,J=HU.default.QueryFilterFlags.EXCLUDE_FIXED){this._debugRenderingEnabled=Z,this._debugRenderingFilterFlags=J}getContactManifolds(Z,J){let X=[];return this._rapierSimulation.narrowPhase.contactPair(Z,J,(Y,$)=>{if(Y.numContacts()===0)return;let Q=Y.normal(),K=[];for(let G=0;G<Y.numSolverContacts();G++)K.push(Y.solverContactPoint(G));X.push({contactPoints:K,localNormalA:!$?Y.localNormal1():Y.localNormal2(),localNormalB:!$?Y.localNormal2():Y.localNormal1(),normal:!$?Q:{x:-Q.x,y:-Q.y,z:-Q.z}})}),X}intersectionsWithRawShape(Z,J,X,Y={}){let $=new Set,Q=[];return this._rapierSimulation.intersectionsWithShape(J,X,Z,(K)=>{let G=this._colliderMap.getColliderHandleBlockType(K.handle);if(G&&!$.has(G))return $.add(G),Q.push({intersectedBlockType:G}),!0;let W=this._colliderMap.getColliderHandleEntity(K.handle);if(W&&!$.has(W))return $.add(W),Q.push({intersectedEntity:W}),!0;return!0},Y.filterFlags,Y.filterGroups,Y.filterExcludeCollider,Y.filterExcludeRigidBody,Y.filterPredicate),Q}raycast(Z,J,X,Y={}){let $=new HU.default.Ray(Z,J),Q=this._rapierSimulation.castRay($,X,Y.solidMode??!0,Y.filterFlags,Y.filterGroups,Y.filterExcludeCollider,Y.filterExcludeRigidBody,Y.filterPredicate);if(this._debugRaycastingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RAYCAST",{simulation:this,origin:Z,direction:J,length:X,hit:!!Q});if(!Q)return null;let K=$.pointAt(Q.timeOfImpact),G=Q.timeOfImpact,W=Q.collider,H=this._colliderMap.getColliderHandleBlockType(W.handle);if(H)return{hitBlock:FK.fromGlobalCoordinate({x:Math.floor(K.x-($.dir.x<0?0.0001:-0.0001)),y:Math.floor(K.y-($.dir.y<0?0.0001:-0.0001)),z:Math.floor(K.z-($.dir.z<0?0.0001:-0.0001))},H),hitPoint:K,hitDistance:G};let V=this._colliderMap.getColliderHandleEntity(W.handle);if(V)return{hitEntity:V,hitPoint:K,hitDistance:G};return null}removeRawCollider(Z){this._colliderMap.queueColliderHandleForCleanup(Z.handle),this._rapierSimulation.removeCollider(Z,!1)}removeRawRigidBody(Z){this._rapierSimulation.removeRigidBody(Z)}setGravity(Z){this._rapierSimulation.gravity=Z}step=(Z)=>{this.emitWithWorld(this._world,"SIMULATION.STEP_START",{simulation:this,tickDeltaMs:Z});let J=performance.now();if(r1.startSpan({operation:"physics_step"},()=>{this._rapierSimulation.step(this._rapierEventQueue)}),r1.startSpan({operation:"physics_cleanup"},()=>{this._rapierEventQueue.drainContactForceEvents(this._onContactForceEvent),this._rapierEventQueue.drainCollisionEvents(this._onCollisionEvent),this._colliderMap.cleanup()}),this.emitWithWorld(this._world,"SIMULATION.STEP_END",{simulation:this,stepDurationMs:performance.now()-J}),this._debugRenderingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RENDER",{simulation:this,...this._rapierSimulation.debugRender(this._debugRenderingFilterFlags)})};_onCollisionEvent=(Z,J,X)=>{let[Y,$]=this._getCollisionObjects(Z,J);if(!Y||!$)return;let Q=(K,G)=>{if(K instanceof K9&&G instanceof i8&&K.hasListeners("BLOCK_TYPE.ENTITY_COLLISION"))K.emit("BLOCK_TYPE.ENTITY_COLLISION",{blockType:K,entity:G,started:X,colliderHandleA:Z,colliderHandleB:J});else if(K instanceof i8&&G instanceof K9&&K.hasListeners("ENTITY.BLOCK_COLLISION"))K.emit("ENTITY.BLOCK_COLLISION",{entity:K,blockType:G,started:X,colliderHandleA:Z,colliderHandleB:J});else if(K instanceof i8&&G instanceof i8&&K.hasListeners("ENTITY.ENTITY_COLLISION"))K.emit("ENTITY.ENTITY_COLLISION",{entity:K,otherEntity:G,started:X,colliderHandleA:Z,colliderHandleB:J});else if(typeof K==="function"&&(G instanceof i8||G instanceof K9))K(G,X,Z,J)};Q(Y,$),Q($,Y)};_onContactForceEvent=(Z)=>{let[J,X]=this._getCollisionObjects(Z.collider1(),Z.collider2());if(!J||typeof J==="function"||!X||typeof X==="function")return;let Y={totalForce:Z.totalForce(),totalForceMagnitude:Z.totalForceMagnitude(),maxForceDirection:Z.maxForceDirection(),maxForceMagnitude:Z.maxForceMagnitude()},$=(Q,K)=>{if(Q instanceof K9&&K instanceof i8&&Q.hasListeners("BLOCK_TYPE.ENTITY_CONTACT_FORCE"))Q.emit("BLOCK_TYPE.ENTITY_CONTACT_FORCE",{blockType:Q,entity:K,contactForceData:Y});else if(Q instanceof i8&&K instanceof K9&&Q.hasListeners("ENTITY.BLOCK_CONTACT_FORCE"))Q.emit("ENTITY.BLOCK_CONTACT_FORCE",{entity:Q,blockType:K,contactForceData:Y});else if(Q instanceof i8&&K instanceof i8&&Q.hasListeners("ENTITY.ENTITY_CONTACT_FORCE"))Q.emit("ENTITY.ENTITY_CONTACT_FORCE",{entity:Q,otherEntity:K,contactForceData:Y})};$(J,X),$(X,J)};_getCollisionObjects(Z,J){let X=this._colliderMap.getColliderHandleBlockType(Z)??this._colliderMap.getColliderHandleCollisionCallback(Z)??this._colliderMap.getColliderHandleEntity(Z),Y=this._colliderMap.getColliderHandleBlockType(J)??this._colliderMap.getColliderHandleCollisionCallback(J)??this._colliderMap.getColliderHandleEntity(J);return[X,Y]}}class WP{_synchronizedPlayerReliablePackets=new z6;_queuedBroadcasts=[];_queuedAudioSynchronizations=new z6;_queuedBlockSynchronizations=new z6;_queuedBlockTypeSynchronizations=new z6;_queuedChunkSynchronizations=new z6;_queuedDebugRaycastSynchronizations=[];_queuedEntitySynchronizations=new z6;_queuedLightSynchronizations=new z6;_queuedParticleEmitterSynchronizations=new z6;_queuedPerPlayerSynchronizations=new z6;_queuedPerPlayerCameraSynchronizations=new z6;_queuedPerPlayerUISynchronizations=new z6;_queuedPerPlayerUIDatasSynchronizations=new z6;_queuedPlayerSynchronizations=new z6;_queuedSceneUISynchronizations=new z6;_queuedWorldSynchronization;_loadedSceneUIs=new Set;_spawnedChunks=new Set;_spawnedEntities=new Set;_world;constructor(Z){this._world=Z,this._subscribeToAudioEvents(),this._subscribeToBlockTypeRegistryEvents(),this._subscribeToChatEvents(),this._subscribeToChunkLatticeEvents(),this._subscribeToEntityEvents(),this._subscribeToLightEvents(),this._subscribeToParticleEmitterEvents(),this._subscribeToPlayerEvents(),this._subscribeToPlayerCameraEvents(),this._subscribeToPlayerUIEvents(),this._subscribeToSceneUIEvents(),this._subscribeToSimulationEvents(),this._subscribeToWorldEvents()}synchronize(){let Z=this._world.tickAllocator,J=this._world.tickAllocator.getArray(),X=this._world.tickAllocator.getArray(),Y=this._world.loop.currentTick;if(this._queuedPerPlayerSynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerSynchronizations)this._createOrGetSynchronizedPlayerReliablePackets($,J).push(...Q);if(this._queuedEntitySynchronizations.size>0){let $=this._world.tickAllocator.getArray(),Q=this._world.tickAllocator.getArray();for(let K of this._queuedEntitySynchronizations.valuesArray){let G=!1;for(let W in K)if(W!=="i"&&W!=="p"&&W!=="r"){G=!0;break}if(G)$.push(K);else Q.push(K)}if(Q.length>0){let K=Y0.createPacket(Y0.outboundPackets.entitiesPacketDefinition,Q,Y,Z.getArray());X.push(K)}if($.length>0){let K=Y0.createPacket(Y0.outboundPackets.entitiesPacketDefinition,$,Y,Z.getArray());J.push(K);for(let G of this._synchronizedPlayerReliablePackets.valuesArray)G.push(K)}}if(this._queuedAudioSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.audiosPacketDefinition,this._queuedAudioSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedBlockTypeSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.blockTypesPacketDefinition,this._queuedBlockTypeSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedChunkSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.chunksPacketDefinition,this._queuedChunkSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedBlockSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.blocksPacketDefinition,this._queuedBlockSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedLightSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.lightsPacketDefinition,this._queuedLightSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedParticleEmitterSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.particleEmittersPacketDefinition,this._queuedParticleEmitterSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedPerPlayerUISynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerUISynchronizations){let K=Y0.createPacket(Y0.outboundPackets.uiPacketDefinition,Q,Y,Z.getArray());this._createOrGetSynchronizedPlayerReliablePackets($,J).push(K)}if(this._queuedPerPlayerUIDatasSynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerUIDatasSynchronizations){let K=Y0.createPacket(Y0.outboundPackets.uiDatasPacketDefinition,Q,Y,Z.getArray());this._createOrGetSynchronizedPlayerReliablePackets($,J).push(K)}if(this._queuedSceneUISynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.sceneUIsPacketDefinition,this._queuedSceneUISynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedWorldSynchronization){let $=Y0.createPacket(Y0.outboundPackets.worldPacketDefinition,this._queuedWorldSynchronization,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedPerPlayerCameraSynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerCameraSynchronizations){let K=Y0.createPacket(Y0.outboundPackets.cameraPacketDefinition,Q,Y,Z.getArray());this._createOrGetSynchronizedPlayerReliablePackets($,J).push(K)}if(this._queuedPlayerSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.playersPacketDefinition,this._queuedPlayerSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedBroadcasts.length>0)for(let $ of this._queuedBroadcasts){J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedDebugRaycastSynchronizations.length>0){let $=Y0.createPacket(Y0.outboundPackets.physicsDebugRaycastsPacketDefinition,this._queuedDebugRaycastSynchronizations,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}r1.startSpan({operation:"send_all_packets"},()=>{for(let $ of q9.instance.getConnectedPlayersByWorld(this._world)){let Q=this._synchronizedPlayerReliablePackets.get($)??J;if(Q.length>0)$.connection.send(Q);if(X.length>0)$.connection.send(X,!1)}}),r1.startSpan({operation:"network_synchronize_cleanup"},()=>{if(this._queuedBroadcasts.length>0)this._queuedBroadcasts.length=0;if(this._queuedAudioSynchronizations.size>0)this._queuedAudioSynchronizations.clear();if(this._queuedBlockSynchronizations.size>0)this._queuedBlockSynchronizations.clear();if(this._queuedBlockTypeSynchronizations.size>0)this._queuedBlockTypeSynchronizations.clear();if(this._queuedChunkSynchronizations.size>0)this._queuedChunkSynchronizations.clear();if(this._queuedDebugRaycastSynchronizations.length>0)this._queuedDebugRaycastSynchronizations.length=0;if(this._queuedEntitySynchronizations.size>0)this._queuedEntitySynchronizations.clear();if(this._queuedLightSynchronizations.size>0)this._queuedLightSynchronizations.clear();if(this._queuedParticleEmitterSynchronizations.size>0)this._queuedParticleEmitterSynchronizations.clear();if(this._queuedPerPlayerSynchronizations.size>0)this._queuedPerPlayerSynchronizations.clear();if(this._queuedPerPlayerCameraSynchronizations.size>0)this._queuedPerPlayerCameraSynchronizations.clear();if(this._queuedPerPlayerUISynchronizations.size>0)this._queuedPerPlayerUISynchronizations.clear();if(this._queuedPerPlayerUIDatasSynchronizations.size>0)this._queuedPerPlayerUIDatasSynchronizations.clear();if(this._queuedPlayerSynchronizations.size>0)this._queuedPlayerSynchronizations.clear();if(this._queuedSceneUISynchronizations.size>0)this._queuedSceneUISynchronizations.clear();if(this._queuedWorldSynchronization)this._queuedWorldSynchronization=void 0;if(this._loadedSceneUIs.size>0)this._loadedSceneUIs.clear();if(this._spawnedChunks.size>0)this._spawnedChunks.clear();if(this._spawnedEntities.size>0)this._spawnedEntities.clear();if(this._synchronizedPlayerReliablePackets.size>0)this._synchronizedPlayerReliablePackets.clear();i4.clearCachedPacketsSerializedBuffers()})}_subscribeToAudioEvents(){this._world.final("AUDIO.PAUSE",this._onAudioPause),this._world.final("AUDIO.PLAY",this._onAudioPlay),this._world.final("AUDIO.PLAY_RESTART",this._onAudioPlayRestart),this._world.final("AUDIO.SET_ATTACHED_TO_ENTITY",this._onAudioSetAttachedToEntity),this._world.final("AUDIO.SET_CUTOFF_DISTANCE",this._onAudioSetCutoffDistance),this._world.final("AUDIO.SET_DETUNE",this._onAudioSetDetune),this._world.final("AUDIO.SET_DISTORTION",this._onAudioSetDistortion),this._world.final("AUDIO.SET_POSITION",this._onAudioSetPosition),this._world.final("AUDIO.SET_PLAYBACK_RATE",this._onAudioSetPlaybackRate),this._world.final("AUDIO.SET_REFERENCE_DISTANCE",this._onAudioSetReferenceDistance),this._world.final("AUDIO.SET_VOLUME",this._onAudioSetVolume)}_subscribeToBlockTypeRegistryEvents(){this._world.final("BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE",this._onBlockTypeRegistryRegisterBlockType)}_subscribeToChatEvents(){this._world.final("CHAT.BROADCAST_MESSAGE",this._onChatSendBroadcastMessage),this._world.final("CHAT.PLAYER_MESSAGE",this._onChatSendPlayerMessage)}_subscribeToChunkLatticeEvents(){this._world.final("CHUNK_LATTICE.ADD_CHUNK",this._onChunkLatticeAddChunk),this._world.final("CHUNK_LATTICE.REMOVE_CHUNK",this._onChunkLatticeRemoveChunk),this._world.final("CHUNK_LATTICE.SET_BLOCK",this._onChunkLatticeSetBlock)}_subscribeToEntityEvents(){this._world.final("ENTITY.SPAWN",this._onEntitySpawn),this._world.final("ENTITY.DESPAWN",this._onEntityDespawn),this._world.final("ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",this._onEntitySetModelAnimationsPlaybackRate),this._world.final("ENTITY.SET_MODEL_HIDDEN_NODES",this._onEntitySetModelHiddenNodes),this._world.final("ENTITY.SET_MODEL_SCALE",this._onEntitySetModelScale),this._world.final("ENTITY.SET_MODEL_SHOWN_NODES",this._onEntitySetModelShownNodes),this._world.final("ENTITY.SET_MODEL_TEXTURE_URI",this._onEntitySetModelTextureUri),this._world.final("ENTITY.SET_OPACITY",this._onEntitySetOpacity),this._world.final("ENTITY.SET_PARENT",this._onEntitySetParent),this._world.final("ENTITY.SET_TINT_COLOR",this._onEntitySetTintColor),this._world.final("ENTITY.START_MODEL_LOOPED_ANIMATIONS",this._onEntityStartModelLoopedAnimations),this._world.final("ENTITY.START_MODEL_ONESHOT_ANIMATIONS",this._onEntityStartModelOneshotAnimations),this._world.final("ENTITY.STOP_MODEL_ANIMATIONS",this._onEntityStopModelAnimations),this._world.final("ENTITY.UPDATE_POSITION",this._onEntityUpdatePosition),this._world.final("ENTITY.UPDATE_ROTATION",this._onEntityUpdateRotation)}_subscribeToLightEvents(){this._world.final("LIGHT.DESPAWN",this._onLightDespawn),this._world.final("LIGHT.SET_ANGLE",this._onLightSetAngle),this._world.final("LIGHT.SET_ATTACHED_TO_ENTITY",this._onLightSetAttachedToEntity),this._world.final("LIGHT.SET_COLOR",this._onLightSetColor),this._world.final("LIGHT.SET_DISTANCE",this._onLightSetDistance),this._world.final("LIGHT.SET_INTENSITY",this._onLightSetIntensity),this._world.final("LIGHT.SET_OFFSET",this._onLightSetOffset),this._world.final("LIGHT.SET_PENUMBRA",this._onLightSetPenumbra),this._world.final("LIGHT.SET_POSITION",this._onLightSetPosition),this._world.final("LIGHT.SET_TRACKED_ENTITY",this._onLightSetTrackedEntity),this._world.final("LIGHT.SET_TRACKED_POSITION",this._onLightSetTrackedPosition),this._world.final("LIGHT.SPAWN",this._onLightSpawn)}_subscribeToParticleEmitterEvents(){this._world.final("PARTICLE_EMITTER.DESPAWN",this._onParticleEmitterDespawn),this._world.final("PARTICLE_EMITTER.SET_ALPHA_TEST",this._onParticleEmitterSetAlphaTest),this._world.final("PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY",this._onParticleEmitterSetAttachedToEntity),this._world.final("PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY_NODE_NAME",this._onParticleEmitterSetAttachedToEntityNodeName),this._world.final("PARTICLE_EMITTER.SET_COLOR_END",this._onParticleEmitterSetColorEnd),this._world.final("PARTICLE_EMITTER.SET_COLOR_END_VARIANCE",this._onParticleEmitterSetColorEndVariance),this._world.final("PARTICLE_EMITTER.SET_COLOR_START",this._onParticleEmitterSetColorStart),this._world.final("PARTICLE_EMITTER.SET_COLOR_START_VARIANCE",this._onParticleEmitterSetColorStartVariance),this._world.final("PARTICLE_EMITTER.SET_GRAVITY",this._onParticleEmitterSetGravity),this._world.final("PARTICLE_EMITTER.SET_LIFETIME",this._onParticleEmitterSetLifetime),this._world.final("PARTICLE_EMITTER.SET_LIFETIME_VARIANCE",this._onParticleEmitterSetLifetimeVariance),this._world.final("PARTICLE_EMITTER.SET_MAX_PARTICLES",this._onParticleEmitterSetMaxParticles),this._world.final("PARTICLE_EMITTER.SET_OFFSET",this._onParticleEmitterSetOffset),this._world.final("PARTICLE_EMITTER.SET_OPACITY_END",this._onParticleEmitterSetOpacityEnd),this._world.final("PARTICLE_EMITTER.SET_OPACITY_END_VARIANCE",this._onParticleEmitterSetOpacityEndVariance),this._world.final("PARTICLE_EMITTER.SET_OPACITY_START",this._onParticleEmitterSetOpacityStart),this._world.final("PARTICLE_EMITTER.SET_OPACITY_START_VARIANCE",this._onParticleEmitterSetOpacityStartVariance),this._world.final("PARTICLE_EMITTER.SET_PAUSED",this._onParticleEmitterSetPaused),this._world.final("PARTICLE_EMITTER.SET_POSITION",this._onParticleEmitterSetPosition),this._world.final("PARTICLE_EMITTER.SET_POSITION_VARIANCE",this._onParticleEmitterSetPositionVariance),this._world.final("PARTICLE_EMITTER.SET_RATE",this._onParticleEmitterSetRate),this._world.final("PARTICLE_EMITTER.SET_RATE_VARIANCE",this._onParticleEmitterSetRateVariance),this._world.final("PARTICLE_EMITTER.SET_SIZE_END",this._onParticleEmitterSetSizeEnd),this._world.final("PARTICLE_EMITTER.SET_SIZE_END_VARIANCE",this._onParticleEmitterSetSizeEndVariance),this._world.final("PARTICLE_EMITTER.SET_SIZE_START",this._onParticleEmitterSetSizeStart),this._world.final("PARTICLE_EMITTER.SET_SIZE_START_VARIANCE",this._onParticleEmitterSetSizeStartVariance),this._world.final("PARTICLE_EMITTER.SET_TEXTURE_URI",this._onParticleEmitterSetTextureUri),this._world.final("PARTICLE_EMITTER.SET_TRANSPARENT",this._onParticleEmitterSetTransparent),this._world.final("PARTICLE_EMITTER.SET_VELOCITY",this._onParticleEmitterSetVelocity),this._world.final("PARTICLE_EMITTER.SET_VELOCITY_VARIANCE",this._onParticleEmitterSetVelocityVariance),this._world.final("PARTICLE_EMITTER.SPAWN",this._onParticleEmitterSpawn)}_subscribeToPlayerEvents(){this._world.final("PLAYER.JOINED_WORLD",this._onPlayerJoinedWorld),this._world.final("PLAYER.LEFT_WORLD",this._onPlayerLeftWorld),this._world.final("PLAYER.RECONNECTED_WORLD",this._onPlayerReconnectedWorld),this._world.final("PLAYER.REQUEST_SYNC",this._onPlayerRequestSync)}_subscribeToPlayerCameraEvents(){this._world.final("PLAYER_CAMERA.LOOK_AT_ENTITY",this._onPlayerCameraLookAtEntity),this._world.final("PLAYER_CAMERA.LOOK_AT_POSITION",this._onPlayerCameraLookAtPosition),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",this._onPlayerCameraSetAttachedToEntity),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",this._onPlayerCameraSetAttachedToPosition),this._world.final("PLAYER_CAMERA.SET_FILM_OFFSET",this._onPlayerCameraSetFilmOffset),this._world.final("PLAYER_CAMERA.SET_FORWARD_OFFSET",this._onPlayerCameraSetForwardOffset),this._world.final("PLAYER_CAMERA.SET_FOV",this._onPlayerCameraSetFov),this._world.final("PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",this._onPlayerCameraSetModelHiddenNodes),this._world.final("PLAYER_CAMERA.SET_MODEL_SHOWN_NODES",this._onPlayerCameraSetModelShownNodes),this._world.final("PLAYER_CAMERA.SET_MODE",this._onPlayerCameraSetMode),this._world.final("PLAYER_CAMERA.SET_OFFSET",this._onPlayerCameraSetOffset),this._world.final("PLAYER_CAMERA.SET_SHOULDER_ANGLE",this._onPlayerCameraSetShoulderAngle),this._world.final("PLAYER_CAMERA.SET_TRACKED_ENTITY",this._onPlayerCameraSetTrackedEntity),this._world.final("PLAYER_CAMERA.SET_TRACKED_POSITION",this._onPlayerCameraSetTrackedPosition),this._world.final("PLAYER_CAMERA.SET_ZOOM",this._onPlayerCameraSetZoom)}_subscribeToPlayerUIEvents(){this._world.final("PLAYER_UI.LOAD",this._onPlayerUILoad),this._world.final("PLAYER_UI.LOCK_POINTER",this._onPlayerUILockPointer),this._world.final("PLAYER_UI.SEND_DATA",this._onPlayerUISendData)}_subscribeToSceneUIEvents(){this._world.final("SCENE_UI.LOAD",this._onSceneUILoad),this._world.final("SCENE_UI.SET_ATTACHED_TO_ENTITY",this._onSceneUISetAttachedToEntity),this._world.final("SCENE_UI.SET_OFFSET",this._onSceneUISetOffset),this._world.final("SCENE_UI.SET_POSITION",this._onSceneUISetPosition),this._world.final("SCENE_UI.SET_STATE",this._onSceneUISetState),this._world.final("SCENE_UI.SET_VIEW_DISTANCE",this._onSceneUISetViewDistance),this._world.final("SCENE_UI.UNLOAD",this._onSceneUIUnload)}_subscribeToSimulationEvents(){this._world.final("SIMULATION.DEBUG_RAYCAST",this._onSimulationDebugRaycast),this._world.final("SIMULATION.DEBUG_RENDER",this._onSimulationDebugRender)}_subscribeToWorldEvents(){this._world.final("WORLD.SET_AMBIENT_LIGHT_COLOR",this._onWorldSetAmbientLightColor),this._world.final("WORLD.SET_AMBIENT_LIGHT_INTENSITY",this._onWorldSetAmbientLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",this._onWorldSetDirectionalLightColor),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",this._onWorldSetDirectionalLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",this._onWorldSetDirectionalLightPosition),this._world.final("WORLD.SET_FOG_COLOR",this._onWorldSetFogColor),this._world.final("WORLD.SET_FOG_FAR",this._onWorldSetFogFar),this._world.final("WORLD.SET_FOG_NEAR",this._onWorldSetFogNear),this._world.final("WORLD.SET_SKYBOX_INTENSITY",this._onWorldSetSkyboxIntensity)}_onAudioPause=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.pa=!0,delete J.pl,delete J.r};_onAudioPlay=(Z)=>{let J=Z.audio.serialize();J.pl=!0,delete J.pa,delete J.r,this._queuedAudioSynchronizations.set(J.i,J)};_onAudioPlayRestart=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.r=!0,delete J.pa,delete J.pl,this._queuedAudioSynchronizations.set(J.i,J)};_onAudioSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onAudioSetCutoffDistance=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.cd=Z.cutoffDistance};_onAudioSetDetune=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.de=Z.detune};_onAudioSetDistortion=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.di=Z.distortion};_onAudioSetPosition=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.e=Z.position?void 0:J.e,J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0};_onAudioSetPlaybackRate=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.pr=Z.playbackRate};_onAudioSetReferenceDistance=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.rd=Z.referenceDistance};_onAudioSetVolume=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.v=Z.volume};_onBlockTypeRegistryRegisterBlockType=(Z)=>{let J=Z.blockType.serialize();this._queuedBlockTypeSynchronizations.set(Z.blockType.id,J)};_onChatSendBroadcastMessage=(Z)=>{let J=this._world.tickAllocator,{player:X,message:Y,color:$}=Z,Q=J.getObject();Q.m=Y,Q.c=$,Q.p=X?.id;let K=J.getArray();K.push(Q),this._queuedBroadcasts.push(Y0.createPacket(Y0.outboundPackets.chatMessagesPacketDefinition,K,this._world.loop.currentTick,J.getArray()))};_onChatSendPlayerMessage=(Z)=>{let J=this._world.tickAllocator,{player:X,message:Y,color:$}=Z,Q=this._queuedPerPlayerSynchronizations.get(X)??[],K=J.getObject();K.m=Y,K.c=$;let G=J.getArray();G.push(K),Q.push(Y0.createPacket(Y0.outboundPackets.chatMessagesPacketDefinition,G,this._world.loop.currentTick,this._world.tickAllocator.getArray())),this._queuedPerPlayerSynchronizations.set(X,Q)};_onChunkLatticeAddChunk=(Z)=>{let J=this._createOrGetQueuedChunkSync(Z.chunk);J.b=this._world.tickAllocator.getArray(Z.chunk.blocks),J.rm=void 0,this._spawnedChunks.add(J.c.join(","))};_onChunkLatticeRemoveChunk=(Z)=>{let J=this._createOrGetQueuedChunkSync(Z.chunk),X=J.c.join(",");if(this._spawnedChunks.has(X))this._queuedChunkSynchronizations.delete(X),this._spawnedChunks.delete(X);else J.rm=!0};_onChunkLatticeSetBlock=(Z)=>{let J=this._createOrGetQueuedBlockSync(Z.globalCoordinate);J.i=Z.blockTypeId};_onEntitySetModelAnimationsPlaybackRate=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.ap=Z.playbackRate};_onEntitySpawn=(Z)=>{let J=Z.entity.serialize();this._queuedEntitySynchronizations.set(J.i,J),this._spawnedEntities.add(J.i)};_onEntityDespawn=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);if(this._spawnedEntities.has(J.i))this._queuedEntitySynchronizations.delete(J.i),this._spawnedEntities.delete(J.i);else J.rm=!0};_onEntitySetModelHiddenNodes=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.h=this._world.tickAllocator.getArray(Z.modelHiddenNodes)};_onEntitySetModelScale=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.s=Z.modelScale};_onEntitySetModelShownNodes=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.sn=this._world.tickAllocator.getArray(Z.modelShownNodes)};_onEntitySetModelTextureUri=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.mt=Z.modelTextureUri};_onEntitySetOpacity=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.o=Z.opacity};_onEntitySetParent=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.pe=Z.parent?Z.parent.id:void 0,J.pn=Z.parentNodeName};_onEntitySetTintColor=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.t=Z.tintColor?P0.serializeRgbColor(Z.tintColor,this._world.tickAllocator):void 0};_onEntityStartModelLoopedAnimations=(Z)=>{let J=this._world.tickAllocator,X=this._createOrGetQueuedEntitySync(Z.entity),Y=J.getSet(X.al,Z.animations);if(X.al=J.getArray(Y),X.as){let $=J.getArray();for(let Q of X.as)!Y.has(Q)&&$.push(Q);X.as=$}};_onEntityStartModelOneshotAnimations=(Z)=>{let J=this._world.tickAllocator,X=this._createOrGetQueuedEntitySync(Z.entity),Y=J.getSet(X.ao,Z.animations);if(X.ao=J.getArray(Y),X.as){let $=J.getArray();for(let Q of X.as)!Y.has(Q)&&$.push(Q);X.as=$}};_onEntityStopModelAnimations=(Z)=>{let J=this._world.tickAllocator,X=this._createOrGetQueuedEntitySync(Z.entity);if(X.al){let Y=J.getSet(X.al);for(let $ of Z.animations)Y.delete($);X.al=J.getArray(Y)}if(X.ao){let Y=J.getSet(X.ao);for(let $ of Z.animations)Y.delete($);X.ao=J.getArray(Y)}X.as=J.getArray(J.getSet(X.as,Z.animations))};_onEntityUpdateRotation=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.r=P0.serializeQuaternion(Z.rotation,this._world.tickAllocator)};_onEntityUpdatePosition=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.p=P0.serializeVector(Z.position,this._world.tickAllocator)};_onLightDespawn=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.rm=!0};_onLightSetAngle=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.a=Z.angle};_onLightSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onLightSetColor=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.c=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onLightSetDistance=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.d=Z.distance};_onLightSetIntensity=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.n=Z.intensity};_onLightSetOffset=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onLightSetPenumbra=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.pe=Z.penumbra};_onLightSetPosition=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.e=Z.position?void 0:J.e};_onLightSetTrackedEntity=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.te=Z.entity?Z.entity.id:void 0,J.tp=Z.entity?void 0:J.tp};_onLightSetTrackedPosition=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.tp=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.te=Z.position?void 0:J.te};_onLightSpawn=(Z)=>{let J=Z.light.serialize();this._queuedLightSynchronizations.set(J.i,J)};_onParticleEmitterDespawn=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.rm=!0};_onParticleEmitterSetAlphaTest=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.at=Z.alphaTest};_onParticleEmitterSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onParticleEmitterSetAttachedToEntityNodeName=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.en=Z.attachedToEntityNodeName};_onParticleEmitterSetColorEnd=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.ce=Z.colorEnd?P0.serializeRgbColor(Z.colorEnd,this._world.tickAllocator):void 0};_onParticleEmitterSetColorEndVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.cev=Z.colorEndVariance?P0.serializeRgbColor(Z.colorEndVariance,this._world.tickAllocator):void 0};_onParticleEmitterSetColorStart=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.cs=Z.colorStart?P0.serializeRgbColor(Z.colorStart,this._world.tickAllocator):void 0};_onParticleEmitterSetColorStartVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.csv=Z.colorStartVariance?P0.serializeRgbColor(Z.colorStartVariance,this._world.tickAllocator):void 0};_onParticleEmitterSetGravity=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.g=Z.gravity?P0.serializeVector(Z.gravity,this._world.tickAllocator):void 0};_onParticleEmitterSetLifetime=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.l=Z.lifetime};_onParticleEmitterSetLifetimeVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.lv=Z.lifetimeVariance};_onParticleEmitterSetMaxParticles=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.mp=Z.maxParticles};_onParticleEmitterSetOffset=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onParticleEmitterSetOpacityEnd=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.oe=Z.opacityEnd};_onParticleEmitterSetOpacityEndVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.oev=Z.opacityEndVariance};_onParticleEmitterSetOpacityStart=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.os=Z.opacityStart};_onParticleEmitterSetOpacityStartVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.osv=Z.opacityStartVariance};_onParticleEmitterSetPaused=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.pa=Z.paused};_onParticleEmitterSetPosition=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.e=Z.position?void 0:J.e,J.en=Z.position?void 0:J.en};_onParticleEmitterSetPositionVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.pv=Z.positionVariance?P0.serializeVector(Z.positionVariance,this._world.tickAllocator):void 0};_onParticleEmitterSetRate=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.r=Z.rate};_onParticleEmitterSetRateVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.rv=Z.rateVariance};_onParticleEmitterSetSizeEnd=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.se=Z.sizeEnd};_onParticleEmitterSetSizeEndVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.sev=Z.sizeEndVariance};_onParticleEmitterSetSizeStart=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.ss=Z.sizeStart};_onParticleEmitterSetSizeStartVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.ssv=Z.sizeStartVariance};_onParticleEmitterSetTextureUri=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.tu=Z.textureUri};_onParticleEmitterSetTransparent=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.t=Z.transparent};_onParticleEmitterSetVelocity=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.v=Z.velocity?P0.serializeVector(Z.velocity,this._world.tickAllocator):void 0};_onParticleEmitterSetVelocityVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.vv=Z.velocityVariance?P0.serializeVector(Z.velocityVariance,this._world.tickAllocator):void 0};_onParticleEmitterSpawn=(Z)=>{let J=Z.particleEmitter.serialize();this._queuedParticleEmitterSynchronizations.set(J.i,J)};_onPlayerCameraLookAtEntity=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.pl=P0.serializeVector(Z.entity.position,this._world.tickAllocator),delete J.et,delete J.pt};_onPlayerCameraLookAtPosition=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.pl=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,delete J.et,delete J.pt};_onPlayerCameraSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.e=Z.entity.id,delete J.p};_onPlayerCameraSetAttachedToPosition=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,delete J.e};_onPlayerCameraSetFilmOffset=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.fo=Z.filmOffset};_onPlayerCameraSetForwardOffset=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.ffo=Z.forwardOffset};_onPlayerCameraSetFov=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.fv=Z.fov};_onPlayerCameraSetModelHiddenNodes=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.h=this._world.tickAllocator.getArray(Z.modelHiddenNodes)};_onPlayerCameraSetModelShownNodes=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.s=this._world.tickAllocator.getArray(Z.modelShownNodes)};_onPlayerCameraSetMode=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.m=Z.mode};_onPlayerCameraSetOffset=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onPlayerCameraSetShoulderAngle=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.sa=Z.shoulderAngle};_onPlayerCameraSetTrackedEntity=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.et=Z.entity?Z.entity.id:void 0,delete J.pl,delete J.pt};_onPlayerCameraSetTrackedPosition=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.pt=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,delete J.et,delete J.pl};_onPlayerCameraSetZoom=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.z=Z.zoom};_onPlayerJoinedWorld=(Z)=>{let J=this._world.tickAllocator,{player:X}=Z,Y=this._queuedPerPlayerSynchronizations.get(X)??J.getArray();Y.push(Y0.createPacket(Y0.outboundPackets.worldPacketDefinition,this._world.serialize(),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.blockTypesPacketDefinition,this._world.blockTypeRegistry.serialize(),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.chunksPacketDefinition,J.map(this._world.chunkLattice.getAllChunks(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.entitiesPacketDefinition,J.map(this._world.entityManager.getAllEntities(!0),(Q)=>{if(X.camera.attachedToEntity===void 0&&Q instanceof y7&&Q.player===X)X.camera.setAttachedToEntity(Q);return Q.serialize()}),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.audiosPacketDefinition,J.map(this._world.audioManager.getAllAudios(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.lightsPacketDefinition,J.map(this._world.lightManager.getAllLights(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.particleEmittersPacketDefinition,J.map(this._world.particleEmitterManager.getAllParticleEmitters(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.sceneUIsPacketDefinition,J.map(this._world.sceneUIManager.getAllSceneUIs(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.playersPacketDefinition,J.map(q9.instance.getConnectedPlayers(),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray()));let $=this._createOrGetQueuedPlayerCameraSync(X.camera);this._queuedPerPlayerCameraSynchronizations.set(X,J.getObject(X.camera.serialize(),$)),this._queuedPerPlayerSynchronizations.set(X,Y),this._queuedPlayerSynchronizations.set(X.id,X.serialize())};_onPlayerLeftWorld=(Z)=>{let J=this._createOrGetQueuedPlayerSync(Z.player);J.rm=!0};_onPlayerReconnectedWorld=(Z)=>{this._onPlayerJoinedWorld(Z)};_onPlayerRequestSync=(Z)=>{let J=this._world.tickAllocator,X=J.getObject();X.r=Z.receivedAt,X.s=Date.now(),X.p=performance.now()-Z.receivedAtMs,X.n=this._world.loop.nextTickMs,Z.player.connection.send([Y0.createPacket(Y0.outboundPackets.syncResponsePacketDefinition,X,this._world.loop.currentTick,J.getArray())])};_onPlayerUILoad=(Z)=>{let J=this._createOrGetQueuedPlayerUISync(Z.playerUI);J.u=Z.htmlUri};_onPlayerUILockPointer=(Z)=>{let J=this._createOrGetQueuedPlayerUISync(Z.playerUI);J.p=Z.lock};_onPlayerUISendData=(Z)=>{this._createOrGetQueuedPlayerUIDatasSync(Z.playerUI).push(Z.data)};_onSceneUILoad=(Z)=>{let J=Z.sceneUI.serialize();this._queuedSceneUISynchronizations.set(J.i,J),this._loadedSceneUIs.add(J.i)};_onSceneUISetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onSceneUISetOffset=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onSceneUISetPosition=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.e=Z.position?void 0:J.e};_onSceneUISetState=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.s=Z.state};_onSceneUISetViewDistance=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.v=Z.viewDistance};_onSceneUIUnload=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);if(this._loadedSceneUIs.has(J.i))this._queuedSceneUISynchronizations.delete(J.i),this._loadedSceneUIs.delete(J.i);else J.rm=!0};_onSimulationDebugRaycast=(Z)=>{this._queuedDebugRaycastSynchronizations.push(P0.serializePhysicsDebugRaycast(Z,this._world.tickAllocator))};_onSimulationDebugRender=(Z)=>{this._queuedBroadcasts.push(Y0.createPacket(Y0.outboundPackets.physicsDebugRenderPacketDefinition,{v:Array.from(Z.vertices),c:Array.from(Z.colors)},this._world.loop.currentTick,this._world.tickAllocator.getArray()))};_onWorldSetAmbientLightColor=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.ac=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onWorldSetAmbientLightIntensity=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.ai=Z.intensity};_onWorldSetDirectionalLightColor=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.dc=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onWorldSetDirectionalLightIntensity=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.di=Z.intensity};_onWorldSetDirectionalLightPosition=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.dp=P0.serializeVector(Z.position,this._world.tickAllocator)};_onWorldSetFogColor=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.fc=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onWorldSetFogFar=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.ff=Z.far};_onWorldSetFogNear=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.fn=Z.near};_onWorldSetSkyboxIntensity=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.si=Z.intensity};_createOrGetQueuedAudioSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedAudioSync(): Audio has no id!");let J=this._queuedAudioSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedAudioSynchronizations.set(Z.id,J);return J}_createOrGetQueuedBlockSync(Z){let{x:J,y:X,z:Y}=Z,$=`${J},${X},${Y}`,Q=this._queuedBlockSynchronizations.get($);if(!Q)Q=this._world.tickAllocator.getObject(),Q.i=0,Q.c=[J,X,Y],this._queuedBlockSynchronizations.set($,Q);return Q}_createOrGetQueuedChunkSync(Z){if(!Z.originCoordinate)d.fatalError("NetworkSynchronizer._createOrGetQueuedChunkSync(): Chunk has no origin coordinate!");let{x:J,y:X,z:Y}=Z.originCoordinate,$=`${J},${X},${Y}`,Q=this._queuedChunkSynchronizations.get($);if(!Q)Q=this._world.tickAllocator.getObject(),Q.c=[J,X,Y],this._queuedChunkSynchronizations.set($,Q);return Q}_createOrGetQueuedEntitySync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedEntitySync(): Entity has no id!");let J=this._queuedEntitySynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedEntitySynchronizations.set(Z.id,J);return J}_createOrGetQueuedLightSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedLightSync(): Light has no id!");let J=this._queuedLightSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedLightSynchronizations.set(Z.id,J);return J}_createOrGetQueuedParticleEmitterSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedParticleEmitterSync(): ParticleEmitter has no id!");let J=this._queuedParticleEmitterSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedParticleEmitterSynchronizations.set(Z.id,J);return J}_createOrGetQueuedPlayerSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedPlayerSync(): Player has no id!");let J=this._queuedPlayerSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedPlayerSynchronizations.set(Z.id,J);return J}_createOrGetQueuedPlayerCameraSync(Z){let J=this._queuedPerPlayerCameraSynchronizations.get(Z.player);if(!J)J=this._world.tickAllocator.getObject(),this._queuedPerPlayerCameraSynchronizations.set(Z.player,J);return J}_createOrGetQueuedPlayerUISync(Z){let J=this._queuedPerPlayerUISynchronizations.get(Z.player);if(!J)J=this._world.tickAllocator.getObject(),this._queuedPerPlayerUISynchronizations.set(Z.player,J);return J}_createOrGetQueuedPlayerUIDatasSync(Z){let J=this._queuedPerPlayerUIDatasSynchronizations.get(Z.player);if(!J)J=this._world.tickAllocator.getArray(),this._queuedPerPlayerUIDatasSynchronizations.set(Z.player,J);return J}_createOrGetQueuedSceneUISync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedSceneUISync(): SceneUI has no id!");let J=this._queuedSceneUISynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedSceneUISynchronizations.set(Z.id,J);return J}_createOrGetQueuedWorldSync(Z){if(Z.id!==this._world.id)d.fatalError("NetworkSynchronizer._createOrGetQueuedWorldSync(): World does not match this network synchronizer world!");return this._queuedWorldSynchronization??=this._world.tickAllocator.getObject(),this._queuedWorldSynchronization.i=Z.id,this._queuedWorldSynchronization}_createOrGetSynchronizedPlayerReliablePackets(Z,J){let X=this._synchronizedPlayerReliablePackets.get(Z);if(!X)X=this._world.tickAllocator.getArray(J),this._synchronizedPlayerReliablePackets.set(Z,X);return X}}class zU{_particleEmitters=new Map;_nextParticleEmitterId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}despawnEntityAttachedParticleEmitters(Z){this.getAllEntityAttachedParticleEmitters(Z).forEach((J)=>{J.despawn()})}getAllParticleEmitters(Z=!1){return Z?this._world.tickAllocator.getArray(this._particleEmitters.values()):Array.from(this._particleEmitters.values())}getAllEntityAttachedParticleEmitters(Z){return this.getAllParticleEmitters().filter((J)=>J.attachedToEntity===Z)}registerParticleEmitter(Z){if(Z.id!==void 0)return Z.id;let J=this._nextParticleEmitterId;return this._particleEmitters.set(J,Z),this._nextParticleEmitterId++,J}unregisterParticleEmitter(Z){if(Z.id===void 0)return;this._particleEmitters.delete(Z.id)}}class FU{_sceneUIs=new Map;_nextSceneUIId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}getAllSceneUIs(Z=!1){return Z?this._world.tickAllocator.getArray(this._sceneUIs.values()):Array.from(this._sceneUIs.values())}getAllEntityAttachedSceneUIs(Z){return this.getAllSceneUIs().filter((J)=>J.attachedToEntity===Z)}getSceneUIById(Z){return this._sceneUIs.get(Z)}registerSceneUI(Z){if(Z.id!==void 0)return Z.id;let J=this._nextSceneUIId;return this._sceneUIs.set(J,Z),this._nextSceneUIId++,J}unloadEntityAttachedSceneUIs(Z){this.getAllEntityAttachedSceneUIs(Z).forEach((J)=>{J.unload()})}unregisterSceneUI(Z){if(Z.id===void 0)return;this._sceneUIs.delete(Z.id)}}class qU{_allocatedArrays=[];_allocatedArray3Numbers=[];_allocatedArray4Numbers=[];_allocatedObjects=[];_allocatedSets=[];_arrayPool=[];_array3NumberPool=[];_array4NumberPool=[];_objectPool=[];_setPool=[];getArray(Z,J){let X=this._arrayPool.pop()??[];X.length=0;let Y=0;if(Z)for(let $ of Z)X[Y++]=$;if(J)for(let $ of J)X[Y++]=$;return this._allocatedArrays.push(X),X}getArray3Number(Z){let J=this._array3NumberPool.pop()??[0,0,0];if(J[0]=J[1]=J[2]=0,Z){let X=0;for(let Y of Z){if(X>=3)break;J[X++]=Y}}return this._allocatedArray3Numbers.push(J),J}getArray4Number(Z){let J=this._array4NumberPool.pop()??[0,0,0,0];if(J[0]=J[1]=J[2]=J[3]=0,Z){let X=0;for(let Y of Z){if(X>=4)break;J[X++]=Y}}return this._allocatedArray4Numbers.push(J),J}getObject(Z,J){let X=this._objectPool.pop()??Object.create(null);for(let Y in X)delete X[Y];if(Z)Object.assign(X,Z);if(J)Object.assign(X,J);return this._allocatedObjects.push(X),X}getSet(Z,J){let X=this._setPool.pop()??new Set;if(X.clear(),Z)for(let Y of Z)X.add(Y);if(J)for(let Y of J)X.add(Y);return this._allocatedSets.push(X),X}map(Z,J){let X=this.getArray();X.length=Z.length;for(let Y=0;Y<Z.length;Y++)X[Y]=J(Z[Y],Y,Z);return X}reset(){for(let Z=0;Z<this._allocatedArrays.length;Z++)if(this._arrayPool.length<4096)this._arrayPool.push(this._allocatedArrays[Z]);for(let Z=0;Z<this._allocatedArray3Numbers.length;Z++)if(this._array3NumberPool.length<4096)this._array3NumberPool.push(this._allocatedArray3Numbers[Z]);for(let Z=0;Z<this._allocatedArray4Numbers.length;Z++)if(this._array4NumberPool.length<4096)this._array4NumberPool.push(this._allocatedArray4Numbers[Z]);for(let Z=0;Z<this._allocatedObjects.length;Z++)if(this._objectPool.length<4096)this._objectPool.push(this._allocatedObjects[Z]);for(let Z=0;Z<this._allocatedSets.length;Z++)if(this._setPool.length<1024)this._setPool.push(this._allocatedSets[Z]);this._allocatedArrays.length=0,this._allocatedArray3Numbers.length=0,this._allocatedArray4Numbers.length=0,this._allocatedObjects.length=0,this._allocatedSets.length=0}}var tQ6=2,eQ6=3;class UU{_accumulatorMs=0;_targetTicksPerSecond;_fixedTimestepMs;_fixedTimestepS;_maxAccumulatorMs;_nextTickMs=0;_lastLoopTimeMs=0;_tickFunction;_tickErrorCallback;_tickHandle=null;constructor(Z,J,X){this._targetTicksPerSecond=Z,this._fixedTimestepS=Math.fround(1/Z),this._fixedTimestepMs=Math.fround(this._fixedTimestepS*1000),this._maxAccumulatorMs=this._fixedTimestepMs*eQ6,this._tickFunction=J,this._tickErrorCallback=X}get targetTicksPerSecond(){return this._targetTicksPerSecond}get fixedTimestepMs(){return this._fixedTimestepMs}get fixedTimestepS(){return this._fixedTimestepS}get isStarted(){return!!this._tickHandle}get nextTickMs(){return this._nextTickMs}start(){if(this._tickHandle)return;this._lastLoopTimeMs=performance.now();let Z=()=>{let J=performance.now(),X=J-this._lastLoopTimeMs;if(this._lastLoopTimeMs=J,this._accumulatorMs+=X,this._accumulatorMs>this._maxAccumulatorMs)this._accumulatorMs=this._maxAccumulatorMs;if(this._accumulatorMs>=this._fixedTimestepMs)r1.startSpan({operation:"ticker_tick"},()=>{let Y=0;while(this._accumulatorMs>=this._fixedTimestepMs&&Y<tQ6)this._tick(this._fixedTimestepMs),this._accumulatorMs-=this._fixedTimestepMs,Y++;this._nextTickMs=Math.max(0,this._fixedTimestepMs-this._accumulatorMs)});this._tickHandle=setTimeout(Z,this._nextTickMs)};Z()}stop(){if(!this._tickHandle)return;clearTimeout(this._tickHandle),this._tickHandle=null}_tick(Z){try{this._tickFunction(Z)}catch(J){if(J instanceof Error&&this._tickErrorCallback)this._tickErrorCallback(J);else d.warning(`Ticker._tick(): tick callback threw an error, but it was not an instance of Error. Error: ${J}`)}}}var _31;((Q)=>{Q.START="WORLD_LOOP.START";Q.STOP="WORLD_LOOP.STOP";Q.TICK_START="WORLD_LOOP.TICK_START";Q.TICK_END="WORLD_LOOP.TICK_END";Q.TICK_ERROR="WORLD_LOOP.TICK_ERROR"})(_31||={});class LU extends O0{_currentTick=0;_ticker;_world;constructor(Z,J=Nm){super();this._ticker=new UU(J,this._tick,this._onTickError),this._world=Z}get currentTick(){return this._currentTick}get isStarted(){return this._ticker.isStarted}get nextTickMs(){return this._ticker.nextTickMs}get timestepS(){return this._ticker.fixedTimestepS}get world(){return this._world}start(){this._ticker.start(),this.emitWithWorld(this._world,"WORLD_LOOP.START",{worldLoop:this})}stop(){this._ticker.stop(),this.emitWithWorld(this._world,"WORLD_LOOP.STOP",{worldLoop:this})}_tick=(Z)=>{this.emitWithWorld(this._world,"WORLD_LOOP.TICK_START",{worldLoop:this,tickDeltaMs:Z});let J=performance.now();r1.startSpan({operation:"world_tick",attributes:{serverPlayerCount:q9.instance.playerCount,targetTickRate:this._ticker.targetTicksPerSecond,targetTickRateMs:this._ticker.fixedTimestepMs,worldId:this._world.id,worldName:this._world.name,worldChunkCount:this._world.chunkLattice.chunkCount,worldEntityCount:this._world.entityManager.entityCount,worldLoopTick:this._currentTick}},()=>{r1.startSpan({operation:"entities_tick"},()=>this._world.entityManager.tickEntities(Z)),r1.startSpan({operation:"simulation_step"},()=>this._world.simulation.step(Z)),r1.startSpan({operation:"entities_emit_updates"},()=>this._world.entityManager.checkAndEmitUpdates()),r1.startSpan({operation:"network_synchronize"},()=>this._world.networkSynchronizer.synchronize()),r1.startSpan({operation:"release_tick_allocation"},()=>this._world.tickAllocator.reset())}),this._currentTick++,this.emitWithWorld(this._world,"WORLD_LOOP.TICK_END",{worldLoop:this,tickDurationMs:performance.now()-J})};_onTickError=(Z)=>{d.error(`WorldLoop._onTickError(): Error: ${Z}`),this.emitWithWorld(this._world,"WORLD_LOOP.TICK_ERROR",{worldLoop:this,error:Z})}}var Dm;((F)=>{F.SET_AMBIENT_LIGHT_COLOR="WORLD.SET_AMBIENT_LIGHT_COLOR";F.SET_AMBIENT_LIGHT_INTENSITY="WORLD.SET_AMBIENT_LIGHT_INTENSITY";F.SET_DIRECTIONAL_LIGHT_COLOR="WORLD.SET_DIRECTIONAL_LIGHT_COLOR";F.SET_DIRECTIONAL_LIGHT_INTENSITY="WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY";F.SET_DIRECTIONAL_LIGHT_POSITION="WORLD.SET_DIRECTIONAL_LIGHT_POSITION";F.SET_FOG_COLOR="WORLD.SET_FOG_COLOR";F.SET_FOG_FAR="WORLD.SET_FOG_FAR";F.SET_FOG_NEAR="WORLD.SET_FOG_NEAR";F.SET_SKYBOX_INTENSITY="WORLD.SET_SKYBOX_INTENSITY";F.START="WORLD.START";F.STOP="WORLD.STOP"})(Dm||={});class BU extends O0{_id;_ambientLightColor;_ambientLightIntensity;_audioManager;_blockTypeRegistry;_chatManager;_chunkLattice;_directionalLightColor;_directionalLightIntensity;_directionalLightPosition;_entityManager;_fogColor;_fogFar;_fogNear;_lightManager;_loop;_name;_networkSynchronizer;_particleEmitterManager;_sceneUIManager;_simulation;_skyboxIntensity;_skyboxUri;_tag;_tickAllocator;constructor(Z){super();if(this._id=Z.id,this._ambientLightColor=Z.ambientLightColor??{r:255,g:255,b:255},this._ambientLightIntensity=Z.ambientLightIntensity??1,this._directionalLightColor=Z.directionalLightColor??{r:255,g:255,b:255},this._directionalLightIntensity=Z.directionalLightIntensity??3,this._directionalLightPosition=Z.directionalLightPosition??{x:100,y:150,z:100},this._fogColor=Z.fogColor,this._fogFar=Z.fogFar??550,this._fogNear=Z.fogNear??500,this._name=Z.name,this._skyboxIntensity=Z.skyboxIntensity??1,this._skyboxUri=Z.skyboxUri,this._tag=Z.tag,this._audioManager=new D3(this),this._blockTypeRegistry=new jV(this),this._chatManager=new aV(this),this._chunkLattice=new sV(this),this._entityManager=new eV(this),this._lightManager=new WU(this),this._loop=new LU(this,Z.tickRate),this._networkSynchronizer=new WP(this),this._particleEmitterManager=new zU(this),this._sceneUIManager=new FU(this),this._simulation=new VU(this,Z.tickRate,Z.gravity),this._tickAllocator=new qU,Z.map)this.loadMap(Z.map)}get id(){return this._id}get ambientLightColor(){return this._ambientLightColor}get ambientLightIntensity(){return this._ambientLightIntensity}get blockTypeRegistry(){return this._blockTypeRegistry}get chatManager(){return this._chatManager}get chunkLattice(){return this._chunkLattice}get directionalLightColor(){return this._directionalLightColor}get directionalLightIntensity(){return this._directionalLightIntensity}get directionalLightPosition(){return this._directionalLightPosition}get entityManager(){return this._entityManager}get fogColor(){return this._fogColor}get fogFar(){return this._fogFar}get fogNear(){return this._fogNear}get lightManager(){return this._lightManager}get loop(){return this._loop}get name(){return this._name}get networkSynchronizer(){return this._networkSynchronizer}get particleEmitterManager(){return this._particleEmitterManager}get sceneUIManager(){return this._sceneUIManager}get simulation(){return this._simulation}get skyboxIntensity(){return this._skyboxIntensity}get skyboxUri(){return this._skyboxUri}get audioManager(){return this._audioManager}get tag(){return this._tag}get tickAllocator(){return this._tickAllocator}loadMap(Z){if(this.chunkLattice.clear(),Z.blockTypes)for(let J of Z.blockTypes)this.blockTypeRegistry.registerGenericBlockType({id:J.id,isLiquid:J.isLiquid,name:J.name,textureUri:J.textureUri});if(Z.blocks)for(let[J,X]of Object.entries(Z.blocks)){let[Y,$,Q]=J.split(",").map(Number);this.chunkLattice.setBlock({x:Y,y:$,z:Q},X)}if(Z.entities)for(let[J,X]of Object.entries(Z.entities)){let[Y,$,Q]=J.split(",").map(Number);new i8({isEnvironmental:!0,...X}).spawn(this,{x:Y,y:$,z:Q})}}setAmbientLightColor(Z){this._ambientLightColor=Z,this.emit("WORLD.SET_AMBIENT_LIGHT_COLOR",{world:this,color:Z})}setAmbientLightIntensity(Z){this._ambientLightIntensity=Z,this.emit("WORLD.SET_AMBIENT_LIGHT_INTENSITY",{world:this,intensity:Z})}setDirectionalLightColor(Z){this._directionalLightColor=Z,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",{world:this,color:Z})}setDirectionalLightIntensity(Z){this._directionalLightIntensity=Z,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",{world:this,intensity:Z})}setDirectionalLightPosition(Z){this._directionalLightPosition=Z,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",{world:this,position:Z})}setFogColor(Z){this._fogColor=Z,this.emit("WORLD.SET_FOG_COLOR",{world:this,color:Z})}setFogFar(Z){this._fogFar=Z,this.emit("WORLD.SET_FOG_FAR",{world:this,far:Z})}setFogNear(Z){this._fogNear=Z,this.emit("WORLD.SET_FOG_NEAR",{world:this,near:Z})}setSkyboxIntensity(Z){this._skyboxIntensity=Z,this.emit("WORLD.SET_SKYBOX_INTENSITY",{world:this,intensity:Z})}start(){if(this._loop.isStarted)return;this._loop.start(),this.emit("WORLD.START",{world:this,startedAtMs:Date.now()})}stop(){if(!this._loop.isStarted)return;this._loop.stop(),this.emit("WORLD.STOP",{world:this,stoppedAtMs:Date.now()})}serialize(){return P0.serializeWorld(this,this._tickAllocator)}}var S31;((J)=>J.WORLD_CREATED="WORLD_MANAGER.WORLD_CREATED")(S31||={});class EY{static instance=new EY;_defaultWorld;_nextWorldId=1;_worlds=new Map;createWorld(Z){let J=new BU({...Z,id:this._nextWorldId++});return J.start(),this._worlds.set(J.id,J),O0.globalInstance.emit("WORLD_MANAGER.WORLD_CREATED",{world:J}),J}getAllWorlds(){return Array.from(this._worlds.values())}getDefaultWorld(){return this._defaultWorld??=this.createWorld({name:"Default World",skyboxUri:"skyboxes/partly-cloudy"}),this._defaultWorld}getWorldsByTag(Z){let J=[];return this._worlds.forEach((X)=>{if(X.tag===Z)J.push(X)}),J}getWorld(Z){return this._worlds.get(Z)}setDefaultWorld(Z){this._defaultWorld=Z}}var v31;((Y)=>{Y.PLAYER_CONNECTED="PLAYER_MANAGER.PLAYER_CONNECTED";Y.PLAYER_DISCONNECTED="PLAYER_MANAGER.PLAYER_DISCONNECTED";Y.PLAYER_RECONNECTED="PLAYER_MANAGER.PLAYER_RECONNECTED"})(v31||={});class q9{static instance=new q9;worldSelectionHandler;_connectionPlayers=new Map;constructor(){O0.globalInstance.on("CONNECTION.OPENED",({connection:Z,req:J})=>{this._onConnectionOpened(Z,J.session)}),O0.globalInstance.on("CONNECTION.DISCONNECTED",({connection:Z})=>{this._onConnectionDisconnected(Z)}),O0.globalInstance.on("CONNECTION.RECONNECTED",({connection:Z})=>{this._onConnectionReconnected(Z)}),O0.globalInstance.on("CONNECTION.CLOSED",({connection:Z})=>{this._onConnectionClosed(Z)})}get playerCount(){return this._connectionPlayers.size}getConnectedPlayers(){return Array.from(this._connectionPlayers.values())}getConnectedPlayersByWorld(Z){return this.getConnectedPlayers().filter((J)=>J.world===Z)}getConnectedPlayerByUsername(Z){return Array.from(this._connectionPlayers.values()).find((J)=>{return J.username.toLowerCase()===Z.toLowerCase()})}async _onConnectionOpened(Z,J){let X=new CG(Z,J);await X.loadInitialPersistedData(),this._connectionPlayers.set(Z,X),O0.globalInstance.emit("PLAYER_MANAGER.PLAYER_CONNECTED",{player:X});let Y=await this.worldSelectionHandler?.(X);X.joinWorld(Y??EY.instance.getDefaultWorld())}_onConnectionDisconnected(Z){let J=this._connectionPlayers.get(Z);if(J)J.resetInputs(),J.camera.reset()}_onConnectionReconnected(Z){let J=this._connectionPlayers.get(Z);if(J)J.reconnected(),O0.globalInstance.emit("PLAYER_MANAGER.PLAYER_RECONNECTED",{player:J});else d.warning(`PlayerManager._onConnectionReconnected(): Connection ${Z.id} not in the PlayerManager._connectionPlayers map.`)}_onConnectionClosed(Z){let J=this._connectionPlayers.get(Z);if(J)J.disconnect(),this._connectionPlayers.delete(Z),O0.globalInstance.emit("PLAYER_MANAGER.PLAYER_DISCONNECTED",{player:J});else d.warning(`PlayerManager._onConnectionClosed(): Connection ${Z.id} not in the PlayerManager._connectionPlayers map.`)}}Buffer.poolSize=134217728;var x31;((X)=>{X.START="GAMESERVER.START";X.STOP="GAMESERVER.STOP"})(x31||={});function ZK6(Z){A31.default.init().then(()=>{return $K.instance.modelRegistry.preloadModels()}).then(()=>{if(Z.length>0)Z($K.instance.worldManager.getDefaultWorld());else Z();$K.instance.start()}).catch((J)=>{d.fatalError(`Failed to initialize the game engine, exiting. Error: ${J}`)})}class $K{static _instance;_modelRegistry=S5.instance;_playerManager=q9.instance;_socket=a7.instance;_worldManager=EY.instance;_webServer=FW.instance;constructor(){}static get instance(){if(!this._instance)this._instance=new $K;return this._instance}get modelRegistry(){return this._modelRegistry}get playerManager(){return this._playerManager}get socket(){return this._socket}get webServer(){return this._webServer}get worldManager(){return this._worldManager}start(){O0.globalInstance.emit("GAMESERVER.START",{startedAtMs:performance.now()}),this._webServer.start()}}var F6=r(GK(),1);class WK extends Float32Array{constructor(Z,J,X,Y){super([Z,J,X,Y])}get determinant(){return F6.mat2.determinant(this)}get frobeniusNorm(){return F6.mat2.frob(this)}static create(){let Z=new WK(0,0,0,0);return F6.mat2.identity(Z),Z}static fromRotation(Z){let J=WK.create();return F6.mat2.fromRotation(J,Z),J}static fromScaling(Z){let J=WK.create();return F6.mat2.fromScaling(J,Z),J}add(Z){return F6.mat2.add(this,this,Z),this}adjoint(){return F6.mat2.adjoint(this,this),this}clone(){return new WK(this[0],this[1],this[2],this[3])}copy(Z){return F6.mat2.copy(this,Z),this}equals(Z){return F6.mat2.equals(this,Z)}exactEquals(Z){return F6.mat2.exactEquals(this,Z)}identity(){return F6.mat2.identity(this),this}invert(){return F6.mat2.invert(this,this),this}multiply(Z){return F6.mat2.mul(this,this,Z),this}multiplyScalar(Z){return F6.mat2.multiplyScalar(this,this,Z),this}rotate(Z){return F6.mat2.rotate(this,this,Z),this}subtract(Z){return F6.mat2.sub(this,this,Z),this}toString(){return`[${this[0]},${this[1]}][${this[2]},${this[3]}]`}transpose(){return F6.mat2.transpose(this,this),this}}var R8=r(GK(),1);class UZ extends Float32Array{constructor(Z,J,X,Y,$,Q,K,G,W){super([Z,J,X,Y,$,Q,K,G,W])}get determinant(){return R8.mat3.determinant(this)}get frobeniusNorm(){return R8.mat3.frob(this)}static create(){let Z=new UZ(0,0,0,0,0,0,0,0,0);return R8.mat3.identity(Z),Z}static fromMatrix4(Z){let J=UZ.create();return R8.mat3.fromMat4(J,Z),J}static fromQuaternion(Z){let J=UZ.create();return R8.mat3.fromQuat(J,Z),J}static fromRotation(Z){let J=UZ.create();return R8.mat3.fromRotation(J,Z),J}static fromScaling(Z){let J=UZ.create();return R8.mat3.fromScaling(J,Z),J}static fromTranslation(Z){let J=UZ.create();return R8.mat3.fromTranslation(J,Z),J}add(Z){return R8.mat3.add(this,this,Z),this}adjoint(){return R8.mat3.adjoint(this,this),this}clone(){return new UZ(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8])}copy(Z){return R8.mat3.copy(this,Z),this}equals(Z){return R8.mat3.equals(this,Z)}exactEquals(Z){return R8.mat3.exactEquals(this,Z)}identity(){return R8.mat3.identity(this),this}invert(){return R8.mat3.invert(this,this),this}multiply(Z){return R8.mat3.mul(this,this,Z),this}multiplyScalar(Z){return R8.mat3.multiplyScalar(this,this,Z),this}transformVector(Z){return Z.transformMatrix3(this)}projection(Z,J){return R8.mat3.projection(this,Z,J),this}rotate(Z){return R8.mat3.rotate(this,this,Z),this}subtract(Z){return R8.mat3.sub(this,this,Z),this}toString(){return`[${this[0]},${this[1]},${this[2]}][${this[3]},${this[4]},${this[5]}][${this[6]},${this[7]},${this[8]}]`}transpose(){return R8.mat3.transpose(this,this),this}}var X1=r(GK(),1);class P5 extends Float32Array{constructor(Z,J,X,Y,$,Q,K,G,W,H,V,F,z,q,U,B){super([Z,J,X,Y,$,Q,K,G,W,H,V,F,z,q,U,B])}get determinant(){return X1.mat4.determinant(this)}get frobeniusNorm(){return X1.mat4.frob(this)}static create(){let Z=new P5(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return X1.mat4.identity(Z),Z}static fromQuaternion(Z){let J=P5.create();return X1.mat4.fromQuat(J,Z),J}static fromRotation(Z,J){let X=P5.create();return X1.mat4.fromRotation(X,Z,J),X}static fromRotationTranslation(Z,J){let X=P5.create();return X1.mat4.fromRotationTranslation(X,Z,J),X}static fromRotationTranslationScale(Z,J,X){let Y=P5.create();return X1.mat4.fromRotationTranslationScale(Y,Z,J,X),Y}static fromRotationTranslationScaleOrigin(Z,J,X,Y){let $=P5.create();return X1.mat4.fromRotationTranslationScaleOrigin($,Z,J,X,Y),$}static fromScaling(Z){let J=P5.create();return X1.mat4.fromScaling(J,Z),J}static fromTranslation(Z){let J=P5.create();return X1.mat4.fromTranslation(J,Z),J}static fromXRotation(Z){let J=P5.create();return X1.mat4.fromXRotation(J,Z),J}static fromYRotation(Z){let J=P5.create();return X1.mat4.fromYRotation(J,Z),J}static fromZRotation(Z){let J=P5.create();return X1.mat4.fromZRotation(J,Z),J}add(Z){return X1.mat4.add(this,this,Z),this}adjoint(){return X1.mat4.adjoint(this,this),this}clone(){return new P5(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8],this[9],this[10],this[11],this[12],this[13],this[14],this[15])}copy(Z){return X1.mat4.copy(this,Z),this}equals(Z){return X1.mat4.equals(this,Z)}exactEquals(Z){return X1.mat4.exactEquals(this,Z)}frustrum(Z,J,X,Y,$,Q){return X1.mat4.frustum(this,Z,J,X,Y,$,Q),this}identity(){return X1.mat4.identity(this),this}invert(){return X1.mat4.invert(this,this),this}lookAt(Z,J,X){return X1.mat4.lookAt(this,Z,J,X),this}multiply(Z){return X1.mat4.mul(this,this,Z),this}multiplyScalar(Z){return X1.mat4.multiplyScalar(this,this,Z),this}orthographic(Z,J,X,Y,$,Q){return X1.mat4.ortho(this,Z,J,X,Y,$,Q),this}perspective(Z,J,X,Y){return X1.mat4.perspective(this,Z,J,X,Y),this}rotate(Z,J){return X1.mat4.rotate(this,this,Z,J),this}rotateX(Z){return X1.mat4.rotateX(this,this,Z),this}rotateY(Z){return X1.mat4.rotateY(this,this,Z),this}rotateZ(Z){return X1.mat4.rotateZ(this,this,Z),this}scale(Z){return X1.mat4.scale(this,this,Z),this}subtract(Z){return X1.mat4.sub(this,this,Z),this}targetTo(Z,J,X){return X1.mat4.targetTo(this,Z,J,X),this}toString(){return`[${this[0]},${this[1]},${this[2]},${this[3]}][${this[4]},${this[5]},${this[6]},${this[7]}][${this[8]},${this[9]},${this[10]},${this[11]}][${this[12]},${this[13]},${this[14]},${this[15]}]`}translate(Z){return X1.mat4.translate(this,this,Z),this}transpose(){return X1.mat4.transpose(this,this),this}}var f1=r(GK(),1);class M3 extends Float32Array{constructor(Z,J,X,Y){super([Z,J,X,Y])}get length(){return f1.quat.length(this)}get squaredLength(){return f1.quat.squaredLength(this)}get magnitude(){return f1.quat.length(this)}get squaredMagnitude(){return f1.quat.squaredLength(this)}get x(){return this[0]}set x(Z){this[0]=Z}get y(){return this[1]}set y(Z){this[1]=Z}get z(){return this[2]}set z(Z){this[2]=Z}get w(){return this[3]}set w(Z){this[3]=Z}static fromEuler(Z,J,X){let Y=f1.quat.fromEuler(new Float32Array(4),Z,J,X);return new M3(Y[0],Y[1],Y[2],Y[3])}static fromQuaternionLike(Z){return new M3(Z.x,Z.y,Z.z,Z.w)}clone(){return new M3(this.x,this.y,this.z,this.w)}conjugate(){return f1.quat.conjugate(this,this),this}copy(Z){return f1.quat.copy(this,Z),this}dot(Z){return f1.quat.dot(this,Z)}exponential(){return f1.quat.exp(this,this),this}equals(Z){return f1.quat.equals(this,Z)}exactEquals(Z){return f1.quat.exactEquals(this,Z)}getAngle(Z){return f1.quat.getAngle(this,Z)}identity(){return f1.quat.identity(this),this}invert(){return f1.quat.invert(this,this),this}lerp(Z,J){return f1.quat.lerp(this,this,Z,J),this}logarithm(){return f1.quat.ln(this,this),this}multiply(Z){return f1.quat.multiply(this,this,Z),this}transformVector(Z){return Z.transformQuaternion(this)}normalize(){return f1.quat.normalize(this,this),this}power(Z){return f1.quat.pow(this,this,Z),this}randomize(){return f1.quat.random(this),this}rotateX(Z){return f1.quat.rotateX(this,this,Z),this}rotateY(Z){return f1.quat.rotateY(this,this,Z),this}rotateZ(Z){return f1.quat.rotateZ(this,this,Z),this}scale(Z){return f1.quat.scale(this,this,Z),this}setAxisAngle(Z,J){return f1.quat.setAxisAngle(this,Z,J),this}slerp(Z,J){return f1.quat.slerp(this,this,Z,J),this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}}var q1=r(GK(),1);class wU extends Float32Array{constructor(Z,J){super([Z,J])}get length(){return q1.vec2.length(this)}get squaredLength(){return q1.vec2.squaredLength(this)}get magnitude(){return q1.vec2.length(this)}get squaredMagnitude(){return q1.vec2.squaredLength(this)}get x(){return this[0]}set x(Z){this[0]=Z}get y(){return this[1]}set y(Z){this[1]=Z}static create(){return new wU(0,0)}add(Z){return q1.vec2.add(this,this,Z),this}angle(Z){return q1.vec2.angle(this,Z)}ceil(){return q1.vec2.ceil(this,this),this}clone(){return new wU(this.x,this.y)}copy(Z){return q1.vec2.copy(this,Z),this}distance(Z){return q1.vec2.distance(this,Z)}divide(Z){return q1.vec2.divide(this,this,Z),this}dot(Z){return q1.vec2.dot(this,Z)}equals(Z){return q1.vec2.equals(this,Z)}exactEquals(Z){return q1.vec2.exactEquals(this,Z)}floor(){return q1.vec2.floor(this,this),this}invert(){return q1.vec2.inverse(this,this),this}lerp(Z,J){return q1.vec2.lerp(this,this,Z,J),this}max(Z){return q1.vec2.max(this,this,Z),this}min(Z){return q1.vec2.min(this,this,Z),this}multiply(Z){return q1.vec2.mul(this,this,Z),this}negate(){return q1.vec2.negate(this,this),this}normalize(){return q1.vec2.normalize(this,this),this}randomize(Z){return q1.vec2.random(this,Z),this}rotate(Z,J){return q1.vec2.rotate(this,this,Z,J),this}round(){return q1.vec2.round(this,this),this}scale(Z){return q1.vec2.scale(this,this,Z),this}scaleAndAdd(Z,J){return q1.vec2.scaleAndAdd(this,this,Z,J),this}subtract(Z){return q1.vec2.sub(this,this,Z),this}toString(){return`${this.x},${this.y}`}transformMatrix2(Z){return q1.vec2.transformMat2(this,this,Z),this}transformMatrix3(Z){return q1.vec2.transformMat3(this,this,Z),this}transformMatrix4(Z){return q1.vec2.transformMat4(this,this,Z),this}zero(){return q1.vec2.zero(this),this}}var V1=r(GK(),1);class R3 extends Float32Array{constructor(Z,J,X){super([Z,J,X])}get length(){return V1.vec3.length(this)}get squaredLength(){return V1.vec3.squaredLength(this)}get magnitude(){return V1.vec3.length(this)}get squaredMagnitude(){return V1.vec3.squaredLength(this)}get x(){return this[0]}set x(Z){this[0]=Z}get y(){return this[1]}set y(Z){this[1]=Z}get z(){return this[2]}set z(Z){this[2]=Z}static create(){return new R3(0,0,0)}static fromVector3Like(Z){return new R3(Z.x,Z.y,Z.z)}add(Z){return V1.vec3.add(this,this,Z),this}ceil(){return V1.vec3.ceil(this,this),this}clone(){return new R3(this.x,this.y,this.z)}copy(Z){return V1.vec3.copy(this,Z),this}cross(Z){return V1.vec3.cross(this,this,Z),this}distance(Z){return V1.vec3.distance(this,Z)}divide(Z){return V1.vec3.div(this,this,Z),this}dot(Z){return V1.vec3.dot(this,Z)}equals(Z){return V1.vec3.equals(this,Z)}exactEquals(Z){return V1.vec3.exactEquals(this,Z)}floor(){return V1.vec3.floor(this,this),this}invert(){return V1.vec3.inverse(this,this),this}lerp(Z,J){return V1.vec3.lerp(this,this,Z,J),this}max(Z){return V1.vec3.max(this,this,Z),this}min(Z){return V1.vec3.min(this,this,Z),this}multiply(Z){return V1.vec3.mul(this,this,Z),this}negate(){return V1.vec3.negate(this,this),this}normalize(){return V1.vec3.normalize(this,this),this}randomize(Z){return V1.vec3.random(this,Z),this}rotateX(Z,J){return V1.vec3.rotateX(this,this,Z,J),this}rotateY(Z,J){return V1.vec3.rotateY(this,this,Z,J),this}rotateZ(Z,J){return V1.vec3.rotateZ(this,this,Z,J),this}round(){return V1.vec3.round(this,this),this}scale(Z){return V1.vec3.scale(this,this,Z),this}scaleAndAdd(Z,J){return V1.vec3.scaleAndAdd(this,this,Z,J),this}subtract(Z){return V1.vec3.sub(this,this,Z),this}toString(){return`${this.x},${this.y},${this.z}`}transformMatrix3(Z){return V1.vec3.transformMat3(this,this,Z),this}transformMatrix4(Z){return V1.vec3.transformMat4(this,this,Z),this}transformQuaternion(Z){return V1.vec3.transformQuat(this,this,Z),this}zero(){return V1.vec3.zero(this),this}}var NV1=r(MV1(),1);var RV1=0.099856;class jU extends _Y{faceSpeed=0;idleLoopedAnimations=[];idleLoopedAnimationsSpeed;jumpOneshotAnimations=[];moveLoopedAnimations=[];moveLoopedAnimationsSpeed;moveSpeed=0;_faceTarget;_jumpHeight=0;_moveCompletesWhenStuck=!1;_moveIgnoreAxes={};_moveStartMoveAnimations=!1;_moveStartIdleAnimationsOnCompletion=!0;_moveStoppingDistanceSquared=RV1;_moveStuckAccumulatorMs=0;_moveStuckLastPosition;_moveTarget;_onFace;_onFaceComplete;_onMove;_onMoveComplete;_stopFaceRequested=!1;_stopMoveRequested=!1;constructor(Z={}){super();this.idleLoopedAnimations=Z.idleLoopedAnimations??this.idleLoopedAnimations,this.idleLoopedAnimationsSpeed=Z.idleLoopedAnimationsSpeed??this.idleLoopedAnimationsSpeed,this.jumpOneshotAnimations=Z.jumpOneshotAnimations??this.jumpOneshotAnimations,this.moveLoopedAnimations=Z.moveLoopedAnimations??this.moveLoopedAnimations,this.moveLoopedAnimationsSpeed=Z.moveLoopedAnimationsSpeed??this.moveLoopedAnimationsSpeed}spawn(Z){super.spawn(Z),this._startIdleAnimations(Z)}face(Z,J,X){this._faceTarget=Z,this.faceSpeed=J,this._onFace=X?.faceCallback,this._onFaceComplete=X?.faceCompleteCallback}jump(Z){this._jumpHeight=Z}move(Z,J,X){this.moveSpeed=J,this._moveCompletesWhenStuck=X?.moveCompletesWhenStuck??!1,this._moveIgnoreAxes=X?.moveIgnoreAxes??{},this._moveStartIdleAnimationsOnCompletion=X?.moveStartIdleAnimationsOnCompletion??!0,this._moveStartMoveAnimations=!0,this._moveStoppingDistanceSquared=X?.moveStoppingDistance?X.moveStoppingDistance**2:RV1,this._moveTarget=Z,this._onMove=X?.moveCallback,this._onMoveComplete=X?.moveCompleteCallback,this._moveStuckAccumulatorMs=0,this._moveStuckLastPosition=void 0}stopFace(){this._stopFaceRequested=!0}stopMove(){this._stopMoveRequested=!0}tick(Z,J){if(super.tick(Z,J),!this._moveTarget&&!this._faceTarget&&!this._jumpHeight)return;if(this._moveStartMoveAnimations)this._startMoveAnimations(Z),this._moveStartMoveAnimations=!1;let X=J/1000,Y=Z.position;if(Z.isDynamic&&this._jumpHeight>0){let $=Math.abs(Z.world.simulation.gravity.y),Q=Math.sqrt(2*$*this._jumpHeight);Z.applyImpulse({x:0,y:Q*Z.mass,z:0}),this._jumpHeight=0,this._startJumpAnimations(Z)}if(this._moveTarget){let $={x:this._moveIgnoreAxes.x?0:this._moveTarget.x-Y.x,y:this._moveIgnoreAxes.y?0:this._moveTarget.y-Y.y,z:this._moveIgnoreAxes.z?0:this._moveTarget.z-Y.z},Q=$.x*$.x+$.y*$.y+$.z*$.z,K=!1;if(this._moveCompletesWhenStuck){if(this._moveStuckAccumulatorMs+=J,this._moveStuckAccumulatorMs>=500){if(this._moveStuckLastPosition){let G=Y.x-this._moveStuckLastPosition.x,W=Y.y-this._moveStuckLastPosition.y,H=Y.z-this._moveStuckLastPosition.z;K=Math.sqrt(G*G+W*W+H*H)<this.moveSpeed*0.1}this._moveStuckLastPosition=Y,this._moveStuckAccumulatorMs=0}}if(Q>this._moveStoppingDistanceSquared&&!this._stopMoveRequested&&!K){let G=Math.sqrt(Q),W=this.moveSpeed*X,V=Math.min(G,W)/G,F={x:Y.x+$.x*V,y:Y.y+$.y*V,z:Y.z+$.z*V};if(Z.setPosition(F),this._onMove)this._onMove(F,this._moveTarget)}else{if(this._moveStuckAccumulatorMs=0,this._moveStuckLastPosition=void 0,this._moveTarget=void 0,this._stopMoveRequested=!1,this._moveStartIdleAnimationsOnCompletion)this._startIdleAnimations(Z);if(this._onMoveComplete){let G=this._onMoveComplete;this._onMove=void 0,this._onMoveComplete=void 0,G(Y)}}}if(this._faceTarget){let $={x:this._faceTarget.x-Y.x,z:this._faceTarget.z-Y.z},Q=Math.atan2(-$.x,-$.z),K=Z.rotation,G=Math.atan2(2*(K.w*K.y),1-2*(K.y*K.y)),W=Q-G;while(W>Math.PI)W-=2*Math.PI;while(W<-Math.PI)W+=2*Math.PI;if(Math.abs(W)>0.01&&!this._stopFaceRequested){let H=this.faceSpeed*X,V=Math.abs(W)<H?W:Math.sign(W)*H,z=(G+V)/2,q={x:0,y:Math.fround(Math.sin(z)),z:0,w:Math.fround(Math.cos(z))};if(Z.setRotation(q),this._onFace)this._onFace(K,q)}else if(this._faceTarget=void 0,this._stopFaceRequested=!1,this._onFaceComplete){let H=this._onFaceComplete;this._onFace=void 0,this._onFaceComplete=void 0,H(Z.rotation)}}}_startIdleAnimations(Z){if(this.idleLoopedAnimationsSpeed)Z.setModelAnimationsPlaybackRate(this.idleLoopedAnimationsSpeed);Z.stopModelAnimations(this.moveLoopedAnimations),Z.stopModelAnimations(this.jumpOneshotAnimations),Z.startModelLoopedAnimations(this.idleLoopedAnimations)}_startJumpAnimations(Z){Z.stopModelAnimations(this.moveLoopedAnimations),Z.stopModelAnimations(this.idleLoopedAnimations),Z.startModelOneshotAnimations(this.jumpOneshotAnimations)}_startMoveAnimations(Z){if(this.moveLoopedAnimationsSpeed)Z.setModelAnimationsPlaybackRate(this.moveLoopedAnimationsSpeed);Z.stopModelAnimations(this.jumpOneshotAnimations),Z.stopModelAnimations(this.idleLoopedAnimations),Z.startModelLoopedAnimations(this.moveLoopedAnimations)}}class Am extends jU{_debug=!1;_entity;_maxFall=0;_maxJump=0;_maxOpenSetIterations=200;_onPathfindAbort;_onPathfindComplete;_onWaypointMoveComplete;_onWaypointMoveSkipped;_speed=0;_target;_verticalPenalty=0;_waypoints=[];_waypointNextIndex=0;_waypointStoppingDistance;_waypointTimeoutMs=2000;constructor(Z={}){super(Z)}get debug(){return this._debug}get maxFall(){return this._maxFall}get maxJump(){return this._maxJump}get maxOpenSetIterations(){return this._maxOpenSetIterations}get speed(){return this._speed}get target(){return this._target}get verticalPenalty(){return this._verticalPenalty}get waypoints(){return this._waypoints}get waypointNextIndex(){return this._waypointNextIndex}get waypointTimeoutMs(){return this._waypointTimeoutMs}pathfind(Z,J,X){if(this._target=Z,this._speed=J,this._debug=X?.debug??!1,this._maxFall=X?.maxFall?-Math.abs(X.maxFall):0,this._maxJump=X?.maxJump?Math.abs(X.maxJump):0,this._maxOpenSetIterations=X?.maxOpenSetIterations??200,this._onPathfindAbort=X?.pathfindAbortCallback,this._onPathfindComplete=X?.pathfindCompleteCallback,this._onWaypointMoveComplete=X?.waypointMoveCompleteCallback,this._onWaypointMoveSkipped=X?.waypointMoveSkippedCallback,this._verticalPenalty=X?.verticalPenalty??0,this._waypoints=[],this._waypointNextIndex=0,this._waypointStoppingDistance=X?.waypointStoppingDistance,this._waypointTimeoutMs=X?.waypointTimeoutMs??2000/J,!this._calculatePath())return!1;return this._moveToNextWaypoint(),!0}attach(Z){super.attach(Z),this._entity=Z}detach(Z){super.detach(Z),this._entity=void 0}_calculatePath(){if(!this._target||!this._entity?.world)return d.error("PathfindingEntityController._calculatePath: No target or world"),!1;let Z=this._entity.height,J=this._findGroundedStart();if(!J){if(this._debug)d.warning(`PathfindingEntityController._calculatePath: No valid grounded start found within maxFall distance, path search aborted. Start: ${this._coordinateToKey(this._target)}, Target: ${this._coordinateToKey(this._target)}`);return!1}let X={x:Math.floor(this._target.x),y:Math.floor(this._target.y),z:Math.floor(this._target.z)},Y=Math.abs(X.x-J.x),$=Math.abs(X.y-J.y),Q=Math.abs(X.z-J.z);if(Y<=2&&$<=2&&Q<=2&&!this._isNeighborCoordinateBlocked(J,X,this._entity.height))return this._waypoints=[{x:J.x+0.5,y:J.y+Z/2,z:J.z+0.5},{x:X.x+0.5,y:X.y+Z/2,z:X.z+0.5}],!0;if(J.x===X.x&&J.y===X.y&&J.z===X.z)return this._waypoints=[{x:J.x+0.5,y:J.y+Z/2,z:J.z+0.5}],!0;let G=this._coordinateToKey(J),W=new Map,H=new Map([[G,0]]),V=new Map([[G,this._pathfindingHeuristic(J,X)]]),F=new Set,z=new NV1.Heap((M,R)=>{let D=V.get(M[0])??1/0,N=V.get(R[0])??1/0;return D-N});z.push([G,J]);let q=[{x:0,y:0,z:1},{x:1,y:0,z:0},{x:0,y:0,z:-1},{x:-1,y:0,z:0},{x:1,y:0,z:1},{x:1,y:0,z:-1},{x:-1,y:0,z:1},{x:-1,y:0,z:-1}],U=[];for(let M=this._maxJump;M>=this._maxFall;M--){if(M===0)continue;let R=Math.abs(J.y+M-X.y);U.push({y:M,distanceToTargetY:R})}U.sort((M,R)=>M.distanceToTargetY-R.distanceToTargetY);let B=[...q,...U.flatMap(({y:M})=>q.map((R)=>({...R,y:M})))],L=0,w=Math.abs(X.x-J.x)+Math.abs(X.y-J.y)+Math.abs(X.z-J.z),O=Math.min(this._maxOpenSetIterations,w*20);while(!z.isEmpty()&&L<O){L++;let[M,R]=z.pop();if(R.x===X.x&&R.y===X.y&&R.z===X.z){let C=this._reconstructPath(W,R);if(this._waypoints=C.map((T)=>({x:T.x+0.5,y:T.y+Z/2,z:T.z+0.5})),this._debug)console.log(`PathfindingEntityController._calculatePath: Path found after ${L} open set iterations. Start: ${this._coordinateToKey(J)}, Target: ${this._coordinateToKey(this._target)}`);return!0}F.add(M);let D=H.get(M),N=new Map;for(let C of B){let T=`${C.x},${C.z}`,E=C.y<0;if(E&&N.has(T))continue;let x={x:R.x+C.x,y:R.y+C.y,z:R.z+C.z};if(Math.abs(X.x-x.x)+Math.abs(X.y-x.y)+Math.abs(X.z-x.z)>w*1.5)continue;let h=this._coordinateToKey(x);if(F.has(h))continue;let I=this._isNeighborCoordinateBlocked(R,x,this._entity.height);if(E&&I){N.set(T,!0);continue}if(I)continue;let _=Math.abs(C.x),A=Math.abs(C.y),p=Math.abs(C.z),n=A===0?0:this._verticalPenalty,o=(Math.max(_,A,p)===1&&_+A+p>1?1.4:1)+n,Q0=D+o,G0=H.get(h)??1/0;if(Q0>=G0)continue;W.set(h,R),H.set(h,Q0);let S0=Q0+this._pathfindingHeuristic(x,X);V.set(h,S0),z.push([h,x])}}if(L>=O){if(this._onPathfindAbort?.(),this._debug)d.warning(`PathfindingEntityController._calculatePath: Maximum open set iterations reached (${O}), path search aborted. Start: ${this._coordinateToKey(J)}, Target: ${this._coordinateToKey(this._target)}`)}else if(this._debug)d.warning(`PathfindingEntityController._calculatePath: No valid path found. Start: ${this._coordinateToKey(J)}, Target: ${this._coordinateToKey(this._target)}`);return this._target=void 0,this._waypoints=[],!1}_reconstructPath(Z,J){let X=[J],Y=J;while(Z.has(this._coordinateToKey(Y)))Y=Z.get(this._coordinateToKey(Y)),X.unshift(Y);return X}_coordinateToKey(Z){return`${Z.x},${Z.y},${Z.z}`}_moveToNextWaypoint(){let Z=this._waypointNextIndex>0?this._waypoints[this._waypointNextIndex-1]:void 0,J=this._waypoints[this._waypointNextIndex];if(!J||!this._entity)return;let X=0;if(this._entity.isDynamic&&Z&&J.y>Z.y){let Y=J.y-Z.y,$=Math.min(Y,this._maxJump)+0.75;this.jump($);let Q=Math.abs(this._entity.world.simulation.gravity.y),K=Math.sqrt(2*Q*$),G=Z.x+0.5,W=Z.z+0.5,H=J.x+0.5,V=J.z+0.5,F=H-G,z=V-W,q=Math.sqrt(F*F+z*z),U=K/Q,B=q/this._speed;X=Math.min(U*0.8,B)*1000}setTimeout(()=>{if(!this._entity)return;let Y=Date.now();this.face(J,this._speed),this.move(J,this._speed,{moveCompletesWhenStuck:!0,moveIgnoreAxes:{y:this._entity.isDynamic},moveStartIdleAnimationsOnCompletion:this._waypointNextIndex===this._waypoints.length-1,moveStoppingDistance:this._waypointStoppingDistance,moveCallback:()=>{if(Date.now()-Y>this._waypointTimeoutMs&&this._waypointNextIndex<this._waypoints.length-1)this._onWaypointMoveSkipped?.(J,this._waypointNextIndex),this._waypointNextIndex++,this._moveToNextWaypoint()},moveCompleteCallback:()=>{if(this._waypointNextIndex<this._waypoints.length-1)this._onWaypointMoveComplete?.(J,this._waypointNextIndex),this._waypointNextIndex++,this._moveToNextWaypoint();else this._onPathfindComplete?.()}})},X)}_pathfindingHeuristic(Z,J){return Math.abs(Z.x-J.x)+Math.abs(Z.y-J.y)+Math.abs(Z.z-J.z)}_isNeighborCoordinateBlocked(Z,J,X){if(!this._entity?.world)return!1;let Y=this._entity.world,$=Math.floor(J.x),Q=Math.floor(J.y),K=Math.floor(J.z),G=Math.floor(Z.x),W=Math.floor(Z.z);if(!Y.chunkLattice.hasBlock({x:$,y:Q-1,z:K}))return!0;for(let H=0;H<X;H++)if(Y.chunkLattice.hasBlock({x:$,y:Q+H,z:K}))return!0;if($!==G&&K!==W)for(let H=0;H<X;H++){let V=Y.chunkLattice.hasBlock({x:$,y:Q+H,z:W}),F=Y.chunkLattice.hasBlock({x:G,y:Q+H,z:K});if(V||F)return!0}return!1}_findGroundedStart(){if(!this._entity?.world)return;let{x:Z,y:J,z:X}=this._entity.position,Y={x:Math.floor(Z),y:Math.floor(J),z:Math.floor(X)};for(let $=0;$<=Math.abs(this._maxFall);$++)if(this._entity.world.chunkLattice.hasBlock({...Y,y:Y.y-$-1}))return{...Y,y:Y.y-$};return}}export{ZK6 as startServer,S31 as WorldManagerEvent,EY as WorldManager,_31 as WorldLoopEvent,LU as WorldLoop,Dm as WorldEvent,BU as World,sv as WebServerEvent,FW as WebServer,R3 as Vector3,wU as Vector2,UU as Ticker,qU as TickAllocator,YK as TelemetrySpanOperation,r1 as Telemetry,Pm as SimulationEvent,VU as Simulation,jU as SimpleEntityController,FU as SceneUIManager,tI as SceneUIEvent,tV as SceneUI,Q50 as SUPPORTED_INPUT_KEYS,BV as RigidBodyType,O$ as RigidBody,M3 as Quaternion,lw as PlayerUIEvent,iV as PlayerUI,v31 as PlayerManagerEvent,q9 as PlayerManager,nV as PlayerEvent,y7 as PlayerEntity,$50 as PlayerCameraMode,aI as PlayerCameraEvent,pV as PlayerCamera,CG as Player,E$ as PersistenceManager,Am as PathfindingEntityController,zU as ParticleEmitterManager,Mm as ParticleEmitterEvent,Rm as ParticleEmitter,nv as PORT,V50 as PLAYER_ROTATION_UPDATE_THRESHOLD,H50 as PLAYER_POSITION_UPDATE_THRESHOLD_SQ,S5 as ModelRegistry,P5 as Matrix4,UZ as Matrix3,WK as Matrix2,I31 as LightType,WU as LightManager,jm as LightEvent,Om as Light,z6 as IterationMap,x31 as GameServerEvent,$K as GameServer,O0 as EventRouter,d as ErrorHandler,eV as EntityManager,rV as EntityEvent,i8 as Entity,W50 as ENTITY_ROTATION_UPDATE_THRESHOLD,G50 as ENTITY_POSITION_UPDATE_THRESHOLD_SQ,y1 as DefaultPlayerEntityController,eI as DefaultPlayerEntity,K50 as DEFAULT_ENTITY_RIGID_BODY_OPTIONS,T4 as CollisionGroupsBuilder,yY as CollisionGroup,wV as ColliderShape,oV as ColliderMap,Q9 as Collider,qk as CoefficientCombineRule,rI as ChunkLatticeEvent,sV as ChunkLattice,W9 as Chunk,aV as ChatManager,sI as ChatEvent,Lk as BlockTypeRegistryEvent,jV as BlockTypeRegistry,Uk as BlockTypeEvent,K9 as BlockType,FK as Block,mm as BaseEntityControllerEvent,_Y as BaseEntityController,D3 as AudioManager,CP as AudioEvent,P3 as Audio};
493
+ `);let{connect:W,buffered:H}=await G;if(Z.emit("proxyConnect",W),this.emit("proxyConnect",W,Z),W.statusCode===200){if(Z.once("socket",DQ6),J.secureEndpoint){KU("Upgrading socket connection to TLS");let F=J.servername||J.host;return zm.connect({...z31(J,"host","path","port"),socket:Y,servername:kJ.isIP(F)?void 0:F})}return Y}Y.destroy();let V=new kJ.Socket({writable:!1});return V.readable=!0,Z.once("socket",(F)=>{KU("Replaying proxy buffer for failed request"),F.push(H),F.push(null)}),V}}ZP.__initStatic();function DQ6(Z){Z.resume()}function z31(Z,...J){let X={},Y;for(Y in Z)if(!J.includes(Y))X[Y]=Z[Y];return X}var IQ6=32768;function _Q6(Z){return new EQ6({read(){this.push(Z),this.push(null)}})}function JP(Z){let J;try{J=new URL(Z.url)}catch(W){return $8(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),EW(Z,()=>Promise.resolve({}))}let X=J.protocol==="https:",Y=SQ6(J,Z.proxy||(X?process.env.https_proxy:void 0)||process.env.http_proxy),$=X?TQ6:CQ6,Q=Z.keepAlive===void 0?!1:Z.keepAlive,K=Y?new ZP(Y):new $.Agent({keepAlive:Q,maxSockets:30,timeout:2000}),G=vQ6(Z,Z.httpModule??$,K);return EW(Z,G)}function SQ6(Z,J){let{no_proxy:X}=process.env;if(X?.split(",").some(($)=>Z.host.endsWith($)||Z.hostname.endsWith($)))return;else return J}function vQ6(Z,J,X){let{hostname:Y,pathname:$,port:Q,protocol:K,search:G}=new URL(Z.url);return function W(H){return new Promise((V,F)=>{EF(()=>{let z=_Q6(H.body),q={...Z.headers};if(H.body.length>IQ6)q["content-encoding"]="gzip",z=z.pipe(kQ6());let U=J.request({method:"POST",agent:X,headers:q,hostname:Y,path:`${$}${G}`,port:Q,protocol:K,ca:Z.caCerts},(B)=>{B.on("data",()=>{}),B.on("end",()=>{}),B.setEncoding("utf8");let L=B.headers["retry-after"]??null,w=B.headers["x-sentry-rate-limits"]??null;V({statusCode:B.statusCode,headers:{"retry-after":L,"x-sentry-rate-limits":Array.isArray(w)?w[0]||null:w}})});U.on("error",F),z.pipe(U)})})}}var AQ6=new Set(["false","f","n","no","off","0"]),xQ6=new Set(["true","t","y","yes","on","1"]);function XP(Z,J){let X=String(Z).toLowerCase();if(AQ6.has(X))return!1;if(xQ6.has(X))return!0;return J?.strict?null:Boolean(Z)}import{posix as hQ6,sep as fQ6}from"node:path";function F31(Z){return Z.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function YP(Z=process.argv[1]?qx(process.argv[1]):process.cwd(),J=fQ6==="\\"){let X=J?F31(Z):Z;return(Y)=>{if(!Y)return;let $=J?F31(Y):Y,{dir:Q,base:K,ext:G}=hQ6.parse($);if(G===".js"||G===".mjs"||G===".cjs")K=K.slice(0,G.length*-1);let W=decodeURIComponent(K);if(!Q)Q=".";let H=Q.lastIndexOf("/node_modules");if(H>-1)return`${Q.slice(H+14).replace(/\//g,".")}:${W}`;if(Q.startsWith(X)){let V=Q.slice(X.length+1).replace(/\//g,".");return V?`${V}:${W}`:W}return W}}function $P(Z){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(j0.SENTRY_RELEASE?.id)return j0.SENTRY_RELEASE.id;let J=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,X=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,Y=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return J||X||Y||Z}var QP=AO(Cx(YP()));var U31=r(X0(),1),L31=r(K1(),1);import*as q31 from"node:os";import{threadId as yQ6,isMainThread as bQ6}from"worker_threads";var gQ6=60000;class GU extends aO{constructor(Z){let J=Z.serverName||global.process.env.SENTRY_NAME||q31.hostname(),X={...Z,platform:"node",runtime:{name:"node",version:global.process.version},serverName:J};if(Z.openTelemetryInstrumentations)L31.registerInstrumentations({instrumentations:Z.openTelemetryInstrumentations});$x(X,"node"),g.log(`Initializing Sentry: process: ${process.pid}, thread: ${bQ6?"main":`worker-${yQ6}`}.`);super(X);if(this.getOptions()._experiments?.enableLogs){if(this._logOnExitFlushListener=()=>{yX(this)},J)this.on("beforeCaptureLog",(Y)=>{Y.attributes={...Y.attributes,"server.address":J}});process.on("beforeExit",this._logOnExitFlushListener)}}get tracer(){if(this._tracer)return this._tracer;let Z="@sentry/node",J=L8,X=U31.trace.getTracer(Z,J);return this._tracer=X,X}async flush(Z){let X=this.traceProvider?.activeSpanProcessor;if(X)await X.forceFlush();if(this.getOptions().sendClientReports)this._flushOutcomes();return super.flush(Z)}close(Z){if(this._clientReportInterval)clearInterval(this._clientReportInterval);if(this._clientReportOnExitFlushListener)process.off("beforeExit",this._clientReportOnExitFlushListener);if(this._logOnExitFlushListener)process.off("beforeExit",this._logOnExitFlushListener);return super.close(Z)}startClientReportTracking(){let Z=this.getOptions();if(Z.sendClientReports)this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{m0&&g.log("Flushing client reports based on interval."),this._flushOutcomes()},Z.clientReportFlushInterval??gQ6).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener)}_getTraceInfoFromScope(Z){if(!Z)return[void 0,void 0];return h41(this,Z)}}var F7=r(X0(),1),B31=r(iy(),1),w31=r(sy(),1),O3=r(P1(),1);var j31=r($y(),1);import mQ6 from"module";var Fm=1e6;function KP(Z,J={}){if(Z.getOptions().debug)M31();let X=dQ6(Z,J);Z.traceProvider=X}function qm(){let[Z=0,J=0]=process.versions.node.split(".").map(Number);if(Z>=21||Z===20&&J>=6||Z===18&&J>=19){if(!j0._sentryEsmLoaderHookRegistered)try{let{addHookMessagePort:X}=j31.createAddHookMessageChannel();mQ6.register("import-in-the-middle/hook.mjs",import.meta.url,{data:{addHookMessagePort:X,include:[]},transferList:[X]})}catch(X){g.warn("Failed to register ESM hook",X)}}else $8(()=>{console.warn(`[Sentry] You are using Node.js v${process.versions.node} in ESM mode ("import syntax"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS ("require() syntax"), or upgrade your Node.js version.`)})}function O31(Z={}){let{debug:J}=Z;if(J)g.enable(),M31();if(!U4())qm();uQ6(Z.integrations).forEach((X)=>{if(X(),J)g.log(`[Sentry] Preloaded ${X.id} instrumentation`)})}function uQ6(Z){let J=H31();if(!Z)return J;return J.filter((X)=>Z.includes(X.id))}function dQ6(Z,J={}){let X=new w31.BasicTracerProvider({sampler:new Lb(Z),resource:new B31.Resource({[O3.ATTR_SERVICE_NAME]:"node",[O3.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[O3.ATTR_SERVICE_VERSION]:L8}),forceFlushTimeoutMillis:500,spanProcessors:[new Ub({timeout:cQ6(Z.getOptions().maxSpanWaitDuration)}),...J.spanProcessors||[]]});return F7.trace.setGlobalTracerProvider(X),F7.propagation.setGlobalPropagator(new Hb),F7.context.setGlobalContextManager(new rN),X}function cQ6(Z){if(Z==null)return;if(Z>Fm)return m0&&g.warn(`\`maxSpanWaitDuration\` is too high, using the maximum value of ${Fm}`),Fm;else if(Z<=0||Number.isNaN(Z)){m0&&g.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return Z}function M31(){let Z=new Proxy(g,{get(J,X,Y){return Reflect.get(J,X==="verbose"?"debug":X,Y)}});F7.diag.disable(),F7.diag.setLogger(Z,F7.DiagLogLevel.DEBUG)}function lQ6(){return U4()?[cR()]:[]}function Um(){return[fF(),hF(),yF(),bF(),gF(),SR(),hR(),lR(),pR(),gR(),dR(),bR(),sN(),W31(),...lQ6()]}function Lm(Z){return[...Um(),...z5(Z)?tN():[]]}function GP(Z={}){return N31(Z,Lm)}function R31(Z={}){return N31(Z,()=>[])}function N31(Z={},J){let X=pQ6(Z,J);if(X.debug===!0)if(m0)g.enable();else $8(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")});if(!U4()&&X.registerEsmLoaderHooks!==!1)qm();if(ER(),l0().update(X.initialScope),X.spotlight&&!X.integrations.some(({name:Q})=>Q===og))X.integrations.push(yN({sidecarUrl:typeof X.spotlight==="string"?X.spotlight:void 0}));let $=new GU(X);if(l0().setClient($),$.init(),g.log(`Running in ${U4()?"CommonJS":"ESM"} mode.`),$.startClientReportTracking(),aQ6(),!X.skipOpenTelemetrySetup)KP($,{spanProcessors:X.openTelemetrySpanProcessors}),Bm();return T41($),f41($),$}function Bm(){if(!m0)return;let Z=_41(),J=["SentryContextManager","SentryPropagator"];if(z5())J.push("SentrySpanProcessor");for(let X of J)if(!Z.includes(X))g.error(`You have to set up the ${X}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);if(!Z.includes("SentrySampler"))g.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}function pQ6(Z,J){let X=iQ6(Z.release),Y=Z.spotlight??XP(process.env.SENTRY_SPOTLIGHT,{strict:!0})??process.env.SENTRY_SPOTLIGHT,$=nQ6(Z.tracesSampleRate),Q={...Z,dsn:Z.dsn??process.env.SENTRY_DSN,environment:Z.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:Z.sendClientReports??!0,transport:Z.transport??JP,stackParser:UA(Z.stackParser||QP),release:X,tracesSampleRate:$,spotlight:Y,debug:XP(Z.debug??process.env.SENTRY_DEBUG)},K=Z.integrations,G=Z.defaultIntegrations??J(Q);return{...Q,integrations:nA({defaultIntegrations:G,integrations:K})}}function iQ6(Z){if(Z!==void 0)return Z;let J=$P();if(J!==void 0)return J;return}function nQ6(Z){if(Z!==void 0)return Z;let J=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!J)return;let X=parseFloat(J);return isFinite(X)?X:void 0}function aQ6(){if(XP(process.env.SENTRY_USE_ENVIRONMENT)!==!1){let Z=process.env.SENTRY_TRACE,J=process.env.SENTRY_BAGGAGE,X=QQ(Z,J);l0().setPropagationContext(X)}}var sQ6=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];function XK(Z){return sQ6.reduce((J,[X,Y])=>J.replace(new RegExp(X,"gi"),Y),Z)}var P31="Automatic instrumentation of CronJob only supports crontab string";function D31(Z,J){let X=!1;return new Proxy(Z,{construct(Y,$){let[Q,K,G,W,H,...V]=$;if(typeof Q!=="string")throw new Error(P31);if(X)throw new Error(`A job named '${J}' has already been scheduled`);X=!0;let F=XK(Q);async function z(q,U){return o7(J,async()=>{try{await K(q,U)}catch(B){throw F1(B),B}},{schedule:{type:"crontab",value:F},timezone:H||void 0})}return new Y(Q,z,G,W,H,...V)},get(Y,$){if($==="from")return(Q)=>{let{cronTime:K,onTick:G,timeZone:W}=Q;if(typeof K!=="string")throw new Error(P31);if(X)throw new Error(`A job named '${J}' has already been scheduled`);X=!0;let H=XK(K);return Q.onTick=async(V,F)=>{return o7(J,async()=>{try{await G(V,F)}catch(z){throw F1(z),z}},{schedule:{type:"crontab",value:H},timezone:W||void 0})},Y.from(Q)};else return Y[$]}})}function C31(Z){return new Proxy(Z,{get(J,X){if(X==="schedule"&&J.schedule)return new Proxy(J.schedule,{apply(Y,$,Q){let[K,G,W]=Q,H=W?.name,V=W?.timezone;if(!H)throw new Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');let F=async()=>{return o7(H,async()=>{try{return await G()}catch(z){throw F1(z),z}},{schedule:{type:"crontab",value:XK(K)},timezone:V})};return Y.apply($,[K,F,W])}});else return J[X]}})}function T31(Z){return new Proxy(Z,{get(J,X){if(X==="scheduleJob")return new Proxy(J.scheduleJob,{apply(Y,$,Q){let[K,G,W]=Q;if(typeof K!=="string"||typeof G!=="string"||typeof W!=="function")throw new Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");let H=K,V=G;async function F(){return o7(H,async()=>{await W?.()},{schedule:{type:"crontab",value:XK(V)}})}return Y.apply($,[H,V,F])}});return J[X]}})}var E31={instrumentCron:D31,instrumentNodeCron:C31,instrumentNodeSchedule:T31};var YK;((L)=>{L.BUILD_PACKETS="build_packets";L.ENTITIES_EMIT_UPDATES="entities_emit_updates";L.ENTITIES_TICK="entities_tick";L.NETWORK_SYNCHRONIZE="network_synchronize";L.NETWORK_SYNCHRONIZE_CLEANUP="network_synchronize_cleanup";L.PHYSICS_CLEANUP="physics_cleanup";L.PHYSICS_STEP="physics_step";L.RELEASE_TICK_ALLOCATION="release_tick_allocation";L.SEND_ALL_PACKETS="send_all_packets";L.SEND_PACKETS="send_packets";L.SERIALIZE_FREE_BUFFERS="serialize_free_buffers";L.SERIALIZE_PACKETS="serialize_packets";L.SERIALIZE_PACKETS_ENCODE="serialize_packets_encode";L.SIMULATION_STEP="simulation_step";L.TICKER_TICK="ticker_tick";L.WORLD_TICK="world_tick"})(YK||={});class r1{static getProcessStats(Z=!1){let J=process.memoryUsage(),X={jsHeapSizeMb:{value:J.heapUsed/1024/1024,unit:"megabyte"},jsHeapCapacityMb:{value:J.heapTotal/1024/1024,unit:"megabyte"},jsHeapUsagePercent:{value:J.heapUsed/J.heapTotal,unit:"percent"},processHeapSizeMb:{value:J.heapUsed/1024/1024,unit:"megabyte"},rssSizeMb:{value:J.rss/1024/1024,unit:"megabyte"}};if(Z)return X;return Object.fromEntries(Object.entries(X).map(([Y,$])=>[Y,$.value]))}static initializeSentry(Z,J=50){GP({dsn:Z,release:av,environment:process.env.NODE_ENV||"development",tracesSampleRate:1,initialScope:{tags:{gameId:process.env.HYTOPIA_GAME_ID??"unknown",gameSlug:process.env.HYTOPIA_GAME_SLUG??"unknown",lobbyId:process.env.HYTOPIA_LOBBY_ID??"unknown",region:process.env.REGION??"unknown"}},beforeSend:(X)=>{return X.extra=r1.getProcessStats(),X},beforeSendTransaction:(X)=>{if(X.contexts?.trace?.op==="ticker_tick"){let $=X?.start_timestamp,Q=X?.timestamp;if(!$||!Q)return null;if((Q-$)*1000>J)return X.measurements=r1.getProcessStats(!0),X}return null}})}static startSpan(Z,J){if(vF())return e9({attributes:Z.attributes,name:Z.operation,op:Z.operation},J);else return J()}static sentry(){return wm}}var k31=new f$,oQ6=5000;class i4 extends O0{static _cachedPacketsSerializedBuffer=new Map;_closeTimeout=null;_wrtcDirectTransport=null;_wrtcClientServerTransport=null;_wrtcClientServerDataProducers=[];_wrtcClientServerDataConsumers=[];_wrtcServerClientTransport=null;_wrtcServerClientReliableDataProducer=null;_wrtcServerClientUnreliableDataProducer=null;_wrtcServerClientDataConsumers=[];_ws;id;constructor(Z,J){super();this.id=w40(),this.onPacket(Y0.PacketId.CONNECTION,this._onConnectionPacket),this.onPacket(Y0.PacketId.HEARTBEAT,this._onHeartbeatPacket),this.bindWs(Z),O0.globalInstance.emit("CONNECTION.OPENED",{connection:this,req:J})}static clearCachedPacketsSerializedBuffers(){if(i4._cachedPacketsSerializedBuffer.size>0)i4._cachedPacketsSerializedBuffer.clear()}static serializePackets(Z){for(let X of Z)if(!Y0.isValidPacket(X))return d.error(`Connection.serializePackets(): Invalid packet payload: ${JSON.stringify(X)}`);let J=i4._cachedPacketsSerializedBuffer.get(Z);if(J)return J;return r1.startSpan({operation:"serialize_packets",attributes:{packets:Z.length,packetIds:Z.map((X)=>X[0]).join(",")}},(X)=>{let Y=r1.startSpan({operation:"serialize_packets_encode"},()=>k31.pack(Z));return X?.setAttribute("serializedBytes",Y.byteLength),i4._cachedPacketsSerializedBuffer.set(Z,Y),Y})}bindWs(Z){let J=!!this._ws;if(J&&this._closeTimeout)clearTimeout(this._closeTimeout),this._closeTimeout=null;if(this._ws)this._ws.onmessage=()=>{},this._ws.onclose=()=>{},this._ws.onerror=()=>{},this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{k:!0})]);if(this._ws=Z,this._ws.binaryType="nodebuffer",this._ws.onmessage=(X)=>this._onMessage(X.data),this._ws.onclose=this._onWsClose,this._ws.onerror=this._onWsError,this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{i:this.id})],!0,!0),J)this.emitWithGlobal("CONNECTION.RECONNECTED",{connection:this});if(a7.instance.isWrtcEnabled)this._upgradeToWRTC()}closeWrtc(){this._closeWrtcClientServerTransport(),this._closeWrtcServerClientTransport()}disconnect(){try{this._ws.close()}catch(Z){d.error(`Connection.disconnect(): Connection disconnect failed. Error: ${Z}`)}}onPacket(Z,J){this.on("CONNECTION.PACKET_RECEIVED",({packet:X})=>{if(X[0]===Z)J(X)})}send(Z,J=!0,X=!1){if(this._closeTimeout)return;if(this._ws.readyState!==U_.default.OPEN)return;r1.startSpan({operation:"send_packets",attributes:{forceWs:X?"true":"false",wrtcConnected:this._wrtcServerClientTransport?.iceState==="completed"?"true":"false"}},()=>{try{let Y=i4.serializePackets(Z);if(!Y)return;if(this._wrtcServerClientTransport?.iceState==="completed"&&Y.length<(this._wrtcServerClientTransport?.sctpParameters?.maxMessageSize??0)&&!X)try{(J?this._wrtcServerClientReliableDataProducer:this._wrtcServerClientUnreliableDataProducer).send(Y)}catch{this._ws.send(Y)}else this._ws.send(Y);this.emitWithGlobal("CONNECTION.PACKETS_SENT",{connection:this,packets:Z})}catch(Y){d.error(`Connection.send(): Packet send failed. Error: ${Y}`)}})}_closeWrtcClientServerTransport(){this._wrtcDirectTransport?.close(),this._wrtcDirectTransport=null,this._wrtcClientServerTransport?.close(),this._wrtcClientServerTransport=null,this._wrtcClientServerDataProducers.forEach((Z)=>Z.close()),this._wrtcClientServerDataProducers=[],this._wrtcClientServerDataConsumers.forEach((Z)=>Z.close()),this._wrtcClientServerDataConsumers=[]}_closeWrtcServerClientTransport(){this._wrtcServerClientTransport?.close(),this._wrtcServerClientTransport=null,this._wrtcServerClientDataConsumers.forEach((Z)=>Z.close()),this._wrtcServerClientDataConsumers=[],this._wrtcServerClientReliableDataProducer?.close(),this._wrtcServerClientReliableDataProducer=null,this._wrtcServerClientUnreliableDataProducer?.close(),this._wrtcServerClientUnreliableDataProducer=null}_onConnectionPacket=async(Z)=>{let J=Z[1],X=J.c,Y=J.d;if(X){let{i:$,d:Q}=X,K=!1;if($==this._wrtcClientServerTransport?.id)await this._wrtcClientServerTransport.connect({dtlsParameters:Q}),K=!0;if($==this._wrtcServerClientTransport?.id)await this._wrtcServerClientTransport.connect({dtlsParameters:Q}),K=!0;if(K)this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{ca:{i:$}})])}if(Y)for(let $ of Y){let{s:Q,l:K}=$,G=await this._wrtcClientServerTransport.produceData({label:K,sctpStreamParameters:Q}),W=await this._wrtcDirectTransport.consumeData({dataProducerId:G.id});this._wrtcClientServerDataProducers.push(G),this._wrtcClientServerDataConsumers.push(W),W.on("message",(H)=>this._onMessage(H)),this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{pa:{i:G.id,l:K}})])}};_onHeartbeatPacket=()=>{this.send([Y0.createPacket(Y0.bidirectionalPackets.heartbeatPacketDefinition,null)],!0,!0)};_onMessage=(Z)=>{try{let J=this._deserialize(Z);if(!J)return;this.emitWithGlobal("CONNECTION.PACKET_RECEIVED",{connection:this,packet:J})}catch(J){d.error(`Connection._ws.onmessage(): Error: ${J}`)}};_onWrtcIceStateChange=(Z,J)=>{if(["disconnected","closed"].includes(J)){if(Z==this._wrtcClientServerTransport)this._closeWrtcClientServerTransport();else if(Z==this._wrtcServerClientTransport)this._closeWrtcServerClientTransport()}};_onWsClose=()=>{this.closeWrtc(),this.emitWithGlobal("CONNECTION.DISCONNECTED",{connection:this}),this._closeTimeout=setTimeout(()=>{this.emitWithGlobal("CONNECTION.CLOSED",{connection:this}),this.offAll()},oQ6)};_onWsError=(Z)=>{this.emitWithGlobal("CONNECTION.ERROR",{connection:this,error:Z})};_upgradeToWRTC=async()=>{let Z=await a7.instance.createWrtcTransports();if(!Z)return!1;let{directTransport:J,clientServerTransport:X,serverClientTransport:Y}=Z;this._wrtcDirectTransport=J,this._wrtcClientServerTransport=X,this._wrtcClientServerTransport.on("icestatechange",(K)=>{this._onWrtcIceStateChange(this._wrtcClientServerTransport,K)}),this._wrtcServerClientTransport=Y,this._wrtcServerClientTransport.on("icestatechange",(K)=>{this._onWrtcIceStateChange(this._wrtcServerClientTransport,K)}),this._wrtcServerClientReliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scr",sctpStreamParameters:{streamId:0,ordered:!0}}),this._wrtcServerClientUnreliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scu",sctpStreamParameters:{streamId:1,ordered:!1,maxPacketLifeTime:35}});let $=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientReliableDataProducer.id}),Q=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientUnreliableDataProducer.id});return this._wrtcServerClientDataConsumers.push($,Q),this.send([Y0.createPacket(Y0.bidirectionalPackets.connectionPacketDefinition,{d:[{i:$.id,pi:$.dataProducerId,l:"scr",s:$.sctpStreamParameters},{i:Q.id,pi:Q.dataProducerId,l:"scu",s:Q.sctpStreamParameters}],t:[{i:this._wrtcClientServerTransport.id,f:"cs",d:this._wrtcClientServerTransport.dtlsParameters,ic:this._wrtcClientServerTransport.iceCandidates,ip:this._wrtcClientServerTransport.iceParameters,s:this._wrtcClientServerTransport.sctpParameters},{i:this._wrtcServerClientTransport.id,f:"sc",d:this._wrtcServerClientTransport.dtlsParameters,ic:this._wrtcServerClientTransport.iceCandidates,ip:this._wrtcServerClientTransport.iceParameters,s:this._wrtcServerClientTransport.sctpParameters}]})]),!0};_deserialize(Z){let J=k31.unpack(Z);if(!J||typeof J!=="object"||typeof J[0]!=="number")return d.error(`Connection._deserialize(): Invalid packet format. Packet: ${JSON.stringify(J)}`);if(!Y0.isValidPacket(J))return d.error(`Connection._deserialize(): Invalid packet payload. Packet: ${JSON.stringify(J)}`);return J}}class WU{_lights=new Map;_nextLightId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}despawnEntityAttachedLights(Z){this.getAllEntityAttachedLights(Z).forEach((J)=>{J.despawn()})}getAllLights(Z=!1){return Z?this._world.tickAllocator.getArray(this._lights.values()):Array.from(this._lights.values())}getAllEntityAttachedLights(Z){return this.getAllLights().filter((J)=>J.attachedToEntity===Z)}registerLight(Z){if(Z.id!==void 0)return Z.id;let J=this._nextLightId;return this._lights.set(J,Z),this._nextLightId++,J}unregisterLight(Z){if(Z.id===void 0)return;this._lights.delete(Z.id)}}class z6{_map=new Map;_values=[];_isDirty=!1;get size(){return this._map.size}get valuesArray(){if(this._isDirty)this._syncArray();return this._values}get(Z){return this._map.get(Z)}set(Z,J){let X=this._map.has(Z);if(this._map.set(Z,J),!X)this._values.push(J);else this._isDirty=!0;return this}has(Z){return this._map.has(Z)}delete(Z){let J=this._map.delete(Z);if(J)this._isDirty=!0;return J}clear(){this._map.clear(),this._values.length=0,this._isDirty=!1}forEach(Z,J){this._map.forEach((X,Y)=>{Z.call(J,X,Y,this)})}keys(){return this._map.keys()}values(){return this._map.values()}entries(){return this._map.entries()}[Symbol.iterator](){return this._map[Symbol.iterator]()}_syncArray(){this._values.length=0;for(let Z of this._map.values())this._values.push(Z);this._isDirty=!1}}var I31;((X)=>{X[X.POINTLIGHT=0]="POINTLIGHT";X[X.SPOTLIGHT=1]="SPOTLIGHT"})(I31||={});var jm;((z)=>{z.DESPAWN="LIGHT.DESPAWN";z.SET_ANGLE="LIGHT.SET_ANGLE";z.SET_ATTACHED_TO_ENTITY="LIGHT.SET_ATTACHED_TO_ENTITY";z.SET_COLOR="LIGHT.SET_COLOR";z.SET_DISTANCE="LIGHT.SET_DISTANCE";z.SET_INTENSITY="LIGHT.SET_INTENSITY";z.SET_OFFSET="LIGHT.SET_OFFSET";z.SET_PENUMBRA="LIGHT.SET_PENUMBRA";z.SET_POSITION="LIGHT.SET_POSITION";z.SET_TRACKED_ENTITY="LIGHT.SET_TRACKED_ENTITY";z.SET_TRACKED_POSITION="LIGHT.SET_TRACKED_POSITION";z.SPAWN="LIGHT.SPAWN"})(jm||={});class Om extends O0{_id;_angle;_attachedToEntity;_color;_distance;_intensity;_offset;_penumbra;_position;_trackedEntity;_trackedPosition;_type;_world;constructor(Z){if(!!Z.attachedToEntity===!!Z.position)d.fatalError("Either attachedToEntity or position must be set, but not both.");super();d.warning("WARNING: Lights are poorly optimized at this time. Using more than a few lights in your game can cause extremely bad performance (FPS) issues. Use lights sparingly!"),this._angle=Z.angle,this._attachedToEntity=Z.attachedToEntity,this._color=Z.color??{r:255,g:255,b:255},this._distance=Z.distance,this._intensity=Z.intensity??1,this._offset=Z.offset,this._penumbra=Z.penumbra,this._position=Z.position,this._trackedEntity=Z.trackedEntity,this._trackedPosition=Z.trackedPosition,this._type=Z.type??0}get id(){return this._id}get angle(){return this._angle}get attachedToEntity(){return this._attachedToEntity}get color(){return this._color}get distance(){return this._distance}get intensity(){return this._intensity}get isSpawned(){return this._id!==void 0}get offset(){return this._offset}get penumbra(){return this._penumbra}get position(){return this._position}get trackedEntity(){return this._trackedEntity}get trackedPosition(){return this._trackedPosition}get type(){return this._type}get world(){return this._world}setAngle(Z){if(this._angle===Z)return;if(this._angle=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ANGLE",{light:this,angle:Z})}setAttachedToEntity(Z){if(!Z.isSpawned)return d.error(`Light.setAttachedToEntity(): Entity ${Z.id} is not spawned!`);if(this._attachedToEntity===Z)return;if(this._attachedToEntity=Z,this._position=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ATTACHED_TO_ENTITY",{light:this,entity:Z})}setColor(Z){if(this._color.r===Z.r&&this._color.g===Z.g&&this._color.b===Z.b)return;if(this._color=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_COLOR",{light:this,color:Z})}setDistance(Z){if(this._distance===Z)return;if(this._distance=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_DISTANCE",{light:this,distance:Z})}setIntensity(Z){if(this._intensity===Z)return;if(this._intensity=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_INTENSITY",{light:this,intensity:Z})}setOffset(Z){if(this._offset&&this._offset.x===Z.x&&this._offset.y===Z.y&&this._offset.z===Z.z)return;if(this._offset=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_OFFSET",{light:this,offset:Z})}setPenumbra(Z){if(this._penumbra===Z)return;if(this._penumbra=Z,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_PENUMBRA",{light:this,penumbra:Z})}setPosition(Z){if(this._position&&this._position.x===Z.x&&this._position.y===Z.y&&this._position.z===Z.z)return;if(this._position=Z,this._attachedToEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_POSITION",{light:this,position:Z})}setTrackedEntity(Z){if(!Z.isSpawned)return d.error(`Light.setTrackedEntity(): Entity ${Z.id} is not spawned!`);if(this._trackedEntity===Z)return;if(this._trackedEntity=Z,this._trackedPosition=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_ENTITY",{light:this,entity:Z})}setTrackedPosition(Z){if(this._trackedPosition===Z)return;if(this._trackedPosition=Z,this._trackedEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_POSITION",{light:this,position:Z})}despawn(){if(!this.isSpawned||!this._world)return;this._world.lightManager.unregisterLight(this),this.emitWithWorld(this._world,"LIGHT.DESPAWN",{light:this}),this._id=void 0,this._world=void 0}spawn(Z){if(this.isSpawned)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return d.error(`Light.spawn(): Attached entity ${this._attachedToEntity.id} must be spawned before spawning Light!`);this._id=Z.lightManager.registerLight(this),this._world=Z,this.emitWithWorld(Z,"LIGHT.SPAWN",{light:this})}serialize(){if(!this._world)d.fatalError("Light.serialize(): Light is not in a world and cannot be serialized!");return P0.serializeLight(this,this._world.tickAllocator)}}var Mm;((A)=>{A.DESPAWN="PARTICLE_EMITTER.DESPAWN";A.SET_ALPHA_TEST="PARTICLE_EMITTER.SET_ALPHA_TEST";A.SET_ATTACHED_TO_ENTITY="PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY";A.SET_ATTACHED_TO_ENTITY_NODE_NAME="PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY_NODE_NAME";A.SET_COLOR_END="PARTICLE_EMITTER.SET_COLOR_END";A.SET_COLOR_END_VARIANCE="PARTICLE_EMITTER.SET_COLOR_END_VARIANCE";A.SET_COLOR_START="PARTICLE_EMITTER.SET_COLOR_START";A.SET_COLOR_START_VARIANCE="PARTICLE_EMITTER.SET_COLOR_START_VARIANCE";A.SET_GRAVITY="PARTICLE_EMITTER.SET_GRAVITY";A.SET_LIFETIME="PARTICLE_EMITTER.SET_LIFETIME";A.SET_LIFETIME_VARIANCE="PARTICLE_EMITTER.SET_LIFETIME_VARIANCE";A.SET_MAX_PARTICLES="PARTICLE_EMITTER.SET_MAX_PARTICLES";A.SET_OFFSET="PARTICLE_EMITTER.SET_OFFSET";A.SET_OPACITY_END="PARTICLE_EMITTER.SET_OPACITY_END";A.SET_OPACITY_END_VARIANCE="PARTICLE_EMITTER.SET_OPACITY_END_VARIANCE";A.SET_OPACITY_START="PARTICLE_EMITTER.SET_OPACITY_START";A.SET_OPACITY_START_VARIANCE="PARTICLE_EMITTER.SET_OPACITY_START_VARIANCE";A.SET_PAUSED="PARTICLE_EMITTER.SET_PAUSED";A.SET_POSITION="PARTICLE_EMITTER.SET_POSITION";A.SET_POSITION_VARIANCE="PARTICLE_EMITTER.SET_POSITION_VARIANCE";A.SET_RATE="PARTICLE_EMITTER.SET_RATE";A.SET_RATE_VARIANCE="PARTICLE_EMITTER.SET_RATE_VARIANCE";A.SET_SIZE_END="PARTICLE_EMITTER.SET_SIZE_END";A.SET_SIZE_END_VARIANCE="PARTICLE_EMITTER.SET_SIZE_END_VARIANCE";A.SET_SIZE_START="PARTICLE_EMITTER.SET_SIZE_START";A.SET_SIZE_START_VARIANCE="PARTICLE_EMITTER.SET_SIZE_START_VARIANCE";A.SET_TEXTURE_URI="PARTICLE_EMITTER.SET_TEXTURE_URI";A.SET_TRANSPARENT="PARTICLE_EMITTER.SET_TRANSPARENT";A.SET_VELOCITY="PARTICLE_EMITTER.SET_VELOCITY";A.SET_VELOCITY_VARIANCE="PARTICLE_EMITTER.SET_VELOCITY_VARIANCE";A.SPAWN="PARTICLE_EMITTER.SPAWN"})(Mm||={});class Rm extends O0{_id;_alphaTest;_attachedToEntity;_attachedToEntityNodeName;_colorEnd;_colorEndVariance;_colorStart;_colorStartVariance;_gravity;_lifetime;_lifetimeVariance;_maxParticles;_offset;_opacityEnd;_opacityEndVariance;_opacityStart;_opacityStartVariance;_paused;_position;_positionVariance;_rate;_rateVariance;_sizeEnd;_sizeEndVariance;_sizeStart;_sizeStartVariance;_sizeVariance;_textureUri;_transparent;_velocity;_velocityVariance;_world;constructor(Z){if(!!Z.attachedToEntity===!!Z.position)d.fatalError("Either attachedToEntity or position must be set, but not both.");if(!Z.textureUri)d.fatalError("ParticleEmitter.constructor(): textureUri must be provided.");super();this._alphaTest=Z.alphaTest??0.5,this._attachedToEntity=Z.attachedToEntity,this._attachedToEntityNodeName=Z.attachedToEntityNodeName,this._colorEnd=Z.colorEnd,this._colorEndVariance=Z.colorEndVariance,this._colorStart=Z.colorStart,this._colorStartVariance=Z.colorStartVariance,this._gravity=Z.gravity,this._lifetime=Z.lifetime,this._lifetimeVariance=Z.lifetimeVariance,this._maxParticles=Z.maxParticles,this._offset=Z.offset,this._opacityEnd=Z.opacityEnd,this._opacityEndVariance=Z.opacityEndVariance,this._opacityStart=Z.opacityStart,this._opacityStartVariance=Z.opacityStartVariance,this._paused=!1,this._position=Z.position,this._positionVariance=Z.positionVariance,this._rate=Z.rate,this._rateVariance=Z.rateVariance,this._sizeEnd=Z.sizeEnd,this._sizeEndVariance=Z.sizeEndVariance,this._sizeStart=Z.sizeStart,this._sizeStartVariance=Z.sizeStartVariance,this._textureUri=Z.textureUri,this._transparent=Z.transparent,this._velocity=Z.velocity,this._velocityVariance=Z.velocityVariance}get id(){return this._id}get alphaTest(){return this._alphaTest}get attachedToEntity(){return this._attachedToEntity}get attachedToEntityNodeName(){return this._attachedToEntityNodeName}get colorEnd(){return this._colorEnd}get colorEndVariance(){return this._colorEndVariance}get colorStart(){return this._colorStart}get colorStartVariance(){return this._colorStartVariance}get gravity(){return this._gravity}get isSpawned(){return this._id!==void 0}get lifetime(){return this._lifetime}get lifetimeVariance(){return this._lifetimeVariance}get maxParticles(){return this._maxParticles}get offset(){return this._offset}get opacityEnd(){return this._opacityEnd}get opacityEndVariance(){return this._opacityEndVariance}get opacityStart(){return this._opacityStart}get opacityStartVariance(){return this._opacityStartVariance}get paused(){return this._paused}get position(){return this._position}get positionVariance(){return this._positionVariance}get rate(){return this._rate}get rateVariance(){return this._rateVariance}get sizeEnd(){return this._sizeEnd}get sizeEndVariance(){return this._sizeEndVariance}get sizeStart(){return this._sizeStart}get sizeStartVariance(){return this._sizeStartVariance}get sizeVariance(){return this._sizeVariance}get textureUri(){return this._textureUri}get transparent(){return this._transparent}get velocity(){return this._velocity}get velocityVariance(){return this._velocityVariance}get world(){return this._world}setAlphaTest(Z){if(this._alphaTest===Z)return;if(this._alphaTest=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_ALPHA_TEST",{particleEmitter:this,alphaTest:Z})}setAttachedToEntity(Z){if(!Z.isSpawned)return d.error(`ParticleEmitter.setAttachedToEntity(): Entity ${Z.id} is not spawned!`);if(this._attachedToEntity===Z)return;if(this._attachedToEntity=Z,this._position=void 0,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY",{particleEmitter:this,entity:Z})}setAttachedToEntityNodeName(Z){if(this._attachedToEntityNodeName===Z)return;if(this._attachedToEntityNodeName=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY_NODE_NAME",{particleEmitter:this,attachedToEntityNodeName:Z})}setColorEnd(Z){if(this._colorEnd&&this._colorEnd.r===Z.r&&this._colorEnd.g===Z.g&&this._colorEnd.b===Z.b)return;if(this._colorEnd=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_END",{particleEmitter:this,colorEnd:Z})}setColorEndVariance(Z){if(this._colorEndVariance&&this._colorEndVariance.r===Z.r&&this._colorEndVariance.g===Z.g&&this._colorEndVariance.b===Z.b)return;if(this._colorEndVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_END_VARIANCE",{particleEmitter:this,colorEndVariance:Z})}setColorStart(Z){if(this._colorStart&&this._colorStart.r===Z.r&&this._colorStart.g===Z.g&&this._colorStart.b===Z.b)return;if(this._colorStart=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_START",{particleEmitter:this,colorStart:Z})}setColorStartVariance(Z){if(this._colorStartVariance&&this._colorStartVariance.r===Z.r&&this._colorStartVariance.g===Z.g&&this._colorStartVariance.b===Z.b)return;if(this._colorStartVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_COLOR_START_VARIANCE",{particleEmitter:this,colorStartVariance:Z})}setGravity(Z){if(this._gravity&&this._gravity.x===Z.x&&this._gravity.y===Z.y&&this._gravity.z===Z.z)return;if(this._gravity=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_GRAVITY",{particleEmitter:this,gravity:Z})}setLifetime(Z){if(this._lifetime===Z)return;if(this._lifetime=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_LIFETIME",{particleEmitter:this,lifetime:Z})}setLifetimeVariance(Z){if(this._lifetimeVariance===Z)return;if(this._lifetimeVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_LIFETIME_VARIANCE",{particleEmitter:this,lifetimeVariance:Z})}setMaxParticles(Z){if(this._maxParticles===Z)return;if(this._maxParticles=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_MAX_PARTICLES",{particleEmitter:this,maxParticles:Z})}setOffset(Z){if(this._offset&&this._offset.x===Z.x&&this._offset.y===Z.y&&this._offset.z===Z.z)return;if(this._offset=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OFFSET",{particleEmitter:this,offset:Z})}setOpacityEnd(Z){if(this._opacityEnd===Z)return;if(this._opacityEnd=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_END",{particleEmitter:this,opacityEnd:Z})}setOpacityEndVariance(Z){if(this._opacityEndVariance===Z)return;if(this._opacityEndVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_END_VARIANCE",{particleEmitter:this,opacityEndVariance:Z})}setOpacityStart(Z){if(this._opacityStart===Z)return;if(this._opacityStart=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_START",{particleEmitter:this,opacityStart:Z})}setOpacityStartVariance(Z){if(this._opacityStartVariance===Z)return;if(this._opacityStartVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_OPACITY_START_VARIANCE",{particleEmitter:this,opacityStartVariance:Z})}setPosition(Z){if(this._position&&this._position.x===Z.x&&this._position.y===Z.y&&this._position.z===Z.z)return;if(this._position=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_POSITION",{particleEmitter:this,position:Z})}setPositionVariance(Z){if(this._positionVariance&&this._positionVariance.x===Z.x&&this._positionVariance.y===Z.y&&this._positionVariance.z===Z.z)return;if(this._positionVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_POSITION_VARIANCE",{particleEmitter:this,positionVariance:Z})}setRate(Z){if(this._rate===Z)return;if(this._rate=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_RATE",{particleEmitter:this,rate:Z})}setRateVariance(Z){if(this._rateVariance===Z)return;if(this._rateVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_RATE_VARIANCE",{particleEmitter:this,rateVariance:Z})}setSizeEnd(Z){if(this._sizeEnd===Z)return;if(this._sizeEnd=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_END",{particleEmitter:this,sizeEnd:Z})}setSizeEndVariance(Z){if(this._sizeEndVariance===Z)return;if(this._sizeEndVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_END_VARIANCE",{particleEmitter:this,sizeEndVariance:Z})}setSizeStart(Z){if(this._sizeStart===Z)return;if(this._sizeStart=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_START",{particleEmitter:this,sizeStart:Z})}setSizeStartVariance(Z){if(this._sizeStartVariance===Z)return;if(this._sizeStartVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_SIZE_START_VARIANCE",{particleEmitter:this,sizeStartVariance:Z})}setTextureUri(Z){if(this._textureUri===Z)return;if(this._textureUri=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_TEXTURE_URI",{particleEmitter:this,textureUri:Z})}setTransparent(Z){if(this._transparent===Z)return;if(this._transparent=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_TRANSPARENT",{particleEmitter:this,transparent:Z})}setVelocity(Z){if(this._velocity&&this._velocity.x===Z.x&&this._velocity.y===Z.y&&this._velocity.z===Z.z)return;if(this._velocity=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_VELOCITY",{particleEmitter:this,velocity:Z})}setVelocityVariance(Z){if(this._velocityVariance&&this._velocityVariance.x===Z.x&&this._velocityVariance.y===Z.y&&this._velocityVariance.z===Z.z)return;if(this._velocityVariance=Z,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_VELOCITY_VARIANCE",{particleEmitter:this,velocityVariance:Z})}despawn(){if(!this.isSpawned||!this._world)return;this._world.particleEmitterManager.unregisterParticleEmitter(this),this.emitWithWorld(this._world,"PARTICLE_EMITTER.DESPAWN",{particleEmitter:this}),this._id=void 0,this._world=void 0}restart(){if(!this._paused)return;if(this._paused=!1,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_PAUSED",{particleEmitter:this,paused:this._paused})}stop(){if(this._paused)return;if(this._paused=!0,this.isSpawned)this.emitWithWorld(this._world,"PARTICLE_EMITTER.SET_PAUSED",{particleEmitter:this,paused:this._paused})}spawn(Z){if(this.isSpawned)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return d.error(`ParticleEmitter.spawn(): Attached entity ${this._attachedToEntity.id} must be spawned before spawning ParticleEmitter!`);this._id=Z.particleEmitterManager.registerParticleEmitter(this),this._world=Z,this.emitWithWorld(Z,"PARTICLE_EMITTER.SPAWN",{particleEmitter:this})}serialize(){if(!this._world)d.fatalError("ParticleEmitter.serialize(): ParticleEmitter is not in a world and cannot be serialized!");return P0.serializeParticleEmitter(this,this._world.tickAllocator)}}var HU=r(KH(),1);var rQ6={x:0,y:-32,z:0},Nm=60,Pm;(($)=>{$.STEP_START="SIMULATION.STEP_START";$.STEP_END="SIMULATION.STEP_END";$.DEBUG_RAYCAST="SIMULATION.DEBUG_RAYCAST";$.DEBUG_RENDER="SIMULATION.DEBUG_RENDER"})(Pm||={});class VU extends O0{_colliderMap=new oV;_debugRaycastingEnabled=!1;_debugRenderingEnabled=!1;_debugRenderingFilterFlags;_rapierEventQueue;_rapierSimulation;_world;constructor(Z,J=Nm,X=rQ6){super();this._rapierEventQueue=new HU.default.EventQueue(!0),this._rapierSimulation=new HU.default.World(X),this._rapierSimulation.timestep=Math.fround(1/J),this._world=Z}get colliderMap(){return this._colliderMap}get isDebugRaycastingEnabled(){return this._debugRaycastingEnabled}get isDebugRenderingEnabled(){return this._debugRenderingEnabled}get gravity(){return this._rapierSimulation.gravity}get timestepS(){return this._rapierSimulation.timestep}get world(){return this._world}createRawCollider(Z,J){return this._rapierSimulation.createCollider(Z,J)}createRawRigidBody(Z){return this._rapierSimulation.createRigidBody(Z)}enableDebugRaycasting(Z){this._debugRaycastingEnabled=Z}enableDebugRendering(Z,J=HU.default.QueryFilterFlags.EXCLUDE_FIXED){this._debugRenderingEnabled=Z,this._debugRenderingFilterFlags=J}getContactManifolds(Z,J){let X=[];return this._rapierSimulation.narrowPhase.contactPair(Z,J,(Y,$)=>{if(Y.numContacts()===0)return;let Q=Y.normal(),K=[];for(let G=0;G<Y.numSolverContacts();G++)K.push(Y.solverContactPoint(G));X.push({contactPoints:K,localNormalA:!$?Y.localNormal1():Y.localNormal2(),localNormalB:!$?Y.localNormal2():Y.localNormal1(),normal:!$?Q:{x:-Q.x,y:-Q.y,z:-Q.z}})}),X}intersectionsWithRawShape(Z,J,X,Y={}){let $=new Set,Q=[];return this._rapierSimulation.intersectionsWithShape(J,X,Z,(K)=>{let G=this._colliderMap.getColliderHandleBlockType(K.handle);if(G&&!$.has(G))return $.add(G),Q.push({intersectedBlockType:G}),!0;let W=this._colliderMap.getColliderHandleEntity(K.handle);if(W&&!$.has(W))return $.add(W),Q.push({intersectedEntity:W}),!0;return!0},Y.filterFlags,Y.filterGroups,Y.filterExcludeCollider,Y.filterExcludeRigidBody,Y.filterPredicate),Q}raycast(Z,J,X,Y={}){let $=new HU.default.Ray(Z,J),Q=this._rapierSimulation.castRay($,X,Y.solidMode??!0,Y.filterFlags,Y.filterGroups,Y.filterExcludeCollider,Y.filterExcludeRigidBody,Y.filterPredicate);if(this._debugRaycastingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RAYCAST",{simulation:this,origin:Z,direction:J,length:X,hit:!!Q});if(!Q)return null;let K=$.pointAt(Q.timeOfImpact),G=Q.timeOfImpact,W=Q.collider,H=this._colliderMap.getColliderHandleBlockType(W.handle);if(H)return{hitBlock:FK.fromGlobalCoordinate({x:Math.floor(K.x-($.dir.x<0?0.0001:-0.0001)),y:Math.floor(K.y-($.dir.y<0?0.0001:-0.0001)),z:Math.floor(K.z-($.dir.z<0?0.0001:-0.0001))},H),hitPoint:K,hitDistance:G};let V=this._colliderMap.getColliderHandleEntity(W.handle);if(V)return{hitEntity:V,hitPoint:K,hitDistance:G};return null}removeRawCollider(Z){this._colliderMap.queueColliderHandleForCleanup(Z.handle),this._rapierSimulation.removeCollider(Z,!1)}removeRawRigidBody(Z){this._rapierSimulation.removeRigidBody(Z)}setGravity(Z){this._rapierSimulation.gravity=Z}step=(Z)=>{this.emitWithWorld(this._world,"SIMULATION.STEP_START",{simulation:this,tickDeltaMs:Z});let J=performance.now();if(r1.startSpan({operation:"physics_step"},()=>{this._rapierSimulation.step(this._rapierEventQueue)}),r1.startSpan({operation:"physics_cleanup"},()=>{this._rapierEventQueue.drainContactForceEvents(this._onContactForceEvent),this._rapierEventQueue.drainCollisionEvents(this._onCollisionEvent),this._colliderMap.cleanup()}),this.emitWithWorld(this._world,"SIMULATION.STEP_END",{simulation:this,stepDurationMs:performance.now()-J}),this._debugRenderingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RENDER",{simulation:this,...this._rapierSimulation.debugRender(this._debugRenderingFilterFlags)})};_onCollisionEvent=(Z,J,X)=>{let[Y,$]=this._getCollisionObjects(Z,J);if(!Y||!$)return;let Q=(K,G)=>{if(K instanceof K9&&G instanceof i8&&K.hasListeners("BLOCK_TYPE.ENTITY_COLLISION"))K.emit("BLOCK_TYPE.ENTITY_COLLISION",{blockType:K,entity:G,started:X,colliderHandleA:Z,colliderHandleB:J});else if(K instanceof i8&&G instanceof K9&&K.hasListeners("ENTITY.BLOCK_COLLISION"))K.emit("ENTITY.BLOCK_COLLISION",{entity:K,blockType:G,started:X,colliderHandleA:Z,colliderHandleB:J});else if(K instanceof i8&&G instanceof i8&&K.hasListeners("ENTITY.ENTITY_COLLISION"))K.emit("ENTITY.ENTITY_COLLISION",{entity:K,otherEntity:G,started:X,colliderHandleA:Z,colliderHandleB:J});else if(typeof K==="function"&&(G instanceof i8||G instanceof K9))K(G,X,Z,J)};Q(Y,$),Q($,Y)};_onContactForceEvent=(Z)=>{let[J,X]=this._getCollisionObjects(Z.collider1(),Z.collider2());if(!J||typeof J==="function"||!X||typeof X==="function")return;let Y={totalForce:Z.totalForce(),totalForceMagnitude:Z.totalForceMagnitude(),maxForceDirection:Z.maxForceDirection(),maxForceMagnitude:Z.maxForceMagnitude()},$=(Q,K)=>{if(Q instanceof K9&&K instanceof i8&&Q.hasListeners("BLOCK_TYPE.ENTITY_CONTACT_FORCE"))Q.emit("BLOCK_TYPE.ENTITY_CONTACT_FORCE",{blockType:Q,entity:K,contactForceData:Y});else if(Q instanceof i8&&K instanceof K9&&Q.hasListeners("ENTITY.BLOCK_CONTACT_FORCE"))Q.emit("ENTITY.BLOCK_CONTACT_FORCE",{entity:Q,blockType:K,contactForceData:Y});else if(Q instanceof i8&&K instanceof i8&&Q.hasListeners("ENTITY.ENTITY_CONTACT_FORCE"))Q.emit("ENTITY.ENTITY_CONTACT_FORCE",{entity:Q,otherEntity:K,contactForceData:Y})};$(J,X),$(X,J)};_getCollisionObjects(Z,J){let X=this._colliderMap.getColliderHandleBlockType(Z)??this._colliderMap.getColliderHandleCollisionCallback(Z)??this._colliderMap.getColliderHandleEntity(Z),Y=this._colliderMap.getColliderHandleBlockType(J)??this._colliderMap.getColliderHandleCollisionCallback(J)??this._colliderMap.getColliderHandleEntity(J);return[X,Y]}}class WP{_synchronizedPlayerReliablePackets=new z6;_queuedBroadcasts=[];_queuedAudioSynchronizations=new z6;_queuedBlockSynchronizations=new z6;_queuedBlockTypeSynchronizations=new z6;_queuedChunkSynchronizations=new z6;_queuedDebugRaycastSynchronizations=[];_queuedEntitySynchronizations=new z6;_queuedLightSynchronizations=new z6;_queuedParticleEmitterSynchronizations=new z6;_queuedPerPlayerSynchronizations=new z6;_queuedPerPlayerCameraSynchronizations=new z6;_queuedPerPlayerUISynchronizations=new z6;_queuedPerPlayerUIDatasSynchronizations=new z6;_queuedPlayerSynchronizations=new z6;_queuedSceneUISynchronizations=new z6;_queuedWorldSynchronization;_loadedSceneUIs=new Set;_spawnedChunks=new Set;_spawnedEntities=new Set;_world;constructor(Z){this._world=Z,this._subscribeToAudioEvents(),this._subscribeToBlockTypeRegistryEvents(),this._subscribeToChatEvents(),this._subscribeToChunkLatticeEvents(),this._subscribeToEntityEvents(),this._subscribeToLightEvents(),this._subscribeToParticleEmitterEvents(),this._subscribeToPlayerEvents(),this._subscribeToPlayerCameraEvents(),this._subscribeToPlayerUIEvents(),this._subscribeToSceneUIEvents(),this._subscribeToSimulationEvents(),this._subscribeToWorldEvents()}synchronize(){let Z=this._world.tickAllocator,J=this._world.tickAllocator.getArray(),X=this._world.tickAllocator.getArray(),Y=this._world.loop.currentTick;if(this._queuedPerPlayerSynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerSynchronizations)this._createOrGetSynchronizedPlayerReliablePackets($,J).push(...Q);if(this._queuedEntitySynchronizations.size>0){let $=this._world.tickAllocator.getArray(),Q=this._world.tickAllocator.getArray();for(let K of this._queuedEntitySynchronizations.valuesArray){let G=!1;for(let W in K)if(W!=="i"&&W!=="p"&&W!=="r"){G=!0;break}if(G)$.push(K);else Q.push(K)}if(Q.length>0){let K=Y0.createPacket(Y0.outboundPackets.entitiesPacketDefinition,Q,Y,Z.getArray());X.push(K)}if($.length>0){let K=Y0.createPacket(Y0.outboundPackets.entitiesPacketDefinition,$,Y,Z.getArray());J.push(K);for(let G of this._synchronizedPlayerReliablePackets.valuesArray)G.push(K)}}if(this._queuedAudioSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.audiosPacketDefinition,this._queuedAudioSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedBlockTypeSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.blockTypesPacketDefinition,this._queuedBlockTypeSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedChunkSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.chunksPacketDefinition,this._queuedChunkSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedBlockSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.blocksPacketDefinition,this._queuedBlockSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedLightSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.lightsPacketDefinition,this._queuedLightSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedParticleEmitterSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.particleEmittersPacketDefinition,this._queuedParticleEmitterSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedPerPlayerUISynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerUISynchronizations){let K=Y0.createPacket(Y0.outboundPackets.uiPacketDefinition,Q,Y,Z.getArray());this._createOrGetSynchronizedPlayerReliablePackets($,J).push(K)}if(this._queuedPerPlayerUIDatasSynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerUIDatasSynchronizations){let K=Y0.createPacket(Y0.outboundPackets.uiDatasPacketDefinition,Q,Y,Z.getArray());this._createOrGetSynchronizedPlayerReliablePackets($,J).push(K)}if(this._queuedSceneUISynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.sceneUIsPacketDefinition,this._queuedSceneUISynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedWorldSynchronization){let $=Y0.createPacket(Y0.outboundPackets.worldPacketDefinition,this._queuedWorldSynchronization,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedPerPlayerCameraSynchronizations.size>0)for(let[$,Q]of this._queuedPerPlayerCameraSynchronizations){let K=Y0.createPacket(Y0.outboundPackets.cameraPacketDefinition,Q,Y,Z.getArray());this._createOrGetSynchronizedPlayerReliablePackets($,J).push(K)}if(this._queuedPlayerSynchronizations.size>0){let $=Y0.createPacket(Y0.outboundPackets.playersPacketDefinition,this._queuedPlayerSynchronizations.valuesArray,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedBroadcasts.length>0)for(let $ of this._queuedBroadcasts){J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}if(this._queuedDebugRaycastSynchronizations.length>0){let $=Y0.createPacket(Y0.outboundPackets.physicsDebugRaycastsPacketDefinition,this._queuedDebugRaycastSynchronizations,Y,Z.getArray());J.push($);for(let Q of this._synchronizedPlayerReliablePackets.valuesArray)Q.push($)}r1.startSpan({operation:"send_all_packets"},()=>{for(let $ of q9.instance.getConnectedPlayersByWorld(this._world)){let Q=this._synchronizedPlayerReliablePackets.get($)??J;if(Q.length>0)$.connection.send(Q);if(X.length>0)$.connection.send(X,!1)}}),r1.startSpan({operation:"network_synchronize_cleanup"},()=>{if(this._queuedBroadcasts.length>0)this._queuedBroadcasts.length=0;if(this._queuedAudioSynchronizations.size>0)this._queuedAudioSynchronizations.clear();if(this._queuedBlockSynchronizations.size>0)this._queuedBlockSynchronizations.clear();if(this._queuedBlockTypeSynchronizations.size>0)this._queuedBlockTypeSynchronizations.clear();if(this._queuedChunkSynchronizations.size>0)this._queuedChunkSynchronizations.clear();if(this._queuedDebugRaycastSynchronizations.length>0)this._queuedDebugRaycastSynchronizations.length=0;if(this._queuedEntitySynchronizations.size>0)this._queuedEntitySynchronizations.clear();if(this._queuedLightSynchronizations.size>0)this._queuedLightSynchronizations.clear();if(this._queuedParticleEmitterSynchronizations.size>0)this._queuedParticleEmitterSynchronizations.clear();if(this._queuedPerPlayerSynchronizations.size>0)this._queuedPerPlayerSynchronizations.clear();if(this._queuedPerPlayerCameraSynchronizations.size>0)this._queuedPerPlayerCameraSynchronizations.clear();if(this._queuedPerPlayerUISynchronizations.size>0)this._queuedPerPlayerUISynchronizations.clear();if(this._queuedPerPlayerUIDatasSynchronizations.size>0)this._queuedPerPlayerUIDatasSynchronizations.clear();if(this._queuedPlayerSynchronizations.size>0)this._queuedPlayerSynchronizations.clear();if(this._queuedSceneUISynchronizations.size>0)this._queuedSceneUISynchronizations.clear();if(this._queuedWorldSynchronization)this._queuedWorldSynchronization=void 0;if(this._loadedSceneUIs.size>0)this._loadedSceneUIs.clear();if(this._spawnedChunks.size>0)this._spawnedChunks.clear();if(this._spawnedEntities.size>0)this._spawnedEntities.clear();if(this._synchronizedPlayerReliablePackets.size>0)this._synchronizedPlayerReliablePackets.clear();i4.clearCachedPacketsSerializedBuffers()})}_subscribeToAudioEvents(){this._world.final("AUDIO.PAUSE",this._onAudioPause),this._world.final("AUDIO.PLAY",this._onAudioPlay),this._world.final("AUDIO.PLAY_RESTART",this._onAudioPlayRestart),this._world.final("AUDIO.SET_ATTACHED_TO_ENTITY",this._onAudioSetAttachedToEntity),this._world.final("AUDIO.SET_CUTOFF_DISTANCE",this._onAudioSetCutoffDistance),this._world.final("AUDIO.SET_DETUNE",this._onAudioSetDetune),this._world.final("AUDIO.SET_DISTORTION",this._onAudioSetDistortion),this._world.final("AUDIO.SET_POSITION",this._onAudioSetPosition),this._world.final("AUDIO.SET_PLAYBACK_RATE",this._onAudioSetPlaybackRate),this._world.final("AUDIO.SET_REFERENCE_DISTANCE",this._onAudioSetReferenceDistance),this._world.final("AUDIO.SET_VOLUME",this._onAudioSetVolume)}_subscribeToBlockTypeRegistryEvents(){this._world.final("BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE",this._onBlockTypeRegistryRegisterBlockType)}_subscribeToChatEvents(){this._world.final("CHAT.BROADCAST_MESSAGE",this._onChatSendBroadcastMessage),this._world.final("CHAT.PLAYER_MESSAGE",this._onChatSendPlayerMessage)}_subscribeToChunkLatticeEvents(){this._world.final("CHUNK_LATTICE.ADD_CHUNK",this._onChunkLatticeAddChunk),this._world.final("CHUNK_LATTICE.REMOVE_CHUNK",this._onChunkLatticeRemoveChunk),this._world.final("CHUNK_LATTICE.SET_BLOCK",this._onChunkLatticeSetBlock)}_subscribeToEntityEvents(){this._world.final("ENTITY.SPAWN",this._onEntitySpawn),this._world.final("ENTITY.DESPAWN",this._onEntityDespawn),this._world.final("ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",this._onEntitySetModelAnimationsPlaybackRate),this._world.final("ENTITY.SET_MODEL_HIDDEN_NODES",this._onEntitySetModelHiddenNodes),this._world.final("ENTITY.SET_MODEL_SCALE",this._onEntitySetModelScale),this._world.final("ENTITY.SET_MODEL_SHOWN_NODES",this._onEntitySetModelShownNodes),this._world.final("ENTITY.SET_MODEL_TEXTURE_URI",this._onEntitySetModelTextureUri),this._world.final("ENTITY.SET_OPACITY",this._onEntitySetOpacity),this._world.final("ENTITY.SET_PARENT",this._onEntitySetParent),this._world.final("ENTITY.SET_TINT_COLOR",this._onEntitySetTintColor),this._world.final("ENTITY.START_MODEL_LOOPED_ANIMATIONS",this._onEntityStartModelLoopedAnimations),this._world.final("ENTITY.START_MODEL_ONESHOT_ANIMATIONS",this._onEntityStartModelOneshotAnimations),this._world.final("ENTITY.STOP_MODEL_ANIMATIONS",this._onEntityStopModelAnimations),this._world.final("ENTITY.UPDATE_POSITION",this._onEntityUpdatePosition),this._world.final("ENTITY.UPDATE_ROTATION",this._onEntityUpdateRotation)}_subscribeToLightEvents(){this._world.final("LIGHT.DESPAWN",this._onLightDespawn),this._world.final("LIGHT.SET_ANGLE",this._onLightSetAngle),this._world.final("LIGHT.SET_ATTACHED_TO_ENTITY",this._onLightSetAttachedToEntity),this._world.final("LIGHT.SET_COLOR",this._onLightSetColor),this._world.final("LIGHT.SET_DISTANCE",this._onLightSetDistance),this._world.final("LIGHT.SET_INTENSITY",this._onLightSetIntensity),this._world.final("LIGHT.SET_OFFSET",this._onLightSetOffset),this._world.final("LIGHT.SET_PENUMBRA",this._onLightSetPenumbra),this._world.final("LIGHT.SET_POSITION",this._onLightSetPosition),this._world.final("LIGHT.SET_TRACKED_ENTITY",this._onLightSetTrackedEntity),this._world.final("LIGHT.SET_TRACKED_POSITION",this._onLightSetTrackedPosition),this._world.final("LIGHT.SPAWN",this._onLightSpawn)}_subscribeToParticleEmitterEvents(){this._world.final("PARTICLE_EMITTER.DESPAWN",this._onParticleEmitterDespawn),this._world.final("PARTICLE_EMITTER.SET_ALPHA_TEST",this._onParticleEmitterSetAlphaTest),this._world.final("PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY",this._onParticleEmitterSetAttachedToEntity),this._world.final("PARTICLE_EMITTER.SET_ATTACHED_TO_ENTITY_NODE_NAME",this._onParticleEmitterSetAttachedToEntityNodeName),this._world.final("PARTICLE_EMITTER.SET_COLOR_END",this._onParticleEmitterSetColorEnd),this._world.final("PARTICLE_EMITTER.SET_COLOR_END_VARIANCE",this._onParticleEmitterSetColorEndVariance),this._world.final("PARTICLE_EMITTER.SET_COLOR_START",this._onParticleEmitterSetColorStart),this._world.final("PARTICLE_EMITTER.SET_COLOR_START_VARIANCE",this._onParticleEmitterSetColorStartVariance),this._world.final("PARTICLE_EMITTER.SET_GRAVITY",this._onParticleEmitterSetGravity),this._world.final("PARTICLE_EMITTER.SET_LIFETIME",this._onParticleEmitterSetLifetime),this._world.final("PARTICLE_EMITTER.SET_LIFETIME_VARIANCE",this._onParticleEmitterSetLifetimeVariance),this._world.final("PARTICLE_EMITTER.SET_MAX_PARTICLES",this._onParticleEmitterSetMaxParticles),this._world.final("PARTICLE_EMITTER.SET_OFFSET",this._onParticleEmitterSetOffset),this._world.final("PARTICLE_EMITTER.SET_OPACITY_END",this._onParticleEmitterSetOpacityEnd),this._world.final("PARTICLE_EMITTER.SET_OPACITY_END_VARIANCE",this._onParticleEmitterSetOpacityEndVariance),this._world.final("PARTICLE_EMITTER.SET_OPACITY_START",this._onParticleEmitterSetOpacityStart),this._world.final("PARTICLE_EMITTER.SET_OPACITY_START_VARIANCE",this._onParticleEmitterSetOpacityStartVariance),this._world.final("PARTICLE_EMITTER.SET_PAUSED",this._onParticleEmitterSetPaused),this._world.final("PARTICLE_EMITTER.SET_POSITION",this._onParticleEmitterSetPosition),this._world.final("PARTICLE_EMITTER.SET_POSITION_VARIANCE",this._onParticleEmitterSetPositionVariance),this._world.final("PARTICLE_EMITTER.SET_RATE",this._onParticleEmitterSetRate),this._world.final("PARTICLE_EMITTER.SET_RATE_VARIANCE",this._onParticleEmitterSetRateVariance),this._world.final("PARTICLE_EMITTER.SET_SIZE_END",this._onParticleEmitterSetSizeEnd),this._world.final("PARTICLE_EMITTER.SET_SIZE_END_VARIANCE",this._onParticleEmitterSetSizeEndVariance),this._world.final("PARTICLE_EMITTER.SET_SIZE_START",this._onParticleEmitterSetSizeStart),this._world.final("PARTICLE_EMITTER.SET_SIZE_START_VARIANCE",this._onParticleEmitterSetSizeStartVariance),this._world.final("PARTICLE_EMITTER.SET_TEXTURE_URI",this._onParticleEmitterSetTextureUri),this._world.final("PARTICLE_EMITTER.SET_TRANSPARENT",this._onParticleEmitterSetTransparent),this._world.final("PARTICLE_EMITTER.SET_VELOCITY",this._onParticleEmitterSetVelocity),this._world.final("PARTICLE_EMITTER.SET_VELOCITY_VARIANCE",this._onParticleEmitterSetVelocityVariance),this._world.final("PARTICLE_EMITTER.SPAWN",this._onParticleEmitterSpawn)}_subscribeToPlayerEvents(){this._world.final("PLAYER.JOINED_WORLD",this._onPlayerJoinedWorld),this._world.final("PLAYER.LEFT_WORLD",this._onPlayerLeftWorld),this._world.final("PLAYER.RECONNECTED_WORLD",this._onPlayerReconnectedWorld),this._world.final("PLAYER.REQUEST_SYNC",this._onPlayerRequestSync)}_subscribeToPlayerCameraEvents(){this._world.final("PLAYER_CAMERA.LOOK_AT_ENTITY",this._onPlayerCameraLookAtEntity),this._world.final("PLAYER_CAMERA.LOOK_AT_POSITION",this._onPlayerCameraLookAtPosition),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",this._onPlayerCameraSetAttachedToEntity),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",this._onPlayerCameraSetAttachedToPosition),this._world.final("PLAYER_CAMERA.SET_FILM_OFFSET",this._onPlayerCameraSetFilmOffset),this._world.final("PLAYER_CAMERA.SET_FORWARD_OFFSET",this._onPlayerCameraSetForwardOffset),this._world.final("PLAYER_CAMERA.SET_FOV",this._onPlayerCameraSetFov),this._world.final("PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",this._onPlayerCameraSetModelHiddenNodes),this._world.final("PLAYER_CAMERA.SET_MODEL_SHOWN_NODES",this._onPlayerCameraSetModelShownNodes),this._world.final("PLAYER_CAMERA.SET_MODE",this._onPlayerCameraSetMode),this._world.final("PLAYER_CAMERA.SET_OFFSET",this._onPlayerCameraSetOffset),this._world.final("PLAYER_CAMERA.SET_SHOULDER_ANGLE",this._onPlayerCameraSetShoulderAngle),this._world.final("PLAYER_CAMERA.SET_TRACKED_ENTITY",this._onPlayerCameraSetTrackedEntity),this._world.final("PLAYER_CAMERA.SET_TRACKED_POSITION",this._onPlayerCameraSetTrackedPosition),this._world.final("PLAYER_CAMERA.SET_ZOOM",this._onPlayerCameraSetZoom)}_subscribeToPlayerUIEvents(){this._world.final("PLAYER_UI.LOAD",this._onPlayerUILoad),this._world.final("PLAYER_UI.LOCK_POINTER",this._onPlayerUILockPointer),this._world.final("PLAYER_UI.SEND_DATA",this._onPlayerUISendData)}_subscribeToSceneUIEvents(){this._world.final("SCENE_UI.LOAD",this._onSceneUILoad),this._world.final("SCENE_UI.SET_ATTACHED_TO_ENTITY",this._onSceneUISetAttachedToEntity),this._world.final("SCENE_UI.SET_OFFSET",this._onSceneUISetOffset),this._world.final("SCENE_UI.SET_POSITION",this._onSceneUISetPosition),this._world.final("SCENE_UI.SET_STATE",this._onSceneUISetState),this._world.final("SCENE_UI.SET_VIEW_DISTANCE",this._onSceneUISetViewDistance),this._world.final("SCENE_UI.UNLOAD",this._onSceneUIUnload)}_subscribeToSimulationEvents(){this._world.final("SIMULATION.DEBUG_RAYCAST",this._onSimulationDebugRaycast),this._world.final("SIMULATION.DEBUG_RENDER",this._onSimulationDebugRender)}_subscribeToWorldEvents(){this._world.final("WORLD.SET_AMBIENT_LIGHT_COLOR",this._onWorldSetAmbientLightColor),this._world.final("WORLD.SET_AMBIENT_LIGHT_INTENSITY",this._onWorldSetAmbientLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",this._onWorldSetDirectionalLightColor),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",this._onWorldSetDirectionalLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",this._onWorldSetDirectionalLightPosition),this._world.final("WORLD.SET_FOG_COLOR",this._onWorldSetFogColor),this._world.final("WORLD.SET_FOG_FAR",this._onWorldSetFogFar),this._world.final("WORLD.SET_FOG_NEAR",this._onWorldSetFogNear),this._world.final("WORLD.SET_SKYBOX_INTENSITY",this._onWorldSetSkyboxIntensity)}_onAudioPause=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.pa=!0,delete J.pl,delete J.r};_onAudioPlay=(Z)=>{let J=Z.audio.serialize();J.pl=!0,delete J.pa,delete J.r,this._queuedAudioSynchronizations.set(J.i,J)};_onAudioPlayRestart=(Z)=>{let J=Z.audio.serialize();J.r=!0,delete J.pa,delete J.pl,this._queuedAudioSynchronizations.set(J.i,J)};_onAudioSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onAudioSetCutoffDistance=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.cd=Z.cutoffDistance};_onAudioSetDetune=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.de=Z.detune};_onAudioSetDistortion=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.di=Z.distortion};_onAudioSetPosition=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.e=Z.position?void 0:J.e,J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0};_onAudioSetPlaybackRate=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.pr=Z.playbackRate};_onAudioSetReferenceDistance=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.rd=Z.referenceDistance};_onAudioSetVolume=(Z)=>{let J=this._createOrGetQueuedAudioSync(Z.audio);J.v=Z.volume};_onBlockTypeRegistryRegisterBlockType=(Z)=>{let J=Z.blockType.serialize();this._queuedBlockTypeSynchronizations.set(Z.blockType.id,J)};_onChatSendBroadcastMessage=(Z)=>{let J=this._world.tickAllocator,{player:X,message:Y,color:$}=Z,Q=J.getObject();Q.m=Y,Q.c=$,Q.p=X?.id;let K=J.getArray();K.push(Q),this._queuedBroadcasts.push(Y0.createPacket(Y0.outboundPackets.chatMessagesPacketDefinition,K,this._world.loop.currentTick,J.getArray()))};_onChatSendPlayerMessage=(Z)=>{let J=this._world.tickAllocator,{player:X,message:Y,color:$}=Z,Q=this._queuedPerPlayerSynchronizations.get(X)??[],K=J.getObject();K.m=Y,K.c=$;let G=J.getArray();G.push(K),Q.push(Y0.createPacket(Y0.outboundPackets.chatMessagesPacketDefinition,G,this._world.loop.currentTick,this._world.tickAllocator.getArray())),this._queuedPerPlayerSynchronizations.set(X,Q)};_onChunkLatticeAddChunk=(Z)=>{let J=this._createOrGetQueuedChunkSync(Z.chunk);J.b=this._world.tickAllocator.getArray(Z.chunk.blocks),J.rm=void 0,this._spawnedChunks.add(J.c.join(","))};_onChunkLatticeRemoveChunk=(Z)=>{let J=this._createOrGetQueuedChunkSync(Z.chunk),X=J.c.join(",");if(this._spawnedChunks.has(X))this._queuedChunkSynchronizations.delete(X),this._spawnedChunks.delete(X);else J.rm=!0};_onChunkLatticeSetBlock=(Z)=>{let J=this._createOrGetQueuedBlockSync(Z.globalCoordinate);J.i=Z.blockTypeId};_onEntitySetModelAnimationsPlaybackRate=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.ap=Z.playbackRate};_onEntitySpawn=(Z)=>{let J=Z.entity.serialize();this._queuedEntitySynchronizations.set(J.i,J),this._spawnedEntities.add(J.i)};_onEntityDespawn=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);if(this._spawnedEntities.has(J.i))this._queuedEntitySynchronizations.delete(J.i),this._spawnedEntities.delete(J.i);else J.rm=!0};_onEntitySetModelHiddenNodes=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.h=this._world.tickAllocator.getArray(Z.modelHiddenNodes)};_onEntitySetModelScale=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.s=Z.modelScale};_onEntitySetModelShownNodes=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.sn=this._world.tickAllocator.getArray(Z.modelShownNodes)};_onEntitySetModelTextureUri=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.mt=Z.modelTextureUri};_onEntitySetOpacity=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.o=Z.opacity};_onEntitySetParent=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.pe=Z.parent?Z.parent.id:void 0,J.pn=Z.parentNodeName};_onEntitySetTintColor=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.t=Z.tintColor?P0.serializeRgbColor(Z.tintColor,this._world.tickAllocator):void 0};_onEntityStartModelLoopedAnimations=(Z)=>{let J=this._world.tickAllocator,X=this._createOrGetQueuedEntitySync(Z.entity),Y=J.getSet(X.al,Z.animations);if(X.al=J.getArray(Y),X.as){let $=J.getArray();for(let Q of X.as)!Y.has(Q)&&$.push(Q);X.as=$}};_onEntityStartModelOneshotAnimations=(Z)=>{let J=this._world.tickAllocator,X=this._createOrGetQueuedEntitySync(Z.entity),Y=J.getSet(X.ao,Z.animations);if(X.ao=J.getArray(Y),X.as){let $=J.getArray();for(let Q of X.as)!Y.has(Q)&&$.push(Q);X.as=$}};_onEntityStopModelAnimations=(Z)=>{let J=this._world.tickAllocator,X=this._createOrGetQueuedEntitySync(Z.entity);if(X.al){let Y=J.getSet(X.al);for(let $ of Z.animations)Y.delete($);X.al=J.getArray(Y)}if(X.ao){let Y=J.getSet(X.ao);for(let $ of Z.animations)Y.delete($);X.ao=J.getArray(Y)}X.as=J.getArray(J.getSet(X.as,Z.animations))};_onEntityUpdateRotation=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.r=P0.serializeQuaternion(Z.rotation,this._world.tickAllocator)};_onEntityUpdatePosition=(Z)=>{let J=this._createOrGetQueuedEntitySync(Z.entity);J.p=P0.serializeVector(Z.position,this._world.tickAllocator)};_onLightDespawn=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.rm=!0};_onLightSetAngle=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.a=Z.angle};_onLightSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onLightSetColor=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.c=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onLightSetDistance=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.d=Z.distance};_onLightSetIntensity=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.n=Z.intensity};_onLightSetOffset=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onLightSetPenumbra=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.pe=Z.penumbra};_onLightSetPosition=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.e=Z.position?void 0:J.e};_onLightSetTrackedEntity=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.te=Z.entity?Z.entity.id:void 0,J.tp=Z.entity?void 0:J.tp};_onLightSetTrackedPosition=(Z)=>{let J=this._createOrGetQueuedLightSync(Z.light);J.tp=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.te=Z.position?void 0:J.te};_onLightSpawn=(Z)=>{let J=Z.light.serialize();this._queuedLightSynchronizations.set(J.i,J)};_onParticleEmitterDespawn=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.rm=!0};_onParticleEmitterSetAlphaTest=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.at=Z.alphaTest};_onParticleEmitterSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onParticleEmitterSetAttachedToEntityNodeName=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.en=Z.attachedToEntityNodeName};_onParticleEmitterSetColorEnd=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.ce=Z.colorEnd?P0.serializeRgbColor(Z.colorEnd,this._world.tickAllocator):void 0};_onParticleEmitterSetColorEndVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.cev=Z.colorEndVariance?P0.serializeRgbColor(Z.colorEndVariance,this._world.tickAllocator):void 0};_onParticleEmitterSetColorStart=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.cs=Z.colorStart?P0.serializeRgbColor(Z.colorStart,this._world.tickAllocator):void 0};_onParticleEmitterSetColorStartVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.csv=Z.colorStartVariance?P0.serializeRgbColor(Z.colorStartVariance,this._world.tickAllocator):void 0};_onParticleEmitterSetGravity=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.g=Z.gravity?P0.serializeVector(Z.gravity,this._world.tickAllocator):void 0};_onParticleEmitterSetLifetime=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.l=Z.lifetime};_onParticleEmitterSetLifetimeVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.lv=Z.lifetimeVariance};_onParticleEmitterSetMaxParticles=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.mp=Z.maxParticles};_onParticleEmitterSetOffset=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onParticleEmitterSetOpacityEnd=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.oe=Z.opacityEnd};_onParticleEmitterSetOpacityEndVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.oev=Z.opacityEndVariance};_onParticleEmitterSetOpacityStart=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.os=Z.opacityStart};_onParticleEmitterSetOpacityStartVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.osv=Z.opacityStartVariance};_onParticleEmitterSetPaused=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.pa=Z.paused};_onParticleEmitterSetPosition=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.e=Z.position?void 0:J.e,J.en=Z.position?void 0:J.en};_onParticleEmitterSetPositionVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.pv=Z.positionVariance?P0.serializeVector(Z.positionVariance,this._world.tickAllocator):void 0};_onParticleEmitterSetRate=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.r=Z.rate};_onParticleEmitterSetRateVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.rv=Z.rateVariance};_onParticleEmitterSetSizeEnd=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.se=Z.sizeEnd};_onParticleEmitterSetSizeEndVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.sev=Z.sizeEndVariance};_onParticleEmitterSetSizeStart=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.ss=Z.sizeStart};_onParticleEmitterSetSizeStartVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.ssv=Z.sizeStartVariance};_onParticleEmitterSetTextureUri=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.tu=Z.textureUri};_onParticleEmitterSetTransparent=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.t=Z.transparent};_onParticleEmitterSetVelocity=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.v=Z.velocity?P0.serializeVector(Z.velocity,this._world.tickAllocator):void 0};_onParticleEmitterSetVelocityVariance=(Z)=>{let J=this._createOrGetQueuedParticleEmitterSync(Z.particleEmitter);J.vv=Z.velocityVariance?P0.serializeVector(Z.velocityVariance,this._world.tickAllocator):void 0};_onParticleEmitterSpawn=(Z)=>{let J=Z.particleEmitter.serialize();this._queuedParticleEmitterSynchronizations.set(J.i,J)};_onPlayerCameraLookAtEntity=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.pl=P0.serializeVector(Z.entity.position,this._world.tickAllocator),delete J.et,delete J.pt};_onPlayerCameraLookAtPosition=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.pl=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,delete J.et,delete J.pt};_onPlayerCameraSetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.e=Z.entity.id,delete J.p};_onPlayerCameraSetAttachedToPosition=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,delete J.e};_onPlayerCameraSetFilmOffset=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.fo=Z.filmOffset};_onPlayerCameraSetForwardOffset=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.ffo=Z.forwardOffset};_onPlayerCameraSetFov=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.fv=Z.fov};_onPlayerCameraSetModelHiddenNodes=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.h=this._world.tickAllocator.getArray(Z.modelHiddenNodes)};_onPlayerCameraSetModelShownNodes=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.s=this._world.tickAllocator.getArray(Z.modelShownNodes)};_onPlayerCameraSetMode=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.m=Z.mode};_onPlayerCameraSetOffset=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onPlayerCameraSetShoulderAngle=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.sa=Z.shoulderAngle};_onPlayerCameraSetTrackedEntity=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.et=Z.entity?Z.entity.id:void 0,delete J.pl,delete J.pt};_onPlayerCameraSetTrackedPosition=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.pt=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,delete J.et,delete J.pl};_onPlayerCameraSetZoom=(Z)=>{let J=this._createOrGetQueuedPlayerCameraSync(Z.playerCamera);J.z=Z.zoom};_onPlayerJoinedWorld=(Z)=>{let J=this._world.tickAllocator,{player:X}=Z,Y=this._queuedPerPlayerSynchronizations.get(X)??J.getArray();Y.push(Y0.createPacket(Y0.outboundPackets.worldPacketDefinition,this._world.serialize(),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.blockTypesPacketDefinition,this._world.blockTypeRegistry.serialize(),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.chunksPacketDefinition,J.map(this._world.chunkLattice.getAllChunks(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.entitiesPacketDefinition,J.map(this._world.entityManager.getAllEntities(!0),(Q)=>{if(X.camera.attachedToEntity===void 0&&Q instanceof y7&&Q.player===X)X.camera.setAttachedToEntity(Q);return Q.serialize()}),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.audiosPacketDefinition,J.map(this._world.audioManager.getAllLoopedAudios(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.lightsPacketDefinition,J.map(this._world.lightManager.getAllLights(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.particleEmittersPacketDefinition,J.map(this._world.particleEmitterManager.getAllParticleEmitters(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.sceneUIsPacketDefinition,J.map(this._world.sceneUIManager.getAllSceneUIs(!0),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray())),Y.push(Y0.createPacket(Y0.outboundPackets.playersPacketDefinition,J.map(q9.instance.getConnectedPlayers(),(Q)=>Q.serialize()),this._world.loop.currentTick,J.getArray()));let $=this._createOrGetQueuedPlayerCameraSync(X.camera);this._queuedPerPlayerCameraSynchronizations.set(X,J.getObject(X.camera.serialize(),$)),this._queuedPerPlayerSynchronizations.set(X,Y),this._queuedPlayerSynchronizations.set(X.id,X.serialize())};_onPlayerLeftWorld=(Z)=>{let J=this._createOrGetQueuedPlayerSync(Z.player);J.rm=!0};_onPlayerReconnectedWorld=(Z)=>{this._onPlayerJoinedWorld(Z)};_onPlayerRequestSync=(Z)=>{let J=this._world.tickAllocator,X=J.getObject();X.r=Z.receivedAt,X.s=Date.now(),X.p=performance.now()-Z.receivedAtMs,X.n=this._world.loop.nextTickMs,Z.player.connection.send([Y0.createPacket(Y0.outboundPackets.syncResponsePacketDefinition,X,this._world.loop.currentTick,J.getArray())])};_onPlayerUILoad=(Z)=>{let J=this._createOrGetQueuedPlayerUISync(Z.playerUI);J.u=Z.htmlUri};_onPlayerUILockPointer=(Z)=>{let J=this._createOrGetQueuedPlayerUISync(Z.playerUI);J.p=Z.lock};_onPlayerUISendData=(Z)=>{this._createOrGetQueuedPlayerUIDatasSync(Z.playerUI).push(Z.data)};_onSceneUILoad=(Z)=>{let J=Z.sceneUI.serialize();this._queuedSceneUISynchronizations.set(J.i,J),this._loadedSceneUIs.add(J.i)};_onSceneUISetAttachedToEntity=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.e=Z.entity?Z.entity.id:void 0,J.p=Z.entity?void 0:J.p};_onSceneUISetOffset=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.o=Z.offset?P0.serializeVector(Z.offset,this._world.tickAllocator):void 0};_onSceneUISetPosition=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.p=Z.position?P0.serializeVector(Z.position,this._world.tickAllocator):void 0,J.e=Z.position?void 0:J.e};_onSceneUISetState=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.s=Z.state};_onSceneUISetViewDistance=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);J.v=Z.viewDistance};_onSceneUIUnload=(Z)=>{let J=this._createOrGetQueuedSceneUISync(Z.sceneUI);if(this._loadedSceneUIs.has(J.i))this._queuedSceneUISynchronizations.delete(J.i),this._loadedSceneUIs.delete(J.i);else J.rm=!0};_onSimulationDebugRaycast=(Z)=>{this._queuedDebugRaycastSynchronizations.push(P0.serializePhysicsDebugRaycast(Z,this._world.tickAllocator))};_onSimulationDebugRender=(Z)=>{this._queuedBroadcasts.push(Y0.createPacket(Y0.outboundPackets.physicsDebugRenderPacketDefinition,{v:Array.from(Z.vertices),c:Array.from(Z.colors)},this._world.loop.currentTick,this._world.tickAllocator.getArray()))};_onWorldSetAmbientLightColor=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.ac=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onWorldSetAmbientLightIntensity=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.ai=Z.intensity};_onWorldSetDirectionalLightColor=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.dc=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onWorldSetDirectionalLightIntensity=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.di=Z.intensity};_onWorldSetDirectionalLightPosition=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.dp=P0.serializeVector(Z.position,this._world.tickAllocator)};_onWorldSetFogColor=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.fc=P0.serializeRgbColor(Z.color,this._world.tickAllocator)};_onWorldSetFogFar=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.ff=Z.far};_onWorldSetFogNear=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.fn=Z.near};_onWorldSetSkyboxIntensity=(Z)=>{let J=this._createOrGetQueuedWorldSync(Z.world);J.si=Z.intensity};_createOrGetQueuedAudioSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedAudioSync(): Audio has no id!");let J=this._queuedAudioSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedAudioSynchronizations.set(Z.id,J);return J}_createOrGetQueuedBlockSync(Z){let{x:J,y:X,z:Y}=Z,$=`${J},${X},${Y}`,Q=this._queuedBlockSynchronizations.get($);if(!Q)Q=this._world.tickAllocator.getObject(),Q.i=0,Q.c=[J,X,Y],this._queuedBlockSynchronizations.set($,Q);return Q}_createOrGetQueuedChunkSync(Z){if(!Z.originCoordinate)d.fatalError("NetworkSynchronizer._createOrGetQueuedChunkSync(): Chunk has no origin coordinate!");let{x:J,y:X,z:Y}=Z.originCoordinate,$=`${J},${X},${Y}`,Q=this._queuedChunkSynchronizations.get($);if(!Q)Q=this._world.tickAllocator.getObject(),Q.c=[J,X,Y],this._queuedChunkSynchronizations.set($,Q);return Q}_createOrGetQueuedEntitySync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedEntitySync(): Entity has no id!");let J=this._queuedEntitySynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedEntitySynchronizations.set(Z.id,J);return J}_createOrGetQueuedLightSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedLightSync(): Light has no id!");let J=this._queuedLightSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedLightSynchronizations.set(Z.id,J);return J}_createOrGetQueuedParticleEmitterSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedParticleEmitterSync(): ParticleEmitter has no id!");let J=this._queuedParticleEmitterSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedParticleEmitterSynchronizations.set(Z.id,J);return J}_createOrGetQueuedPlayerSync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedPlayerSync(): Player has no id!");let J=this._queuedPlayerSynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedPlayerSynchronizations.set(Z.id,J);return J}_createOrGetQueuedPlayerCameraSync(Z){let J=this._queuedPerPlayerCameraSynchronizations.get(Z.player);if(!J)J=this._world.tickAllocator.getObject(),this._queuedPerPlayerCameraSynchronizations.set(Z.player,J);return J}_createOrGetQueuedPlayerUISync(Z){let J=this._queuedPerPlayerUISynchronizations.get(Z.player);if(!J)J=this._world.tickAllocator.getObject(),this._queuedPerPlayerUISynchronizations.set(Z.player,J);return J}_createOrGetQueuedPlayerUIDatasSync(Z){let J=this._queuedPerPlayerUIDatasSynchronizations.get(Z.player);if(!J)J=this._world.tickAllocator.getArray(),this._queuedPerPlayerUIDatasSynchronizations.set(Z.player,J);return J}_createOrGetQueuedSceneUISync(Z){if(Z.id===void 0)d.fatalError("NetworkSynchronizer._createOrGetQueuedSceneUISync(): SceneUI has no id!");let J=this._queuedSceneUISynchronizations.get(Z.id);if(!J)J=this._world.tickAllocator.getObject(),J.i=Z.id,this._queuedSceneUISynchronizations.set(Z.id,J);return J}_createOrGetQueuedWorldSync(Z){if(Z.id!==this._world.id)d.fatalError("NetworkSynchronizer._createOrGetQueuedWorldSync(): World does not match this network synchronizer world!");return this._queuedWorldSynchronization??=this._world.tickAllocator.getObject(),this._queuedWorldSynchronization.i=Z.id,this._queuedWorldSynchronization}_createOrGetSynchronizedPlayerReliablePackets(Z,J){let X=this._synchronizedPlayerReliablePackets.get(Z);if(!X)X=this._world.tickAllocator.getArray(J),this._synchronizedPlayerReliablePackets.set(Z,X);return X}}class zU{_particleEmitters=new Map;_nextParticleEmitterId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}despawnEntityAttachedParticleEmitters(Z){this.getAllEntityAttachedParticleEmitters(Z).forEach((J)=>{J.despawn()})}getAllParticleEmitters(Z=!1){return Z?this._world.tickAllocator.getArray(this._particleEmitters.values()):Array.from(this._particleEmitters.values())}getAllEntityAttachedParticleEmitters(Z){return this.getAllParticleEmitters().filter((J)=>J.attachedToEntity===Z)}registerParticleEmitter(Z){if(Z.id!==void 0)return Z.id;let J=this._nextParticleEmitterId;return this._particleEmitters.set(J,Z),this._nextParticleEmitterId++,J}unregisterParticleEmitter(Z){if(Z.id===void 0)return;this._particleEmitters.delete(Z.id)}}class FU{_sceneUIs=new Map;_nextSceneUIId=1;_world;constructor(Z){this._world=Z}get world(){return this._world}getAllSceneUIs(Z=!1){return Z?this._world.tickAllocator.getArray(this._sceneUIs.values()):Array.from(this._sceneUIs.values())}getAllEntityAttachedSceneUIs(Z){return this.getAllSceneUIs().filter((J)=>J.attachedToEntity===Z)}getSceneUIById(Z){return this._sceneUIs.get(Z)}registerSceneUI(Z){if(Z.id!==void 0)return Z.id;let J=this._nextSceneUIId;return this._sceneUIs.set(J,Z),this._nextSceneUIId++,J}unloadEntityAttachedSceneUIs(Z){this.getAllEntityAttachedSceneUIs(Z).forEach((J)=>{J.unload()})}unregisterSceneUI(Z){if(Z.id===void 0)return;this._sceneUIs.delete(Z.id)}}class qU{_allocatedArrays=[];_allocatedArray3Numbers=[];_allocatedArray4Numbers=[];_allocatedObjects=[];_allocatedSets=[];_arrayPool=[];_array3NumberPool=[];_array4NumberPool=[];_objectPool=[];_setPool=[];filter(Z,J){let X=this.getArray();for(let Y=0;Y<Z.length;Y++)if(J(Z[Y],Y,Z))X.push(Z[Y]);return X}getArray(Z,J){let X=this._arrayPool.pop()??[];X.length=0;let Y=0;if(Z)for(let $ of Z)X[Y++]=$;if(J)for(let $ of J)X[Y++]=$;return this._allocatedArrays.push(X),X}getArray3Number(Z){let J=this._array3NumberPool.pop()??[0,0,0];if(J[0]=J[1]=J[2]=0,Z){let X=0;for(let Y of Z){if(X>=3)break;J[X++]=Y}}return this._allocatedArray3Numbers.push(J),J}getArray4Number(Z){let J=this._array4NumberPool.pop()??[0,0,0,0];if(J[0]=J[1]=J[2]=J[3]=0,Z){let X=0;for(let Y of Z){if(X>=4)break;J[X++]=Y}}return this._allocatedArray4Numbers.push(J),J}getObject(Z,J){let X=this._objectPool.pop()??Object.create(null);for(let Y in X)delete X[Y];if(Z)Object.assign(X,Z);if(J)Object.assign(X,J);return this._allocatedObjects.push(X),X}getSet(Z,J){let X=this._setPool.pop()??new Set;if(X.clear(),Z)for(let Y of Z)X.add(Y);if(J)for(let Y of J)X.add(Y);return this._allocatedSets.push(X),X}map(Z,J){let X=this.getArray();X.length=Z.length;for(let Y=0;Y<Z.length;Y++)X[Y]=J(Z[Y],Y,Z);return X}reset(){for(let Z=0;Z<this._allocatedArrays.length;Z++)if(this._arrayPool.length<4096)this._arrayPool.push(this._allocatedArrays[Z]);for(let Z=0;Z<this._allocatedArray3Numbers.length;Z++)if(this._array3NumberPool.length<4096)this._array3NumberPool.push(this._allocatedArray3Numbers[Z]);for(let Z=0;Z<this._allocatedArray4Numbers.length;Z++)if(this._array4NumberPool.length<4096)this._array4NumberPool.push(this._allocatedArray4Numbers[Z]);for(let Z=0;Z<this._allocatedObjects.length;Z++)if(this._objectPool.length<4096)this._objectPool.push(this._allocatedObjects[Z]);for(let Z=0;Z<this._allocatedSets.length;Z++)if(this._setPool.length<1024)this._setPool.push(this._allocatedSets[Z]);this._allocatedArrays.length=0,this._allocatedArray3Numbers.length=0,this._allocatedArray4Numbers.length=0,this._allocatedObjects.length=0,this._allocatedSets.length=0}}var tQ6=2,eQ6=3;class UU{_accumulatorMs=0;_targetTicksPerSecond;_fixedTimestepMs;_fixedTimestepS;_maxAccumulatorMs;_nextTickMs=0;_lastLoopTimeMs=0;_tickFunction;_tickErrorCallback;_tickHandle=null;constructor(Z,J,X){this._targetTicksPerSecond=Z,this._fixedTimestepS=Math.fround(1/Z),this._fixedTimestepMs=Math.fround(this._fixedTimestepS*1000),this._maxAccumulatorMs=this._fixedTimestepMs*eQ6,this._tickFunction=J,this._tickErrorCallback=X}get targetTicksPerSecond(){return this._targetTicksPerSecond}get fixedTimestepMs(){return this._fixedTimestepMs}get fixedTimestepS(){return this._fixedTimestepS}get isStarted(){return!!this._tickHandle}get nextTickMs(){return this._nextTickMs}start(){if(this._tickHandle)return;this._lastLoopTimeMs=performance.now();let Z=()=>{let J=performance.now(),X=J-this._lastLoopTimeMs;if(this._lastLoopTimeMs=J,this._accumulatorMs+=X,this._accumulatorMs>this._maxAccumulatorMs)this._accumulatorMs=this._maxAccumulatorMs;if(this._accumulatorMs>=this._fixedTimestepMs)r1.startSpan({operation:"ticker_tick"},()=>{let Y=0;while(this._accumulatorMs>=this._fixedTimestepMs&&Y<tQ6)this._tick(this._fixedTimestepMs),this._accumulatorMs-=this._fixedTimestepMs,Y++;this._nextTickMs=Math.max(0,this._fixedTimestepMs-this._accumulatorMs)});this._tickHandle=setTimeout(Z,this._nextTickMs)};Z()}stop(){if(!this._tickHandle)return;clearTimeout(this._tickHandle),this._tickHandle=null}_tick(Z){try{this._tickFunction(Z)}catch(J){if(J instanceof Error&&this._tickErrorCallback)this._tickErrorCallback(J);else d.warning(`Ticker._tick(): tick callback threw an error, but it was not an instance of Error. Error: ${J}`)}}}var _31;((Q)=>{Q.START="WORLD_LOOP.START";Q.STOP="WORLD_LOOP.STOP";Q.TICK_START="WORLD_LOOP.TICK_START";Q.TICK_END="WORLD_LOOP.TICK_END";Q.TICK_ERROR="WORLD_LOOP.TICK_ERROR"})(_31||={});class LU extends O0{_currentTick=0;_ticker;_world;constructor(Z,J=Nm){super();this._ticker=new UU(J,this._tick,this._onTickError),this._world=Z}get currentTick(){return this._currentTick}get isStarted(){return this._ticker.isStarted}get nextTickMs(){return this._ticker.nextTickMs}get timestepS(){return this._ticker.fixedTimestepS}get world(){return this._world}start(){this._ticker.start(),this.emitWithWorld(this._world,"WORLD_LOOP.START",{worldLoop:this})}stop(){this._ticker.stop(),this.emitWithWorld(this._world,"WORLD_LOOP.STOP",{worldLoop:this})}_tick=(Z)=>{this.emitWithWorld(this._world,"WORLD_LOOP.TICK_START",{worldLoop:this,tickDeltaMs:Z});let J=performance.now();r1.startSpan({operation:"world_tick",attributes:{serverPlayerCount:q9.instance.playerCount,targetTickRate:this._ticker.targetTicksPerSecond,targetTickRateMs:this._ticker.fixedTimestepMs,worldId:this._world.id,worldName:this._world.name,worldChunkCount:this._world.chunkLattice.chunkCount,worldEntityCount:this._world.entityManager.entityCount,worldLoopTick:this._currentTick}},()=>{r1.startSpan({operation:"entities_tick"},()=>this._world.entityManager.tickEntities(Z)),r1.startSpan({operation:"simulation_step"},()=>this._world.simulation.step(Z)),r1.startSpan({operation:"entities_emit_updates"},()=>this._world.entityManager.checkAndEmitUpdates()),r1.startSpan({operation:"network_synchronize"},()=>this._world.networkSynchronizer.synchronize()),r1.startSpan({operation:"release_tick_allocation"},()=>this._world.tickAllocator.reset())}),this._currentTick++,this.emitWithWorld(this._world,"WORLD_LOOP.TICK_END",{worldLoop:this,tickDurationMs:performance.now()-J})};_onTickError=(Z)=>{d.error(`WorldLoop._onTickError(): Error: ${Z}`),this.emitWithWorld(this._world,"WORLD_LOOP.TICK_ERROR",{worldLoop:this,error:Z})}}var Dm;((F)=>{F.SET_AMBIENT_LIGHT_COLOR="WORLD.SET_AMBIENT_LIGHT_COLOR";F.SET_AMBIENT_LIGHT_INTENSITY="WORLD.SET_AMBIENT_LIGHT_INTENSITY";F.SET_DIRECTIONAL_LIGHT_COLOR="WORLD.SET_DIRECTIONAL_LIGHT_COLOR";F.SET_DIRECTIONAL_LIGHT_INTENSITY="WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY";F.SET_DIRECTIONAL_LIGHT_POSITION="WORLD.SET_DIRECTIONAL_LIGHT_POSITION";F.SET_FOG_COLOR="WORLD.SET_FOG_COLOR";F.SET_FOG_FAR="WORLD.SET_FOG_FAR";F.SET_FOG_NEAR="WORLD.SET_FOG_NEAR";F.SET_SKYBOX_INTENSITY="WORLD.SET_SKYBOX_INTENSITY";F.START="WORLD.START";F.STOP="WORLD.STOP"})(Dm||={});class BU extends O0{_id;_ambientLightColor;_ambientLightIntensity;_audioManager;_blockTypeRegistry;_chatManager;_chunkLattice;_directionalLightColor;_directionalLightIntensity;_directionalLightPosition;_entityManager;_fogColor;_fogFar;_fogNear;_lightManager;_loop;_name;_networkSynchronizer;_particleEmitterManager;_sceneUIManager;_simulation;_skyboxIntensity;_skyboxUri;_tag;_tickAllocator;constructor(Z){super();if(this._id=Z.id,this._ambientLightColor=Z.ambientLightColor??{r:255,g:255,b:255},this._ambientLightIntensity=Z.ambientLightIntensity??1,this._directionalLightColor=Z.directionalLightColor??{r:255,g:255,b:255},this._directionalLightIntensity=Z.directionalLightIntensity??3,this._directionalLightPosition=Z.directionalLightPosition??{x:100,y:150,z:100},this._fogColor=Z.fogColor,this._fogFar=Z.fogFar??550,this._fogNear=Z.fogNear??500,this._name=Z.name,this._skyboxIntensity=Z.skyboxIntensity??1,this._skyboxUri=Z.skyboxUri,this._tag=Z.tag,this._audioManager=new D3(this),this._blockTypeRegistry=new jV(this),this._chatManager=new aV(this),this._chunkLattice=new sV(this),this._entityManager=new eV(this),this._lightManager=new WU(this),this._loop=new LU(this,Z.tickRate),this._networkSynchronizer=new WP(this),this._particleEmitterManager=new zU(this),this._sceneUIManager=new FU(this),this._simulation=new VU(this,Z.tickRate,Z.gravity),this._tickAllocator=new qU,Z.map)this.loadMap(Z.map)}get id(){return this._id}get ambientLightColor(){return this._ambientLightColor}get ambientLightIntensity(){return this._ambientLightIntensity}get blockTypeRegistry(){return this._blockTypeRegistry}get chatManager(){return this._chatManager}get chunkLattice(){return this._chunkLattice}get directionalLightColor(){return this._directionalLightColor}get directionalLightIntensity(){return this._directionalLightIntensity}get directionalLightPosition(){return this._directionalLightPosition}get entityManager(){return this._entityManager}get fogColor(){return this._fogColor}get fogFar(){return this._fogFar}get fogNear(){return this._fogNear}get lightManager(){return this._lightManager}get loop(){return this._loop}get name(){return this._name}get networkSynchronizer(){return this._networkSynchronizer}get particleEmitterManager(){return this._particleEmitterManager}get sceneUIManager(){return this._sceneUIManager}get simulation(){return this._simulation}get skyboxIntensity(){return this._skyboxIntensity}get skyboxUri(){return this._skyboxUri}get audioManager(){return this._audioManager}get tag(){return this._tag}get tickAllocator(){return this._tickAllocator}loadMap(Z){if(this.chunkLattice.clear(),Z.blockTypes)for(let J of Z.blockTypes)this.blockTypeRegistry.registerGenericBlockType({id:J.id,isLiquid:J.isLiquid,name:J.name,textureUri:J.textureUri});if(Z.blocks)for(let[J,X]of Object.entries(Z.blocks)){let[Y,$,Q]=J.split(",").map(Number);this.chunkLattice.setBlock({x:Y,y:$,z:Q},X)}if(Z.entities)for(let[J,X]of Object.entries(Z.entities)){let[Y,$,Q]=J.split(",").map(Number);new i8({isEnvironmental:!0,...X}).spawn(this,{x:Y,y:$,z:Q})}}setAmbientLightColor(Z){this._ambientLightColor=Z,this.emit("WORLD.SET_AMBIENT_LIGHT_COLOR",{world:this,color:Z})}setAmbientLightIntensity(Z){this._ambientLightIntensity=Z,this.emit("WORLD.SET_AMBIENT_LIGHT_INTENSITY",{world:this,intensity:Z})}setDirectionalLightColor(Z){this._directionalLightColor=Z,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",{world:this,color:Z})}setDirectionalLightIntensity(Z){this._directionalLightIntensity=Z,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",{world:this,intensity:Z})}setDirectionalLightPosition(Z){this._directionalLightPosition=Z,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",{world:this,position:Z})}setFogColor(Z){this._fogColor=Z,this.emit("WORLD.SET_FOG_COLOR",{world:this,color:Z})}setFogFar(Z){this._fogFar=Z,this.emit("WORLD.SET_FOG_FAR",{world:this,far:Z})}setFogNear(Z){this._fogNear=Z,this.emit("WORLD.SET_FOG_NEAR",{world:this,near:Z})}setSkyboxIntensity(Z){this._skyboxIntensity=Z,this.emit("WORLD.SET_SKYBOX_INTENSITY",{world:this,intensity:Z})}start(){if(this._loop.isStarted)return;this._loop.start(),this.emit("WORLD.START",{world:this,startedAtMs:Date.now()})}stop(){if(!this._loop.isStarted)return;this._loop.stop(),this.emit("WORLD.STOP",{world:this,stoppedAtMs:Date.now()})}serialize(){return P0.serializeWorld(this,this._tickAllocator)}}var S31;((J)=>J.WORLD_CREATED="WORLD_MANAGER.WORLD_CREATED")(S31||={});class EY{static instance=new EY;_defaultWorld;_nextWorldId=1;_worlds=new Map;createWorld(Z){let J=new BU({...Z,id:this._nextWorldId++});return J.start(),this._worlds.set(J.id,J),O0.globalInstance.emit("WORLD_MANAGER.WORLD_CREATED",{world:J}),J}getAllWorlds(){return Array.from(this._worlds.values())}getDefaultWorld(){return this._defaultWorld??=this.createWorld({name:"Default World",skyboxUri:"skyboxes/partly-cloudy"}),this._defaultWorld}getWorldsByTag(Z){let J=[];return this._worlds.forEach((X)=>{if(X.tag===Z)J.push(X)}),J}getWorld(Z){return this._worlds.get(Z)}setDefaultWorld(Z){this._defaultWorld=Z}}var v31;((Y)=>{Y.PLAYER_CONNECTED="PLAYER_MANAGER.PLAYER_CONNECTED";Y.PLAYER_DISCONNECTED="PLAYER_MANAGER.PLAYER_DISCONNECTED";Y.PLAYER_RECONNECTED="PLAYER_MANAGER.PLAYER_RECONNECTED"})(v31||={});class q9{static instance=new q9;worldSelectionHandler;_connectionPlayers=new Map;constructor(){O0.globalInstance.on("CONNECTION.OPENED",({connection:Z,req:J})=>{this._onConnectionOpened(Z,J.session)}),O0.globalInstance.on("CONNECTION.DISCONNECTED",({connection:Z})=>{this._onConnectionDisconnected(Z)}),O0.globalInstance.on("CONNECTION.RECONNECTED",({connection:Z})=>{this._onConnectionReconnected(Z)}),O0.globalInstance.on("CONNECTION.CLOSED",({connection:Z})=>{this._onConnectionClosed(Z)})}get playerCount(){return this._connectionPlayers.size}getConnectedPlayers(){return Array.from(this._connectionPlayers.values())}getConnectedPlayersByWorld(Z){return this.getConnectedPlayers().filter((J)=>J.world===Z)}getConnectedPlayerByUsername(Z){return Array.from(this._connectionPlayers.values()).find((J)=>{return J.username.toLowerCase()===Z.toLowerCase()})}async _onConnectionOpened(Z,J){let X=new CG(Z,J);await X.loadInitialPersistedData(),this._connectionPlayers.set(Z,X),O0.globalInstance.emit("PLAYER_MANAGER.PLAYER_CONNECTED",{player:X});let Y=await this.worldSelectionHandler?.(X);X.joinWorld(Y??EY.instance.getDefaultWorld())}_onConnectionDisconnected(Z){let J=this._connectionPlayers.get(Z);if(J)J.resetInputs(),J.camera.reset()}_onConnectionReconnected(Z){let J=this._connectionPlayers.get(Z);if(J)J.reconnected(),O0.globalInstance.emit("PLAYER_MANAGER.PLAYER_RECONNECTED",{player:J});else d.warning(`PlayerManager._onConnectionReconnected(): Connection ${Z.id} not in the PlayerManager._connectionPlayers map.`)}_onConnectionClosed(Z){let J=this._connectionPlayers.get(Z);if(J)J.disconnect(),this._connectionPlayers.delete(Z),O0.globalInstance.emit("PLAYER_MANAGER.PLAYER_DISCONNECTED",{player:J});else d.warning(`PlayerManager._onConnectionClosed(): Connection ${Z.id} not in the PlayerManager._connectionPlayers map.`)}}Buffer.poolSize=134217728;var x31;((X)=>{X.START="GAMESERVER.START";X.STOP="GAMESERVER.STOP"})(x31||={});function ZK6(Z){A31.default.init().then(()=>{return $K.instance.modelRegistry.preloadModels()}).then(()=>{if(Z.length>0)Z($K.instance.worldManager.getDefaultWorld());else Z();$K.instance.start()}).catch((J)=>{d.fatalError(`Failed to initialize the game engine, exiting. Error: ${J}`)})}class $K{static _instance;_modelRegistry=S5.instance;_playerManager=q9.instance;_socket=a7.instance;_worldManager=EY.instance;_webServer=FW.instance;constructor(){}static get instance(){if(!this._instance)this._instance=new $K;return this._instance}get modelRegistry(){return this._modelRegistry}get playerManager(){return this._playerManager}get socket(){return this._socket}get webServer(){return this._webServer}get worldManager(){return this._worldManager}start(){O0.globalInstance.emit("GAMESERVER.START",{startedAtMs:performance.now()}),this._webServer.start()}}var F6=r(GK(),1);class WK extends Float32Array{constructor(Z,J,X,Y){super([Z,J,X,Y])}get determinant(){return F6.mat2.determinant(this)}get frobeniusNorm(){return F6.mat2.frob(this)}static create(){let Z=new WK(0,0,0,0);return F6.mat2.identity(Z),Z}static fromRotation(Z){let J=WK.create();return F6.mat2.fromRotation(J,Z),J}static fromScaling(Z){let J=WK.create();return F6.mat2.fromScaling(J,Z),J}add(Z){return F6.mat2.add(this,this,Z),this}adjoint(){return F6.mat2.adjoint(this,this),this}clone(){return new WK(this[0],this[1],this[2],this[3])}copy(Z){return F6.mat2.copy(this,Z),this}equals(Z){return F6.mat2.equals(this,Z)}exactEquals(Z){return F6.mat2.exactEquals(this,Z)}identity(){return F6.mat2.identity(this),this}invert(){return F6.mat2.invert(this,this),this}multiply(Z){return F6.mat2.mul(this,this,Z),this}multiplyScalar(Z){return F6.mat2.multiplyScalar(this,this,Z),this}rotate(Z){return F6.mat2.rotate(this,this,Z),this}subtract(Z){return F6.mat2.sub(this,this,Z),this}toString(){return`[${this[0]},${this[1]}][${this[2]},${this[3]}]`}transpose(){return F6.mat2.transpose(this,this),this}}var R8=r(GK(),1);class UZ extends Float32Array{constructor(Z,J,X,Y,$,Q,K,G,W){super([Z,J,X,Y,$,Q,K,G,W])}get determinant(){return R8.mat3.determinant(this)}get frobeniusNorm(){return R8.mat3.frob(this)}static create(){let Z=new UZ(0,0,0,0,0,0,0,0,0);return R8.mat3.identity(Z),Z}static fromMatrix4(Z){let J=UZ.create();return R8.mat3.fromMat4(J,Z),J}static fromQuaternion(Z){let J=UZ.create();return R8.mat3.fromQuat(J,Z),J}static fromRotation(Z){let J=UZ.create();return R8.mat3.fromRotation(J,Z),J}static fromScaling(Z){let J=UZ.create();return R8.mat3.fromScaling(J,Z),J}static fromTranslation(Z){let J=UZ.create();return R8.mat3.fromTranslation(J,Z),J}add(Z){return R8.mat3.add(this,this,Z),this}adjoint(){return R8.mat3.adjoint(this,this),this}clone(){return new UZ(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8])}copy(Z){return R8.mat3.copy(this,Z),this}equals(Z){return R8.mat3.equals(this,Z)}exactEquals(Z){return R8.mat3.exactEquals(this,Z)}identity(){return R8.mat3.identity(this),this}invert(){return R8.mat3.invert(this,this),this}multiply(Z){return R8.mat3.mul(this,this,Z),this}multiplyScalar(Z){return R8.mat3.multiplyScalar(this,this,Z),this}transformVector(Z){return Z.transformMatrix3(this)}projection(Z,J){return R8.mat3.projection(this,Z,J),this}rotate(Z){return R8.mat3.rotate(this,this,Z),this}subtract(Z){return R8.mat3.sub(this,this,Z),this}toString(){return`[${this[0]},${this[1]},${this[2]}][${this[3]},${this[4]},${this[5]}][${this[6]},${this[7]},${this[8]}]`}transpose(){return R8.mat3.transpose(this,this),this}}var X1=r(GK(),1);class P5 extends Float32Array{constructor(Z,J,X,Y,$,Q,K,G,W,H,V,F,z,q,U,B){super([Z,J,X,Y,$,Q,K,G,W,H,V,F,z,q,U,B])}get determinant(){return X1.mat4.determinant(this)}get frobeniusNorm(){return X1.mat4.frob(this)}static create(){let Z=new P5(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return X1.mat4.identity(Z),Z}static fromQuaternion(Z){let J=P5.create();return X1.mat4.fromQuat(J,Z),J}static fromRotation(Z,J){let X=P5.create();return X1.mat4.fromRotation(X,Z,J),X}static fromRotationTranslation(Z,J){let X=P5.create();return X1.mat4.fromRotationTranslation(X,Z,J),X}static fromRotationTranslationScale(Z,J,X){let Y=P5.create();return X1.mat4.fromRotationTranslationScale(Y,Z,J,X),Y}static fromRotationTranslationScaleOrigin(Z,J,X,Y){let $=P5.create();return X1.mat4.fromRotationTranslationScaleOrigin($,Z,J,X,Y),$}static fromScaling(Z){let J=P5.create();return X1.mat4.fromScaling(J,Z),J}static fromTranslation(Z){let J=P5.create();return X1.mat4.fromTranslation(J,Z),J}static fromXRotation(Z){let J=P5.create();return X1.mat4.fromXRotation(J,Z),J}static fromYRotation(Z){let J=P5.create();return X1.mat4.fromYRotation(J,Z),J}static fromZRotation(Z){let J=P5.create();return X1.mat4.fromZRotation(J,Z),J}add(Z){return X1.mat4.add(this,this,Z),this}adjoint(){return X1.mat4.adjoint(this,this),this}clone(){return new P5(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8],this[9],this[10],this[11],this[12],this[13],this[14],this[15])}copy(Z){return X1.mat4.copy(this,Z),this}equals(Z){return X1.mat4.equals(this,Z)}exactEquals(Z){return X1.mat4.exactEquals(this,Z)}frustrum(Z,J,X,Y,$,Q){return X1.mat4.frustum(this,Z,J,X,Y,$,Q),this}identity(){return X1.mat4.identity(this),this}invert(){return X1.mat4.invert(this,this),this}lookAt(Z,J,X){return X1.mat4.lookAt(this,Z,J,X),this}multiply(Z){return X1.mat4.mul(this,this,Z),this}multiplyScalar(Z){return X1.mat4.multiplyScalar(this,this,Z),this}orthographic(Z,J,X,Y,$,Q){return X1.mat4.ortho(this,Z,J,X,Y,$,Q),this}perspective(Z,J,X,Y){return X1.mat4.perspective(this,Z,J,X,Y),this}rotate(Z,J){return X1.mat4.rotate(this,this,Z,J),this}rotateX(Z){return X1.mat4.rotateX(this,this,Z),this}rotateY(Z){return X1.mat4.rotateY(this,this,Z),this}rotateZ(Z){return X1.mat4.rotateZ(this,this,Z),this}scale(Z){return X1.mat4.scale(this,this,Z),this}subtract(Z){return X1.mat4.sub(this,this,Z),this}targetTo(Z,J,X){return X1.mat4.targetTo(this,Z,J,X),this}toString(){return`[${this[0]},${this[1]},${this[2]},${this[3]}][${this[4]},${this[5]},${this[6]},${this[7]}][${this[8]},${this[9]},${this[10]},${this[11]}][${this[12]},${this[13]},${this[14]},${this[15]}]`}translate(Z){return X1.mat4.translate(this,this,Z),this}transpose(){return X1.mat4.transpose(this,this),this}}var f1=r(GK(),1);class M3 extends Float32Array{constructor(Z,J,X,Y){super([Z,J,X,Y])}get length(){return f1.quat.length(this)}get squaredLength(){return f1.quat.squaredLength(this)}get magnitude(){return f1.quat.length(this)}get squaredMagnitude(){return f1.quat.squaredLength(this)}get x(){return this[0]}set x(Z){this[0]=Z}get y(){return this[1]}set y(Z){this[1]=Z}get z(){return this[2]}set z(Z){this[2]=Z}get w(){return this[3]}set w(Z){this[3]=Z}static fromEuler(Z,J,X){let Y=f1.quat.fromEuler(new Float32Array(4),Z,J,X);return new M3(Y[0],Y[1],Y[2],Y[3])}static fromQuaternionLike(Z){return new M3(Z.x,Z.y,Z.z,Z.w)}clone(){return new M3(this.x,this.y,this.z,this.w)}conjugate(){return f1.quat.conjugate(this,this),this}copy(Z){return f1.quat.copy(this,Z),this}dot(Z){return f1.quat.dot(this,Z)}exponential(){return f1.quat.exp(this,this),this}equals(Z){return f1.quat.equals(this,Z)}exactEquals(Z){return f1.quat.exactEquals(this,Z)}getAngle(Z){return f1.quat.getAngle(this,Z)}identity(){return f1.quat.identity(this),this}invert(){return f1.quat.invert(this,this),this}lerp(Z,J){return f1.quat.lerp(this,this,Z,J),this}logarithm(){return f1.quat.ln(this,this),this}multiply(Z){return f1.quat.multiply(this,this,Z),this}transformVector(Z){return Z.transformQuaternion(this)}normalize(){return f1.quat.normalize(this,this),this}power(Z){return f1.quat.pow(this,this,Z),this}randomize(){return f1.quat.random(this),this}rotateX(Z){return f1.quat.rotateX(this,this,Z),this}rotateY(Z){return f1.quat.rotateY(this,this,Z),this}rotateZ(Z){return f1.quat.rotateZ(this,this,Z),this}scale(Z){return f1.quat.scale(this,this,Z),this}setAxisAngle(Z,J){return f1.quat.setAxisAngle(this,Z,J),this}slerp(Z,J){return f1.quat.slerp(this,this,Z,J),this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}}var q1=r(GK(),1);class wU extends Float32Array{constructor(Z,J){super([Z,J])}get length(){return q1.vec2.length(this)}get squaredLength(){return q1.vec2.squaredLength(this)}get magnitude(){return q1.vec2.length(this)}get squaredMagnitude(){return q1.vec2.squaredLength(this)}get x(){return this[0]}set x(Z){this[0]=Z}get y(){return this[1]}set y(Z){this[1]=Z}static create(){return new wU(0,0)}add(Z){return q1.vec2.add(this,this,Z),this}angle(Z){return q1.vec2.angle(this,Z)}ceil(){return q1.vec2.ceil(this,this),this}clone(){return new wU(this.x,this.y)}copy(Z){return q1.vec2.copy(this,Z),this}distance(Z){return q1.vec2.distance(this,Z)}divide(Z){return q1.vec2.divide(this,this,Z),this}dot(Z){return q1.vec2.dot(this,Z)}equals(Z){return q1.vec2.equals(this,Z)}exactEquals(Z){return q1.vec2.exactEquals(this,Z)}floor(){return q1.vec2.floor(this,this),this}invert(){return q1.vec2.inverse(this,this),this}lerp(Z,J){return q1.vec2.lerp(this,this,Z,J),this}max(Z){return q1.vec2.max(this,this,Z),this}min(Z){return q1.vec2.min(this,this,Z),this}multiply(Z){return q1.vec2.mul(this,this,Z),this}negate(){return q1.vec2.negate(this,this),this}normalize(){return q1.vec2.normalize(this,this),this}randomize(Z){return q1.vec2.random(this,Z),this}rotate(Z,J){return q1.vec2.rotate(this,this,Z,J),this}round(){return q1.vec2.round(this,this),this}scale(Z){return q1.vec2.scale(this,this,Z),this}scaleAndAdd(Z,J){return q1.vec2.scaleAndAdd(this,this,Z,J),this}subtract(Z){return q1.vec2.sub(this,this,Z),this}toString(){return`${this.x},${this.y}`}transformMatrix2(Z){return q1.vec2.transformMat2(this,this,Z),this}transformMatrix3(Z){return q1.vec2.transformMat3(this,this,Z),this}transformMatrix4(Z){return q1.vec2.transformMat4(this,this,Z),this}zero(){return q1.vec2.zero(this),this}}var V1=r(GK(),1);class R3 extends Float32Array{constructor(Z,J,X){super([Z,J,X])}get length(){return V1.vec3.length(this)}get squaredLength(){return V1.vec3.squaredLength(this)}get magnitude(){return V1.vec3.length(this)}get squaredMagnitude(){return V1.vec3.squaredLength(this)}get x(){return this[0]}set x(Z){this[0]=Z}get y(){return this[1]}set y(Z){this[1]=Z}get z(){return this[2]}set z(Z){this[2]=Z}static create(){return new R3(0,0,0)}static fromVector3Like(Z){return new R3(Z.x,Z.y,Z.z)}add(Z){return V1.vec3.add(this,this,Z),this}ceil(){return V1.vec3.ceil(this,this),this}clone(){return new R3(this.x,this.y,this.z)}copy(Z){return V1.vec3.copy(this,Z),this}cross(Z){return V1.vec3.cross(this,this,Z),this}distance(Z){return V1.vec3.distance(this,Z)}divide(Z){return V1.vec3.div(this,this,Z),this}dot(Z){return V1.vec3.dot(this,Z)}equals(Z){return V1.vec3.equals(this,Z)}exactEquals(Z){return V1.vec3.exactEquals(this,Z)}floor(){return V1.vec3.floor(this,this),this}invert(){return V1.vec3.inverse(this,this),this}lerp(Z,J){return V1.vec3.lerp(this,this,Z,J),this}max(Z){return V1.vec3.max(this,this,Z),this}min(Z){return V1.vec3.min(this,this,Z),this}multiply(Z){return V1.vec3.mul(this,this,Z),this}negate(){return V1.vec3.negate(this,this),this}normalize(){return V1.vec3.normalize(this,this),this}randomize(Z){return V1.vec3.random(this,Z),this}rotateX(Z,J){return V1.vec3.rotateX(this,this,Z,J),this}rotateY(Z,J){return V1.vec3.rotateY(this,this,Z,J),this}rotateZ(Z,J){return V1.vec3.rotateZ(this,this,Z,J),this}round(){return V1.vec3.round(this,this),this}scale(Z){return V1.vec3.scale(this,this,Z),this}scaleAndAdd(Z,J){return V1.vec3.scaleAndAdd(this,this,Z,J),this}subtract(Z){return V1.vec3.sub(this,this,Z),this}toString(){return`${this.x},${this.y},${this.z}`}transformMatrix3(Z){return V1.vec3.transformMat3(this,this,Z),this}transformMatrix4(Z){return V1.vec3.transformMat4(this,this,Z),this}transformQuaternion(Z){return V1.vec3.transformQuat(this,this,Z),this}zero(){return V1.vec3.zero(this),this}}var NV1=r(MV1(),1);var RV1=0.099856;class jU extends _Y{faceSpeed=0;idleLoopedAnimations=[];idleLoopedAnimationsSpeed;jumpOneshotAnimations=[];moveLoopedAnimations=[];moveLoopedAnimationsSpeed;moveSpeed=0;_faceTarget;_jumpHeight=0;_moveCompletesWhenStuck=!1;_moveIgnoreAxes={};_moveStartMoveAnimations=!1;_moveStartIdleAnimationsOnCompletion=!0;_moveStoppingDistanceSquared=RV1;_moveStuckAccumulatorMs=0;_moveStuckLastPosition;_moveTarget;_onFace;_onFaceComplete;_onMove;_onMoveComplete;_stopFaceRequested=!1;_stopMoveRequested=!1;constructor(Z={}){super();this.idleLoopedAnimations=Z.idleLoopedAnimations??this.idleLoopedAnimations,this.idleLoopedAnimationsSpeed=Z.idleLoopedAnimationsSpeed??this.idleLoopedAnimationsSpeed,this.jumpOneshotAnimations=Z.jumpOneshotAnimations??this.jumpOneshotAnimations,this.moveLoopedAnimations=Z.moveLoopedAnimations??this.moveLoopedAnimations,this.moveLoopedAnimationsSpeed=Z.moveLoopedAnimationsSpeed??this.moveLoopedAnimationsSpeed}spawn(Z){super.spawn(Z),this._startIdleAnimations(Z)}face(Z,J,X){this._faceTarget=Z,this.faceSpeed=J,this._onFace=X?.faceCallback,this._onFaceComplete=X?.faceCompleteCallback}jump(Z){this._jumpHeight=Z}move(Z,J,X){this.moveSpeed=J,this._moveCompletesWhenStuck=X?.moveCompletesWhenStuck??!1,this._moveIgnoreAxes=X?.moveIgnoreAxes??{},this._moveStartIdleAnimationsOnCompletion=X?.moveStartIdleAnimationsOnCompletion??!0,this._moveStartMoveAnimations=!0,this._moveStoppingDistanceSquared=X?.moveStoppingDistance?X.moveStoppingDistance**2:RV1,this._moveTarget=Z,this._onMove=X?.moveCallback,this._onMoveComplete=X?.moveCompleteCallback,this._moveStuckAccumulatorMs=0,this._moveStuckLastPosition=void 0}stopFace(){this._stopFaceRequested=!0}stopMove(){this._stopMoveRequested=!0}tick(Z,J){if(super.tick(Z,J),!this._moveTarget&&!this._faceTarget&&!this._jumpHeight)return;if(this._moveStartMoveAnimations)this._startMoveAnimations(Z),this._moveStartMoveAnimations=!1;let X=J/1000,Y=Z.position;if(Z.isDynamic&&this._jumpHeight>0){let $=Math.abs(Z.world.simulation.gravity.y),Q=Math.sqrt(2*$*this._jumpHeight);Z.applyImpulse({x:0,y:Q*Z.mass,z:0}),this._jumpHeight=0,this._startJumpAnimations(Z)}if(this._moveTarget){let $={x:this._moveIgnoreAxes.x?0:this._moveTarget.x-Y.x,y:this._moveIgnoreAxes.y?0:this._moveTarget.y-Y.y,z:this._moveIgnoreAxes.z?0:this._moveTarget.z-Y.z},Q=$.x*$.x+$.y*$.y+$.z*$.z,K=!1;if(this._moveCompletesWhenStuck){if(this._moveStuckAccumulatorMs+=J,this._moveStuckAccumulatorMs>=500){if(this._moveStuckLastPosition){let G=Y.x-this._moveStuckLastPosition.x,W=Y.y-this._moveStuckLastPosition.y,H=Y.z-this._moveStuckLastPosition.z;K=Math.sqrt(G*G+W*W+H*H)<this.moveSpeed*0.1}this._moveStuckLastPosition=Y,this._moveStuckAccumulatorMs=0}}if(Q>this._moveStoppingDistanceSquared&&!this._stopMoveRequested&&!K){let G=Math.sqrt(Q),W=this.moveSpeed*X,V=Math.min(G,W)/G,F={x:Y.x+$.x*V,y:Y.y+$.y*V,z:Y.z+$.z*V};if(Z.setPosition(F),this._onMove)this._onMove(F,this._moveTarget)}else{if(this._moveStuckAccumulatorMs=0,this._moveStuckLastPosition=void 0,this._moveTarget=void 0,this._stopMoveRequested=!1,this._moveStartIdleAnimationsOnCompletion)this._startIdleAnimations(Z);if(this._onMoveComplete){let G=this._onMoveComplete;this._onMove=void 0,this._onMoveComplete=void 0,G(Y)}}}if(this._faceTarget){let $={x:this._faceTarget.x-Y.x,z:this._faceTarget.z-Y.z},Q=Math.atan2(-$.x,-$.z),K=Z.rotation,G=Math.atan2(2*(K.w*K.y),1-2*(K.y*K.y)),W=Q-G;while(W>Math.PI)W-=2*Math.PI;while(W<-Math.PI)W+=2*Math.PI;if(Math.abs(W)>0.01&&!this._stopFaceRequested){let H=this.faceSpeed*X,V=Math.abs(W)<H?W:Math.sign(W)*H,z=(G+V)/2,q={x:0,y:Math.fround(Math.sin(z)),z:0,w:Math.fround(Math.cos(z))};if(Z.setRotation(q),this._onFace)this._onFace(K,q)}else if(this._faceTarget=void 0,this._stopFaceRequested=!1,this._onFaceComplete){let H=this._onFaceComplete;this._onFace=void 0,this._onFaceComplete=void 0,H(Z.rotation)}}}_startIdleAnimations(Z){if(this.idleLoopedAnimationsSpeed)Z.setModelAnimationsPlaybackRate(this.idleLoopedAnimationsSpeed);Z.stopModelAnimations(this.moveLoopedAnimations),Z.stopModelAnimations(this.jumpOneshotAnimations),Z.startModelLoopedAnimations(this.idleLoopedAnimations)}_startJumpAnimations(Z){Z.stopModelAnimations(this.moveLoopedAnimations),Z.stopModelAnimations(this.idleLoopedAnimations),Z.startModelOneshotAnimations(this.jumpOneshotAnimations)}_startMoveAnimations(Z){if(this.moveLoopedAnimationsSpeed)Z.setModelAnimationsPlaybackRate(this.moveLoopedAnimationsSpeed);Z.stopModelAnimations(this.jumpOneshotAnimations),Z.stopModelAnimations(this.idleLoopedAnimations),Z.startModelLoopedAnimations(this.moveLoopedAnimations)}}class Am extends jU{_debug=!1;_entity;_maxFall=0;_maxJump=0;_maxOpenSetIterations=200;_onPathfindAbort;_onPathfindComplete;_onWaypointMoveComplete;_onWaypointMoveSkipped;_speed=0;_target;_verticalPenalty=0;_waypoints=[];_waypointNextIndex=0;_waypointStoppingDistance;_waypointTimeoutMs=2000;constructor(Z={}){super(Z)}get debug(){return this._debug}get maxFall(){return this._maxFall}get maxJump(){return this._maxJump}get maxOpenSetIterations(){return this._maxOpenSetIterations}get speed(){return this._speed}get target(){return this._target}get verticalPenalty(){return this._verticalPenalty}get waypoints(){return this._waypoints}get waypointNextIndex(){return this._waypointNextIndex}get waypointTimeoutMs(){return this._waypointTimeoutMs}pathfind(Z,J,X){if(this._target=Z,this._speed=J,this._debug=X?.debug??!1,this._maxFall=X?.maxFall?-Math.abs(X.maxFall):0,this._maxJump=X?.maxJump?Math.abs(X.maxJump):0,this._maxOpenSetIterations=X?.maxOpenSetIterations??200,this._onPathfindAbort=X?.pathfindAbortCallback,this._onPathfindComplete=X?.pathfindCompleteCallback,this._onWaypointMoveComplete=X?.waypointMoveCompleteCallback,this._onWaypointMoveSkipped=X?.waypointMoveSkippedCallback,this._verticalPenalty=X?.verticalPenalty??0,this._waypoints=[],this._waypointNextIndex=0,this._waypointStoppingDistance=X?.waypointStoppingDistance,this._waypointTimeoutMs=X?.waypointTimeoutMs??2000/J,!this._calculatePath())return!1;return this._moveToNextWaypoint(),!0}attach(Z){super.attach(Z),this._entity=Z}detach(Z){super.detach(Z),this._entity=void 0}_calculatePath(){if(!this._target||!this._entity?.world)return d.error("PathfindingEntityController._calculatePath: No target or world"),!1;let Z=this._entity.height,J=this._findGroundedStart();if(!J){if(this._debug)d.warning(`PathfindingEntityController._calculatePath: No valid grounded start found within maxFall distance, path search aborted. Start: ${this._coordinateToKey(this._target)}, Target: ${this._coordinateToKey(this._target)}`);return!1}let X={x:Math.floor(this._target.x),y:Math.floor(this._target.y),z:Math.floor(this._target.z)},Y=Math.abs(X.x-J.x),$=Math.abs(X.y-J.y),Q=Math.abs(X.z-J.z);if(Y<=2&&$<=2&&Q<=2&&!this._isNeighborCoordinateBlocked(J,X,this._entity.height))return this._waypoints=[{x:J.x+0.5,y:J.y+Z/2,z:J.z+0.5},{x:X.x+0.5,y:X.y+Z/2,z:X.z+0.5}],!0;if(J.x===X.x&&J.y===X.y&&J.z===X.z)return this._waypoints=[{x:J.x+0.5,y:J.y+Z/2,z:J.z+0.5}],!0;let G=this._coordinateToKey(J),W=new Map,H=new Map([[G,0]]),V=new Map([[G,this._pathfindingHeuristic(J,X)]]),F=new Set,z=new NV1.Heap((M,R)=>{let D=V.get(M[0])??1/0,N=V.get(R[0])??1/0;return D-N});z.push([G,J]);let q=[{x:0,y:0,z:1},{x:1,y:0,z:0},{x:0,y:0,z:-1},{x:-1,y:0,z:0},{x:1,y:0,z:1},{x:1,y:0,z:-1},{x:-1,y:0,z:1},{x:-1,y:0,z:-1}],U=[];for(let M=this._maxJump;M>=this._maxFall;M--){if(M===0)continue;let R=Math.abs(J.y+M-X.y);U.push({y:M,distanceToTargetY:R})}U.sort((M,R)=>M.distanceToTargetY-R.distanceToTargetY);let B=[...q,...U.flatMap(({y:M})=>q.map((R)=>({...R,y:M})))],L=0,w=Math.abs(X.x-J.x)+Math.abs(X.y-J.y)+Math.abs(X.z-J.z),O=Math.min(this._maxOpenSetIterations,w*20);while(!z.isEmpty()&&L<O){L++;let[M,R]=z.pop();if(R.x===X.x&&R.y===X.y&&R.z===X.z){let C=this._reconstructPath(W,R);if(this._waypoints=C.map((T)=>({x:T.x+0.5,y:T.y+Z/2,z:T.z+0.5})),this._debug)console.log(`PathfindingEntityController._calculatePath: Path found after ${L} open set iterations. Start: ${this._coordinateToKey(J)}, Target: ${this._coordinateToKey(this._target)}`);return!0}F.add(M);let D=H.get(M),N=new Map;for(let C of B){let T=`${C.x},${C.z}`,E=C.y<0;if(E&&N.has(T))continue;let x={x:R.x+C.x,y:R.y+C.y,z:R.z+C.z};if(Math.abs(X.x-x.x)+Math.abs(X.y-x.y)+Math.abs(X.z-x.z)>w*1.5)continue;let h=this._coordinateToKey(x);if(F.has(h))continue;let I=this._isNeighborCoordinateBlocked(R,x,this._entity.height);if(E&&I){N.set(T,!0);continue}if(I)continue;let _=Math.abs(C.x),A=Math.abs(C.y),p=Math.abs(C.z),n=A===0?0:this._verticalPenalty,o=(Math.max(_,A,p)===1&&_+A+p>1?1.4:1)+n,Q0=D+o,G0=H.get(h)??1/0;if(Q0>=G0)continue;W.set(h,R),H.set(h,Q0);let S0=Q0+this._pathfindingHeuristic(x,X);V.set(h,S0),z.push([h,x])}}if(L>=O){if(this._onPathfindAbort?.(),this._debug)d.warning(`PathfindingEntityController._calculatePath: Maximum open set iterations reached (${O}), path search aborted. Start: ${this._coordinateToKey(J)}, Target: ${this._coordinateToKey(this._target)}`)}else if(this._debug)d.warning(`PathfindingEntityController._calculatePath: No valid path found. Start: ${this._coordinateToKey(J)}, Target: ${this._coordinateToKey(this._target)}`);return this._target=void 0,this._waypoints=[],!1}_reconstructPath(Z,J){let X=[J],Y=J;while(Z.has(this._coordinateToKey(Y)))Y=Z.get(this._coordinateToKey(Y)),X.unshift(Y);return X}_coordinateToKey(Z){return`${Z.x},${Z.y},${Z.z}`}_moveToNextWaypoint(){let Z=this._waypointNextIndex>0?this._waypoints[this._waypointNextIndex-1]:void 0,J=this._waypoints[this._waypointNextIndex];if(!J||!this._entity)return;let X=0;if(this._entity.isDynamic&&Z&&J.y>Z.y){let Y=J.y-Z.y,$=Math.min(Y,this._maxJump)+0.75;this.jump($);let Q=Math.abs(this._entity.world.simulation.gravity.y),K=Math.sqrt(2*Q*$),G=Z.x+0.5,W=Z.z+0.5,H=J.x+0.5,V=J.z+0.5,F=H-G,z=V-W,q=Math.sqrt(F*F+z*z),U=K/Q,B=q/this._speed;X=Math.min(U*0.8,B)*1000}setTimeout(()=>{if(!this._entity)return;let Y=Date.now();this.face(J,this._speed),this.move(J,this._speed,{moveCompletesWhenStuck:!0,moveIgnoreAxes:{y:this._entity.isDynamic},moveStartIdleAnimationsOnCompletion:this._waypointNextIndex===this._waypoints.length-1,moveStoppingDistance:this._waypointStoppingDistance,moveCallback:()=>{if(Date.now()-Y>this._waypointTimeoutMs&&this._waypointNextIndex<this._waypoints.length-1)this._onWaypointMoveSkipped?.(J,this._waypointNextIndex),this._waypointNextIndex++,this._moveToNextWaypoint()},moveCompleteCallback:()=>{if(this._waypointNextIndex<this._waypoints.length-1)this._onWaypointMoveComplete?.(J,this._waypointNextIndex),this._waypointNextIndex++,this._moveToNextWaypoint();else this._onPathfindComplete?.()}})},X)}_pathfindingHeuristic(Z,J){return Math.abs(Z.x-J.x)+Math.abs(Z.y-J.y)+Math.abs(Z.z-J.z)}_isNeighborCoordinateBlocked(Z,J,X){if(!this._entity?.world)return!1;let Y=this._entity.world,$=Math.floor(J.x),Q=Math.floor(J.y),K=Math.floor(J.z),G=Math.floor(Z.x),W=Math.floor(Z.z);if(!Y.chunkLattice.hasBlock({x:$,y:Q-1,z:K}))return!0;for(let H=0;H<X;H++)if(Y.chunkLattice.hasBlock({x:$,y:Q+H,z:K}))return!0;if($!==G&&K!==W)for(let H=0;H<X;H++){let V=Y.chunkLattice.hasBlock({x:$,y:Q+H,z:W}),F=Y.chunkLattice.hasBlock({x:G,y:Q+H,z:K});if(V||F)return!0}return!1}_findGroundedStart(){if(!this._entity?.world)return;let{x:Z,y:J,z:X}=this._entity.position,Y={x:Math.floor(Z),y:Math.floor(J),z:Math.floor(X)};for(let $=0;$<=Math.abs(this._maxFall);$++)if(this._entity.world.chunkLattice.hasBlock({...Y,y:Y.y-$-1}))return{...Y,y:Y.y-$};return}}export{ZK6 as startServer,S31 as WorldManagerEvent,EY as WorldManager,_31 as WorldLoopEvent,LU as WorldLoop,Dm as WorldEvent,BU as World,sv as WebServerEvent,FW as WebServer,R3 as Vector3,wU as Vector2,UU as Ticker,qU as TickAllocator,YK as TelemetrySpanOperation,r1 as Telemetry,Pm as SimulationEvent,VU as Simulation,jU as SimpleEntityController,FU as SceneUIManager,tI as SceneUIEvent,tV as SceneUI,Q50 as SUPPORTED_INPUT_KEYS,BV as RigidBodyType,O$ as RigidBody,M3 as Quaternion,lw as PlayerUIEvent,iV as PlayerUI,v31 as PlayerManagerEvent,q9 as PlayerManager,nV as PlayerEvent,y7 as PlayerEntity,$50 as PlayerCameraMode,aI as PlayerCameraEvent,pV as PlayerCamera,CG as Player,E$ as PersistenceManager,Am as PathfindingEntityController,zU as ParticleEmitterManager,Mm as ParticleEmitterEvent,Rm as ParticleEmitter,nv as PORT,V50 as PLAYER_ROTATION_UPDATE_THRESHOLD,H50 as PLAYER_POSITION_UPDATE_THRESHOLD_SQ,S5 as ModelRegistry,P5 as Matrix4,UZ as Matrix3,WK as Matrix2,I31 as LightType,WU as LightManager,jm as LightEvent,Om as Light,z6 as IterationMap,x31 as GameServerEvent,$K as GameServer,O0 as EventRouter,d as ErrorHandler,eV as EntityManager,rV as EntityEvent,i8 as Entity,W50 as ENTITY_ROTATION_UPDATE_THRESHOLD,G50 as ENTITY_POSITION_UPDATE_THRESHOLD_SQ,y1 as DefaultPlayerEntityController,eI as DefaultPlayerEntity,K50 as DEFAULT_ENTITY_RIGID_BODY_OPTIONS,T4 as CollisionGroupsBuilder,yY as CollisionGroup,wV as ColliderShape,oV as ColliderMap,Q9 as Collider,qk as CoefficientCombineRule,rI as ChunkLatticeEvent,sV as ChunkLattice,W9 as Chunk,aV as ChatManager,sI as ChatEvent,Lk as BlockTypeRegistryEvent,jV as BlockTypeRegistry,Uk as BlockTypeEvent,K9 as BlockType,FK as Block,mm as BaseEntityControllerEvent,_Y as BaseEntityController,D3 as AudioManager,CP as AudioEvent,P3 as Audio};