hytopia 0.2.11 → 0.3.0-dev.3

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 (527) hide show
  1. package/boilerplate/index.ts +17 -9
  2. package/docs/server.audio.md +7 -1
  3. package/docs/{server.audioeventtype.md → server.audioevent.md} +4 -4
  4. package/docs/server.audioeventpayloads._audio.pause_.md +15 -0
  5. package/docs/server.audioeventpayloads._audio.play_.md +15 -0
  6. package/docs/server.audioeventpayloads._audio.play_restart_.md +15 -0
  7. package/docs/server.audioeventpayloads._audio.set_attached_to_entity_.md +16 -0
  8. package/docs/server.audioeventpayloads._audio.set_detune_.md +16 -0
  9. package/docs/server.audioeventpayloads._audio.set_distortion_.md +16 -0
  10. package/docs/server.audioeventpayloads._audio.set_playback_rate_.md +16 -0
  11. package/docs/server.audioeventpayloads._audio.set_position_.md +16 -0
  12. package/docs/server.audioeventpayloads._audio.set_reference_distance_.md +16 -0
  13. package/docs/server.audioeventpayloads._audio.set_volume_.md +16 -0
  14. package/docs/server.audioeventpayloads.md +228 -0
  15. package/docs/server.baseentitycontroller.md +4 -138
  16. package/docs/server.baseentitycontrollerevent.md +117 -0
  17. package/docs/server.baseentitycontrollereventpayloads.attach.md +15 -0
  18. package/docs/server.baseentitycontrollereventpayloads.despawn.md +15 -0
  19. package/docs/server.baseentitycontrollereventpayloads.detach.md +15 -0
  20. package/docs/server.baseentitycontrollereventpayloads.md +152 -0
  21. package/docs/server.baseentitycontrollereventpayloads.spawn.md +15 -0
  22. package/docs/server.baseentitycontrollereventpayloads.tick.md +16 -0
  23. package/docs/server.baseentitycontrollereventpayloads.tickwithplayerinput.md +18 -0
  24. package/docs/server.blocktype.md +7 -39
  25. package/docs/server.blocktypeevent.md +61 -0
  26. package/docs/server.blocktypeeventpayloads._block_type.entity_collision_.md +19 -0
  27. package/docs/server.blocktypeeventpayloads._block_type.entity_contact_force_.md +17 -0
  28. package/docs/server.blocktypeeventpayloads.md +76 -0
  29. package/docs/server.blocktyperegistry.md +7 -1
  30. package/docs/{server.blocktyperegistryeventtype.md → server.blocktyperegistryevent.md} +4 -4
  31. package/docs/server.blocktyperegistryeventpayloads._block_type_registry.register_block_type_.md +17 -0
  32. package/docs/server.blocktyperegistryeventpayloads.md +57 -0
  33. package/docs/server.chatevent.md +61 -0
  34. package/docs/server.chateventpayloads._chat.broadcast_message_.md +17 -0
  35. package/docs/server.chateventpayloads._chat.player_message_.md +17 -0
  36. package/docs/server.chateventpayloads.md +76 -0
  37. package/docs/server.chatmanager.md +6 -45
  38. package/docs/server.chunk.md +7 -1
  39. package/docs/{server.chunkeventtype.md → server.chunkevent.md} +4 -4
  40. package/docs/server.chunkeventpayloads._chunk.despawn_.md +15 -0
  41. package/docs/server.chunkeventpayloads._chunk.set_block_.md +18 -0
  42. package/docs/server.chunkeventpayloads._chunk.spawn_.md +15 -0
  43. package/docs/server.chunkeventpayloads.md +95 -0
  44. package/docs/server.collider.md +2 -1
  45. package/docs/server.entity.md +4 -133
  46. package/docs/{server.entityeventtype.md → server.entityevent.md} +74 -4
  47. package/docs/server.entityeventpayloads._entity.block_collision_.md +19 -0
  48. package/docs/server.entityeventpayloads._entity.block_contact_force_.md +17 -0
  49. package/docs/server.entityeventpayloads._entity.despawn_.md +15 -0
  50. package/docs/server.entityeventpayloads._entity.entity_collision_.md +19 -0
  51. package/docs/server.entityeventpayloads._entity.entity_contact_force_.md +17 -0
  52. package/docs/server.entityeventpayloads._entity.set_model_animations_playback_rate_.md +16 -0
  53. package/docs/server.entityeventpayloads._entity.set_model_hidden_nodes_.md +16 -0
  54. package/docs/server.entityeventpayloads._entity.set_opacity_.md +16 -0
  55. package/docs/server.entityeventpayloads._entity.set_parent_.md +17 -0
  56. package/docs/server.entityeventpayloads._entity.set_tint_color_.md +16 -0
  57. package/docs/server.entityeventpayloads._entity.spawn_.md +15 -0
  58. package/docs/server.entityeventpayloads._entity.start_model_looped_animations_.md +16 -0
  59. package/docs/server.entityeventpayloads._entity.start_model_oneshot_animations_.md +16 -0
  60. package/docs/server.entityeventpayloads._entity.stop_model_animations_.md +16 -0
  61. package/docs/server.entityeventpayloads._entity.tick_.md +16 -0
  62. package/docs/server.entityeventpayloads._entity.update_position_.md +16 -0
  63. package/docs/server.entityeventpayloads._entity.update_rotation_.md +16 -0
  64. package/docs/server.entityeventpayloads.md +361 -0
  65. package/docs/server.eventpayloads.md +15 -0
  66. package/docs/server.eventrouter.emit.md +4 -4
  67. package/docs/server.eventrouter.emit_1.md +63 -0
  68. package/docs/server.eventrouter.emitwithglobal.md +69 -0
  69. package/docs/server.eventrouter.emitwithglobal_1.md +63 -0
  70. package/docs/server.eventrouter.emitwithworld.md +85 -0
  71. package/docs/server.eventrouter.emitwithworld_1.md +77 -0
  72. package/docs/{server.eventrouter.prependon.md → server.eventrouter.final_1.md} +4 -10
  73. package/docs/server.eventrouter.haslisteners.md +55 -0
  74. package/docs/server.eventrouter.listenercount.md +55 -0
  75. package/docs/server.eventrouter.listeners.md +55 -0
  76. package/docs/server.eventrouter.md +40 -95
  77. package/docs/server.eventrouter.off.md +3 -3
  78. package/docs/{server.eventrouter.prependonce.md → server.eventrouter.off_1.md} +4 -10
  79. package/docs/server.eventrouter.offall.md +4 -4
  80. package/docs/server.eventrouter.on.md +3 -3
  81. package/docs/server.eventrouter.on_1.md +63 -0
  82. package/docs/server.eventrouter.once.md +3 -3
  83. package/docs/server.eventrouter.once_1.md +63 -0
  84. package/docs/{server.gameservereventtype.md → server.gameserverevent.md} +4 -4
  85. package/docs/server.gameservereventpayloads._gameserver.start_.md +15 -0
  86. package/docs/server.gameservereventpayloads._gameserver.stop_.md +15 -0
  87. package/docs/server.gameservereventpayloads.md +76 -0
  88. package/docs/server.light.md +7 -1
  89. package/docs/{server.lighteventtype.md → server.lightevent.md} +4 -18
  90. package/docs/server.lighteventpayloads._light.despawn_.md +15 -0
  91. package/docs/server.lighteventpayloads._light.set_angle_.md +16 -0
  92. package/docs/server.lighteventpayloads._light.set_attached_to_entity_.md +16 -0
  93. package/docs/server.lighteventpayloads._light.set_color_.md +16 -0
  94. package/docs/server.lighteventpayloads._light.set_distance_.md +16 -0
  95. package/docs/server.lighteventpayloads._light.set_intensity_.md +16 -0
  96. package/docs/server.lighteventpayloads._light.set_offset_.md +16 -0
  97. package/docs/server.lighteventpayloads._light.set_penumbra_.md +16 -0
  98. package/docs/server.lighteventpayloads._light.set_position_.md +16 -0
  99. package/docs/server.lighteventpayloads._light.set_tracked_entity_.md +16 -0
  100. package/docs/server.lighteventpayloads._light.set_tracked_position_.md +16 -0
  101. package/docs/server.lighteventpayloads._light.spawn_.md +15 -0
  102. package/docs/server.lighteventpayloads.md +266 -0
  103. package/docs/server.md +201 -84
  104. package/docs/server.modelregistry.md +38 -0
  105. package/docs/server.modelregistry.optimize.md +13 -0
  106. package/docs/server.modelregistry.optimizeeverystart.md +13 -0
  107. package/docs/server.player.md +7 -1
  108. package/docs/server.playercamera.md +7 -1
  109. package/docs/{server.playercameraeventtype.md → server.playercameraevent.md} +4 -4
  110. package/docs/server.playercameraeventpayloads._player_camera.look_at_entity_.md +16 -0
  111. package/docs/server.playercameraeventpayloads._player_camera.look_at_position_.md +16 -0
  112. package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_entity_.md +16 -0
  113. package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_position_.md +16 -0
  114. package/docs/server.playercameraeventpayloads._player_camera.set_film_offset_.md +16 -0
  115. package/docs/server.playercameraeventpayloads._player_camera.set_forward_offset_.md +16 -0
  116. package/docs/server.playercameraeventpayloads._player_camera.set_fov_.md +16 -0
  117. package/docs/server.playercameraeventpayloads._player_camera.set_mode_.md +16 -0
  118. package/docs/server.playercameraeventpayloads._player_camera.set_model_hidden_nodes_.md +16 -0
  119. package/docs/server.playercameraeventpayloads._player_camera.set_offset_.md +16 -0
  120. package/docs/server.playercameraeventpayloads._player_camera.set_tracked_entity_.md +16 -0
  121. package/docs/server.playercameraeventpayloads._player_camera.set_tracked_position_.md +16 -0
  122. package/docs/server.playercameraeventpayloads._player_camera.set_zoom_.md +16 -0
  123. package/docs/server.playercameraeventpayloads.md +285 -0
  124. package/docs/{server.playereventtype.md → server.playerevent.md} +4 -4
  125. package/docs/server.playereventpayloads._player.chat_message_send_.md +16 -0
  126. package/docs/server.playereventpayloads._player.joined_world_.md +16 -0
  127. package/docs/server.playereventpayloads._player.left_world_.md +16 -0
  128. package/docs/server.playereventpayloads._player.request_sync_.md +17 -0
  129. package/docs/server.playereventpayloads.md +114 -0
  130. package/docs/server.playermanager.md +4 -0
  131. package/docs/server.playermanagereventpayloads._player_manager.player_connected_.md +15 -0
  132. package/docs/server.playermanagereventpayloads._player_manager.player_disconnected_.md +15 -0
  133. package/docs/server.playermanagereventpayloads.md +76 -0
  134. package/docs/server.playerui.md +6 -20
  135. package/docs/{server.playeruieventtype.md → server.playeruievent.md} +18 -4
  136. package/docs/server.playeruieventpayloads._player_ui.data_.md +16 -0
  137. package/docs/server.playeruieventpayloads._player_ui.load_.md +16 -0
  138. package/docs/server.playeruieventpayloads._player_ui.lock_pointer_.md +16 -0
  139. package/docs/server.playeruieventpayloads._player_ui.send_data_.md +16 -0
  140. package/docs/server.playeruieventpayloads.md +114 -0
  141. package/docs/server.rigidbody.md +2 -1
  142. package/docs/server.sceneui.md +7 -1
  143. package/docs/server.sceneuievent.md +131 -0
  144. package/docs/server.sceneuieventpayloads._scene_ui.load_.md +15 -0
  145. package/docs/server.sceneuieventpayloads._scene_ui.set_attached_to_entity_.md +16 -0
  146. package/docs/server.sceneuieventpayloads._scene_ui.set_offset_.md +16 -0
  147. package/docs/server.sceneuieventpayloads._scene_ui.set_position_.md +16 -0
  148. package/docs/server.sceneuieventpayloads._scene_ui.set_state_.md +16 -0
  149. package/docs/server.sceneuieventpayloads._scene_ui.set_view_distance_.md +16 -0
  150. package/docs/server.sceneuieventpayloads._scene_ui.unload_.md +15 -0
  151. package/docs/server.sceneuieventpayloads.md +171 -0
  152. package/docs/server.simulation.md +6 -1
  153. package/docs/server.simulationevent.md +89 -0
  154. package/docs/server.simulationeventpayloads._simulation.debug_raycast_.md +19 -0
  155. package/docs/server.simulationeventpayloads._simulation.debug_render_.md +17 -0
  156. package/docs/server.simulationeventpayloads._simulation.step_end_.md +16 -0
  157. package/docs/server.simulationeventpayloads._simulation.step_start_.md +16 -0
  158. package/docs/server.simulationeventpayloads.md +114 -0
  159. package/docs/server.world.md +7 -60
  160. package/docs/server.worldevent.md +131 -0
  161. package/docs/server.worldeventpayloads._world.set_ambient_light_color_.md +16 -0
  162. package/docs/server.worldeventpayloads._world.set_ambient_light_intensity_.md +16 -0
  163. package/docs/server.worldeventpayloads._world.set_directional_light_color_.md +16 -0
  164. package/docs/server.worldeventpayloads._world.set_directional_light_intensity_.md +16 -0
  165. package/docs/server.worldeventpayloads._world.set_directional_light_position_.md +16 -0
  166. package/docs/server.worldeventpayloads._world.start_.md +16 -0
  167. package/docs/server.worldeventpayloads._world.stop_.md +16 -0
  168. package/docs/server.worldeventpayloads.md +171 -0
  169. package/docs/server.worldloop.md +6 -1
  170. package/docs/{server.worldloopeventtype.md → server.worldloopevent.md} +4 -4
  171. package/docs/server.worldloopeventpayloads._world_loop.start_.md +15 -0
  172. package/docs/server.worldloopeventpayloads._world_loop.stop_.md +15 -0
  173. package/docs/server.worldloopeventpayloads._world_loop.tick_end_.md +16 -0
  174. package/docs/server.worldloopeventpayloads._world_loop.tick_error_.md +16 -0
  175. package/docs/server.worldloopeventpayloads._world_loop.tick_start_.md +16 -0
  176. package/docs/server.worldloopeventpayloads.md +133 -0
  177. package/examples/ai-agents/index.ts +9 -13
  178. package/examples/ai-agents/src/BaseAgent.ts +4 -2
  179. package/examples/ai-agents/src/behaviors/FishingBehavior.ts +2 -2
  180. package/examples/ai-agents/src/behaviors/FollowBehavior.ts +3 -3
  181. package/examples/ai-agents/src/behaviors/MiningBehavior.ts +2 -2
  182. package/examples/ai-agents/src/behaviors/PathfindingBehavior.ts +7 -7
  183. package/examples/big-world/index.ts +5 -4
  184. package/examples/block-entity/index.ts +12 -10
  185. package/examples/child-entity/index.ts +5 -4
  186. package/examples/custom-ui/index.ts +9 -7
  187. package/examples/entity-controller/index.ts +5 -4
  188. package/examples/entity-spawn/index.ts +8 -6
  189. package/examples/hole-in-wall-game/index.ts +9 -7
  190. package/examples/lighting/index.ts +5 -4
  191. package/examples/pathfinding/index.ts +5 -4
  192. package/examples/payload-game/assets/models/.optimized/bullet/baseColor.png +0 -0
  193. package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.bin +0 -0
  194. package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.gltf +308 -0
  195. package/examples/payload-game/assets/models/.optimized/bullet/bullet.bin +0 -0
  196. package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf +142 -0
  197. package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf.md5 +1 -0
  198. package/examples/payload-game/assets/models/.optimized/payload/baseColor.png +0 -0
  199. package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.bin +0 -0
  200. package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.gltf +2868 -0
  201. package/examples/payload-game/assets/models/.optimized/payload/payload.bin +0 -0
  202. package/examples/payload-game/assets/models/.optimized/payload/payload.gltf +1109 -0
  203. package/examples/payload-game/assets/models/.optimized/payload/payload.gltf.md5 +1 -0
  204. package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_1.png +0 -0
  205. package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_2.png +0 -0
  206. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.bin +0 -0
  207. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.gltf +8572 -0
  208. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.bin +0 -0
  209. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf +7849 -0
  210. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf.md5 +1 -0
  211. package/examples/payload-game/assets/models/.optimized/raygun/baseColor_1.png +0 -0
  212. package/examples/payload-game/assets/models/.optimized/raygun/baseColor_2.png +0 -0
  213. package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.bin +0 -0
  214. package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.gltf +7752 -0
  215. package/examples/payload-game/assets/models/.optimized/raygun/raygun.bin +0 -0
  216. package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf +832 -0
  217. package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf.md5 +1 -0
  218. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_1.png +0 -0
  219. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_2.png +0 -0
  220. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_3.png +0 -0
  221. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_4.png +0 -0
  222. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
  223. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
  224. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.bin +0 -0
  225. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf +7774 -0
  226. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf.md5 +1 -0
  227. package/examples/payload-game/assets/models/raygun.gltf +1 -0
  228. package/examples/payload-game/assets/models/soldier-player.gltf +1 -0
  229. package/examples/payload-game/index.ts +49 -26
  230. package/examples/wall-dodge-game/index.ts +8 -6
  231. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.bin +0 -0
  232. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.gltf +806 -0
  233. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.bin +0 -0
  234. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.gltf +15 -686
  235. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.bin +0 -0
  236. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.gltf +1633 -0
  237. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.bin +0 -0
  238. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.gltf +86 -1578
  239. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.bin +0 -0
  240. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.gltf +2480 -0
  241. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.bin +0 -0
  242. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.gltf +88 -2427
  243. package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.bin +0 -0
  244. package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.gltf +136 -0
  245. package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole.gltf +1 -1
  246. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.bin +0 -0
  247. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.gltf +831 -0
  248. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.bin +0 -0
  249. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.gltf +16 -706
  250. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.bin +0 -0
  251. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.gltf +4025 -0
  252. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.bin +0 -0
  253. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.gltf +136 -3944
  254. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.bin +0 -0
  255. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.gltf +196 -0
  256. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.bin +0 -0
  257. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.gltf +57 -28
  258. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.bin +0 -0
  259. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.gltf +3412 -0
  260. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.bin +0 -0
  261. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.gltf +133 -3323
  262. package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47-named-nodes.glb +0 -0
  263. package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47.glb +0 -0
  264. package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15-named-nodes.glb +0 -0
  265. package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15.glb +0 -0
  266. package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol-named-nodes.glb +0 -0
  267. package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol.glb +0 -0
  268. package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun-named-nodes.glb +0 -0
  269. package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun.glb +0 -0
  270. package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol-named-nodes.glb +0 -0
  271. package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol.glb +0 -0
  272. package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun-named-nodes.glb +0 -0
  273. package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun.glb +0 -0
  274. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.bin +0 -0
  275. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.gltf +10037 -0
  276. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.bin +0 -0
  277. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.gltf +1262 -4533
  278. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
  279. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
  280. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.bin +0 -0
  281. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.gltf +529 -434
  282. package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.bin +0 -0
  283. package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.gltf +136 -0
  284. package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace.gltf +1 -1
  285. package/examples/zombies-fps/classes/EnemyEntity.ts +10 -4
  286. package/examples/zombies-fps/classes/GamePlayerEntity.ts +7 -2
  287. package/examples/zombies-fps/classes/enemies/RipperEntity.ts +2 -1
  288. package/examples/zombies-fps/index.ts +5 -5
  289. package/package.json +5 -2
  290. package/server.api.json +9458 -7736
  291. package/server.d.ts +765 -486
  292. package/server.js +132 -90
  293. package/tsdoc-metadata.json +1 -1
  294. package/docs/server.audioeventpayload.md +0 -118
  295. package/docs/server.audioeventpayload.pause.audio.md +0 -11
  296. package/docs/server.audioeventpayload.pause.md +0 -53
  297. package/docs/server.audioeventpayload.play.audio.md +0 -11
  298. package/docs/server.audioeventpayload.play.md +0 -53
  299. package/docs/server.audioeventpayload.playrestart.audio.md +0 -11
  300. package/docs/server.audioeventpayload.playrestart.md +0 -53
  301. package/docs/server.audioeventpayload.setattachedtoentity.audio.md +0 -11
  302. package/docs/server.audioeventpayload.setattachedtoentity.entity.md +0 -11
  303. package/docs/server.audioeventpayload.setattachedtoentity.md +0 -70
  304. package/docs/server.audioeventpayload.setdetune.audio.md +0 -11
  305. package/docs/server.audioeventpayload.setdetune.detune.md +0 -11
  306. package/docs/server.audioeventpayload.setdetune.md +0 -70
  307. package/docs/server.audioeventpayload.setdistortion.audio.md +0 -11
  308. package/docs/server.audioeventpayload.setdistortion.distortion.md +0 -11
  309. package/docs/server.audioeventpayload.setdistortion.md +0 -70
  310. package/docs/server.audioeventpayload.setplaybackrate.audio.md +0 -11
  311. package/docs/server.audioeventpayload.setplaybackrate.md +0 -70
  312. package/docs/server.audioeventpayload.setplaybackrate.playbackrate.md +0 -11
  313. package/docs/server.audioeventpayload.setposition.audio.md +0 -11
  314. package/docs/server.audioeventpayload.setposition.md +0 -70
  315. package/docs/server.audioeventpayload.setposition.position.md +0 -11
  316. package/docs/server.audioeventpayload.setreferencedistance.audio.md +0 -11
  317. package/docs/server.audioeventpayload.setreferencedistance.md +0 -70
  318. package/docs/server.audioeventpayload.setreferencedistance.referencedistance.md +0 -11
  319. package/docs/server.audioeventpayload.setvolume.audio.md +0 -11
  320. package/docs/server.audioeventpayload.setvolume.md +0 -70
  321. package/docs/server.audioeventpayload.setvolume.volume.md +0 -11
  322. package/docs/server.baseentitycontroller.onattach.md +0 -13
  323. package/docs/server.baseentitycontroller.ondespawn.md +0 -13
  324. package/docs/server.baseentitycontroller.ondetach.md +0 -13
  325. package/docs/server.baseentitycontroller.onspawn.md +0 -13
  326. package/docs/server.baseentitycontroller.ontick.md +0 -13
  327. package/docs/server.baseentitycontroller.ontickwithplayerinput.md +0 -13
  328. package/docs/server.blocktype.onentitycollision.md +0 -18
  329. package/docs/server.blocktype.onentitycontactforce.md +0 -18
  330. package/docs/server.blocktyperegistryeventpayload.md +0 -37
  331. package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktype.md +0 -11
  332. package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktyperegistry.md +0 -11
  333. package/docs/server.blocktyperegistryeventpayload.registerblocktype.id.md +0 -11
  334. package/docs/server.blocktyperegistryeventpayload.registerblocktype.md +0 -87
  335. package/docs/server.chateventpayload.md +0 -46
  336. package/docs/server.chateventpayload.sendbroadcastmessage.color.md +0 -11
  337. package/docs/server.chateventpayload.sendbroadcastmessage.md +0 -91
  338. package/docs/server.chateventpayload.sendbroadcastmessage.message.md +0 -11
  339. package/docs/server.chateventpayload.sendbroadcastmessage.playerid.md +0 -11
  340. package/docs/server.chateventpayload.sendplayermessage.color.md +0 -11
  341. package/docs/server.chateventpayload.sendplayermessage.md +0 -89
  342. package/docs/server.chateventpayload.sendplayermessage.message.md +0 -11
  343. package/docs/server.chateventpayload.sendplayermessage.player.md +0 -11
  344. package/docs/server.chateventtype.md +0 -61
  345. package/docs/server.chatmanager.onbroadcastmessage.md +0 -13
  346. package/docs/server.chunkeventpayload.despawn.chunk.md +0 -11
  347. package/docs/server.chunkeventpayload.despawn.md +0 -53
  348. package/docs/server.chunkeventpayload.md +0 -55
  349. package/docs/server.chunkeventpayload.setblock.blocktypeid.md +0 -11
  350. package/docs/server.chunkeventpayload.setblock.chunk.md +0 -11
  351. package/docs/server.chunkeventpayload.setblock.globalcoordinate.md +0 -11
  352. package/docs/server.chunkeventpayload.setblock.localcoordinate.md +0 -11
  353. package/docs/server.chunkeventpayload.setblock.md +0 -104
  354. package/docs/server.chunkeventpayload.spawn.chunk.md +0 -11
  355. package/docs/server.chunkeventpayload.spawn.md +0 -53
  356. package/docs/server.entity.onblockcollision.md +0 -18
  357. package/docs/server.entity.onblockcontactforce.md +0 -18
  358. package/docs/server.entity.ondespawn.md +0 -13
  359. package/docs/server.entity.onentitycollision.md +0 -18
  360. package/docs/server.entity.onentitycontactforce.md +0 -18
  361. package/docs/server.entity.onspawn.md +0 -13
  362. package/docs/server.entity.ontick.md +0 -13
  363. package/docs/server.entityeventpayload.despawn.entity.md +0 -11
  364. package/docs/server.entityeventpayload.despawn.md +0 -53
  365. package/docs/server.entityeventpayload.md +0 -136
  366. package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.entity.md +0 -11
  367. package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.md +0 -70
  368. package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.playbackrate.md +0 -11
  369. package/docs/server.entityeventpayload.setmodelhiddennodes.entity.md +0 -11
  370. package/docs/server.entityeventpayload.setmodelhiddennodes.md +0 -70
  371. package/docs/server.entityeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
  372. package/docs/server.entityeventpayload.setopacity.entity.md +0 -11
  373. package/docs/server.entityeventpayload.setopacity.md +0 -70
  374. package/docs/server.entityeventpayload.setopacity.opacity.md +0 -11
  375. package/docs/server.entityeventpayload.setparent.entity.md +0 -11
  376. package/docs/server.entityeventpayload.setparent.md +0 -87
  377. package/docs/server.entityeventpayload.setparent.parent.md +0 -11
  378. package/docs/server.entityeventpayload.setparent.parentnodename.md +0 -11
  379. package/docs/server.entityeventpayload.settintcolor.entity.md +0 -11
  380. package/docs/server.entityeventpayload.settintcolor.md +0 -70
  381. package/docs/server.entityeventpayload.settintcolor.tintcolor.md +0 -11
  382. package/docs/server.entityeventpayload.spawn.entity.md +0 -11
  383. package/docs/server.entityeventpayload.spawn.md +0 -53
  384. package/docs/server.entityeventpayload.startmodelloopedanimations.animations.md +0 -11
  385. package/docs/server.entityeventpayload.startmodelloopedanimations.entity.md +0 -11
  386. package/docs/server.entityeventpayload.startmodelloopedanimations.md +0 -70
  387. package/docs/server.entityeventpayload.startmodeloneshotanimations.animations.md +0 -11
  388. package/docs/server.entityeventpayload.startmodeloneshotanimations.entity.md +0 -11
  389. package/docs/server.entityeventpayload.startmodeloneshotanimations.md +0 -70
  390. package/docs/server.entityeventpayload.stopmodelanimations.animations.md +0 -11
  391. package/docs/server.entityeventpayload.stopmodelanimations.entity.md +0 -11
  392. package/docs/server.entityeventpayload.stopmodelanimations.md +0 -70
  393. package/docs/server.entityeventpayload.updateposition.entity.md +0 -11
  394. package/docs/server.entityeventpayload.updateposition.md +0 -70
  395. package/docs/server.entityeventpayload.updateposition.position.md +0 -11
  396. package/docs/server.entityeventpayload.updaterotation.entity.md +0 -11
  397. package/docs/server.entityeventpayload.updaterotation.md +0 -70
  398. package/docs/server.entityeventpayload.updaterotation.rotation.md +0 -11
  399. package/docs/server.eventrouter._constructor_.md +0 -49
  400. package/docs/server.eventrouter.logallevents.md +0 -13
  401. package/docs/server.eventrouter.logeventspayloads.md +0 -13
  402. package/docs/server.eventrouter.logignoreeventprefixes.md +0 -13
  403. package/docs/server.eventrouter.logignoreevents.md +0 -13
  404. package/docs/server.eventrouter.logunlistenedevents.md +0 -13
  405. package/docs/server.eventrouter.serverinstance.md +0 -13
  406. package/docs/server.gameservereventpayload.md +0 -46
  407. package/docs/server.gameservereventpayload.start.md +0 -53
  408. package/docs/server.gameservereventpayload.start.startedatms.md +0 -11
  409. package/docs/server.gameservereventpayload.stop.md +0 -53
  410. package/docs/server.gameservereventpayload.stop.stoppedatms.md +0 -11
  411. package/docs/server.lighteventpayload.despawn.light.md +0 -11
  412. package/docs/server.lighteventpayload.despawn.md +0 -53
  413. package/docs/server.lighteventpayload.md +0 -136
  414. package/docs/server.lighteventpayload.setangle.angle.md +0 -11
  415. package/docs/server.lighteventpayload.setangle.light.md +0 -11
  416. package/docs/server.lighteventpayload.setangle.md +0 -70
  417. package/docs/server.lighteventpayload.setattachedtoentity.entity.md +0 -11
  418. package/docs/server.lighteventpayload.setattachedtoentity.light.md +0 -11
  419. package/docs/server.lighteventpayload.setattachedtoentity.md +0 -70
  420. package/docs/server.lighteventpayload.setcolor.color.md +0 -11
  421. package/docs/server.lighteventpayload.setcolor.light.md +0 -11
  422. package/docs/server.lighteventpayload.setcolor.md +0 -70
  423. package/docs/server.lighteventpayload.setdistance.distance.md +0 -11
  424. package/docs/server.lighteventpayload.setdistance.light.md +0 -11
  425. package/docs/server.lighteventpayload.setdistance.md +0 -70
  426. package/docs/server.lighteventpayload.setintensity.intensity.md +0 -11
  427. package/docs/server.lighteventpayload.setintensity.light.md +0 -11
  428. package/docs/server.lighteventpayload.setintensity.md +0 -70
  429. package/docs/server.lighteventpayload.setoffset.light.md +0 -11
  430. package/docs/server.lighteventpayload.setoffset.md +0 -70
  431. package/docs/server.lighteventpayload.setoffset.offset.md +0 -11
  432. package/docs/server.lighteventpayload.setpenumbra.light.md +0 -11
  433. package/docs/server.lighteventpayload.setpenumbra.md +0 -70
  434. package/docs/server.lighteventpayload.setpenumbra.penumbra.md +0 -11
  435. package/docs/server.lighteventpayload.setposition.light.md +0 -11
  436. package/docs/server.lighteventpayload.setposition.md +0 -70
  437. package/docs/server.lighteventpayload.setposition.position.md +0 -11
  438. package/docs/server.lighteventpayload.settrackedentity.entity.md +0 -11
  439. package/docs/server.lighteventpayload.settrackedentity.light.md +0 -11
  440. package/docs/server.lighteventpayload.settrackedentity.md +0 -70
  441. package/docs/server.lighteventpayload.settrackedposition.light.md +0 -11
  442. package/docs/server.lighteventpayload.settrackedposition.md +0 -70
  443. package/docs/server.lighteventpayload.settrackedposition.position.md +0 -11
  444. package/docs/server.lighteventpayload.spawn.light.md +0 -11
  445. package/docs/server.lighteventpayload.spawn.md +0 -53
  446. package/docs/server.playercameraeventpayload.lookatentity.entity.md +0 -11
  447. package/docs/server.playercameraeventpayload.lookatentity.md +0 -70
  448. package/docs/server.playercameraeventpayload.lookatentity.playercamera.md +0 -11
  449. package/docs/server.playercameraeventpayload.lookatposition.md +0 -70
  450. package/docs/server.playercameraeventpayload.lookatposition.playercamera.md +0 -11
  451. package/docs/server.playercameraeventpayload.lookatposition.position.md +0 -11
  452. package/docs/server.playercameraeventpayload.md +0 -145
  453. package/docs/server.playercameraeventpayload.setattachedtoentity.entity.md +0 -11
  454. package/docs/server.playercameraeventpayload.setattachedtoentity.md +0 -70
  455. package/docs/server.playercameraeventpayload.setattachedtoentity.playercamera.md +0 -11
  456. package/docs/server.playercameraeventpayload.setattachedtoposition.md +0 -70
  457. package/docs/server.playercameraeventpayload.setattachedtoposition.playercamera.md +0 -11
  458. package/docs/server.playercameraeventpayload.setattachedtoposition.position.md +0 -11
  459. package/docs/server.playercameraeventpayload.setfilmoffset.filmoffset.md +0 -11
  460. package/docs/server.playercameraeventpayload.setfilmoffset.md +0 -70
  461. package/docs/server.playercameraeventpayload.setfilmoffset.playercamera.md +0 -11
  462. package/docs/server.playercameraeventpayload.setforwardoffset.forwardoffset.md +0 -11
  463. package/docs/server.playercameraeventpayload.setforwardoffset.md +0 -70
  464. package/docs/server.playercameraeventpayload.setforwardoffset.playercamera.md +0 -11
  465. package/docs/server.playercameraeventpayload.setfov.fov.md +0 -11
  466. package/docs/server.playercameraeventpayload.setfov.md +0 -70
  467. package/docs/server.playercameraeventpayload.setfov.playercamera.md +0 -11
  468. package/docs/server.playercameraeventpayload.setmode.md +0 -70
  469. package/docs/server.playercameraeventpayload.setmode.mode.md +0 -11
  470. package/docs/server.playercameraeventpayload.setmode.playercamera.md +0 -11
  471. package/docs/server.playercameraeventpayload.setmodelhiddennodes.md +0 -70
  472. package/docs/server.playercameraeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
  473. package/docs/server.playercameraeventpayload.setmodelhiddennodes.playercamera.md +0 -11
  474. package/docs/server.playercameraeventpayload.setoffset.md +0 -70
  475. package/docs/server.playercameraeventpayload.setoffset.offset.md +0 -11
  476. package/docs/server.playercameraeventpayload.setoffset.playercamera.md +0 -11
  477. package/docs/server.playercameraeventpayload.settrackedentity.entity.md +0 -11
  478. package/docs/server.playercameraeventpayload.settrackedentity.md +0 -70
  479. package/docs/server.playercameraeventpayload.settrackedentity.playercamera.md +0 -11
  480. package/docs/server.playercameraeventpayload.settrackedposition.md +0 -70
  481. package/docs/server.playercameraeventpayload.settrackedposition.playercamera.md +0 -11
  482. package/docs/server.playercameraeventpayload.settrackedposition.position.md +0 -11
  483. package/docs/server.playercameraeventpayload.setzoom.md +0 -70
  484. package/docs/server.playercameraeventpayload.setzoom.playercamera.md +0 -11
  485. package/docs/server.playercameraeventpayload.setzoom.zoom.md +0 -11
  486. package/docs/server.playereventpayload.chatmessagesend.md +0 -70
  487. package/docs/server.playereventpayload.chatmessagesend.message.md +0 -11
  488. package/docs/server.playereventpayload.chatmessagesend.player.md +0 -11
  489. package/docs/server.playereventpayload.joinedworld.md +0 -70
  490. package/docs/server.playereventpayload.joinedworld.player.md +0 -11
  491. package/docs/server.playereventpayload.joinedworld.world.md +0 -11
  492. package/docs/server.playereventpayload.leftworld.md +0 -70
  493. package/docs/server.playereventpayload.leftworld.player.md +0 -11
  494. package/docs/server.playereventpayload.leftworld.world.md +0 -11
  495. package/docs/server.playereventpayload.md +0 -64
  496. package/docs/server.playereventpayload.requestsync.md +0 -87
  497. package/docs/server.playereventpayload.requestsync.player.md +0 -11
  498. package/docs/server.playereventpayload.requestsync.receivedat.md +0 -11
  499. package/docs/server.playereventpayload.requestsync.receivedatms.md +0 -11
  500. package/docs/server.playerui.ondata.md +0 -18
  501. package/docs/server.playeruieventpayload.load.htmluri.md +0 -11
  502. package/docs/server.playeruieventpayload.load.md +0 -70
  503. package/docs/server.playeruieventpayload.load.playerui.md +0 -11
  504. package/docs/server.playeruieventpayload.lockpointer.lock.md +0 -11
  505. package/docs/server.playeruieventpayload.lockpointer.md +0 -70
  506. package/docs/server.playeruieventpayload.lockpointer.playerui.md +0 -11
  507. package/docs/server.playeruieventpayload.md +0 -55
  508. package/docs/server.playeruieventpayload.senddata.data.md +0 -11
  509. package/docs/server.playeruieventpayload.senddata.md +0 -70
  510. package/docs/server.playeruieventpayload.senddata.playerui.md +0 -11
  511. package/docs/server.world.eventrouter.md +0 -13
  512. package/docs/server.world.onplayerjoin.md +0 -13
  513. package/docs/server.world.onplayerleave.md +0 -13
  514. package/docs/server.worldloopeventpayload.md +0 -73
  515. package/docs/server.worldloopeventpayload.start.md +0 -53
  516. package/docs/server.worldloopeventpayload.start.worldloop.md +0 -11
  517. package/docs/server.worldloopeventpayload.stop.md +0 -53
  518. package/docs/server.worldloopeventpayload.stop.worldloop.md +0 -11
  519. package/docs/server.worldloopeventpayload.tickend.md +0 -70
  520. package/docs/server.worldloopeventpayload.tickend.tickdurationms.md +0 -11
  521. package/docs/server.worldloopeventpayload.tickend.worldloop.md +0 -11
  522. package/docs/server.worldloopeventpayload.tickerror.error.md +0 -11
  523. package/docs/server.worldloopeventpayload.tickerror.md +0 -70
  524. package/docs/server.worldloopeventpayload.tickerror.worldloop.md +0 -11
  525. package/docs/server.worldloopeventpayload.tickstart.md +0 -70
  526. package/docs/server.worldloopeventpayload.tickstart.tickdeltams.md +0 -11
  527. package/docs/server.worldloopeventpayload.tickstart.worldloop.md +0 -11
@@ -26,10 +26,10 @@
26
26
  import {
27
27
  startServer,
28
28
  Audio,
29
- GameServer,
30
- PlayerEntity,
31
- World,
29
+ ChatEvent,
32
30
  Player,
31
+ PlayerEntity,
32
+ PlayerEvent,
33
33
  Vector3,
34
34
  } from "hytopia";
35
35
 
@@ -93,7 +93,7 @@ startServer((world) => {
93
93
  * their inputs to control their in-game entity and
94
94
  * internally uses our player entity controller.
95
95
  */
96
- world.onPlayerJoin = (player) => {
96
+ world.on(PlayerEvent.JOINED_WORLD, ({ player }) => {
97
97
  const playerEntity = new PlayerEntity({
98
98
  player,
99
99
  name: "Player",
@@ -126,7 +126,7 @@ startServer((world) => {
126
126
  lastThought: agent.getLastMonologue() || "Idle",
127
127
  })),
128
128
  });
129
- };
129
+ });
130
130
 
131
131
  /**
132
132
  * Handle player leaving the game. The onPlayerLeave
@@ -139,11 +139,11 @@ startServer((world) => {
139
139
  * the player who left by using our world's EntityManager
140
140
  * instance.
141
141
  */
142
- world.onPlayerLeave = (player) => {
142
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
143
143
  world.entityManager
144
144
  .getPlayerEntitiesByPlayer(player)
145
145
  .forEach((entity) => entity.despawn());
146
- };
146
+ });
147
147
 
148
148
  /**
149
149
  * Play some peaceful ambient music to
@@ -289,11 +289,7 @@ startServer((world) => {
289
289
  * Instead of a chat command, we can override the chat message broadcast
290
290
  * to automatically respond to the player.
291
291
  */
292
- world.chatManager.onBroadcastMessage = (
293
- player: Player | undefined,
294
- message: string,
295
- color?: string
296
- ) => {
292
+ world.chatManager.on(ChatEvent.BROADCAST_MESSAGE, ({ player, message }) => {
297
293
  const agents = world.entityManager
298
294
  .getAllEntities()
299
295
  .filter((entity) => entity instanceof BaseAgent) as BaseAgent[];
@@ -346,5 +342,5 @@ startServer((world) => {
346
342
  });
347
343
  }
348
344
  });
349
- };
345
+ });
350
346
  });
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import {
5
5
  Entity,
6
+ EntityEvent,
6
7
  Player,
7
8
  Vector3,
8
9
  World,
@@ -79,7 +80,7 @@ export class BaseAgent extends Entity {
79
80
  super({
80
81
  name: options.name || "BaseAgent",
81
82
  modelUri: "models/players/player.gltf",
82
- modelLoopedAnimations: ["idle"],
83
+ modelLoopedAnimations: ["idle_upper", "idle_lower"],
83
84
  modelScale: 0.5,
84
85
  controller: new SimpleEntityController(),
85
86
  rigidBodyOptions: {
@@ -88,7 +89,8 @@ export class BaseAgent extends Entity {
88
89
  },
89
90
  });
90
91
 
91
- this.onTick = this.onTickBehavior;
92
+ this.on(EntityEvent.TICK, this.onTickBehavior);
93
+
92
94
  this.systemPrompt = options.systemPrompt;
93
95
  this.openai = new OpenAI({
94
96
  apiKey: process.env.OPENAI_API_KEY,
@@ -89,8 +89,8 @@ export class FishingBehavior implements AgentBehavior {
89
89
  this.isFishing = true;
90
90
 
91
91
  // Start fishing animation if available
92
- agent.stopModelAnimations(["walk", "run"]);
93
- agent.startModelLoopedAnimations(["idle"]); // Could be replaced with a fishing animation
92
+ agent.stopModelAnimations(["walk_upper", "walk_lower", "run_upper", "run_lower"]);
93
+ agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]); // Could be replaced with a fishing animation
94
94
 
95
95
  // Simulate fishing time
96
96
  setTimeout(() => {
@@ -80,7 +80,7 @@ export class FollowBehavior implements AgentBehavior {
80
80
 
81
81
  if (Math.abs(distance - this.followDistance) > 0.5) {
82
82
  const isRunning = distance > this.runThreshold;
83
- agent.startModelLoopedAnimations([isRunning ? "run" : "walk"]);
83
+ agent.startModelLoopedAnimations([isRunning ? "run_upper" : "walk_upper", isRunning ? "run_lower" : "walk_lower"]);
84
84
 
85
85
  const angle = Math.atan2(dz, dx);
86
86
  const targetPos = new Vector3(
@@ -115,8 +115,8 @@ export class FollowBehavior implements AgentBehavior {
115
115
  );
116
116
  agent.controller.face(targetEntity.position, this.speed * 2);
117
117
  } else {
118
- agent.stopModelAnimations(["walk", "run"]);
119
- agent.startModelLoopedAnimations(["idle"]);
118
+ agent.stopModelAnimations(["walk_upper", "walk_lower", "run_upper", "run_lower"]);
119
+ agent.startModelLoopedAnimations(["idle_upper", "idle_lower"]);
120
120
  this.isJumping = false; // Reset jump state when we're close enough
121
121
  }
122
122
  }
@@ -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,7 +3,8 @@ import {
3
3
  Audio,
4
4
  Player,
5
5
  PlayerEntity,
6
- PlayerUI,
6
+ PlayerEvent,
7
+ PlayerUIEvent,
7
8
  } from 'hytopia';
8
9
 
9
10
  import worldMap from './assets/map.json';
@@ -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,
@@ -39,7 +40,8 @@ startServer(world => {
39
40
 
40
41
  // Handle data sent from player to server by client UI interactions we define.
41
42
  // See the ui/index.html file for the UI code that sends the data.
42
- player.ui.onData = (playerUI: PlayerUI, data: Record<string, any>) => {
43
+ player.ui.on(PlayerUIEvent.DATA, ({ playerUI, data }) => {
44
+ console.log('data', data);
43
45
  if (data.type === 'teleport') {
44
46
  const randomX = Math.random() * 40 - 20; // Random between -20 and 20
45
47
  const randomY = Math.random() * 13 + 2; // Random between 2 and 15
@@ -47,14 +49,14 @@ startServer(world => {
47
49
 
48
50
  playerEntity.setPosition({ x: randomX, y: randomY, z: randomZ });
49
51
  }
50
- };
51
- };
52
+ });
53
+ });
52
54
 
53
- world.onPlayerLeave = player => {
55
+ world.on(PlayerEvent.LEFT_WORLD, ({ player }) => {
54
56
  world.entityManager.getPlayerEntitiesByPlayer(player).forEach(entity => entity.despawn());
55
57
  // Remove the player entity from our map for our list.
56
58
  playerEntityMap.delete(player);
57
- };
59
+ });
58
60
 
59
61
  // Update the player list every 1 second, no need to send too frequently.
60
62
  // 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
  });