关于网易更新到 1.21.90 的开发内容更新汇总
上次更新:2026 年 4 月 18 日
随着网易正式宣布加快更新节奏,这次网易将要正式发布 3.8 版本,并将版本进一步推进到 1.21.90,也正式拉近了和国际版的时间差距。这里将 1.21.60-1.21.90 的所有更新内容汇总到本文,供查阅本文的开发者参考!
关于网易的 3.8 版本的更新内容,参见3.8 - 我的世界开发者官网。我们在下文仅展示国际版重点更新内容。
注:我们仍然只挑出了一些重点内容,涵盖不完全,若有需要,读者可以在中文 Minecraft 查阅!
游戏内容
- 更新了春意盎然主题更新。
- 更新了追逐天空主题更新。
- 更新了多种超平坦预设(但没有虚空预设)。
- 在国际版更新了基于渲染龙的Vibrant Visuals。
命令
-
现在嘎枝之心使用方块状态
creaking_heart_state,可能的值为uprooted、dormant、awake。 -
新增游戏规则
locatorBar。 -
新增了
/loot的模拟挖掘重载mine。/loot <目标> mine <目标方块位置: x y z> [<tool>|mainhand|offhand: string] -
新增了
/aimassist,用于修改玩家的瞄准辅助。/aimassist <玩家: target> clear/aimassist <玩家: target> set [x角度: float] [y角度: float] [最远距离: float] [瞄准模式: AimAssistTargetMode] [预设ID: string] -
新增了
/place,加入时仅可用于放置地物,但是权限等级为 2,代表此命令不能在命令方块和函数中使用。/place feature <地物: features> [位置: x y z]/place featurerule <地物规则: featureRules> [位置: x y z]/place jigsaw <pool: filepath> <jigsawTarget: string> <maxDepth: int> [pos: x y z] [keepJigsaws: Boolean] [liquidSettings: LiquidSettings]/place structure <structure: string> [pos: x y z] [ignoreStartHeight: Boolean] [keepJigsaws: Boolean] [liquidSettings: LiquidSettings] -
新增了
/controlscheme,用于修改相机预设的控制方案。此命令需要结合/camera使用。/controlscheme <玩家: target> set <控制方案: controlscheme>/controlscheme <玩家: target> clear
附加包
-
现在可以通过在清单文件中指定元数据,使得安装附加包后仍可获得成就。
"metadata": {"product_type": "addon"}
编辑器
- 自 1.21.90 开始,Editor 在正式版可用。
物品
物品组件
- 拆分了组件
minecraft:storage_item中的两个参数为两个新组件minecraft:storage_weight_limit和minecraft:storage_weight_modifier。 - 开放了组件
minecraft:compostable,以定义物品可在堆肥桶中用于堆肥。 - 开放了组件
minecraft:block_placer中的replace_block_placer参数,以确定是否将此物品与对应方块绑定,若绑定则当方块被破坏后将掉落该物品。 - 开放了组件
minecraft:wearable中的hides_player_location参数,以确定穿戴后是否在定位栏中隐藏玩家位置。
自定义物品组件
请读者注意:自定义物品组件仍然只适用于国际版,并需要使用 ScriptAPI 定义其功能。
-
自
1.21.90格式版本开始,自定义物品组件采用 V2 版本,不再使用minecraft:custom_components来指定自定义组件,而是使用类似于其他原版组件的写法,并可以在组件内部传入参数。例如:"components": {"minecraft:icon": "stick","test:execute_command_on_use": {"command": "say 1"}} -
因此,
minecraft:custom_components组件已被弃用。
物品组
- 现在国际版正式支持自定义物品组。同时,
1.21.60或更高格式版本的物品在指定物品组时必须指定命名空间。
战利品表
- 现在战利品表条件
match_tool可以使用物品标签筛选。
方块
方块组件
- 开放了组件
minecraft:item_visual,以定义方块在物品栏中的外观。 - 开放了组件
minecraft:liquid_detection,以定义方块在接触到液体后的行为。 - 开放了组件
minecraft:material_instances中的多个参数:ambient_occlusion,定义方块的环境光遮挡。isotropic,定义方块的各向同性(是否随机旋转 UV)。tint_method,定义方块的着色方法。同时,手持此方块时也会着色(和平原群系一致)。render_method,新增了 3 个预设渲染方法:blend_to_opaque、alpha_test_to_opaque、alpha_test_single_sided_to_opaque。
- 开放了组件
minecraft:replaceable,以定义方块是否可被另一种方块在原位替代(类似于水、草丛或空气)。 - 开放了组件
minecraft:map_color的tint_method属性,以定义方块的着色方法,将将颜色与预定义的色调相乘。 - 开放了组件
minecraft:destruction_particles,以定义方块被破坏后掉落的粒子。 - 在格式版本
1.21.80之后,使用minecraft:geometry组件或minecraft:material_instances组件时必须同时包含这两个组件。
自定义方块组件
请读者注意:自定义方块组件仍然只适用于国际版,并需要使用 ScriptAPI 定义其功能。
-
自
1.21.90格式版本开始,自定义方块组件采用 V2 版本,不再使用minecraft:custom_components来指定自定义组件,而是使用类似于其他原版组件的写法,并可以在组件内部传入参数。例如:"components": {"test:execute_command_on_break": {"command": "say 1"}} -
因此,
minecraft:custom_components组件已被弃用。
方块面剔除
- 现在允许在资源包内通过
block_culling文件夹指定面剔除规则,并能够通过minecraft:geometry组件的culling_layer参数进行方块面剔除。
方块资源包定义
- 对
blocks.json引入了material_instances_exponent以定义方块的环境光遮挡指数,并为损坏的brightness_gamma提供替代解决方案。
实体
实体组件
- 在格式版本
1.21.60开放了组件minecraft:renders_when_invisible,以保证实体在不可见(例如隐身)后仍然渲染。 - 在格式版本
1.21.60开放了组件minecraft:breedable的诸多属性,以使得子代实体可以继承父代的属性。 - 在格式版本
1.21.60开放了组件minecraft:looked_at的min_looked_at_duration属性,以使得子代实体可以继承父代的属性。 - 一些使用效果持续时间的组件现在可以被设置为
infinite。 - 在格式版本
1.21.70开放了组件minecraft:is_collidable,以使得实体拥有不可穿过的碰撞箱(类似于船、快乐恶魂)。 - 在格式版本
1.21.70开放了组件minecraft:entity_sensor的 2 个参数y_offset和find_players_only。 - 在格式版本
1.21.70开放了组件minecraft:body_rotation_axis_aligned,以使得实体根据当前朝向自动旋转。 - 在格式版本
1.21.80开放了组件minecraft:rideable的 5 个参数dismount_mode、on_rider_enter_event、on_rider_exit_event,在seats参数下开放了 2 个参数third_person_camera_radius和camera_relax_distance_smoothing。 - 在格式版本
1.21.80更新了组件minecraft:leashable的preset属性,设置拴住实体的预设。 - 在格式版本
1.21.80开放了组件minecraft:interact的参数drop_item_y_offset,以定义丢弃物品时的 y 轴偏移。 - 在格式版本
1.21.90开放了组件minecraft:remove_in_peaceful,以使得实体在和平难度下消失。 - 在格式版本
1.21.90开放了组件minecraft:leashable_to,以使得玩家可以将自己正拴住的实体拴在该实体上。 - 在格式版本
1.21.90开放了组件minecraft:input_air_controlled,以使得玩家可以控制可骑乘飞行实体。 - 在格式版本
1.21.90开放了组件minecraft:body_rotation_always_follow_head,以使得实体始终使自己的身体的旋转值对齐头部。
实体过滤器
- 加入了新的实体过滤器
home_distance,以检查实体与其原点的距离,需要minecraft:home组件。 - 加入了新的实体过滤器
is_bound_to_creaking_heart,以检查生成嘎枝的嘎枝之心是否存在。 - 加入了新的实体过滤器
has_equipment_tag,以检查实体是否装备了特定物品标签的物品。 - 加入了新的实体过滤器
is_riding_self,以检查实体是否被骑乘。 - 加入了新的实体过滤器
is_vehicle_family,以检查实体是否正骑乘特定家族的实体。
实体事件
- 加入了新的实体事件
stop_movement,使实体停止运动。可以指定stop_vertical_movement和stop_horizontal_movement分别控制实体停止竖直方向和水平方向的运动。 - 加入了新的实体事件
set_home_position,设置实体的原点位置为当前位置。需要minecraft:home组件。 - 加入了新的实体事件
first_valid,选定第一个符合条件的过滤器并执行。
实体音效
-
为
sounds.json添加了可根据 Molang 数值读取特定变种音效的功能。可以在sounds-key中指定 Molang,在map中根据读取 Molang 的值使用音效变种。例如:{"entity_sounds": {"entities": {"test_mob": {"volume": 1.0,"pitch": 1.0,"events": {"ambient": "mob.test_mob.ambient","death": "mob.test_mob.death","step": { "sound": "mob.test_mob.step", "volume": 0.8, "pitch": 1.0 },"attack": "mob.test_mob.attack"},"variants": {"key": "query.property('minecraft:emotional_state')","map": {"neutral": {"volume": 1.0,"pitch": 1.0,"events": { "death": "mob.test_mob.death.netural" }},"angry": {"volume": 1.0,"pitch": 1.0,"events": { "death": "mob.test_mob.death.angry", "ambient": "mob.test_mob.ambient.angry" }}}}}}}}
Molang
- 开放了
query.last_input_mode_is_any(...inputMode),可传入玩家输入模式(keyboard_and_mouse、touch、gamepad或motion_controller)并返回是否有这些输入模式中的其中一种,仅可在资源包使用。 - 开放了
query.touch_only_affects_hotbar,返回触摸控制是否仅影响触控条,仅可在资源包使用。 - 开放了
query.graphics_mode_is_any(...graphicsMode),可传入玩家玩家画质设置(simple、fancy、deferred或raytraced)并返回是否有这些画质设置中的其中一种,仅可在资源包使用。 - 开放了
query.leashed_entity_count,返回该实体拴住了多少个实体。 - 开放了
query.has_any_leashed_entity_of_type(...entityType),返回该实体是否拴住了给定实体的其中一种。
ScriptAPI(低于2.0.0版本)
SAPI 在从 1.21.60 到 1.21.90 的过程中,@minecraft/server的版本从1.16.0升级至2.0.0,@minecraft/server-ui的版本从1.3.0升级至2.0.0。需要注意:升级到2.0.0的脚本运行底层机制发生了变化,因此,贸然从旧版本升级到新版本的脚本可能会出现运行问题,请您逐步进行适配。
以下为2.0.0之前的版本中的功能变化:
系统
- 开放了
System.sendScriptEvent()方法,以向脚本系统以服务器的名义发送脚本事件。
世界
- 难度:
- 开放了
Difficulty枚举。 - 开放了
World.getDifficulty()方法和World.setDifficulty()方法,以获取或设置玩家的难度。
- 开放了
- 世界后事件:
- 输入模式改变事件:开放了
PlayerInputModeChangeAfterEvent类、PlayerInputModeChangeAfterEventSignal类和WorldAfterEvents.playerInputModeChange属性,可监听玩家输入模式的变更。 - 玩家输入事件:开放了
PlayerButtonInputAfterEvent类、PlayerButtonInputAfterEventSignal类和WorldAfterEvents.PlayerButtonInput属性,可监听玩家输入。目前,可用于监听玩家是否按下潜行或跳跃按钮。
- 输入模式改变事件:开放了
- 结构:
- 开放了
StructureManager.placeJigsaw()和StructureManager.placeJigsawStructure()方法,以放置拼图和拼图结构。
- 开放了
维度
- 开放了
Dimension.placeFeature()和Dimension.placeFeatureRule()方法,以放置地物。
方块
- 与水等流体相关的接口:
- 开放了
Block.isWaterlogged()方法和BlockPermutation.setWaterlogged()方法,以指定方块是否含水。 - 开放了
Block.canBeDestroyedByLiquidSpread()和BlockPermutation.canBeDestroyedByLiquidSpread()方法,获取方块是否在接触水后被破坏。 - 开放了
Block.canContainLiquid()方法和BlockPermutation.canContainLiquid()方法,获取方块是否可以含水。 - 开放了
Block.isLiquidBlocking()方法和BlockPermutation.isLiquidBlocking()方法,获取方块是否会阻挡水的流动。 - 开放了
Block.liquidCanFlowFromDirection()方法和BlockPermutation.liquidCanFlowFromDirection()方法,获取水是否可以从给定方向流入此方块,或是否可以用水桶倒入此方块后从给定方向流出。 - 开放了
Block.liquidSpreadCausesSpawn()方法和BlockPermutation.liquidSpreadCausesSpawn()方法,获取方块接触水后是否会生成自身的掉落物。 - 开放了
LiquidType枚举。
- 开放了
- 自
1.18.0版本开始,以下方法将使用泛型参数而非通用参数,这有助于编辑器的自动补全更好地计算。
但需注意这对自定义方块的适配不佳。如果你的脚本在更新到此版本后出现自动补全或 TypeScript 报错问题,可以使用// @ts-ignore忽略这些问题。Block.getComponent()方法返回BlockComponentReturnType<T> | undefined泛型而非通用的BlockComponent。Block.getState()方法使用minecraftvanilladata.BlockStateSuperset[T] | undefined泛型参数而非通用的boolean | number | string。Block.matches()方法使用BlockStateArg<T>泛型参数而非通用的Record<string, boolean | number | string>。Block.resolve()方法使用BlockStateArg<T>泛型参数而非通用的Record<string, boolean | number | string>。Block.withState()方法使用minecraftvanilladata.BlockStateSuperset[T]泛型参数而非通用的boolean | number | string。
实体
- 自
1.18.0版本开始,以下方法将使用泛型参数而非通用参数,这有助于编辑器的自动补全更好地计算。Entity.getComponent()方法返回EntityComponentReturnType<T> | undefined泛型而非通用的EntityComponent。
玩家
- 开放了
Player.spawnParticle()方法,以生成仅对该玩家可见的粒子。 - 玩家权限:现在
InputPermissionCategory枚举支持更多值,开放了PlayerInputPermissions.isPermissionCategoryEnabled()方法和PlayerInputPermissions.setPermissionCategory()方法以获取和设置玩家权限状态。 - 相机:开放了
CameraTargetOptions接口。 - 玩家输入:
- 开放了
InputInfo类、InputMode枚举和Player.inputInfo属性,以获取玩家的输入操作信息。 - 开放了
ButtonState枚举、InputButton枚举。
- 开放了
- 客户端实体属性覆写:
- 开放了
Player.setPropertyOverrideForEntity()方法、Player.removePropertyOverrideForEntity()方法、Player.clearPropertyOverridesForEntity()方法,以覆写玩家客户端层面观察到特定实体的实体属性。注意必须指定同步到客户端(client_sync为true)的实体属性。
- 开放了
物品
- 物品组件:
- 开放了在
ItemCompostableComponent类,以获取物品的堆肥相关属性。
- 开放了在
- 自
1.18.0版本开始,以下方法将使用泛型参数而非通用参数,这有助于编辑器的自动补全更好地计算。ItemStack.getComponent()方法返回ItemComponentReturnType<T> | undefined泛型而非通用的ItemComponent。
ScriptAPI(2.0.0版本)
SAPI 在从 1.21.60 到 1.21.90 的过程中,@minecraft/server的版本从1.16.0升级至2.0.0,@minecraft/server-ui的版本从1.3.0升级至2.0.0。需要注意:升级到2.0.0的脚本运行底层机制发生了变化,因此,贸然从旧版本升级到新版本的脚本可能会出现运行问题,请您逐步进行适配。
2.0.0版本引入了早期执行(Early-Execution) 机制,因为在世界完全加载完毕之前,多数功能还不能正常执行,在世界加载完毕之前贸然执行某些代码可能出现问题。在引入了早期执行机制之后,只有少量内容可以在早期执行期间执行,例如监听某些事件、运行循环代码。例如,在2.0.0版本之前,这段代码可以正常执行:
import { world } from "@minecraft/server";
world.getPlayers().forEach(player => {
player.sendMessage(`Hello, ${player.name}!`);
});
但2.0.0版本后,早期执行阶段不能调用World.getPlayers()方法,这会导致报错。作为替代,开发者可以在世界加载后事件WorldLoadAfterEvent中执行代码:
import { world } from "@minecraft/server";
world.afterEvents.worldLoad.subscribe(event => {
world.getPlayers().forEach(player => {
player.sendMessage(`Hello, ${player.name}!`);
});
});
总体而言,2.0.0版本的脚本在世界加载时的变化如下图所示

2.0.0 版本的脚本在世界加载时的变化,图源来自脚本 V2 概述 - Microsoft Learn
以下为2.0.0的版本中的功能变化:
系统
- 开放了
System.isEditorWorld属性,以获取是否为编辑器世界。 - 系统前事件:开放了系统前事件
StartupEvent类和System.beforeEvent属性,在游戏引擎发生某些事件前执行。- 启动事件:将
WorldInitializeBeforeEvent类、WorldInitializeBeforeEventSignal类和WorldBeforeEvents.worldInitialize属性分别重命名为StartupEvent类、StartupBeforeEventSignal类和SystemBeforeEvents.startUp属性,可在世界启动之前执行代码。 - 关闭事件:开放了
ShutdownEvent类、ShutdownBeforeEventSignal类和SystemBeforeEvents.shutdown属性,可在世界关闭之前执行代码。
- 启动事件:将
- 开放了
TicksPerDay常量为24000。
世界
- 世界前事件:
- 玩家对方块使用物品事件:移除此事件,同时移除了
ItemUseOnBeforeEvent类、ItemUseOnBeforeEventSignal类和WorldBeforeEvents.itemUseOn属性,因为该事件与玩家与方块交互事件PlayerInteractWithBlockBeforeEventSignal功能重复。开发者应使用WorldBeforeEvents.playerInteractWithBlock代替之。
- 玩家对方块使用物品事件:移除此事件,同时移除了
- 世界后事件:
- 按钮按下事件:移除了
IButtonPushAfterEventSignal类,因为这个类是多余的,事实上该事件在使用ButtonPushAfterEventSignal类。 - 拉杆拉下事件:移除了
ILeverActionAfterEventSignal类,因为这个类是多余的,事实上该事件在使用LeverActionAfterEventSignal类。 - 玩家进入事件:移除了
IPlayerJoinAfterEventSignal类,因为这个类是多余的,事实上该事件在使用PlayerJoinAfterEventSignal类。 - 玩家离开事件:移除了
IPlayerLeaveAfterEventSignal类,因为这个类是多余的,事实上该事件在使用PlayerLeaveAfterEventSignal类。 - 玩家生成事件:移除了
IPlayerSpawnAfterEventSignal类,因为这个类是多余的,事实上该事件在使用PlayerSpawnAfterEventSignal类。 - 玩家对方块使用物品事件:移除此事件,同时移除了
ItemUseOnAfterEvent类、ItemUseOnAfterEventSignal类和WorldAfterEvents.itemUseOn属性,因为该事件与玩家与方块交互事件PlayerInteractWithBlockAfterEventSignal功能重复。开发者应使用WorldAfterEvents.playerInteractWithBlock代替之。 - 世界加载事件:将
WorldInitializeAfterEvent类、WorldInitializeAfterEventSignal类和WorldAfterEvents.worldInitialize属性分别重命名为WorldLoadAfterEvent类、WorldLoadAfterEventSignal类和WorldAfterEvents.worldLoad属性。
- 按钮按下事件:移除了
- 移除了
World.playSound()方法,开发者应使用Dimension.playSound()代替。 - 通用
- 对多个类加入了
isValid属性,以检查其中的数据是否有效。这些类包括:Block类。Camera类。Component类,包括其子类EntityComponent、BlockComponent、ItemComponent和子类的子类均有效。Container类。ContainerSlot类。Effect类。Entity类,包括其子类Player类。ScoreboardIdentity类。ScoreboardObjective类。ScreenDisplay类。Structure类。
- 开放了
CustomComponentParameters类,返回自定义组件(包括物品自定义组件和方块自定义组件)的参数值。
- 对多个类加入了
- 开放了
TintMethod枚举。
维度
- 移除了
Dimension.runCommandAsync()方法,因为事实上这个方法从来没有等待命令执行完毕才进行异步操作。开发者应使用Dimension.runCommand()取代。 - 开放了
Dimension.getBlockAbove()和Dimension.getBlockBelow()方法,以获取特定位置上方或下方的方块。 - 更新了
Dimension.spawnEntity(),更改了identifier参数的类型并提供了新的options参数。
方块
- 方块组件:
- 开放了
BlockMapColorComponent,以获取方块在地图中显示颜色的相关属性。
- 开放了
- 自定义方块组件:
- 将
BlockComponentPlayerDestroyEvent重命名为BlockComponentPlayerBreakEvent。 - 开放了
BlockCustomComponentInstance类,当使用Block.getComponent()获取自定义组件时返回该类。 - 将
BlockFluidContainerComponent中的typeId只读属性由minecraft:fluidContainer重命名为minecraft:fluid_container。
- 将
实体
- 更新了
Entity.applyKnockback()方法,合并了参数directionX: number, directionZ: number, horizontalStrength: number为horizontalForce: VectorXZ以确定其水平方向的击退强度。 - 现在
Entity.hasComponent()方法、Entity.getComponent()方法和Entity.getComponents()方法可能会抛出错误。 - 开放了
Entity.loolAt()方法,使实体面向特定位置。 - 移除了
Entity.runCommandAsync()方法,因为事实上这个方法从来没有等待命令执行完毕才进行异步操作。开发者应使用Entity.runCommand()取代。 - 移除了
EntityDamageCause枚举中的suicide属性。 - 实体组件:
- 现在调用
EntityComponent.entity属性可能会因实体无效而抛出错误。其子类的所有属性现在都可能会因实体无效而抛出错误。 - 现在
EntityFrictionModifierComponent类、EntityMarkVariantComponent类、EntityPushThroughComponent类、EntityScaleComponent类和EntitySkinIdComponent类的value是只读属性,开发者现在不应当再寻求通过脚本更改这些值。 - 移除了
EntityGroundOffsetComponent组件。
- 现在调用
玩家
- 开放了
GraphicsMode类和Player.graphicsMode属性,以获取玩家当前使用的画质设置。 - 将
GameMode枚举中的属性全部重命名为首字母大写。 - 现在
PlayAnimationOptions接口的players属性返回Player[],而非string[]了。 - 相机:
- 移除了
CameraDefaultOptions接口。 - 将
CameraEaseOptions接口重命名为EaseOptions接口。 - 更改了
Camera.setCamera()的类型要求。 - 开放了
Camera.setDefaultCamera()方法。
- 移除了
- 屏幕显示:
- 开放了
ScreenDisplay.resetHudElementsVisibility()方法,以重置玩家的 HUD 可见性。
- 开放了
物品
- 自定义物品组件:
- 开放了
ItemCustomComponentInstance类,当使用ItemStack.getComponent()获取自定义组件时返回该类。
- 开放了
脚本 UI
脚本 UI 的动作表单 UI 和模态表单 UI 现在都支持添加大标题、分割线和普通文本了,并且模态表单 UI 的元素还支持添加新的提示框。

新版脚本 UI 演示,包括大标题和分割线,图片来自 xKingDark(取自 JaylyMC 的 SAPI 文档)
- 动作表单 UI:
- 开放了
ActionFormUI.divider()方法,以在 UI 内添加分割线。 - 开放了
ActionFormUI.header()方法,以在 UI 内添加一级标题。 - 开放了
ActionFormUI.label()方法,以在 UI 内添加文本。
- 开放了
- 模态表单 UI:
- 开放了
ModalFormUI.divider()方法,以在 UI 内添加分割线。 - 开放了
ModalFormUI.header()方法,以在 UI 内添加一级标题。 - 开放了
ModalFormUI.label()方法,以在 UI 内添加文本。 - 更新了
ModalFormUI.dropdown()方法并开放了ModalFormDataDropdownOptions接口。- 将参数
options更名为items。 - 添加了新参数
dropdownOptions,把原来的参数defaultValueIndex移动到了该选项中,并且支持通过tooltip添加提示框。
- 将参数
- 更新了
ModalFormUI.slider()方法并开放了ModalFormDataSliderOptions接口。- 添加了新参数
sliderOptions,把原来的参数valueStep和defaultValue移动到了该选项中,并且支持通过tooltip添加提示框。
- 添加了新参数
- 更新了
ModalFormUI.textField()方法并开放了ModalFormDataTextFieldOptions接口。- 添加了新参数
textFieldOptions,把原来的参数defaultValue移动到了该选项中,并且支持通过tooltip添加提示框。
- 添加了新参数
- 更新了
ModalFormUI.toggle()方法并开放了ModalFormDataToggleOptions接口。- 添加了新参数
toggleOptions,把原来的参数defaultValue移动到了该选项中,并且支持通过tooltip添加提示框。
- 添加了新参数
- 开放了