|
| 1 | +# 假人 |
| 2 | + |
| 3 | +Leaves 提供了类似 Carpet 的假人支持,假人的命令为 `/bot` 。 |
| 4 | + |
| 5 | +## 什么是假人 |
| 6 | + |
| 7 | +假人是一个**玩家实体**,怪物会被它吸引并攻击它,它也可以模拟部分玩家操作。比如: |
| 8 | + |
| 9 | +- 区块随机刻 |
| 10 | +- 生物生成 |
| 11 | +- 物品使用 |
| 12 | +- 方块破坏 |
| 13 | +- .... |
| 14 | + |
| 15 | +## 权限 |
| 16 | + |
| 17 | +- `bukkit.command.bot` - 允许玩家使用 `/bot` 命令。 |
| 18 | + |
| 19 | +::: tip |
| 20 | + |
| 21 | +在执行命令前,请确保已经拥有此权限。 |
| 22 | + |
| 23 | +::: |
| 24 | + |
| 25 | +## 创建假人 |
| 26 | + |
| 27 | +要创建假人,请在游戏内执行命令:`/bot create <假人名> [皮肤名]`, |
| 28 | +或在控制台执行命令:`/bot create <假人名> <皮肤名> <世界名> <X> <Y> <Z>` |
| 29 | + |
| 30 | +`<假人名>` 是必要参数,并且假人名称需要符合 Minecraft 的玩家名规范。 |
| 31 | + |
| 32 | +`[皮肤名]` 是可选参数,假人将会使用皮肤名对应的皮肤。若没有填写此参数,则假人会使用假人名的对应皮肤。 |
| 33 | + |
| 34 | +通过在游戏内执行命令创建的假人会继承创建者的位置和视角(也就是创建者的 NBT 标签 `Rotation` 和 `Pos`)。 |
| 35 | + |
| 36 | +::: tip |
| 37 | + |
| 38 | +如果玩家在创建假人后不离开假人位置,则假人会和玩家发生碰撞而导致一定位置偏移。 |
| 39 | + |
| 40 | +::: |
| 41 | + |
| 42 | +::: tip |
| 43 | + |
| 44 | +若假人在创建后迟迟没有出现,可能需要检查服务器和 Mojang 皮肤服务器的连接。 |
| 45 | + |
| 46 | +::: |
| 47 | + |
| 48 | +::: danger |
| 49 | + |
| 50 | +假人不会穿过传送门,因此需要将假人放置在需要的世界。如果使用命令或其他方法使假人改变世界,则假人可能**不会**正常工作。 |
| 51 | + |
| 52 | +::: |
| 53 | + |
| 54 | +## 移除假人 |
| 55 | + |
| 56 | +假人无法复活,即使游戏规则 `keepInventory` 为 `true`,也会在死亡后扔出所有物品并移除自己(而不是像 Carpet 那样断开连接)。 |
| 57 | + |
| 58 | +在默认情况下,假人会在服务器关闭前被全部移除。 |
| 59 | +你可以在配置中修改假人是否在服务器重启之后自动还原。 |
| 60 | + |
| 61 | +你也可以使用命令 `/bot remove <假人名>` 来移除指定的假人。 |
| 62 | + |
| 63 | +你也可以使用命令 `/bot remove <假人名> [时] [分] [秒]` 来定时移除指定的假人。 |
| 64 | + |
| 65 | +## 假人加载/保存 |
| 66 | + |
| 67 | +假人可以被手动加载/保存,这相当于正常玩家的上下线操作,在保存前后,假人的所有信息(例如位置和维度)都会保持一致。 |
| 68 | + |
| 69 | +你可以通过 `/bot save <假人名>` 来保存假人,同时使用 `/bot load <假人名>` 来加载假人 |
| 70 | + |
| 71 | +## 假人配置 |
| 72 | + |
| 73 | +假人存在若干可以被命令配置的配置项,它们会对假人的运行产生影响。 |
| 74 | + |
| 75 | +每个假人的配置项都是独立且唯一的,在大部分情况下,它们不会互相影响。 |
| 76 | + |
| 77 | +你可以使用命令 `/bot config <假人名> <配置项名>` 来查看假人某一配置项的当前状态。 |
| 78 | + |
| 79 | +同时 `/bot config <假人名> <配置项名> [修改值]` 也可以用来修改假人当前的配置项值。 |
| 80 | + |
| 81 | +### 始终发送信息 |
| 82 | + |
| 83 | +- **配置名**: `always_send_data` |
| 84 | +- **类型**: `布尔值` |
| 85 | +- **默认值**: 由配置文件中的 `always-send-data` 决定 |
| 86 | +- **描述**: 是否一直向位于相同世界的玩家发送假人数据,使得玩家可以始终观测到假人(即使可能不会渲染)。 |
| 87 | + |
| 88 | +### 模拟距离 |
| 89 | + |
| 90 | +- **配置名**: `simulation_distance` |
| 91 | +- **类型**: `整数` |
| 92 | +- **默认值**: 由服务器配置的当前世界 `simulation-distance` 决定 |
| 93 | +- **描述**: 影响假人可以强加载的区块大小,与原版的模拟距离作用相同。 |
| 94 | + |
| 95 | +### 睡眠计数跳过 |
| 96 | + |
| 97 | +- **配置名**: `skip_sleep` |
| 98 | +- **类型**: `布尔值` |
| 99 | +- **默认值**: 由配置文件中的 `skip-sleep-check` 决定 |
| 100 | +- **描述**: 是否在睡眠计数时跳过假人,使得不需要假人睡眠就跳过夜晚。 |
| 101 | + |
| 102 | +### 生成幻翼 |
| 103 | + |
| 104 | +- **配置名**: `spawn_phantom` |
| 105 | +- **类型**: `布尔值` |
| 106 | +- **默认值**: 由配置文件中的 `spawn-phantom` 决定 |
| 107 | +- **描述**: 是否允许假人生成幻翼,当其为关时,假人的未睡眠计时器会被置空。 |
| 108 | + |
| 109 | +### 实体刻类型 |
| 110 | + |
| 111 | +- **配置名**: `tick_type` |
| 112 | +- **类型**: `枚举<NETWORK, ENTITY_LIST>` |
| 113 | +- **默认值**: 由配置文件中的 `tick-type` 决定 |
| 114 | +- **描述**: 假人的实体刻计算类型。当为 `NETWORK` 时,相当于正常玩家,部分计算在网络阶段进行。当为 `ENTITY_LIST` 时,类似于 Carpet 假人,所有计算在实体列表中进行。 |
| 115 | + |
| 116 | +::: tip |
| 117 | + |
| 118 | +此配置会影响部分基于假人时序的机器设计运行 |
| 119 | + |
| 120 | +你可以查询/询问机器作者机器是否只允许 `真人/假人` 挂机,据此修改挂机假人的此项配置。 |
| 121 | + |
| 122 | +::: |
| 123 | + |
| 124 | +## 假人动作 |
| 125 | + |
| 126 | +动作是假人的重要部分,它可以让假人完成更多任务。 |
| 127 | +截止目前,假人一共拥有 15 种动作。 |
| 128 | + |
| 129 | +每个假人可以同时执行多个动作。每个动作相互独立,不会互相影响。 |
| 130 | + |
| 131 | +你可以使用命令 `/bot action <假人名> <动作名> [动作参数]` 来指定假人的动作。 |
| 132 | + |
| 133 | +命令 `/bot action <假人名> list` 将用于查看指定假人当前的所有动作。 |
| 134 | + |
| 135 | +命令 `/bot action <假人名> stop <动作序号/all>` 将用于停止假人当前的 一个/所有 动作。 |
| 136 | + |
| 137 | +### 动作参数 |
| 138 | + |
| 139 | +#### TickDelay |
| 140 | + |
| 141 | +- **类型**: `整数` |
| 142 | +- **默认值**: `20` |
| 143 | +- **描述**: 每次成功执行一次操作后的等待时间,单位为 tick。 |
| 144 | + |
| 145 | +::: tip |
| 146 | + |
| 147 | +此参数目前功能为,在执行成功 **等待** 的时间,而非执行一个动作的时间周期。 |
| 148 | + |
| 149 | +在挂机时,对于需要精密时序的操作,可以将在 Carpet 假人动作中设置的 `周期 - 1` 设置为此参数值。 |
| 150 | + |
| 151 | +::: |
| 152 | + |
| 153 | +::: danger |
| 154 | + |
| 155 | +本参数会在 `1.21.5` 修改为,执行一个动作的时间周期。 |
| 156 | + |
| 157 | +::: |
| 158 | + |
| 159 | +#### DoNumber |
| 160 | + |
| 161 | +- **类型**: `整数` |
| 162 | +- **默认值**: `-1` |
| 163 | +- **描述**: 每次动作中可以成功执行操作的次数,如为 `-1` 则为无限。 |
| 164 | + |
| 165 | +#### X 或 Y 或 Z |
| 166 | + |
| 167 | +- **类型**: `浮点数(小数)` |
| 168 | +- **默认值**: `0.0` |
| 169 | +- **描述**: 一个 X/Y/Z 坐标。 |
| 170 | + |
| 171 | +### 攻击实体动作 |
| 172 | + |
| 173 | +- **动作名**: `attack` |
| 174 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 175 | +- **描述**: 当假人开始执行这项动作时,假人将尝试攻击 **视线前方** 与 **碰撞箱内** 的实体。 |
| 176 | + |
| 177 | +### 方块破坏动作 |
| 178 | + |
| 179 | +- **动作名**: `break` |
| 180 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 181 | +- **描述**: 当假人开始执行这项动作时,假人将尝试挖掘 **视线前方** 的方块。 |
| 182 | + |
| 183 | +### 物品扔出动作 |
| 184 | + |
| 185 | +- **动作名**: `drop` |
| 186 | +- **动作参数**: `无` |
| 187 | +- **描述**: 当假人开始执行这项动作时,假人将扔出背包中的所有物品。 |
| 188 | + |
| 189 | +### 自动钓鱼动作 |
| 190 | + |
| 191 | +- **动作名**: `fish` |
| 192 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 193 | +- **描述**: 假人将尝试自动钓鱼。 |
| 194 | + |
| 195 | +### 跳跃动作 |
| 196 | + |
| 197 | +- **动作名**: `jump` |
| 198 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 199 | +- **描述**: 当假人开始执行这项动作时,假人将尝试进行跳跃。 |
| 200 | + |
| 201 | +### 注视动作 |
| 202 | + |
| 203 | +- **动作名**: `look` |
| 204 | +- **动作参数**: `<X>` `<Y>` `<Z>` |
| 205 | +- **描述**: 当假人开始执行这项动作时,假人将看向一个给定的坐标。 |
| 206 | + |
| 207 | +### 转向动作 |
| 208 | + |
| 209 | +- **动作名**: `rotate` |
| 210 | +- **动作参数**: `无` |
| 211 | +- **描述**: 当假人开始执行这项动作时,假人将看向玩家所在位置。 |
| 212 | + |
| 213 | +### 下蹲动作 |
| 214 | + |
| 215 | +- **动作名**: `sneak` |
| 216 | +- **动作参数**: `无` |
| 217 | +- **描述**: 当假人开始执行这项动作时,假人将切换潜行状态。 |
| 218 | + |
| 219 | +### 游泳动作 |
| 220 | + |
| 221 | +- **动作名**: `swim` |
| 222 | +- **动作参数**: `无` |
| 223 | +- **描述**: 当假人执行此项动作时,假人将尝试在水中自动浮起(而不是进入游泳姿态)。 |
| 224 | + |
| 225 | +### 物品使用动作 |
| 226 | + |
| 227 | +- **动作名**: `use` |
| 228 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 229 | +- **描述**: 假人将尝试使用主手物品,此动作将不会尝试对方块或实体使用物品。 |
| 230 | + |
| 231 | +### 副手物品使用动作 |
| 232 | + |
| 233 | +- **动作名**: `use_offhand` |
| 234 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 235 | +- **描述**: 假人将尝试使用副手物品,此动作将不会尝试对方块或实体使用物品。 |
| 236 | + |
| 237 | +::: danger |
| 238 | + |
| 239 | +假人尝试使用带有 GUI 的物品的行为是未定义的。 |
| 240 | + |
| 241 | +::: |
| 242 | + |
| 243 | +### 对方块使用物品动作 |
| 244 | + |
| 245 | +- **动作名**: `use_on` |
| 246 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 247 | +- **描述**: 假人将尝试对视线前方的方块使用主手物品。 |
| 248 | + |
| 249 | +### 对方块使用副手物品动作 |
| 250 | + |
| 251 | +- **动作名**: `use_on_offhand` |
| 252 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 253 | +- **描述**: 假人将尝试对视线前方的方块使用副手物品。 |
| 254 | + |
| 255 | +::: tip |
| 256 | + |
| 257 | +如果你需要放置方块,请使用此动作。 |
| 258 | + |
| 259 | +::: |
| 260 | + |
| 261 | +::: danger |
| 262 | + |
| 263 | +假人尝试使用带有 GUI 的方块(如工作台,熔炉,铁砧等)的行为是未定义的。 |
| 264 | + |
| 265 | +::: |
| 266 | + |
| 267 | +### 对实体使用物品动作 |
| 268 | + |
| 269 | +- **动作名**: `use_to` |
| 270 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 271 | +- **描述**: 假人将尝试视线前方的实体使用主手物品。此动作将允许假人进入载具。 |
| 272 | + |
| 273 | +### 对实体使用副手物品动作 |
| 274 | + |
| 275 | +- **动作名**: `use_to_offhand` |
| 276 | +- **动作参数**: `[TickDelay] [DoNumber]` |
| 277 | +- **描述**: 假人将尝试视线前方的实体使用副手物品。此动作将允许假人进入载具。 |
| 278 | + |
| 279 | +::: danger |
| 280 | + |
| 281 | +假人尝试使用带有 GUI 的生物(如装有箱子的羊驼,驴子)的行为是未定义的。 |
| 282 | + |
| 283 | +::: |
| 284 | + |
| 285 | +## 假人列表 |
| 286 | + |
| 287 | +通过使用 `/bot list [世界]` 来查看全局/各个世界的假人。 |
| 288 | + |
| 289 | +`[世界]` 是可选参数。它默认为 `world` / `world_nether` / `world_the_end` 。 |
| 290 | +输入自定义世界的名称以查看位于该世界中的假人。 |
0 commit comments