• Forge论坛

导航页

  • 主页
  • 向文档做出贡献
  • 入门
    • 概述
    • 模组文件
    • 规划你的模组结构
    • 版本号
  • 核心概念
    • 注册表
    • 端位(Sides)
    • 事件
    • 模组生命周期
    • 资源
    • 国际化与本地化
  • 方块
    • 概述
    • 方块状态
  • 物品
    • 概述
    • BlockEntityWithoutLevelRenderer
  • 网络
    • 概述
    • SimpleImpl
    • 实体的同步
      • 生成数据
      • 动态数据
  • 方块实体
    • 概述
    • BlockEntityRenderer
  • 游戏特效
    • 粒子效果
    • 音效
  • 数据储存
    • Capabilities
    • Saved Data
    • 编解码器(Codecs)
  • 图形用户界面
    • 菜单(Menus)
    • 屏幕(Screens)
  • 渲染
    • 模型扩展
      • 概述
      • 根变换
      • 渲染类型
      • 部分可见度
      • 面数据
    • 模型加载器
      • 概述
      • 烘焙模型
      • 变换
      • 物品重载
  • 资源
    • 客户端资源(Assets)
      • 概述
      • 模型
        • 概述
        • 纹理色调
        • 物品属性
    • 服务端数据(Data)
      • 概述
      • 配方
        • 概述
        • 自定义配方
        • 原料
        • 非数据包配方
      • 战利品表
      • 全局战利品修改器
      • 标签
      • 进度
      • 条件性加载数据
  • 数据生成
    • 概述
    • 客户端资源(Assets)
      • 模型提供者
      • 语言提供者
      • 音效提供者
    • 服务端数据(Data)
      • 配方提供者
      • 战利品表提供者
      • 标签提供者
      • 进度提供者
      • 全局战利品修改器提供者
      • 数据包注册表对象提供者
  • 杂项功能
    • 配置
    • 键盘布局
    • 游戏测试
    • Forge更新检查器
    • 调试分析器
  • 进阶主题
    • 访问转换器
  • 向Forge做出贡献
    • 概述
    • Pull Request准则
  • 旧版本
    • 概述
    • 移植到当前版本

实体

除了常规的网络消息之外,Forge还提供了各种其他系统来处理同步实体数据。

生成数据

一般来说,由模组编写的实体的生成是由Forge单独处理的。

注意

这意味着简单地继承一个原版实体类可能不会继承它的所有行为。你可能需要自己实施某些原版行为。

你可以通过实现以下接口向Forge发送的生成数据包添加额外的数据。

IEntityAdditionalSpawnData

如果你的实体具有客户端所需的数据,但不会随时间变化,则可以使用此接口将其添加到实体生成数据包中。#writeSpawnData和#readSpawnData控制如何将数据编码到网络缓冲区/从网络缓冲区解码数据。

动态数据

数据参数

这是用于将实体数据从服务端同步到客户端的主要原版系统。因此,可以参考一些原版的例子。

首先,对于要保持同步的数据,你需要一个EntityDataAccessor<T>。这应该存储为你的实体类中的static final字段,通过调用SynchedEntityData#defineId并传递实体类和该类型数据的序列化器来获得。可用的序列化器实现可以在EntityDataSerializers类中的静态常量找到。

警告

你应该 只 在相应实体的类 中为自己的实体创建数据参数。 向并非你所控制的实体添加参数可能会导致用于通过网络发送数据的ID不同步,从而导致难以调试的崩溃。

然后,重写Entity#defineSynchedData并为每个数据参数调用this.entityData.define(...),传递参数和要使用的初始值。请记住始终首先调用super方法!

然后,你可以通过实体的entityData实例获取并设置这些值。所做的更改将自动同步到客户端。

Built with MkDocs using a custom theme. Hosted by Read the Docs.
Enable Dark Theme