Endstone 假人常加载与模拟刷怪插件说明
ps:请注意,请勿随意使用假人刷怪功能,因为这个生成的效率太高了,而且在关闭时容易造成服务器崩溃
ps:一个插件能做到这么快的更新速度,肯定是借助了AI的,然而AI可能会有小bug的产生,如果你发现了,请反馈给我QQ:3817633968
这个插件是给 Endstone 0.11 服务器使用的 Python 插件。
它的主要作用是在服务器里创建固定假人 NPC,让假人附近的区块保持常加载,并且可以选择开启假人周围的模拟刷怪功能。
当前插件版本是 0.2.5。
插件现在能做什么
第一,它可以创建固定假人。
假人不是一个真正在线的玩家,也不会占用玩家名额。它本质上是一个 NPC 实体,默认实体类型是 minecraft:npc。
第二,它可以让假人附近区块常加载。
插件会为每个假人创建一个 tickingarea。默认半径是 4 个区块,也就是以假人所在区块为中心,向四周各扩展 4 个区块,最终范围是 9x9 区块,总共 81 个区块。
第三,它可以在假人周围模拟刷怪。
这个功能默认关闭,需要手动开启。开启后,插件会按照基岩版自然刷怪规则做一个 Python 层面的近似复刻,让假人周围像玩家挂机一样生成怪物。
ps:实验功能可能会比较卡,而且部分刷新特性不符合原版
第四,它会自动清理常加载区域。
删除假人时,插件会删除对应 tickingarea。插件关闭时,也会自动删除所有插件管理的 tickingarea。如果假人 NPC 被意外杀死,插件也会定期检测并清理对应记录。
第五,它现在支持一键清除所有假人和所有对应常加载区块。
如果创建了多个假人,可以直接用一个命令全部清掉,不需要一个个删除。
ps:收拾烂摊子
为什么这个插件不用真正的玩家假人
Endstone Python API 目前不能创建真正的 ServerPlayer,也不能伪造真实玩家网络连接。
所以这个插件采用的是更稳定、更适合 Python 插件的方案:
用 NPC 实体作为假人的可见标记。
用 tickingarea 实现区块常加载。
用 Python 定时任务模拟玩家周围的自然刷怪。
这种方案的优点是简单、稳定、不占玩家名额、不需要假客户端登录。
缺点是它不是真正的玩家,所以原版服务器内部不会自动把这个 NPC 当成玩家处理。比如原版自然刷怪系统本身不会识别 NPC,插件只能自己模拟刷怪逻辑。
ps:我也不想用NPC来当玩家
插件的核心设计思路
假人本体是一个固定 NPC。
玩家使用命令创建假人后,插件会在玩家当前位置生成一个 NPC,并给它设置名字标签。插件内部会记录这个假人的名字、实体对象、常加载区域名称、刷怪开关状态等信息。
每个假人都有一个独立的 tickingarea。
假人名字叫 farm 时,对应的 tickingarea 名字就是 bot_farm。
插件会根据假人所在区块计算常加载范围,然后执行 tickingarea add 命令。
默认常加载半径是 4 个区块。
如果假人在某个区块中心附近,那么加载范围就是它周围 9x9 区块。
Y 轴范围固定为 -64 到 320,用来覆盖基岩版当前世界高度。
插件不再支持移动假人。
早期版本曾考虑让假人移动,但移动假人会导致 tickingarea 频繁删除和创建。tickingarea 数量有限,频繁更新容易失败、刷日志、占 CPU,也容易残留常加载区块。现在的设计是固定假人,只负责加载固定区域,这样更安全。
ps:你不想让你的服务器CPU占用率爆掉吧?
常加载范围说明
默认半径 4。
半径 0 表示 1x1 区块。
半径 1 表示 3x3 区块。
半径 2 表示 5x5 区块。
半径 3 表示 7x7 区块。
半径 4 表示 9x9 区块。
推荐使用半径 4。
如果服务器性能较弱,或者只想加载很小的机器区域,可以把半径改小。
刷怪功能说明
刷怪功能默认是关闭的。
创建假人后,需要使用命令开启。
比如创建一个叫 farm 的假人,然后开启刷怪:
/bot spawn farm
/bot mob farm true
开启后,插件会在假人周围尝试生成怪物。
目前模拟的是 tick-distance 等于 4 时的基岩版刷怪范围。
生成距离是 24 到 44 格。
24 格以内不会生成新怪。
32 到 44 格之间的插件生成怪物会参与随机清除。
超过 44 格的插件生成怪物会被立即清除。
插件会模拟每个区块每 tick 有 11/2000 概率运行刷怪算法。
插件会模拟 9x9 区块的种群控制范围。
地表怪物上限是 8。
洞穴怪物上限是 16。
插件自管自然怪物全局上限是 200。
插件会从世界顶部往下搜索生成点。
第一个找到的有效生成点算地表生成。
第一个生成点下面继续找到的生成点算洞穴生成。
插件会按权重选择怪物类型。
插件会模拟群生成,也就是一次尝试可能生成一小群同类怪物。
插件会做基础方块检查和基础空间检查。
插件生成的怪物会带 scoreboard tag,方便插件识别、计数和清理。
目前支持的刷怪池
主世界会尝试生成:
僵尸
苦力怕
蜘蛛
骷髅
末影人
女巫
下界会尝试生成:
僵尸猪灵
岩浆怪
末影人
骷髅
末地会尝试生成:
末影人
刷怪功能的限制
这个刷怪功能不是直接调用 BDS 原版内部刷怪器。
Python API 目前没有暴露完整的原版自然刷怪接口,也不能直接读取所有原版 spawn_rules、完整生物群系标签、真实光照值、结构硬编码生成点、生成势系统等底层数据。
所以这个插件实现的是“按基岩版规则尽量贴合的 Python 模拟刷怪”,不是 100% 原版内部刷怪系统。
它已经实现了距离、上限、地表和洞穴分池、权重、群生成、基础空间、基础方块、随机清除和立即清除等核心规则。
但是它还不能完全复刻所有细节,例如:
完整生物群系过滤。
完整光照过滤。
所有生物的原版 spawn_rules。
结构生成规则。
史莱姆区块算法。
诡异森林末影人的生成势系统。
巡逻队、幻翼、袭击、村庄猫、铁傀儡等特殊系统。
如果只是为了让假人挂机点附近能产生怪物,它已经可以使用。
如果要求和 BDS 内部自然刷怪 100% 一致,Python 插件做不到,需要 C++ Hook 或真实假客户端。
所有命令说明
/bot spawn <名字> [实体类型]
创建一个假人。
如果不写实体类型,默认使用 minecraft:npc。
示例:
/bot spawn farm
/bot spawn farm minecraft:villager
建议使用默认 NPC。
/bot remove <名字>
删除指定假人。
插件会先删除这个假人的 tickingarea,然后删除 NPC 实体,最后删除插件内部记录。
示例:
/bot remove farm
/bot list
列出所有插件管理的假人。
会显示假人名字、常加载半径、刷怪是否开启、插件自管怪物数量。
/bots
和 /bot list 一样,也是列出所有假人。
/bot radius <名字> <0-4>
修改指定假人的常加载半径。
半径只能是 0 到 4。
示例:
/bot radius farm 4
/bot radius farm 2
/bot info <名字>
查看指定假人的详细信息。
会显示位置、维度、区块坐标、tickingarea 名字、常加载范围、刷怪状态、自管怪物数量。
示例:
/bot info farm
/bot mob <名字> <true|false>
开启或关闭指定假人周围的模拟刷怪。
示例:
/bot mob farm true
/bot mob farm false
也可以使用 on、off、1、0、yes、no。
/bot mobclear <名字>
清理指定假人生成出来的插件自管怪物。
示例:
/bot mobclear farm
/bot clearall
一键清除所有插件管理的假人,并删除每个假人对应的 tickingarea。
这是当前版本新增的批量清理命令。
示例:
/bot clearall
/bot removeall
和 /bot clearall 一样,是一键清理全部的别名。
推荐使用流程
第一步,站到你想常加载的位置。
第二步,创建假人。
/bot spawn farm
第三步,如果只需要常加载,不需要刷怪,就不用再做别的。
第四步,如果需要模拟刷怪,开启刷怪。
/bot mob farm true
第五步,查看状态。
/bot info farm
第六步,不需要时删除假人。
/bot remove farm
如果想清理所有假人,就使用:
/bot clearall
清理机制说明
正常删除时,推荐使用 /bot remove <名字>。
插件会自动删除对应 tickingarea,避免常加载区域残留。
如果有多个假人,推荐使用 /bot clearall。
插件关闭时,服务器停止、插件禁用或重载时,会遍历所有假人并清理 tickingarea 和实体。
如果假人被其他命令杀死,例如 /kill @e[type=npc],插件每 40 tick 会检查一次。如果发现假人实体已经无效,就会清理对应 tickingarea 和插件记录。
维度处理说明
基岩版 execute in 命令里的维度名必须写成:
overworld
nether
the_end
不能写成 minecraft:overworld。
插件内部已经做了维度名映射,避免因为维度格式错误导致 tickingarea 命令失败。
安装方法
把下面这个文件复制到 Endstone 服务器的 plugins 文件夹:
dist/endstone_bot-0.2.2-py2.py3-none-any.whl
如果 plugins 文件夹里有旧版本,例如 0.2.0 或 0.2.1,建议删除旧版本,只保留 0.2.2。
然后重启服务器。
如果你是在服务器 Python 环境里手动安装,也可以使用:
pip install dist/endstone_bot-0.2.2-py2.py3-none-any.whl
新手注意事项
不要创建太多假人。
基岩版 tickingarea 数量有限。假人越多,占用的 tickingarea 越多,也会加载更多区块,增加服务器压力。
默认一个假人加载 81 个区块。
如果服务器配置较低,不建议创建太多半径 4 的假人。
如果只是加载一个小机器,可以把半径调小。
推荐用插件命令删除假人。
不要直接用 /kill 删除 NPC。虽然插件可以自动清理,但 /bot remove 或 /bot clearall 更安全。
刷怪功能会增加服务器压力。
如果开启多个假人的刷怪功能,插件会定时扫描方块、统计怪物、生成怪物和清除怪物。建议先少量测试,确认服务器不卡再扩大使用。
如果发现 tickingarea 满了,可以在服务器里执行:
/tickingarea list
如果发现残留,可以手动删除:
/tickingarea remove bot_假人名
例如:
/tickingarea remove bot_farm
一句话总结
这个插件现在是一个固定 NPC 假人插件。它用 NPC 作为假人标记点,用 tickingarea 让假人周围区块常加载,并且可以选择开启 Python 模拟刷怪功能。删除单个假人或一键清理全部假人时,插件都会自动删除对应常加载区域,避免 tickingarea 残留。
ps:请注意,请勿随意使用假人刷怪功能,因为这个生成的效率太高了,而且在关闭时容易造成服务器崩溃
ps:一个插件能做到这么快的更新速度,肯定是借助了AI的,然而AI可能会有小bug的产生,如果你发现了,请反馈给我QQ:3817633968
这个插件是给 Endstone 0.11 服务器使用的 Python 插件。
它的主要作用是在服务器里创建固定假人 NPC,让假人附近的区块保持常加载,并且可以选择开启假人周围的模拟刷怪功能。
当前插件版本是 0.2.5。
插件现在能做什么
第一,它可以创建固定假人。
假人不是一个真正在线的玩家,也不会占用玩家名额。它本质上是一个 NPC 实体,默认实体类型是 minecraft:npc。
第二,它可以让假人附近区块常加载。
插件会为每个假人创建一个 tickingarea。默认半径是 4 个区块,也就是以假人所在区块为中心,向四周各扩展 4 个区块,最终范围是 9x9 区块,总共 81 个区块。
第三,它可以在假人周围模拟刷怪。
这个功能默认关闭,需要手动开启。开启后,插件会按照基岩版自然刷怪规则做一个 Python 层面的近似复刻,让假人周围像玩家挂机一样生成怪物。
ps:实验功能可能会比较卡,而且部分刷新特性不符合原版
第四,它会自动清理常加载区域。
删除假人时,插件会删除对应 tickingarea。插件关闭时,也会自动删除所有插件管理的 tickingarea。如果假人 NPC 被意外杀死,插件也会定期检测并清理对应记录。
第五,它现在支持一键清除所有假人和所有对应常加载区块。
如果创建了多个假人,可以直接用一个命令全部清掉,不需要一个个删除。
ps:收拾烂摊子
为什么这个插件不用真正的玩家假人
Endstone Python API 目前不能创建真正的 ServerPlayer,也不能伪造真实玩家网络连接。
所以这个插件采用的是更稳定、更适合 Python 插件的方案:
用 NPC 实体作为假人的可见标记。
用 tickingarea 实现区块常加载。
用 Python 定时任务模拟玩家周围的自然刷怪。
这种方案的优点是简单、稳定、不占玩家名额、不需要假客户端登录。
缺点是它不是真正的玩家,所以原版服务器内部不会自动把这个 NPC 当成玩家处理。比如原版自然刷怪系统本身不会识别 NPC,插件只能自己模拟刷怪逻辑。
ps:我也不想用NPC来当玩家
插件的核心设计思路
假人本体是一个固定 NPC。
玩家使用命令创建假人后,插件会在玩家当前位置生成一个 NPC,并给它设置名字标签。插件内部会记录这个假人的名字、实体对象、常加载区域名称、刷怪开关状态等信息。
每个假人都有一个独立的 tickingarea。
假人名字叫 farm 时,对应的 tickingarea 名字就是 bot_farm。
插件会根据假人所在区块计算常加载范围,然后执行 tickingarea add 命令。
默认常加载半径是 4 个区块。
如果假人在某个区块中心附近,那么加载范围就是它周围 9x9 区块。
Y 轴范围固定为 -64 到 320,用来覆盖基岩版当前世界高度。
插件不再支持移动假人。
早期版本曾考虑让假人移动,但移动假人会导致 tickingarea 频繁删除和创建。tickingarea 数量有限,频繁更新容易失败、刷日志、占 CPU,也容易残留常加载区块。现在的设计是固定假人,只负责加载固定区域,这样更安全。
ps:你不想让你的服务器CPU占用率爆掉吧?
常加载范围说明
默认半径 4。
半径 0 表示 1x1 区块。
半径 1 表示 3x3 区块。
半径 2 表示 5x5 区块。
半径 3 表示 7x7 区块。
半径 4 表示 9x9 区块。
推荐使用半径 4。
如果服务器性能较弱,或者只想加载很小的机器区域,可以把半径改小。
刷怪功能说明
刷怪功能默认是关闭的。
创建假人后,需要使用命令开启。
比如创建一个叫 farm 的假人,然后开启刷怪:
/bot spawn farm
/bot mob farm true
开启后,插件会在假人周围尝试生成怪物。
目前模拟的是 tick-distance 等于 4 时的基岩版刷怪范围。
生成距离是 24 到 44 格。
24 格以内不会生成新怪。
32 到 44 格之间的插件生成怪物会参与随机清除。
超过 44 格的插件生成怪物会被立即清除。
插件会模拟每个区块每 tick 有 11/2000 概率运行刷怪算法。
插件会模拟 9x9 区块的种群控制范围。
地表怪物上限是 8。
洞穴怪物上限是 16。
插件自管自然怪物全局上限是 200。
插件会从世界顶部往下搜索生成点。
第一个找到的有效生成点算地表生成。
第一个生成点下面继续找到的生成点算洞穴生成。
插件会按权重选择怪物类型。
插件会模拟群生成,也就是一次尝试可能生成一小群同类怪物。
插件会做基础方块检查和基础空间检查。
插件生成的怪物会带 scoreboard tag,方便插件识别、计数和清理。
目前支持的刷怪池
主世界会尝试生成:
僵尸
苦力怕
蜘蛛
骷髅
末影人
女巫
下界会尝试生成:
僵尸猪灵
岩浆怪
末影人
骷髅
末地会尝试生成:
末影人
刷怪功能的限制
这个刷怪功能不是直接调用 BDS 原版内部刷怪器。
Python API 目前没有暴露完整的原版自然刷怪接口,也不能直接读取所有原版 spawn_rules、完整生物群系标签、真实光照值、结构硬编码生成点、生成势系统等底层数据。
所以这个插件实现的是“按基岩版规则尽量贴合的 Python 模拟刷怪”,不是 100% 原版内部刷怪系统。
它已经实现了距离、上限、地表和洞穴分池、权重、群生成、基础空间、基础方块、随机清除和立即清除等核心规则。
但是它还不能完全复刻所有细节,例如:
完整生物群系过滤。
完整光照过滤。
所有生物的原版 spawn_rules。
结构生成规则。
史莱姆区块算法。
诡异森林末影人的生成势系统。
巡逻队、幻翼、袭击、村庄猫、铁傀儡等特殊系统。
如果只是为了让假人挂机点附近能产生怪物,它已经可以使用。
如果要求和 BDS 内部自然刷怪 100% 一致,Python 插件做不到,需要 C++ Hook 或真实假客户端。
所有命令说明
/bot spawn <名字> [实体类型]
创建一个假人。
如果不写实体类型,默认使用 minecraft:npc。
示例:
/bot spawn farm
/bot spawn farm minecraft:villager
建议使用默认 NPC。
/bot remove <名字>
删除指定假人。
插件会先删除这个假人的 tickingarea,然后删除 NPC 实体,最后删除插件内部记录。
示例:
/bot remove farm
/bot list
列出所有插件管理的假人。
会显示假人名字、常加载半径、刷怪是否开启、插件自管怪物数量。
/bots
和 /bot list 一样,也是列出所有假人。
/bot radius <名字> <0-4>
修改指定假人的常加载半径。
半径只能是 0 到 4。
示例:
/bot radius farm 4
/bot radius farm 2
/bot info <名字>
查看指定假人的详细信息。
会显示位置、维度、区块坐标、tickingarea 名字、常加载范围、刷怪状态、自管怪物数量。
示例:
/bot info farm
/bot mob <名字> <true|false>
开启或关闭指定假人周围的模拟刷怪。
示例:
/bot mob farm true
/bot mob farm false
也可以使用 on、off、1、0、yes、no。
/bot mobclear <名字>
清理指定假人生成出来的插件自管怪物。
示例:
/bot mobclear farm
/bot clearall
一键清除所有插件管理的假人,并删除每个假人对应的 tickingarea。
这是当前版本新增的批量清理命令。
示例:
/bot clearall
/bot removeall
和 /bot clearall 一样,是一键清理全部的别名。
推荐使用流程
第一步,站到你想常加载的位置。
第二步,创建假人。
/bot spawn farm
第三步,如果只需要常加载,不需要刷怪,就不用再做别的。
第四步,如果需要模拟刷怪,开启刷怪。
/bot mob farm true
第五步,查看状态。
/bot info farm
第六步,不需要时删除假人。
/bot remove farm
如果想清理所有假人,就使用:
/bot clearall
清理机制说明
正常删除时,推荐使用 /bot remove <名字>。
插件会自动删除对应 tickingarea,避免常加载区域残留。
如果有多个假人,推荐使用 /bot clearall。
插件关闭时,服务器停止、插件禁用或重载时,会遍历所有假人并清理 tickingarea 和实体。
如果假人被其他命令杀死,例如 /kill @e[type=npc],插件每 40 tick 会检查一次。如果发现假人实体已经无效,就会清理对应 tickingarea 和插件记录。
维度处理说明
基岩版 execute in 命令里的维度名必须写成:
overworld
nether
the_end
不能写成 minecraft:overworld。
插件内部已经做了维度名映射,避免因为维度格式错误导致 tickingarea 命令失败。
安装方法
把下面这个文件复制到 Endstone 服务器的 plugins 文件夹:
dist/endstone_bot-0.2.2-py2.py3-none-any.whl
如果 plugins 文件夹里有旧版本,例如 0.2.0 或 0.2.1,建议删除旧版本,只保留 0.2.2。
然后重启服务器。
如果你是在服务器 Python 环境里手动安装,也可以使用:
pip install dist/endstone_bot-0.2.2-py2.py3-none-any.whl
新手注意事项
不要创建太多假人。
基岩版 tickingarea 数量有限。假人越多,占用的 tickingarea 越多,也会加载更多区块,增加服务器压力。
默认一个假人加载 81 个区块。
如果服务器配置较低,不建议创建太多半径 4 的假人。
如果只是加载一个小机器,可以把半径调小。
推荐用插件命令删除假人。
不要直接用 /kill 删除 NPC。虽然插件可以自动清理,但 /bot remove 或 /bot clearall 更安全。
刷怪功能会增加服务器压力。
如果开启多个假人的刷怪功能,插件会定时扫描方块、统计怪物、生成怪物和清除怪物。建议先少量测试,确认服务器不卡再扩大使用。
如果发现 tickingarea 满了,可以在服务器里执行:
/tickingarea list
如果发现残留,可以手动删除:
/tickingarea remove bot_假人名
例如:
/tickingarea remove bot_farm
一句话总结
这个插件现在是一个固定 NPC 假人插件。它用 NPC 作为假人标记点,用 tickingarea 让假人周围区块常加载,并且可以选择开启 Python 模拟刷怪功能。删除单个假人或一键清理全部假人时,插件都会自动删除对应常加载区域,避免 tickingarea 残留。