I was personally quite convinced that the game was already perfect, but it seems that our developers disagree.
我以前总觉得我们的游戏挺完美的,但我们的开发者好像不同意这一点。
We are now releasing the first snapshot for Minecraft 1.20.2!
我们发布了 Minecraft 1.20.2 的第一个快照!
This snapshot brings changes to Diamond Ore generation, the ability to waterlog Barriers, and a change to Villager curing. It also brings a new Experimental Toggle that updates Villager trading, which we are eager to hear your feedback on. As well as a big batch of bug fixes, you will find a whole lot of technical features and changes in this snapshot, including new commands, function macros, persistent command history, network performance improvements, and much more.
这个快照带来了钻石矿石生成、屏障方块含水和以及僵尸村民治愈机制上的修改。此外还有一个更新村民交易的实验性开关,我们期待在这方面听到你们的反馈。还有一堆漏洞修复和技术性更新比如新命令、函数宏、保留命令历史、网络性能提升等等。
Happy mining!
挖矿愉快!
NEW EXPERIMENTAL FEATURES IN 23W31A 23W31A 的新实验性特性
VILLAGER TRADE REBALANCE 村民交易平衡性调整
This snapshot introduces a new experimental Feature Toggle that updates the Wandering Trader and Librarian trades. You must turn on this Feature Toggle in the Experiments Menu when creating a new world if you want to test the new trades. You can find more information about Feature Toggles here .
此快照调整了流浪商人和图书管理员的交易,可以通过特性开关。如果你想测试新的交易,就必须在创建新世界时在实验菜单中打开。你可以在这里了解特性开关。
As this is an experiment, we would really appreciate your feedback as work continues and to help us decide on the future direction for Villager trades. Visit this link to share your thoughts!
这是一个实验特性,所以我们很想听到你们的反馈,来帮助我们决定村民交易的未来。访问此链接来分享你的想法!
LIBRARIAN CHANGES 图书管理员交易调整
Before these changes, players could get any village enchantment from any Librarian. A novice Librarian could sell the best enchantment in the game! For some players, this felt too random and made trading feel overpowered when compared to using the Enchanting Table or searching for Enchanted Books in structures.
在这次更改之前,玩家可以从任意图书管理员处获得任意附魔书。新手级别的图书管理员就可以出售游戏中最好的附魔书了!对于一些玩家来说,这个特性过于随机,同时在让村民交易与附魔台附魔和结构中搜索相比过于方便。
With the new rules, Librarians from different biomes sell different enchantments, and each village biome has one enchantment that is only sold by master Librarians.
在全新的规则下,不同生物群系的图书管理员将出售不同的附魔书,而且每个群系都会有一个独特的附魔书,且只会被该群系村庄里的大师级图书管理员出售。
Players will have to work towards getting the best trades instead of relying on random chance. We hope this makes Librarian trading more interesting and skillful, while also revealing some clues about their history of each village type through the enchantments that are sold there.
玩家现在必须先,而不是碰运气。我们希望这使图书管理员交易变得更加有趣,同时不同村庄出售的魔咒一定程度上也能提供当地历史文化的线索。
Librarians from different biomes now sell different Enchanted Books
不同生物群系的图书管理员现在会出售不同的附魔书
Each village biome has one special enchantment that is only available from Master Librarians with full XP
每个群系都分配了一个特殊的附魔书,只有拥有满经验的大师图书管理员才能出售
This means that players must visit all seven village biomes to get the full set of villager enchantments
这意味着玩家必须到达全部七个群系才能获得全部附魔书
There are two secret village biomes where villages do not generate
有两个特殊群系,在这些群系中村庄不会自然生成
A player must build these villages to access their trades!
玩家需要自行搭建村庄来获取这些交易!
Some enchantments have been removed from village trading and must be found in other ways
一些附魔书已从村民交易中移除,必须要通过其他渠道才能找到
WANDERING TRADER CHANGES 流浪商人交易调整
Some players felt that the Wandering Trader had unfair prices and didn't sell many useful items. We have lowered their prices, added more trades and increased the amounts available. The Wandering Trader will also now buy useful items from players, so it's possible to help them on their journey by giving them supplies even if you don't feel like buying anything.
一些玩家觉得流浪商人要价太高,卖的东西也没什么用。因此我们降低了交易所需的绿宝石,同时加入了更多交易,并且提升了物品单次可交易的最大次数。流浪商人现在也会从玩家那里收购自己需要的物品。因此即使你不想买东西,也可以向他们提供物品,来帮助他们完成旅程。
Wandering Traders now have lower prices and have a higher amount of each item in stock
流浪商人交易现在需要的绿宝石减少,可交易的最大次数增加
Wandering Traders now sell Logs
流浪商人现在可以出售原木
Wandering Traders can now buy many items, instead of only selling
流浪商人现在也会收购物品
CHANGES 更改
Diamond Ore is now generated more frequently in the Deepslate layers of the Overworld
钻石矿现在在主世界的深板岩层生成更加频繁
Curing a Zombie Villager now only gives a big discount the first time
僵尸村民现在只在第一次被治愈时提供大额交易折扣
There is no longer a bonus discount for reinfecting and curing the same Villager multiple times
多次感染并治愈同一个村民后,交易折扣不再翻倍
Barrier blocks can now be waterlogged by players in Creative mode
创造模式的玩家可以让屏障方块含水
Water cannot be placed in them or taken out by non-direct interactions such as Dispensers
无法通过直接交互以外的方式让屏障方块含水,例如使用发射器
Players will no longer be able to crouch while riding vehicles
玩家现在在乘坐载具的时候不能够潜行了
Chorus Flower no longer provides support for hanging or standing blocks
紫颂花现在不再为悬挂或需要支撑的方块提供支撑面
DIAMOND ORE DISTRIBUTION 钻石矿石分布
In this snapshot, we have increased the amount of Diamond Ore found in the deepest parts of the world. Our goal is to make it more rewarding to mine for Diamonds in the Deepslate layers. We want your feedback on this! Please try out your favorite mining technique and let us know how it feels on this feedback site .
在这个快照中,我们提高了钻石矿石在主世界深层生成的概率。从而让在深板岩层中挖取钻石的回报更高。我们期待你的反馈!请在新版本中尝试你最喜欢的挖矿方法,并在反馈网站上给予我们反馈。
TECHNICAL CHANGES 技术性更新
The resource pack version is now 16
资源包版本现在为 16
The data pack version is now 16
数据包版本现在为 16
History of used commands is now saved and accessible across worlds
使用过的命令历史现在在本地保存,可以在不同的世界中获取
Optimized the way chunks are sent to clients to allow players with low-bandwidth internet connections to play on multiplayer servers
优化了区块发送到客户端的方式,从而允许低带宽的网络连接进行多人模式游戏
Added support for multi-version packs
添加了数据包和资源包的多版本兼容支持
Changed network protocol to allow for more data-driven content in the future
更改了网络协议,以便未来支持更加数据驱动的内容
Added new log-ips option to server.properties
在 server.properties 中增加了 log-ips 选项
Added validation for symbolic links in datapacks and resource packs
加入了数据包和资源包的符号链接验证
When hitboxes are displayed through F3+B, entities that have a passenger will display the passenger's attachment point
当 F3+B 碰撞箱显示开启后,有乘客的实体会显示乘客的着落点
COMMAND HISTORY 命令历史
The last 50 commands that you sent in chat will be remembered across game sessions
现在聊天框中最近发送的 50 个命令能够在不同的游戏会话中保留
You can access the command and chat history by pressing up or down arrows in the chat
你可以通过上下箭头键获得聊天和命令历史
Regular chat is only persisted within the same game session (leaving a server or world clears them)
普通聊天历史依然只在一个游戏对话中保留(离开世界或者服务器会清空聊天历史)
Recent commands are stored in command_history.txt in the game folder
最近发送的命令储存在游戏文件夹的 command_history.txt 内
CHUNK SENDING OPTIMIZATION 区块发包优化
Chunks are no longer sent over the network to the client in one big continuous batch
优化了向客户端发送区块的方式,不再连续大量发包
They are instead sent in smaller batches depending on the available bandwidth. This means that:
现在可以根据可用的带宽少量发包。这意味着:
Clients with extremely low-bandwidth connections will not time out while loading the world
低带宽网络连接设备的客户端现在不会在加载世界的时候超时
Clients with low-bandwidth connections can interact with the world while some chunks are still loading
低带宽网络连接设备的客户端可以在部分区块仍在加载时与世界交互
Only chunks within the client's render distance are now sent
现在只有客户端渲染范围内的区块才会被发包
MULTI-VERSION PACKS 多版本包
New features have been added to datapacks and resource packs to allow creation of packs that are compatible with multiple versions of game.
向资源包和数据包内新增了内容,用来创建兼容多版本游戏的数据包和资源包。
PACK METADATA 包的元数据
Pack metadata now includes an optional field supported_formats which describes a range for pack formats that this pack supports
Note: since this new information is ignored by older versions of the game, they will always see a "normal", single-version pack, without any extended compatibility
Order of application: overlays are stacked from the bottom to top of the list
应用顺序:列表中的覆盖包将会按由后至前的顺序读取
For example, if a pack has two overlays: "entries": [{"directory":"A", ...}, {"directory":"B", ...}], the game will first look in B, then A and then in the top pack directory
As part of ongoing work towards more data-driven features, the network protocol has been changed to include a new configuration phase.
作为正在进行的数据驱动特性拓展的一部分,网络协议现包含在全新的配置阶段
Configuration phase automatically starts after login phase (i.e. after client account has been verified) and lasts until the player joins the world (play phase)
配置阶段在登录阶段后自动开始(即在客户端帐户验证之后),并持续到玩家加入世界(游戏阶段)。
Clients can stay in configuration phase indefinitely - it's up to server to release it to the world
客户端可以无限期地停留在配置阶段 —— 这取决于服务器允许客户端进入世界的时间
Servers can also request clients to re-enter the configuration phase after it has entered the play phase
服务端可以在客户端已经进入游戏端后请求其重新进入配置阶段
Other players will see such clients as disconnected
此时其他玩家的客户端表现为已断开连接
Users in configuration phase will not be visible on the player list
在配置阶段的用户将不会在玩家列表中显示
Actions allowed in configuration phase (moved from play phase)
配置阶段允许的行为(从游戏阶段移出)
Configuration of data-driven registries
数据驱动注册的配置
Configuration of enabled features
已启用特性的配置
Actions shared between configuration and play phases:
配置和游戏阶段之间共享的行为:
Application of server resource packs
服务器资源包的应用
Update of tags
标签的更新
Exchange of custom packets
自定义数据包的交换
Ping and keep-alive packets
连接和保持连接需要的数据包发送
The server will now negotiate resource pack in the configuration phase
服务器现在会在配置阶段进行资源包提醒
This means that the player will no longer be in world when answering prompts and reloading resources
这意味着玩家在接受资源包提醒并点击选项时不再处于游戏时间中
SERVER.PROPERTIES SERVER.PROPERTIES
New option: log-ips (default true)
新选项 log-ips (默认为 true)
When set to false, will prevent player IPs from being included in the log when players join the game
当设置为 false 时,玩家加入游戏时,玩家设备的 IP 地址将不会被记录在日志中
SYMBOLIC LINK VALIDATION 符号链接验证
To improve safety, the game will now also detect symbolic links used inside data- and resource packs.
为保证安全性,游戏会检测数据包和资源包中含有的符号链接。
This feature expands on symbolic link validation in worlds added in the previous release
该特性拓展了上一版本中添加世界时的符号链接验证机制
The game will now warn users if a pack added via drag and drop contains disallowed symbolic links
游戏在拖放添加的包内含有不允许的符号链接时,也会警告用户
Packs containing disallowed symbolic links will not be visible in UI and commands
含有不允许的符号链接的包在 UI 和命令中不可见
Additionally, directories and files that are not recognized as packs will no longer be copied via drag and drop
All textures containing multiple sprites in a sheet for GUI have been split into individual sprites under textures/gui/sprites (automated by Slicer tool)
villager2.png has been renamed to villager.png (automated by Slicer tool)
villager2.png 被重命名为 villager.png(使用 Slicer 工具自动化)
icon/trial_available and realm_status/expires_soon GUI sprites are animated with .mcmeta declarations instead of individual sprites (automated by Slicer tool)
width: number of pixels for this sprite to cover on-screen across its width
width:在横向上平铺精灵图时需要覆盖的像素数
height: number of pixels for this sprite to cover on-screen across its height
height:在纵向上平铺精灵图时需要覆盖的像素数
border: the size in pixels that the border slices should cover on-screen, one of:
border:显示精灵图的边框所需要的像素数,接受以下值:
Constant integer for uniform border size on all sides
一个常数,表示所有边的边框大小
Object containing left, top, right, and bottom
一个对象,包含 left、 top、 right 和 bottom
DATA PACK VERSION 16 数据包版本 16 更新内容
Gamerule randomTickSpeed now affects the rate of accumulation of snow and ice the same way it affects crops and other blocks affected by random ticking
游戏规则 randomTickSpeed 现在也会影响积雪和冰,就像随机刻影响作物和其他方块一样
Added a random command
添加了 random 命令
New form of the execute command: execute if function
A new command for randomizing values and controlling random sequences. The value and roll forms can be used to draw a random value. In the case of roll, the resulting value is also shown in chat for all players.
一个新命令,用于输出随机结果,或控制随机序列。可以使用 value 和 roll 来抽取随机数。使用 roll 时,结果将在聊天窗口中显示给所有玩家。
Syntax:
语法:
random value|roll <range> [<sequenceId>]
random reset *|<sequenceId> [<seed>] [<includeWorldSeed>] [<includeSequenceId>]
Parameters:
参数:
range: A range of values to randomize between, inclusively
range:随机数所在的范围,是一个闭区间
For instance, 1..6 is a regular D6 roll
举例:1..6 等价于一个通常的六面骰
sequenceId: The name of a random sequence to sample or reset
sequenceId:需要采样或重置的随机序列名
seed: A seed to use for the random sequence after reset
seed: 重置后用于随机序列的种子
includeWorldSeed: A boolean [default: true] specifying whether to include the world seed when seeding the sequence
false means all sequences will evaluate to the same regardless of which name they have
false 代表无论序列名如何,序列的计算结果都是相同的
By default, all sequences are seeded as 0, true, true . Using * instead of a sequence ID resets all sequences and sets the default parameters.
默认情况下,所有的随机序列种子都是 0,true,true。使用 * 而不是具体的随机序列名将会重置所有随机序列,并设置为默认参数。
If no seed is specified, the sequence resets to the default parameters.
如果没有指定种子,则随机序列重置为默认参数
Note that random value|roll <range> used without a sequence id is available to non-operator players.
请注意,没有指定随机序列名的 random value|roll <range> 命令可被非管理员玩家使用。
EXECUTE IF FUNCTION EXECUTE IF FUNCTION
A new execute sub-command that runs a function or function tag and matches the return value(s). If a tag is given, all functions run regardless of the results of prior functions. Syntax:
一个新的 execute 子命令,用来运行函数或函数标签,并匹配一个或多个输出值。如果给定一个函数标签,则标签下每一个函数都会运行,无论前一个函数输出如何。语法如下:
execute if|unless function <function> <continuation>
Parameters:
参数:
function: The function or tag to run
function:待运行的函数或函数标签
continuation: The matching of the result value of the function(s) that run:
continuation:匹配所运行的函数返回值:
At least one of the functions must succeeed for the match to succeed
至少成功运行一个函数才能匹配成功
A succeessful call is defined as a function that:
成功调用是指符合以下条件的函数:
Uses the return command to return a value
使用 return 命令来返回一个值
The return value is not 0
返回值不为 0
RETURN RUN RETURN RUN
A new form of the return command is now available, return run . Syntax:
一个新的 return 子命令:return run。语法如下:
return run <command>
This takes the result value from running the specified command and returns that as the return value of the function. In all other aspects, it works like return with a specified return value.If the given command fails, the return value is 0 .
该函数会运行 command 指定的函数,并输出 result 值作为自己的返回值。在其它情况下,这类似于返回一个指定 return 值。但如果指定的函数运行失败,将返回 0。
FUNCTIONS 函数
A single backslash \ as the last non-whitespace character of a line now allows a command to be continued on the next line
如果一个反斜杠符号 \ 作为一行的最后非空字符,则允许一个命令在下一行继续
Leading and trailing whitespace of the following line are stripped before appending
在追加下一行内容前,将删除前一行末尾和后一行开头的空格
MACROS 宏
Functions can now contain macro lines, making them Function Macros.
函数内现在可以包括函数宏。
Any line beginning with $ (as the first non-space character) marks a macro line
可以通过在一行开头(第一个非空字符)使用 $ 标记函数宏
A macro line also contains one or more substitutions in the form of $(variable)
函数宏内可通过 $(variable) 调用变量值
When calling a function macro a compound with data for all argument variables must be provided
在调用函数宏时,必须提供包含所有参数变量的数据集
Calling Function Macros 调用函数宏
The function command has new forms: function 命令现在可以使用下面列举的格式:
function <id> <compound> function <id> with <data source> [<path>]
New Arguments:
新参数:
compound: A data compound, enclosed in {}
compound:一组复合数据,用 {} 表示
data source: A data source specification, like what could already be used for data get
data source:一个指定的数据值,就像使用 data get 获取到的那样
path: An NBT path specification
path:一个指定 NBT 的路径
Notes:
注意:
The data source and path must specify a compound data entry
数据值和 NBT 路径必须指定复合数据项
The compound must contain one entry for each variable used in the macro
对于宏中使用的每一个变量,复合数据至少包含一个数据项
More data may be present in the compound and if so is ignored
复合数据内可包含更多数据,但超出的数据项将被忽略
Calling a non-macro function with a data compound is silently ignored
使用复合数据调用的非宏函数将被静默忽略
When a macro is called, the values provided are substituted in place of the variable specifications and the resulting commands are executed
调用函数宏时,将提供的值替换为指定变量,并执行生成的命令
Any syntax errors in the lines resulting from variable substitution result in the entire function call being skipped
因变量替换而导致的函数行中任何语法错误都将导致整个函数的调用被跳过
Performance Considerations 性能考虑
Using a macro means commands must be re-evaulated after variable substitution. This has an extra cost compared to running pre-parsed functions.
使用宏将意味着命令会在变量替换后被重新计算。因此与运行预解析函数相比,运行函数宏将有更大的性能消耗。
Regular commands (non-macro lines) are still pre-parsed. Only commands with variable substitutions in them are parsed when a macro is called and the game will attempt to cache the result of a certain parameter set being used in a call.
常规函数(不包括宏函数行的)仍然会预先解析。当宏被调用时,只有包含变量替换的命令才会被解析,游戏将尝试调用缓存中特定参数集的结果。
This makes repeated calls with the same parameter set cheaper than new calls with different parameters, but an overhead still remains compared to regular functions. Note that only the values references by macro as parameters are included in this cache, so any extra data in the provided compound is ignored.
这使得使用相同参数集的重复调用比使用不同参数集的新调用运行更快,但与常规函数相比,性能消耗依然存在。注意,只有宏作为参数引用的值才包含在此缓存中,因此复合数据中提供的任何额外数据都将被忽略。
DISPLAY ENTITY INTERPOLATION 展示实体插值
Display entities now start updating their client-side position and rotation on the first tick after an update
展示实体现在会在更新后的下一刻开始更新它们在客户端的位置
In previous versions, updates were applied in the same tick, causing uneven motion
在先前的版本中,更新是在同一刻进行,导致运动不连贯
New behavior is now similar to armor stands, mobs and players
新行为现在类似于盔甲架、生物和玩家
On the server, position and rotation are still updated immediately
在服务端,位置和旋转的更新仍然是立即进行
Duration of this interpolation is controlled by the field teleport_duration
单次插值的持续时间由 teleport_duration 字段控制
0 means that updates are applied immediately
0 代表更新会立即进行
1 means that the display entity will move from current position to the updated one over one tick
1 代表展示实体需要 1 刻时间从当前位置移动到新位置
Higher values spread the movement over multiple ticks
更高的值代表运动将持续多个刻
Please note that this value is clamped to avoid glitches due to periodic position updates
请注意,这是一个固定值,以避免由于定期位置更新而引起的故障
The new value will apply only to position and rotation changes made after it changed
新的插值将只在当前位置和旋转改变后应用
That means any current movement will continue unchanged
这意味着当前任何运动将保持不变
Note: behavior while riding remains unchanged from previous versions
注意:骑乘行为仍与过去版本相同
ATTRIBUTES 属性
Added new attribute generic.max_absorption
添加新属性 generic.max_absorption
generic.max_absorption acts similar to generic.max_health, but instead of being the upper bound for Health, it is the upper bound for AbsorptionAmount
generic.max_absorption 的作用类似 generic.max_health,但它不是用来限制 Health 的最大值,而是用来限制 AbsorptionAmount 的最大值
The mob effect absorption increases generic.max_absorption as well as fills the AbsorptionAmount to the max when applied
MC-261965 - The "Glow and Behold!" advancement is granted when interacting with empty signs while holding glow ink sacs, despite no glow ink sacs being consumed