hytopia 0.2.11 → 0.3.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/server.audio.md +7 -1
- package/docs/{server.audioeventtype.md → server.audioevent.md} +4 -4
- package/docs/server.audioeventpayloads._audio.pause_.md +15 -0
- package/docs/server.audioeventpayloads._audio.play_.md +15 -0
- package/docs/server.audioeventpayloads._audio.play_restart_.md +15 -0
- package/docs/server.audioeventpayloads._audio.set_attached_to_entity_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_detune_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_distortion_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_playback_rate_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_position_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_reference_distance_.md +16 -0
- package/docs/server.audioeventpayloads._audio.set_volume_.md +16 -0
- package/docs/server.audioeventpayloads.md +228 -0
- package/docs/server.baseentitycontroller.md +4 -138
- package/docs/server.baseentitycontrollerevent.md +117 -0
- package/docs/server.baseentitycontrollereventpayloads.attach.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.despawn.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.detach.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.md +152 -0
- package/docs/server.baseentitycontrollereventpayloads.spawn.md +15 -0
- package/docs/server.baseentitycontrollereventpayloads.tick.md +16 -0
- package/docs/server.baseentitycontrollereventpayloads.tickwithplayerinput.md +18 -0
- package/docs/server.blocktype.md +7 -39
- package/docs/server.blocktypeevent.md +61 -0
- package/docs/server.blocktypeeventpayloads._block_type.entity_collision_.md +19 -0
- package/docs/server.blocktypeeventpayloads._block_type.entity_contact_force_.md +17 -0
- package/docs/server.blocktypeeventpayloads.md +76 -0
- package/docs/server.blocktyperegistry.md +7 -1
- package/docs/{server.blocktyperegistryeventtype.md → server.blocktyperegistryevent.md} +4 -4
- package/docs/server.blocktyperegistryeventpayloads._block_type_registry.register_block_type_.md +17 -0
- package/docs/server.blocktyperegistryeventpayloads.md +57 -0
- package/docs/server.chatevent.md +61 -0
- package/docs/server.chateventpayloads._chat.broadcast_message_.md +17 -0
- package/docs/server.chateventpayloads._chat.player_message_.md +17 -0
- package/docs/server.chateventpayloads.md +76 -0
- package/docs/server.chatmanager.md +6 -45
- package/docs/server.chunk.md +7 -1
- package/docs/{server.chunkeventtype.md → server.chunkevent.md} +4 -4
- package/docs/server.chunkeventpayloads._chunk.despawn_.md +15 -0
- package/docs/server.chunkeventpayloads._chunk.set_block_.md +18 -0
- package/docs/server.chunkeventpayloads._chunk.spawn_.md +15 -0
- package/docs/server.chunkeventpayloads.md +95 -0
- package/docs/server.collider.md +2 -1
- package/docs/server.entity.md +4 -133
- package/docs/{server.entityeventtype.md → server.entityevent.md} +74 -4
- package/docs/server.entityeventpayloads._entity.block_collision_.md +19 -0
- package/docs/server.entityeventpayloads._entity.block_contact_force_.md +17 -0
- package/docs/server.entityeventpayloads._entity.despawn_.md +15 -0
- package/docs/server.entityeventpayloads._entity.entity_collision_.md +19 -0
- package/docs/server.entityeventpayloads._entity.entity_contact_force_.md +17 -0
- package/docs/server.entityeventpayloads._entity.set_model_animations_playback_rate_.md +16 -0
- package/docs/server.entityeventpayloads._entity.set_model_hidden_nodes_.md +16 -0
- package/docs/server.entityeventpayloads._entity.set_opacity_.md +16 -0
- package/docs/server.entityeventpayloads._entity.set_parent_.md +17 -0
- package/docs/server.entityeventpayloads._entity.set_tint_color_.md +16 -0
- package/docs/server.entityeventpayloads._entity.spawn_.md +15 -0
- package/docs/server.entityeventpayloads._entity.start_model_looped_animations_.md +16 -0
- package/docs/server.entityeventpayloads._entity.start_model_oneshot_animations_.md +16 -0
- package/docs/server.entityeventpayloads._entity.stop_model_animations_.md +16 -0
- package/docs/server.entityeventpayloads._entity.tick_.md +16 -0
- package/docs/server.entityeventpayloads._entity.update_position_.md +16 -0
- package/docs/server.entityeventpayloads._entity.update_rotation_.md +16 -0
- package/docs/server.entityeventpayloads.md +361 -0
- package/docs/server.eventpayloads.md +15 -0
- package/docs/server.eventrouter.emit.md +4 -4
- package/docs/server.eventrouter.emit_1.md +63 -0
- package/docs/server.eventrouter.emitwithglobal.md +69 -0
- package/docs/server.eventrouter.emitwithglobal_1.md +63 -0
- package/docs/server.eventrouter.emitwithworld.md +85 -0
- package/docs/server.eventrouter.emitwithworld_1.md +77 -0
- package/docs/{server.eventrouter.prependon.md → server.eventrouter.final_1.md} +4 -10
- package/docs/server.eventrouter.haslisteners.md +55 -0
- package/docs/server.eventrouter.listenercount.md +55 -0
- package/docs/server.eventrouter.listeners.md +55 -0
- package/docs/server.eventrouter.md +40 -95
- package/docs/server.eventrouter.off.md +3 -3
- package/docs/{server.eventrouter.prependonce.md → server.eventrouter.off_1.md} +4 -10
- package/docs/server.eventrouter.offall.md +4 -4
- package/docs/server.eventrouter.on.md +3 -3
- package/docs/server.eventrouter.on_1.md +63 -0
- package/docs/server.eventrouter.once.md +3 -3
- package/docs/server.eventrouter.once_1.md +63 -0
- package/docs/{server.gameservereventtype.md → server.gameserverevent.md} +4 -4
- package/docs/server.gameservereventpayloads._gameserver.start_.md +15 -0
- package/docs/server.gameservereventpayloads._gameserver.stop_.md +15 -0
- package/docs/server.gameservereventpayloads.md +76 -0
- package/docs/server.light.md +7 -1
- package/docs/{server.lighteventtype.md → server.lightevent.md} +4 -18
- package/docs/server.lighteventpayloads._light.despawn_.md +15 -0
- package/docs/server.lighteventpayloads._light.set_angle_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_attached_to_entity_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_color_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_distance_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_intensity_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_offset_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_penumbra_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_position_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_tracked_entity_.md +16 -0
- package/docs/server.lighteventpayloads._light.set_tracked_position_.md +16 -0
- package/docs/server.lighteventpayloads._light.spawn_.md +15 -0
- package/docs/server.lighteventpayloads.md +266 -0
- package/docs/server.md +201 -84
- package/docs/server.player.md +7 -1
- package/docs/server.playercamera.md +7 -1
- package/docs/{server.playercameraeventtype.md → server.playercameraevent.md} +4 -4
- package/docs/server.playercameraeventpayloads._player_camera.look_at_entity_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.look_at_position_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_entity_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_attached_to_position_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_film_offset_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_forward_offset_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_fov_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_mode_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_model_hidden_nodes_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_offset_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_tracked_entity_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_tracked_position_.md +16 -0
- package/docs/server.playercameraeventpayloads._player_camera.set_zoom_.md +16 -0
- package/docs/server.playercameraeventpayloads.md +285 -0
- package/docs/{server.playereventtype.md → server.playerevent.md} +4 -4
- package/docs/server.playereventpayloads._player.chat_message_send_.md +16 -0
- package/docs/server.playereventpayloads._player.joined_world_.md +16 -0
- package/docs/server.playereventpayloads._player.left_world_.md +16 -0
- package/docs/server.playereventpayloads._player.request_sync_.md +17 -0
- package/docs/server.playereventpayloads.md +114 -0
- package/docs/server.playermanager.md +4 -0
- package/docs/server.playermanagereventpayloads._player_manager.player_connected_.md +15 -0
- package/docs/server.playermanagereventpayloads._player_manager.player_disconnected_.md +15 -0
- package/docs/server.playermanagereventpayloads.md +76 -0
- package/docs/server.playerui.md +6 -1
- package/docs/{server.playeruieventtype.md → server.playeruievent.md} +4 -4
- package/docs/server.playeruieventpayloads._player_ui.load_.md +16 -0
- package/docs/server.playeruieventpayloads._player_ui.lock_pointer_.md +16 -0
- package/docs/server.playeruieventpayloads._player_ui.send_data_.md +16 -0
- package/docs/server.playeruieventpayloads.md +95 -0
- package/docs/server.rigidbody.md +2 -1
- package/docs/server.sceneui.md +7 -1
- package/docs/server.sceneuievent.md +131 -0
- package/docs/server.sceneuieventpayloads._scene_ui.load_.md +15 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_attached_to_entity_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_offset_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_position_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_state_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.set_view_distance_.md +16 -0
- package/docs/server.sceneuieventpayloads._scene_ui.unload_.md +15 -0
- package/docs/server.sceneuieventpayloads.md +171 -0
- package/docs/server.simulation.md +6 -1
- package/docs/server.simulationevent.md +89 -0
- package/docs/server.simulationeventpayloads._simulation.debug_raycast_.md +19 -0
- package/docs/server.simulationeventpayloads._simulation.debug_render_.md +17 -0
- package/docs/server.simulationeventpayloads._simulation.step_end_.md +16 -0
- package/docs/server.simulationeventpayloads._simulation.step_start_.md +16 -0
- package/docs/server.simulationeventpayloads.md +114 -0
- package/docs/server.world.md +7 -60
- package/docs/server.worldevent.md +131 -0
- package/docs/server.worldeventpayloads._world.set_ambient_light_color_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_ambient_light_intensity_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_directional_light_color_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_directional_light_intensity_.md +16 -0
- package/docs/server.worldeventpayloads._world.set_directional_light_position_.md +16 -0
- package/docs/server.worldeventpayloads._world.start_.md +16 -0
- package/docs/server.worldeventpayloads._world.stop_.md +16 -0
- package/docs/server.worldeventpayloads.md +171 -0
- package/docs/server.worldloop.md +6 -1
- package/docs/{server.worldloopeventtype.md → server.worldloopevent.md} +4 -4
- package/docs/server.worldloopeventpayloads._world_loop.start_.md +15 -0
- package/docs/server.worldloopeventpayloads._world_loop.stop_.md +15 -0
- package/docs/server.worldloopeventpayloads._world_loop.tick_end_.md +16 -0
- package/docs/server.worldloopeventpayloads._world_loop.tick_error_.md +16 -0
- package/docs/server.worldloopeventpayloads._world_loop.tick_start_.md +16 -0
- package/docs/server.worldloopeventpayloads.md +133 -0
- package/examples/ai-agents/index.ts +9 -13
- package/examples/ai-agents/src/BaseAgent.ts +4 -2
- package/examples/ai-agents/src/behaviors/FishingBehavior.ts +2 -2
- package/examples/ai-agents/src/behaviors/FollowBehavior.ts +3 -3
- package/examples/ai-agents/src/behaviors/MiningBehavior.ts +2 -2
- package/examples/ai-agents/src/behaviors/PathfindingBehavior.ts +7 -7
- package/examples/big-world/index.ts +5 -4
- package/examples/block-entity/index.ts +12 -10
- package/examples/child-entity/index.ts +5 -4
- package/examples/custom-ui/index.ts +5 -4
- package/examples/entity-controller/index.ts +5 -4
- package/examples/entity-spawn/index.ts +8 -6
- package/examples/hole-in-wall-game/index.ts +9 -7
- package/examples/lighting/index.ts +5 -4
- package/examples/pathfinding/index.ts +5 -4
- package/examples/payload-game/index.ts +27 -23
- package/examples/wall-dodge-game/index.ts +8 -6
- package/examples/zombies-fps/classes/EnemyEntity.ts +10 -4
- package/examples/zombies-fps/classes/GamePlayerEntity.ts +7 -2
- package/examples/zombies-fps/classes/enemies/RipperEntity.ts +2 -1
- package/examples/zombies-fps/index.ts +5 -5
- package/package.json +1 -1
- package/server.api.json +9422 -7805
- package/server.d.ts +748 -472
- package/server.js +89 -89
- package/docs/server.audioeventpayload.md +0 -118
- package/docs/server.audioeventpayload.pause.audio.md +0 -11
- package/docs/server.audioeventpayload.pause.md +0 -53
- package/docs/server.audioeventpayload.play.audio.md +0 -11
- package/docs/server.audioeventpayload.play.md +0 -53
- package/docs/server.audioeventpayload.playrestart.audio.md +0 -11
- package/docs/server.audioeventpayload.playrestart.md +0 -53
- package/docs/server.audioeventpayload.setattachedtoentity.audio.md +0 -11
- package/docs/server.audioeventpayload.setattachedtoentity.entity.md +0 -11
- package/docs/server.audioeventpayload.setattachedtoentity.md +0 -70
- package/docs/server.audioeventpayload.setdetune.audio.md +0 -11
- package/docs/server.audioeventpayload.setdetune.detune.md +0 -11
- package/docs/server.audioeventpayload.setdetune.md +0 -70
- package/docs/server.audioeventpayload.setdistortion.audio.md +0 -11
- package/docs/server.audioeventpayload.setdistortion.distortion.md +0 -11
- package/docs/server.audioeventpayload.setdistortion.md +0 -70
- package/docs/server.audioeventpayload.setplaybackrate.audio.md +0 -11
- package/docs/server.audioeventpayload.setplaybackrate.md +0 -70
- package/docs/server.audioeventpayload.setplaybackrate.playbackrate.md +0 -11
- package/docs/server.audioeventpayload.setposition.audio.md +0 -11
- package/docs/server.audioeventpayload.setposition.md +0 -70
- package/docs/server.audioeventpayload.setposition.position.md +0 -11
- package/docs/server.audioeventpayload.setreferencedistance.audio.md +0 -11
- package/docs/server.audioeventpayload.setreferencedistance.md +0 -70
- package/docs/server.audioeventpayload.setreferencedistance.referencedistance.md +0 -11
- package/docs/server.audioeventpayload.setvolume.audio.md +0 -11
- package/docs/server.audioeventpayload.setvolume.md +0 -70
- package/docs/server.audioeventpayload.setvolume.volume.md +0 -11
- package/docs/server.baseentitycontroller.onattach.md +0 -13
- package/docs/server.baseentitycontroller.ondespawn.md +0 -13
- package/docs/server.baseentitycontroller.ondetach.md +0 -13
- package/docs/server.baseentitycontroller.onspawn.md +0 -13
- package/docs/server.baseentitycontroller.ontick.md +0 -13
- package/docs/server.baseentitycontroller.ontickwithplayerinput.md +0 -13
- package/docs/server.blocktype.onentitycollision.md +0 -18
- package/docs/server.blocktype.onentitycontactforce.md +0 -18
- package/docs/server.blocktyperegistryeventpayload.md +0 -37
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktype.md +0 -11
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.blocktyperegistry.md +0 -11
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.id.md +0 -11
- package/docs/server.blocktyperegistryeventpayload.registerblocktype.md +0 -87
- package/docs/server.chateventpayload.md +0 -46
- package/docs/server.chateventpayload.sendbroadcastmessage.color.md +0 -11
- package/docs/server.chateventpayload.sendbroadcastmessage.md +0 -91
- package/docs/server.chateventpayload.sendbroadcastmessage.message.md +0 -11
- package/docs/server.chateventpayload.sendbroadcastmessage.playerid.md +0 -11
- package/docs/server.chateventpayload.sendplayermessage.color.md +0 -11
- package/docs/server.chateventpayload.sendplayermessage.md +0 -89
- package/docs/server.chateventpayload.sendplayermessage.message.md +0 -11
- package/docs/server.chateventpayload.sendplayermessage.player.md +0 -11
- package/docs/server.chateventtype.md +0 -61
- package/docs/server.chatmanager.onbroadcastmessage.md +0 -13
- package/docs/server.chunkeventpayload.despawn.chunk.md +0 -11
- package/docs/server.chunkeventpayload.despawn.md +0 -53
- package/docs/server.chunkeventpayload.md +0 -55
- package/docs/server.chunkeventpayload.setblock.blocktypeid.md +0 -11
- package/docs/server.chunkeventpayload.setblock.chunk.md +0 -11
- package/docs/server.chunkeventpayload.setblock.globalcoordinate.md +0 -11
- package/docs/server.chunkeventpayload.setblock.localcoordinate.md +0 -11
- package/docs/server.chunkeventpayload.setblock.md +0 -104
- package/docs/server.chunkeventpayload.spawn.chunk.md +0 -11
- package/docs/server.chunkeventpayload.spawn.md +0 -53
- package/docs/server.entity.onblockcollision.md +0 -18
- package/docs/server.entity.onblockcontactforce.md +0 -18
- package/docs/server.entity.ondespawn.md +0 -13
- package/docs/server.entity.onentitycollision.md +0 -18
- package/docs/server.entity.onentitycontactforce.md +0 -18
- package/docs/server.entity.onspawn.md +0 -13
- package/docs/server.entity.ontick.md +0 -13
- package/docs/server.entityeventpayload.despawn.entity.md +0 -11
- package/docs/server.entityeventpayload.despawn.md +0 -53
- package/docs/server.entityeventpayload.md +0 -136
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.entity.md +0 -11
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.md +0 -70
- package/docs/server.entityeventpayload.setmodelanimationsplaybackrate.playbackrate.md +0 -11
- package/docs/server.entityeventpayload.setmodelhiddennodes.entity.md +0 -11
- package/docs/server.entityeventpayload.setmodelhiddennodes.md +0 -70
- package/docs/server.entityeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
- package/docs/server.entityeventpayload.setopacity.entity.md +0 -11
- package/docs/server.entityeventpayload.setopacity.md +0 -70
- package/docs/server.entityeventpayload.setopacity.opacity.md +0 -11
- package/docs/server.entityeventpayload.setparent.entity.md +0 -11
- package/docs/server.entityeventpayload.setparent.md +0 -87
- package/docs/server.entityeventpayload.setparent.parent.md +0 -11
- package/docs/server.entityeventpayload.setparent.parentnodename.md +0 -11
- package/docs/server.entityeventpayload.settintcolor.entity.md +0 -11
- package/docs/server.entityeventpayload.settintcolor.md +0 -70
- package/docs/server.entityeventpayload.settintcolor.tintcolor.md +0 -11
- package/docs/server.entityeventpayload.spawn.entity.md +0 -11
- package/docs/server.entityeventpayload.spawn.md +0 -53
- package/docs/server.entityeventpayload.startmodelloopedanimations.animations.md +0 -11
- package/docs/server.entityeventpayload.startmodelloopedanimations.entity.md +0 -11
- package/docs/server.entityeventpayload.startmodelloopedanimations.md +0 -70
- package/docs/server.entityeventpayload.startmodeloneshotanimations.animations.md +0 -11
- package/docs/server.entityeventpayload.startmodeloneshotanimations.entity.md +0 -11
- package/docs/server.entityeventpayload.startmodeloneshotanimations.md +0 -70
- package/docs/server.entityeventpayload.stopmodelanimations.animations.md +0 -11
- package/docs/server.entityeventpayload.stopmodelanimations.entity.md +0 -11
- package/docs/server.entityeventpayload.stopmodelanimations.md +0 -70
- package/docs/server.entityeventpayload.updateposition.entity.md +0 -11
- package/docs/server.entityeventpayload.updateposition.md +0 -70
- package/docs/server.entityeventpayload.updateposition.position.md +0 -11
- package/docs/server.entityeventpayload.updaterotation.entity.md +0 -11
- package/docs/server.entityeventpayload.updaterotation.md +0 -70
- package/docs/server.entityeventpayload.updaterotation.rotation.md +0 -11
- package/docs/server.eventrouter._constructor_.md +0 -49
- package/docs/server.eventrouter.logallevents.md +0 -13
- package/docs/server.eventrouter.logeventspayloads.md +0 -13
- package/docs/server.eventrouter.logignoreeventprefixes.md +0 -13
- package/docs/server.eventrouter.logignoreevents.md +0 -13
- package/docs/server.eventrouter.logunlistenedevents.md +0 -13
- package/docs/server.eventrouter.serverinstance.md +0 -13
- package/docs/server.gameservereventpayload.md +0 -46
- package/docs/server.gameservereventpayload.start.md +0 -53
- package/docs/server.gameservereventpayload.start.startedatms.md +0 -11
- package/docs/server.gameservereventpayload.stop.md +0 -53
- package/docs/server.gameservereventpayload.stop.stoppedatms.md +0 -11
- package/docs/server.lighteventpayload.despawn.light.md +0 -11
- package/docs/server.lighteventpayload.despawn.md +0 -53
- package/docs/server.lighteventpayload.md +0 -136
- package/docs/server.lighteventpayload.setangle.angle.md +0 -11
- package/docs/server.lighteventpayload.setangle.light.md +0 -11
- package/docs/server.lighteventpayload.setangle.md +0 -70
- package/docs/server.lighteventpayload.setattachedtoentity.entity.md +0 -11
- package/docs/server.lighteventpayload.setattachedtoentity.light.md +0 -11
- package/docs/server.lighteventpayload.setattachedtoentity.md +0 -70
- package/docs/server.lighteventpayload.setcolor.color.md +0 -11
- package/docs/server.lighteventpayload.setcolor.light.md +0 -11
- package/docs/server.lighteventpayload.setcolor.md +0 -70
- package/docs/server.lighteventpayload.setdistance.distance.md +0 -11
- package/docs/server.lighteventpayload.setdistance.light.md +0 -11
- package/docs/server.lighteventpayload.setdistance.md +0 -70
- package/docs/server.lighteventpayload.setintensity.intensity.md +0 -11
- package/docs/server.lighteventpayload.setintensity.light.md +0 -11
- package/docs/server.lighteventpayload.setintensity.md +0 -70
- package/docs/server.lighteventpayload.setoffset.light.md +0 -11
- package/docs/server.lighteventpayload.setoffset.md +0 -70
- package/docs/server.lighteventpayload.setoffset.offset.md +0 -11
- package/docs/server.lighteventpayload.setpenumbra.light.md +0 -11
- package/docs/server.lighteventpayload.setpenumbra.md +0 -70
- package/docs/server.lighteventpayload.setpenumbra.penumbra.md +0 -11
- package/docs/server.lighteventpayload.setposition.light.md +0 -11
- package/docs/server.lighteventpayload.setposition.md +0 -70
- package/docs/server.lighteventpayload.setposition.position.md +0 -11
- package/docs/server.lighteventpayload.settrackedentity.entity.md +0 -11
- package/docs/server.lighteventpayload.settrackedentity.light.md +0 -11
- package/docs/server.lighteventpayload.settrackedentity.md +0 -70
- package/docs/server.lighteventpayload.settrackedposition.light.md +0 -11
- package/docs/server.lighteventpayload.settrackedposition.md +0 -70
- package/docs/server.lighteventpayload.settrackedposition.position.md +0 -11
- package/docs/server.lighteventpayload.spawn.light.md +0 -11
- package/docs/server.lighteventpayload.spawn.md +0 -53
- package/docs/server.playercameraeventpayload.lookatentity.entity.md +0 -11
- package/docs/server.playercameraeventpayload.lookatentity.md +0 -70
- package/docs/server.playercameraeventpayload.lookatentity.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.lookatposition.md +0 -70
- package/docs/server.playercameraeventpayload.lookatposition.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.lookatposition.position.md +0 -11
- package/docs/server.playercameraeventpayload.md +0 -145
- package/docs/server.playercameraeventpayload.setattachedtoentity.entity.md +0 -11
- package/docs/server.playercameraeventpayload.setattachedtoentity.md +0 -70
- package/docs/server.playercameraeventpayload.setattachedtoentity.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setattachedtoposition.md +0 -70
- package/docs/server.playercameraeventpayload.setattachedtoposition.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setattachedtoposition.position.md +0 -11
- package/docs/server.playercameraeventpayload.setfilmoffset.filmoffset.md +0 -11
- package/docs/server.playercameraeventpayload.setfilmoffset.md +0 -70
- package/docs/server.playercameraeventpayload.setfilmoffset.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setforwardoffset.forwardoffset.md +0 -11
- package/docs/server.playercameraeventpayload.setforwardoffset.md +0 -70
- package/docs/server.playercameraeventpayload.setforwardoffset.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setfov.fov.md +0 -11
- package/docs/server.playercameraeventpayload.setfov.md +0 -70
- package/docs/server.playercameraeventpayload.setfov.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setmode.md +0 -70
- package/docs/server.playercameraeventpayload.setmode.mode.md +0 -11
- package/docs/server.playercameraeventpayload.setmode.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setmodelhiddennodes.md +0 -70
- package/docs/server.playercameraeventpayload.setmodelhiddennodes.modelhiddennodes.md +0 -11
- package/docs/server.playercameraeventpayload.setmodelhiddennodes.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setoffset.md +0 -70
- package/docs/server.playercameraeventpayload.setoffset.offset.md +0 -11
- package/docs/server.playercameraeventpayload.setoffset.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedentity.entity.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedentity.md +0 -70
- package/docs/server.playercameraeventpayload.settrackedentity.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedposition.md +0 -70
- package/docs/server.playercameraeventpayload.settrackedposition.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.settrackedposition.position.md +0 -11
- package/docs/server.playercameraeventpayload.setzoom.md +0 -70
- package/docs/server.playercameraeventpayload.setzoom.playercamera.md +0 -11
- package/docs/server.playercameraeventpayload.setzoom.zoom.md +0 -11
- package/docs/server.playereventpayload.chatmessagesend.md +0 -70
- package/docs/server.playereventpayload.chatmessagesend.message.md +0 -11
- package/docs/server.playereventpayload.chatmessagesend.player.md +0 -11
- package/docs/server.playereventpayload.joinedworld.md +0 -70
- package/docs/server.playereventpayload.joinedworld.player.md +0 -11
- package/docs/server.playereventpayload.joinedworld.world.md +0 -11
- package/docs/server.playereventpayload.leftworld.md +0 -70
- package/docs/server.playereventpayload.leftworld.player.md +0 -11
- package/docs/server.playereventpayload.leftworld.world.md +0 -11
- package/docs/server.playereventpayload.md +0 -64
- package/docs/server.playereventpayload.requestsync.md +0 -87
- package/docs/server.playereventpayload.requestsync.player.md +0 -11
- package/docs/server.playereventpayload.requestsync.receivedat.md +0 -11
- package/docs/server.playereventpayload.requestsync.receivedatms.md +0 -11
- package/docs/server.playeruieventpayload.load.htmluri.md +0 -11
- package/docs/server.playeruieventpayload.load.md +0 -70
- package/docs/server.playeruieventpayload.load.playerui.md +0 -11
- package/docs/server.playeruieventpayload.lockpointer.lock.md +0 -11
- package/docs/server.playeruieventpayload.lockpointer.md +0 -70
- package/docs/server.playeruieventpayload.lockpointer.playerui.md +0 -11
- package/docs/server.playeruieventpayload.md +0 -55
- package/docs/server.playeruieventpayload.senddata.data.md +0 -11
- package/docs/server.playeruieventpayload.senddata.md +0 -70
- package/docs/server.playeruieventpayload.senddata.playerui.md +0 -11
- package/docs/server.world.eventrouter.md +0 -13
- package/docs/server.world.onplayerjoin.md +0 -13
- package/docs/server.world.onplayerleave.md +0 -13
- package/docs/server.worldloopeventpayload.md +0 -73
- package/docs/server.worldloopeventpayload.start.md +0 -53
- package/docs/server.worldloopeventpayload.start.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.stop.md +0 -53
- package/docs/server.worldloopeventpayload.stop.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.tickend.md +0 -70
- package/docs/server.worldloopeventpayload.tickend.tickdurationms.md +0 -11
- package/docs/server.worldloopeventpayload.tickend.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.tickerror.error.md +0 -11
- package/docs/server.worldloopeventpayload.tickerror.md +0 -70
- package/docs/server.worldloopeventpayload.tickerror.worldloop.md +0 -11
- package/docs/server.worldloopeventpayload.tickstart.md +0 -70
- package/docs/server.worldloopeventpayload.tickstart.tickdeltams.md +0 -11
- 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(["
|
111
|
-
agent.startModelLoopedAnimations(["
|
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(["
|
52
|
-
agent.startModelLoopedAnimations(["
|
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(["
|
79
|
-
agent.startModelLoopedAnimations(["
|
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(["
|
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(["
|
122
|
-
agent.startModelLoopedAnimations(["
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
80
|
-
world.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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!.
|
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.
|
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.
|
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.
|
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.
|
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.
|
371
|
-
entity,
|
372
|
-
|
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.
|
378
|
-
if (started &&
|
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
|
-
|
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(
|
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(
|
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(
|
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.
|
55
|
-
world.
|
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.
|
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.
|
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());
|