25w03a是Java版1.21.5
新内容
方块
- 测试方块
- 用于实现基于方块的测试的技术性方块。
- 物品稀有度为“史诗”。
- 有4种模式:
- 启动模式(
mode
为start
):在测试启动时产生一次红石脉冲。 - 日志输出模式(
mode
为log
):接收到红石信号时,将消息输出到日志文件。 - 失败模式(
mode
为fail
):接收到红石信号时,使测试失败。 - 接受模式(
mode
为accept
):接收到红石信号时,成功完成这条路径的测试。
- 启动模式(
- 运行基于方块的测试需要结构中至少存在一个启动模式和一个接受模式的方块。
- 测试实例方块
- 用于运行、控制世界中的测试的技术性方块。
- 物品稀有度为“史诗”。
- 此方块表示世界中的测试实例。
- 可以用于与所对应的测试交互,以保存测试结构、重置测试或运行测试。
- 测试启动后,每个测试位置都会发出一条信标光柱以表示测试状态。
- 灰色 = 运行中
- 红色 = 失败(必要测试)
- 橙色 = 失败(可选测试)
- 绿色 = 成功
- 如果测试失败,错误会显示在一本讲台的书和一个遮罩上。
- 使用
/test
运行或创建了一个测试也将放置一个测试实例方块来控制此测试。
世界生成
- 结构
- 加入了空结构
empty.nbt
。
游戏内容
- 槽位
- 加入了
saddle
生物通用槽位。- 可装备于此槽位的物品由
equippable
物品堆叠组件控制。 - 只有自然支持此槽位的生物能在装备对应物品时被骑乘并在实体模型上渲染鞍。
- 可装备于此槽位的物品由
命令格式
/test
- 用于创建和运行测试的命令。
- 注意:游戏测试的设计为运行于标准超平坦世界。每次测试运行时,其周围的区域都会被石头代替,且测试会被屏障盒包裹。
- 语法如下:
test clear*
:清除与所选的测试关联的结构和方块。test clearall [<radius>]
test clearthat
test clearthese
test create
:在当前位置创建一个指定测试的测试设置,为指定大小的测试结构做准备。test create <test> [<width>] [<height> <depth>]
test locate
:在已加载区块中寻找测试的位置。test locate <selector>
test reset*
:为所选的测试重置测试结构,移除周围的所有屏障并重新放置结构。test resetclosest
test reseetthese
test resetthat
test pos
:显示测试中指向方块的局部坐标。如果指定了变量名,则在由单击此命令返回消息中的坐标获得的代码片段中使用该变量名。test pos [<variable>]
test run*
:运行一个或多个测试。先加载每个测试的给定结构,再运行相关测试。如果一次运行多个测试,则它们会被放置于网格中并行运行,但有一定限制。如果超出限制,则测试按轮依次运行。test run <selector> [<numberOfTimes>] [<untilFailed>] [<rotationSteps>] [<testsPerRow>]
test runclosest [<numberOfTimes>] [<untilFailed>]
test runfailed [<numberOfTimes>] [<untilFailed>] [<rotationSteps>] [<testsPerRow>]
test runmultiple <selector> [<amount>]
test runthat [<numberOfTimes>] [<untilFailed>]
test runthese [<numberOfTimes>] [<untilFailed>]
test stop
:停止所有测试。由测试触发的游戏事件可能仍会继续。test verify <tests>
:通过运行同一测试的多个实例来验证一个或多个测试。
- 参数:
radius
:需要清除的测试的范围。test
:测试的命名空间ID。selector
:支持通配符(*
和?
)的测试ID选择器。未提供命名空间时,默认使用minecraft:
。- 示例:
*:*
– 匹配所有ID。*
– 匹配minecraft
命名空间下的全部ID。custom:folder/*_test_?
– 匹配custom
命名空间下folder
文件夹中为<任意前缀>_test_<单字符后缀>
的ID。
- 示例:
width
:(默认为5
)测试结构的宽度。height
:(默认使用width
的值)测试结构的高度。depth
:(默认使用width
的值)测试结构的深度。variable
:复制代码段中使用的变量名。numberOfTimes
:(默认为1
)重复每个测试的次数。untilFailed
:(布尔值,默认为false
)测试是否应该在一次迭代失败后立即停止。rotationSteps
:(默认为0
)测试的额外90度旋转步数。testsPerRow
:(默认为8
)网格布局中每行放置的测试数量。
常规
- 数据包
- 在数据包中加入了
test_environment
和test_instance
文件夹。 - 数据包现在可以用于配置测试实例与测试环境定义。
- 注册表
- 加入了
TEST_ENVIRONMENT_DEFINITION_TYPE
、TEST_INSTANCE_TYPE
和TEST_FUNCTION
固有注册表。 - 加入了
TEST_ENVIRONMENT
和TEST_INSTANCE
可写注册表。
- 物品堆叠组件
- 加入了一系列用于配置实体的变种、外观或其他方面的组件。
- 当刷怪蛋、生物桶、画和物品展示框等物品具有这些组件时,组件将对其生成的实体生效。
- 对实体使用选取键获取刷怪蛋时,获取的刷怪蛋不会储存这些组件。
- 新组件如下:
- axolotl/variant:可以为
lucy
、wild
、gold
、cyan
或blue
之一。 - fox/variant:可以为
red
或snow
之一。 - horse/variant:可以为
white
、creamy
、chestnut
、brown
、black
、gray
或dark_brown
之一。 - llama/variant:可以为
creamy
、white
、brown
或gray
之一。 - mooshroom/variant:可以为
red
或brown
之一。 - parrot/variant:可以为
red_blue
、blue
、green
、yellow_blue
或gray
之一。 - rabbit/variant:可以为
brown
、white
、black
、white_splotched
、gold
、salt
或evil
之一。 - villager/variant:可以为
desert
、jungle
、plains
、savanna
、snow
、swamp
或taiga
之一。 - salmon/size:可以为
small
、medium
或large
之一。 - tropical_fish/pattern:可以为
kob
、sunstreak
、snooper
、dasher
、brinely
、spotty
、flopper
、stripey
、glitter
、blockfish
、betty
或clayfish
之一。 - tropical_fish/base_color:16种染料颜色之一。
- tropical_fish/pattern_color:16种染料颜色之一。
- cat/collar:16种染料颜色之一。
- wolf/collar:16种染料颜色之一。
- sheep/color:16种染料颜色之一。
- shulker/color:16种染料颜色之一。
- cat/variant:需为取自
cat_variant
注册表的命名空间ID。 - frog/variant:需为取自
frog_variant
注册表的命名空间ID。 - painting/variant:需为取自
painting_variant
注册表的命名空间ID。 - pig/variant:需为取自
pig_variant
注册表的命名空间ID。 - wolf/variant:需为取自
wolf_variant
注册表的命名空间ID。
- axolotl/variant:可以为
- 创造模式物品栏中的生物桶和画现在使用新变种而非
minecraft:entity_data
组件。 - 热带鱼桶和画物品的自定义提示框文本现在基于新组件而非
minecraft:bucket_entity_data
和minecraft:entity_data
。
- 实体谓词
- 在实体谓词中加入了新字段components。
- 存在时,谓词会匹配实体组件的内容(类似于匹配物品堆叠的物品谓词的字段
components
)。 - 格式:组件类型键与组件匹配值的映射。
- 存在时,谓词会匹配实体组件的内容(类似于匹配物品堆叠的物品谓词的字段
- 装备模型
- 加入了预设模型层
pig_saddle
、strider_saddle
、camel_saddle
、horse_saddle
、donkey_saddle
、mule_saddle
、skeleton_horse_saddle
和zombie_horse_saddle
。
- 物品模型
- 加入了枚举属性
component
,用于返回物品的组件值(如有)。- 附加字段如下:
- component:物品堆叠组件类型的命名空间ID。
- 可能的值取决于物品堆叠组件类型。例如类型设置为
minecraft:wolf/collar
时,枚举值列表会接受染料颜色(如lime
)。
- 附加字段如下:
- 服务端核心文件
- 在
server.jar
中加入了net.minecraft.gametest.Main
入口点,用于自动启动运行全部可用测试项目的服务端。- 选项如下:
--help
:显示用法信息。--packs <路径>
:设置世界中启用的数据包路径(可以为包含pack.mcmeta
文件的文件夹或.zip
格式的压缩包)。--report <路径>
:将类似于JUnit的XML报告导出到给定路径。--tests <选择>
:指定根据选择表达式(与命名空间测试实例ID匹配的通配符表达式)运行的测试内容。如果此项省略或指定空ID,则运行所有测试项。--universe <路径>
:(默认为gametestserver
)设置服务端世界存放路径。会替换已有的文件夹。--verify <布尔值>
:(默认为false
)启用测试验证。启用时,对每个90度旋转步骤运行以test
或testNamespace
指定的测试100次。
- 用法示例:
java -DbundlerMainClass="net.minecraft.gametest.Main" -jar server.jar --packs mytestpacks
- 选项如下:
- 测试实例定义格式
- 游戏测试实例是定义运行测试的小型资产,可以在数据包注册表
test_instance
中定义。 - 测试类型分为2种:内置函数测试和基于方块的测试。
- 内置函数测试依赖内置函数来运行测试并指示成功或失败。
- 基于方块的测试使用测试结构中的测试方块来运行测试并指示成功或失败。
- 游戏内置一个永远成功的测试实例
minecraft:always_pass
。 - 格式如下:
-
- 父标签
- *batch[2]:作为测试一部分的测试环境的命名空间ID。
- *structure:用于测试的结构的命名空间ID。
- *type:测试的类型。需为
block_based
或function
之一。 - *max_ticks:(值>0)允许测试通过而不超时的最大刻数。
- setup_ticks:(默认为
0
,值≥0)放置测试结构后、测试启动前需要等待的刻数。 - max_attempts:(默认为
1
,值>0)尝试运行此测试的次数。 - required_successes:(默认为
1
,值≥0)此测试必须成功的次数。 - required:(默认为
true
)对要通过的完整测试套件而言,这个测试是否必须通过。 - manual_only:(默认为
false
)此测试是否不包含于自动测试运行组中。 - sky_access:(默认为
false
)此测试是否需要天空。为false
时,测试结构被屏障完全包裹;为true
时,屏障盒顶部敞开。 - rotation:(默认为
none
)对测试结构应用的旋转角度。可以为none
、clockwise_90
、180
或counterclockwise_90
之一。- type为
function
时,附加以下字段:
- type为
- *function:要运行的测试函数的命名空间ID。目前内置的测试函数只有
minecraft:always_pass
。
- 父标签
- 测试环境定义格式
- 游戏测试环境是对测试进行分组并为其提供正确的运行前提条件的一种方法,可以在数据包注册表
test_environment
中定义。 - 游戏内置一个空测试环境
minecraft:default
。 - 格式如下:
-
- 父标签
- *type:测试环境的类型。需为
all_of
、function
、game_rules
、raining[3]
或time_of_day
之一。- type为
all_of
时,附加以下字段:
- type为
- *definitions:子定义设置列表,其中的定义均会应用。
- type为
function
时,附加以下字段:
- type为
- setup:用于安装的mcfunction文件的命名空间ID。
- teardown:用于卸载的mcfunction文件的命名空间ID。
- type为
game_rules
时,附加以下字段:
- type为
- *bool_rules:布尔型游戏规则的设置列表。
- :一个游戏规则与一个设置值。
- *rule:要设置的规则的精确ID。测试环境完成后,此规则会被重置为默认值。
- *value:规则的设置值。
- :一个游戏规则与一个设置值。
- *int_rules:整型游戏规则的设置列表。
- :一个游戏规则与一个设置值。
- *rule:要设置的规则的精确ID。测试环境完成后,此规则会被重置为默认值。
- *value:规则的设置值。
- type为
raining
[3]时,附加以下字段:
- :一个游戏规则与一个设置值。
- *weather:要设置的天气。需为
clear
、rain
和thunder
之一。- type为
time_of_day
时,附加以下字段:
- type为
- *time:(值≥0)要设置的当日时间,单位为刻。
- *type:测试环境的类型。需为
- 父标签
- 游戏测试框架
- 现在可以通过修改游戏代码的方式在
TEST_FUNCTION
注册表中添加测试函数,以使用比基于方块的测试方式更通用的游戏测试框架。
- 标签
- 加入了实体标签
#can_equip_saddle
:horse
、skeleton_horse
、zombie_horse
、donkey
、mule
、pig
、strider
和camel
。- 可以装备鞍的实体。该标签仅用于鞍的物品默认组件,不控制其实际功能。
更改
方块
- 枯叶
- 现在能对堆肥桶使用以堆肥,有30%的概率增加一层堆肥层。
- 蘑菇方块
- 现在可以在生成时替换枯叶。
- 粉红色花簇
- 回退了上个版本中的更改。现在对其使用骨粉时又会增加花的数量。
- 野花簇
- 现在对其使用骨粉时会先增加花的数量,待花的数量达到4后再掉落野花簇。
- 方块更新
- 上个快照一些未正常产生余留更新的破坏行为现在会正常更新了。
生物
- 可骑乘生物
- 现在装备于其身上的鞍在掉落时能保留诸如自定义名称之类的物品属性。
- 非玩家生物数据
ArmorItems
、HandItems
和body_armor_item
字段现已合并为equipment字段。- 格式为每个盔甲槽位与物品堆叠的映射。
- 有效的盔甲槽位包括:
head
、chest
、legs
、feet
、mainhand
、offhand
、body
和saddle
。 - 此字段不存在时,实体将无盔甲。
- 实体数据
- FallDistance现在改为fall_distance。
世界生成
- 返回传送门
- 尝试放置返回传送门方块时,现在会使被替换的方块掉落。
- 地物数据格式
place_on_ground
树木装饰器放置方块时,不再允许方块替换#replaceable_by_trees
方块标签内的方块。- 现在
place_on_ground
树木装饰器尝试放置方块的位置比之前低1格,导致森林和疏林恶地生物群系不再自然生成枯叶。[4]
- 现在
游戏内容
- 槽位
- 移除了
horse.saddle
鞍槽位。
- 摔落
- 存储时和部分计算中的摔落高度现在使用双精度浮点数而非单精度浮点数。
常规
- 数据包
- 将数据包版本号更改为
63
。
- 文本组件
- 对悬停事件的
show_text
行为进行下列更改:text
字段已重命名为value
。
- 物品堆叠组件
- 将weapon组件的damage_per_attack字段更名为item_damage_per_attack。
- equippable组件现有以下更改:
- slot字段现可设置为
saddle
,表示鞍槽位。 - 现在,拥有该组件的物品可以被穿戴在任何满足allowed_entities的生物的
body
槽位中。 - 加入了可选字段equip_on_interact,默认为
false
,控制玩家是否可给生物穿戴该物品。- 如为
true
,对该组件允许的生物使用该物品时,如相应槽位没有其他物品,即可为生物穿戴该物品。
- 如为
- slot字段现可设置为
- 实体子谓词
- 移除了变种实体子谓词
axolotl
、fox
、mooshroom
、rabbit
、horse
、llama
、villager
、parrot
、salmon
、tropical_fish
、painting
、cat
、frog
、wolf
和pig
。- 其效果已被
components
谓词与变种实体组件的组合取代。
- 其效果已被
- 字段color已从实体子谓词
sheep
中移除。
- 资源包
- 将资源包版本号更改为
48
。 - 更改了
pig_saddle
纹理的尺寸。 - 与鞍相关的纹理现在被移动或拆分到了
textures/entity/equipment/<实体>_saddle/saddle.png
,以便装备模型调用。- 这些纹理路径中的
horse_skeleton
和horse_zombie
现在已分别改为skeleton_horse
和zombie_horse
。
- 这些纹理路径中的
- 标签
- 在
#replaceable_by_mushrooms
方块标签中加入了leaf_litter
。
修复
- 修复了39个漏洞
- 1.21前正式版的漏洞
- MC-13738 — 对马、驴或骡使用隐形药水后,鞍也被隐形。
- MC-80243 — 鞍不对装备其的实体应用属性修饰符。
- MC-189525 — 自1.9之前的版本升级的世界中的穿装备的实体双持盔甲。
- MC-190000 — 装备于马的鞍不能被其他鞍直接替换。
- MC-227097 — 末地传送门删除了传送门中的方块。
- MC-256469 — 隐形的骆驼不显示其鞍。
- MC-266912 — 将鞍装备到刚生成的马、驴、骡或骆驼时,装备鞍的音效不会播放。
- MC-269637 — 马能穿戴多个鞍,但不能装备多个马铠。
- MC-270192 — 某些实体的鞍在其死亡动画中一直可见。
- MC-270197 — 猪和炽足兽身上的鞍在其死亡动画中一直可见。
- MC-272100 — 马的纹理(
horse_[brown/chestnut/creamy/white].png
)中存在未使用的调色像素。 - MC-272790 — 末地返回传送门中的潜影盒和其他方块未在传送门改变状态时作为物品掉落。
- 1.21的漏洞
- MC-274258 — 所有马的纹理都包含一个未使用的箱包纹理。
- 1.21.2的漏洞
- MC-279340 — 幼年北极熊太小了。
- 1.21.4的漏洞
- MC-278673 —
/teleport
的相对于实体原始角度的X轴旋转角度限制于±90。
- 上个开发版本的漏洞
- MC-279206 — 枯叶不能用于堆肥。
- MC-279208 — 玩家不再能在按住横向移动键时开始疾跑。
- MC-279211 — 潜影盒被以某些方法破坏时,能在被保留的同时掉落其中内容物,以复制物品。
- MC-279213 — 蘑菇方块不能替换枯叶。
- MC-279221 — 枯叶在世界生成时会替换掉树叶。
- MC-279224 — 在草甸使用骨粉不会生成野花簇。
- MC-279226 — 任意数量的经验球都以最小值渲染。
- MC-279233 — 被破坏的潜影盒掉落其中内容物。
- MC-279234 —
minecraft:entity.generic.extinguish_fire
音效未在实体身上的火被熄灭时播放。 - MC-279238 — 死于由被烈焰人火球点燃的TNT矿车不算作被烈焰人击杀。
- MC-279239 — 被激活的TNT的动量不稳定。
- MC-279245 — 大多数敌对生物在合适条件下都不生成。
- MC-279248 — 熔岩的碰撞箱过高。
- MC-279281 — 从2格方块上跳下来会产生摔落伤害。
- MC-279282 — 生成主人UUID不为玩家的鹦鹉会导致崩溃。
- MC-279301 — 从22.00001格高而非23格高摔落的玩家死亡。
- MC-279313 — 某些情况下,物品实体的动量不稳定。
- MC-279314 — 弹射物在空中飞行时会轻微抽搐。
- MC-279316 — 浮漂的动量不稳定。
- MC-279326 — 亮起的侦测器不再在被活塞移动时发出方块更新。
- MC-279339 — 斜坡铁轨的更新顺序异常。
- MC-279345 — 粉红色花簇和野花簇不再能用骨粉催生。
- MC-279357 — 玩家能在潜行时从边缘摔下。
- MC-279459 —
/setblock
和其他填充方块的命令不能正常更新方块实体。