hytopia 0.2.11 → 0.3.0-dev.2

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.
Files changed (429) hide show
  1. package/docs/server.audio.md +7 -1
  2. package/docs/{server.audioeventtype.md → server.audioevent.md} +4 -4
  3. package/docs/server.audioeventpayloads._audio.pause_.md +15 -0
  4. package/docs/server.audioeventpayloads._audio.play_.md +15 -0
  5. package/docs/server.audioeventpayloads._audio.play_restart_.md +15 -0
  6. package/docs/server.audioeventpayloads._audio.set_attached_to_entity_.md +16 -0
  7. package/docs/server.audioeventpayloads._audio.set_detune_.md +16 -0
  8. package/docs/server.audioeventpayloads._audio.set_distortion_.md +16 -0
  9. package/docs/server.audioeventpayloads._audio.set_playback_rate_.md +16 -0
  10. package/docs/server.audioeventpayloads._audio.set_position_.md +16 -0
  11. package/docs/server.audioeventpayloads._audio.set_reference_distance_.md +16 -0
  12. package/docs/server.audioeventpayloads._audio.set_volume_.md +16 -0
  13. package/docs/server.audioeventpayloads.md +228 -0
  14. package/docs/server.baseentitycontroller.md +4 -138
  15. package/docs/server.baseentitycontrollerevent.md +117 -0
  16. package/docs/server.baseentitycontrollereventpayloads.attach.md +15 -0
  17. package/docs/server.baseentitycontrollereventpayloads.despawn.md +15 -0
  18. package/docs/server.baseentitycontrollereventpayloads.detach.md +15 -0
  19. package/docs/server.baseentitycontrollereventpayloads.md +152 -0
  20. package/docs/server.baseentitycontrollereventpayloads.spawn.md +15 -0
  21. package/docs/server.baseentitycontrollereventpayloads.tick.md +16 -0
  22. package/docs/server.baseentitycontrollereventpayloads.tickwithplayerinput.md +18 -0
  23. package/docs/server.blocktype.md +7 -39
  24. package/docs/server.blocktypeevent.md +61 -0
  25. package/docs/server.blocktypeeventpayloads._block_type.entity_collision_.md +19 -0
  26. package/docs/server.blocktypeeventpayloads._block_type.entity_contact_force_.md +17 -0
  27. package/docs/server.blocktypeeventpayloads.md +76 -0
  28. package/docs/server.blocktyperegistry.md +7 -1
  29. package/docs/{server.blocktyperegistryeventtype.md → server.blocktyperegistryevent.md} +4 -4
  30. package/docs/server.blocktyperegistryeventpayloads._block_type_registry.register_block_type_.md +17 -0
  31. package/docs/server.blocktyperegistryeventpayloads.md +57 -0
  32. package/docs/server.chatevent.md +61 -0
  33. package/docs/server.chateventpayloads._chat.broadcast_message_.md +17 -0
  34. package/docs/server.chateventpayloads._chat.player_message_.md +17 -0
  35. package/docs/server.chateventpayloads.md +76 -0
  36. package/docs/server.chatmanager.md +6 -45
  37. package/docs/server.chunk.md +7 -1
  38. package/docs/{server.chunkeventtype.md → server.chunkevent.md} +4 -4
  39. package/docs/server.chunkeventpayloads._chunk.despawn_.md +15 -0
  40. package/docs/server.chunkeventpayloads._chunk.set_block_.md +18 -0
  41. package/docs/server.chunkeventpayloads._chunk.spawn_.md +15 -0
  42. package/docs/server.chunkeventpayloads.md +95 -0
  43. package/docs/server.collider.md +2 -1
  44. package/docs/server.entity.md +4 -133
  45. package/docs/{server.entityeventtype.md → server.entityevent.md} +74 -4
  46. package/docs/server.entityeventpayloads._entity.block_collision_.md +19 -0
  47. package/docs/server.entityeventpayloads._entity.block_contact_force_.md +17 -0
  48. package/docs/server.entityeventpayloads._entity.despawn_.md +15 -0
  49. package/docs/server.entityeventpayloads._entity.entity_collision_.md +19 -0
  50. package/docs/server.entityeventpayloads._entity.entity_contact_force_.md +17 -0
  51. package/docs/server.entityeventpayloads._entity.set_model_animations_playback_rate_.md +16 -0
  52. package/docs/server.entityeventpayloads._entity.set_model_hidden_nodes_.md +16 -0
  53. package/docs/server.entityeventpayloads._entity.set_opacity_.md +16 -0
  54. package/docs/server.entityeventpayloads._entity.set_parent_.md +17 -0
  55. package/docs/server.entityeventpayloads._entity.set_tint_color_.md +16 -0
  56. package/docs/server.entityeventpayloads._entity.spawn_.md +15 -0
  57. package/docs/server.entityeventpayloads._entity.start_model_looped_animations_.md +16 -0
  58. package/docs/server.entityeventpayloads._entity.start_model_oneshot_animations_.md +16 -0
  59. package/docs/server.entityeventpayloads._entity.stop_model_animations_.md +16 -0
  60. package/docs/server.entityeventpayloads._entity.tick_.md +16 -0
  61. package/docs/server.entityeventpayloads._entity.update_position_.md +16 -0
  62. package/docs/server.entityeventpayloads._entity.update_rotation_.md +16 -0
  63. package/docs/server.entityeventpayloads.md +361 -0
  64. package/docs/server.eventpayloads.md +15 -0
  65. package/docs/server.eventrouter.emit.md +4 -4
  66. package/docs/server.eventrouter.emit_1.md +63 -0
  67. package/docs/server.eventrouter.emitwithglobal.md +69 -0
  68. package/docs/server.eventrouter.emitwithglobal_1.md +63 -0
  69. package/docs/server.eventrouter.emitwithworld.md +85 -0
  70. package/docs/server.eventrouter.emitwithworld_1.md +77 -0
  71. package/docs/{server.eventrouter.prependon.md → server.eventrouter.final_1.md} +4 -10
  72. package/docs/server.eventrouter.haslisteners.md +55 -0
  73. package/docs/server.eventrouter.listenercount.md +55 -0
  74. package/docs/server.eventrouter.listeners.md +55 -0
  75. package/docs/server.eventrouter.md +40 -95
  76. package/docs/server.eventrouter.off.md +3 -3
  77. package/docs/{server.eventrouter.prependonce.md → server.eventrouter.off_1.md} +4 -10
  78. package/docs/server.eventrouter.offall.md +4 -4
  79. package/docs/server.eventrouter.on.md +3 -3
  80. package/docs/server.eventrouter.on_1.md +63 -0
  81. package/docs/server.eventrouter.once.md +3 -3
  82. package/docs/server.eventrouter.once_1.md +63 -0
  83. package/docs/{server.gameservereventtype.md → server.gameserverevent.md} +4 -4
  84. package/docs/server.gameservereventpayloads._gameserver.start_.md +15 -0
  85. package/docs/server.gameservereventpayloads._gameserver.stop_.md +15 -0
  86. package/docs/server.gameservereventpayloads.md +76 -0
  87. package/docs/server.light.md +7 -1
  88. package/docs/{server.lighteventtype.md → server.lightevent.md} +4 -18
  89. package/docs/server.lighteventpayloads._light.despawn_.md +15 -0
  90. package/docs/server.lighteventpayloads._light.set_angle_.md +16 -0
  91. package/docs/server.lighteventpayloads._light.set_attached_to_entity_.md +16 -0
  92. package/docs/server.lighteventpayloads._light.set_color_.md +16 -0
  93. package/docs/server.lighteventpayloads._light.set_distance_.md +16 -0
  94. package/docs/server.lighteventpayloads._light.set_intensity_.md +16 -0
  95. package/docs/server.lighteventpayloads._light.set_offset_.md +16 -0
  96. package/docs/server.lighteventpayloads._light.set_penumbra_.md +16 -0
  97. package/docs/server.lighteventpayloads._light.set_position_.md +16 -0
  98. package/docs/server.lighteventpayloads._light.set_tracked_entity_.md +16 -0
  99. package/docs/server.lighteventpayloads._light.set_tracked_position_.md +16 -0
  100. package/docs/server.lighteventpayloads._light.spawn_.md +15 -0
  101. package/docs/server.lighteventpayloads.md +266 -0
  102. package/docs/server.md +201 -84
  103. package/docs/server.player.md +7 -1
  104. package/docs/server.playercamera.md +7 -1
  105. package/docs/{server.playercameraeventtype.md → server.playercameraevent.md} +4 -4
  106. package/docs/server.playercameraeventpayloads._player_camera.look_at_entity_.md +16 -0
  107. package/docs/server.playercameraeventpayloads._player_camera.look_at_position_.md +16 -0
  108. package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_entity_.md +16 -0
  109. package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_position_.md +16 -0
  110. package/docs/server.playercameraeventpayloads._player_camera.set_film_offset_.md +16 -0
  111. package/docs/server.playercameraeventpayloads._player_camera.set_forward_offset_.md +16 -0
  112. package/docs/server.playercameraeventpayloads._player_camera.set_fov_.md +16 -0
  113. package/docs/server.playercameraeventpayloads._player_camera.set_mode_.md +16 -0
  114. package/docs/server.playercameraeventpayloads._player_camera.set_model_hidden_nodes_.md +16 -0
  115. package/docs/server.playercameraeventpayloads._player_camera.set_offset_.md +16 -0
  116. package/docs/server.playercameraeventpayloads._player_camera.set_tracked_entity_.md +16 -0
  117. package/docs/server.playercameraeventpayloads._player_camera.set_tracked_position_.md +16 -0
  118. package/docs/server.playercameraeventpayloads._player_camera.set_zoom_.md +16 -0
  119. package/docs/server.playercameraeventpayloads.md +285 -0
  120. package/docs/{server.playereventtype.md → server.playerevent.md} +4 -4
  121. package/docs/server.playereventpayloads._player.chat_message_send_.md +16 -0
  122. package/docs/server.playereventpayloads._player.joined_world_.md +16 -0
  123. package/docs/server.playereventpayloads._player.left_world_.md +16 -0
  124. package/docs/server.playereventpayloads._player.request_sync_.md +17 -0
  125. package/docs/server.playereventpayloads.md +114 -0
  126. package/docs/server.playermanager.md +4 -0
  127. package/docs/server.playermanagereventpayloads._player_manager.player_connected_.md +15 -0
  128. package/docs/server.playermanagereventpayloads._player_manager.player_disconnected_.md +15 -0
  129. package/docs/server.playermanagereventpayloads.md +76 -0
  130. package/docs/server.playerui.md +6 -1
  131. package/docs/{server.playeruieventtype.md → server.playeruievent.md} +4 -4
  132. package/docs/server.playeruieventpayloads._player_ui.load_.md +16 -0
  133. package/docs/server.playeruieventpayloads._player_ui.lock_pointer_.md +16 -0
  134. package/docs/server.playeruieventpayloads._player_ui.send_data_.md +16 -0
  135. package/docs/server.playeruieventpayloads.md +95 -0
  136. package/docs/server.rigidbody.md +2 -1
  137. package/docs/server.sceneui.md +7 -1
  138. package/docs/server.sceneuievent.md +131 -0
  139. package/docs/server.sceneuieventpayloads._scene_ui.load_.md +15 -0
  140. package/docs/server.sceneuieventpayloads._scene_ui.set_attached_to_entity_.md +16 -0
  141. package/docs/server.sceneuieventpayloads._scene_ui.set_offset_.md +16 -0
  142. package/docs/server.sceneuieventpayloads._scene_ui.set_position_.md +16 -0
  143. package/docs/server.sceneuieventpayloads._scene_ui.set_state_.md +16 -0
  144. package/docs/server.sceneuieventpayloads._scene_ui.set_view_distance_.md +16 -0
  145. package/docs/server.sceneuieventpayloads._scene_ui.unload_.md +15 -0
  146. package/docs/server.sceneuieventpayloads.md +171 -0
  147. package/docs/server.simulation.md +6 -1
  148. package/docs/server.simulationevent.md +89 -0
  149. package/docs/server.simulationeventpayloads._simulation.debug_raycast_.md +19 -0
  150. package/docs/server.simulationeventpayloads._simulation.debug_render_.md +17 -0
  151. package/docs/server.simulationeventpayloads._simulation.step_end_.md +16 -0
  152. package/docs/server.simulationeventpayloads._simulation.step_start_.md +16 -0
  153. package/docs/server.simulationeventpayloads.md +114 -0
  154. package/docs/server.world.md +7 -60
  155. package/docs/server.worldevent.md +131 -0
  156. package/docs/server.worldeventpayloads._world.set_ambient_light_color_.md +16 -0
  157. package/docs/server.worldeventpayloads._world.set_ambient_light_intensity_.md +16 -0
  158. package/docs/server.worldeventpayloads._world.set_directional_light_color_.md +16 -0
  159. package/docs/server.worldeventpayloads._world.set_directional_light_intensity_.md +16 -0
  160. package/docs/server.worldeventpayloads._world.set_directional_light_position_.md +16 -0
  161. package/docs/server.worldeventpayloads._world.start_.md +16 -0
  162. package/docs/server.worldeventpayloads._world.stop_.md +16 -0
  163. package/docs/server.worldeventpayloads.md +171 -0
  164. package/docs/server.worldloop.md +6 -1
  165. package/docs/{server.worldloopeventtype.md → server.worldloopevent.md} +4 -4
  166. package/docs/server.worldloopeventpayloads._world_loop.start_.md +15 -0
  167. package/docs/server.worldloopeventpayloads._world_loop.stop_.md +15 -0
  168. package/docs/server.worldloopeventpayloads._world_loop.tick_end_.md +16 -0
  169. package/docs/server.worldloopeventpayloads._world_loop.tick_error_.md +16 -0
  170. package/docs/server.worldloopeventpayloads._world_loop.tick_start_.md +16 -0
  171. package/docs/server.worldloopeventpayloads.md +133 -0
  172. package/examples/ai-agents/index.ts +9 -13
  173. package/examples/ai-agents/src/BaseAgent.ts +4 -2
  174. package/examples/ai-agents/src/behaviors/FishingBehavior.ts +2 -2
  175. package/examples/ai-agents/src/behaviors/FollowBehavior.ts +3 -3
  176. package/examples/ai-agents/src/behaviors/MiningBehavior.ts +2 -2
  177. package/examples/ai-agents/src/behaviors/PathfindingBehavior.ts +7 -7
  178. package/examples/big-world/index.ts +5 -4
  179. package/examples/block-entity/index.ts +12 -10
  180. package/examples/child-entity/index.ts +5 -4
  181. package/examples/custom-ui/index.ts +5 -4
  182. package/examples/entity-controller/index.ts +5 -4
  183. package/examples/entity-spawn/index.ts +8 -6
  184. package/examples/hole-in-wall-game/index.ts +9 -7
  185. package/examples/lighting/index.ts +5 -4
  186. package/examples/pathfinding/index.ts +5 -4
  187. package/examples/payload-game/index.ts +27 -23
  188. package/examples/wall-dodge-game/index.ts +8 -6
  189. package/examples/zombies-fps/classes/EnemyEntity.ts +10 -4
  190. package/examples/zombies-fps/classes/GamePlayerEntity.ts +7 -2
  191. package/examples/zombies-fps/classes/enemies/RipperEntity.ts +2 -1
  192. package/examples/zombies-fps/index.ts +5 -5
  193. package/package.json +1 -1
  194. package/server.api.json +9422 -7805
  195. package/server.d.ts +748 -472
  196. package/server.js +89 -89
  197. package/docs/server.audioeventpayload.md +0 -118
  198. package/docs/server.audioeventpayload.pause.audio.md +0 -11
  199. package/docs/server.audioeventpayload.pause.md +0 -53
  200. package/docs/server.audioeventpayload.play.audio.md +0 -11
  201. package/docs/server.audioeventpayload.play.md +0 -53
  202. package/docs/server.audioeventpayload.playrestart.audio.md +0 -11
  203. package/docs/server.audioeventpayload.playrestart.md +0 -53
  204. package/docs/server.audioeventpayload.setattachedtoentity.audio.md +0 -11
  205. package/docs/server.audioeventpayload.setattachedtoentity.entity.md +0 -11
  206. package/docs/server.audioeventpayload.setattachedtoentity.md +0 -70
  207. package/docs/server.audioeventpayload.setdetune.audio.md +0 -11
  208. package/docs/server.audioeventpayload.setdetune.detune.md +0 -11
  209. package/docs/server.audioeventpayload.setdetune.md +0 -70
  210. package/docs/server.audioeventpayload.setdistortion.audio.md +0 -11
  211. package/docs/server.audioeventpayload.setdistortion.distortion.md +0 -11
  212. package/docs/server.audioeventpayload.setdistortion.md +0 -70
  213. package/docs/server.audioeventpayload.setplaybackrate.audio.md +0 -11
  214. package/docs/server.audioeventpayload.setplaybackrate.md +0 -70
  215. package/docs/server.audioeventpayload.setplaybackrate.playbackrate.md +0 -11
  216. package/docs/server.audioeventpayload.setposition.audio.md +0 -11
  217. package/docs/server.audioeventpayload.setposition.md +0 -70
  218. package/docs/server.audioeventpayload.setposition.position.md +0 -11
  219. package/docs/server.audioeventpayload.setreferencedistance.audio.md +0 -11
  220. package/docs/server.audioeventpayload.setreferencedistance.md +0 -70
  221. package/docs/server.audioeventpayload.setreferencedistance.referencedistance.md +0 -11
  222. package/docs/server.audioeventpayload.setvolume.audio.md +0 -11
  223. package/docs/server.audioeventpayload.setvolume.md +0 -70
  224. package/docs/server.audioeventpayload.setvolume.volume.md +0 -11
  225. package/docs/server.baseentitycontroller.onattach.md +0 -13
  226. package/docs/server.baseentitycontroller.ondespawn.md +0 -13
  227. package/docs/server.baseentitycontroller.ondetach.md +0 -13
  228. package/docs/server.baseentitycontroller.onspawn.md +0 -13
  229. package/docs/server.baseentitycontroller.ontick.md +0 -13
  230. package/docs/server.baseentitycontroller.ontickwithplayerinput.md +0 -13
  231. package/docs/server.blocktype.onentitycollision.md +0 -18
  232. package/docs/server.blocktype.onentitycontactforce.md +0 -18
  233. package/docs/server.blocktyperegistryeventpayload.md +0 -37
  234. package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktype.md +0 -11
  235. package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktyperegistry.md +0 -11
  236. package/docs/server.blocktyperegistryeventpayload.registerblocktype.id.md +0 -11
  237. package/docs/server.blocktyperegistryeventpayload.registerblocktype.md +0 -87
  238. package/docs/server.chateventpayload.md +0 -46
  239. package/docs/server.chateventpayload.sendbroadcastmessage.color.md +0 -11
  240. package/docs/server.chateventpayload.sendbroadcastmessage.md +0 -91
  241. package/docs/server.chateventpayload.sendbroadcastmessage.message.md +0 -11
  242. package/docs/server.chateventpayload.sendbroadcastmessage.playerid.md +0 -11
  243. package/docs/server.chateventpayload.sendplayermessage.color.md +0 -11
  244. package/docs/server.chateventpayload.sendplayermessage.md +0 -89
  245. package/docs/server.chateventpayload.sendplayermessage.message.md +0 -11
  246. package/docs/server.chateventpayload.sendplayermessage.player.md +0 -11
  247. package/docs/server.chateventtype.md +0 -61
  248. package/docs/server.chatmanager.onbroadcastmessage.md +0 -13
  249. package/docs/server.chunkeventpayload.despawn.chunk.md +0 -11
  250. package/docs/server.chunkeventpayload.despawn.md +0 -53
  251. package/docs/server.chunkeventpayload.md +0 -55
  252. package/docs/server.chunkeventpayload.setblock.blocktypeid.md +0 -11
  253. package/docs/server.chunkeventpayload.setblock.chunk.md +0 -11
  254. package/docs/server.chunkeventpayload.setblock.globalcoordinate.md +0 -11
  255. package/docs/server.chunkeventpayload.setblock.localcoordinate.md +0 -11
  256. package/docs/server.chunkeventpayload.setblock.md +0 -104
  257. package/docs/server.chunkeventpayload.spawn.chunk.md +0 -11
  258. package/docs/server.chunkeventpayload.spawn.md +0 -53
  259. package/docs/server.entity.onblockcollision.md +0 -18
  260. package/docs/server.entity.onblockcontactforce.md +0 -18
  261. package/docs/server.entity.ondespawn.md +0 -13
  262. package/docs/server.entity.onentitycollision.md +0 -18
  263. package/docs/server.entity.onentitycontactforce.md +0 -18
  264. package/docs/server.entity.onspawn.md +0 -13
  265. package/docs/server.entity.ontick.md +0 -13
  266. package/docs/server.entityeventpayload.despawn.entity.md +0 -11
  267. package/docs/server.entityeventpayload.despawn.md +0 -53
  268. package/docs/server.entityeventpayload.md +0 -136
  269. package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.entity.md +0 -11
  270. package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.md +0 -70
  271. package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.playbackrate.md +0 -11
  272. package/docs/server.entityeventpayload.setmodelhiddennodes.entity.md +0 -11
  273. package/docs/server.entityeventpayload.setmodelhiddennodes.md +0 -70
  274. package/docs/server.entityeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
  275. package/docs/server.entityeventpayload.setopacity.entity.md +0 -11
  276. package/docs/server.entityeventpayload.setopacity.md +0 -70
  277. package/docs/server.entityeventpayload.setopacity.opacity.md +0 -11
  278. package/docs/server.entityeventpayload.setparent.entity.md +0 -11
  279. package/docs/server.entityeventpayload.setparent.md +0 -87
  280. package/docs/server.entityeventpayload.setparent.parent.md +0 -11
  281. package/docs/server.entityeventpayload.setparent.parentnodename.md +0 -11
  282. package/docs/server.entityeventpayload.settintcolor.entity.md +0 -11
  283. package/docs/server.entityeventpayload.settintcolor.md +0 -70
  284. package/docs/server.entityeventpayload.settintcolor.tintcolor.md +0 -11
  285. package/docs/server.entityeventpayload.spawn.entity.md +0 -11
  286. package/docs/server.entityeventpayload.spawn.md +0 -53
  287. package/docs/server.entityeventpayload.startmodelloopedanimations.animations.md +0 -11
  288. package/docs/server.entityeventpayload.startmodelloopedanimations.entity.md +0 -11
  289. package/docs/server.entityeventpayload.startmodelloopedanimations.md +0 -70
  290. package/docs/server.entityeventpayload.startmodeloneshotanimations.animations.md +0 -11
  291. package/docs/server.entityeventpayload.startmodeloneshotanimations.entity.md +0 -11
  292. package/docs/server.entityeventpayload.startmodeloneshotanimations.md +0 -70
  293. package/docs/server.entityeventpayload.stopmodelanimations.animations.md +0 -11
  294. package/docs/server.entityeventpayload.stopmodelanimations.entity.md +0 -11
  295. package/docs/server.entityeventpayload.stopmodelanimations.md +0 -70
  296. package/docs/server.entityeventpayload.updateposition.entity.md +0 -11
  297. package/docs/server.entityeventpayload.updateposition.md +0 -70
  298. package/docs/server.entityeventpayload.updateposition.position.md +0 -11
  299. package/docs/server.entityeventpayload.updaterotation.entity.md +0 -11
  300. package/docs/server.entityeventpayload.updaterotation.md +0 -70
  301. package/docs/server.entityeventpayload.updaterotation.rotation.md +0 -11
  302. package/docs/server.eventrouter._constructor_.md +0 -49
  303. package/docs/server.eventrouter.logallevents.md +0 -13
  304. package/docs/server.eventrouter.logeventspayloads.md +0 -13
  305. package/docs/server.eventrouter.logignoreeventprefixes.md +0 -13
  306. package/docs/server.eventrouter.logignoreevents.md +0 -13
  307. package/docs/server.eventrouter.logunlistenedevents.md +0 -13
  308. package/docs/server.eventrouter.serverinstance.md +0 -13
  309. package/docs/server.gameservereventpayload.md +0 -46
  310. package/docs/server.gameservereventpayload.start.md +0 -53
  311. package/docs/server.gameservereventpayload.start.startedatms.md +0 -11
  312. package/docs/server.gameservereventpayload.stop.md +0 -53
  313. package/docs/server.gameservereventpayload.stop.stoppedatms.md +0 -11
  314. package/docs/server.lighteventpayload.despawn.light.md +0 -11
  315. package/docs/server.lighteventpayload.despawn.md +0 -53
  316. package/docs/server.lighteventpayload.md +0 -136
  317. package/docs/server.lighteventpayload.setangle.angle.md +0 -11
  318. package/docs/server.lighteventpayload.setangle.light.md +0 -11
  319. package/docs/server.lighteventpayload.setangle.md +0 -70
  320. package/docs/server.lighteventpayload.setattachedtoentity.entity.md +0 -11
  321. package/docs/server.lighteventpayload.setattachedtoentity.light.md +0 -11
  322. package/docs/server.lighteventpayload.setattachedtoentity.md +0 -70
  323. package/docs/server.lighteventpayload.setcolor.color.md +0 -11
  324. package/docs/server.lighteventpayload.setcolor.light.md +0 -11
  325. package/docs/server.lighteventpayload.setcolor.md +0 -70
  326. package/docs/server.lighteventpayload.setdistance.distance.md +0 -11
  327. package/docs/server.lighteventpayload.setdistance.light.md +0 -11
  328. package/docs/server.lighteventpayload.setdistance.md +0 -70
  329. package/docs/server.lighteventpayload.setintensity.intensity.md +0 -11
  330. package/docs/server.lighteventpayload.setintensity.light.md +0 -11
  331. package/docs/server.lighteventpayload.setintensity.md +0 -70
  332. package/docs/server.lighteventpayload.setoffset.light.md +0 -11
  333. package/docs/server.lighteventpayload.setoffset.md +0 -70
  334. package/docs/server.lighteventpayload.setoffset.offset.md +0 -11
  335. package/docs/server.lighteventpayload.setpenumbra.light.md +0 -11
  336. package/docs/server.lighteventpayload.setpenumbra.md +0 -70
  337. package/docs/server.lighteventpayload.setpenumbra.penumbra.md +0 -11
  338. package/docs/server.lighteventpayload.setposition.light.md +0 -11
  339. package/docs/server.lighteventpayload.setposition.md +0 -70
  340. package/docs/server.lighteventpayload.setposition.position.md +0 -11
  341. package/docs/server.lighteventpayload.settrackedentity.entity.md +0 -11
  342. package/docs/server.lighteventpayload.settrackedentity.light.md +0 -11
  343. package/docs/server.lighteventpayload.settrackedentity.md +0 -70
  344. package/docs/server.lighteventpayload.settrackedposition.light.md +0 -11
  345. package/docs/server.lighteventpayload.settrackedposition.md +0 -70
  346. package/docs/server.lighteventpayload.settrackedposition.position.md +0 -11
  347. package/docs/server.lighteventpayload.spawn.light.md +0 -11
  348. package/docs/server.lighteventpayload.spawn.md +0 -53
  349. package/docs/server.playercameraeventpayload.lookatentity.entity.md +0 -11
  350. package/docs/server.playercameraeventpayload.lookatentity.md +0 -70
  351. package/docs/server.playercameraeventpayload.lookatentity.playercamera.md +0 -11
  352. package/docs/server.playercameraeventpayload.lookatposition.md +0 -70
  353. package/docs/server.playercameraeventpayload.lookatposition.playercamera.md +0 -11
  354. package/docs/server.playercameraeventpayload.lookatposition.position.md +0 -11
  355. package/docs/server.playercameraeventpayload.md +0 -145
  356. package/docs/server.playercameraeventpayload.setattachedtoentity.entity.md +0 -11
  357. package/docs/server.playercameraeventpayload.setattachedtoentity.md +0 -70
  358. package/docs/server.playercameraeventpayload.setattachedtoentity.playercamera.md +0 -11
  359. package/docs/server.playercameraeventpayload.setattachedtoposition.md +0 -70
  360. package/docs/server.playercameraeventpayload.setattachedtoposition.playercamera.md +0 -11
  361. package/docs/server.playercameraeventpayload.setattachedtoposition.position.md +0 -11
  362. package/docs/server.playercameraeventpayload.setfilmoffset.filmoffset.md +0 -11
  363. package/docs/server.playercameraeventpayload.setfilmoffset.md +0 -70
  364. package/docs/server.playercameraeventpayload.setfilmoffset.playercamera.md +0 -11
  365. package/docs/server.playercameraeventpayload.setforwardoffset.forwardoffset.md +0 -11
  366. package/docs/server.playercameraeventpayload.setforwardoffset.md +0 -70
  367. package/docs/server.playercameraeventpayload.setforwardoffset.playercamera.md +0 -11
  368. package/docs/server.playercameraeventpayload.setfov.fov.md +0 -11
  369. package/docs/server.playercameraeventpayload.setfov.md +0 -70
  370. package/docs/server.playercameraeventpayload.setfov.playercamera.md +0 -11
  371. package/docs/server.playercameraeventpayload.setmode.md +0 -70
  372. package/docs/server.playercameraeventpayload.setmode.mode.md +0 -11
  373. package/docs/server.playercameraeventpayload.setmode.playercamera.md +0 -11
  374. package/docs/server.playercameraeventpayload.setmodelhiddennodes.md +0 -70
  375. package/docs/server.playercameraeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
  376. package/docs/server.playercameraeventpayload.setmodelhiddennodes.playercamera.md +0 -11
  377. package/docs/server.playercameraeventpayload.setoffset.md +0 -70
  378. package/docs/server.playercameraeventpayload.setoffset.offset.md +0 -11
  379. package/docs/server.playercameraeventpayload.setoffset.playercamera.md +0 -11
  380. package/docs/server.playercameraeventpayload.settrackedentity.entity.md +0 -11
  381. package/docs/server.playercameraeventpayload.settrackedentity.md +0 -70
  382. package/docs/server.playercameraeventpayload.settrackedentity.playercamera.md +0 -11
  383. package/docs/server.playercameraeventpayload.settrackedposition.md +0 -70
  384. package/docs/server.playercameraeventpayload.settrackedposition.playercamera.md +0 -11
  385. package/docs/server.playercameraeventpayload.settrackedposition.position.md +0 -11
  386. package/docs/server.playercameraeventpayload.setzoom.md +0 -70
  387. package/docs/server.playercameraeventpayload.setzoom.playercamera.md +0 -11
  388. package/docs/server.playercameraeventpayload.setzoom.zoom.md +0 -11
  389. package/docs/server.playereventpayload.chatmessagesend.md +0 -70
  390. package/docs/server.playereventpayload.chatmessagesend.message.md +0 -11
  391. package/docs/server.playereventpayload.chatmessagesend.player.md +0 -11
  392. package/docs/server.playereventpayload.joinedworld.md +0 -70
  393. package/docs/server.playereventpayload.joinedworld.player.md +0 -11
  394. package/docs/server.playereventpayload.joinedworld.world.md +0 -11
  395. package/docs/server.playereventpayload.leftworld.md +0 -70
  396. package/docs/server.playereventpayload.leftworld.player.md +0 -11
  397. package/docs/server.playereventpayload.leftworld.world.md +0 -11
  398. package/docs/server.playereventpayload.md +0 -64
  399. package/docs/server.playereventpayload.requestsync.md +0 -87
  400. package/docs/server.playereventpayload.requestsync.player.md +0 -11
  401. package/docs/server.playereventpayload.requestsync.receivedat.md +0 -11
  402. package/docs/server.playereventpayload.requestsync.receivedatms.md +0 -11
  403. package/docs/server.playeruieventpayload.load.htmluri.md +0 -11
  404. package/docs/server.playeruieventpayload.load.md +0 -70
  405. package/docs/server.playeruieventpayload.load.playerui.md +0 -11
  406. package/docs/server.playeruieventpayload.lockpointer.lock.md +0 -11
  407. package/docs/server.playeruieventpayload.lockpointer.md +0 -70
  408. package/docs/server.playeruieventpayload.lockpointer.playerui.md +0 -11
  409. package/docs/server.playeruieventpayload.md +0 -55
  410. package/docs/server.playeruieventpayload.senddata.data.md +0 -11
  411. package/docs/server.playeruieventpayload.senddata.md +0 -70
  412. package/docs/server.playeruieventpayload.senddata.playerui.md +0 -11
  413. package/docs/server.world.eventrouter.md +0 -13
  414. package/docs/server.world.onplayerjoin.md +0 -13
  415. package/docs/server.world.onplayerleave.md +0 -13
  416. package/docs/server.worldloopeventpayload.md +0 -73
  417. package/docs/server.worldloopeventpayload.start.md +0 -53
  418. package/docs/server.worldloopeventpayload.start.worldloop.md +0 -11
  419. package/docs/server.worldloopeventpayload.stop.md +0 -53
  420. package/docs/server.worldloopeventpayload.stop.worldloop.md +0 -11
  421. package/docs/server.worldloopeventpayload.tickend.md +0 -70
  422. package/docs/server.worldloopeventpayload.tickend.tickdurationms.md +0 -11
  423. package/docs/server.worldloopeventpayload.tickend.worldloop.md +0 -11
  424. package/docs/server.worldloopeventpayload.tickerror.error.md +0 -11
  425. package/docs/server.worldloopeventpayload.tickerror.md +0 -70
  426. package/docs/server.worldloopeventpayload.tickerror.worldloop.md +0 -11
  427. package/docs/server.worldloopeventpayload.tickstart.md +0 -70
  428. package/docs/server.worldloopeventpayload.tickstart.tickdeltams.md +0 -11
  429. package/docs/server.worldloopeventpayload.tickstart.worldloop.md +0 -11
package/server.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import type { AnyPacket } from '@hytopia.com/server-protocol';
2
+ import type { ErrorEvent as ErrorEvent_2 } from 'ws';
3
+ import EventEmitter from 'eventemitter3';
2
4
  import http from 'http';
3
5
  import type { IncomingMessage } from 'http';
4
6
  import type { InputSchema } from '@hytopia.com/server-protocol';
@@ -7,7 +9,7 @@ import type { LobbyMembershipDto } from '@hytopia.com/creative-lib/dist/impl/get
7
9
  import protocol from '@hytopia.com/server-protocol';
8
10
  import RAPIER from '@dimforge/rapier3d-compat-simd';
9
11
  import { SdpMatrix3 } from '@dimforge/rapier3d-compat-simd';
10
- import type { Socket as Socket_2 } from 'net';
12
+ import type { Socket } from 'net';
11
13
  import { WebSocket as WebSocket_2 } from 'ws';
12
14
 
13
15
  /**
@@ -18,6 +20,11 @@ import { WebSocket as WebSocket_2 } from 'ws';
18
20
  * They support a variety of configuration options through
19
21
  * the {@link AudioOptions} constructor argument.
20
22
  *
23
+ * <h2>Events</h2>
24
+ *
25
+ * This class is an EventRouter, and instances of it emit
26
+ * events with payloads listed under {@link AudioEventPayloads}
27
+ *
21
28
  * @example
22
29
  * ```typescript
23
30
  * (new Audio({
@@ -27,9 +34,11 @@ import { WebSocket as WebSocket_2 } from 'ws';
27
34
  * })).play(world);
28
35
  * ```
29
36
  *
37
+ * @eventProperty
38
+ *
30
39
  * @public
31
40
  */
32
- export declare class Audio implements protocol.Serializable {
41
+ export declare class Audio extends EventRouter implements protocol.Serializable {
33
42
 
34
43
 
35
44
 
@@ -140,59 +149,69 @@ export declare class Audio implements protocol.Serializable {
140
149
 
141
150
  }
142
151
 
143
- /** Payloads for events an Audio instance can emit. @public */
144
- export declare namespace AudioEventPayload {
145
- export interface Pause {
152
+ /** Event types an Audio instance can emit. See {@link AudioEventPayloads} for the payloads. @public */
153
+ export declare enum AudioEvent {
154
+ PAUSE = "AUDIO.PAUSE",
155
+ PLAY = "AUDIO.PLAY",
156
+ PLAY_RESTART = "AUDIO.PLAY_RESTART",
157
+ SET_ATTACHED_TO_ENTITY = "AUDIO.SET_ATTACHED_TO_ENTITY",
158
+ SET_DETUNE = "AUDIO.SET_DETUNE",
159
+ SET_DISTORTION = "AUDIO.SET_DISTORTION",
160
+ SET_POSITION = "AUDIO.SET_POSITION",
161
+ SET_PLAYBACK_RATE = "AUDIO.SET_PLAYBACK_RATE",
162
+ SET_REFERENCE_DISTANCE = "AUDIO.SET_REFERENCE_DISTANCE",
163
+ SET_VOLUME = "AUDIO.SET_VOLUME"
164
+ }
165
+
166
+ /** Event payloads for Audio emitted events. @public */
167
+ export declare interface AudioEventPayloads {
168
+ /** Emitted when the audio is paused. */
169
+ [AudioEvent.PAUSE]: {
146
170
  audio: Audio;
147
- }
148
- export interface Play {
171
+ };
172
+ /** Emitted when the audio is played. */
173
+ [AudioEvent.PLAY]: {
149
174
  audio: Audio;
150
- }
151
- export interface PlayRestart {
175
+ };
176
+ /** Emitted when the audio is restarted. */
177
+ [AudioEvent.PLAY_RESTART]: {
152
178
  audio: Audio;
153
- }
154
- export interface SetAttachedToEntity {
179
+ };
180
+ /** Emitted when the audio is attached to an entity. */
181
+ [AudioEvent.SET_ATTACHED_TO_ENTITY]: {
155
182
  audio: Audio;
156
183
  entity: Entity | undefined;
157
- }
158
- export interface SetDetune {
184
+ };
185
+ /** Emitted when the audio's detune is set. */
186
+ [AudioEvent.SET_DETUNE]: {
159
187
  audio: Audio;
160
188
  detune: number;
161
- }
162
- export interface SetDistortion {
189
+ };
190
+ /** Emitted when the audio's distortion is set. */
191
+ [AudioEvent.SET_DISTORTION]: {
163
192
  audio: Audio;
164
193
  distortion: number;
165
- }
166
- export interface SetPosition {
194
+ };
195
+ /** Emitted when the audio's position is set. */
196
+ [AudioEvent.SET_POSITION]: {
167
197
  audio: Audio;
168
198
  position: Vector3Like;
169
- }
170
- export interface SetPlaybackRate {
199
+ };
200
+ /** Emitted when the audio's playback rate is set. */
201
+ [AudioEvent.SET_PLAYBACK_RATE]: {
171
202
  audio: Audio;
172
203
  playbackRate: number;
173
- }
174
- export interface SetReferenceDistance {
204
+ };
205
+ /** Emitted when the audio's reference distance is set. */
206
+ [AudioEvent.SET_REFERENCE_DISTANCE]: {
175
207
  audio: Audio;
176
208
  referenceDistance: number;
177
- }
178
- export interface SetVolume {
209
+ };
210
+ /** Emitted when the audio's volume is set. */
211
+ [AudioEvent.SET_VOLUME]: {
179
212
  audio: Audio;
180
213
  volume: number;
181
- }
182
- }
183
-
184
- /** Event types an Audio instance can emit. @public */
185
- export declare enum AudioEventType {
186
- PAUSE = "AUDIO.PAUSE",
187
- PLAY = "AUDIO.PLAY",
188
- PLAY_RESTART = "AUDIO.PLAY_RESTART",
189
- SET_ATTACHED_TO_ENTITY = "AUDIO.SET_ATTACHED_TO_ENTITY",
190
- SET_DETUNE = "AUDIO.SET_DETUNE",
191
- SET_DISTORTION = "AUDIO.SET_DISTORTION",
192
- SET_POSITION = "AUDIO.SET_POSITION",
193
- SET_PLAYBACK_RATE = "AUDIO.SET_PLAYBACK_RATE",
194
- SET_REFERENCE_DISTANCE = "AUDIO.SET_REFERENCE_DISTANCE",
195
- SET_VOLUME = "AUDIO.SET_VOLUME"
214
+ };
196
215
  }
197
216
 
198
217
  /**
@@ -298,44 +317,14 @@ export declare interface AudioOptions {
298
317
  * niche behavior of one controller for many entities that
299
318
  * behave in unison.
300
319
  *
320
+ * <h2>Events</h2>
321
+ *
322
+ * This class is an EventRouter, and instances of it emit
323
+ * events with payloads listed under {@link BaseEntityControllerEventPayloads}
324
+ *
301
325
  * @public
302
326
  */
303
- export declare abstract class BaseEntityController {
304
- /**
305
- * A function that is called every tick. Useful for implementing
306
- * tick logic without writing a new entity controller class.
307
- */
308
- onTick?: (entity: Entity, deltaTimeMs: number) => void;
309
- /**
310
- * A function that is called every tick with player input by a
311
- * PlayerEntity with this controller attached. Useful for implementing
312
- * tick logic without writing a new entity controller class.
313
- */
314
- onTickWithPlayerInput?: (entity: PlayerEntity, input: PlayerInput, cameraOrientation: PlayerCameraOrientation, deltaTimeMs: number) => void;
315
- /**
316
- * A function that is called when the controller is attached to an entity.
317
- * Useful for implementing attach logic without writing a
318
- * new entity controller class.
319
- */
320
- onAttach?: (entity: Entity) => void;
321
- /**
322
- * A function that is called when the controlled entity is despawned.
323
- * Useful for implementing despawn logic without writing a
324
- * new entity controller class.
325
- */
326
- onDespawn?: (entity: Entity) => void;
327
- /**
328
- * A function that is called when the controller is detached from an entity.
329
- * Useful for implementing detach logic without writing a
330
- * new entity controller class.
331
- */
332
- onDetach?: (entity: Entity) => void;
333
- /**
334
- * A function that is called when the controlled entity is spawned.
335
- * Useful for implementing spawn logic without writing a
336
- * new entity controller class.
337
- */
338
- onSpawn?: (entity: Entity) => void;
327
+ export declare abstract class BaseEntityController extends EventRouter {
339
328
  /**
340
329
  * Override this method to handle the attachment of an entity
341
330
  * to your entity controller.
@@ -379,6 +368,48 @@ export declare abstract class BaseEntityController {
379
368
  tick(entity: Entity, deltaTimeMs: number): void;
380
369
  }
381
370
 
371
+ /** Event types a BaseEntityController instance can emit. See {@link BaseEntityControllerEventPayloads} for the payloads. @public */
372
+ export declare enum BaseEntityControllerEvent {
373
+ ATTACH = "attach",
374
+ DESPAWN = "despawn",
375
+ DETACH = "detach",
376
+ SPAWN = "spawn",
377
+ TICK = "tick",
378
+ TICK_WITH_PLAYER_INPUT = "tickWithPlayerInput"
379
+ }
380
+
381
+ /** Event payloads for BaseEntityController emitted events. @public */
382
+ export declare interface BaseEntityControllerEventPayloads {
383
+ /** Emitted when an entity is attached to the controller. */
384
+ [BaseEntityControllerEvent.ATTACH]: {
385
+ entity: Entity;
386
+ };
387
+ /** Emitted when an entity is despawned. */
388
+ [BaseEntityControllerEvent.DESPAWN]: {
389
+ entity: Entity;
390
+ };
391
+ /** Emitted when an entity is detached from the controller. */
392
+ [BaseEntityControllerEvent.DETACH]: {
393
+ entity: Entity;
394
+ };
395
+ /** Emitted when an entity is spawned. */
396
+ [BaseEntityControllerEvent.SPAWN]: {
397
+ entity: Entity;
398
+ };
399
+ /** Emitted when an entity is ticked. */
400
+ [BaseEntityControllerEvent.TICK]: {
401
+ entity: Entity;
402
+ deltaTimeMs: number;
403
+ };
404
+ /** Emitted when an entity is ticked with player input. */
405
+ [BaseEntityControllerEvent.TICK_WITH_PLAYER_INPUT]: {
406
+ entity: PlayerEntity;
407
+ input: PlayerInput;
408
+ cameraOrientation: PlayerCameraOrientation;
409
+ deltaTimeMs: number;
410
+ };
411
+ }
412
+
382
413
  /**
383
414
  * Represents a block in a world.
384
415
  *
@@ -417,6 +448,11 @@ export declare class Block {
417
448
  * allowing you to create custom blocks with unique visual representations
418
449
  * and behaviors.
419
450
  *
451
+ * <h2>Events</h2>
452
+ *
453
+ * This class is an EventRouter, and instances of it emit
454
+ * events with payloads listed under {@link BlockTypeEventPayloads}
455
+ *
420
456
  * @example
421
457
  * ```typescript
422
458
  * const stoneBlockTypeId = 10;
@@ -432,33 +468,7 @@ export declare class Block {
432
468
  *
433
469
  * @public
434
470
  */
435
- export declare class BlockType implements protocol.Serializable {
436
- /**
437
- * A callback function that is invoked when an entity collides with blocks of this type.
438
- *
439
- * @remarks
440
- * This must be set before a block of this type is created.
441
- * If it is set after a block is created, only future created
442
- * blocks of this type will have the callback set.
443
- *
444
- * @param blockType - The block type the collision is for.
445
- * @param entity - The entity that collided with the block type.
446
- * @param started - Whether the collision started.
447
- */
448
- onEntityCollision?: ((blockType: BlockType, entity: Entity, started: boolean) => void) | ((blockType: BlockType, entity: Entity, started: boolean, colliderHandleA: number, colliderHandleB: number) => void);
449
- /**
450
- * A callback function that is invoked when an entity contacts a block of this type.
451
- *
452
- * @remarks
453
- * This must be set before a block of this type is created.
454
- * If it is set after a block is created, only future created
455
- * blocks of this type will have the callback set.
456
- *
457
- * @param blockType - The block type the contact is for.
458
- * @param entity - The entity that contacted the block type.
459
- * @param contactForceData - The contact force data.
460
- */
461
- onEntityContactForce?: (blockType: BlockType, entity: Entity, contactForceData: ContactForceData) => void;
471
+ export declare class BlockType extends EventRouter implements protocol.Serializable {
462
472
 
463
473
 
464
474
 
@@ -486,6 +496,30 @@ export declare class BlockType implements protocol.Serializable {
486
496
 
487
497
  }
488
498
 
499
+ /** Event types a BlockType instance can emit. See {@link BlockTypeEventPayloads} for the payloads. @public */
500
+ export declare enum BlockTypeEvent {
501
+ ENTITY_COLLISION = "BLOCK_TYPE.ENTITY_COLLISION",
502
+ ENTITY_CONTACT_FORCE = "BLOCK_TYPE.ENTITY_CONTACT_FORCE"
503
+ }
504
+
505
+ /** Event payloads for BlockType emitted events. @public */
506
+ export declare interface BlockTypeEventPayloads {
507
+ /** Emitted when an entity collides with a block type. */
508
+ [BlockTypeEvent.ENTITY_COLLISION]: {
509
+ blockType: BlockType;
510
+ entity: Entity;
511
+ started: boolean;
512
+ colliderHandleA: number;
513
+ colliderHandleB: number;
514
+ };
515
+ /** Emitted when an entity's contact force is applied to a block type. */
516
+ [BlockTypeEvent.ENTITY_CONTACT_FORCE]: {
517
+ blockType: BlockType;
518
+ entity: Entity;
519
+ contactForceData: ContactForceData;
520
+ };
521
+ }
522
+
489
523
  /** Options for creating a block type instance. @public */
490
524
  export declare interface BlockTypeOptions {
491
525
  /** The unique numeric identifier for the block type. */
@@ -509,6 +543,11 @@ export declare interface BlockTypeOptions {
509
543
  * type registry allows you to register and retrieve block
510
544
  * types by their unique id for a world.
511
545
  *
546
+ * <h2>Events</h2>
547
+ *
548
+ * This class is an EventRouter, and instances of it emit
549
+ * events with payloads listed under {@link BlockTypeRegistryEventPayloads}
550
+ *
512
551
  * @example
513
552
  * ```typescript
514
553
  * world.blockTypeRegistry.registerGenericBlockType({
@@ -520,7 +559,7 @@ export declare interface BlockTypeOptions {
520
559
  *
521
560
  * @public
522
561
  */
523
- export declare class BlockTypeRegistry implements protocol.Serializable {
562
+ export declare class BlockTypeRegistry extends EventRouter implements protocol.Serializable {
524
563
 
525
564
 
526
565
 
@@ -551,38 +590,41 @@ export declare class BlockTypeRegistry implements protocol.Serializable {
551
590
 
552
591
  }
553
592
 
554
- /** Payloads for events a BlockTypeRegistry instance can emit. @public */
555
- export declare namespace BlockTypeRegistryEventPayload {
556
- export interface RegisterBlockType {
593
+ /** Event types a BlockTypeRegistry instance can emit. See {@link BlockTypeRegistryEventPayloads} for the payloads. @public */
594
+ export declare enum BlockTypeRegistryEvent {
595
+ REGISTER_BLOCK_TYPE = "BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE"
596
+ }
597
+
598
+ /** Event payloads for BlockTypeRegistry emitted events. @public */
599
+ export declare interface BlockTypeRegistryEventPayloads {
600
+ /** Emitted when a block type is registered. */
601
+ [BlockTypeRegistryEvent.REGISTER_BLOCK_TYPE]: {
557
602
  blockTypeRegistry: BlockTypeRegistry;
558
603
  id: number;
559
604
  blockType: BlockType;
560
- }
605
+ };
561
606
  }
562
607
 
563
- /** Event types a BlockTypeRegistry instance can emit. @public */
564
- export declare enum BlockTypeRegistryEventType {
565
- REGISTER_BLOCK_TYPE = "BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE"
608
+ /** Event types a ChatManager instance can emit. See {@link ChatEventPayloads} for the payloads. @public */
609
+ export declare enum ChatEvent {
610
+ BROADCAST_MESSAGE = "CHAT.BROADCAST_MESSAGE",
611
+ PLAYER_MESSAGE = "CHAT.PLAYER_MESSAGE"
566
612
  }
567
613
 
568
- /** Payloads for events a ChatManager instance can emit. @public */
569
- export declare namespace ChatEventPayload {
570
- export interface SendBroadcastMessage {
614
+ /** Event payloads for ChatManager emitted events. @public */
615
+ export declare interface ChatEventPayloads {
616
+ /** Emitted when a broadcast message is sent. */
617
+ [ChatEvent.BROADCAST_MESSAGE]: {
618
+ player: Player | undefined;
571
619
  message: string;
572
620
  color?: string;
573
- playerId?: string;
574
- }
575
- export interface SendPlayerMessage {
621
+ };
622
+ /** Emitted when a message is sent to a specific player. */
623
+ [ChatEvent.PLAYER_MESSAGE]: {
576
624
  player: Player;
577
625
  message: string;
578
626
  color?: string;
579
- }
580
- }
581
-
582
- /** Event types a ChatManager instance can emit. @public */
583
- export declare enum ChatEventType {
584
- SEND_BROADCAST_MESSAGE = "CHAT.SEND_BROADCAST_MESSAGE",
585
- SEND_PLAYER_MESSAGE = "CHAT.SEND_PLAYER_MESSAGE"
627
+ };
586
628
  }
587
629
 
588
630
  /**
@@ -596,6 +638,11 @@ export declare enum ChatEventType {
596
638
  * commands that can be used in chat to execute game
597
639
  * logic.
598
640
  *
641
+ * <h2>Events</h2>
642
+ *
643
+ * This class is an EventRouter, and instances of it emit
644
+ * events with payloads listed under {@link ChatEventPayloads}
645
+ *
599
646
  * @example
600
647
  * ```typescript
601
648
  * world.chatManager.registerCommand('/kick', (player, args, message) => {
@@ -613,16 +660,7 @@ export declare enum ChatEventType {
613
660
  *
614
661
  * @public
615
662
  */
616
- export declare class ChatManager {
617
- /**
618
- * A function that is called when a broadcast (public) message is sent
619
- * by a player or the server.
620
- *
621
- * @param player - The player that sent the message, or undefined if the message is a system message from the server.
622
- * @param message - The message to send.
623
- * @param color - The color of the message as a hex color code, excluding #.
624
- */
625
- onBroadcastMessage?: (player: Player | undefined, message: string, color?: string) => void;
663
+ export declare class ChatManager extends EventRouter {
626
664
 
627
665
 
628
666
 
@@ -662,7 +700,6 @@ export declare class ChatManager {
662
700
  sendPlayerMessage(player: Player, message: string, color?: string): void;
663
701
 
664
702
 
665
-
666
703
  }
667
704
 
668
705
  /**
@@ -685,6 +722,11 @@ export declare class ChatManager {
685
722
  * associated with the {@link World} the chunk belongs to. A block type id of 0
686
723
  * is used to represent no block. Removing a block is done by .setBlock(localCoordinate, 0).
687
724
  *
725
+ * <h2>Events</h2>
726
+ *
727
+ * This class is an EventRouter, and instances of it emit
728
+ * events with payloads listed under {@link ChunkEventPayloads}
729
+ *
688
730
  * @example
689
731
  * ```typescript
690
732
  * // Assume we previously registered a stone block with type id of 10..
@@ -697,7 +739,7 @@ export declare class ChatManager {
697
739
  *
698
740
  * @public
699
741
  */
700
- export declare class Chunk implements protocol.Serializable {
742
+ export declare class Chunk extends EventRouter implements protocol.Serializable {
701
743
 
702
744
 
703
745
 
@@ -779,27 +821,30 @@ export declare class Chunk implements protocol.Serializable {
779
821
 
780
822
  }
781
823
 
782
- /** Payloads for events a Chunk instance can emit. @public */
783
- export declare namespace ChunkEventPayload {
784
- export interface Despawn {
824
+ /** Event types a Chunk instance can emit. See {@link ChunkEventPayloads} for the payloads. @public */
825
+ export declare enum ChunkEvent {
826
+ DESPAWN = "CHUNK.DESPAWN",
827
+ SET_BLOCK = "CHUNK.SET_BLOCK",
828
+ SPAWN = "CHUNK.SPAWN"
829
+ }
830
+
831
+ /** Event payloads for Chunk emitted events. @public */
832
+ export declare interface ChunkEventPayloads {
833
+ /** Emitted when a chunk is despawned. */
834
+ [ChunkEvent.DESPAWN]: {
785
835
  chunk: Chunk;
786
- }
787
- export interface SetBlock {
836
+ };
837
+ /** Emitted when a block is set in a chunk. */
838
+ [ChunkEvent.SET_BLOCK]: {
788
839
  chunk: Chunk;
789
840
  globalCoordinate: Vector3Like;
790
841
  localCoordinate: Vector3Like;
791
842
  blockTypeId: number;
792
- }
793
- export interface Spawn {
843
+ };
844
+ /** Emitted when a chunk is spawned. */
845
+ [ChunkEvent.SPAWN]: {
794
846
  chunk: Chunk;
795
- }
796
- }
797
-
798
- /** Event types a Chunk instance can emit. @public */
799
- export declare enum ChunkEventType {
800
- DESPAWN = "CHUNK.DESPAWN",
801
- SET_BLOCK = "CHUNK.SET_BLOCK",
802
- SPAWN = "CHUNK.SPAWN"
847
+ };
803
848
  }
804
849
 
805
850
  /**
@@ -888,7 +933,7 @@ export declare enum CoefficientCombineRule {
888
933
  *
889
934
  * @public
890
935
  */
891
- export declare class Collider {
936
+ export declare class Collider extends EventRouter {
892
937
 
893
938
 
894
939
 
@@ -1259,6 +1304,11 @@ export declare const DEFAULT_ENTITY_RIGID_BODY_OPTIONS: RigidBodyOptions;
1259
1304
  * allow full control of their rigid body and attached collider
1260
1305
  * dynamics.
1261
1306
  *
1307
+ * <h2>Events</h2>
1308
+ *
1309
+ * This class is an EventRouter, and instances of it emit
1310
+ * events with payloads listed under {@link EntityEventPayloads}
1311
+ *
1262
1312
  * @example
1263
1313
  * ```typescript
1264
1314
  * const spider = new Entity({
@@ -1286,66 +1336,6 @@ export declare const DEFAULT_ENTITY_RIGID_BODY_OPTIONS: RigidBodyOptions;
1286
1336
  * @public
1287
1337
  */
1288
1338
  export declare class Entity extends RigidBody implements protocol.Serializable {
1289
- /**
1290
- * A function that is called when the entity collides with a block.
1291
- *
1292
- * @remarks
1293
- * This must be set before the entity is spawned.
1294
- *
1295
- * @param entity - The Entity instance the collision is for.
1296
- * @param blockType - The block type that the entity collided with.
1297
- * @param started - Whether the collision started or ended.
1298
- */
1299
- onBlockCollision?: ((entity: Entity, blockType: BlockType, started: boolean) => void) | ((entity: Entity, blockType: BlockType, started: boolean, colliderHandleA: number, colliderHandleB: number) => void);
1300
- /**
1301
- * A function that is called when the entity collides with a block.
1302
- *
1303
- * @remarks
1304
- * This must be set before the entity is spawned.
1305
- *
1306
- * @param entity - The Entity instance the collision is for.
1307
- * @param blockType - The block type that the entity collided with.
1308
- * @param contactForceData - The contact force data.
1309
- */
1310
- onBlockContactForce?: (entity: Entity, blockType: BlockType, contactForceData: ContactForceData) => void;
1311
- /**
1312
- * A function that is called when the entity collides with another entity.
1313
- *
1314
- * @remarks
1315
- * This must be set before the entity is spawned.
1316
- *
1317
- * @param entity - The Entity instance the collision is for.
1318
- * @param otherEntity - The other entity that the entity collided with.
1319
- * @param started - Whether the collision started or ended.
1320
- */
1321
- onEntityCollision?: ((entity: Entity, otherEntity: Entity, started: boolean) => void) | ((entity: Entity, otherEntity: Entity, started: boolean, colliderHandleA: number, colliderHandleB: number) => void);
1322
- /**
1323
- * A function that is called when the entity contacts another entity.
1324
- *
1325
- * @remarks
1326
- * This must be set before the entity is spawned.
1327
- *
1328
- * @param entity - The Entity instance the collision is for.
1329
- * @param otherEntity - The other entity that the entity collided with.
1330
- * @param contactForceData - The contact force data.
1331
- */
1332
- onEntityContactForce?: (entity: Entity, otherEntity: Entity, contactForceData: ContactForceData) => void;
1333
- /**
1334
- * A function that is called when the entity is spawned.
1335
- * @param entity - The Entity instance that spawned.
1336
- */
1337
- onSpawn?: (entity: Entity) => void;
1338
- /**
1339
- * A function that is called when the entity is despawned.
1340
- * @param entity - The Entity instance that despawned.
1341
- */
1342
- onDespawn?: (entity: Entity) => void;
1343
- /**
1344
- * A function that is called every tick.
1345
- * @param entity - The Entity instance that ticked.
1346
- * @param tickDeltaMs - The delta time in milliseconds since the last tick.
1347
- */
1348
- onTick?: (entity: Entity, tickDeltaMs: number) => void;
1349
1339
 
1350
1340
 
1351
1341
 
@@ -1511,71 +1501,121 @@ export declare class Entity extends RigidBody implements protocol.Serializable {
1511
1501
 
1512
1502
  }
1513
1503
 
1514
- /** Payloads for events an Entity instance can emit. @public */
1515
- export declare namespace EntityEventPayload {
1516
- export interface Despawn {
1504
+ /** Event types an Entity instance can emit. See {@link EntityEventPayloads} for the payloads. @public */
1505
+ export declare enum EntityEvent {
1506
+ BLOCK_COLLISION = "ENTITY.BLOCK_COLLISION",
1507
+ BLOCK_CONTACT_FORCE = "ENTITY.BLOCK_CONTACT_FORCE",
1508
+ DESPAWN = "ENTITY.DESPAWN",
1509
+ ENTITY_COLLISION = "ENTITY.ENTITY_COLLISION",
1510
+ ENTITY_CONTACT_FORCE = "ENTITY.ENTITY_CONTACT_FORCE",
1511
+ SET_MODEL_ANIMATIONS_PLAYBACK_RATE = "ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",
1512
+ SET_MODEL_HIDDEN_NODES = "ENTITY.SET_MODEL_HIDDEN_NODES",
1513
+ SET_OPACITY = "ENTITY.SET_OPACITY",
1514
+ SET_PARENT = "ENTITY.SET_PARENT",
1515
+ SET_TINT_COLOR = "ENTITY.SET_TINT_COLOR",
1516
+ SPAWN = "ENTITY.SPAWN",
1517
+ START_MODEL_LOOPED_ANIMATIONS = "ENTITY.START_MODEL_LOOPED_ANIMATIONS",
1518
+ START_MODEL_ONESHOT_ANIMATIONS = "ENTITY.START_MODEL_ONESHOT_ANIMATIONS",
1519
+ STOP_MODEL_ANIMATIONS = "ENTITY.STOP_MODEL_ANIMATIONS",
1520
+ TICK = "ENTITY.TICK",
1521
+ UPDATE_POSITION = "ENTITY.UPDATE_POSITION",
1522
+ UPDATE_ROTATION = "ENTITY.UPDATE_ROTATION"
1523
+ }
1524
+
1525
+ /** Event payloads for Entity emitted events. @public */
1526
+ export declare interface EntityEventPayloads {
1527
+ /** Emitted when an entity collides with a block type. */
1528
+ [EntityEvent.BLOCK_COLLISION]: {
1529
+ entity: Entity;
1530
+ blockType: BlockType;
1531
+ started: boolean;
1532
+ colliderHandleA: number;
1533
+ colliderHandleB: number;
1534
+ };
1535
+ /** Emitted when an entity's contact force is applied to a block type. */
1536
+ [EntityEvent.BLOCK_CONTACT_FORCE]: {
1517
1537
  entity: Entity;
1518
- }
1519
- export interface SetModelAnimationsPlaybackRate {
1538
+ blockType: BlockType;
1539
+ contactForceData: ContactForceData;
1540
+ };
1541
+ /** Emitted when an entity is despawned. */
1542
+ [EntityEvent.DESPAWN]: {
1543
+ entity: Entity;
1544
+ };
1545
+ /** Emitted when an entity collides with another entity. */
1546
+ [EntityEvent.ENTITY_COLLISION]: {
1547
+ entity: Entity;
1548
+ otherEntity: Entity;
1549
+ started: boolean;
1550
+ colliderHandleA: number;
1551
+ colliderHandleB: number;
1552
+ };
1553
+ /** Emitted when an entity's contact force is applied to another entity. */
1554
+ [EntityEvent.ENTITY_CONTACT_FORCE]: {
1555
+ entity: Entity;
1556
+ otherEntity: Entity;
1557
+ contactForceData: ContactForceData;
1558
+ };
1559
+ /** Emitted when the playback rate of the entity's model animations is set. */
1560
+ [EntityEvent.SET_MODEL_ANIMATIONS_PLAYBACK_RATE]: {
1520
1561
  entity: Entity;
1521
1562
  playbackRate: number;
1522
- }
1523
- export interface SetModelHiddenNodes {
1563
+ };
1564
+ /** Emitted when the nodes of the entity's model are set to be hidden. */
1565
+ [EntityEvent.SET_MODEL_HIDDEN_NODES]: {
1524
1566
  entity: Entity;
1525
1567
  modelHiddenNodes: Set<string>;
1526
- }
1527
- export interface SetOpacity {
1568
+ };
1569
+ /** Emitted when the opacity of the entity is set. */
1570
+ [EntityEvent.SET_OPACITY]: {
1528
1571
  entity: Entity;
1529
1572
  opacity: number;
1530
- }
1531
- export interface SetParent {
1573
+ };
1574
+ /** Emitted when the parent of the entity is set. */
1575
+ [EntityEvent.SET_PARENT]: {
1532
1576
  entity: Entity;
1533
1577
  parent: Entity | undefined;
1534
1578
  parentNodeName: string | undefined;
1535
- }
1536
- export interface SetTintColor {
1579
+ };
1580
+ /** Emitted when the tint color of the entity is set. */
1581
+ [EntityEvent.SET_TINT_COLOR]: {
1537
1582
  entity: Entity;
1538
1583
  tintColor: RgbColor | undefined;
1539
- }
1540
- export interface Spawn {
1584
+ };
1585
+ /** Emitted when the entity is spawned. */
1586
+ [EntityEvent.SPAWN]: {
1541
1587
  entity: Entity;
1542
- }
1543
- export interface StartModelLoopedAnimations {
1588
+ };
1589
+ /** Emitted when the looped animations of the entity's model are started. */
1590
+ [EntityEvent.START_MODEL_LOOPED_ANIMATIONS]: {
1544
1591
  entity: Entity;
1545
1592
  animations: Set<string>;
1546
- }
1547
- export interface StartModelOneshotAnimations {
1593
+ };
1594
+ /** Emitted when the oneshot animations of the entity's model are started. */
1595
+ [EntityEvent.START_MODEL_ONESHOT_ANIMATIONS]: {
1548
1596
  entity: Entity;
1549
1597
  animations: Set<string>;
1550
- }
1551
- export interface StopModelAnimations {
1598
+ };
1599
+ /** Emitted when the model animations of the entity are stopped. */
1600
+ [EntityEvent.STOP_MODEL_ANIMATIONS]: {
1552
1601
  entity: Entity;
1553
1602
  animations: Set<string>;
1554
- }
1555
- export interface UpdatePosition {
1603
+ };
1604
+ /** Emitted when the entity is ticked. */
1605
+ [EntityEvent.TICK]: {
1606
+ entity: Entity;
1607
+ tickDeltaMs: number;
1608
+ };
1609
+ /** Emitted when the position of the entity is updated at the end of the tick, either directly or by physics. */
1610
+ [EntityEvent.UPDATE_POSITION]: {
1556
1611
  entity: Entity;
1557
1612
  position: Vector3Like;
1558
- }
1559
- export interface UpdateRotation {
1613
+ };
1614
+ /** Emitted when the rotation of the entity is updated at the end of the tick, either directly or by physics. */
1615
+ [EntityEvent.UPDATE_ROTATION]: {
1560
1616
  entity: Entity;
1561
1617
  rotation: QuaternionLike;
1562
- }
1563
- }
1564
-
1565
- /** Event types an Entity instance can emit. @public */
1566
- export declare enum EntityEventType {
1567
- DESPAWN = "ENTITY.DESPAWN",
1568
- SET_MODEL_ANIMATIONS_PLAYBACK_RATE = "ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",
1569
- SET_MODEL_HIDDEN_NODES = "ENTITY.SET_MODEL_HIDDEN_NODES",
1570
- SET_OPACITY = "ENTITY.SET_OPACITY",
1571
- SET_PARENT = "ENTITY.SET_PARENT",
1572
- SET_TINT_COLOR = "ENTITY.SET_TINT_COLOR",
1573
- SPAWN = "ENTITY.SPAWN",
1574
- START_MODEL_LOOPED_ANIMATIONS = "ENTITY.START_MODEL_LOOPED_ANIMATIONS",
1575
- START_MODEL_ONESHOT_ANIMATIONS = "ENTITY.START_MODEL_ONESHOT_ANIMATIONS",
1576
- STOP_MODEL_ANIMATIONS = "ENTITY.STOP_MODEL_ANIMATIONS",
1577
- UPDATE_POSITION = "ENTITY.UPDATE_POSITION",
1578
- UPDATE_ROTATION = "ENTITY.UPDATE_ROTATION"
1618
+ };
1579
1619
  }
1580
1620
 
1581
1621
  /**
@@ -1684,56 +1724,88 @@ export declare interface EntityOptions {
1684
1724
  }
1685
1725
 
1686
1726
  /**
1687
- * Manages event emission and assigned listener callbacks.
1727
+ * The payloads for all events in the game server.
1688
1728
  *
1689
- * @remarks
1690
- * This class is used as a singleton for global server events via
1691
- * {@link EventRouter.serverInstance}. For individual worlds, an
1692
- * internal EventRouter instance is instantiated per world. EventRouters
1693
- * only have visibility of events emitted and subscribed to relative to
1694
- * their unique instances.
1729
+ * @public
1730
+ */
1731
+ export declare interface EventPayloads extends AudioEventPayloads, BaseEntityControllerEventPayloads, BlockTypeEventPayloads, BlockTypeRegistryEventPayloads, ChatEventPayloads, ChunkEventPayloads, ConnectionEventPayloads, EntityEventPayloads, GameServerEventPayloads, PlayerCameraEventPayloads, PlayerEventPayloads, PlayerManagerEventPayloads, PlayerUIEventPayloads, SceneUIEventPayloads, SimulationEventPayloads, SocketEventPayloads, LightEventPayloads, WebServerEventPayloads, WorldEventPayloads, WorldLoopEventPayloads {
1732
+ }
1733
+
1734
+ /**
1735
+ * Manages event emission and assigned listener callbacks.
1695
1736
  *
1696
1737
  * @public
1697
1738
  */
1698
1739
  export declare class EventRouter {
1699
- /** The singleton instance for global server events. */
1700
- static readonly serverInstance: EventRouter;
1701
1740
  private _emitter;
1702
- private _tag;
1703
- /** Enable logging of all events. Default: false */
1704
- logAllEvents: boolean;
1705
- /** Enable logging of event payloads. Default: false */
1706
- logEventsPayloads: boolean;
1707
- /** Enable logging of events with no listeners. Default: false */
1708
- logUnlistenedEvents: boolean;
1709
- /** Array of events to exclude from logging */
1710
- logIgnoreEvents: string[];
1711
- /** Array of event prefixes to exclude from logging */
1712
- logIgnoreEventPrefixes: string[];
1713
- /** @param tag - Tag for logging, used to identify EventRouter instances in logs. */
1714
- constructor(tag: string);
1741
+ private _finalListeners;
1715
1742
  /**
1716
1743
  * Emit an event, invoking all registered listeners for the event type.
1717
1744
  *
1718
1745
  * @param eventType - The type of event to emit.
1719
1746
  * @param payload - The payload to emit.
1720
1747
  *
1721
- * @returns `true` if listeners were found and invoked, `false` otherwise.
1748
+ * @returns `true` if any listeners were found and invoked, `false` otherwise.
1749
+ */
1750
+ emit<TEventType extends keyof EventPayloads>(eventType: TEventType, payload: EventPayloads[TEventType]): boolean;
1751
+ emit<TEventType extends string, TPayload = any>(eventType: TEventType & Exclude<TEventType, keyof EventPayloads>, payload: TPayload): boolean;
1752
+ /**
1753
+ * Emits an event to the local and global server instance event routers.
1754
+ *
1755
+ * @param eventType - The type of event to emit.
1756
+ * @param payload - The payload to emit.
1757
+ */
1758
+ emitWithGlobal<TEventType extends keyof EventPayloads>(eventType: TEventType, payload: EventPayloads[TEventType]): void;
1759
+ emitWithGlobal<TEventType extends string, TPayload = any>(eventType: TEventType & Exclude<TEventType, keyof EventPayloads>, payload: TPayload): void;
1760
+ /**
1761
+ * Emits an event to local and provided world event routers.
1762
+ *
1763
+ * @param world - The world to broadcast the event to.
1764
+ * @param eventType - The type of event to broadcast.
1765
+ * @param payload - The payload to broadcast.
1766
+ */
1767
+ emitWithWorld<TEventType extends keyof EventPayloads>(world: World, eventType: TEventType, payload: EventPayloads[TEventType]): void;
1768
+ emitWithWorld<TEventType extends string, TPayload = any>(world: World, eventType: TEventType & Exclude<TEventType, keyof EventPayloads>, payload: TPayload): void;
1769
+
1770
+ final<TEventType extends string, TPayload = any>(eventType: TEventType & Exclude<TEventType, keyof EventPayloads>, listener: (payload: TPayload) => void): void;
1771
+ /**
1772
+ * Check if there are listeners for a specific event type.
1773
+ *
1774
+ * @param eventType - The type of event to check for listeners.
1775
+ *
1776
+ * @returns `true` if listeners are found, `false` otherwise.
1722
1777
  */
1723
- emit<TPayload>(eventType: string, payload: TPayload): boolean;
1778
+ hasListeners(eventType: keyof EventPayloads): boolean;
1779
+ /**
1780
+ * Get all listeners for a specific event type.
1781
+ *
1782
+ * @param eventType - The type of event to get listeners for.
1783
+ *
1784
+ * @returns All listeners for the event type.
1785
+ */
1786
+ listeners(eventType: keyof EventPayloads): EventEmitter.EventListener<any, string>[];
1787
+ /**
1788
+ * Get the number of listeners for a specific event type.
1789
+ *
1790
+ * @param eventType - The type of event to get the listener count for.
1791
+ *
1792
+ * @returns The number of listeners for the event type.
1793
+ */
1794
+ listenerCount(eventType: keyof EventPayloads): number;
1724
1795
  /**
1725
1796
  * Remove a listener for a specific event type.
1726
1797
  *
1727
1798
  * @param eventType - The type of event to remove the listener from.
1728
1799
  * @param listener - The listener function to remove.
1729
1800
  */
1730
- off<TPayload>(eventType: string, listener: (payload: TPayload) => void): void;
1801
+ off<TEventType extends keyof EventPayloads>(eventType: TEventType, listener: (payload: EventPayloads[TEventType]) => void): void;
1802
+ off<TEventType extends string, TPayload = any>(eventType: TEventType & Exclude<TEventType, keyof EventPayloads>, listener: (payload: TPayload) => void): void;
1731
1803
  /**
1732
- * Remove all listeners for a specific event type.
1804
+ * Remove all listeners or all listeners for a provided event type.
1733
1805
  *
1734
1806
  * @param eventType - The type of event to remove all listeners from.
1735
1807
  */
1736
- offAll(eventType: string): void;
1808
+ offAll(eventType?: keyof EventPayloads): void;
1737
1809
  /**
1738
1810
  * Register a listener for a specific event type.
1739
1811
  *
@@ -1743,28 +1815,16 @@ export declare class EventRouter {
1743
1815
  * @param eventType - The type of event to listen for.
1744
1816
  * @param listener - The listener function to invoke when the event is emitted.
1745
1817
  */
1746
- on<TPayload>(eventType: string, listener: (payload: TPayload) => void): void;
1818
+ on<TEventType extends keyof EventPayloads>(eventType: TEventType, listener: (payload: EventPayloads[TEventType]) => void): void;
1819
+ on<TEventType extends string, TPayload = any>(eventType: TEventType & Exclude<TEventType, keyof EventPayloads>, listener: (payload: TPayload) => void): void;
1747
1820
  /**
1748
1821
  * Register a listener for a specific event type that will be invoked once.
1749
1822
  *
1750
1823
  * @param eventType - The type of event to listen for.
1751
1824
  * @param listener - The listener function to invoke when the event is emitted.
1752
1825
  */
1753
- once<TPayload>(eventType: string, listener: (payload: TPayload) => void): void;
1754
- /**
1755
- * Register a listener for a specific event type that will be invoked before all other existing listeners.
1756
- *
1757
- * @param eventType - The type of event to listen for.
1758
- * @param listener - The listener function to invoke when the event is emitted.
1759
- */
1760
- prependOn<TPayload>(eventType: string, listener: (payload: TPayload) => void): void;
1761
- /**
1762
- * Register a listener for a specific event type that will be invoked once before all other existing listeners.
1763
- *
1764
- * @param eventType - The type of event to listen for.
1765
- * @param listener - The listener function to invoke when the event is emitted.
1766
- */
1767
- prependOnce<TPayload>(eventType: string, listener: (payload: TPayload) => void): void;
1826
+ once<TEventType extends keyof EventPayloads>(eventType: TEventType, listener: (payload: EventPayloads[TEventType]) => void): void;
1827
+ once<TEventType extends string, TPayload = any>(eventType: TEventType & Exclude<TEventType, keyof EventPayloads>, listener: (payload: TPayload) => void): void;
1768
1828
  }
1769
1829
 
1770
1830
  /**
@@ -1829,22 +1889,24 @@ export declare class GameServer {
1829
1889
 
1830
1890
  }
1831
1891
 
1832
- /** Payloads for events emitted by a GameServer instance. @public */
1833
- export declare namespace GameServerEventPayload {
1834
- export interface Start {
1835
- startedAtMs: number;
1836
- }
1837
- export interface Stop {
1838
- stoppedAtMs: number;
1839
- }
1840
- }
1841
-
1842
- /** Event types a GameServer instance can emit. @public */
1843
- export declare enum GameServerEventType {
1892
+ /** Event types a GameServer instance can emit to the global event router. See {@link GameServerEventPayloads} for the payloads. @public */
1893
+ export declare enum GameServerEvent {
1844
1894
  START = "GAMESERVER.START",
1845
1895
  STOP = "GAMESERVER.STOP"
1846
1896
  }
1847
1897
 
1898
+ /** Event payloads for GameServer emitted events. @public */
1899
+ export declare interface GameServerEventPayloads {
1900
+ /** Emitted when the game server starts. */
1901
+ [GameServerEvent.START]: {
1902
+ startedAtMs: number;
1903
+ };
1904
+ /** Emitted when the game server stops. */
1905
+ [GameServerEvent.STOP]: {
1906
+ stoppedAtMs: number;
1907
+ };
1908
+ }
1909
+
1848
1910
  /**
1849
1911
  * Represents a light in a world. Lights can be point lights
1850
1912
  * or spotlights.
@@ -1854,6 +1916,11 @@ export declare enum GameServerEventType {
1854
1916
  * variety of configuration options through the {@link LightOptions}
1855
1917
  * constructor argument.
1856
1918
  *
1919
+ * <h2>Events</h2>
1920
+ *
1921
+ * This class is an EventRouter, and instances of it emit
1922
+ * events with payloads listed under {@link LightEventPayloads}
1923
+ *
1857
1924
  * @example
1858
1925
  * ```typescript
1859
1926
  * const light = new Light({
@@ -1868,7 +1935,7 @@ export declare enum GameServerEventType {
1868
1935
  *
1869
1936
  * @public
1870
1937
  */
1871
- export declare class Light implements protocol.Serializable {
1938
+ export declare class Light extends EventRouter implements protocol.Serializable {
1872
1939
 
1873
1940
 
1874
1941
 
@@ -1987,71 +2054,82 @@ export declare class Light implements protocol.Serializable {
1987
2054
 
1988
2055
  }
1989
2056
 
1990
- /** Payloads for events a Light instance can emit. @public */
1991
- export declare namespace LightEventPayload {
1992
- export interface Despawn {
2057
+ /** Event types a Light instance can emit. See {@link LightEventPayloads} for the payloads. @public */
2058
+ export declare enum LightEvent {
2059
+ DESPAWN = "LIGHT.DESPAWN",
2060
+ SET_ANGLE = "LIGHT.SET_ANGLE",
2061
+ SET_ATTACHED_TO_ENTITY = "LIGHT.SET_ATTACHED_TO_ENTITY",
2062
+ SET_COLOR = "LIGHT.SET_COLOR",
2063
+ SET_DISTANCE = "LIGHT.SET_DISTANCE",
2064
+ SET_INTENSITY = "LIGHT.SET_INTENSITY",
2065
+ SET_OFFSET = "LIGHT.SET_OFFSET",
2066
+ SET_PENUMBRA = "LIGHT.SET_PENUMBRA",
2067
+ SET_POSITION = "LIGHT.SET_POSITION",
2068
+ SET_TRACKED_ENTITY = "LIGHT.SET_TRACKED_ENTITY",
2069
+ SET_TRACKED_POSITION = "LIGHT.SET_TRACKED_POSITION",
2070
+ SPAWN = "LIGHT.SPAWN"
2071
+ }
2072
+
2073
+ /** Event payloads for Light emitted events. @public */
2074
+ export declare interface LightEventPayloads {
2075
+ /** Emitted when a light is despawned. */
2076
+ [LightEvent.DESPAWN]: {
1993
2077
  light: Light;
1994
- }
1995
- export interface SetAngle {
2078
+ };
2079
+ /** Emitted when the angle of the spotlight is set. */
2080
+ [LightEvent.SET_ANGLE]: {
1996
2081
  light: Light;
1997
2082
  angle: number;
1998
- }
1999
- export interface SetAttachedToEntity {
2083
+ };
2084
+ /** Emitted when the light is attached to an entity. */
2085
+ [LightEvent.SET_ATTACHED_TO_ENTITY]: {
2000
2086
  light: Light;
2001
2087
  entity: Entity;
2002
- }
2003
- export interface SetColor {
2088
+ };
2089
+ /** Emitted when the color of the light is set. */
2090
+ [LightEvent.SET_COLOR]: {
2004
2091
  light: Light;
2005
2092
  color: RgbColor;
2006
- }
2007
- export interface SetDistance {
2093
+ };
2094
+ /** Emitted when the maximum distance the light will illuminate is set. */
2095
+ [LightEvent.SET_DISTANCE]: {
2008
2096
  light: Light;
2009
2097
  distance: number;
2010
- }
2011
- export interface SetIntensity {
2098
+ };
2099
+ /** Emitted when the intensity of the light is set. */
2100
+ [LightEvent.SET_INTENSITY]: {
2012
2101
  light: Light;
2013
2102
  intensity: number;
2014
- }
2015
- export interface SetOffset {
2103
+ };
2104
+ /** Emitted when the offset of the light is set. */
2105
+ [LightEvent.SET_OFFSET]: {
2016
2106
  light: Light;
2017
2107
  offset: Vector3Like;
2018
- }
2019
- export interface SetPenumbra {
2108
+ };
2109
+ /** Emitted when the penumbra of the spotlight is set. */
2110
+ [LightEvent.SET_PENUMBRA]: {
2020
2111
  light: Light;
2021
2112
  penumbra: number;
2022
- }
2023
- export interface SetPosition {
2113
+ };
2114
+ /** Emitted when the position of the light is set. */
2115
+ [LightEvent.SET_POSITION]: {
2024
2116
  light: Light;
2025
2117
  position: Vector3Like;
2026
- }
2027
- export interface SetTrackedEntity {
2118
+ };
2119
+ /** Emitted when the tracked entity of the spotlight is set. */
2120
+ [LightEvent.SET_TRACKED_ENTITY]: {
2028
2121
  light: Light;
2029
2122
  entity: Entity;
2030
- }
2031
- export interface SetTrackedPosition {
2123
+ };
2124
+ /** Emitted when the tracked position of the spotlight is set. */
2125
+ [LightEvent.SET_TRACKED_POSITION]: {
2032
2126
  light: Light;
2033
2127
  position: Vector3Like;
2034
- }
2035
- export interface Spawn {
2128
+ };
2129
+ /** Emitted when a light is spawned. */
2130
+ [LightEvent.SPAWN]: {
2036
2131
  light: Light;
2037
- }
2038
- }
2039
-
2040
- /** Event types a Light instance can emit. @public */
2041
- export declare enum LightEventType {
2042
- DESPAWN = "LIGHT.DESPAWN",
2043
- SET_ANGLE = "LIGHT.SET_ANGLE",
2044
- SET_ATTACHED_TO_ENTITY = "LIGHT.SET_ATTACHED_TO_ENTITY",
2045
- SET_COLOR = "LIGHT.SET_COLOR",
2046
- SET_DISTANCE = "LIGHT.SET_DISTANCE",
2047
- SET_INTENSITY = "LIGHT.SET_INTENSITY",
2048
- SET_OFFSET = "LIGHT.SET_OFFSET",
2049
- SET_PENUMBRA = "LIGHT.SET_PENUMBRA",
2050
- SET_POSITION = "LIGHT.SET_POSITION",
2051
- SET_TRACKED_ENTITY = "LIGHT.SET_TRACKED_ENTITY",
2052
- SET_TRACKED_POSITION = "LIGHT.SET_TRACKED_POSITION",
2053
- SET_TYPE = "LIGHT.SET_TYPE",
2054
- SPAWN = "LIGHT.SPAWN"
2132
+ };
2055
2133
  }
2056
2134
 
2057
2135
  /**
@@ -2921,9 +2999,14 @@ export declare type PathfindingOptions = {
2921
2999
  * authenticate with the game server. This is all handled
2922
3000
  * internally.
2923
3001
  *
3002
+ * <h2>Events</h2>
3003
+ *
3004
+ * This class is an EventRouter, and instances of it emit
3005
+ * events with payloads listed under {@link PlayerEventPayloads}
3006
+ *
2924
3007
  * @public
2925
3008
  */
2926
- export declare class Player implements protocol.Serializable {
3009
+ export declare class Player extends EventRouter implements protocol.Serializable {
2927
3010
  /** The unique HYTOPIA UUID for the player. */
2928
3011
  readonly id: string;
2929
3012
  /** The unique HYTOPIA username for the player. */
@@ -2978,6 +3061,11 @@ export declare class Player implements protocol.Serializable {
2978
3061
  * control the camera of a player. All player objects
2979
3062
  * have a camera, accessible via {@link Player.camera}.
2980
3063
  *
3064
+ * <h2>Events</h2>
3065
+ *
3066
+ * This class is an EventRouter, and instances of it emit
3067
+ * events with payloads listed under {@link PlayerCameraEventPayloads}
3068
+ *
2981
3069
  * @example
2982
3070
  * ```typescript
2983
3071
  * player.camera.setMode(PlayerCameraMode.FIRST_PERSON);
@@ -2985,7 +3073,7 @@ export declare class Player implements protocol.Serializable {
2985
3073
  *
2986
3074
  * @public
2987
3075
  */
2988
- export declare class PlayerCamera implements protocol.Serializable {
3076
+ export declare class PlayerCamera extends EventRouter implements protocol.Serializable {
2989
3077
  /** The player that the camera belongs to. @readonly */
2990
3078
  readonly player: Player;
2991
3079
 
@@ -3110,77 +3198,90 @@ export declare class PlayerCamera implements protocol.Serializable {
3110
3198
 
3111
3199
  }
3112
3200
 
3113
- /** Payloads for events a PlayerCamera can emit. @public */
3114
- export declare namespace PlayerCameraEventPayload {
3115
- export interface LookAtEntity {
3201
+ /** Event types a PlayerCamera can emit. See {@link PlayerCameraEventPayloads} for the payloads. @public */
3202
+ export declare enum PlayerCameraEvent {
3203
+ LOOK_AT_ENTITY = "PLAYER_CAMERA.LOOK_AT_ENTITY",
3204
+ LOOK_AT_POSITION = "PLAYER_CAMERA.LOOK_AT_POSITION",
3205
+ SET_ATTACHED_TO_ENTITY = "PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",
3206
+ SET_ATTACHED_TO_POSITION = "PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",
3207
+ SET_FILM_OFFSET = "PLAYER_CAMERA.SET_FILM_OFFSET",
3208
+ SET_FORWARD_OFFSET = "PLAYER_CAMERA.SET_FORWARD_OFFSET",
3209
+ SET_FOV = "PLAYER_CAMERA.SET_FOV",
3210
+ SET_MODEL_HIDDEN_NODES = "PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",
3211
+ SET_MODE = "PLAYER_CAMERA.SET_MODE",
3212
+ SET_OFFSET = "PLAYER_CAMERA.SET_OFFSET",
3213
+ SET_TRACKED_ENTITY = "PLAYER_CAMERA.SET_TRACKED_ENTITY",
3214
+ SET_TRACKED_POSITION = "PLAYER_CAMERA.SET_TRACKED_POSITION",
3215
+ SET_ZOOM = "PLAYER_CAMERA.SET_ZOOM"
3216
+ }
3217
+
3218
+ /** Event payloads for PlayerCamera emitted events. @public */
3219
+ export declare interface PlayerCameraEventPayloads {
3220
+ /** Emitted when the camera looks at an entity. */
3221
+ [PlayerCameraEvent.LOOK_AT_ENTITY]: {
3116
3222
  playerCamera: PlayerCamera;
3117
3223
  entity: Entity;
3118
- }
3119
- export interface LookAtPosition {
3224
+ };
3225
+ /** Emitted when the camera looks at a position. */
3226
+ [PlayerCameraEvent.LOOK_AT_POSITION]: {
3120
3227
  playerCamera: PlayerCamera;
3121
3228
  position: Vector3Like;
3122
- }
3123
- export interface SetAttachedToEntity {
3229
+ };
3230
+ /** Emitted when the camera is attached to an entity. */
3231
+ [PlayerCameraEvent.SET_ATTACHED_TO_ENTITY]: {
3124
3232
  playerCamera: PlayerCamera;
3125
3233
  entity: Entity;
3126
- }
3127
- export interface SetAttachedToPosition {
3234
+ };
3235
+ /** Emitted when the camera is attached to a position. */
3236
+ [PlayerCameraEvent.SET_ATTACHED_TO_POSITION]: {
3128
3237
  playerCamera: PlayerCamera;
3129
3238
  position: Vector3Like;
3130
- }
3131
- export interface SetFilmOffset {
3239
+ };
3240
+ /** Emitted when the film offset of the camera is set. */
3241
+ [PlayerCameraEvent.SET_FILM_OFFSET]: {
3132
3242
  playerCamera: PlayerCamera;
3133
3243
  filmOffset: number;
3134
- }
3135
- export interface SetForwardOffset {
3244
+ };
3245
+ /** Emitted when the forward offset of the camera is set. */
3246
+ [PlayerCameraEvent.SET_FORWARD_OFFSET]: {
3136
3247
  playerCamera: PlayerCamera;
3137
3248
  forwardOffset: number;
3138
- }
3139
- export interface SetFov {
3249
+ };
3250
+ /** Emitted when the field of view of the camera is set. */
3251
+ [PlayerCameraEvent.SET_FOV]: {
3140
3252
  playerCamera: PlayerCamera;
3141
3253
  fov: number;
3142
- }
3143
- export interface SetModelHiddenNodes {
3254
+ };
3255
+ /** Emitted when the nodes of the model the camera is attached to are set to be hidden. */
3256
+ [PlayerCameraEvent.SET_MODEL_HIDDEN_NODES]: {
3144
3257
  playerCamera: PlayerCamera;
3145
3258
  modelHiddenNodes: Set<string>;
3146
- }
3147
- export interface SetMode {
3259
+ };
3260
+ /** Emitted when the mode of the camera is set. */
3261
+ [PlayerCameraEvent.SET_MODE]: {
3148
3262
  playerCamera: PlayerCamera;
3149
3263
  mode: PlayerCameraMode;
3150
- }
3151
- export interface SetOffset {
3264
+ };
3265
+ /** Emitted when the offset of the camera is set. */
3266
+ [PlayerCameraEvent.SET_OFFSET]: {
3152
3267
  playerCamera: PlayerCamera;
3153
3268
  offset: Vector3Like;
3154
- }
3155
- export interface SetTrackedEntity {
3269
+ };
3270
+ /** Emitted when the tracked entity of the camera is set. */
3271
+ [PlayerCameraEvent.SET_TRACKED_ENTITY]: {
3156
3272
  playerCamera: PlayerCamera;
3157
3273
  entity: Entity | undefined;
3158
- }
3159
- export interface SetTrackedPosition {
3274
+ };
3275
+ /** Emitted when the tracked position of the camera is set. */
3276
+ [PlayerCameraEvent.SET_TRACKED_POSITION]: {
3160
3277
  playerCamera: PlayerCamera;
3161
3278
  position: Vector3Like | undefined;
3162
- }
3163
- export interface SetZoom {
3279
+ };
3280
+ /** Emitted when the zoom of the camera is set. */
3281
+ [PlayerCameraEvent.SET_ZOOM]: {
3164
3282
  playerCamera: PlayerCamera;
3165
3283
  zoom: number;
3166
- }
3167
- }
3168
-
3169
- /** Event types a PlayerCamera can emit. @public */
3170
- export declare enum PlayerCameraEventType {
3171
- LOOK_AT_ENTITY = "PLAYER_CAMERA.LOOK_AT_ENTITY",
3172
- LOOK_AT_POSITION = "PLAYER_CAMERA.LOOK_AT_POSITION",
3173
- SET_ATTACHED_TO_ENTITY = "PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",
3174
- SET_ATTACHED_TO_POSITION = "PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",
3175
- SET_FILM_OFFSET = "PLAYER_CAMERA.SET_FILM_OFFSET",
3176
- SET_FORWARD_OFFSET = "PLAYER_CAMERA.SET_FORWARD_OFFSET",
3177
- SET_FOV = "PLAYER_CAMERA.SET_FOV",
3178
- SET_MODEL_HIDDEN_NODES = "PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",
3179
- SET_MODE = "PLAYER_CAMERA.SET_MODE",
3180
- SET_OFFSET = "PLAYER_CAMERA.SET_OFFSET",
3181
- SET_TRACKED_ENTITY = "PLAYER_CAMERA.SET_TRACKED_ENTITY",
3182
- SET_TRACKED_POSITION = "PLAYER_CAMERA.SET_TRACKED_POSITION",
3183
- SET_ZOOM = "PLAYER_CAMERA.SET_ZOOM"
3284
+ };
3184
3285
  }
3185
3286
 
3186
3287
  /** The mode of the camera. @public */
@@ -3375,33 +3476,37 @@ export declare interface PlayerEntityOptions extends EntityOptions {
3375
3476
  player: Player;
3376
3477
  }
3377
3478
 
3378
- /** Payloads for events a Player can emit. @public */
3379
- export declare namespace PlayerEventPayload {
3380
- export interface ChatMessageSend {
3479
+ /** Event types a Player can emit. See {@link PlayerEventPayloads} for the payloads. @public */
3480
+ export declare enum PlayerEvent {
3481
+ CHAT_MESSAGE_SEND = "PLAYER.CHAT_MESSAGE_SEND",
3482
+ JOINED_WORLD = "PLAYER.JOINED_WORLD",
3483
+ LEFT_WORLD = "PLAYER.LEFT_WORLD",
3484
+ REQUEST_SYNC = "PLAYER.REQUEST_SYNC"
3485
+ }
3486
+
3487
+ /** Event payloads for Player emitted events. @public */
3488
+ export declare interface PlayerEventPayloads {
3489
+ /** Emitted when a player sends a chat message. */
3490
+ [PlayerEvent.CHAT_MESSAGE_SEND]: {
3381
3491
  player: Player;
3382
- message: protocol.ChatMessageSchema;
3383
- }
3384
- export interface JoinedWorld {
3492
+ message: string;
3493
+ };
3494
+ /** Emitted when a player joins a world. */
3495
+ [PlayerEvent.JOINED_WORLD]: {
3385
3496
  player: Player;
3386
3497
  world: World;
3387
- }
3388
- export interface LeftWorld {
3498
+ };
3499
+ /** Emitted when a player leaves a world. */
3500
+ [PlayerEvent.LEFT_WORLD]: {
3389
3501
  player: Player;
3390
3502
  world: World;
3391
- }
3392
- export interface RequestSync {
3503
+ };
3504
+ /** Emitted when a player's client requests a round trip time synchronization. */
3505
+ [PlayerEvent.REQUEST_SYNC]: {
3393
3506
  player: Player;
3394
3507
  receivedAt: number;
3395
3508
  receivedAtMs: number;
3396
- }
3397
- }
3398
-
3399
- /** Event types a Player can emit. @public */
3400
- export declare enum PlayerEventType {
3401
- CHAT_MESSAGE_SEND = "PLAYER.CHAT_MESSAGE_SEND",
3402
- JOINED_WORLD = "PLAYER.JOINED_WORLD",
3403
- LEFT_WORLD = "PLAYER.LEFT_WORLD",
3404
- REQUEST_SYNC = "PLAYER.REQUEST_SYNC"
3509
+ };
3405
3510
  }
3406
3511
 
3407
3512
  /** The input state of a Player; keys from SUPPORTED_INPUT_KEYS. @public */
@@ -3415,6 +3520,11 @@ export declare type PlayerInput = Partial<Record<keyof InputSchema, boolean>>;
3415
3520
  * singleton accessible with the static property
3416
3521
  * `PlayerManager.instance`.
3417
3522
  *
3523
+ * <h2>Events</h2>
3524
+ *
3525
+ * This class is an EventRouter, and instances of it emit
3526
+ * events with payloads listed under {@link PlayerManagerEventPayloads}
3527
+ *
3418
3528
  * @example
3419
3529
  * ```typescript
3420
3530
  * import { PlayerManager } from 'hytopia';
@@ -3453,6 +3563,18 @@ export declare class PlayerManager {
3453
3563
 
3454
3564
  }
3455
3565
 
3566
+ /** Event payloads for PlayerManager emitted events. @public */
3567
+ export declare interface PlayerManagerEventPayloads {
3568
+ /** Emitted when a player connects to the server. */
3569
+ [PlayerManagerEvent.PLAYER_CONNECTED]: {
3570
+ player: Player;
3571
+ };
3572
+ /** Emitted when a player disconnects from the server. */
3573
+ [PlayerManagerEvent.PLAYER_DISCONNECTED]: {
3574
+ player: Player;
3575
+ };
3576
+ }
3577
+
3456
3578
  /**
3457
3579
  * The UI for a player.
3458
3580
  *
@@ -3461,9 +3583,14 @@ export declare class PlayerManager {
3461
3583
  * sees. UI is controlled by HTML, CSS and JavaScript
3462
3584
  * files you provide in your `assets` folder.
3463
3585
  *
3586
+ * <h2>Events</h2>
3587
+ *
3588
+ * This class is an EventRouter, and instances of it emit
3589
+ * events with payloads listed under {@link PlayerUIEventPayloads}
3590
+ *
3464
3591
  * @public
3465
3592
  */
3466
- export declare class PlayerUI {
3593
+ export declare class PlayerUI extends EventRouter {
3467
3594
  /** The player that the UI belongs to. @readonly */
3468
3595
  readonly player: Player;
3469
3596
  /**
@@ -3497,27 +3624,30 @@ export declare class PlayerUI {
3497
3624
  sendData(data: object): void;
3498
3625
  }
3499
3626
 
3500
- /** Payloads for events a PlayerUI instance can emit. @public */
3501
- export declare namespace PlayerUIEventPayload {
3502
- export interface Load {
3627
+ /** Event types a PlayerUI can emit. See {@link PlayerUIEventPayloads} for the payloads. @public */
3628
+ export declare enum PlayerUIEvent {
3629
+ LOAD = "PLAYER_UI.LOAD",
3630
+ LOCK_POINTER = "PLAYER_UI.LOCK_POINTER",
3631
+ SEND_DATA = "PLAYER_UI.SEND_DATA"
3632
+ }
3633
+
3634
+ /** Event payloads for PlayerUI emitted events. @public */
3635
+ export declare interface PlayerUIEventPayloads {
3636
+ /** Emitted when the player's client UI is loaded. */
3637
+ [PlayerUIEvent.LOAD]: {
3503
3638
  playerUI: PlayerUI;
3504
3639
  htmlUri: string;
3505
- }
3506
- export interface LockPointer {
3640
+ };
3641
+ /** Emitted when the player's mouse pointer is locked or unlocked. */
3642
+ [PlayerUIEvent.LOCK_POINTER]: {
3507
3643
  playerUI: PlayerUI;
3508
3644
  lock: boolean;
3509
- }
3510
- export interface SendData {
3645
+ };
3646
+ /** Emitted when the player's client UI sends data to the server. */
3647
+ [PlayerUIEvent.SEND_DATA]: {
3511
3648
  playerUI: PlayerUI;
3512
3649
  data: object;
3513
- }
3514
- }
3515
-
3516
- /** Event types a PlayerUI can emit. @public */
3517
- export declare enum PlayerUIEventType {
3518
- LOAD = "PLAYER_UI.LOAD",
3519
- LOCK_POINTER = "PLAYER_UI.LOCK_POINTER",
3520
- SEND_DATA = "PLAYER_UI.SEND_DATA"
3650
+ };
3521
3651
  }
3522
3652
 
3523
3653
  /**
@@ -3798,7 +3928,7 @@ export declare interface RgbColor {
3798
3928
  *
3799
3929
  * @public
3800
3930
  */
3801
- export declare class RigidBody {
3931
+ export declare class RigidBody extends EventRouter {
3802
3932
 
3803
3933
 
3804
3934
 
@@ -4186,6 +4316,11 @@ export declare enum RigidBodyType {
4186
4316
  * They support a variety of configuration options through
4187
4317
  * the {@link SceneUIOptions} constructor argument.
4188
4318
  *
4319
+ * <h2>Events</h2>
4320
+ *
4321
+ * This class is an EventRouter, and instances of it emit
4322
+ * events with payloads listed under {@link SceneUIEventPayloads}
4323
+ *
4189
4324
  * @example
4190
4325
  * ```typescript
4191
4326
  * const sceneUI = new SceneUI({
@@ -4197,7 +4332,7 @@ export declare enum RigidBodyType {
4197
4332
  *
4198
4333
  * @public
4199
4334
  */
4200
- export declare class SceneUI implements protocol.Serializable {
4335
+ export declare class SceneUI extends EventRouter implements protocol.Serializable {
4201
4336
 
4202
4337
 
4203
4338
 
@@ -4271,6 +4406,54 @@ export declare class SceneUI implements protocol.Serializable {
4271
4406
 
4272
4407
  }
4273
4408
 
4409
+ /** Event types a SceneUI instance can emit. See {@link SceneUIEventPayloads} for the payloads. @public */
4410
+ export declare enum SceneUIEvent {
4411
+ LOAD = "SCENE_UI.LOAD",
4412
+ SET_ATTACHED_TO_ENTITY = "SCENE_UI.SET_ATTACHED_TO_ENTITY",
4413
+ SET_OFFSET = "SCENE_UI.SET_OFFSET",
4414
+ SET_POSITION = "SCENE_UI.SET_POSITION",
4415
+ SET_STATE = "SCENE_UI.SET_STATE",
4416
+ SET_VIEW_DISTANCE = "SCENE_UI.SET_VIEW_DISTANCE",
4417
+ UNLOAD = "SCENE_UI.UNLOAD"
4418
+ }
4419
+
4420
+ /** Event payloads for SceneUI emitted events. @public */
4421
+ export declare interface SceneUIEventPayloads {
4422
+ /** Emitted when a SceneUI is loaded into the world. */
4423
+ [SceneUIEvent.LOAD]: {
4424
+ sceneUI: SceneUI;
4425
+ };
4426
+ /** Emitted when a SceneUI is attached to an entity. */
4427
+ [SceneUIEvent.SET_ATTACHED_TO_ENTITY]: {
4428
+ sceneUI: SceneUI;
4429
+ entity: Entity;
4430
+ };
4431
+ /** Emitted when the offset of a SceneUI is set. */
4432
+ [SceneUIEvent.SET_OFFSET]: {
4433
+ sceneUI: SceneUI;
4434
+ offset: Vector3Like;
4435
+ };
4436
+ /** Emitted when the position of a SceneUI is set. */
4437
+ [SceneUIEvent.SET_POSITION]: {
4438
+ sceneUI: SceneUI;
4439
+ position: Vector3Like;
4440
+ };
4441
+ /** Emitted when the state of a SceneUI is set. */
4442
+ [SceneUIEvent.SET_STATE]: {
4443
+ sceneUI: SceneUI;
4444
+ state: object;
4445
+ };
4446
+ /** Emitted when the view distance of a SceneUI is set. */
4447
+ [SceneUIEvent.SET_VIEW_DISTANCE]: {
4448
+ sceneUI: SceneUI;
4449
+ viewDistance: number;
4450
+ };
4451
+ /** Emitted when a SceneUI is unloaded from the world. */
4452
+ [SceneUIEvent.UNLOAD]: {
4453
+ sceneUI: SceneUI;
4454
+ };
4455
+ }
4456
+
4274
4457
  /**
4275
4458
  * Manages SceneUI instances in a world.
4276
4459
  *
@@ -4422,9 +4605,14 @@ export declare class SimpleEntityController extends BaseEntityController {
4422
4605
  * of the world. Most methods are not often used directly, but are
4423
4606
  * provided for advanced usage.
4424
4607
  *
4608
+ * <h2>Events</h2>
4609
+ *
4610
+ * This class is an EventRouter, and instances of it emit
4611
+ * events with payloads listed under {@link SimulationEventPayloads}
4612
+ *
4425
4613
  * @public
4426
4614
  */
4427
- export declare class Simulation {
4615
+ export declare class Simulation extends EventRouter {
4428
4616
 
4429
4617
 
4430
4618
 
@@ -4497,6 +4685,42 @@ export declare class Simulation {
4497
4685
 
4498
4686
 
4499
4687
 
4688
+ }
4689
+
4690
+ /** Event types a Simulation instance can emit. See {@link SimulationEventPayloads} for the payloads. @public */
4691
+ export declare enum SimulationEvent {
4692
+ STEP_START = "SIMULATION.STEP_START",
4693
+ STEP_END = "SIMULATION.STEP_END",
4694
+ DEBUG_RAYCAST = "SIMULATION.DEBUG_RAYCAST",
4695
+ DEBUG_RENDER = "SIMULATION.DEBUG_RENDER"
4696
+ }
4697
+
4698
+ /** Event payloads for Simulation emitted events. @public */
4699
+ export declare interface SimulationEventPayloads {
4700
+ /** Emitted when the simulation step starts. */
4701
+ [SimulationEvent.STEP_START]: {
4702
+ simulation: Simulation;
4703
+ tickDeltaMs: number;
4704
+ };
4705
+ /** Emitted when the simulation step ends. */
4706
+ [SimulationEvent.STEP_END]: {
4707
+ simulation: Simulation;
4708
+ stepDurationMs: number;
4709
+ };
4710
+ /** Emitted when a debug raycast is performed. */
4711
+ [SimulationEvent.DEBUG_RAYCAST]: {
4712
+ simulation: Simulation;
4713
+ origin: Vector3Like;
4714
+ direction: Vector3Like;
4715
+ length: number;
4716
+ hit: boolean;
4717
+ };
4718
+ /** Emitted when the simulation debug rendering is enabled. */
4719
+ [SimulationEvent.DEBUG_RENDER]: {
4720
+ simulation: Simulation;
4721
+ vertices: Float32Array;
4722
+ colors: Float32Array;
4723
+ };
4500
4724
  }
4501
4725
 
4502
4726
  /** A 3x3 symmetric positive-definite matrix for spatial dynamics. @public */
@@ -5071,6 +5295,11 @@ export declare type WaypointMoveSkippedCallback = (waypoint: Vector3Like, waypoi
5071
5295
  * automatically created default world is all you need, but
5072
5296
  * this flexibility is available for more complex games.
5073
5297
  *
5298
+ * <h2>Events</h2>
5299
+ *
5300
+ * This class is an EventRouter, and instances of it emit
5301
+ * events with payloads listed under {@link WorldEventPayloads}
5302
+ *
5074
5303
  * @example
5075
5304
  * ```typescript
5076
5305
  * const world = new World({
@@ -5082,18 +5311,7 @@ export declare type WaypointMoveSkippedCallback = (waypoint: Vector3Like, waypoi
5082
5311
  *
5083
5312
  * @public
5084
5313
  */
5085
- export declare class World implements protocol.Serializable {
5086
- /**
5087
- * A function that is called when a player joins the world.
5088
- * @param player - The player that joined the world.
5089
- */
5090
- onPlayerJoin?: (player: Player) => void;
5091
- /**
5092
- * A function that is called when a player leaves the world.
5093
- * @param player - The player that left the world.
5094
- */
5095
- onPlayerLeave?: (player: Player) => void;
5096
-
5314
+ export declare class World extends EventRouter implements protocol.Serializable {
5097
5315
 
5098
5316
 
5099
5317
 
@@ -5142,8 +5360,6 @@ export declare class World implements protocol.Serializable {
5142
5360
  get chunkLattice(): ChunkLattice;
5143
5361
  /** The entity manager for the world. */
5144
5362
  get entityManager(): EntityManager;
5145
- /** The event router for the world. */
5146
- get eventRouter(): EventRouter;
5147
5363
  /** The light manager for the world. */
5148
5364
  get lightManager(): LightManager;
5149
5365
  /** The world loop for the world. */
@@ -5194,6 +5410,56 @@ export declare class World implements protocol.Serializable {
5194
5410
 
5195
5411
  }
5196
5412
 
5413
+ /** Event types a World instance can emit. See {@link WorldEventPayloads} for the payloads. @public */
5414
+ export declare enum WorldEvent {
5415
+ SET_AMBIENT_LIGHT_COLOR = "WORLD.SET_AMBIENT_LIGHT_COLOR",
5416
+ SET_AMBIENT_LIGHT_INTENSITY = "WORLD.SET_AMBIENT_LIGHT_INTENSITY",
5417
+ SET_DIRECTIONAL_LIGHT_COLOR = "WORLD.SET_DIRECTIONAL_LIGHT_COLOR",
5418
+ SET_DIRECTIONAL_LIGHT_INTENSITY = "WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",
5419
+ SET_DIRECTIONAL_LIGHT_POSITION = "WORLD.SET_DIRECTIONAL_LIGHT_POSITION",
5420
+ START = "WORLD.START",
5421
+ STOP = "WORLD.STOP"
5422
+ }
5423
+
5424
+ /** Event payloads for World emitted events. @public */
5425
+ export declare interface WorldEventPayloads {
5426
+ /** Emitted when the color of the world's ambient light is set. */
5427
+ [WorldEvent.SET_AMBIENT_LIGHT_COLOR]: {
5428
+ world: World;
5429
+ color: RgbColor;
5430
+ };
5431
+ /** Emitted when the intensity of the world's ambient light is set. */
5432
+ [WorldEvent.SET_AMBIENT_LIGHT_INTENSITY]: {
5433
+ world: World;
5434
+ intensity: number;
5435
+ };
5436
+ /** Emitted when the color of the world's directional light is set. */
5437
+ [WorldEvent.SET_DIRECTIONAL_LIGHT_COLOR]: {
5438
+ world: World;
5439
+ color: RgbColor;
5440
+ };
5441
+ /** Emitted when the intensity of the world's directional light is set. */
5442
+ [WorldEvent.SET_DIRECTIONAL_LIGHT_INTENSITY]: {
5443
+ world: World;
5444
+ intensity: number;
5445
+ };
5446
+ /** Emitted when the position of the world's directional light is set. */
5447
+ [WorldEvent.SET_DIRECTIONAL_LIGHT_POSITION]: {
5448
+ world: World;
5449
+ position: Vector3Like;
5450
+ };
5451
+ /** Emitted when the world starts. */
5452
+ [WorldEvent.START]: {
5453
+ world: World;
5454
+ startedAtMs: number;
5455
+ };
5456
+ /** Emitted when the world stops. */
5457
+ [WorldEvent.STOP]: {
5458
+ world: World;
5459
+ stoppedAtMs: number;
5460
+ };
5461
+ }
5462
+
5197
5463
  /**
5198
5464
  * Manages the tick loop for a world.
5199
5465
  *
@@ -5213,9 +5479,14 @@ export declare class World implements protocol.Serializable {
5213
5479
  *
5214
5480
  * 5. Synchronize network packets with player clients
5215
5481
  *
5482
+ * <h2>Events</h2>
5483
+ *
5484
+ * This class is an EventRouter, and instances of it emit
5485
+ * events with payloads listed under {@link WorldLoopEventPayloads}
5486
+ *
5216
5487
  * @public
5217
5488
  */
5218
- export declare class WorldLoop {
5489
+ export declare class WorldLoop extends EventRouter {
5219
5490
 
5220
5491
 
5221
5492
 
@@ -5234,35 +5505,40 @@ export declare class WorldLoop {
5234
5505
 
5235
5506
  }
5236
5507
 
5237
- /** Payloads for events emitted by a WorldLoop instance. @public */
5238
- export declare namespace WorldLoopEventPayload {
5239
- export interface Start {
5508
+ /** Event types a WorldLoop instance can emit. See {@link WorldLoopEventPayloads} for the payloads. @public */
5509
+ export declare enum WorldLoopEvent {
5510
+ START = "WORLD_LOOP.START",
5511
+ STOP = "WORLD_LOOP.STOP",
5512
+ TICK_START = "WORLD_LOOP.TICK_START",
5513
+ TICK_END = "WORLD_LOOP.TICK_END",
5514
+ TICK_ERROR = "WORLD_LOOP.TICK_ERROR"
5515
+ }
5516
+
5517
+ /** Event payloads for WorldLoop emitted events. @public */
5518
+ export declare interface WorldLoopEventPayloads {
5519
+ /** Emitted when the world loop starts. */
5520
+ [WorldLoopEvent.START]: {
5240
5521
  worldLoop: WorldLoop;
5241
- }
5242
- export interface Stop {
5522
+ };
5523
+ /** Emitted when the world loop stops. */
5524
+ [WorldLoopEvent.STOP]: {
5243
5525
  worldLoop: WorldLoop;
5244
- }
5245
- export interface TickStart {
5526
+ };
5527
+ /** Emitted when the world loop tick starts. */
5528
+ [WorldLoopEvent.TICK_START]: {
5246
5529
  worldLoop: WorldLoop;
5247
5530
  tickDeltaMs: number;
5248
- }
5249
- export interface TickEnd {
5531
+ };
5532
+ /** Emitted when the world loop tick ends. */
5533
+ [WorldLoopEvent.TICK_END]: {
5250
5534
  worldLoop: WorldLoop;
5251
5535
  tickDurationMs: number;
5252
- }
5253
- export interface TickError {
5536
+ };
5537
+ /** Emitted when an error occurs during a world loop tick. */
5538
+ [WorldLoopEvent.TICK_ERROR]: {
5254
5539
  worldLoop: WorldLoop;
5255
5540
  error: Error;
5256
- }
5257
- }
5258
-
5259
- /** Event types a WorldLoop instance can emit. @public */
5260
- export declare enum WorldLoopEventType {
5261
- START = "WORLD_LOOP.START",
5262
- STOP = "WORLD_LOOP.STOP",
5263
- TICK_START = "WORLD_LOOP.TICK_START",
5264
- TICK_END = "WORLD_LOOP.TICK_END",
5265
- TICK_ERROR = "WORLD_LOOP.TICK_ERROR"
5541
+ };
5266
5542
  }
5267
5543
 
5268
5544
  /** A map representation for a world. @public */