paper-mc/notes.md
2025-04-13 16:37:44 -04:00

1.6 KiB

  • Cookie handling will stall the connection when needed to prevent the connection from finishing before the cookie has been received.
    • A player can still get timed out while waiting for a cookie.

Previously, the cookie handling for login occurred after the PlayerLoginEvent only. This meant that cookies could not be sent before the player was created. New Use Cases:

  • Instantly terminate the connection if a cookie is not present.

Behavior changes:

  • PlayerLinksSendEvent now takes a configuration connection
  • PlayerLoginEvent no longer blocks cookies
  • PlayerLoginEvent now triggers twice due to reasons
  • Disconnecting a duplicate player no longer causes a forced save. Check to make sure that still occurs

TODO:

  • Figure out connection hierarchy
  • Figure out naming

New Events: PlayerServerFullCheckEvent - allows you to make players bypass the server fullness check without using PlayerLoginEvent

Protocol Lifecycles: LOGIN: entering login: AsyncPlayerPreLoginEvent validating login: PlayerConnectionValidateLoginEvent (basically PlayerLoginEvent) exiting login: PlayerFinishConnectionPhaseEvent (allows you to disconnect to prevent a ClientboundLoginFinishedPacket from being sent) CONFIGURATION: entering config: PlayerConnectionInitialConfigureEvent / PlayerConnectionReconfigurateEvent (split for convenience) configuring player: AsyncPlayerConnectionConfigureEvent (allows for async processing, can run for as long as needed) validating login: PlayerConnectionValidateLoginEvent (basically PlayerLoginEvent) exiting config: PlayerFinishConnectionPhaseEvent (allows you to disconnect to prevent a player being placed/created)