1.18.2

**1.18.2**是Java版的一次次要更新，发布于2022年2月28日，加入了`/placefeature`命令，对标签和自定义世界生成进行了大量改动，并修复了一些漏洞。此版本不兼容1.18和1.18.1的服务端。

## 新内容

### 世界生成

自定义世界生成
* 在已配置结构文件中加入了`biomes`字段，值是一个标签。
* 加入了密度函数：一种通用的放置方块的方法，可使用户通过其表达几乎所有的使用三次样条和噪声的函数。

### 命令格式

`/placefeature`
* 用于在指定位置上放置一个已配置地物。
* 语法：`/placefeature <feature> [<pos>]`
	+ `feature`：要放置的已配置地物的命名空间ID。
	+ `pos`：地物放置的原点位置。
		- 如未指定，默认使用`~ ~ ~`。

### 常规

合规性要求
* 根据韩国游戏相关法律要求，为韩国玩家加入了计时器，用于提醒其适时休息。

调试屏幕
* 在“Chunk”一行中加入了玩家当前所处的区块在区域文件中的位置和此区域文件的文件名。

语言
* 加入了弗留利语。

资源包
* 加入了与新合规性要求有关的`regional\_compliancies.json`，位于`assets/[命名空间]`下。

标签
* 加入了`#fall_damage_resetting`方块标签。
	+ 包含`#climbable`方块标签，以及甜浆果丛和蜘蛛网。
* 现在可以为所有在注册表（Registry）中出现的类型定义标签。在此之前，只有方块、物品、液体、实体类型、游戏事件以及函数可以定义标签。
	+ 新类型的标签在数据包中存储于其各自的文件夹中（但原版数据包尚未使用这些文件夹），这些文件夹的名称基于这些新类型在`registries.json`中的名称，例如：
		- 药水标签：`/data/[命名空间]/tags/potion`
		- 生物群系标签：`/data/[命名空间]/tags/worldgen/biome`
	+ 旧类型的标签在数据包中的存储位置尚未更改（即使它们目前使用了不符合新命名规则的复数名称）。
* 在原版数据包中加入了以下生物群系标签：
	+ `#is_badlands`：`badlands`、​`eroded_badlands`和`wooded_badlands`。
	+ `#is_beach`：`beach`和`snowy_beach`。
	+ `#is_deep_ocean`：`deep_cold_ocean`、​`deep_frozen_ocean`、​`deep_lukewarm_ocean`和`deep_ocean`。
	+ `#is_forest`：`birch_forest`、​`dark_forest`、​`flower_forest`、​`forest`、​`grove`和`old_growth_birch_forest`。
	+ `#is_hill`：`windswept_forest`、​`windswept_gravelly_hills`和`windswept_hills`。
	+ `#is_jungle`：`bamboo_jungle`、​`jungle`和`sparse_jungle`。
	+ `#is_mountain`：`frozen_peaks`、​`jagged_peaks`、​`meadow`、​`snowy_slopes`和`stony_peaks`。
	+ `#is_nether`：`basalt_deltas`、​`crimson_forest`、​`nether_wastes`、​`soul_sand_valley`和`warped_forest`。
	+ `#is_ocean`：`#is_deep_ocean`、​`cold_ocean`、​`frozen_ocean`、​`lukewarm_ocean`、​`ocean`和`warm_ocean`。
	+ `#is_river`：`frozen_river`和`river`。
	+ `#is_taiga`：`old_growth_pine_taiga`、​`old_growth_spruce_taiga`、​`snowy_taiga`和`taiga`。
* 加入了用于指定结构可以在哪些生物群系中生成的生物群系标签，存储于`tags/worldgen/biome/has\_structure`下。
	+ 可以在其中的`values`字段中指定结构可以在哪些生物群系（可为生物群系ID或生物群系标签）中生成。
* 加入了以下结构地物标签：
	+ `#dolphin_located`：`#ocean_ruin`和`#shipwreck`。
	+ `#eye_of_ender_located`：`stronghold`。
	+ `#mineshaft`：`mineshaft`和`mineshaft_mesa`。
	+ `#ocean_ruin`：`ocean_ruin_cold`和`ocean_ruin_warm`。
	+ `#on_ocean_explorer_maps`：`monument`。
	+ `#on_treasure_maps`：`buried_treasure`。
	+ `#on_woodland_explorer_maps`：`mansion`。
	+ `#ruined_portal`：`ruined_portal`、​`ruined_portal_desert`、​`ruined_portal_jungle`、​`ruined_portal_mountain`、​`ruined_portal_nether`、​`ruined_portal_ocean`和`ruined_portal_swamp`。
	+ `#shipwreck`：`shipwreck`和`shipwreck_beached`。
	+ `#village`：`village`、​`village_desert`、​`village_plains`、​`village_savanna`、​`village_snowy`和`village_taiga`。

更改
--

### 方块

末影箱
* 现在不会在圣诞节期间使用圣诞礼物纹理。

### 生物

海豚
* 会更准确地选择离其最近的结构，而无论结构的类型如何。

### 世界生成

堡垒遗迹
* 稍微提高了结构边界箱的准确度，现在会更贴近结构本身的形状。

自定义世界生成
* worldgen结构中以前只能使用元素ID列表的一些字段现在可以使用标签。
	+ 这些字段现在可以接受`[id, ...]`、`id`（`[id]`的简写）以及`#tag`。
	+ 更改了的字段如下：
		- `feature.glow_lichen`配置中的`can_be_placed_on`
		- `feature.spring_feature`配置中的`valid_blocks`
		- `feature.simple_random_selector`配置中的`features`
		- `block_predicate_type.matching_blocks`中的`blocks`
		- `block_predicate_type.matching_fluids`中的`fluids`
		- `biome`中的`features`的内部列表和`carvers`的映射值
		- `biome_source.checkerboard`中的`biomes`
* 一些标签字段现在要求在ID前面加上`#`，但是它们暂不接受元素列表：
	+ `dimension_type`中的`infiniburn`
	+ `feature.geode`配置中的`blocks.cannot_replace`和`blocks.invalid_blocks`
	+ `feature.vegetation_patch`和`feature.waterlogged_vegetation_patch`配置中的`replaceable`
	+ `feature.root_system`配置中的`root_replaceable`
	+ `structure_processor.protected_blocks`中的`value`
* 噪声设置中的结构字段不再将要塞与非要塞结构相独立，每种结构在JSON中的级别现在都是平等的，用其中的`type`指定结构的类型，可以是以下两种：
	+ `concentric_rings`，适用于要塞结构。
	+ `random_spread`，适用于非要塞结构。

种子
* 输入种子0将不会得到48而是0本身。
* 输入的种子前后的任何空格现在都会被去掉。

超平坦世界
* 将“红石俱备”预设的顶层方块高度由Y=-9提升至Y=55，以防止史莱姆生成。
* 更改了“水世界”预设，将原先的沙子替换成沙砾，并在基岩层上方增加了64层深板岩，以解决此预设世界中海底神殿的生成问题。

### 命令格式

`/locate`
* 现在可以使用命名空间ID作为参数。
* 现在支持标签，用`#`前缀与一般的ID做区分。
* 参数类型由结构类型（Structure Type）改为配置的结构（Configured Structure）。
	+ 例如现在可以执行像`/locate village_desert`或`/locate shipwreck_beached`这样的命令。
* 定位指定结构类别的旧用法现在改由定位指定标签来完成。
	+ 例如`/locate village`现在变成了`/locate #village`。

`/locatebiome`
* 现在支持标签，用`#`前缀与一般的ID做区分。
	+ 例如现在可以执行像`/locatebiome #minecraft:has_structure/igloo`这样的命令。

### 常规

数据包
* 将数据包版本由`8`提高到`9`。
* 现在可在实验性数据包中添加自定义结构，即游戏现在可生成并存储由数据驱动的配置的结构。
	+ 现在可在实验性数据包中添加新结构集。
	+ `location_predicates`中`feature`字段现在引用的是一个配置地物。
	+ `exploration_map`战利品表函数中`destination`字段现在是一个配置地物标签ID。
	+ `exploration_map`战利品表函数现在不再自动设置地图的显示名称。
* 现在可通过数据包对一些洞穴生成机制进行配置。
	+ 向密度函数中加入了一个新注册表（Registry）（洞穴由它们组合在一起生成）。
	+ 向噪声设置中加入了`noise_router`字段（同时丢失了许多标志）
		- 详情请参阅worldgen report中的`worldgen/noise\_settings`文件夹。
	+ Noise Router会将数据驱动型洞穴生成机制与其余的代码部分连接起来。

调试屏幕
* 将“Chunk”一行中的玩家于区块内部的位置移至“Block”一行的尾部的方括号中。
* 将"Terrain"行合并进"Multinoise"行，并更名为"NoiseRouter"，新格式为：`NoiseRouter T: *数据* H: *数据* C: *数据* E: *数据* D: *数据* W: *数据* PV: *数据* AS: *数据* N: *数据*`。
	+ `C`、​`E`、​`H`、​`T`和`W`与之前"Multinoise"行中的同名值一致。
	+ `PV`与之前"Terrain"行中的同名值一致。
	+ `D`是深度噪声值，`AS`是不加粗糙度的原始密度值，`N`是最终密度值。和其他数据不同，这三项在受到X、Z轴坐标影响的同时也受到Y轴（高度）的影响。当坐标位于地面以上，这三个值通常为负数；而坐标在地下时，这三个值通常为正数。

日志
* Log4j升级到2.17.0。

标签
* 移除了细雪的`#goat_spawnable_on`方块标签。
* 雪块和细雪现在拥有`#azalea_root_replaceable`方块标签。
* 移除了泥土的`#dripstone_replaceable_blocks`方块标签。
* 从`#azalea_root_replaceable`标签中移除了`#lush_ground_replaceable`，并加入了`#base_stone_overworld`、​`#dirt`、​`clay`、​`gravel`和`sand`。

常规
* 由于对32位运行环境的操作系统即将结束支持，在主菜单上向使用该环境启动游戏的用户加入了警告信息。

修复
--

修复了106个漏洞
1.18前正式版的漏洞
* MC-3524 — 与结构相关的生物不会在超平坦世界中生成。
* MC-4533 — 流动水与水源在对角处相接时，流动水的渲染错误。
* MC-53850 — 带有`Invulnerable`NBT标签的物品实体和经验球在受到伤害时会被移除，但计算仅在客户端一侧。
* MC-70848 — 当水附近的水比它要更高时，它会看起来在向上流。
* MC-72248 — 下落的沙子可以产生不可见方块。
* MC-83938 — 玩家站在具有固体碰撞箱的实体（潜影贝和船）上时会判定为飞行而被踢出。
* MC-94025 — 种子为0的世界不能通过“重建”选项复制。
* MC-98727 — 玩家在乘船、坐矿车或骑马，并且处于上升过程中时向上跳跃会被服务器判定为飞行而被踢出。
* MC-105317 — 结构方块加载时不会正确旋转实体。
* MC-111082 — 玩家在未启用飞行的服务器中乘坐带有`NoGravity`标签的船时，会被服务器判定为飞行而被踢出。
* MC-126772 — 低视距下，水下迷雾不能正常隐藏区块边缘。
* MC-129652 — 长文件名的存档备份后弹出的提示中显示的名称被截断。
* MC-135989 — 玩家使用附有激流魔咒的三叉戟时，会被服务器判定为飞行而被踢出。
* MC-138717 — `/locate`不能定位超平坦世界中的特定结构。
* MC-146854 — 玩家在角落移动时会更倾向于沿X轴移动。
* MC-156309 — 沿X轴运动的TNT实体与方块发生碰撞时，其运动状态没有被正确计算。
* MC-165974 — 玩家从方块夹角处跳起时会朝东或西方向移动。
* MC-167763 — 使用特定显卡时，失明效果在水下不起作用。
* MC-170545 — 在macOS上，进入全屏模式时游戏崩溃。
* MC-179315 — 默认情况下，废弃传送门不会在超平坦世界中生成。
* MC-185545 — 玩家的击退抗性仍会受到概率影响。
* MC-185695 — 缠怨藤不能保证玩家免受摔落伤害。
* MC-187549 — 1.15.2及以上版本中，与墙相撞时，Z轴上的水平速度分量不会被重置。
* MC-187911 — 结构ID中，`end_city_treasure`中有下划线，而`endcity`则没有。
* MC-188086 — 重载游戏时，地物会在完整的区块边界上被截断。
* MC-191765 — `doImmediateRespawn`游戏规则设为`true`时，聊天栏会被关闭。
* MC-192361 — 即使要塞已生成，`/locate stronghold`命令也不能用于定位要塞。
* MC-195692 — 末地城在结构以及配置的结构中所使用的ID不一致。
* MC-197128 — 如自定义生物群系使用了多个同种配置的结构地物，只有其中的一个会被生成。
* MC-205232 — 玩家处于冰冻状态时，在细雪中可以看得更远。
* MC-210612 — 在特定自定义世界中，`/locate`定位到的要塞位置上实际没有生成要塞。
* MC-214138 — 在附魔台上跳起后放置方块会导致失去同步。
* MC-214289 — 滴水石锥生成时可以替换方块。
* MC-216004 — 废弃矿井的原木立柱可以在滴水石锥上生成。
* MC-216589 — 特定情况下，废弃矿井在生成时不会将滴水石锥替换掉。
* MC-218739 — 发光浆果和发光地衣的生成过程不使光照跨区块更新。
* MC-223834 — 钟乳石可以穿过非完整（非固体）方块形成石笋。
* MC-226359 — Unicode的零宽不连字（Zero-Width Non-Joiner）会以“ZWNJ”方块的形式显示出来。
* MC-227358 — 幼年山羊不会避开与其身体等高的细雪。
* MC-227995 — 山羊寻路时不会穿过处于打开状态的门。
* MC-229313 — 一些可以抵消摔落伤害的方块在特定的高度上不能保证可以保护生物。
* MC-229966 — 在`start_pool`中引用一个无效的模板池时会抛出`java.lang.NullPointerException`异常。
* MC-230905 — 玩家可以在特定的可以减少迷雾效果的情况下看到天空背景。
* MC-232290 — 狐狸会在细雪中睡觉，即使受到伤害也不离开。
* MC-232822 — 一些结构不能在超平坦世界中生成。
* MC-233599 — `/spreadplayers`命令的`maxHeight`参数不支持负值。
* MC-234390 — `minecraft:ui.button.click`声音不会在点击主菜单上的版权信息时播放。
* MC-235574 — 用具有`up:false`方块状态的墙替换方块时，游戏崩溃。
* MC-242331 — 实体的显示速度要比区块加载快。
* MC-248225 — `BlockPos getSquaredDistance()`计算不正确。

1.18的漏洞
* MC-236693 — 按键控制子菜单中的“完成”按钮位置过低。
* MC-236775 — 除英语（美国）外的其他语言的生物群系选择界面中的生物群系不按顺序排列。
* MC-237110 — 草方块可以在水下生成。
* MC-237262 — 崩溃日志和刻性能分析会导致`Failed to find module info for _`在日志上刷屏。
* MC-238114 — 草甸中的树可以不附带蜂巢。
* MC-238696 — 在超平坦世界中使用`/locate stronghold`命令或投掷末影之眼，会找到一个实际不存在要塞的位置。
* MC-238866 — 雪或细雪可以在水下生成。
* MC-238977 — 发光鱿鱼可以在超平坦世界中村民的农田以及喷泉中生成。
* MC-239031 — 自21w41a起区块渲染一直存在问题。
* MC-239436 — 在很长的洞穴中，方块的面剔除出现错误。
* MC-239708 — 1.18更新时，“水世界”超平坦预设并没有被一起修改。
* MC-240559 — JFR JSON报告中的`bytesPerSecond`计算得不正确。
* MC-241152 — 细雪是`#goat_spawnable_on`方块标签的一部分（即山羊可以在细雪上生成）。
* MC-241205 — 砂岩会以2-5层的厚度生成，而不是之前的3-8层。
* MC-241232 — 紧贴着方块顶面的滴水石锥落下时不会保持其原有的形状。
* MC-241288 — 对自定义结构的支持被移除。
* MC-242010 — 雪块和细雪不是`#azalea_root_replaceable`标签的一部分（即缠根泥土生成时不能替换雪块和细雪）。
* MC-242543 — 窒息过程总是会使用实体头部的中心位置，来与碰撞箱一起判断生物是否会被窒息。
* MC-242709 — 生成在含水层内的滴水石锥容易在地面上产生凹陷。
* MC-243015 — 区块生成时的下落方块会产生大量实体以及客户端侧的卡顿。
* MC-243152 — “红石俱备”超平坦世界中会生成史莱姆。
* MC-243190 — 缠根泥土生成时可以替换洞穴藤蔓。
* MC-243196 — 其他玩家上船或下船时，驾驶者的观察角度会被重置。
* MC-243245 — 不能用`Tab ↹`键选中‘“Realms”是什么’这个按钮。
* MC-243489 — 控制台刷屏：`Skipping update for removed player`。
* MC-243619 — 袭击可以刷在模拟距离外。
* MC-243766 — 不能通过按`Tab ↹`键把焦点移到主菜单的版权信息上。
* MC-244137 — `server.properties`中默认不含`level-seed`选项。
* MC-244164 — 存档升级到1.18会使箱子不可见，并且被清空。
* MC-244682 — 一些自定义维度设置会导致服务器停止运行，但不崩溃。
* MC-244683 — 繁茂洞穴中的热带鱼在气泡柱内生成。
* MC-244772 — 不能使用双击加入Realms。

1.18.1的漏洞
* MC-244174 — 虚空、失明、熔岩和细雪的迷雾效果是圆柱形的。
* MC-245345 — 重载区块时游戏崩溃。
* MC-245347 — 使用鞘翅飞行时撞向浮空的流动水，摔落伤害有时不会被重置。
* MC-245406 — 加载1.18以前的区块时会导致内存泄露，由此导致游戏崩溃。
* MC-245416 — 幼年海龟会在灵魂沙中窒息。
* MC-245772 — 升级到1.18.1时，旧版本箱子的战利品表会被删除。
* MC-245817 — 服务器会一直以大约500kB/s的速度向磁盘写入数据。
* MC-245850 — 在多人游戏警告界面使用`Tab ↹`键时，选中的位置会不按顺序选中。
* MC-245857 — 附魔台斜上方的方块会阻碍下面的书架发挥作用。
* MC-245910 — 营火和漏斗会导致区块不停地被保存。
* MC-245925 — `doImmediateRespawn`为true而玩家死亡时，下落的方块会在视觉显示上有问题。
* MC-245937 — 玩家穿着鞘翅，并使用烟花火箭向上推进时产生的粒子会闪烁。
* MC-246445 — 对在`#beehives`标签中的非蜂箱方块使用带剪刀的发射器会导致游戏崩溃。
* MC-246449 — 村民尝试打开在`#wooden_doors`标签中的非门方块会导致游戏崩溃。
* MC-246464 — 在含有无`facing`方块状态且在`#wall_corals`标签中的方块的暖水海洋中发射骨粉会导致游戏崩溃。
* MC-246465 — 熔岩可能只在客户端侧使实体燃烧、受到伤害或被破坏，而由此造成不同步的现象。
* MC-247415 — 如果与珊瑚相关的方块标签为空时，游戏会在珊瑚礁生成过程中崩溃。
* MC-247636 — 删除存档操作不会被记录到日志中。
* MC-247871 — `Cannot invoke "com.mojang.datafixers.util.Either.left()" because "$$6" is null`。
* MC-248095 — 存档升级至1.18时，已被激活的循环型命令方块会停止运行。
* MC-248106 — 站在玩家身上的鹦鹉会由于玩家使用附有激流魔咒的三叉戟而死亡。
* MC-248163 — 1.18-pre6中关于自动保存的改动使服务器性能变得非常糟糕。
* MC-248316 — 1.18.1服务器崩溃：`OutOfMemoryError: Java heap space`。

上个开发版本的漏洞
* MC-248814 — `Unknown structure start: minecraft:ruined_portal_standard`。