HeroBot

HeroBot

基于Fabric的服务器端玩家框架(以及额外有用的设置)

游戏机制

这款模组专为数据包作者设计,用于制作能够反击的机器人。

与Carpet相比,这些机器人与原版客户端的兼容性更高,包括自动跳跃和长矛等功能的支持。


与 Carpet Mod 和 Carpet PVP 不兼容


设置

通过 /herobot 命令查看和修改 HeRoBot 设置。直接运行 /herobot 会显示模组版本。

用法

  • /herobot <设置> - 显示当前值和描述
  • /herobot <设置> <数值> - 临时设置本次会话的设置
  • /herobot <设置> <数值> <权限> - 永久设置(保存到配置)

机器人

allowSpawningOfflinePlayers

如果不存在指定名称的在线模式玩家,则允许在在线模式下生成离线玩家。

默认值:true

allowListingBotPlayers

允许机器人玩家出现在多人游戏玩家列表中。

默认值:true

botPingToTicks

更改机器人玩家的延迟(毫秒)到游戏刻的转换比率。用于将机器人的延迟转换为击退的延迟刻数。

默认值:25

botLagAttacks

[实验性] 使对机器人玩家的左键攻击(攻击)延迟,延迟时间等于机器人的延迟。

默认值:false

botLagUses

[实验性] 使对机器人玩家的右键点击(使用)延迟,延迟时间等于机器人的延迟。

默认值:false

botLeaveOnDeath

机器人玩家死亡时会断开与服务器的连接,而不是自动重生。

默认值:false


创造模式

creativeNoClip

创造模式无碰撞模式。允许飞行中的创造模式玩家穿过方块。

默认值:false

creativeFlySpeed

更改创造模式飞行速度倍率。更高的值使客户端飞行更快。

默认值:1.0

creativeFlyDrag

更改创造模式空气阻力。较低的值会减少飞行时的空气阻力。

默认值:0.09


战斗

shieldStunning

启用盾牌眩晕,允许在盾牌被禁用后立即对实体造成伤害。

默认值:false

noProjectileRandom

移除投射物的随机性,使其完全精准。

默认值:false


爆炸

explosionNoBlockDamage

控制爆炸是否破坏方块。

数值:

  • FALSE - 原版行为
  • MOST - 影响非固体方块,但荧石和红石交互方块除外
  • TRUE - 阻止所有方块破坏

默认值:FALSE

explosionNoFire

防止床和重生锚爆炸时引发火灾。

默认值:false

windChargeNoTrigger

风弹不会激活红石方块。

默认值:false


世界 / 杂项

clientsIgnoreSlowTickRate

如果为 false,使客户端玩家忽略较慢的游戏刻速率。

默认值:true

editablePlayerNbt

允许直接编辑玩家 NBT 数据。启用后还允许通过 /ride 骑乘玩家。

默认值:false

xpNoCooldown

玩家立即吸收经验,无延迟。

默认值:false

shulkerBoxAlwaysDrops

潜影盒始终会掉落,无论 doTileDrops 游戏规则如何。

默认值:false

deleteChunkEntities

启用后,区块重置/删除也会删除这些区块内的实体数据文件。

默认值:false

rainThroughMovingPiston

允许雨穿过被活塞移动的方块。

默认值:false

disableExperimentalScreen

移除实验性世界设置。如果在客户端上设置,则禁用所有实验性界面。如果在世界上设置,则仅对该世界禁用。

默认值:false


机器人玩家

机器人玩家是加入服务器的假玩家,可以完全通过命令控制。它们通过 /playerspawn 生成,并通过 /player 控制。机器人玩家在战斗、移动和物品使用方面具有正确的服务器端行为。

机器人玩家死亡后会自动重生,生命值全满,背包为空,无经验(除非启用了 botLeaveOnDeath)。

/playerspawn

生成一个机器人玩家,可指定位置、旋转、游戏模式和维度。

  • /playerspawn <名称> - 在命令执行者的位置生成
  • /playerspawn <名称> at <位置> - 在指定位置生成
  • /playerspawn <名称> at <位置> facing <旋转> - 以指定的偏航角/俯仰角生成
  • /playerspawn <名称> at <位置> facing <方向> - 面向基本方向生成(northsoutheastwestupdown
  • /playerspawn <名称> ... in <游戏模式> - 在指定游戏模式中生成(默认为创造模式)
  • /playerspawn <名称> ... on <维度> - 在指定维度生成

防止重复名称。尊重白名单和封禁。旁观者模式生成时处于飞行状态,生存模式玩家生成时着地。

/player

使用动作包控制机器人玩家。所有子命令都以 /player <目标> ... 为目标,并支持选择器来锁定多个机器人。

useattackswingjumpdropdropStackswapHands

让机器人执行玩家动作的动作命令。

  • /player <目标> <动作> - 停止该动作
  • /player <目标> <动作> once - 执行一次该动作
  • /player <目标> <动作> continuous - 每游戏刻执行该动作
  • /player <目标> <动作> interval <刻数> - 每 N 刻执行该动作

无参数的 use 会停止使用,而不会触发另一次使用(不像 Carpet 中它的行为类似于 use once)。

swing 挥动一只手而不执行动作,并重置攻击冷却。

attack 使用长矛/动能武器时,将执行突刺动作。

autojump

控制移动时自动跳过一格的障碍物

  • /player <目标> autojump - 尝试一次自动跳跃(如果机器人正在移动且需要跨上一步,则跳跃)
  • /player <目标> autojump true - 启用连续自动跳跃
  • /player <目标> autojump false - 禁用连续自动跳跃
move

控制机器人的移动方向。

  • /player <目标> move - 停止所有移动
  • /player <目标> move forward
  • /player <目标> move backward
  • /player <目标> move left
  • /player <目标> move right
sneak / sprint
  • /player <目标> sneak - 开始潜行
  • /player <目标> unsneak - 停止潜行
  • /player <目标> sprint - 开始冲刺
  • /player <目标> unsprint - 停止冲刺

潜行会将移动速度降低至 30%。使用物品(非长矛)时速度降低至 20%。

look

控制机器人的视线方向。大多数查看命令支持 delta <刻数> 以实现多刻间的平滑过渡。

基本方向

  • /player <目标> look north|south|east|west|up|down
  • /player <目标> look north delta <刻数>

精确旋转

  • /player <目标> look <偏航角> <俯仰角>
  • /player <目标> look <偏航角> <俯仰角> delta <刻数>

相对转动

  • /player <目标> look left - 向左转 90 度
  • /player <目标> look right - 向右转 90 度
  • /player <目标> look back - 转 180 度
  • /player <目标> look relative <旋转> - 按给定的相对旋转转动
  • 所有都支持 delta <刻数>

看向位置

  • /player <目标> look at <位置>
  • /player <目标> look at <位置> delta <刻数>

看向实体

  • /player <目标> look upon <实体> - 看向实体的眼睛(默认)
  • /player <目标> look upon <实体> eyes - 看向实体的眼睛
  • /player <目标> look upon <实体> feet - 看向实体的脚
  • /player <目标> look upon <实体> closest - 看向实体碰撞箱最近的点
  • 所有都支持 delta <刻数>

随机

  • /player <目标> look random - 看向随机方向
hotbar

选择一个快捷栏槽位。

  • /player <目标> hotbar <槽位> - 选择 1 至 9 号槽位
itemCd

控制物品冷却。

  • /player <目标> itemCd - 重置所有物品冷却(返回重置次数)
  • /player <目标> itemCd <物品> - 显示剩余冷却刻数(返回刻数)
  • /player <目标> itemCd <物品> reset - 重置该物品的冷却
  • /player <目标> itemCd <物品> set - 应用该物品的默认冷却而不使用它
  • /player <目标> itemCd <物品> set <刻数> - 应用自定义冷却时长
ping

控制机器人模拟的延迟。击退会根据 botPingToTicks 设置延迟相应的刻数。

  • /player <目标> ping - 显示机器人当前延迟以及等效的刻数延迟
  • /player <目标> ping <数值> - 设置延迟(毫秒)(建议:0、25、50、100、150、200)

当延迟不能整除 botPingToTicks 时,刻数延迟会有一些随机性。例如,延迟为 30,botPingToTicks 为 25,则每刻有 5/25 的概率额外增加 1 刻延迟。

copycat

将另一个玩家的物品栏和动作包复制到机器人上。

  • /player <目标> copycat <来源>
skin / handedness

切换机器人个体皮肤部位的可见性。

皮肤部位:

  • /player <目标> skin cape
  • /player <目标> skin jacket
  • /player <目标> skin leftSleeve
  • /player <目标> skin rightSleeve
  • /player <目标> skin leftPant
  • /player <目标> skin rightPant
  • /player <目标> skin hat

每次调用都会切换该部位的开关。

左手/右手习惯:

  • /player <目标> handedness left
  • /player <目标> handedness right
stop / kill / disconnect
  • /player <目标> stop - 停止所有动作和移动
  • /player <目标> kill - 杀死机器人(触发死亡和重生)
  • /player <目标> disconnect - 不触发死亡地将机器人从服务器移除

距离

测量两个位置、实体或碰撞箱之间的距离,并将结果存储为命令返回值(可用于记分板)。默认距离为球形(3D)。

from

使用精确位置的点对点距离。

  • /distance from <位置> to <位置>
  • /distance from <位置> to <实体>
  • /distance from <实体> to <位置>
  • /distance from <实体> to <实体>
fromHitbox

使用源的完整边界框而不是其中心点。

  • /distance fromHitbox <方块> to <位置|实体>
  • /distance fromHitbox <实体> to <位置|实体>

也可以与 toHitbox 结合使用:

  • /distance from <位置|实体> toHitbox <方块>
  • /distance from <位置|实体> toHitbox <实体>
  • /distance fromHitbox <方块|实体> toHitbox <方块|实体>
e(指数缩放)
  • /distance ... e <指数>
  • 返回距离前乘以 10^指数
  • 示例:4 格距离,使用 e 3 返回 4000
horizontal

仅测量 XZ 距离(忽略 Y)。

  • /distance ... horizontal
  • 支持 e <指数>
vertical

仅测量 Y 距离(忽略 XZ)。

  • /distance ... vertical
  • 支持 e <指数>

延迟

安排命令或函数在延迟一定刻数后运行。

tickDelay

安排一个命令或函数在指定刻数后执行。

  • /delayed tickDelay <刻数> command <命令> - 在延迟后运行命令,支持完整的自动补全
  • /delayed tickDelay <刻数> function <函数> - 在延迟后运行数据包函数
queue

查看和管理待执行的延迟命令。

  • /delayed queue - 列出所有待执行的延迟命令
  • /delayed queue entity <实体> - 列出特定实体的延迟命令
  • /delayed queue entity - 列出执行实体的延迟命令
  • /delayed queue remove <索引> - 按索引移除特定的延迟命令
clear
  • /delayed clear - 清除所有待执行的延迟命令

区块重置器

重置(删除)区块数据,以便下次加载时重新生成。已加载的区块将被跳过,必须首先卸载。

chunk

按方块列位置重置特定区块。

  • /chunk-resetter chunk <位置> - 重置给定位置的单个区块
  • /chunk-resetter chunk <起点> <终点> - 重置矩形范围内的所有区块(最多 256 个区块)

重置区块中的实体将被丢弃。

world

重置整个维度中所有未加载的区块。同时删除 POI 数据。仅当启用 deleteChunkEntities 时,才会删除实体数据文件。

  • /chunk-resetter world - 重置当前维度的区块
  • /chunk-resetter world <维度> - 重置指定维度的区块