• 如果您发现没有下载许可,请先验证邮箱再进行下载;金锭可通过每日签到或资源出售获取,目前没有其他渠道可获取。
  • 游客, 欢迎您来到九域资源社区,如果您是新人,请前往 论坛公告 板块查看新人引导教程 或者 点我打开
  • 已支持自助资源推荐投送,可在资源“更多选项”中使用金粒投放。
  • 已支持 API 上传资源版本更新,点击了解详情
  • 已支持付费资源设置购买协议,可在“更多选项”中设置。
  • 全站已支持 Markdown 格式文本编辑器,可自由选择使用 BB 代码或 Markdown 格式。

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

Xiao_Lin

Lv.1 泥土
2024-06-17
1
0
0
钻石
0.00 钻石
金锭
40 金锭
如题,插件发送一个数据包之类的
客户端接收并处理即可
 
一个简单的 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