25w09a.md 10 KB


version-image-link: https://i0.hdslb.com/bfs/archive/4c14519160578eb16cf0c19ac33f3bf21161413f.png server-jar: https://piston-data.mojang.com/v1/objects/baab122c7652b302621f7befd5be40abef9b9b7c/server.jar translator: 最亮的信标

cats: ['1.21','1.21.5']

在本周的快照中,我们带来了盼望已久的同步特性——倒下的树木第一次亮相于 Java 版。除此之外,萤火虫灌木丛现在可以在红树林沼泽和罕见地在恶地中生成了。

在技术性方面,命令中的 SNBT 语法获得了扩展与改进,包含了与 SNBT 文本组件阻止在运行中转义相关的漏洞修复。

新特性

  • 同步基岩版,增加了倒下的树木

倒下的树木

  • 倒下的树木是一个新的树的装饰性变种
  • 倒下的树木加入到了以下四种树木类型:
    • 橡树
    • 白桦树
    • 丛林树
    • 云杉树
  • 倒下的白桦树有高矮两种不同版本
  • 一些倒下的树上会装饰着蘑菇或藤蔓
  • 倒下的树可以在所有该树种生长的生物群系中找到,下列生物群系除外:
    • 草甸
    • 竹林
    • 河流
    • 雪林
    • 繁花森林有倒下的白桦树但没有倒下的橡树

更改

枯叶

  • 枯叶现在能被其它方块替换

萤火虫灌木丛

  • 萤火虫灌木丛现在可以在红树林沼泽以及恶地(非常罕见)的水边生成,就像其它有水的生物群系一样。

技术性更改

  • 数据包版本现在为 69
  • 客户端有了新的命令行参数 --renderDebugLabels
    • 向相关的 OpenGL 物体增加了调试标签,使得开发者能更简单地调试渲染

数据包版本 69

  • 为 NBT、文本组件以及内联谓词(也称作 SNBT)扩展了在命令中的对象标记

命令

  • /data 现在可以透明地创建和修改异构列表

实体数据

  • FallFlying 字段不再在被移除时保留
  • 现在 Health 与 Air 字段若不指定,则默认为各自的最大值

AREA_EFFECT_CLOUD

  • 现在 Duration 字段若不指定,则默认为 -1
  • 如果 Duration 字段为 -1,区域效果云将不再自己消失
  • 这意味着生成未指定时常的区域效果云将会不再立即消失

CREEPER

  • 现在 Fuse 字段若不指定,则默认为 -1
  • 现在 ExplosionRadius 字段若不指定,则默认为 3

DOLPHIN

  • 现在 Moistness 字段若不指定,则默认为 2400

ENDER_DRAGON

  • 现在 DragonDeathTime 字段若不指定,则默认为 0

FALLING_BLOCK

  • 现在 HurtEntities 字段若不指定,则默认为 false (或 true 如果 BlockState 为 anvil)
  • 现在 FallHurtAmount 字段若不指定,则默认为 0
  • 现在 FallHurtMax 字段若不指定,则默认为 40
  • 现在 DropItem 字段若不指定,则默认为 true
  • TileEntityData 字段移除时不再保留

FIREWORK_ROCKET

  • 现在 ShotAtAngle 字段若不指定,则默认为 false

FOX

  • 现在 Trusted 字段若不指定,则默认为空(并且使用 /data 修改时将不再与原状态合并)

GHAST

  • 现在 ExplosionPower 字段若不指定,则默认为 1

GOAT

  • 现在 HasLeftHorn 和 HasRightHorn 字段若不指定,则默认为 true

INTERACTION

  • 现在 width 和 height 字段若不指定,则默认为 true

Item

  • 现在 Health 字段若不指定,则默认为 5
  • 现在 PickupDelay 字段若不指定,则默认为 0
  • 现在 Age 字段若不指定,则默认为 0
  • Owner 和 Thrower 字段移除时不再保留

ITEM_FRAME 与 GLOW_ITEM_FRAME

  • 现在 ItemDropChance 字段若不指定,则默认为 1.0

PRIMED_TNT

  • 现在 fuse 字段若不指定,则默认为 80
  • 现在 explosion_power 字段若不指定,则默认为 4

SHULKER

  • 现在 Color 字段若不指定,则默认为 16

SKELETON

  • StrayConversionTime 字段移除时不再保留

SPECTRAL_ARROW

  • 现在 Duration 字段若不指定,则默认为 200

SNOW_GOLEM

  • 现在 Pumpkin 字段若不指定,则默认为 true

TNT_MINECART

  • 现在 fuse 字段若不指定,则默认为 80
  • 现在 explosion_power 字段若不指定,则默认为 4
  • 现在 explosion_speed_factor 字段若不指定,则默认为 1

TRADER_LLAMA

  • 现在 DespawnDelay 字段默认值为 47999

VILLAGER

  • 现在 FoodLevel 和 Xp 字段若不指定,则默认为 0
  • ConversionTime 字段移除时不再保留

WANDERING_TRADER

  • 现在 DespawnDelay 字段若不指定,则默认为 0

ZOMBIE

  • DrownedConversionTime 字段移除时不再保留

ZOMBIE_VILLAGER

  • 现在 Xp 字段若不指定,则默认为 0
  • ConversionTime 字段移除时不再保留

ARROW, SPECTRAL_ARROW, TRIDENT

  • 现在 damage 字段若不指定,则默认为 2

DRAGON_FIREBALL, WIND_CHARGE, BREEZE_WIND_CHARGE, WITHER_SKULL, SMALL_FIREBALL 和 LARGE_FIREBALL

  • 现在 acceleration_power 字段若不指定,则默认为 0.1

SMALL_FIREBALL 和 LARGE_FIREBALL

  • 现在 ExplosionPower 字段若不指定,则默认为 1

BLOCK_DISPLAY, ITEM_DISPLAY 和 TEXT_DISPLAY

  • 现在 interpolation_duration、teleport_duration 以及 start_interpolation 字段若不指定,则默认为 0
  • 现在 view_range 字段若不指定,则默认为 1
  • 现在 shadow_radius 字段若不指定,则默认为 0
  • 现在 shadow_strength 字段若不指定,则默认为 1
  • 现在 width 和 height 字段若不指定,则默认为 0

方块实体数据

CAMPFIRE

  • CookingTimes 和 CookingTotalTimes 字段移除时不再保留

CHISELED_BOOKSHELF

  • 现在 last_interacted_slot 字段若不指定,则默认为 -1

HOPPER

  • 现在 TransferCooldown 字段若不指定,则默认为 -1

JIGSAW

  • 现在 name、target 和 pool 字段若不指定,则默认为 minecraft:empty
  • 现在 final_state 字段若不指定,则默认为 minecraft:air

SCULK_SHRIEKER

  • 现在 warning_level 字段若不指定,则默认为 0

STRUCTURE_BLOCK

  • 现在 ignoreEntities 和 showboundingbox 字段若不指定,则默认为 true
  • 现在 posY 字段若不指定,则默认为 1

NBT 更改

  • 在游戏中任何有 NBT 数据的接口(SNBT 表示、 /data)现在支持异构列表,即一个元素可以是不同类型的列表。
    • 使用 /data 插入或替换一个异构列表中的元素不再报错
    • 插入任何数组类型(如: [I;1,2,3])仍限制类型
    • 这意味着之前被用于展示异构列表的 'wrapper' 对象将不再可以在游戏中观察到
  • /data 不再能遍历有空键的路径(如:/data get ... foo.''.bar)
  • NBT 文件类型未受改变
    • 异构列表会在储存前进行转换以越过 NBT 限制
    • 转换例如:['a', {'b':3}] 将会储存为 [{'':'a'},{'b':3}]
    • 现存的外部工具将仍能够像之前一样读取 NBT 文件,但是异构列表将会以转换过的形式显示
  • 游戏产生的数据没有变化:对象如文本组件已经产生这个形式的异构列表
  • 备注:这些 wrapper 对象可能在游戏中完全不会被观察到,它们仅与直接操作 NBT 文件或网络格式的开发者有关

SNBT 更改

  • 扩展了在命令中描述对象类数据的文本格式(像 NBT、文本组件、谓词等)

数字格式

  • 浮点数的整数或小数部分都可以省略
    • 例如: .1 和 1. 现在都是有效的
  • 浮点数可以使用 E 标记
    • 例如:1.2e3、1.2E3、1.2E+3、12000e-1 这些都是代表 1200.0 的有效的形式
  • 整型数现在可以使用 0x 前缀来代表十六进制,可以使用 0b 前缀来代表二进制
    • 例如:0xbad(等于 2989) ,0xCAFE(等于 51966),0b101 (等于 5)
  • 整型数现在不能以 0 开头
    • 正常它代表八进制,但是我们限制了它以防意外使用
  • 数字序列中间可以包含 _ 字符(但是不能在序列的开头或结尾)
    • 例如:0b10_01、0xAB_CD、1_2.3_4__5f、1_2e3_4
  • NaN、Inf 和 十六进制浮点表示不受支持
  • 扩展了类型后缀
    • 整型类型后缀(b、B - 字节;s、S - 短整型;i、I - 整型;l、L - 长整型;)可以增加 s(带符号)或 u(无符号)
    • 新后缀在解析时仅影响有效范围 - 数值仍以带符号储存
      • 例如:240ub 等于 -16sb,但 240sb 不解析
    • 当后缀不带有 u 或 s,默认十进制使用带符号,二进制和十六进制使用不带符号
    • 注意:因为 b 也是一个有效的十六进制数,字节范围内的十六进制数值必须注明是否带符号,如 0x11ub 和 0x11sb

字符串

  • 使用引号引起的字符串现在使用除 '、 " 以及\之外的转义字符序列
    • Unicode 转义:
      • \x - 双字节转义,如 \x42
      • \u - 四字节转义,如 \u2603
      • \U - 八字节转义,如 \U00002603
      • \N{<name>} - 带名字的 Unicode 字符,例如 \N{Snowman}
    • 内置转义序列
      • \b - 退格,Unicode \x08
      • \s - 空格,Unicode \x20
      • \t - 水平 Tab,Unicode \x20
      • \n - 换行,Unicode \u0a
      • \f - 换页,Unicode \u0c
      • \r - 回车,Unicode \u0d
  • 未使用引号引起的字符串不能以 0-9、.、+、- 开头以避免与数字的意外冲突

数字数组

  • 没有后缀的数组中的值([B;]、[I;]、[L;])现在假设拥有和数组类型匹配的类型
    • 例如:[B;1,2] 与 [B; 1b, 2b] 相同
  • 数组现在可以接受比数组类型小的类型
    • 例如:[I;1b,2s,3] 有效且与 [I;1i,2i,3i] 相同

列表

  • 列表现在接受尾随逗号
    • 例如:[1,2,] 与 [1,2] 相同
    • 仅能允许一个尾随逗号,并且其必须位于一个有效元素后—— [,] 和 [1,,] 都是无效的

Compounds

  • Compounds(映射)现在接受尾随逗号
    • 例如:{a:b,}
    • 仅能允许一个尾随逗号,并且其必须位于一个有效键值对后—— {,} 和 {a:b,,} 都是无效的