iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0

network

接下來我們建立一個新的資料夾叫network,然後建立一個新的class 叫OpenCustomGuiPacket,我們這樣寫

public class OpenCustomGuiPacket {
    public static final Identifier ID = new Identifier(TheClassicofMountainsandOceans.MOD_ID,"opengui");

    public static void sendToClient(ServerPlayerEntity player) {
        PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());
        
        ServerPlayNetworking.send(player, ID, buf);
    }

    public static void registerReceiver() {
        ClientPlayNetworking.registerGlobalReceiver(ID, (client, handler, buf, responseSender) -> {
            client.execute(() -> {
                
                MinecraftClient.getInstance().setScreen(new CustomScreen(
                        new CustomScreenHandler(0, MinecraftClient.getInstance().player.getInventory()),
                        MinecraftClient.getInstance().player.getInventory(),
                        MinecraftClient.getInstance().player.getName()
                ));
            });
        });
    }
}
public static final Identifier ID = new Identifier(TheClassicofMountainsandOceans.MOD_ID,"opengui");

Identifier用來標示封包,然後使用opengui作為封包的名稱。

PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());

建立一個PacketByteBuf物件來儲存將要傳送的資料

ServerPlayNetworking.send(player, ID, buf)

使用 ServerPlayNetworking 將封包發送給特定的玩家。player 是目標玩家,ID 是封包的唯一識別碼,buf 是要發送的資料。


上一篇
Minecraft Fabric Mod 模組製作 DAY26
下一篇
Minecraft Fabric Mod 模組製作 DAY28
系列文
Minecraft JAVA Fabric 模組製作 : 成為真正的創世神28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言