23w06a是Java版1.19.4的第4个快照,发布于2023年2月8日,加入了三种非生物实体、/damage
命令、伤害类型和伤害类型标签,并修复了一些漏洞。
新内容
非生物实体
- Block Display、Item Display和Text Display
- 三个实体的ID分别为
block_display
、item_display
和text_display
,分别用于灵活展示方块、物品和文本。- 与标记(
marker
)相同,不会导致任何更新,不会与其他实体碰撞,没有物理效果。 - 模型在实体所在的位置渲染,并正常绕X轴和Y轴旋转(即可以被传送类命令控制旋转角度),但同时也受到任意的模型变换影响。
- 与标记(
- 加入了2种新的数据类型,每种数据类型接受2种形式,但只有其中1个用于存档,如下所示:
rotation
- 四元数形式(用于存档):由4个数字组成的数组,分别描述 (x, y, z, w) 这4个分量。
- 轴-角度形式:具有以下字段的复合标签:
axis
:三维向量。angle
:角度(弧度制)。
transformation
:任意的仿射变换,由以下字段组成并由以下顺序合成:- 矩阵形式:由16个数字组成的数组,描述一个行主序(Row-major)矩阵。
- 分解形式(用于存档):具有以下字段的复合标签:
translation
:三维向量。left_rotation
:rotation
对象。scale
:三维向量。right_rotation
:rotation
对象。
- 这些实体的部分属性可插值,以在客户端营造渐变效果,而非跳跃式的突变。
- 这些实体会记录插值的“当前值”和“先前值”:
- 以下所有被标记为“可插值”的属性都是单个插值集的一部分。
- 所有对可插值的属性的更新都会导致插值集里面的所有值被保存为“当前值”。
- 不改变属性值的data命令的执行(即便属性存在于NBT中)不算作更新。
- 每个刻同步到客户端的更新最多只有一次,即命令内的多个更新依然算一次更新。
- 上一批“当前值”被保存为“先前值”。
- 启用插值时,实体会随时间在“先前值”和“当前值”之间变化。
- 插值起点(实体完全处于“先前值”状态)由字段
interpolation_start
(游戏时间,单位为刻)定义。- 设为
-1
将加载当前游戏时间。
- 设为
- 插值终点(实体完全处于“当前值”状态)定义为
interpolation_start
+interpolation_duration
(单位为刻)。
- 这些实体会记录插值的“当前值”和“先前值”:
- 三个实体都具有以下字段:
transformation
:应用于模型的transformation
(经过正常的实体旋转后)。默认为单位矩阵,可插值。billboard
:用于控制这些实体渲染时是否应该旋转面对玩家:fixed
:无旋转(默认)。vertical
:实体可绕垂直轴旋转。horizontal
:实体可绕水平轴旋转。center
:实体可以绕中心点旋转。
brightness
:若存在,覆盖渲染所用的亮度值。默认省略(即渲染时会使用实体所在的地方的光照)。该复合标签有两个字段:sky
:天空光照的值,0至15。block
:方块光照的值,0至15。
view_range
:此实体的最大可视范围。实际距离也取决于客户端的渲染距离和实体渲染距离。默认值为1.0(与火球大致相同)。shadow_radius
:实体阴影的大小。默认为0(无阴影)。可插值。shadow_strength
:实体阴影的强度。作为随与下方方块的距离而变化的函数,控制阴影的不透明度。默认为1。可插值。width
和height
:描述剔除边界框(Culling bounding box)的大小。边界框自实体位置的所有方向纵向伸展y
至y+height
,横向伸展width/2
。若其中一个字段设为0,则禁用剔除。默认都为0。glow_color_override
:覆盖发光边框颜色。默认为0(使用队伍的颜色)。
- 除去这些共通字段外,各个实体由于其类型不同,也具有一些特有字段:
- Item Display(
item_display
):展示单个物品堆(Item stack,可通过命令设置槽位inventory.0
更改)。item
:要展示的物品,格式与物品栏中物品的相同。- 示例:
{id: "minecraft:dirt", Count: 1}
- 示例:
item_display
:描述应用到物品模型的变换(定义于模型JSON的display
部分):- 可用值:
none
(无,默认)、thirdperson_lefthand
、thirdperson_righthand
、firstperson_lefthand
、firstperson_righthand
、head
、gui
、ground
和fixed
。
- 可用值:
- Block Display(
block_display
):展示单个方块状态,但不会展示方块实体,即使在一般情况下方块放置时会随即创建方块实体(比如箱子)。block_state
:要展示的方块状态。格式与末影人手持的物品相同。- 示例:
{Name:"minecraft:dirt"}
- 示例:
- Text Display(
text_display
):展示文本组件(背景使用新的着色器类型rendertype_text_background
和rendertype_text_background_see_through
)。text
:要展示的文本。解析文本组件时,会使用该实体所在的上下文。line_width
:用于控制换行的行宽(但需要插入新行也可以用\n
字符)。默认为200。text_opacity
:被渲染文本的不透明度(Alpha部分)。默认为255。可插值。background
:背景颜色。包括Alpha通道。默认为0x40000000。可插值。default_background
:若为true,则渲染时使用默认的背景颜色(与聊天栏相同)。默认为false。shadow
:文本是否显示阴影。默认为false。see_through
:文本是否可以穿透方块显示。默认为false。alignment
:文字对齐方向。- 可用值:
center
(默认)、left
和right
。
- 可用值:
- Item Display(
命令格式
- 游戏规则
- 加入了
doVinesSpread
,用于决定藤蔓是否要向周围扩散。默认值为true
。
/damage
- 用于对指定实体造成伤害,语法如下:
/damage <target> <amount> [<damageType>] [at <location>]
/damage <target> <amount> [<damageType>] [by <entity>] [from <cause>]
- 参数:
target
:要被伤害的实体。amount
:要造成的伤害值。damageType
:要造成的伤害的类型。决定伤害影响实体的方式,以及要显示出来的死亡消息。location
:伤害源位置(若无实体造成了伤害)。- 例如,此值可代表下界中床爆炸的位置。
entity
:造成伤害的实体。cause
:间接造成的伤害的来源实体。- 例如,当实体被骷髅射箭击中时,
entity
为箭,cause
为骷髅。
- 例如,当实体被骷髅射箭击中时,
/execute
- 加入了
/execute summon
子命令,语法如下:/execute summon <entity> -> execute
- 此子命令用于立即创建一个实体,并同时将命令执行者(
@s
)设为此实体。此功能用于简化实体设置过程并减少对原始NBT编辑的需求。
常规
- 数据包
- 加入了伤害类型,作为一种新的注册表项,用于决定游戏如何处理伤害。
- 包括伤害应该具有哪些属性,以及实体因此类型伤害死亡时需要使用哪种死亡消息。示例如下:
{ "exhaustion": 0.1, "message_id": "arrow", "scaling": "when_caused_by_living_non_player" }
- 已定义的字段如下:
message_id
:用于此伤害类型的消息ID,将与其他字符串片段组合成完整的翻译字符串。exhaustion
:此伤害类型所造成的饥饿等级的提升量。scaling
:伤害值是否随难度变化,可为下列值:never
:伤害值不随难度变化。always
:伤害值随难度变化。when_caused_by_living_non_player
:伤害值随难度变化,但仅限由非玩家活体造成。
effects
:可选,伤害施加于玩家时的表现形式,可为下列值:hurt
(默认值):一般受伤音效。thorns
:荆棘受伤音效。drowning
:溺水音效。burning
:1游戏刻的着火音效。poking
:甜浆果丛刺伤音效。freezing
:冻结音效。
death_message_type
:可选,用于指定是否使用死亡消息的特殊变体,可为下列值:default
(默认值):不显示特殊死亡消息。fall_variants
:显示摔落类死亡消息(如death.fell.assist.item
)。intentional_game_design
:显示“刻意的游戏设计”类死亡消息。
- 伤害类型标签决定解释来自不同来源的伤害的方式。
- 包括伤害应该具有哪些属性,以及实体因此类型伤害死亡时需要使用哪种死亡消息。示例如下:
- 选项
- 加入了“Damage Tilt”辅助功能选项,用于控制受到伤害时视角抖动的量。
- 在“按键绑定”屏幕中加入了按键冲突时的提示框。
- 标签
- 加入了下列伤害类型标签:
#always_most_significant_fall
:out_of_world
。#always_triggers_silverfish
:magic
。#avoids_guardian_thorns
:magic
。#burns_armor_stands
:on_fire
。#bypasses_armor
:on_fire
、in_wall
、cramming
、drown
、fly_into_wall
、generic
、wither
、dragon_breath
、freeze
、starve
、fall
、freeze
、stalagmite
、magic
、indirect_magic
、out_of_world
和sonic_boom
。#bypasses_effects
:starve
。#bypasses_enchantments
:sonic_boom
。#bypasses_invulnerability
:out_of_world
。#bypasses_resistance
:out_of_world
。#damages_helmet
:falling_anvil
、falling_block
和falling_stalactite
。#ignites_armor_stands
:in_fire
。#is_drowning
:drown
。#is_explosion
:fireworks
、explosion
、player_explosion
和bad_respawn_point
。#is_fall
:fall
和stalagmite
。#is_fire
:in_fire
、on_fire
、lava
、hot_floor
、unattributed_fireball
和fireball
。#is_freezing
:freeze
。#is_lightning
:lightning_bolt
。#is_projectile
:arrow
、trident
、mob_projectile
、unattributed_fireball
、fireball
、wither_skull
和thrown
。#no_anger
:mob_attack_no_aggro
。#no_impact
:drown
。#witch_resistant_to
:magic
、indirect_magic
、sonic_boom
和thorns
。#wither_immune_to
:drown
。
- 常规
- 为专用服务器命令行加入了
--pidFile
参数,用于将服务端的进程ID(PID)写入到特定文件中。
更改
方块
- 唱片机
- 现在在播放音乐唱片时会产生粒子效果,以匹配基岩版。
- 幽匿感测体
- 现在可感测以下游戏事件:
- 海龟和青蛙产卵(信号强度为6)。
- 使用剪刀破坏海带、缠怨藤和垂泪藤(信号强度为6)。
- 关闭运输矿车或运输船(信号强度为14)。
- 采集发光浆果(信号强度为6)。
- 取下讲台上的书(信号强度为6)。
- 与物品展示框中的物品互动(信号强度为6)。
- 耕地退化为泥土(信号强度为6)。
- 给绵羊染色(信号强度为7)。
- 用拴绳拴住实体(信号强度为8)。
- 解除拴住实体的拴绳(信号强度为8)。
- 为重生锚充能(信号强度为6)。
- 上船(信号强度为7)。
- 下船(信号强度为6)。
- 与堆肥桶交互(信号强度为6)。
物品
- 盾牌
- 现在当放置到副手时会播放音效。
非生物实体
- 漏斗矿车
- 现在打开时不再会激怒猪灵。
常规
- 创建新的世界
- 现在各标签页可通过按Crtl + Tab ↹和Ctrl + ⇧ Shift + Tab ↹键切换。
- 现在可通过Ctrl +
标签页序号
切换至指定标签页。 - 加入了实验性内容选择屏幕,用于更方便地启用或禁用实验性功能。
- 此屏幕总是可以在“更多”标签页中找到。
- 若为快照版本,此屏幕还可在“游戏”标签页中快捷进入。
- 创造模式物品栏
- 向“功能方块”分类中加入了各种画。
- 若为预定义的种类,其名称、作者和大小会显示在物品描述中。
- 游戏事件
- 加入了下列幽匿感测体的可感测事件,ID和频率对应红石信号强度如下:
entity_dismount
:6entity_mount
:7
- 选项
- “通知显示时长”辅助功能选项的英文名称由“Notification Display Time”改为“Notification Time”。
- 谓词
- 移除了伤害类型谓词中的
is_projectile
、is_explosion
、bypasses_armor
、bypasses_invulnerability
、bypasses_magic
、is_fire
、is_magic
和is_lightning
字段。 - 加入了新的
tags
数组。数组内的每一项都有以下字段:id
:伤害类型标签的命名空间ID。expected
:指定的伤害类型标签是否要被谓词用于匹配过程。
修复
- 修复了43个漏洞
- 1.19前正式版的漏洞
- MC-12729 — 实体穿着的护腿和靴子上会出现深度冲突。
- MC-145765 — 辅助功能选项中的“文本背景”和“文本背景不透明度”两个选项的设置文本会超出按钮范围。
- MC-156443 — 在一些语言中,文本会太长并超出按钮范围。
- MC-198874 — 打开漏斗不激怒猪灵,但打开漏斗矿车会。
- MC-209622 — 幽匿感测体不能感测到与物品展示框和荧光物品展示框的交互动作。
- MC-209896 — 向重生锚中放荧石的充能动作不激活幽匿感测体。
- MC-209929 — 填充堆肥桶不激活幽匿感测体。
- MC-210276 — 踩踏耕地不激活幽匿感测体。
- MC-210294 — 骑乘或脱离非生物实体不激活幽匿感测体。
- MC-210334 — 给绵羊染色不激活幽匿感测体。
- MC-210707 — 关闭运输船、运输竹筏或运输矿车不激活幽匿感测体。
- MC-210715 — 为实体上拴绳或下拴绳不激活幽匿感测体。
- MC-212501 — 从讲台上取书不激活幽匿感测体。
- MC-213803 — 从洞穴藤蔓上收取发光浆果不激活幽匿感测体。
- MC-215767 — 海龟下蛋不激活幽匿感测体。
- MC-233972 — 按键绑定菜单中,正在给按键分配功能时或一个按键被分配了多个功能时,按钮文本会出现在按钮范围外。
- MC-236988 — 对洞穴藤蔓、缠怨藤、垂泪藤或海带使用剪刀不激活幽匿感测体。
- MC-237450 — “模拟距离”选项文本可以超出滑块范围。
- MC-237879 — 村民在堆肥桶上工作不激活幽匿感测体。
- MC-249878 — 音乐和声音选项菜单中的“设备”选项的文本可以出现在按钮范围外。
- 1.19的漏洞
- MC-251917 — 将盾牌放入副手槽时不播放音效,也没有对应的字幕。
- MC-251934 — 青蛙产卵不激活幽匿感测体。
- MC-252434 — 手持拴绳时与栅栏交互不激活幽匿感测体。
- 1.19.2的漏洞
- MC-257873 — 手持盔甲与盔甲槽中同种类的盔甲交换位置时不播放音效。
- MC-258156 — 困难难度下,监守者对玩家与实体造成的伤害不相等。
- 1.19.3的漏洞
- MC-258622 — 创造模式物品栏中,火焰弹不属于原材料。
- 1.19.4开发版本的漏洞
- MC-259193 — “通知显示时长”选项文本可以超出滑块范围。
- MC-259195 — 对另一个维度中的实体使用
/ride
命令会导致服务端与客户端间的不同步。 - MC-259197 — 伤害倾斜效果不可通过辅助功能选项控制。
- MC-259221 — 对无效实体使用
/ride
命令会使玩家传送到此实体的位置上。 - MC-259224 — 用盾阻挡攻击会使伤害倾斜动画和受伤的红色效果播放出来。
- MC-259227 — 单独执行
/execute if loaded <pos>
命令总是失败。 - MC-259233 — 参数值过低的错误消息的英语文本中,各错误消息中的拼写不一致。
- MC-259245 — 玩家看着被玩家用
/ride
骑乘的末影人时,末影人会一直传送。 - MC-259247 —
/execute on owner
子命令不选中马、驴或骡的主人。 - MC-259360 —
selectWorld.mapFeatures.info
字符串的英文文本中,“Shipwrecks”一词前缺少了一个逗号。 - MC-259432 —
chestplate_trim
物品纹理上缺失了几个像素点。 - MC-259442 — 不能按住⇧ Shift键将物品放入铁砧的第二个槽位。
- MC-259454 — 堡垒遗迹中疣猪兽棚战利品箱的战利品表使用的是桥战利品箱的。
- MC-259468 —
empty_slot_amethyst_shard
纹理不出现在锻造台槽位上。
- 上个开发版本的漏洞
- MC-259599 — 手持的盔甲可以交换出已装备的附有绑定诅咒的盔甲。
- MC-259635 — 用于盔甲纹饰的
iron
和iron_darker
调色板被翻转了。 - MC-259640 —
iron
和iron_darker
两个调色板中最亮的三个像素是一样的。
来源:minecraft wiki