Nattiden 10 hónapja
szülő
commit
4c7c07233b

+ 300 - 3
Project/libraries/Versions/26/26.1/snapshot/26.1-snapshot-1.md

@@ -1,7 +1,304 @@
 ---
-version-image-link: null
-wip: true
+version-image-link: https://test.fukit.cn/autoupload/f/eVhYusBtjOJG2qfZ4rUTz9iO_OyvX7mIgxFBfDMDErs/20251217/ffSM/1170X500/image.png
 server-jar: https://piston-data.mojang.com/v1/objects/99786473e61ff6fcf0df4db9e0d6c9012c196116/server.jar
-translator: null
 cats: ['26.1']
 ---
+## 更改
+
+- 现在村民职业解锁的交易将使用确定性随机序列来决定,类似于战利品掉落和猪灵以物易物的战利品
+- 已完全重写将方块光与天空光等级映射为屏幕亮度的算法
+- 新增光照贴图调试渲染器,可通过按键 `F3 + 4` 启用
+
+### 光照贴图算法更改
+
+- 新算法整体效果应与之前大致一致,但:
+  - 算法更简单直观,并修复了旧算法的多个问题
+  - 黑暗效果与凋零首领战的世界变暗效果现在在所有维度中的表现一致
+  - 夜视效果现在改为“增加环境光”而非“缩放最终颜色”
+    - 这意味着完全黑暗区域不再会比有方块光或天空光照亮的区域更亮
+  - 算法的更多方面(例如方块光着色、环境光颜色与夜视颜色)现在通过环境属性实现数据驱动,详见下方 “数据包”
+
+### 光照贴图调试渲染器
+
+- 新增光照贴图调试渲染器,可通过按键 `F3 + 4` 启用
+- 与 FPS/TPS 与网络图表互斥
+- 会在屏幕右下角实时显示光照贴图纹理
+- 纹理的纵轴表示天空光等级(自下而上 0–15)
+- 纹理的横轴表示方块光等级(自左而右 0–15)
+- 每个像素的颜色表示在对应的方块光与天空光等级下,应用于方块与实体的最终颜色
+
+### UI
+
+#### 调试屏幕
+
+- `looking_at_block` 与 `looking_at_fluid` 调试条目不再显示标签
+- 新增调试条目:
+  - `looking_at_block_tags`
+  - `looking_at_fluid_tags`
+  - `looking_at_entity_tags`
+- 重命名调试条目:
+  - `looking_at_block` -> `looking_at_block_state`
+  - `looking_at_fluid` -> `looking_at_fluid_state`
+
+## 技术性更改
+
+- 数据包版本现为 95
+- 若服务器磁盘空间不足,现在会向服务器管理员显示提示
+- 游戏现在需要 Java 25
+- 内置 Java 发行版现在为微软构建的 OpenJDK 25
+
+## 数据包版本 95
+
+- 新增村民交易的数据驱动注册表
+- 现在可以使用 `piglin.*` 访问猪灵的物品栏槽位,类似于通过 `villager.*` 访问村民物品栏
+
+### 数据驱动村民交易
+
+村民与流浪商人提供的交易现在为数据驱动,数据包开发者可以进行自定义
+
+#### 村民交易
+
+- 位于 `villager_trade` 文件夹,表示用于由村民与流浪商人生成实际交易的“交易蓝图”
+- 格式:
+  - `wants`:对象,代表完成交易所需的一种物品类型与数量
+    - `id`:物品 ID
+    - `count`:可选,数字提供器,表示所需物品数量
+      - 默认为常量 `1`
+    - `components`:可选,组件映射,表示该物品所需的数据组件
+      - 默认为空映射
+  - `additional_wants`:可选对象,代表商家要求的额外物品,格式与 `wants` 相同
+  - `gives`:物品堆叠,代表交易完成后商家给予的物品
+    - 使用现有物品堆叠格式
+  - `given_item_modifiers`:可选的物品修饰器列表,用于对 `gives` 中的物品应用如附魔或药水等修改,从而为交易增加动态性而非硬编码固定值
+    - 使用现有的物品修饰器格式(亦称战利品表修饰器、物品函数、战利品表函数等)
+    - 若任一修饰器返回空物品,该条交易将被整体丢弃
+    - 尚不支持引用物品修饰器
+    - 若最终物品具有 `stored_enchantment` 组件,且其中包含 `#double_trade_price` 标签内的任一附魔,则 `wants` 的数量会加倍
+  - `max_uses`:可选,数字提供器,表示一条交易可使用的最大次数
+    - 若提供器返回值低于 1,则会被设为 `1`
+    - 默认为 `4`
+  - `reputation_discount`:数字提供器,表示需求、折扣与惩罚等因素对 `wants` 成本的影响幅度
+    - 若提供器返回值低于 0,则会被设为 `0.0`
+    - 默认为 `0.0`
+  - `xp`:可选,数字提供器,表示交易完成时商家获得的经验值
+    - 若提供器返回值低于 0,则会被设为 `0`
+    - 默认为 `1`
+  - `merchant_predicate`:谓词,表示该交易被提供所需满足的商家条件
+    - 使用现有谓词格式(亦称战利品表条件)
+    - 尚不支持引用谓词
+  - `double_trade_price_enchantments`:可选,附魔 ID、命名空间的附魔 ID 列表或带井号的附魔标签。若物品带有其中任一附魔,且 `minecraft:enchant_randomly` 或 `minecraft:enchant_with_levels` 的 `include_additional_cost_component` 为 `true`,则会加倍附加成本;且物品的 `minecraft:stored_enchantments` 组件中包含所提供的值之一
+
+示例:仅沙漠村民提供的“绿宝石 + 书 -> 附魔书”交易
+
+```JSON
+{
+  "additional_wants": {
+    "id": "minecraft:book"
+  },
+  "double_trade_price_enchantments": "#minecraft:double_trade_price",
+  "given_item_modifiers": [
+    {
+      "function": "minecraft:enchant_randomly",
+      "include_additional_cost_component": true,
+      "only_compatible": false,
+      "options": "#minecraft:trades/desert_common"
+    },
+    {
+      "function": "minecraft:filtered",
+      "item_filter": {
+        "items": "minecraft:enchanted_book",
+        "predicates": {
+          "minecraft:stored_enchantments": [
+            {}
+          ]
+        }
+      },
+      "on_fail": {
+        "function": "minecraft:discard"
+      }
+    }
+  ],
+  "gives": {
+    "count": 1,
+    "id": "minecraft:enchanted_book"
+  },
+  "max_uses": 12.0,
+  "merchant_predicate": {
+    "condition": "minecraft:entity_properties",
+    "entity": "this",
+    "predicate": {
+      "predicates": {
+        "minecraft:villager/variant": "minecraft:desert"
+      }
+    }
+  },
+  "reputation_discount": 0.2,
+  "wants": {
+    "id": "minecraft:emerald"
+  }
+}
+```
+
+#### 交易集合
+
+- 位于 `trade_set` 文件夹,表示村民与流浪商人提供的一组交易
+- 当前仅提供硬编码集合:村民为 `<profession>/level_<level>`,流浪商人为 `wandering_trader/buying`、`wandering_trader/special`、`wandering_trader/common`
+- 条目格式:
+  - `trades`:一个村民交易 ID、命名空间交易 ID 列表或带井号的村民交易标签,表示该集合包含的交易
+  - `amount`:数字提供器,表示使用该集合时要生成的交易数量
+    - 若生成数量大于可用的 `trades` 数量,则最多生成到所有 `trades` 各使用一次,除非 `allow_duplicates` 为 `true`
+  - `allow_duplicates`:布尔值,表示此集合是否允许重复使用同一村民交易来生成多个交易
+    - 默认为 `false`
+  - `random_sequence`:可选的命名随机序列,用来决定会生成哪些交易
+    - 默认使用非确定性随机序列
+
+示例:从 `#minecraft:armorer/level_1` 标签中提供 2 条交易,允许重复
+
+```JSON
+{
+  "amount": 2.0,
+  "trades": "#minecraft:armorer/level_1",
+  "random_sequence": "minecraft:trade_set/armorer/level_1",
+  "allow_duplicates": true
+}
+```
+
+### 命令
+
+#### 新增 `swing`
+
+- 新命令,用于让实体挥动手臂
+- 并非所有实体都支持挥手动画。对这些实体执行 `swing` 会成功,但客户端仅在可能时显示动画
+- 例如,这使得可以让玩家模型挥动手臂
+- 返回成功发送挥手动作的实体数量
+
+语法:`/swing <entity selector> <mainhand|offhand>`
+
+### 环境属性
+
+#### `minecraft:visual/block_light_tint`
+
+方块光的着色。方块光颜色在低光照时从深灰开始,在中等光照时由该属性染色,在高光照时变为白色。默认情况下,它提供火把那种微微偏黄的色调。该属性使用亮色效果最佳,至少一个颜色通道应为全亮。该着色全局应用于屏幕中可见的所有光源,无法分别对单个光源独立着色
+
+- 值类型:RGB 颜色
+- 默认值:`#FFD88C`
+- 修饰器:RGB 颜色修饰器
+- 可插值:是
+- 在相机位置解析
+
+#### `minecraft:visual/ambient_light_color`
+
+同时定义环境光的色调与亮度。该光照应用于 0 光照等级的世界,方块光与天空光会在其基础上叠加
+
+- 值类型:RGB 颜色
+- 默认值:主世界 `#0A0A0A`,下界 `#302821`,末地 `#3f473f`
+- 修饰器:RGB 颜色修饰器
+- 可插值:是
+- 在相机位置解析
+
+#### `minecraft:visual/night_vision_color`
+
+与环境光颜色类似使用。当夜视效果生效时,按通道对 `minecraft:visual/night_vision_color` 与 `minecraft:visual/ambient_light_color` 取最大值作为环境光颜色。夜视默认不加色调
+
+- 值类型:RGB 颜色
+- 默认值:`#999999`
+- 修饰器:RGB 颜色修饰器
+- 可插值:是
+- 在相机位置解析
+
+### 数据组件
+
+#### 新增 `minecraft:additional_trade_cost`
+
+- 临时组件,用于修改村民交易中 `gives` 物品所需的 `count`,在生成交易后即被移除
+- 格式:整数
+
+### 战利品函数
+
+- 新增 `minecraft:villager_trade` 战利品表类型,接收以下参数:
+  - `this`:提供交易的实体
+  - `origin`:该实体脚下的方块位置
+
+#### 新增 `minecraft:set_random_dyes`
+
+- 若物品在 `#dyeable` 标签中,则给其 `minecraft:dyed_color` 数据组件累加添加染料
+- 字段:
+  - `conditions`:应用该函数所需的条件
+  - `number_of_dyes`:数字提供器,表示要从 16 种染料中随机应用的数量
+    - 同一种染料可能被多次选中
+
+#### 新增 `minecraft:set_random_potion`
+
+- 随机设置物品的 `minecraft:potion_contents` 数据组件
+- 字段:
+  - `conditions`:应用该函数所需的条件
+  - `options`:可选,药水 ID、命名空间药水 ID 列表或带井号的药水标签,表示可选药水集合(
+    - 默认为 `potions` 注册表中的任意药水
+
+#### 更改 `minecraft:enchant_with_levels`
+
+现在还接受以下字段:
+
+- `include_additional_cost_component` - 可选布尔值,表示是否基于附魔的成本,为物品添加 `minecraft:additional_cost_component`
+  - 默认为 `false`
+  - 该值由 `levels` 数字提供器决定,并与用于确定附魔等级的值一致
+
+#### 更改 `minecraft:enchant_randomly`
+
+现在还接受以下字段:
+
+- `include_additional_cost_component` - 可选布尔值,表示是否基于附魔的成本,为物品添加 `minecraft:additional_cost_component`
+  - 默认 `false`
+  - 该值由 `levels` 选中的值决定,或使用通过公式计算的默认值:`2 + random(0, 5 + level * 10) + 3 * level`
+
+### 谓词
+
+#### 实体谓词
+
+玩家子谓词— 新增可选字段:`food` — 食物谓词
+- 格式:对象,字段如下:
+  - `level`:可选整型最小/最大范围,指定所需的饱食度等级
+  - `saturation`:可选浮点最小/最大范围,指定所需的饱和度等级
+
+#### 新增 `minecraft:sum`
+
+- 返回一组数字提供器之和
+- 字段:
+  - `summands`:数字提供器列表
+
+### 附魔
+
+- `post_piercing_attack` 组件不再要求玩家具有某一特定饱食度时才生效
+
+### 标签
+
+- 新增多个标签,表示村民与流浪商人用于生成其交易池的交易分组:
+  - 村民按职业与级别提供标签,格式为:`#<profession>/level_<level>`,最高 5 级
+    - 铁匠类拥有 `#common_smith/level_<level>` 标签,代表盔甲匠、武器匠与工具匠的通用交易,最高 5 级
+  - 流浪商人拥有以下标签:`#wandering_trader/buying`、`#wandering_trader/special`、`#wandering_trader/common`
+
+#### 附魔标签
+- 移除以下标签:
+  - `trades/desert_special`
+  - `trades/jungle_special`
+  - `trades/plains_special`
+  - `trades/savanna_special`
+  - `trades/snow_special`
+  - `trades/swamp_special`
+  - `trades/taiga_special`
+
+#### 药水标签
+
+- 新增 `#tradeable`:所有可出现在村民交易中的药水效果
+
+## 资源包版本 76
+
+### 光照贴图着色器更改
+
+- `lightmap.fsh` 着色器进行了大量修改:
+  - `LightmapInfo` uniform 新增两个字段:
+    - `BlockLightTint`
+    - `NightVisionColor`
+  - 移除了 `AmbientLightFactor` 字段,其值现已预乘进 `AmbientColor`
+  - `DarkenWorldFactor` 更名为 `BossOverlayWorldDarkeningFactor`
+- 在 UI 中渲染的文本与物品现在使用独立的 1x1 纯白光照贴图纹理,因此着色器不必始终保持 (15, 15) 像素为纯白