回声播放器

回声播放器

一个Minecraft Forge模组,用于创建持久化的虚拟玩家,通过直接附身无缝切换,并通过外部自动化接口进行控制。

EchoPlayer

EchoPlayer 是一个适用于 Minecraft 1.20.1 / Forge 的持久化虚拟玩家模组。

它允许你创建多个独立的玩家分身,直接附身并控制它们,并且无需启动额外的 Minecraft 客户端即可在主角色和不同分身之间快速切换。

按住 左Alt 键打开附身轮盘,将光标指向一个角色,松开按键即可切换控制。每个分身都像一个独立的玩家,拥有自己的身份、物品栏、装备、状态和持久化的玩家数据。

EchoPlayer 专为多角色游戏、多人游戏机制测试、整合包兼容性测试、场景搭建而设计,并可作为外部自动化或 AI 控制玩家系统的基础。

特性

直接附身与快速切换

EchoPlayer 允许你像控制自己的角色一样直接控制一个虚拟玩家。

附身一个分身后,你可以:

  • 正常移动和环顾四周
  • 攻击实体和破坏方块
  • 使用物品并与方块互动
  • 打开容器
  • 合成物品
  • 管理分身的物品栏和装备
  • 骑乘实体并正常与世界互动

按住 左Alt 键打开附身轮盘。将光标移向目标并松开按键即可切换到该目标。

轮盘包含你的原始角色以及你有权管理的分身。你可以直接从一个分身切换到另一个分身,而无需先返回到你的原始角色。

选择你的原始角色以返回,将光标移回中心以取消,或按 Esc 键关闭轮盘。

随时按 O 键可立即停止附身分身并返回到你的原始角色。

两个按键绑定都可以在 Minecraft 的控制设置中更改。

EchoPlayer 在切换过程中也会处理角色朝向、相机状态、骑乘、睡觉以及其他相关状态。

附身轮盘不会暂停游戏,并且只能在没有其他界面(如物品栏或聊天界面)处于活动状态时打开。

控制权始终由服务器验证。当前正被另一个玩家或自动化控制器控制的分身可能无法被附身。

独立角色状态与持久化

每个 EchoPlayer 分身都拥有自己独立的、持久化的玩家身份和状态。

每个分身都维护着自己独立的:

  • 物品栏
  • 装备
  • 生命值和伤害吸收
  • 饥饿度和饱和度
  • 经验
  • 药水效果
  • 属性
  • 物品冷却时间
  • 行动状态
  • 玩家数据

当你附身一个分身时,你使用的是该分身的状态,而不是你原始角色的状态。当附身结束时,你原始角色的状态会被恢复。

分身信息、创建者、访问权限设置和玩家数据会随着世界一起保存。当世界重新加载或服务器重启时,持久化的分身会被恢复。

分身也参与正常的死亡和重生过程。如果在附身期间分身死亡,EchoPlayer 会适当地处理状态转换和恢复。

当你控制一个分身时,你的原始角色仍然作为一个物理实体存在于世界中。它仍可能受到伤害或死亡,因此在切换角色前应将其留在安全的地方。

世界交互与多人游戏可见性

EchoPlayer 包含额外的处理,使被附身的分身行为与现实玩家更加一致。

这包括对以下内容的支持:

  • 攻击和受到伤害
  • 拾取物品和经验
  • 弹射物伤害归属
  • 放置船只
  • 骑乘实体
  • 钓鱼浮漂
  • 拴绳关系
  • 命令执行身份
  • 玩家选择器
  • 睡觉玩家数量

在角色之间切换时,相关的关系和状态会在必要时进行转移或恢复。

其他玩家会与当前被控制的角色保持同步,包括其方向和骑乘状态。EchoPlayer 附身系统所使用的内部实体在适当的情况下会对多人游戏隐藏。

自定义皮肤

EchoPlayer 支持为单个分身设置自定义皮肤。

可以使用以下方式分配皮肤:

  • 一个 Minecraft 玩家名称
  • 一个皮肤图片 URL
  • 分身的默认皮肤

通过 Minecraft 玩家名称查找皮肤要求服务器能够访问相应的在线服务。

从图片 URL 生成皮肤使用 MineSkin,因此其可用性可能取决于网络状况、服务可用性和速率限制。

模组兼容性

EchoPlayer 包含针对多个模组和系统的专门兼容性处理。

这些集成是可选的,并非 EchoPlayer 基本附身功能所必需。

Touhou Little Maid

EchoPlayer 在原始玩家和分身之间切换时,会将女仆的主人查询映射到对应的角色身份。

这有助于保持依赖于玩家所有权的行为。

灵魂符咒的所有权检查也已适配,以便在附身分身时,可以适当地使用属于原始角色或当前控制分身的兼容灵魂符咒,包括释放存储的女仆,同时保留物品的原始所有权信息。

Curios API

在附身、切换或从分身返回时,Curios 装备会被同步和恢复。

每个角色都拥有自己独立的 Curios 物品栏。

Player Collars

EchoPlayer 为玩家所有权和项圈相关行为提供兼容性处理,包括:

  • 主人身份查找和存储
  • 拴绳交互
  • 所有权转移
  • 拉拽物理效果
  • 点击器响应
  • 项圈染色界面
  • 项圈荆棘伤害

Yes Steve Model

切换角色时,EchoPlayer 会复制并重新同步选定的 YSM 模型数据。

这允许控制客户端和同一维度中的其他玩家都能接收当前活动角色的适当模型选择。

原版可驯服动物

原版可驯服动物的所有权检查已适配,以便在原始玩家和分身之间切换时,主人关系保持一致。

兼容性支持反映了当前已实现的集成范围,并不保证支持这些模组的每个版本或功能。

其他存储自定义物品栏、能力、所有权信息或特殊玩家身份数据的模组可能需要额外的兼容性处理。

安装

EchoPlayer 目前的目标环境:

  • Minecraft Java版: 1.20.1
  • 模组加载器: Forge
  • Java: 17

在多人游戏中,EchoPlayer 必须同时安装在客户端和服务器上。

对于单人游戏世界,只需将模组安装到客户端实例的 mods 文件夹中即可。

在多人游戏中,服务器和参与游戏的客户端应使用相同版本的 EchoPlayer。

快速上手

进入世界后,创建你的第一个分身:

/echoplayer spawn EchoOne

然后控制它:

/echoplayer control EchoOne

第一条命令会在你当前的位置和朝向上创建一个持久化的分身。第二条命令会附身该分身。

一旦被附身,你就可以通过该分身正常移动、与方块互动、使用物品、战斗和游玩。

创建另一个分身:

/echoplayer spawn EchoTwo

然后按住 左Alt 键,在附身轮盘上将光标指向 EchoTwo,松开按键即可直接切换到它。

要返回你的原始角色,请在附身轮盘上选择它,按 O 键,或运行:

/echoplayer unpossess

分身名称不能包含空格,且最多可包含 16 个字符。EchoPlayer 在创建新分身时会检查名称和身份冲突。

命令与权限

根命令为:

/echoplayer

对现有分身进行操作的命令会根据你当前有权管理的分身提供名称补全功能。

创建一个分身

/echoplayer spawn <名字>

在你当前的位置创建一个持久化的分身,并将你记录为其创建者。

附身一个分身

/echoplayer control <名字>

控制指定的分身。

如果你已经在附身另一个分身,此命令会直接切换到新的目标。

停止附身

/echoplayer unpossess

将控制权返回给你的原始角色,同时保留该分身及其数据。

移除一个分身

/echoplayer remove <名字>

永久移除指定的分身并删除其持久化的玩家数据。

如果只想停止控制某个分身而不删除它,请改用 unpossess 命令。

按玩家名称设置皮肤

/echoplayer skin set <名字> <皮肤名>

使用指定 Minecraft 玩家名称关联的皮肤来设置分身的皮肤。

从 URL 设置皮肤

/echoplayer skin url <名字> <url>

使用皮肤图片 URL 设置分身的皮肤。

清除自定义皮肤

/echoplayer skin clear <名字>

移除分身的自定义皮肤。

公开分身控制权

查看当前公开控制权设置:

/echoplayer config allow_other_players_control

启用或禁用它:

/echoplayer config allow_other_players_control <true|false>

更改此设置需要权限等级 2,通常是管理员权限。

默认情况下,只有分身的创建者才能控制、移除或修改其皮肤。

当 allow_other_players_control 启用时,其他玩家也允许执行这些管理操作。

此设置随世界保存,默认处于禁用状态。

一个特定的分身同时只能被一个真实玩家直接附身。

如果某个外部自动化控制器当前拥有该分身的控制输入权,玩家能否暂时接管取决于该自动化控制器的附身抢占策略。

自动化与 AI 扩展接口

EchoPlayer 也被设计为 外部自动化和 AI 控制系统 的基础。

它暴露了一个控制仲裁 API,允许附加模组获取对 EchoPlayer 分身的控制权,并提供它们自己的自动化行为。

可能的扩展可以实现诸如以下功能:

  • 寻路
  • 导航到目标位置
  • 挖掘任务
  • 根据蓝图建造
  • 物品收集
  • 耕种
  • 战斗行为
  • 任务调度
  • AI 驱动的决策
  • 与外部控制系统集成

EchoPlayer 本身提供持久化的玩家实体、玩家状态处理、附身系统和控制所有权仲裁。

它不会自动让分身自行执行任务。寻路、规划、自动化逻辑和 AI 行为由外部扩展提供。

主要的集成入口点是 EchoPlayerControlApi。

自动化控制器在向分身写入输入之前,会获取一个独占的控制租约。这可以防止多个系统同时尝试控制同一个角色。

自动化控制器可以选择玩家附身应如何与其控制租约交互。

禁用附身抢占时,玩家无法附身处于自动化控制之下的分身。

启用附身抢占时,授权玩家可以暂时接管控制。EchoPlayer 会请求自动化控制器释放其可写输入,在玩家附身分身期间暂停自动化租约,并在玩家离开后恢复自动化控制。

该 API 还为以下事件提供生命周期通知:

  • 玩家附身从自动化接管控制
  • 玩家附身结束
  • 自动化控制被恢复
  • 控制租约被撤销
  • 分身被移除或卸载
  • 服务器关闭

自动化租约可以存续正常的死亡和重生过程,并转移到具有相同 UUID 的替代分身实例上。

这使得 EchoPlayer 不仅适用于手动多角色游戏,也适合作为更高级自动化、AI 代理和外部控制的 Minecraft 角色的通用虚拟玩家层。