teddyxlandlee 发表于 2024-4-18 23:21:38

【1.21-1.19.2】ABS | αβspeedrun | 自定义速通挑战【帖子备份】



移动端用户请以桌面端模式访问此帖
αβspeedrun——自定义速通挑战
移动端用户请以桌面端模式访问此帖



🚀介绍
使用本模组,你可以通过数据包的形式自定义速通挑战!
支持的挑战目标包括收集物品、杀死生物等等!

不会写扩展数据包?没关系!
本模组内置了许多挑战,其中最具代表性的当属速通字母表系列!
这一玩法的挑战目标,就是收集以A(B,C……)为首字母的所有物品,如Apple(苹果)、Acacia Log(金合欢原木)等。
放个视频大家就知道啦~
https://www.bilibili.com/video/BV1bv4y1q7Lz
(视频中模组为本模组早期版本,部分文本显示效果可能与最新版有偏差。up不是楼主本人)

⌨️操作
输入以下指令即可开始挑战:/itemspeedrun start <goal_id>
其中goal_id是挑战类型的ID。相应的,速通字母表的ID分别是 speedabc:a, speedabc:b, speedabc:c……

按下B键可以查看当前的挑战完成情况,绿色为完成项,红色为未完成项。
(这一点忘记在CurseForge上说了)
如果按键冲突请前往MC热键设置自行修改。

如果想中止挑战,可以输入 /itemspeedrun stop
完整的指令大全,详见下一页
(如果你只是想尝鲜的话,上面那些东西就足够了)

🌐下载
请前往ModrinthCurseForge下载。
Fabric端最新版(1.19.4) · Fabric端快照版(1.20) · Forge端最新版
安全提示:受CurseForge盗G号事件影响,请您务必在下载模组后校验文件的SHA-256码。
对于Windows用户,推荐下载7-Zip进行文件校验。
对于Un*x用户,可使用sha256sum命令进行校验。
展开以查看最新版本的SHA-256码:82233d9df23b1b28a108126a2e42139518d58decc8a4b5a67e96cf9872106a45alphabet-speedrun-fabric-3.2.10.jar
b17ecdb442441dc20335100cba2b1627d55e1eba0d1085ddf362095955435378alphabet-speedrun-fabric-3.2.0.jar
fd35c0f442636aa3007a71c7955bed8eb7c25a7dace03d51bc435f1c2d57f413alphabet-speedrun-forge-3.2.0.jar
附件分流下载:
备份注:附件号码均为MCBBS原始编号,此处不予上传,请前往Modrinth下载。
Fabric, 1.19.4: \
Forge, 1.19.4: \
前置:
[*]Fabric/Quilt: 需要 Architectury API和Fabric API。
[*]Forge: 需要Architectury API。


点进最新发布的文件,可以看到一些Extension Pack,它们分别是收纳袋(Bundle)扩展和1.20实验性玩法(Update 1.20)的配套速通字母表扩展。
你需要启用对应的原版实验性功能才能游玩这些扩展包。


不要用移动版啦!
请使用电脑版查看剩余内容





WARNING专有名词未统一
可能会出现概念混乱的问题,我们将于最近修订这些文档。对此造成的不便敬请谅解。
若有疑问,欢迎在下方评论。



💻命令
以下内容为本Mod的指令大全。

/itemspeedrun start <goal>

[*]开始一次新的速通。
[*]goal: 速通类型,在数据包中定义。速通字母表为 speedabc: 开头,汉字数目为 hannumspeed: 开头。
[*]players: 玩家选择器,默认为 @s。
[*]difficulty: 速通难度,默认为 speedabc:inf_elytra_inf_firework。自带 9 种难度(烟花不给/一组/无限 和 鞘翅不给/耐久有限/不可破坏 排列组合):


难度ID描述
speedabc:empty[从零开始] 开局啥都不给。
speedabc:firework[开局烟花] 开局只给一组烟花,不给鞘翅。
speedabc:inf_firework[无限烟花] 开局给一组无限烟花(不消耗),不给鞘翅。
speedabc:elytra[鞘翅旅行] 开局只给一个鞘翅(耐久有限),如果不想让它最终坏掉就想办法打个耐久3+经验修补。
speedabc:elytra_firework[基础旅行] 开局给一个鞘翅(耐久有限)和一组烟花。
speedabc:elytra_inf_firework[无尽旅行] 开局给一个有限耐久的鞘翅和一组无限烟花。
speedabc:inf_elytra[永恒之翼] 开局只给一个无限耐久的鞘翅,不给烟花。
speedabc:inf_elytra_firework[无限探索] 开局给一个无限耐久的鞘翅和一组烟花。
speedabc:inf_elytra_inf_firework[经典] 开局给一个无限耐久的鞘翅和无限烟花。这也是上面的视频里用的模式。



/itemspeedrun stop

[*]暂停当前速通。
[*]如果不想让这次速通因为下一次的暂停而丢失的话,使用 /itemspeedrun archive 把它存盘。
[*]然而无论是正在速通的记录,还是暂停的速通记录,它们都会被储存在玩家 NBT 中,无须担心数据的丢失。

/itemspeedrun resume local

[*]恢复刚刚暂停但还没存盘的记录。


/itemspeedrun resume

[*]恢复已经存盘的记录。
[*]record: 记录的 UUID,在存盘时会提示存盘记录的 UUID 是啥。
[*]恢复后会分配一个新的 UUID。

/itemspeedrun view

[*]查看当前速通状况。如果 player 选择器未指定就是 @s。
[*]查看自己当前速通状况的快捷键是 B,其与输入 /itemspeedrun view 等价(但是前者更方便)。
[*]若接受他人分享,则无须管理员权限,即可查看其速通状况。

/itemspeedrun archive

[*]将暂停的速通记录存盘。原本存在 NBT 中暂停的速通记录会在存盘成功后被抹掉。

/itemspeedrun delete <player> <record>

[*]删除某人存盘的某个速通记录。
[*]record: 老规矩,用 UUID。

/itemspeedrun list <player>

[*]列出玩家存盘的速通记录。目前只能查看有哪些 UUID(后续版本接着完善
[*]查看自己的记录别忘了加 @s。

/itemspeedrun draft create

[*]创建一个草稿,用以设置下一场速通的细节。你可以编辑好草稿,然后再开始速通。

[*]注意:草稿功能和多人速通尚不稳定,请谨慎使用。


/itemspeedrun draft query

[*]瞧一眼草稿编辑成啥样了。


/itemspeedrun draft setgoal <goal>

[*]设定草稿的速通类型,如 speedabc:a, hannumspeed:2 等。


/itemspeedrun draft setplaytype <pvp|coop>

[*]设置接下来的速通是 竞速(PVP) 还是 合作(COOP) 类型的。用于多人速通。


/itemspeedrun draft setdifficulty <difficulty>

[*]设置草稿的速通难度。难度的类型在最上面已经讲了。


/itemspeedrun draft op <add|remove> <players>

[*]为接下来的速通添加/移除管理员。


/itemspeedrun invite send <players>

[*]邀请玩家加入草稿指定的速通。
[*]如果草稿不存在,则邀请玩家加入当前速通。


/itemspeedrun quit

[*]一个字,润。如果和朋友玩着玩着突然不想玩了,可以用这个指令退出当前速通。
[*]如果你是一个人玩,那这个指令和 /itemspeedrun stop 没有区别。


/itemspeedrun exposeto <player>

[*]如果你正在玩单人速通或者竞速速通,可以用这个指令把你的速通进度共享给朋友,这样TA即使不是OP也能看你的速通进度了。






WARNING专有名词未统一
可能会出现概念混乱的问题,我们将于最近修订这些文档。对此造成的不便敬请谅解。
若有疑问,欢迎在下方评论。



{:crafting_table_front:}扩展包教程
阅读本教程前需要知道的概念:

1. 本Mod的扩展包 的本质是 数据包。
这意味着你可以在扩展包中同时自定义 物品标签、进度 等内容。
关于数据包的Wiki介绍:mcwiki:数据包

2. 扩展包中的所有 JSON 文件都要求是标准格式,不允许有注释。
下文中的JSON注释只是便于理解,在写扩展包时请不要包含JSON注释。
关于JSON语法的其他规则,请自行查阅搜索引擎。

3. 命名空间 ID(简称:ID)
格式为:namespace:path。详情参见:mcwiki:命名空间ID
请注意,ID 中不能包含大写字母。

4. 速通目标(Goal)
- 速通目标中包含了目标名称、条件列表(见概念5)等信息。
- 对于 ID 为 namespace:path 的速通目标,其描述文件应位于 data/namespace/speedrun_goals/item/path.json。

5. 条件列表
最简单的条件为 获取一个物品 或 达成一个进度等。
你可以将“条件列表”简单地理解为“物品列表”。

6. 物品标签
关于物品标签的Wiki介绍:mcwiki:标签#物品标签

7. 原始 JSON 文本
格式详见:mcwiki:原始JSON文本#Java版
最简单的原始 JSON 文本就是 字符串,如 "全物品速通"
你可以在游戏中使用 /tellraw 指令测试文本格式的结果。详情参见:mcwiki:命令/tellraw

8. ICON(物品图标)
格式:
{
    "item": "minecraft:diamond_sword",// 必填
    "replace": "icon",// 可选,建议你如此设置。
    "nbt": "{Enchantments:[{id:mending:lvl:1b}],display:{Name:'\"剑不剑啊\"'}}" // 可选
}
这个例子表示“一个 带经验修补附魔、名称为 剑不剑啊 的钻石剑”。

https://web.archive.org/web/20230809010841im_/https://static.mcbbs.net/static/image/hrline/4.gif

一个速通目标的格式大致如下:
{
    "icon": ...,    // 必填,ICON 格式。在游戏中不会显示,但是必须写。
    "display": ..., // 必填,原始 JSON 文本格式。这是速通目标的标题。
    "items": [      // 所有条件
      ...,      // 每个条件
      ...
    ]
}
每个条件可以是:
[*]一个物品 ID,如 "minecraft:apple" 这代表要收集这一个物品(例:收集苹果)
[*]一个标签 ID,如 "#minecraft:logs_that_burn" 这代表要收集标签内所有物品(例:收集所有主世界原木)
[*]若想把条件设置为“获取某一标签内任意物品即可达成条件”,则这里要填一个 JSON 对象:
{
    "tag": "minecraft:logs_that_burn",// 前面不加#号
    "all": false,
    "icon": ...   // 强烈建议写一个ICON,并且给这个物品设置一个自定义名称。不然会在条件列表中以及达成条件时,显示一个名为“任意物品”的苹果。
}
若想对物品的数量、附魔、NBT等进一步进行限制,建议使用进度实现(你可以尝试使用 minecraft:inventory_changed 触发器)。详见下一项。
[*]达成一个进度也可作为一个条件。这里要填一个 JSON 对象:
{
    "advancement": "minecraft:end/kill_dragon",
    "icon": ...   // 强烈建议写一个ICON,并且给这个物品设置一个自定义名称。不然会在条件列表中以及达成条件时,显示为一个草方块。
}

你可以自行创建一个进度,详见 mcwiki:进度/JSON格式

建议将你的进度设为隐藏进度,这样使用扩展包的用户就不会意识到 你的这个条件是用进度实现的。
设置隐藏进度的常用办法为:在进度描述文件中,不定义 display 字段,并将父进度设置为 "recipes/root"。

https://web.archive.org/web/20230809010841im_/https://static.mcbbs.net/static/image/hrline/4.gif


我将给出一个最简单的例子:
{
    "display": "蛋糕是个谎言",
    "icon": {
      "item": "minecraft:cake"
    },
    "items": [
      "minecraft:egg",
      "minecraft:wheat",
      "minecraft:milk_bucket"
      "minecraft:cake"
    ]
}
在这个例子中,该目标有 4 个条件:获得鸡蛋、获得小麦、获得奶桶、获得蛋糕。

你可以解压Mod文件以获得 速通字母表的目标文件 作为示例参考。
下面以 speedabc:v (data/speedabc/speedrun_goals/item/v.json) 为例:
{
"display": {// 这是一个高级的原始 JSON 文本。通常你只需要定义成字符串即可。
    "translate": "speedrun.alphabet.speedrun_goals.speedabc.v"
},
"items": ["#speedabc:v"], // 需要获得 speedabc:v 标签下的所有物品。注意别忘记旁边的中括号。
"icon": {
    "item": "vine"
}
}
以下为物品标签 #speedabc:v (data/speedabc/tags/items/v.json):
{
"replace": false,
"values": [
    "minecraft:verdant_froglight",
    "minecraft:vine"
]
}

-待补充-[:cowry:]
页: [1]
查看完整版本: 【1.21-1.19.2】ABS | αβspeedrun | 自定义速通挑战【帖子备份】