Interface ScreenNetworking


public interface ScreenNetworking
ScreenNetworking handles screen-related network messages sent between the server and the client.

Registering a message receiver

Message receivers can be registered by calling receive(net.minecraft.util.Identifier, com.mojang.serialization.Decoder<D>, io.github.cottonmc.cotton.gui.networking.ScreenNetworking.MessageReceiver<D>) on a ScreenNetworking for the receiving side. The message ID is a unique ID that matches between the sender and the receiver.

Message receivers should be registered in the constructor of a SyncedGuiDescription.

Sending messages

Messages can be sent by calling send(net.minecraft.util.Identifier, com.mojang.serialization.Encoder<D>, D) on a ScreenNetworking for the sending side. The message ID and codec should match up with a receiver registered on the opposite side.

Example

private static final Identifier MESSAGE_ID = new Identifier("my_mod", "some_message");

// Receiver
ScreenNetworking.of(this, NetworkSide.SERVER).receive(MESSAGE_ID, Codec.INT, data -> {
	   // Example data: a lucky number as an int
    System.out.println("Your lucky number is " + data + "!");
});

// Sending

// We're sending from a button. The packet data is our lucky number, 123.
WButton button = ...;
button.setOnClick(() -> {
    ScreenNetworking.of(this, NetworkSide.CLIENT).send(MESSAGE_ID, Codec.INT, 123);
});
Since:
3.3.0
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
    A handler for received screen messages.
  • Method Summary

    Modifier and Type
    Method
    Description
    of(SyncedGuiDescription description, NetworkSide networkSide)
    Gets a networking handler for the GUI description that is active on the specified side.
    <D> void
    receive(Identifier message, com.mojang.serialization.Decoder<D> decoder, ScreenNetworking.MessageReceiver<D> receiver)
    Registers a message receiver for the message.
    <D> void
    send(Identifier message, com.mojang.serialization.Encoder<D> encoder, D data)
    Sends a screen message to the other side of the connection.
  • Method Details

    • of

      static ScreenNetworking of(SyncedGuiDescription description, NetworkSide networkSide)
      Gets a networking handler for the GUI description that is active on the specified side.
      Parameters:
      description - the GUI description
      networkSide - the network side
      Returns:
      the network handler
      Throws:
      NullPointerException - if either parameter is null
    • receive

      <D> void receive(Identifier message, com.mojang.serialization.Decoder<D> decoder, ScreenNetworking.MessageReceiver<D> receiver)
      Registers a message receiver for the message.

      The decoder can depend on registry data and RegistryOps is available.

      Type Parameters:
      D - the message data type
      Parameters:
      message - the screen message ID
      decoder - the message codec
      receiver - the message receiver
      Throws:
      IllegalStateException - if the message has already been registered
      NullPointerException - if any parameter is null
    • send

      <D> void send(Identifier message, com.mojang.serialization.Encoder<D> encoder, D data)
      Sends a screen message to the other side of the connection.

      The encoder can depend on registry data and RegistryOps is available.

      Parameters:
      message - the screen message ID
      encoder - the message encoder
      data - the message data
      Throws:
      NullPointerException - if the message ID or the encoder is null