• 游客, 欢迎您来到九域资源社区,如果您是新人,请前往 论坛公告 板块查看新人引导教程 或者 点我打开
    如果您发现没有下载许可, 请先验证邮箱再进行下载;金锭可通过每日登陆或资源出售获取,目前没有其他渠道可获取。

求1.12.2 Bukkit插件 与 Forge模组 进行通信的教程

Xiao_Lin

Lv.1 泥土
2024-06-17
1
0
0
钻石
0.00 钻石
金锭
35 金锭
如题,插件发送一个数据包之类的
客户端接收并处理即可
 
一个简单的 S -> C 方案。

$ 服务端
发送 PacketPlayOutCustomPayload 包给目标玩家
Java:
    public static sendPacket(Player player) {
        EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
        // 你要发送的数据
        byte[] bytes = "这是数据啊".getBytes(StandardCharsets.UTF_8);
        PacketDataSerializer serializer = new PacketDataSerializer(Unpooled.wrappedBuffer(bytes));
        PacketPlayOutCustomPayload packet = new PacketPlayOutCustomPayload("mychannel", serializer);
        entityPlayer.playerConnection.sendPacket(packet);
    }

$ 客户端
监听 FMLNetworkEvent.ClientCustomPacketEvent 获取 FMLProxyEvent 取到 ByteBuf 直接读取数据即可。
Java:
    public void registerChannel() {
        // 注册通道
        FMLEventChannel channel = NetworkRegistry.INSTANCE.newEventDrivenChannel("mychannel");
        channel.register(传入你监听发包事件类的对象);
    }
   
    @SubscribeEvent
    public void onPacket(FMLNetworkEvent.ClientCustomPacketEvent event) {
        FMLProxyPacket fpp = event.getPacket();
        if (fpp.channel().contains("mychannel") {
            // 这里写你的逻辑, 最好另起线程执行
            ByteBuf bb = fpp.payload().copy();
        }
    }
 
打赏用户
X