提供用于管理训练家并开始对战的命令,也可作为其他模组(例如 Easy NPC)的接口。
> 此模组主要面向地图制作者和整合包开发者。
tbcsattach :将给定训练家附加到指定实体上(一个训练家始终只会附加到一个实体)。... vs
... [rules ] [onwin ]`:以指定的对战格式、规则和胜利命令在给定参与者之间开始一场对战(后两者为可选)。
> 所有命令都需要 2 级权限。
对战规则由一个 json 对象描述,包含以下属性:
maxItemUses:指定每位参与者在一场对战中可使用道具的次数。> 是的,目前就只有这一个属性。
胜利命令同样由一个 json 对象描述,不过其结构会更动态一些。一个胜利命令对象可以为每个对战方(即 1 或 2)定义一个属性,其中包含一个命令数组;当对应对战方获胜时,就会执行这些命令(见下方示例)。
此外,任意胜利命令都可以访问特殊的选择器(类似于 @s 或 @e),它允许你在命令中选择任意对战参与者。这些选择器的结构如下:@,其中 `` 指定的是对战参与者的一个位置,并且该位置是相对于执行该胜利命令的一方而言的。
说到命令时,有两个重要问题需要考虑:谁在执行该命令?以及该命令在哪里执行?
胜利命令通常由服务器在一场对战所有参与者的中心位置执行。不过,也可以让对战中的任意参与者成为某条命令的执行者;在这种情况下,该命令也会在该参与者所在的位置执行。
好了,形式化描述说完了,接下来进入……
重要: 以下命令中使用的训练家(例如 tbcs:mytrainer1)都只是示例。你需要自行提供训练家,或者安装另一个提供训练家的模组(见下方 Trainers 部分)。
tbcs attach tbcs:mytrainer1 @e[type=minecraft:villager,limit=1,sort=nearest]
将 tbcs:mytrainer1 附加到最近的村民上。
tbcs battle GEN9SINGLES @s vs tbcs:mytrainer1
在执行该命令的玩家与 tbcs:mytrainer1 之间开始一场对战(该训练家必须已附加到某个实体上)。
tbcs battle GEN9SINGLES @s vs tbcs:mytrainer1 rules {maxItemUses: 1}
与上面类似,但将每一方可使用道具的次数限制为 1。
tbcs battle GEN9SINGLES @s vs tbcs:mytrainer1 rules {maxItemUses: 1} onwin {1: ['give @1 minecraft:diamond']}
还是类似的例子,但这次玩家在获胜时会获得一颗钻石(第一方的第一个参与者)。
tbcs battle GEN9SINGLES @s vs tbcs:mytrainer1 onwin {1: ['loot spawn ~ ~ ~ loot minecraft:chests/simple_dungeon']}
这是使用 give 的一种替代方案(通常奖励会更多一些,不过也取决于战利品表)。该胜利命令将由服务器在所有对战参与者的中心位置执行。若要让玩家来执行该命令(即直接把战利品生成在玩家头顶),可以在 loot 命令前加上 @1(也见下方示例)。
tbcs battle GEN9MULTI @s tbcs:mytrainer1 vs tbcs:mytrainer2 tbcs:mytrainer3 onwin {1: ['give @1 minecraft:diamond', '@2 say We got them!']}
这是一个位置选择器的示例。当第一方获胜时(即玩家一方),玩家会获得一颗钻石,而 tbcs:mytrainer1 会说出 “We got them!”。这也展示了命令如何由服务器之外的其他来源执行(第二条命令将由 tbcs:mytrainer1 所附加到的实体执行)。
tbcs battle GEN9MULTI @s tbcs:mytrainer1 vs tbcs:mytrainer2 tbcs:mytrainer3 onwin {1: ['give @1 minecraft:diamond', '@2 say We got them!'], 2: ['@3 tp ~ ~10 ~']}
我们可以在上一个示例的基础上扩展,为另一方添加胜利命令;也就是说,当玩家一方失败时,就会执行这些命令。再次提醒,位置参数是相对于执行胜利命令的一方而言,并按照从左到右的顺序排列。因此,对于从第二方执行的命令,选择器映射如下:
@1 -> tbcs:mytrainer2
@2 -> tbcs:mytrainer3
@3 -> @s
@4 -> tbcs:mytrainer1
作为参考,从第一方执行的命令中,选择器映射如下:
@1 -> @s
@2 -> tbcs:mytrainer1
@3 -> tbcs:mytrainer2
@4 -> tbcs:mytrainer3
因此,第二方的胜利命令会在玩家一方失败时(即第二方获胜)惩罚玩家:将玩家相对于当前位置向上瞬移 10 格(该命令由玩家执行)。
tbcs battle GEN9SINGLES @s vs tbcs:mytrainer1 onwin {1: ['@2 say Not bad, but are you ready for this?!', 'tbcs attach tbcs:mytrainer2 @2', 'tbcs battle GEN9SINGLES @1 vs tbcs:mytrainer2 onwin {1: [\'give @1 minecraft:diamond\']}']}
这个示例会把一场对战接在另一场对战之后。来拆解一下(以下内容都会在玩家获胜时执行):
tbcs::mytrainer1 的训练家实体说出 “Not bad, but are you ready for this?!”tbcs:mytrainer2 附加到与 tbcs:mytrainer1 相同的实体上tbcs:mytrainer2 的另一场对战。该对战也带有它自己的胜利命令定义,玩家获胜时会得到一颗钻石。查看该命令的实际效果:

> 这可以无限重复。请注意,胜利命令嵌套得越深,就需要更多反斜杠(\)来对包围命令的单引号(')进行转义。
tbcs battle GEN9SINGLES @s vs tbcs:mytrainer1 onwin {2: ['@1 say You need to practice more @2!'], 1: ['@2 say You got me. Take this @1', 'loot spawn ~ ~ ~ loot minecraft:chests/endcitytreasure']}
这里没有新内容。这是我测试中的一条命令。

> 注意:视频来自较旧版本,训练家 id 的结构现在稍微有所不同(可查看游戏内命令建议),但功能是一样的。你可以在 repository 中找到完整视频。
训练家可以使用 json 来定义,训练家模式由 RCTApi 提供,因此其结构基本与我的另一个模组 Radical Cobblemon Trainers 相同(唯一的例外是 identity,它在此模组中同样不存在,以及 battleFormat 和 battleRules,这两者都是命令参数)。你可以在对应的文档中找到更多信息和一个示例。
每当一个世界被加载时,系统都会在所有 trainerPaths 中搜索训练家文件;这是一个相对于世界目录的路径列表。所有训练家都会以一个由文件名派生出的id 进行注册。比如,假设我们有如下 Minecraft 安装目录(已简化):
mods
config
trainers
bug_catcher.json
saves
My Cool World
Strong Trainers
Ash Ketchum.json
Boring World
...
其中 trainerPaths 定义为:["Strong Trainers", "../../trainers"]。
My Cool World: 将注册训练家 tbcs:bugcatcher 和 tbcs:ashketchum。Boring World: 只会注册训练家 tbcs:bug_catcher。> 如果具有相同 id 的训练家(即位于不同文件夹但文件名相同)被注册了多次,之后注册的训练家会在其 id 后附加一个计数器(_n)。
该模组与其他同样依赖 RCTApi 的模组兼容。若这些模组也已安装,则这些模组中的训练家副本可以自动注册到 tbcs 中(见配置)。
配置文件位于 config/tbcs-server.toml:
[Trainers]
#━━━━━━━━━━
#相对于世界目录、在(重新)加载世界时搜索训练家
#json 文件的路径列表。
#
#Default: ["trainers", "../trainers", "../../trainers"]
trainerPaths = ["trainers", "../trainers", "../../trainers"]
#━━━━━━━━━━
#同样依赖 RCTApi 来定义训练家的模组 id 列表。
#来自所列模组的训练家副本也会被注册到 TBCS。
#
#Default: ["rctmod"]
trainerMods = ["rctmod"]
[Commands]
#━━━━━━━━━━
#胜利命令的权限等级。
#
#Default: 2
#Range: 1 ~ 4
winCommandsPermission = 2
本项目的源代码采用 [GNU-LGPL](LICENSE.md) 许可。
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:1,315,616 | 历史访问人次:1,628,324
今日访问人数:2,717 | 今日访问人次:2,893
昨日访问人数:26,708 | 昨日访问人次:29,775
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6