hytopia 0.2.10 → 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
@@ -107,8 +107,8 @@ export class MiningBehavior implements AgentBehavior {
107
107
  this.isMining = true;
108
108
 
109
109
  // Start mining animation if available
110
- agent.stopModelAnimations(["walk", "run"]);
111
- agent.startModelLoopedAnimations(["idle"]); // Could be replaced with mining animation
110
+ agent.stopModelAnimations(["walk_upper", "walk_lower", "run_upper", "run_lower"]);
111
+ agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]); // Could be replaced with mining animation
112
112
 
113
113
  // Simulate mining time
114
114
  setTimeout(() => {
@@ -48,8 +48,8 @@ export class PathfindingBehavior implements AgentBehavior {
48
48
  ).distance(finalPoint);
49
49
 
50
50
  if (distanceToFinal < 3) {
51
- agent.stopModelAnimations(["walk"]);
52
- agent.startModelLoopedAnimations(["idle"]);
51
+ agent.stopModelAnimations(["walk_upper", "walk_lower"]);
52
+ agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
53
53
  if (this.targetEntity) {
54
54
  agent.controller.face(
55
55
  this.targetEntity.position,
@@ -75,8 +75,8 @@ export class PathfindingBehavior implements AgentBehavior {
75
75
  this.targetEntity.position,
76
76
  this.moveSpeed * 2
77
77
  );
78
- agent.stopModelAnimations(["walk"]);
79
- agent.startModelLoopedAnimations(["idle"]);
78
+ agent.stopModelAnimations(["walk_upper", "walk_lower"]);
79
+ agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
80
80
 
81
81
  this.targetEntity = undefined;
82
82
  }
@@ -111,15 +111,15 @@ export class PathfindingBehavior implements AgentBehavior {
111
111
  moveIgnoreAxes: yDiff >= 0 ? { y: true } : undefined,
112
112
  });
113
113
  agent.controller.face(nextPoint, this.moveSpeed * 2);
114
- agent.startModelLoopedAnimations(["walk"]);
114
+ agent.startModelLoopedAnimations(["walk_upper", "walk_lower"]);
115
115
  }
116
116
  } else if (this.path.length > 0) {
117
117
  this.path = [];
118
118
  this.currentPathIndex = 0;
119
119
  this.isJumping = false;
120
120
  this.jumpCooldown = 0;
121
- agent.stopModelAnimations(["walk"]);
122
- agent.startModelLoopedAnimations(["idle"]);
121
+ agent.stopModelAnimations(["walk_upper", "walk_lower"]);
122
+ agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
123
123
  }
124
124
  }
125
125
 
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  startServer,
3
3
  PlayerEntity,
4
+ PlayerEvent,
4
5
  } from 'hytopia';
5
6
 
6
7
  import worldMap from './assets/map.json';
@@ -22,7 +23,7 @@ startServer(world => {
22
23
  world.loadMap(worldMap);
23
24
 
24
25
  // Spawn a player entity when a player joins the game.
25
- world.onPlayerJoin = player => {
26
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
26
27
  const playerEntity = new PlayerEntity({
27
28
  player,
28
29
  name: 'Player',
@@ -32,10 +33,10 @@ startServer(world => {
32
33
  });
33
34
 
34
35
  playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
35
- };
36
+ });
36
37
 
37
38
  // Despawn all player entities when a player leaves the game.
38
- world.onPlayerLeave = player => {
39
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
39
40
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
40
- };
41
+ });
41
42
  });
@@ -2,7 +2,9 @@ import {
2
2
  startServer,
3
3
  ColliderShape,
4
4
  PlayerEntity,
5
+ PlayerEvent,
5
6
  Entity,
7
+ EntityEvent,
6
8
  RigidBodyType,
7
9
  GameServer,
8
10
  SimpleEntityController,
@@ -17,7 +19,7 @@ startServer(world => {
17
19
  // world.simulation.enableDebugRendering(true);
18
20
 
19
21
  world.loadMap(worldMap);
20
- world.onPlayerJoin = player => {
22
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
21
23
  const playerEntity = new PlayerEntity({
22
24
  player,
23
25
  name: 'Player',
@@ -27,11 +29,11 @@ startServer(world => {
27
29
  });
28
30
 
29
31
  playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
30
- };
32
+ });
31
33
 
32
- world.onPlayerLeave = player => {
34
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
33
35
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
34
- };
36
+ });
35
37
 
36
38
  /**
37
39
  * Spawn a block entity as a moving platform
@@ -46,7 +48,7 @@ startServer(world => {
46
48
  });
47
49
 
48
50
  // Clamp the z range the platform moves back and forth between
49
- blockPlatform.onTick = blockPlatform => {
51
+ blockPlatform.on(EntityEvent.TICK, () => {
50
52
  const position = blockPlatform.position;
51
53
 
52
54
  if (position.z < -9) {
@@ -56,7 +58,7 @@ startServer(world => {
56
58
  if (position.z > 8) {
57
59
  blockPlatform.setLinearVelocity({ x: 0, y: 0, z: -3 });
58
60
  }
59
- };
61
+ });
60
62
 
61
63
  blockPlatform.spawn(world, { x: 3, y: 3, z: -7 });
62
64
 
@@ -87,11 +89,11 @@ startServer(world => {
87
89
  blockHalfExtents: { x: 0.5, y: 0.5, z: 0.5 },
88
90
  });
89
91
 
90
- movableBlock.onEntityCollision = (movableBlock, otherEntity, started) => {
92
+ movableBlock.on(EntityEvent.ENTITY_COLLISION, ({ started }) => {
91
93
  if (started) {
92
94
  world.chatManager.sendBroadcastMessage('The sand block was pushed!');
93
95
  }
94
- };
96
+ });
95
97
 
96
98
  movableBlock.spawn(world, { x: -4, y: 10, z: -6 });
97
99
 
@@ -149,7 +151,7 @@ startServer(world => {
149
151
 
150
152
  // Simple pathfinding
151
153
  let pathfindAccumulator = 0;
152
- blockPet.onTick = (blockPet, tickDeltaMs) => {
154
+ blockPet.on(EntityEvent.TICK, ({ tickDeltaMs }) => {
153
155
  pathfindAccumulator += tickDeltaMs;
154
156
 
155
157
  if (pathfindAccumulator > 3000) { // only pathfind every 3 seconds so we don't do unecessary pathfinding
@@ -172,5 +174,5 @@ startServer(world => {
172
174
  blockPetEntityController.move(targetPosition, 3);
173
175
  blockPetEntityController.face(targetPosition, 1);
174
176
  }
175
- };
177
+ });
176
178
  });
@@ -2,6 +2,7 @@ import {
2
2
  startServer,
3
3
  Entity,
4
4
  PlayerEntity,
5
+ PlayerEvent,
5
6
  Quaternion,
6
7
  } from 'hytopia';
7
8
 
@@ -11,7 +12,7 @@ startServer(world => {
11
12
  world.loadMap(worldMap);
12
13
 
13
14
  // Spawn a player entity when a player joins the game.
14
- world.onPlayerJoin = player => {
15
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
15
16
  const playerEntity = new PlayerEntity({
16
17
  player,
17
18
  name: 'Player',
@@ -35,9 +36,9 @@ startServer(world => {
35
36
  { x: 0, y: 0.3, z: 0.5 }, // spawn with a position relative to the parent node
36
37
  Quaternion.fromEuler(-90, 0, 90), // spawn with a rotation so it looks correct in the hand
37
38
  );
38
- };
39
+ });
39
40
 
40
- world.onPlayerLeave = player => {
41
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
41
42
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
42
- };
43
+ });
43
44
  });
@@ -3,6 +3,7 @@ import {
3
3
  Audio,
4
4
  Player,
5
5
  PlayerEntity,
6
+ PlayerEvent,
6
7
  PlayerUI,
7
8
  } from 'hytopia';
8
9
 
@@ -14,7 +15,7 @@ const playerEntityMap = new Map<Player, PlayerEntity>();
14
15
  startServer(world => {
15
16
  world.loadMap(worldMap);
16
17
 
17
- world.onPlayerJoin = player => {
18
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
18
19
  // Load the UI for the player.
19
20
  // This is loaded directly into a sandboxed iframe
20
21
  // overlaying the game. As long as it's an HTML file,
@@ -48,13 +49,13 @@ startServer(world => {
48
49
  playerEntity.setPosition({ x: randomX, y: randomY, z: randomZ });
49
50
  }
50
51
  };
51
- };
52
+ });
52
53
 
53
- world.onPlayerLeave = player => {
54
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
54
55
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
55
56
  // Remove the player entity from our map for our list.
56
57
  playerEntityMap.delete(player);
57
- };
58
+ });
58
59
 
59
60
  // Update the player list every 1 second, no need to send too frequently.
60
61
  // We want to balance not sending too much UI data too frequently, because
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  startServer,
3
3
  PlayerEntity,
4
+ PlayerEvent,
4
5
  } from 'hytopia';
5
6
 
6
7
  import MyEntityController from './MyEntityController';
@@ -17,7 +18,7 @@ startServer(world => {
17
18
 
18
19
  world.loadMap(worldMap);
19
20
 
20
- world.onPlayerJoin = player => {
21
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
21
22
  const playerEntity = new PlayerEntity({
22
23
  player,
23
24
  name: 'Player',
@@ -30,9 +31,9 @@ startServer(world => {
30
31
  playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
31
32
  console.log('Spawned player entity!');
32
33
 
33
- };
34
+ });
34
35
 
35
- world.onPlayerLeave = player => {
36
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
36
37
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
37
- };
38
+ });
38
39
  });
@@ -2,7 +2,9 @@ import {
2
2
  startServer,
3
3
  ColliderShape,
4
4
  Entity,
5
+ EntityEvent,
5
6
  PlayerEntity,
7
+ PlayerEvent,
6
8
  RigidBodyType,
7
9
  World,
8
10
  Collider,
@@ -49,9 +51,9 @@ startServer(world => {
49
51
  });
50
52
 
51
53
  // A simple collision callback that logs when the spider collides with another Entity.
52
- spider.onEntityCollision = (spider, otherEntity, started) => {
54
+ spider.on(EntityEvent.ENTITY_COLLISION, ({ otherEntity, started }) => {
53
55
  console.log('spider colliding with', otherEntity.name, started);
54
- };
56
+ });
55
57
 
56
58
  spider.spawn(world, { x: 15, y: 10, z: 0 });
57
59
  });
@@ -66,7 +68,7 @@ function setup(world: World) {
66
68
  world.loadMap(worldMap);
67
69
 
68
70
  // Spawn a player entity when a player joins the game.
69
- world.onPlayerJoin = player => {
71
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
70
72
  const playerEntity = new PlayerEntity({
71
73
  player,
72
74
  name: 'Player',
@@ -76,10 +78,10 @@ function setup(world: World) {
76
78
  });
77
79
 
78
80
  playerEntity.spawn(world, { x: 0, y: 10, z: 0 });
79
- };
81
+ });
80
82
 
81
83
  // Despawn all player entities when a player leaves the game.
82
- world.onPlayerLeave = player => {
84
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
83
85
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
84
- };
86
+ });
85
87
  }
@@ -4,11 +4,13 @@ import {
4
4
  Collider,
5
5
  ColliderShape,
6
6
  Entity,
7
+ EntityEvent,
7
8
  GameServer,
8
9
  RigidBodyType,
9
10
  startServer,
10
11
  Player,
11
12
  PlayerEntity,
13
+ PlayerEvent,
12
14
  SceneUI,
13
15
  World,
14
16
  CollisionGroup,
@@ -57,7 +59,7 @@ const GAME_PLAYER_ENTITIES = new Set<PlayerEntity>();
57
59
  let gameLevel = 1;
58
60
  let gameState: 'awaitingPlayers' | 'starting' | 'inProgress' = 'awaitingPlayers';
59
61
  let gameCountdownStartTime: number | null = null;
60
- let gameInterval: NodeJS.Timer;
62
+ let gameInterval: NodeJS.Timeout;
61
63
  let gameStartTime: number | null = null;
62
64
  let gameUiState: object = {};
63
65
 
@@ -76,8 +78,8 @@ const gameInactiveAudio = new Audio({
76
78
 
77
79
  startServer(world => {
78
80
  world.loadMap(worldMap);
79
- world.onPlayerJoin = player => onPlayerJoin(world, player);
80
- world.onPlayerLeave = player => onPlayerLeave(world, player);
81
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => onPlayerJoin(world, player));
82
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => onPlayerLeave(world, player));
81
83
 
82
84
  spawnJoinNpc(world);
83
85
  gameInactiveAudio.play(world);
@@ -107,11 +109,11 @@ function onPlayerJoin(world: World, player: Player) {
107
109
  collidesWith: [CollisionGroup.BLOCK, GAME_CONFIG.WALL_COLLISION_GROUP],
108
110
  });
109
111
 
110
- playerEntity.onTick = () => {
112
+ playerEntity.on(EntityEvent.TICK, () => {
111
113
  if (playerEntity.position.y < 5) {
112
114
  killPlayer(playerEntity);
113
115
  }
114
- }
116
+ });
115
117
  }
116
118
 
117
119
  function onPlayerLeave(world: World, player: Player) {
@@ -343,7 +345,7 @@ function generateWall(world: World, direction: GameWallDirection, speedModifier:
343
345
  z: GAME_CONFIG.WALL_VELOCITIES[direction].z * speedModifier,
344
346
  });
345
347
 
346
- wallSegment.onTick = () => {
348
+ wallSegment.on(EntityEvent.TICK, () => {
347
349
  if (!wallSegment.isSpawned) return;
348
350
  const position = wallSegment.position;
349
351
 
@@ -357,7 +359,7 @@ function generateWall(world: World, direction: GameWallDirection, speedModifier:
357
359
  }
358
360
  }, 1000);
359
361
  }
360
- }
362
+ });
361
363
  }
362
364
  }
363
365
  }
@@ -4,6 +4,7 @@ import {
4
4
  Light,
5
5
  LightType,
6
6
  PlayerEntity,
7
+ PlayerEvent,
7
8
  } from 'hytopia';
8
9
 
9
10
  import worldMap from './assets/map.json';
@@ -83,7 +84,7 @@ startServer(world => {
83
84
 
84
85
 
85
86
  // Spawn a player entity when a player joins the game.
86
- world.onPlayerJoin = player => {
87
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
87
88
  const playerEntity = new PlayerEntity({
88
89
  player,
89
90
  name: 'Player',
@@ -105,12 +106,12 @@ startServer(world => {
105
106
  penumbra: 1,
106
107
  trackedEntity: playerEntity,
107
108
  })).spawn(world);
108
- };
109
+ });
109
110
 
110
111
  // Despawn all player entities when a player leaves the game.
111
- world.onPlayerLeave = player => {
112
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
112
113
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
113
- };
114
+ });
114
115
 
115
116
  // Play some music on game start
116
117
  (new Audio({
@@ -3,6 +3,7 @@ import {
3
3
  Entity,
4
4
  PathfindingEntityController,
5
5
  PlayerEntity,
6
+ PlayerEvent,
6
7
  Quaternion,
7
8
  RigidBodyType,
8
9
  ColliderShape,
@@ -92,7 +93,7 @@ startServer(world => {
92
93
  });
93
94
 
94
95
  // Spawn a player entity when a player joins the game.
95
- world.onPlayerJoin = player => {
96
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
96
97
  const playerEntity = new PlayerEntity({
97
98
  player,
98
99
  name: 'Player',
@@ -104,10 +105,10 @@ startServer(world => {
104
105
  world.chatManager.sendPlayerMessage(player, 'To make the zombie pathfind to you, enter: /pathfind', '00FF00');
105
106
 
106
107
  playerEntity.spawn(world, { x: 4, y: 3, z: 1 });
107
- };
108
+ });
108
109
 
109
110
  // Despawn all player entities when a player leaves the game.
110
- world.onPlayerLeave = player => {
111
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
111
112
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
112
- };
113
+ });
113
114
  });
@@ -18,13 +18,16 @@
18
18
 
19
19
  import {
20
20
  Audio,
21
+ BaseEntityControllerEvent,
21
22
  BlockType,
22
23
  PlayerCameraMode,
23
24
  ColliderShape,
24
25
  CollisionGroup,
25
26
  PlayerEntityController,
26
27
  Entity,
28
+ EntityEvent,
27
29
  PlayerEntity,
30
+ PlayerEvent,
28
31
  RigidBodyType,
29
32
  SimpleEntityController,
30
33
  Vector3,
@@ -38,6 +41,7 @@ import type {
38
41
  PlayerCameraOrientation,
39
42
  QuaternionLike,
40
43
  Vector3Like,
44
+ EventPayloads,
41
45
  } from 'hytopia';
42
46
 
43
47
  import map from './assets/map.json';
@@ -99,7 +103,7 @@ startServer(world => { // Perform our game setup logic in the startServer init c
99
103
  world.loadMap(map);
100
104
 
101
105
  // Setup Player Join & Spawn Controlled Entity
102
- world.onPlayerJoin = player => {
106
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
103
107
  const playerEntity = new PlayerEntity({ // Create an entity our newly joined player controls
104
108
  player,
105
109
  name: 'Player',
@@ -121,7 +125,7 @@ startServer(world => { // Perform our game setup logic in the startServer init c
121
125
  playerEntity.spawn(world, randomSpawnCoordinate);
122
126
 
123
127
  // We need to do some custom logic for player inputs, so let's assign custom onTick handler to the default player controller.
124
- playerEntity.controller!.onTickWithPlayerInput = onTickWithPlayerInput;
128
+ playerEntity.controller!.on(BaseEntityControllerEvent.TICK_WITH_PLAYER_INPUT, onTickWithPlayerInput);
125
129
 
126
130
  // Set custom collision groups for the player entity, this is so we can reference the PLAYER collision group
127
131
  // specifically in enemy collision sensors.
@@ -143,10 +147,10 @@ startServer(world => { // Perform our game setup logic in the startServer init c
143
147
  if (!started) {
144
148
  chatManager.sendBroadcastMessage('Enter command /start to start the game!', 'FFFFFF');
145
149
  }
146
- };
150
+ });
147
151
 
148
152
  // Setup Player Leave & Despawn Controlled Entity
149
- world.onPlayerLeave = player => {
153
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
150
154
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => {
151
155
  entity.despawn();
152
156
  });
@@ -154,7 +158,7 @@ startServer(world => { // Perform our game setup logic in the startServer init c
154
158
  playerCount--;
155
159
 
156
160
  chatManager.sendBroadcastMessage(`Player ${player.username} has left the game!`, 'FFFFFF');
157
- };
161
+ });
158
162
 
159
163
  // Spawn Payload
160
164
  spawnPayloadEntity(world);
@@ -229,13 +233,13 @@ function spawnBullet(world: World, coordinate: Vector3Like, direction: Vector3Li
229
233
  },
230
234
  });
231
235
 
232
- bullet.onBlockCollision = (bullet: Entity, block: BlockType, started: boolean) => { // If the bullet hits a block, despawn it
236
+ bullet.on(EntityEvent.BLOCK_COLLISION, ({ started }) => { // If the bullet hits a block, despawn it
233
237
  if (started) {
234
238
  bullet.despawn();
235
239
  }
236
- };
240
+ });
237
241
 
238
- bullet.onEntityCollision = (bullet: Entity, otherEntity: Entity, started: boolean) => { // If the bullet hits an enemy, deal damage if it is a Spider
242
+ bullet.on(EntityEvent.ENTITY_COLLISION, ({ otherEntity, started }) => { // If the bullet hits an enemy, deal damage if it is a Spider
239
243
  if (!started || otherEntity.name !== 'Spider') {
240
244
  return;
241
245
  }
@@ -261,7 +265,7 @@ function spawnBullet(world: World, coordinate: Vector3Like, direction: Vector3Li
261
265
  }
262
266
 
263
267
  bullet.despawn();
264
- };
268
+ });
265
269
 
266
270
  bullet.spawn(world, coordinate);
267
271
 
@@ -317,7 +321,7 @@ function spawnPayloadEntity(world: World) {
317
321
  },
318
322
  });
319
323
 
320
- payloadEntity.onTick = onTickPathfindPayload; // Use our own basic pathfinding function each tick of the game for the payload.
324
+ payloadEntity.on(EntityEvent.TICK, onTickPathfindPayload);
321
325
  payloadEntity.spawn(world, PAYLOAD_SPAWN_COORDINATE); // Spawn the payload at the designated spawn coordinate
322
326
 
323
327
  (new Audio({ // Play a looped idle sound that follows the payload spatially
@@ -367,19 +371,16 @@ function spawnSpider(world: World, coordinate: Vector3Like) {
367
371
  },
368
372
  });
369
373
 
370
- spider.onTick = (entity: Entity, tickDeltaMs: number) => onTickPathfindEnemy( // Use our own basic pathfinding function each tick of the game for the enemy
371
- entity,
372
- targetPlayers,
373
- baseSpeed * randomScaleMultiplier,
374
- tickDeltaMs,
375
- );
374
+ spider.on(EntityEvent.TICK, ({ entity, tickDeltaMs }) => {
375
+ onTickPathfindEnemy(entity, targetPlayers, baseSpeed * randomScaleMultiplier, tickDeltaMs);
376
+ });
376
377
 
377
- spider.onEntityCollision = (spider: Entity, entity: Entity, started: boolean) => { // If the spider hits a player, deal damage and apply knockback
378
- if (started && entity instanceof PlayerEntity && entity.isSpawned) {
378
+ spider.on(EntityEvent.ENTITY_COLLISION, ({ otherEntity, started }) => {
379
+ if (started && otherEntity instanceof PlayerEntity && otherEntity.isSpawned) {
379
380
  const spiderDirection = spider.directionFromRotation;
380
381
  const knockback = 4 * randomScaleMultiplier;
381
382
 
382
- entity.applyImpulse({
383
+ otherEntity.applyImpulse({
383
384
  x: -spiderDirection.x * knockback,
384
385
  y: 4,
385
386
  z: -spiderDirection.z * knockback,
@@ -392,9 +393,9 @@ function spawnSpider(world: World, coordinate: Vector3Like) {
392
393
  referenceDistance: 8,
393
394
  })).play(world);
394
395
 
395
- damagePlayer(entity);
396
+ damagePlayer(otherEntity);
396
397
  }
397
- };
398
+ });
398
399
 
399
400
  spider.spawn(world, coordinate);
400
401
 
@@ -402,7 +403,8 @@ function spawnSpider(world: World, coordinate: Vector3Like) {
402
403
  enemyHealth[spider.id!] = 2 * Math.round(randomScaleMultiplier);
403
404
  }
404
405
 
405
- function onTickPathfindPayload(entity: Entity) { // Movement logic for the payload
406
+ function onTickPathfindPayload(payload: EventPayloads[EntityEvent.TICK]) { // Movement logic for the payload
407
+ const entity = payload.entity;
406
408
  const speed = started // Set the payload speed relative to the number of players in the payload sensor
407
409
  ? Math.max(Math.min(PAYLOAD_PER_PLAYER_SPEED * payloadPlayerEntityCount, PAYLOAD_MAX_SPEED), 0)
408
410
  : 0;
@@ -472,7 +474,9 @@ function onTickPathfindEnemy(entity: Entity, targetPlayers: Set<PlayerEntity>, s
472
474
  enemyPathfindAccumulators[entityId]++;
473
475
  }
474
476
 
475
- function onTickWithPlayerInput(this: PlayerEntityController, entity: PlayerEntity, input: PlayerInput, cameraOrientation: PlayerCameraOrientation, _deltaTimeMs: number) {
477
+ function onTickWithPlayerInput(payload: EventPayloads[BaseEntityControllerEvent.TICK_WITH_PLAYER_INPUT]) {
478
+ const { entity, input, cameraOrientation } = payload;
479
+
476
480
  if (!entity.world) return;
477
481
 
478
482
  if (input.ml) {
@@ -4,11 +4,13 @@ import {
4
4
  ColliderShape,
5
5
  BlockType,
6
6
  Entity,
7
+ EntityEvent,
7
8
  GameServer,
8
9
  SceneUI,
9
10
  startServer,
10
11
  Player,
11
12
  PlayerEntity,
13
+ PlayerEvent,
12
14
  RigidBodyType,
13
15
  SimpleEntityController,
14
16
  World,
@@ -51,8 +53,8 @@ startServer(world => {
51
53
  // world.simulation.enableDebugRendering(true);
52
54
 
53
55
  world.loadMap(worldMap);
54
- world.onPlayerJoin = player => onPlayerJoin(world, player);
55
- world.onPlayerLeave = player => onPlayerLeave(world, player);
56
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => onPlayerJoin(world, player));
57
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => onPlayerLeave(world, player));
56
58
 
57
59
  setupJoinNPC(world);
58
60
  startBlockSpawner(world);
@@ -180,7 +182,7 @@ function startBlockSpawner(world: World) {
180
182
  },
181
183
  });
182
184
 
183
- blockEntity.onTick = () => {
185
+ blockEntity.on(EntityEvent.TICK, () => {
184
186
  if (blockEntity.isSpawned && blockEntity.position.z > GAME_BLOCK_DESPAWN_Z) {
185
187
  // Make it "fall" out of the world for a nice effect and prevent
186
188
  // player collision platforming sensors from not getting their off
@@ -191,7 +193,7 @@ function startBlockSpawner(world: World) {
191
193
  if (blockEntity.isSpawned && blockEntity.position.y < -5) {
192
194
  blockEntity.despawn();
193
195
  }
194
- };
196
+ });
195
197
 
196
198
  blockEntity.spawn(world, spawnPoint);
197
199
 
@@ -268,12 +270,12 @@ function onPlayerJoin(world: World, player: Player) {
268
270
  modelScale: 0.5,
269
271
  });
270
272
 
271
- playerEntity.onTick = () => {
273
+ playerEntity.on(EntityEvent.TICK, () => {
272
274
  if (playerEntity.position.y < -3 || playerEntity.position.y > 10) {
273
275
  // Assume the player has fallen off the map or shot over the wall
274
276
  endGame(playerEntity);
275
277
  }
276
- };
278
+ });
277
279
 
278
280
  // Spawn with a random X coordinate to spread players out a bit.
279
281
  playerEntity.spawn(world, getRandomSpawnCoordinate());