Xabbo.Common Represents a client type, identifier and version. Represents a client type, identifier and version. Represents a type of game client. Represents no particular client. Represents the Unity client. Represents the Flash client. Represents the Shockwave client. Represents all clients. Represents modern clients. ( or ) Represents the Origins client. () Provides data for the event. Gets the host for the current game connection. Gets the port for the current game connection. Gets the session information for the current game connection. Gets the path to the messages file, if it is available. Gets a list of client-specific message information. Gets whether the connection was previously established at the time of initialization. If this is true, it is likely safe to begin sending packets. Otherwise, the connection could be in a pre-authenticated state and it may not be safe to send certain packets. Provides extensions methods for . Sends an empty packet with the specified message header. Sends an empty packet with the specified message identifier. Sends a message to the client or server, specified by the direction of the message. Represents a connection to the game server. Gets whether a connection to the game is currently established. Gets a cancellation token that is triggered when the connection is lost. Gets the session information for the current connection. Occurs when a connection to the game is established. Occurs when a connection to the game ends. Sends a packet to the client or server, specified by the direction of the packet's header. Represents the direction of a message. Returns a short string representation of the specified direction. in, out or both. Returns a short string representation of the specified client. u, f, s or a combination representing which client flags are set. Defines information about an extension. Defines the title of the extension. Defines the description of the extension. Defines the author of the extension. Defines the version of the extension. Defines information about an extension. The name of the extension. The description of the extension. The author of the extension. The version of the extension. Defines information about an extension. The name of the extension. The description of the extension. The author of the extension. The version of the extension. The name of the extension. The description of the extension. The author of the extension. The version of the extension. Represents an extension interface provided by a packet interceptor service. Occurs when the extension is activated by the user. Occurs when a packet has been intercepted. Allows an extension to initialize its information. The source generator will implement this interface on partial classes marked with . The extension information. Represents an extension interface provided by a remote packet interceptor service. Gets the port that is currently being used to connect to the remote interceptor. Connects to the remote interceptor and runs the packet processing loop. Represents a float that is parsed and composed as a string. Represents a float that is parsed and composed as a string. Represents a hotel region. Represents no particular hotel. Contains the definitions of all hotels, mapped by their identifier. Gets the name of this hotel, e.g. "US", "Netherlands". Gets the identifier of this hotel, e.g. "us", "nl". Gets the subdomain of this hotel, e.g. "www", "sandbox". Gets the top-level domain of this hotel, e.g. "com", "com.br". Gets the hostname for this hotel, e.g. "habbo". Gets the web host for this hotel, e.g. "www.habbo.com". Gets the game host for this hotel. Gets whether this is an origins hotel. Creates a new hotel instance. Creates a new hotel instance. The name of the hotel. The short identifier of the hotel, e.g. "us". The subdomain, e.g. "www", "sandbox". The top-level domain, e.g. "com", "com.br". The hostname, e.g. "habbo". The game host, defaults to "game-{identifier}.habbo.com". Whether this is an Origins hotel. Returns the name of the hotel. Gets the hotel with the specified identifier, e.g. "us". The matching Hotel, or if it was not found. Gets the hotel with the specified game host, e.g. "game-us.habbo.com". The matching Hotel, or if it was not found. Represents a numeric identifier. This type is represented as the following: On Unity as a . On Flash as an . On Shockwave as a . The minimum value of and . The maximum value of an . Parses a string representation of an Id to its value and returns whether the conversion was successful. The string to parse. The parsed . Returns the value of this as a string. Provides data for the event. Gets whether the game is already connected at the time of extension initialization. Provides data for the event. Gets whether the game is already connected at the time of extension initialization. Gets whether the game is already connected at the time of extension initialization. Contains the event arguments of an intercepted packet. Contains the event arguments of an intercepted packet. Gets the interceptor that intercepted this packet. Gets the time that the packet was intercepted. Gets the direction of the packet. Gets the sequence number of the intercepted packet. Gets or replaces the intercepted packet. Gets whether the packet will be blocked by the interceptor. Gets whether the intercepted packet's unmodified header matches any of the specified identifiers. Flags the packet to be blocked from its destination by the interceptor. Indicates that a class or method intercepts messages for the specified clients. If no clients are specified, then all clients are targeted. When placed on a method, and an or is also present, this attribute specifies which clients the intercept handler should target. If no directional intercept attributes are specified, then the method is considered to be a message handler, the attribute must not specify any client types, and the method must have one of the following function signatures: void () void (, ) void () ? () Indicates that a class or method intercepts messages for the specified clients. If no clients are specified, then all clients are targeted. When placed on a method, and an or is also present, this attribute specifies which clients the intercept handler should target. If no directional intercept attributes are specified, then the method is considered to be a message handler, the attribute must not specify any client types, and the method must have one of the following function signatures: void () void (, ) void () ? () The target clients on which to intercept packets. Constructs a new intercept attribute targeting all clients. When placed on a method, indicates that the method intercepts the specified incoming messages. The names of the identifiers to intercept. When placed on a method, indicates that the method intercepts the specified incoming messages. The names of the identifiers to intercept. The names of the identifiers to intercept. When placed on a method, indicates that the method intercepts the specified outgoing messages. The names of the identifiers to intercept. When placed on a method, indicates that the method intercepts the specified outgoing messages. The names of the identifiers to intercept. The names of the identifiers to intercept. Provides extensions for . Registers an intercept for the specified headers with the provided . The interceptor to register the intercept for. The message headers to intercept. The function to call when a packet is intercepted. Specifies which clients to intercept on. Registers an intercept for the specified identifiers with the provided . The interceptor to register the intercept for. The message identifiers to intercept. The function to call when a packet is intercepted. Specifies which clients to intercept on. Whether to use client-targeted identifiers. For example, if the client type of the message identifier is Flash, then it will only intercept that identifier on the Flash client. Registers an intercept for the specified message with the provided . Registers an intercept for the specified message with the provided . Registers an intercept for the specified message with the provided . Asynchronously captures the first intercepted packet matching any of the specified headers. The interceptor. Specifies which headers to listen for. The maximum time in milliseconds to wait for a packet to be captured. -1 specifies no timeout. Whether the captured packet should be blocked from its destination. A callback that inspects intercepted packets and return whether the packet should be captured or not. The token used to cancel this operation. A task that completes once a packet has been captured, or the operation times out. Asynchronously captures the first intercepted packet matching any of the specified headers. The interceptor. Specifies which messages to listen for. The maximum time in milliseconds to wait for a packet to be captured. -1 specifies no timeout. Whether the captured packet should be blocked from its destination. A callback that inspects intercepted packets and return whether the packet should be captured or not. The token used to cancel this operation. A task that completes once a packet has been captured, or the operation times out. Asynchronously captures the first intercepted matching message. The type of message to capture. The interceptor. The maximum time in milliseconds to wait for a message to be captured. -1 specifies no timeout. Whether the captured message should be blocked from its destination. A callback that inspects an intercepted message and return whether the message should be captured or not. The token used to cancel this operation. A task that completes once a message has been captured, or the operation times out. Sends a request message and asynchronously captures its response. The type of the request message. The type of the response message. The type of the response data. The interceptor. The request message to send. The maximum time in milliseconds to wait for a message to be captured. -1 specifies no timeout. Whether the captured message should be blocked from its destination. The token used to cancel this operation. Represents a packet interceptor that can read, modify and send packets. Gets the message dispatcher associated with this interceptor. Occurs when the interceptor has been initialized. Represents a context that allows the source generator to inject interceptor related methods into. The generator will inject the following methods into partial classes that implement this interface and are marked with or : void Send<T, ...>(Identifier, T, ...) (variadic) void Send<T, ...>(Header, T, ...) (variadic) void Send<T>(T msg) where T : IMessage<T> Task<IPacket> ReceiveAsync(Identifier, ...) Task<IPacket> ReceiveAsync(Header, ...) Task<T> ReceiveAsync<T>(...) where T : IMessage<T> Task<TData> RequestAsync<TReq, TRes, TData>(...) where T : IRequestMessage<TReq, TRes, TData> A task that captures the first intercepted message with a specified header. The interceptor to bind to. The headers to listen for. Whether to block the captured packet. A callback that may inspect an intercepted packet and return whether or not it should be captured. A task that captures the first intercepted message with a specified header. The interceptor to bind to. The headers to listen for. Whether to block the captured packet. A callback that may inspect an intercepted packet and return whether or not it should be captured. A base class used to implement an asynchronous task that intercepts packets and returns a result. The result type of the task. A base class used to implement an asynchronous task that intercepts packets and returns a result. The result type of the task. Gets the clients supported by this interceptor task. The interceptor that this task is attached to. Gets the current session information. Executes the task synchronously and returns the result. The maximum number of milliseconds to wait for a result. Use -1 for no timeout. The cancellation token that can be used to cancel the task. Executes the task synchronously and returns the result. The maximum time to wait for a result. Use for no timeout. The cancellation token that can be used to cancel the task. Executes the task asynchronously and returns the result. The maximum time to wait for a result in milliseconds. Use -1 for no timeout. The cancellation token that can be used to cancel the task. If the task fails to complete within the specified timeout. Executes the task asynchronously and returns the result. The maximum time to wait for a result. Use for no timeout. The cancellation token that can be used to cancel the task. If the task fails to complete within the specified timeout. Attaches this task to the interceptor's dispatcher. The default implementation calls if this task implements . Detaches this task from the interceptor's dispatcher. The default implementation calls on the returned by . Invoked when the connection ends while the interceptor task is in progress. Invoked when the task is executed. The default implementation synchronously calls . Invoked when the task is executed. Attempts to set the result of this task to the specified value. Attempts to set the status of this task to canceled. Attempts to set the result of this task to the specified exception. Contains the event arguments of an intercepted message. The type of the message. The inner intercept instance to wrap. Contains the event arguments of an intercepted message. The type of the message. The inner intercept instance to wrap. Wraps the targeted message intercept callback. Gets the parsed message for this intercept. Gets the interceptor that intercepted this message. Gets the time that the message was intercepted. Gets the direction of the message. Gets the sequence number of the intercepted message. Gets whether the packet will be blocked by the interceptor. Gets whether the intercepted packet's unmodified header matches any of the specified identifiers. Flags the packet to be blocked from its destination by the interceptor. Represents an array length. This type is represented as the following: On Unity as a . On Flash as an . On Shockwave as a . Returns the value of this as a string. Thrown when an identifier resolves to multiple message name sets. The ambiguous identifier. The set of message names resolved by the identifier. This can happen when a non-targeted identifier (with as its client type) resolves to multiple sets of identifiers such as (/"Objects") and (/"Objects") which are considered to be different messages. Thrown when an identifier resolves to multiple message name sets. The ambiguous identifier. The set of message names resolved by the identifier. This can happen when a non-targeted identifier (with as its client type) resolves to multiple sets of identifiers such as (/"Objects") and (/"Objects") which are considered to be different messages. Represents an unsigned fixed-length radix-64 encoded integer. The minimum value of a . The maximum value of a . Encodes a B64 value to the specified span. The span to encode into. The value to encode. If the value is outside the range of a B64, or the length of the provided span is less than 2. Decodes a B64 value from the specified read-only byte span. The span to decode from. The decoded B64 value. If the length of the provided span is less than 2. If any of the input bytes' 2 most significant bits are not set to 01. Returns the value of this as a string. Defines information about a client message. Defines information about a client message. Specifies a direction and header value. Specifies a direction and header value. Represents an unknown header. Represents a header that matches all messages. This can be used to intercept all packets with . Represents a set of . Gets the unknown identifiers in this set. Gets the incoming identifiers in this set. Gets the outgoing identifiers in this set. Creates a new empty header set. Creates a header set with the specified headers. Gets a string representation of this header set. Represents an object that can be composed to a packet. Composes the object to a packet using the specified . Represents a client type, direction, and message name. Used to associate a message name with a that is resolved at runtime. Represents a client type, direction, and message name. Used to associate a message name with a that is resolved at runtime. Represents a set of . Gets the unknown identifiers in this set. Gets the incoming identifiers in this set. Gets the outgoing identifiers in this set. Creates a new empty identifier set. Creates an identifier set with the specified identifiers. Adds a new identifier with the specified direction and name to this set. Adds a range of new identifiers with the specified direction and names to this set. Gets a string representation of this identifier set. Represents a message with an associated identifier that can be composed to a packet. A message instance that blocks the packet if it is returned from a . Gets the identifier for this message instance. Gets the clients that this message supports. Represents a service that routes intercepted messages to registered intercept handlers. Gets the message manager associated with this dispatcher. Routes the specified to the relevant handlers currently attached to this dispatcher. Registers a group of intercept handlers. An that deregisters the intercept group when is called. Releases all bound intercept handlers and intercept callbacks. Represents a message handler that can be attached to an interceptor. The source generator will implement this interface on partial classes marked with or . Intercept handlers will be generated for methods marked with , or . Attaches the handler to the specified interceptor. An that detaches the handler when is called. Represents a service that manages client specific message & header information. Initializes the message manager. Gets whether message information is available. Loads the specified client messages. Notifies listeners when messages have been loaded. Attempts to get a header by its identifier. Attempts to get the associated message names for the specified identifier. Attempts to get the associated message names for the specified header. Resolves the specified identifier to a header. If the identifier could not be resolved. Resolves the specified identifiers to an array of headers. If no identifiers were specified. If any of the identifiers could not be resolved. Attempts to resolve the specified identifiers to an array of headers. If no identifiers were specified. Gets whether the header matches any of the specified identifiers. Represents a message with an associated identifier that can be parsed from and composed to a packet. Gets the target identifiers for this message. The default implementation returns an array containing the single . Gets whether each of the identifiers should only intercept on their respective client types. The default implementation returns false. Gets the client types that this message supports. Gets the identifier for this message. The default implementation returns the static . Checks whether the specified packet matches this message. The default implementation returns true. Creates an for the specified . Creates an for the specified . Creates an for the specified . Creates an for the specified . Handles an intercepted packet. The intercept event arguments. Handles an intercepted message. The type of the message. The intercept event arguments. Defines a set of related intercept handlers. Constructs a new empty intercept group. Constructs a new intercept group with the specified handlers. Whether this is a persistent intercept group. Persistent intercept groups can be attached before a connection is established when message information is not yet available. They will be persisted by a message dispatcher and re-attached each time the game connects, until the registration returned by is disposed of. Adds the specified handler to the intercept group. Associates a set of and/or with an . Associates a set of and/or with an . Constructs a new intercept handler with the specified headers and callback. The headers to intercept. The intercept handler callback. Constructs a new intercept handler with the specified identifiers and callback. The identifiers to intercept. The intercept handler callback. Specifies which clients this handler should be registered for. The handler will only be attached on the specified client sessions. Whether to use client-targeted identifiers. Targeted identifiers will only intercept messages for the their specified client. For example, a Flash identifier will only intercept messages for the Flash client. Gets the target headers. Gets the target identifiers. Gets the intercept handler callback. Handles an intercepted message. The type of the message. The intercept event arguments. The intercepted message. Represents a packet of data with a message header. Gets or sets the message header of the packet. Gets the client type of the packet's header. Gets the context this packet was intercepted in. Gets the packet's buffer. Gets a reference to the current position in the packet. Gets the length of the packet. Creates a new reader for this packet at the current position. Creates a new reader for this packet at the specified position. Creates a new writer for this packet at the current position. Creates a new writer for this packet at the specified position. Clears the packet's buffer and resets its position. Creates a copy of this packet. Represents an object that can be parsed from a packet. Parses an object of type from a packet using the specified . Represents an object that can be parsed from and composed to a packet. Provides additional context to a or . Gets the message manager. Provides a method for a request message to check whether a response matches the request. The type of the response message. Gets whether the response message matches the request message. The response message to check. Represents a request message with an associated response message and response data type. The type of the request message. The type of the response message. The type of the response data. Represents a request message with an associated response message. The type of the request message. The type of the response message. Represents a response message with an associated data type. The type of the response message. The type of the response data. Extracts the data from the response message. The response message. The extracted data. Handles an intercepted message. The intercepted message. Creates a new using the specified . Gets the interceptor associated with this dispatcher. Dispatches the specified intercept event to the registered intercept handlers. Releases all registered intercept handlers. Manages messages between multiple clients using a mapping file. Manages messages between multiple clients using a mapping file. Whether to fetch the message map file from the xabbo/messages GitHub repo upon initialization if it does not exist locally. The maximum age of the message map file after which it is invalidated. Maps message names between clients. Defines an association of message names between clients. Defines an association of message names between clients. Handles an intercepted message and allows the handler to modify the intercepted message by returning a modified or new instance. The type of the message. Represents a packet of data with a message header. Represents a packet of data with a message header. Disposes of this packet's buffer. Represents a resizable buffer backed by a rented memory span of from a . The initial minimum capacity of the rented span of bytes. Represents a resizable buffer backed by a rented memory span of from a . The initial minimum capacity of the rented span of bytes. Gets the length of the buffer. Gets the memory of the buffer as a . Constructs a new buffer and copies the specified into its internal memory. The data to copy into this buffer. Constructs a new buffer and copies the specified into its internal memory. The data to copy into this buffer. Grows the buffer to the specified length if the current length is insufficient. Allocates bytes from the position and returns the allocated range as a of bytes. If + is greater than the buffer length, the buffer is grown to support the new length. may not be greater than the current length. Resizes the specified range of the buffer to the specified length and returns the resized range as a of bytes. The tail portion of the buffer after the end of the range will be copied into the correct position. If the range grows in length, the expanded portion of the range is not cleared, so it is the caller's responsibility to write valid data to the resulting span. Resets the buffer's length to zero. Disposes of this buffer and releases its memory back to the memory pool. Creates a new copy of this buffer. Provides primitive packet read operations. Provides primitive packet read operations. Reads a of bytes of length from the current position and advances it. The number of bytes to read. If the current position plus the specified length exceeds the length of the packet. Reads a from the current position and advances it. Decoded as a on Shockwave, otherwise as a . Reads a from the current position and advances it. Not supported on Shockwave. If the is . Reads a from the current position and advances it. Decoded as a on Shockwave, otherwise as a 16-bit integer. Reads a short array from the current position and advances it. Reads an from the current position and advances it. Decoded as a on Shockwave, otherwise as a 32-bit integer. Reads an int array from the current position and advances it. Reads a from the current position and advances it. Read as a on Flash and Shockwave, otherwise decoded as a 32-bit floating point number. Reads a from the current position and advances it. Decoded as a 64-bit integer. Not supported on Flash or Shockwave. If the is or . Reads a from the current position and advances it. On Shockwave, when the header direction is incoming, it is decoded as a sequence of characters terminated by a 0x02 byte. Otherwise, it is decoded as a length-prefixed UTF-8 . Reads a string array from the current position and advances it. Reads an from the current position and advances it. Read as a on Unity, or an on Flash and Shockwave. If the client type is invalid. Reads an Id array from the current position and advances it. Reads a from the current position and advances it. Read as a on Unity, or an on Flash and Shockwave. If the client type is invalid. Reads a from the current position and advances it. Not supported on Unity or Flash. If the is or . Reads a from the current position and advances it. Not supported on Unity or Flash. If the is or . Reads the contents of the packet as a string and advances the position to the end of the packet. The position must be at the start of the packet. Only supported on Shockwave. Parses a from the current position and advances it. Parses an array of from the current position and advances it. Provides primitive packet write operations. Provides primitive packet write operations. Allocates the specified number of bytes from the current position and returns the allocated range as a of bytes. Resizes a range of bytes from the current position of length `` to length `` and returns the resized range as a of bytes. The length to resize from. The length to resize to The resized range as a of bytes. Writes the specified of bytes to the current position. Writes the specified value to the current position and advances it. Encoded as a on Shockwave, otherwise as a . Writes the specified value to the current position and advances it. Not supported on Shockwave. If the is . Writes the specified value to the current position and advances it. Encoded as a on Shockwave, otherwise as a 16-bit integer. Writes a short array to the current position and advances it. Writes the specified value to the current position and advances it. Encoded as a on Shockwave, otherwise as a 32-bit integer. Writes an int array to the current position and advances it. Writes the specified value to the current position and advances it. Written as a on Flash and Shockwave, otherwise encoded as a 32-bit floating point number. Writes the specified value to the current position and advances it. Encoded as a 64-bit integer. Not supported on Flash or Shockwave. If the is or . Writes the specified value to the current position and advances it. On Shockwave, when the header direction is incoming, it is encoded as a sequence of characters terminated by a 0x02 byte. Otherwise, it is encoded as a length-prefixed UTF-8 . If the string length exceeds the maximum value of an unsigned 16-bit integer. If the string is null. Writes a string array to the current position and advances it. Writes the specified value to the current position and advances it. Written as a on Unity, or an on Flash and Shockwave. If the client type is invalid. Writes an Id array to the current position and advances it. Writes the specified value to the current position and advances it. Written as a on Unity, or an on Flash and Shockwave. If the client type is invalid. If the value is negative. Writes the specified value to the current position and advances it. Not supported on Unity or Flash. If the is or . Writes the specified value to the current position and advances it. Not supported on Unity or Flash. If the is or . Replaces the packet buffer with the specified content and advances the position to the end of the packet. The position must be at the start of the packet. Only supported on Shockwave. Composes the specified to the current position and advances it. Composes the specified array of to the current position and advances it. Thrown when a set of s fail to resolve to their respective s. The identifiers that failed to resolve. Thrown when a set of s fail to resolve to their respective s. The identifiers that failed to resolve. Represents a signed variable-length radix-64 encoded integer. The minimum value of a . The maximum value of a . Returns the number of bytes required to represent the specified VL64. Returns the number of bytes required to decode a VL64, given (and including) the first byte. Encodes a VL64 value to the specified byte span. The span to encode into. The value to encode. If the value is outside the range of a VL64. If the length of the provided span is insufficient to encode the specified VL64 value. Decodes a VL64 value from the specified read-only byte span. The span to decode from. The decoded VL64 value. If the provided span does not have enough bytes to decode a VL64 based on the length decoded from the first byte. If the length decoded from the first byte is outside the valid range of 1-6, or any of the input bytes' 2 most significant bits are not set to 01. Returns the value of this as a string. Represents a packet's content as a string. Only supported on Shockwave. This can only be read or written when the position is at the start of the packet, after which the position will be set to the end of the packet. Represents a packet's content as a string. Only supported on Shockwave. This can only be read or written when the position is at the start of the packet, after which the position will be set to the end of the packet. Represents a connection session. The hotel of the current session. The client of the current session. Represents a connection session. The hotel of the current session. The client of the current session. The hotel of the current session. The client of the current session. Represents no session. Gets whether the session is any of the specified clients. The client to test for. This may be a combination of multiple clients. true if the specified client type contains the current session's client. Defines the source generated JSON serialization contract metadata for a given type. Defines the source generated JSON serialization contract metadata for a given type. Defines the source generated JSON serialization contract metadata for a given type. Defines the source generated JSON serialization contract metadata for a given type. The default associated with a default instance. The source-generated options associated with this context. Thrown when an unhandled exception is thrown from an intercept handler. The header of the message The handler that the exception was thrown from. The exception that was thrown. Thrown when an unhandled exception is thrown from an intercept handler. The header of the message The handler that the exception was thrown from. The exception that was thrown. The header of the intercepted message when the exception was thrown. The handler that the exception was thrown from. Thrown when an operation is not supported for the current client. Thrown when an operation is not supported for the current client. The client that is not supported. Throws if the specified client is not a known client. Throws if the client is any of the specified clients. Throws if the client is unknown or any of the specified clients. Throws if the client is the Shockwave client. Throws if the client is the Unity or Flash client. Reads a value of the specified type from the current position in the packet. Reads a value of the specified type from the specified position in the packet. Writes a value of the specified type to the current position in the packet. Writes a value of the specified type to the specified position in the packet. Replaces a value of the specified type at the current position in the packet. Replaces a value of the specified type at the specified position in the packet. Modifies a value of the specified type at the current position in the packet. Modifies a value of the specified type at the specified position in the packet.