我的世界 Tupenter 命令助手模组下载(功能类,支持 26.3 / 26.1.2 / 1.21.11)

Tupenter 模组说明

Tupenter 是一个客户端 Fabric 模组,可作为命令助手使用。它允许你通过按键绑定重新发送命令或消息,使用内联数学与脚本语法,并创建支持自动补全的自定义命令和脚本。

所有自定义脚本和语法都会转换为纯原版命令,展开后按顺序发送到服务器(如果确实需要发送到服务器的话)。许多纯计算脚本只会在客户端回显或显示消息,不会执行其他操作。服务器看到的始终只是纯 /setblock 命令,即使模组正在进行实际计算,将其变成彩虹螺旋。

资源分类:功能。作者:Ekra8154。许可证:MIT。

重新发送

Tupenter 会记录你发送的内容,并通过按键绑定(默认为 R)重放:

  • 按住模式适合快速连续发送,或使用切换模式实现免手操作。
  • 按任意顺序批量发送最近的 N 条消息,并为单条消息和整个批次设置延迟;支持预设消息列表和抑制命令反馈。
  • 模组菜单中提供高度可自定义的设置,可切换模组功能,并为几乎所有功能进行设置。

脚本

完整参考(包括所有指令、函数、参数类型和变量)请查看 GitHub 源码中的 SCRIPTING.md,或在游戏中运行 /tupenter reference 将其复制到剪贴板。

本模组主要使用三种语法类型:

语法 含义
$...$ 表达式:可直接内嵌在原版语法中。表达式会在发送前求值并替换。
#word 指令:用于控制 Tupenter。条件语句、循环和历史记录修改都以此为基础。永远不会发送到服务器。
(...) 分组:在指令后,圆括号用于放置条件或语句组,例如 #if (...) (...)。在表达式中,它们的作用类似代码,可用于 list(...) 和 blockset(...) 等函数调用以及 $(2 + 3) * 4$ 这样的数学运算。在普通命令文本中,它们只是普通字符。

链式命令

最简单的内联脚本方式是使用 && 链式执行命令。每条命令都有自己的 Brigadier 自动补全和语法高亮。由于链式命令会在发送到服务器前解析,因此兼容 WorldEdit 等模组。

/time set day && /weather clear && /say ready

//undo 2 && //replacenear 30 oak_planks spruce_planks && //replacenear 30 oak_stairs ^spruce_stairs

注释

## 后跟一个空格即可开始一条不会执行的备注。备注会在下一个 && 或行尾结束,因此即使是一行命令,也可以在各条语句之间添加备注:

## bottom left && /activate 1 2 3 && ## the other one && /activate 2 3 4

内联计算

表达式允许你直接在普通原版命令中使用简单或复杂的数学运算。

/give @s stick $32 + 5$

/give @s diamond $3s$                        (s = stacks of 64)

/summon $pick("zombie", "skeleton")$

/tp @s ~ ~$client.pos.y > 60 ? 10 : 0$ ~

数学运算是精确的,1/3 会保持为三分之一,不会产生浮点误差。

列表有两种形式:逗号会分别计算每个项目,而竖线会完全按照输入内容处理项目,因此方块和物品名称无需加引号。

list(1, 2 + 3)

list(oak_log | birch_log | spruce_log)

/calc <expression> 会在本地打印任意计算结果,不会发送任何内容,适合在使用表达式前进行检查。

读取世界信息

提供超过 90 个实时变量,例如位置、生命值、生物群系、光照等级、手持物品、准星指向的目标、天气、你正在看的实体及其 NBT。

/echo standing on $block(client.blockpos.x, client.blockpos.y - 1, client.blockpos.z)$

#if (client.target.hit == "block") (/tp @s $client.target.blockpos$)

许多并非内置的变量仍然可以直接通过 NBT 路径访问:

/echo elytra damage: $entity("self", "nbt.equipment.chest.components.minecraft:damage", 0)$

/echo $client.target.nbt.Health$

使用 /tupenter dump 浏览 NBT 树并找到所需路径。

变量、循环和条件语句

Tupenter 支持创建仅在单次发送中有效的局部变量(#local)、会话持久变量(#set)、通过 /tupenter var save <var> 跨会话保存的变量,以及仅在变量尚不存在时创建变量的 #setdefault。

#set spawn = "100 64 -200"

#local roll = rand(1, 10) && /give @s stick $roll$ && /say I got $roll$!

#local c:blockpos = blockpos(-10, 20, 85) && /tp $c$

#repeat 5 (/say tick $i$)

#for $x$ in 1..10 step 2 (/summon zombie ~$x$ ~ ~)

#foreach $mob$ in list(zombie | skeleton | creeper) (/summon $mob$ ~ ~ ~)

#foreach $b$ in blockset(#minecraft:wool) (/give @s $b$)

#if (client.health < 6) (/effect give @s regeneration 5 1)

#setdefault runs = 0 && #set runs += 1 && /say run number $runs$

注册表标签会通过实时连接解析,在 blockset(...) 中输入 # 时,按 Tab 键即可自动补全该服务器上可用的标签。

等待

使用 #wait <time>,并以游戏刻、秒、分钟或 Minecraft 天为单位,在 Tupenter 操作之间创建延迟。默认情况下,它计算的是游戏时间,因此在 /tick sprint 期间会加速,并会在游戏冻结或暂停时停止。脚本采用惰性求值,这意味着 #wait 之后读取的值反映的是当时的世界状态,而不是按下 Enter 时的状态。

等待不会阻止后续命令并发运行。默认情况下,Tupenter 允许同时运行 8 个脚本。/tupenter running 会显示当前处于活动状态的所有命令和脚本及其 pid,/tupenter abort <pid> 可终止它们。

/say ready && #wait 3s && /say GO

#wait 5m realtime && /echohud &ecows are ready to be fed!

/echo you're at y=$client.pos.y$ && #wait 3s && /echo now you're at y=$client.pos.y$

静默、隐私和本地输出

#silent /time set day && /weather clear          (whole line)

#repeat 5 (#silent (/give @s stick) && /say hi)  (just part of it)

#norecord /msg friend secret                     (kept out of resend history)

/echo &amy y is &e$client.pos.y$                     (shown only to you, sends nothing; &-codes color it)

#unstage 2                                       (drop the newest 2 resend-history entries)

#silent 会隐藏你自己屏幕上的内容:命令反馈,以及 Tupenter 在 #set 创建或更新变量时显示的提示。命令仍会正常执行,其他玩家能够看到的内容也仍会发送给他们,例如 /setblock 命令的反馈。

创建自己的命令

/customcommand,以及可从模组菜单和 /tupenter menu 访问的自定义命令选项卡,允许你使用原版命令和 Tupenter 语法创建自己的命令。它们可以轻松编辑或删除,并会自动加入 Mojang 的 Brigadier 自动补全,因此不会过时。

/customcommand add waves <count:int> <mob:entity> = #repeat $count$ (/summon $mob$ ~ ~ ~)

/waves 5 zombie

下面是预装的 /blink 的定义方式。(add 拒绝已经存在的名称,因此请为自己的版本使用新名称,或者使用 /customcommand update 修改现有命令。)

/customcommand add blink <maxdistance:int=100> "teleport to where you're looking" = #silent #local hit = raycast(maxdistance) && #if (hit == "miss") (/tp @s ^ ^ ^$maxdistance$) #else (/tp @s $hit$)

/blink 是真正的命令,拥有真正的自动补全、类型化参数和可选参数。预装的 /portalcalc 是另一个例子:

/customcommand add portalcalc <p:blockpos=~ ~ ~> <dim:to_overworld,to_nether=$client.dimension == "minecraft:the_nether" ? "to_overworld" : "to_nether"$> = /echo $dim$: $floor(dim == "to_nether" ? p.x / 8 : p.x * 8)$ $p.y$ $floor(dim == "to_nether" ? p.z / 8 : p.z * 8)$

不带参数运行 /portalcalc 会告诉你对应传送门在另一个维度中的位置,并根据你所在的位置判断应采用哪种换算方向。这个命令完全不会向服务器发送任何内容。/echo 是 Tupenter 提供的客户端输出方式,只会向消息发送者本人显示消息,不会显示给其他人。

还有自定义函数,可用于在 $...$ 中重复使用某个值。函数会计算一个值,但永远不会发送任何内容,这正是自定义命令的用途:

/customfunction add midpoint <a:vec3> <b:vec3> = scale(vadd(a, b), 0.5)

/tp @s $midpoint(client.pos, spawn)$

每刻运行的脚本

模组菜单 → Tupenter → 脚本中包含一些每刻运行一次的单行脚本,只要主开关处于开启状态就会运行。每一行已启用的脚本都会被包装在循环中,因此它是一个持续运行的脚本,而不是每刻重新解析一次:#set 的值会跨刻持久存在,#wait 也能自然工作。

脚本按世界分别启用,因此你为创造模式编写的脚本不会在生存服务器中触发,而你从未配置过的世界也不会运行任何脚本。/tupenter scripts 会显示你所在位置的世界中哪些脚本已启用,/tupenter abort all 则是紧急开关:它会停止所有脚本并关闭主开关。

由于脚本是循环,事件表现为需要测试的单刻标记:

#if (client.just_died) (/echo died at $client.blockpos$)

#if (client.keypress.g) (/togglenightvision)

使用脚本时的警告:未加保护的命令放在每刻脚本中,会每秒执行 20 次,在多人服务器上会造成聊天刷屏。请像上面的示例一样使用 #if 进行保护。

预提供的命令和脚本

下载模组后,它会自带一系列自定义命令和脚本。它们可以轻松删除或移除,且脚本默认处于禁用状态。

可直接使用的命令:

命令 功能
/blink [maxdistance] 传送到你正在看的位置,并在墙壁处停止
/ironkit 一整套铁制装备
/portalcalc [pos] [dim] 在下界和主世界之间换算坐标
/tickfreeze 切换 /tick freeze
/launch <entity> [speed] [no_gravity] 将实体朝你正在看的方向掷出

脚本:启用前全部处于禁用状态:

脚本 功能
rainbowTunnel 按下 ] 并飞行,一条由荧石照亮、随你的移动形成螺旋的羊毛隧道会跟随你
itemDespawnTimer 标记你死亡的位置,并倒计时物品的五分钟消失时间;在对应区块未被模拟时暂停计时
creeperAlert 当苦力怕进入 8 个方块以内时,显示一次带距离的警告
elytraWarning 在鞘翅损坏之前提醒耐久度
restockReminder 村民在黎明时补货

生活质量

  • 聊天栏语法高亮:每个 && 片段会根据其类型着色;命令会根据自身解析结果为各参数分别着色
  • 感知链式命令的自动补全:/time set day && /weather cl⇥ 会补全第二条命令
  • 可选择的聊天消息:点击并拖动即可选中消息,按 Ctrl+C 复制
  • /unroll:以试运行方式处理任意一行,并准确查看它将发送的内容,而不会真正发送
  • /tupenter vars:列出你的变量;/tupenter var save|delete <name>:管理已保存的变量
  • /tupenter menu:从聊天栏打开设置界面;添加 customcommands 或 scripts 可直接进入对应选项卡
  • 模组菜单中每项功能都有独立的开关

文档

  • /tupenter help:游戏内会为每条命令、指令、函数和变量提供文档,并附带可运行的示例
  • /tupenter reference:将完整参考文档复制到剪贴板
  • SCRIPTING.md:GitHub 上的相同参考文档,包括模型、所有指令、所有函数、所有参数类型、所有变量以及容易踩坑的地方

文档由代码所使用的同一组注册表生成,因此随着模组更新,文档不会逐渐过时。

许可证

许可证为 MIT,详情请参阅 GitHub 源码。

作者:Ekra8154

资源信息

适用版本
26.3、26.1.2、1.21.11
资源版本
Java 版
发布者
Ekra8154

下载地址

发表回复