[Feature Request] "启用原版 IDE 环境调试命令" 规则
Youmiel opened this issue · 5 comments
Motivation
本来是希望提一些袭击测试工具的建议的,但是怕写不明白需求,以及开发也需要时间,就有了这个变通方案。
偶然发现原版有一些 debug 命令,其中就包含了 /raid 调试命令,可以 创建袭击/结束袭击/设置袭击等级 等,对于 1.21+ 来说也是一种快捷的袭击创建方式。另外还有调试 warden 生成、调试寻路 等命令,看起来都挺有用的。
Description
开放 net.minecraft.server.command.CommandManager 中一些仅 IDE 环境才注册的 debug 命令给正常游戏环境使用
Other information
潜在冲突:
- 袭击调试命令和 TIS addition 现在的袭击追踪器都使用了
/raid
/raid
命令的冲突是最棘手的问题。原版直到 1.17 快照 21w13a 取消了未使用代码的裁剪后,才能在反编译后看到 raid 调试命令,而此时 Carpet TIS Addition 早已提供了 /raid
命令了
抛开 /raid
的冲突不谈,简单地让那些原版未注册的命令注册进游戏,还会存在以下的问题:
- 不好做到热开关
- 目前 carpet 生态各种对命令的热开关功能都是通过在命令根节点插入一个定值的
requires
函数来实现的,在规则未启用的时候拒绝一切输入。命令树实际上还是注册到了 MC 里面的。如果也参考着实现开关功能,则需要进一步修改相关命令的requires
函数,可能造成潜在的 mod 冲突(比如其他 mod 直接启用了相关命令,但由于规则没开启,而无法执行)
- 目前 carpet 生态各种对命令的热开关功能都是通过在命令根节点插入一个定值的
- 命令功能表现不保证存在跨版本的稳定性
- 命令功能难以拓展
- i18n 缺失
因此,若希望得到稳定可用的相关调试工具,建议还是交由 Carpet TIS Addition 自己实现维护一份。可以参考原版命令,想清楚需求是什么
别的 debug 指令暂时没看懂,把看懂的在这里简单总结一下,作参考:
/raid
具有以下功能- 在执行玩家位置创建指定等级的袭击(周围无袭击时)
- 结束执行玩家位置存在的袭击
- 改变执行玩家位置的袭击的等级
- 查询执行玩家位置的袭击的信息
- 生成掠夺者队长
- 高亮袭击者
- 播放袭击的号角声
/debugmobspawning
:在指定位置进行指定怪物种类的成群生成/debugpath
:从指定生物向目标方块进行地面寻路
以上指令比较有用的:
- 创建袭击:方便 1.21+ 直接创建袭击进行研究,但是选择命令执行玩家位置太局限了,要实现的话传入坐标应该更合适。
- 结束袭击/改变袭击等级:看起来有用,传参问题同上。我觉得传入 ID 也不失为第二种办法。
- 生成掠夺者队长:在需要研究队长的时候非常有用,省去了打带一堆 nbt 的
/summon
指令的过程。但是不能生成卫道士和唤魔者队长(后者能在袭击中队长死亡时捡起旗帜产生)。 /debugpath
测试地面寻路:我们确实需要一个更好的查看寻路的工具,但不是测试,以及现在还有空中寻路,这个功能不完整。scarpet app 展示的寻路相对简单,而且就 carpet 现在的维护状况还能活多久都是个问题。miniHUD 曾经有,能在单机使用,现在不知道,等我有空去检查一下。
已经有平替的:
/debugmobspawning
:功能性和完整度都不如 Carpet 自己的/spawn
/raid check
查询执行玩家位置的袭击的信息:信息不如 Carpet TIS Addition 的/raid list
全面。
后面整理、取舍完了再开新 issue。