登陆 注册 QQ登陆
快捷导航
查看: 2|回复: 0

[模组分享] PackTest (PackTest)-MOD模组

[复制链接]

5229

主题

48

回帖

6363

积分

龙❁妻

Rank: 8Rank: 8

经验
6363 EP
金粒
1046 粒
绿宝石
20 块
爱心
0 点
发表于 2025-8-10 18:48:02 | 显示全部楼层 |阅读模式
PackTest (PackTest)Github |相关wiki |源站链接支持: fabricFabric mod for testing data packs, with data packs!

*模组介绍:*

PackTest允许您在数据包中编写游戏测试。测试是`*.mcfunction`文件,位于`tests`文件夹中。它们可用于测试自定义数据包。

*示例:*

data/example/tests/foo.mcfunction

#> Summons an armor stand and finds it
<h1>@template example:small_platform</h1>
<h1>@optional</h1>

summon armor_stand ~1.5 ~1 ~1.5
execute positioned ~1.5 ~1 ~1.5 run assert entity @e[type=armor_stand,dx=0]

assert predicate example:test

setblock ~1 ~1 ~1 grass_block
execute if block ~1 ~1 ~1 stone run succeed

fail \"Oh no\"Copy已复制!

*异步测试:*

测试函数可以是异步的,使用`await`关键字!

setblock ~ ~ ~ stone
summon item ~ ~6 ~

await entity @e[type=item,distance=..2]

await delay 1s

data merge entity @e[type=item,distance=..2,limit=1] {Motion: [0.0, 0.01, 0.0]}Copy已复制!

*运行测试:*

测试可以在游戏中使用`test`命令运行。

- test runall: 运行所有测试
- test runall <namespace>: 运行指定命名空间的所有测试
- test run <test>: 运行指定名称的测试
- test runfailed: 运行所有先前失败的测试
- test runthis: 运行最接近的测试
- test runthese: 运行200个方块内的所有测试

*自动测试服务器:*

测试也可以自动运行,例如在CI环境中。当设置了`-Dpacktest.auto`时,游戏测试服务器将自动启动并加载测试。当所有测试完成时,进程将退出,退出代码设置为失败的测试数。

设置`-Dpacktest.auto.annotations`将为所有测试失败和资源加载错误发出GitHub注释。

以下示例可调整为GitHub操作工作流程。

on: [push, pull_request]

env:
  # 确保更新这些链接!
  TEST_FABRIC_SERVER: <jin class=\"jinsom-post-link\" type=\"link\" data=\"https://meta.fabricmc.net/v2/versions/loader/1.20.4/0.15.3/0.11.2/server/jar\" onclick=\"jinsom_post_link(this);\"><i class=\"fa fa-link\"></i> 链接</jin>
  TEST_FABRIC_API: <jin class=\"jinsom-post-link\" type=\"link\" data=\"https://cdn.modrinth.com/data/P7dR8mSH/versions/JMCwDuki/fabric-api-0.92.0%2B1.20.4.jar\" onclick=\"jinsom_post_link(this);\"><i class=\"fa fa-link\"></i> 链接</jin>
  TEST_PACKTEST: <jin class=\"jinsom-post-link\" type=\"link\" data=\"https://cdn.modrinth.com/data/XsKUhp45/versions/18smpIeE/packtest-1.6-mc1.20.4.jar\" onclick=\"jinsom_post_link(this);\"><i class=\"fa fa-link\"></i> 链接</jin>

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          distribution: \'temurin\'
          java-version: \'17\'
      - name: Download and prepare files
        run: |
          curl -o server.jar $TEST_FABRIC_SERVER
          mkdir mods
          curl -o mods/fabric-api.jar $TEST_FABRIC_API
          curl -o mods/packtest.jar $TEST_PACKTEST
          mkdir -p world/datapacks
          cp -r datapack world/datapacks/datapack
      - name: Run tests
        run: |
          java -Xmx2G -Dpacktest.auto -Dpacktest.auto.annotations -jar server.jar noguiCopy已复制!

*命令:*

*`fail`*

fail <text component>: 失败当前测试并从函数返回

*`succeed`*

succeed: 总是成功当前测试并从函数返回

*`assert`*

- assert <condition>: 如果条件不成功,则失败当前测试并从函数返回
- assert not <condition>: 如果条件成功,则失败当前测试并从函数返回

*`await`*

- await <condition>: 类似于assert,但会在每个时钟周期尝试条件,直到测试超时或条件成功
- await not <condition>: 尝试条件直到失败
- await delay <time>: 等待指定时间,单位为秒

*条件:*

- block <pos> <block>: 检查指定位置的方块是否与方块谓词匹配
- data ...: 使用与`execute if score`相同的语法检查NBT数据
- entity <selector>: 检查选择器是否与任何实体匹配(还可以找到结构边界之外的实体)
- predicate <predicate>: 检查数据包中的谓词
- score ...: 使用与`execute if score`相同的语法检查分数
- chat <pattern> [<receivers>]: 检查是否在过去的时钟周期内发送了与正则表达式模式匹配的聊天消息

*虚拟实体:*

可以使用`/dummy`命令生成虚拟玩家。虚拟玩家不会保存或从磁盘加载其数据,也不会加载其皮肤。

- dummy <name> spawn: 生成一个新的虚拟玩家
- dummy <name> respawn: 在虚拟玩家被击败后重新生成
- dummy <name> leave: 让虚拟玩家离开服务器
- dummy <name> jump: 让虚拟玩家跳跃(如果当前在地面上)
- dummy <name> sneak [true|false]: 让虚拟玩家按住或松开Shift键(不同于当前是否蹲伏)
- dummy <name> sprint [true|false]: 让虚拟玩家按住或松开Sprint键
- dummy <name> drop [all]: 使虚拟玩家丢弃当前主手中的物品,可以是一个物品或整个堆栈
- dummy <name> swap: 使虚拟玩家交换主手和副手
- dummy <name> selectslot: 使虚拟玩家选择不同的热键槽
- dummy <name> use item: 使虚拟玩家使用手中的物品,可以是主手或副手
- dummy <name> use block <pos> [<direction>]: 使虚拟玩家在方块位置使用手中的物品
- dummy <name> use entity <entity>: 使虚拟玩家在实体上使用手中的物品
- dummy <name> attack <entity>: 使虚拟玩家用主手攻击实体
- dummy <name> mine <pos>: 使虚拟玩家挖掘方块

*指令:*

*`@template`*: 用于测试的结构模板的资源位置,默认为空的1x1x1结构

*`@timeout`*: 指定超时时间的整数,默认为`100`

*`@optional`*: 是否允许此测试失败,默认为`false`,如果指令后没有值,则视为`true`

*`@dummy`*: 是否在测试开始时生成一个虚拟实体并将`@s`设置为此虚拟实体,位置默认为`~0.5 ~ ~0.5`

*`@batch`*: 此测试的批次名称,默认为`packtestBatch`

*`@beforebatch`*: 在此批次之前运行的命令,每个批次只能有一个

*`@afterbatch`*: 在此批次之后运行的命令,每个批次只能有一个

截图:



来自Modrinth所有游戏版本1.21.61.21.71.21.6-pre41.21.51.21.5-rc11.21.5-rc21.21.41.21.4-pre11.21.21.21.31.21.2-pre11.21.11.211.20.51.20.61.20.5-pre124w12a24w09a1.20.4所有类型fabricPackTest v2.2packtest-2.2-mc1.21.7.jar下载2.2.0#Release* Updated to 1.21.6 and 1.21.7展开版本: 2.2.0支持游戏: 1.21.6, 1.21.7类型:FabricRelease下载次数: 131PackTest v2.2.0 Beta 1packtest-2.2-beta1-mc1.21.6-rc1.jar下载2.2.0-beta1#Beta* Updated to 1.21.6展开版本: 2.2.0-beta1支持游戏: 1.21.6-pre4类型:FabricBeta下载次数: 29PackTest v2.1.1packtest-2.1.1-mc1.21.5.jar下载2.1.1#Release* Fixed [#8](https://github.com/misode/packtest/issues/8): Rotate command does not rotate dummies展开版本: 2.1.1支持游戏: 1.21.5类型:FabricRelease下载次数: 53PackTest v2.1packtest-2.1-mc1.21.5.jar下载2.1.0#Release* Fixes [#14](https://github.com/misode/packtest/issues/14) where some tick inconsistencies were caused by the game test ticker being ticked twice per tick展开版本: 2.1.0支持游戏: 1.21.5类型:FabricRelease下载次数: 441PackTest v2.0packtest-2.0-mc1.21.5.jar下载2.0.0#Release* Updated to 1.21.5* BREAKING: Removed `@batch`, `@beforebatch`, and `@afterbatch` directives* Added `@environment` directive to specify a `test_environment`展开版本: 2.0.0支持游戏: 1.21.5类型:FabricRelease下载次数: 26PackTest v2.0 Beta 1packtest-2.0-beta1-mc1.21.5.jar下载2.0.0-beta1#Beta* Updated to 1.21.5-rc1* BREAKING: Removed `@batch`, `@beforebatch`, and `@afterbatch` directives* Added `@environment` directive to specify a `test_environment`* Known issue: `/reload` is completely broken展开版本: 2.0.0-beta1支持游戏: 1.21.5-rc1, 1.21.5-rc2类型:FabricBeta下载次数: 273PackTest v1.10packtest-1.10-mc1.21.4.jar下载1.10.0#Release展开版本: 1.10.0支持游戏: 1.21.4类型:FabricRelease下载次数: 62PackTest v1.10 Beta 1packtest-1.10-beta1-mc1.21.4.jar下载1.10.0-beta1#Beta* Updated to 1.21.4-rc1展开版本: 1.10.0-beta1支持游戏: 1.21.4-pre1类型:FabricBeta下载次数: 1,051PackTest v1.9packtest-1.9-mc1.21.2.jar下载1.9.0#Release* Updated to 1.21.2展开版本: 1.9.0支持游戏: 1.21.2, 1.21.3类型:FabricRelease下载次数: 610PackTest v1.9 Beta 1packtest-1.9-beta1-mc1.21.2.jar下载1.9.0-beta1#Beta* Updated to 1.21.2-pre3展开版本: 1.9.0-beta1支持游戏: 1.21.2-pre1类型:FabricBeta下载次数: 63PackTest v1.8packtest-1.8-mc1.21.1.jar下载1.8.0#Release* Add `-Dpacktest.generate.commands` option to generate a commands.json report* Fix error reporting when annotations are enabled and the error message contains `{}`* Prevent dummies from getting the \"Bring Home the Beacon\"* Only run tests inside the world border when auto running展开版本: 1.8.0支持游戏: 1.21.1类型:FabricRelease下载次数: 452PackTest v1.8 Beta 3packtest-1.8-beta3-mc1.21.jar下载1.8.0-beta3#Beta* Fix crash caused by loot load errors展开版本: 1.8.0-beta3支持游戏: 1.21类型:FabricBeta下载次数: 1,564PackTest v1.8 Beta 2packtest-1.8-beta2-mc1.21.jar下载1.8.0-beta2#Beta* Updated to 1.21* Renamed `tests` folder to `test`展开版本: 1.8.0-beta2支持游戏: 1.21类型:FabricBeta下载次数: 56PackTest v1.7packtest-1.7-mc1.20.5.jar下载1.7.0#Release* Updated to 1.20.5* Added `/assert items`* `/assert predicate` now also allows inline predicates* Test structures are now encased with barrier blocks* Added the `@skyaccess` directives to remove the barriers at the top展开版本: 1.7.0支持游戏: 1.20.5, 1.20.6类型:FabricRelease下载次数: 548PackTest v1.7 Beta 4packtest-1.7-beta4-mc1.20.5-pre1.jar下载1.7.0-beta4#Beta* Update to 1.20.5-pre1展开版本: 1.7.0-beta4支持游戏: 1.20.5-pre1类型:FabricBeta下载次数: 125PackTest v1.7 Beta 3packtest-1.7-beta3-mc24w12a.jar下载1.7.0-beta3#Beta* Added `/assert items`展开版本: 1.7.0-beta3支持游戏: 24w12a类型:FabricBeta下载次数: 135PackTest v1.7 Beta 2packtest-1.7-beta2-mc24w12a.jar下载1.7.0-beta2#Beta* Update to 24w12a* `/assert predicate` now also allows inline predicates展开版本: 1.7.0-beta2支持游戏: 24w12a类型:FabricBeta下载次数: 69PackTest v1.7 Beta 1packtest-1.7-beta1-mc24w09a.jar下载1.7.0-beta1#Beta* Updated to 24w09a* Test structures are encased with barrier blocks* Added `@skyaccess` directives to remove the barriers at the top展开版本: 1.7.0-beta1支持游戏: 24w09a类型:FabricBeta下载次数: 85PackTest v1.6packtest-1.6-mc1.20.4.jar下载1.6.0#Release* Added line numbers to test failure messages* Errors when loading resources now fails the auto test server* Added an option to emit GitHub annotations with the auto test server using `-Dpacktest.auto.annotations`展开版本: 1.6.0支持游戏: 1.20.4类型:FabricRelease下载次数: 1,273PackTest v1.6 Beta 3packtest-1.6-beta3-mc1.20.4.jar下载1.6.0-beta3#Beta展开版本: 1.6.0-beta3支持游戏: 1.20.4类型:FabricBeta下载次数: 77PackTest v1.6 Beta 2packtest-1.6.-beta2-mc1.20.4.jar下载1.6.0-beta2#Beta展开版本: 1.6.0-beta2支持游戏: 1.20.4类型:FabricBeta下载次数: 75PackTest v1.6 Beta 1packtest-1.6.-beta1-mc1.20.4.jar下载1.6.0-beta1#Beta展开版本: 1.6.0-beta1支持游戏: 1.20.4类型:FabricBeta下载次数: 60PackTest v1.5packtest-1.5-mc1.20.4.jar下载1.5.0#Release* Added `assert entity <selector> inside` command, which only matches entities inside the test structure bounds (inflated by 1 block)* Dummies are now automatically removed when a test succeeds, like other entities* Fixed issue where forceloaded chunks would get removed after running tests展开版本: 1.5.0支持游戏: 1.20.4类型:FabricRelease下载次数: 85PackTest v1.4packtest-1.4-mc1.20.4.jar下载1.4.0#Release* Fixes an issue where modded clients without the mod could not connect to servers with the mod* Fixes some placeholder values in the mod metadata展开版本: 1.4.0支持游戏: 1.20.4类型:FabricRelease下载次数: 198PackTest v1.3packtest-1.3-mc1.20.4.jar下载1.3.0#Release* Fixes an issue causing the test server to fail展开版本: 1.3.0支持游戏: 1.20.4类型:FabricRelease下载次数: 290PackTest v1.2packtest-1.2-mc1.20.4.jar下载1.2.0#Release* Added `/await` command, which works similar to `/assert` but keeps testing the condition every tick* Removed `/succeed when`, instead use `/await`* Added `/await delay` command to sleep for a specified time* Added `/assert chat` command to test for tellraw messages matching a regex pattern* Fixed issue with dummies loading data from disk from previous sessions展开版本: 1.2.0支持游戏: 1.20.4类型:FabricRelease下载次数: 72PackTest v1.1packtest-1.1-mc1.20.4.jar下载1.1.0#Release* Added dummies, which are simulated, fake players* Added `/dummy` command* Added `@dummy` directive to spawn a dummy and set `@s` to this dummy* Added `@beforebatch` and `@afterbatch` directives to run commands展开版本: 1.1.0支持游戏: 1.20.4类型:FabricRelease下载次数: 78PackTest v1.0packtest-1.0-mc1.20.4.jar下载1.0.0#Release* Added mod icon展开版本: 1.0.0支持游戏: 1.20.4类型:FabricRelease下载次数: 67Packtest 1.0 Beta 5packtest-1.0.0-beta5.jar下载1.0.0-beta5#Beta* Added ascii coloring for the auto test server, can be disabled with `-Dpacktest.auto.coloring=false`* Added `/assert data`* Fixed issue where the last failing commands would mark the test as failed展开版本: 1.0.0-beta5支持游戏: 1.20.4类型:FabricBeta下载次数: 58Packtest 1.0 Beta 4packtest-1.0.0-beta4.jar下载1.0.0-beta4#Beta* Added `/succeed when` which tries a condition every tick until it succeeds or times out* Improved error messages for `/assert block` and `/assert entity`展开版本: 1.0.0-beta4支持游戏: 1.20.4类型:FabricBeta下载次数: 62Packtest 1.0 Beta 3packtest-1.0.0-beta3.jar下载1.0.0-beta3#Beta* Added `/assert not` command* Improved output log from auto test server* The exit code of the auto test server now matches the number of failed tests展开版本: 1.0.0-beta3支持游戏: 1.20.4类型:FabricBeta下载次数: 53Packtest 1.0 Beta 2packtest-1.0.0-beta.2.jar下载1.0.0-beta2#Beta* Added `/assert score` with same syntax as `/execute if score`* Added auto test server, enabled by starting the server with `-Dpacktest.auto`, server will automatically load data packs in `world/datapacks/`* Added `@batch`, `@timeout` and `@optional` test directives* The `/test` command now requires OP-level 2展开版本: 1.0.0-beta2支持游戏: 1.20.4类型:FabricBeta下载次数: 62Packtest 1.0 Beta 1packtest-1.0.0-beta.1.jar下载1.0.0-beta1#Beta* `*.mcfunction` files in the `tests` folder are automatically loaded as tests, to be used in `/test runall`* Added `/fail <text component>` command* Added `/succeed` command* Added `/assert entity`, `/assert block`, and `/assert predicate` commands展开版本: 1.0.0-beta1支持游戏: 1.20.4类型:FabricBeta下载次数: 49全部版本

markdown_parsed

文章类型:收录

layui.use([\'form\'], function(){
var form = layui.form;
});

游客,如果您要查看本帖隐藏内容请回复
PackTest
楼主 2025-8-10 18:48:02 回复 收起回复
小僵尸论坛感谢有你~
回复 论坛版权

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 手机动态码快速登录

本版积分规则



介绍

我的世界(Minecraft)小僵尸论坛
收录了来自各地的我的世界(MC)爱好者们的各种资源

须知: 切勿滥用举报,任何与举报相关的信息必须属实!

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

官方

新浪微博 腾讯微博 微信公众号 投稿规则 版权声明 捐助我们

官方QQ①群: 291907844 (点击加群)
官方QQ②群: 421312192
官方QQ③群: 528726532

我的世界(Minecraft)小僵尸论坛

新会员

QQ|Archiver|手机版|小黑屋|Minecraft(我的世界)小僵尸论坛 |网站地图

GMT+8, 2025-9-4 05:22 , Processed in 0.182830 second(s), 49 queries .

快速回复 返回顶部 返回列表