跳转至

假人

Leaves 提供了类似 Carpet 的假人支持,假人的命令是 /bot

什么是假人?

假人是一个玩家实体,怪物会被它吸引并攻击它,它也可以模拟部分玩家操作,比如:

  • 区块随机刻
  • 生物生成
  • 物品使用
  • 方块破坏
  • ...

权限

  • bukkit.command.bot - 允许玩家使用 /bot 命令。

Tip

在执行命令前,请确保已经拥有此权限。

创建假人

要创建假人,你可以在游戏内执行命令:/bot create <假人名> [皮肤名],或者在控制台执行命令:/bot create <假人名> <皮肤名> <世界名> <X> <Y> <Z>

  • <假人名> 是必要参数,并且假人名称需要符合 Minecraft 的玩家名规范。
  • [皮肤名] 是可选参数,假人将会使用皮肤名对应的皮肤。如果未填写此参数,则假人会使用假人名对应的皮肤。

通过在游戏内执行命令创建的假人会继承创建者的位置和视角(也就是创建者的 NBT 标签 RotationPos)。

Tip

如果玩家在创建假人后不离开假人位置,假人会和玩家发生碰撞,可能导致一定位置偏移。

Tip

若假人在创建后迟迟没有出现,可能需要检查服务器和 Mojang 皮肤服务器的连接。

Danger

假人不会穿过传送门,因此需要将假人放置在需要的世界。如果使用命令或其他方法使假人改变世界,则假人可能不会正常工作。

移除假人

假人无法复活,即使游戏规则 keepInventorytrue,也会在死亡后扔出所有物品并移除自己(而不是像 Carpet 那样断开连接)。

在默认情况下,假人会在服务器关闭前被全部移除。你可以在配置中修改假人是否在服务器重启之后自动还原。

你也可以使用命令 /bot remove <假人名> 来移除指定的假人。

你还可以使用命令 /bot remove <假人名> [时] [分] [秒] 来定时移除指定的假人。

假人加载/保存

假人可以被手动加载/保存,这相当于正常玩家的上下线操作,在保存前后,假人的所有信息(例如位置和维度)都会保持一致。

你可以通过 /bot save <假人名> 来保存假人,同时使用 /bot load <假人名> 来加载假人。

假人配置

假人存在若干可以通过命令配置的配置项,它们会对假人的运行产生影响。

每个假人的配置项都是独立且唯一的,在大部分情况下,它们不会互相影响。

你可以使用命令 /bot config <假人名> <配置项名> 来查看假人某一配置项的当前状态。

同时 /bot config <假人名> <配置项名> [修改值] 也可以用来修改假人当前的配置项值。

始终发送信息

  • 配置名: always_send_data
  • 类型: 布尔值
  • 默认值: 由配置文件中的 always-send-data 决定
  • 描述: 是否一直向位于相同世界的玩家发送假人数据,使得玩家可以始终观测到假人(即使可能不会渲染)。

模拟距离

  • 配置名: simulation_distance
  • 类型: 整数
  • 默认值: 由服务器配置的当前世界 simulation-distance 决定
  • 描述: 影响假人可以强加载的区块大小,与原版的模拟距离作用相同。

睡眠计数跳过

  • 配置名: skip_sleep
  • 类型: 布尔值
  • 默认值: 由配置文件中的 skip-sleep-check 决定
  • 描述: 是否在睡眠计数时跳过假人,使得不需要假人睡眠就跳过夜晚。

生成幻翼

  • 配置名: spawn_phantom
  • 类型: 布尔值
  • 默认值: 由配置文件中的 spawn-phantom 决定
  • 描述: 是否允许假人生成幻翼,当其为关时,假人的未睡眠计时器会被置空。

实体刻类型

  • 配置名: tick_type
  • 类型: 枚举<NETWORK, ENTITY_LIST>
  • 默认值: 由配置文件中的 tick-type 决定
  • 描述: 假人的实体刻计算类型。当为 NETWORK 时,相当于正常玩家,部分计算在网络阶段进行。当为 ENTITY_LIST 时,类似于 Carpet 假人,所有计算在实体列表中进行。

Tip

此配置会影响部分基于假人时序的机器设计运行。

你可以查询/询问机器作者机器是否只允许 真人/假人 挂机,据此修改挂机假人的此项配置。

假人动作

动作是假人的重要部分,它可以让假人完成更多任务。截至目前,假人一共拥有 15 种动作。

每个假人可以同时执行多个动作。每个动作相互独立,不会互相影响。

你可以使用命令 /bot action <假人名> <动作名> [动作参数] 来指定假人的动作。

命令 /bot action <假人名> list 将用于查看指定假人当前的所有动作。

命令 /bot action <假人名> stop <动作序号/all> 将用于停止假人当前的 一个/所有 动作。

动作参数

TickDelay
  • 类型: 整数
  • 默认值: 20
  • 描述: 每次成功执行一次操作后的等待时间,单位为 tick。

Tip

此参数目前功能为,在执行成功等待的时间,而非执行一个动作的时间周期。

在挂机时,对于需要精密时序的操作,可以将在 Carpet 假人动作中设置的 周期 - 1 设置为此参数值。

Danger

本参数会在 1.21.5 修改为,执行一个动作的时间周期。

DoNumber
  • 类型: 整数
  • 默认值: -1
  • 描述: 每次动作中可以成功执行操作的次数,如为 -1 则为无限。
X 或 Y 或 Z
  • 类型: 浮点数(小数)
  • 默认值: 0.0
  • 描述: 一个 X/Y/Z 坐标。

攻击实体动作

  • 动作名: attack
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 当假人开始执行这项动作时,假人将尝试攻击视线前方碰撞箱内的实体。

方块破坏动作

  • 动作名: break
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 当假人开始执行这项动作时,假人将尝试挖掘视线前方的方块。

物品扔出动作

  • 动作名: drop
  • 动作参数:
  • 描述: 当假人开始执行这项动作时,假人将扔出背包中的所有物品。

自动钓鱼动作

  • 动作名: fish
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 假人将尝试自动钓鱼。

跳跃动作

  • 动作名: jump
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 当假人开始执行这项动作时,假人将尝试进行跳跃。

注视动作

  • 动作名: look
  • 动作参数: <X> <Y> <Z>
  • 描述: 当假人开始执行这项动作时,假人将看向一个给定的坐标。

转向动作

  • 动作名: rotate
  • 动作参数:
  • 描述: 当假人开始执行这项动作时,假人将看向玩家所在位置。

下蹲动作

  • 动作名: sneak
  • 动作参数:
  • 描述: 当假人开始执行这项动作时,假人将切换潜行状态。

游泳动作

  • 动作名: swim
  • 动作参数:
  • 描述: 当假人执行此项动作时,假人将尝试在水中自动浮起(而不是进入游泳姿态)。

物品使用动作

  • 动作名: use
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 假人将尝试使用主手物品,此动作将不会尝试对方块或实体使用物品。

副手物品使用动作

  • 动作名: use_offhand
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 假人将尝试使用副手物品,此动作将不会尝试对方块或实体使用物品。

Danger

假人尝试使用带有 GUI 的物品的行为是未定义的。

对方块使用物品动作

  • 动作名: use_on
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 假人将尝试对视线前方的方块使用主手物品。

对方块使用副手物品动作

  • 动作名: use_on_offhand
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 假人将尝试对视线前方的方块使用副手物品。

Tip

如果你需要放置方块,请使用此动作。

Danger

假人尝试使用带有 GUI 的方块(如工作台、熔炉、铁砧等)的行为是未定义的。

对实体使用物品动作

  • 动作名: use_to
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 假人将尝试对视线前方的实体使用主手物品。此动作将允许假人进入载具。

对实体使用副手物品动作

  • 动作名: use_to_offhand
  • 动作参数: [TickDelay] [DoNumber]
  • 描述: 假人将尝试对视线前方的实体使用副手物品。此动作将允许假人进入载具。

Danger

假人尝试使用带有 GUI 的生物(如装有箱子的羊驼、驴子)的行为是未定义的。

假人列表

通过使用 /bot list [世界] 来查看全局或各个世界的假人。

[世界] 是可选参数。它默认为 world / world_nether / world_the_end。输入自定义世界的名称以查看位于该世界中的假人。