Skip to content

Message Channels

Aeltumn edited this page Oct 24, 2023 · 4 revisions

Message Channels

Noxesium communicates with the server over the plugin messaging channel, but through the use of Fabric Packets. This implementation means packets are defined in Noxesium's code as they would be in Minecrafts source code. Clientbound and serverbound packets are implemented separately since both only need to be handled on the client-side. Noxesium sends and receives all packets on the noxesium-v1 namespace. This version identifier is not intended to change, it has changed once for Noxesium 1.0.0 but should not change again unless the entire packet system is redone. Instead, each packet starts with its own version integer. This version integer can be used to change individual packets. As Noxesium is intended to be used between clients on servers on both different Minecraft versions and different Noxesium versions it is necessary to strongly support backwards compatibility. For this purpose the version integer in each packet can be individually tweaked. Packets will both attempt to send in an older format and parse from an older format if the server is outdated. It is left up to the developer to build similar compatibility on the server-side.

If you are interested in understanding what packets Noxesium can receive and which it can send, feel free to look through the network.clientbound and network.serverbound packages. Packets are documented in their respective classes and should offer insights into their capabilities through the variable names and constructor arguments.

Server Rules

Server Rules are a special system similar to Game Rules but able to be modified whenever desired. Server Rule settings are cleared whenever a player disconnects from a server. These values allow a server to affect the client's state easily. Below is a list of every server rule currently available and their data format. While server rules have packets for setting each individual server rule can decide how the packet is decoded. As such, a detailed breakdown is provided for each individual rule and how it interprets the incoming packet.

Disable Auto Spin Attack. Disables colliding with other entities while riptiding. This also prevents the spin attack from dealing any damage to entities moved through.

Field Name Field Type Notes
Index VarInt 0
Value Boolean false by default.

Global Can Place On. Makes client in adventure able to build on blocks provided. Similar to the per-item Place On but applies to all items including the empty hand.

Field Name Field Type Notes
Index VarInt 1
List List of Blocks Example: minecraft:grass_block will make the client think it can place blocks on grass blocks in adventure.

Global Can Destroy. Makes client in adventure able to break blocks provided. Similar to the per-item Can Destroy but applies to all items including the empty hand.

Field Name Field Type Notes
Index VarInt 2
Blocks List of Blocks Example: minecraft:grass_block will make the client think it can break grass blocks in adventure.

Held Item Name Offset. Moves the item tooltip text in the action bar vertically. Positive values move it up.

Field Name Field Type Notes
Index VarInt 3
Offset VarInt 0 by default.

Camera Lock. Makes the client unable to move their camera.

Field Name Field Type Notes
Index VarInt 4
Locked Boolean false by default.

Custom Music. Disables vanilla music and adds two new sound categories: Core Music and Game Music.

Field Name Field Type Notes
Index VarInt 5
Enabled Boolean false by default.

Disable Boat Collisions. Disables boats colliding with other entities. Similar modification is recommended on the server side to ensure behaviour congruity.

Field Name Field Type Notes
Index VarInt 6
Value Boolean false by default.
Clone this wiki locally