• 论坛

导航

  • 主页
  • 样式指南
  • 入门
    • 概述
    • Mod的结构
    • Forge更新检查器
    • 依赖管理
    • 调试分析器
  • 概念
    • Sides
    • 资源
    • 注册表
    • Jar签名
    • 国际化和本地化
  • 方块
    • 概述
    • 介绍方块状态
    • 方块互动
  • 动画 API
    • 概述
    • 骨骼
    • 动画状态机
    • 使用API
  • TileEntity
    • 概述
    • 特殊渲染器
  • 物品
    • 主页
    • 战利品表
  • 模型
    • 模型概述
    • 模型文件
    • 方块状态
      • 方块状态JSON概述
      • Forge方块状态JSON
    • 绑定模型到方块和物品
    • 彩色纹理
    • 物品属性概述
    • 高级模型(未翻译)
      • 高级模型介绍
      • IModel
      • IModelState and IModelPart
      • IBakedModel
      • Extended Blockstates
      • Perspective
      • ItemOverrideList
      • ICustomModelLoader
  • 渲染
    • TileEntityItemStackRenderer
  • 事件
    • 基本用法
  • 网络
    • 主页
    • 概述
    • SimpleImpl
    • 实体
      • Spawn数据
      • 静态数据
  • 数据储存
    • 能力系统
    • World Saved Data
    • 拓展实体属性
    • Config注解
  • 工具
    • 合成
    • 矿物词典
    • 权限API
  • 效果
    • 音效
  • 惯例
    • 版本命名
    • 文件位置
    • 加载阶段
  • 参与Forge开发
    • 入门
    • PR指南

实体

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

Spawn数据

一般来说,修改实体的产生由Forge单独处理。

提示

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

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

IEntityAdditionalSpawnData

如果您的实体具有客户端所需的数据,但不会随时间发生变化,则可以使用此接口将其添加到实体spawn数据包中。 writeSpawnData()和readSpawnData(),以类似于IMessage中toBytes()/fromBytes()方法的方式控制数据如何与网络缓冲区进行/解码。

IThrowableEntity

这适用于“抛射物”类型的实体。 实现此接口将导致“源”实体的ID以及初始速度与spawn数据包一起发送到客户端。

静态数据

数据参数

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

首先,您需要一个DataParameter<T>来保存您希望保持同步的数据。 这应该存储为实体类中的静态final字段,通过调用EntityDataManager.createKey()并为该类型的数据传递实体类和序列化器来获得。 可以在DataSerializers类中找到可用的序列化器实现作为静态常量。

警告

您应该 仅 为您自己的实体创建数据参数,在该实体的class中。 向无法控制的实体添加参数会导致用于通过网络发送该数据的ID变得不同步,从而导致难以调试崩溃。

然后,覆盖entityInit()并为每个数据参数调用this.dataManager.register(),传递参数和要使用的初始值。 记得要先调用super.entityInit()!

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

基于 MkDocs 使用自定义主题构建. 托管于 Read the Docs.
启用夜间模式