Skip to content

技术性更新日志(精简版)

⚠️本文正文部分翻译自misode的“技术性更新日志”页面: https://misode.github.io/changelog

本文为精简版,仅列出对旧版本有破坏性的改动(即breaking)参阅完整文档

前言

由于最近数个版本对技术侧的改动较多,对数据包兼容性的影响较大,可能会出现一个教程或资源只能在特定版本使用的情况,对于还不熟悉这些数据包特性的开发者来说可能会有些困惑。因此在此列出会导致旧版特性不兼容的破坏性更新。

读者可借此参阅教程在你的目标版本的可用性。

改动日志以正式版本为分类条目,降序排列。

迁移指南

我的世界 JE1.21 数据包文件夹名称改变

正文

1.21.4

数据包:

  • 命令:
    • trial粒子加入必选字段duration;
  • nbt:
    • 修改了TNT矿车的NBT:
      • TNTFuse重命名为fuse
    • custom_model_data组件更改为复合标签,set_custom_model_data修饰器同步更新;
  • 数据包其他组分:
    • 移除了#trim_templates物品标签。
    • 移除了trim_material注册表中的item_model_index字段;
    • equippable组件中的model字段现已重命名为asset_id

资源包:

  • 引入新格式以描述物品模型

  • toast/system精灵图外观现在已更新至使用标准九宫格划分方式;
  • toast/tutorial精灵图现在被缩放为更高的弹窗;
  • advancements/box_obtainedadvancements/box_unobtainedGUI纹理现在使用九宫格划分方式变换尺寸;
  • 与物品栏中盔甲槽一类的空槽位纹理现已从item移动到gui/sprites/container/slot目录,并重命名;
  • 织布机、酿造台、马和羊驼物品栏GUI中的空槽位精灵图现已从背景拆分并移动;

1.21.2

数据包:

  • 命令:
    • 栓绳结,浮漂和闪电不再能通过/ride骑乘;
    • 属性id不再有generic. player.zombie.前缀;
  • nbt:
    • 重命名fire_resistant物品组件为damage_resistant,并加入types字段;
    • potion_contents物品组件加入custom_name字段;
    • 将船和箱船的实体类型拆分为每种材质独立实体;
    • 容器方块实体的Lock字段被重命名为lock,并支持物品谓词;
  • 数据包组分:
    • 进度:
      • 重命名killed_by_crossbow判据为killed_by_arrow;
    • 附魔:
      • 重命名附魔类型damage_itemchange_item_damage,并支持负值;
    • 战利品表、谓词、物品修饰器:
      • 移除战利品表empty;
      • 移除了minecraft:boat实体子谓词;
    • 配方:
      • 配方原料格式修改:
        • { "item": "<item id>" } 修改为 "<item id>"
        • { "tag": "<tag id>" } 修改为 "#<tag id>"
        • 列表格式不再支持tag
    • 世界生成:
      • 移除了雕刻器类型carvers,现在可直接列出雕刻器;

资源包:

  • 纹理:
    • 所有与装备相关的纹理现移动到了textures/entity/equipment的子目录中。
  • 着色器:
    • rendertype_entity_glint_direct重命名为rendertype_entity_glint
    • rendertype_entity_translucent_cull重命名为rendertype_item_entity_translucent_cull
    • 用于后处理效果的程序定义(assets/<命名空间>/shaders/program/<名称>.json)现与核心着色器定义(assets/<命名空间>/shaders/core/<名称>.json)一致化:
      • 移除了没有实际作用的blend字段。
      • 移除了attributes字段,其顶点属性Position将永被绑定。
      • Uniform现与为核心着色器提供的Uniform合并,其中Time被重命名为GameTime
    • 现在后处理管线程序由assets/<命名空间>/shaders/post移动到assets/<命名空间>/post_effect
    • 处理管线使用的顶点和片段着色器现由assets/<命名空间>/shaders/program移动到assets/<命名空间>/shaders/post
    • 后处理渲染过程name现被重命名为program,且需要命名空间ID。

1.21

数据包:

  • nbt:
    • 移除了箭类实体的 ShotFromCrossbow 字段
  • 数据包组分:
    • 战利品表、谓词、物品修饰器:
      • 诸如谓词的entity键的值重命名:
        • killer -> attacker
        • direct_killer -> direct_attacker
        • killer_player -> attacking_player
      • 谓词中的 enchantment 字段重命名为 enchantments
      • 重命名random_chance_with_looting 条件为random_chance_with_enchanted_bonus,并修改如下字段:
        • 移除looting_multiplier字段;
        • chance 现在为等级依赖函数;
        • 加入enchantment字段;
      • 加入enchantment_active_check条件;
      • 重命名 looting_enchant 函数为 enchanted_count_increase ,并加入 enchantment 字段;
      • enchant_randomly 函数下修改如下字段:
        • enchantments 字段重命名为 options;
        • 加入布尔值字段 only_compatible
      • enchant_with_levels 函数下修改:
        • 移除了 treasure 字段;
        • 加入 options 字段;
      • copy_name函数更改:重命名了字段source的枚举值:
        • killer重命名为attacking_entity
        • killer_player重命名为last_damage_player

1.20.5

数据包:

  • 命令:
    • 粒子:
      • /particle指令格式修改,太多了懒得列,去wiki看吧
      • 拆分粒子gust_emittergust_emitter_largegust_emitter_small
    • 属性:
      • 重命名属性:
        • generic.block_interaction_rangeplayer.block_interaction_range
        • generic.entity_interaction_rangeplayer.entity_interaction_range
      • 移除属性:horse.jump_strength
    • 命令最大长度现在为2000000(2百万)字符;
  • 实体和NBT:
    • 修改了区域效果云实体的 Particle 字段以和命令/世界生成格式一致;
    • 药水箭的Potioncustom_potion_effects字段被合并在item标签内;
    • 修改药水效果云的效果字段以与potion_contents 组件匹配;
    • 修改旗帜的方块实体字段以和banner_patterns 组件匹配;
    • 修改蜂巢的方块实体字段以和bees 组件匹配;
    • 重命名部分方块和实体的NBT字段:
      • 位置nbt:{X:1,Y:2,Z:3}[I;1,2,3]
      • 蜜蜂: FlowerPos and HivePosflower_pos and hive_pos
      • 蜂巢: FlowerPosflower_pos
      • 末影水晶: BeamTargetbeam_target
      • 可被栓绳牵引的生物: Leashleash
      • 袭击生物: PatrolTargetpatrol_target
      • 末地传送门: ExitPortalexit_portal
      • 流浪商人: WanderTargetwander_target
    • 移除了部分药水效果在大于127级时产生的反效果行为;
  • 物品组件
    • 物品的NBTtags由新的结构化物品组件替代:

      • Damage:12 -> damage=12
      • RepairCost:12 -> repair_cost=12
      • Unbreakable:1b -> unbreakable={}
      • Enchantments:[{id:"sharpness",lvl:2}] -> enchantments={levels:{sharpness:2}}
      • StoredEnchantments -> stored_enchantments
      • display:{Name:'"hello"'} -> custom_name='"hello"'
      • display:{Lore:['"hello"']} -> lore=['"hello"']
      • CanDestroy:["stone"] -> can_break={blocks:"stone"}
      • CanPlaceOn:["stone"] -> can_place_on={blocks:"stone"}
      • display:{color:16711680} -> dyed_color={rgb:16711680}
      • AttributeModifiers:[] -> attribute_modifiers={modifiers=[]}
      • Charged:1b,ChargedProjectiles:[{id:"arrow"}] -> charged_projectiles=[{id:"arrow"}]
      • Items:[] (bundle) -> bundle_contents=[]
      • display:{MapColor:16711680} -> map_color=16711680
      • Decorations:[] (filled map) -> map_decorations={}
      • map:1 -> map=1
      • CustomModelData -> custom_model_data
      • Potion:"invisibility",CustomPotionColor:16711680,custom_potion_effects:[] -> potion_contents={potion:"invisibility",custom_color:16711680,custom_effects:[]}
      • pages:["hello"] (book and quill) -> writable_book_content={pages:["hello"]}
      • pages:['"hello"'],title:"Title",author:"Misode",generation:1,resolved:1b (written book) -> written_book_content={pages:['"hello"'],title:"Title",author:"Misode",generation:1,resolved:true}
      • Trim={...} -> trim={...}
      • effects:[] (suspicious stew) -> suspicious_stew=[]
      • HideFlags -> split to the different components as well as hide_additional_tooltip component
      • DebugProperty -> debug_stick_state
      • EntityTag:{...} -> entity_data={...}
      • bucketed mobs data -> bucket_entity_data={...}
      • instrument:"ponder_goat_horn" -> instrument="ponder_goat_horn"
      • Recipes:[] (knowledge book) -> recipes=[]
      • LodestonePosLodestoneDimension, and LodestoneTracked -> lodestone_target={pos:[13,64,-43],dimension:"the_nether"}
      • Explosion (firework star) -> firework_exlosion={}
      • Fireworks:{Explosions:[],Flight:1} (firework rocket) -> fireworks={explosions:[],flight_duration:1}
      • SkullOwner:{Name:"Steve"} -> profile={name:"Steve"}
      • BlockEntityTag:{note_block_sound:"ambient.cave"} -> note_block_sound="ambient.cave"
      • BlockEntityTag:{Base:2} -> base_color="magenta"
      • BlockEntityTag:{Patterns:[]} -> banner_patterns=[]
      • BlockEntityTag:{sherds:[]} -> pot_decorations=[]
      • BlockEntityTag:{Items:[]} (shulker box) -> container=[]
      • BlockEntityTag:{Bees:[]} -> bees=[]
      • BlockEntityTag:{Lock:"test"} -> lock="test"
      • BlockEntityTag:{LootTable:"foo",LootTableSeed:123} -> container_loot={loot_table:"foo",seed:123}
      • BlockEntityTag:{...} -> block_entity_data={...}
      • BlockStateTag:{...} -> block_state={...}
    • 加入了物品组件enchantment_glint_override ;
    • 物品格式Count重命名为count
  • 数据包组分:
    • 战利品表:
      • Nested lists are no longer supported in loot function lists.
      • 战利品表抽取项loot_table(从提供的嵌套战利品表返回所有物品)现在有以下语法:value可以是:
        • 一个命名空间ID,指对另一个战利品表的引用。
        • 完整的战利品表,格式与独立文件的战利品表相同。
    • 谓词:
      • 物品谓词修改:
        • 移除了 tag 字段,items 字段现在支持标签;
        • potion 字段重命名为 potions;
        • nbt 字段重命名为 custom_data;
      • 方块谓词修改
        • 移除 tag 字段,blocks 字段现在支持标签;
      • 流体谓词fluid 重命名为 fluids
      • 实体谓词type支持标签;
      • 位置谓词修改:
        • biome 重命名为 biomes ,并支持群系标签;
        • structure 重命名为 structures ,并支持结构标签;
      • 修改物品谓词的predicates下的子谓词:
        • durability -> damage 子谓词;
        • enchantments -> enchantments 子谓词;
        • stored_enchantments -> stored_enchantments 子谓词;
        • potions -> potion_contents 子谓词;
        • custom_data -> custom_data 子谓词;
    • 物品修饰器:
      • 重命名物品修饰器函数
        • set_nbtset_custom_data
        • copy_nbtcopy_custom_data
      • 重命名/attribute命令的operation字段:
        • addadd_value
        • multiply_baseadd_multiplied_base
        • multiplyadd_multiplied_total
      • 移除了 set_contents 物品修饰器函数中的 type 字段,并加入 component 字段;
      • set_attributes物品修饰器函数加入replace字段;
      • set_lore物品修饰器函数下replace字段重命名为mode;
      • set_written_book_pages函数:pages现在是一个JSON对象而不再是一个JSON文本。
    • 配方:
      • 配方的产物栏现在支持指定物品组件;
    • 标签:
      • 修改:
        • 实体标签 punchable_projectiles 重命名为 redirectable_projectile
        • 重命名 axolotl_tempt_itemsaxolotl_food;
      • 移除:
        • 移除物品标签tools
        • 移除实体标签deflects_arrowsdeflects_tridents
    • 世界生成:
      • 用于worldgen定义的整数和浮点数提供器不再包装在type旁的额外value字段中。

资源包:

  • 纹理:
    • 将地图装饰图标从以前的map_icons.png中分离为从textures/map/decorations/目录中加载的图集;
  • 字体:
    • ttf字体提供器的shift字段的值现在被限制在-512到512之间;
  • 着色器:
    • 后处理着色器 blur 重命名为 box_blur;
    • 新增entity_outline_box_blur 着色器;

1.20.3

数据包:

  • 命令:
    • /function命令不再返回执行的命令条数;
    • 游戏规则 maxCommandChainLength 现在更严格计数;
  • NBT:
    • 重命名方块草及其对应物品的注册名,从minecraft:grass重命名为minecraft:short_grass
    • 将三叉戟(实体)的Trident 字段重命名为 item;
    • TNT实体的nbt数据:Fuse 重命名为 fuse; 添加 block_state 字段;

资源包:

  • 纹理:
    • .png现在是唯一支持的纹理格式;

1.20.2

数据包:

  • 命令:
    • 加入了函数宏,可以在函数中加入宏参数传入函数,以实现动态函数;
    • 可以在一行命令的末尾用反斜杠\表示换行,以支持多行单指令,增加可读性;
  • 调试:
    • 现在命令记忆功能跨存档保存50条,可在游戏文件夹的command_history.txt文件中找到;
  • NBT:
    • 生物NBT的状态效果id由数字id改为命名空间id(字符串)
    • 许多状态效果相关的实体NBT键名从驼峰格式改为蛇形格式:
      • 生物状态效果字段:
        • Id -> id
        • Ambient -> ambient
        • Amplifier -> amplifier
        • Duration -> duration
        • ShowParticles -> show_particles
        • ShowIcon -> show_icon
        • HiddenEffect -> hidden_effect
        • FactorCalculationData -> factor_calculation_data
      • 药水和药水箭:
        • CustomPotionEffects -> custom_potion_effects
      • 状态效果云和迷之炖菜:
        • Effects -> effects
        • EffectId -> id
        • EffectDuration -> duration
      • 哞菇:
        • EffectId and EffectDuration -> stew_effects
      • 生物状态效果:
      • ActiveEffects -> active_effects
      • 信标:
        • Primary -> primary_effect
        • Secondary -> secondary_effect

资源包:

  • 纹理:
    • 文本编辑框现在是一张位于widget/text_fieldwidget/text_field_highlighted的九宫格切分的精灵图。
    • 列表和编辑框的滚动条现在是一张位于widget/scroller的九宫格切分的精灵图。
    • realms命名空间的纹理被移入minecraft命名空间内;
    • 所有含有多个部件贴图的GUI纹理现在都被拆分为单独的贴图,位于textures/gui/sprites目录下。
    • villager2.png被重命名为villager.png
    • 辅助功能、语言和Realms新闻的按钮图标现在是单独的文件,不再各自附于按钮的纹理之上。

1.20

数据包:

  • 数据包组分:
    • 进度:
      • placed_blockitem_used_on_block, 和 allay_drop_item_on_block 进度触发器下所有字段并入location 字段;现在该字段接受战利品表谓词。
    • 战利品表、谓词、物品修饰器:
      • 加入all_of条件, alternative 条件重命名为 any_of
    • 标签:
      • 方块标签replaceable_plants 拆分为replaceablereplaceable_by_trees
    • 世界生成:
      • 移除了结构后处理器ruleoutput_nbt 字段,新增了block_entity_modifier 作为替代。

资源包:

  • 字体:
    • 移除字符提供器legacy_unicode;

1.19.4

数据包:

  • 实体和NBT
    • 加入(方块、物品、文本)展示实体、交互实体;
  • 数据包组分
    • 战利品表、谓词、物品修饰器:
      • 伤害类型谓词修改,移除了原先判据,改用新的伤害类型数据判定,使用tags字段判定;

1.19.3

数据包:

  • 命令:
    • 修改了命令/publish的格式
  • 数据包组分:
    • 配方:
      • 配方文件内加入必选字段 category
    • 标签:
      • 移除方块标签overworld_natural_logs;
    • 世界生成:
      • 移除template_poolname字段;

资源包:

  • 纹理:
    • entity/player/(slim|wide)新增了各默认玩家皮肤;移除了entity/steveentity/alex
    • 修改了gui/container/creative_inventory/tabs纹理

1.19.1

1.19

数据包:

  • 命令:
    • 猫变种由数字id改为命名空间id;
    • 状态效果 ID 的类型由字节型改为整型;
  • 进度:
    • 进度触发器 locationslept_in_bedhero_of_the_villagevoluntary_exilelocation 字段被移入 player.location 位置;
  • 战利品表、谓词、物品修饰器:
    • 位置谓词字段 feature 重命名为 structure
  • 世界生成:
    • 移除地物 ice_patchice_patch 并由地物 disk 代替;
    • 树根放置器格式修改:
      • y_offset 重命名为 trunk_offset_y;
      • 字段 max_root_widthmax_root_lengthrandom_skew_chancecan_grow_throughmuddy_roots_inmuddy_roots_provider 移入 mangrove_root_placement 对象下;
      • 加入字段 above_root_placement ;
    • 地物 glow_lichen 重命名为 multiface_growth ;
    • block_rot 处理器的字段 rottable_blocks现在需要一个#前缀;
    • 移除结构字段 adapt_noise ;
    • 移除密度函数 slide,由 addmuly_clamped_gradient 代替;
    • 移除噪声设置字段 noise.samplingnoise.top_slidenoise.bottom_slide,并移入密度函数;
    • 维度类型不再内联于维度数据中;
    • 移除区块噪声生成器的 seed 字段;
    • 移除密度函数 terrain_shaper_spline 并移除密度函数 splinemin_valuemax_value 字段;
    • 移除生物群系字段 category
    • worldgen/configured_structure_feature 文件夹移入 worldgen/structure 文件夹;

1.18.2

数据包:

  • 命令
    • locate命令现在接受已配置的结构地物ID作为参数而不是结构类型;
    • locate命令和locatebiome命令现在支持标签作为参数;
  • 世界生成
    • 加入结构集JSON文件,取代了噪声字段中的structures字段;
    • 移除了噪声设置中的字段noise_caves_enablednoodle_caves_enabled
    • 一些标签字段现在要求在ID前面加上#,但是它们暂不接受元素列表:
      • dimension_type中的infiniburn
      • feature.geode配置中的blocks.cannot_replaceblocks.invalid_blocks
      • feature.vegetation_patchfeature.waterlogged_vegetation_patch配置中的replaceable
      • feature.root_system配置中的root_replaceable
      • structure_processor.protected_blocks中的value
    • 修改了噪声设置中structures的格式;

1.18

数据包:

  • 命令

    • 移除了记分项、记分板名称、队伍名称的名称长度限制;
  • NBT

    • 将刷怪笼的SpawnPotentials格式更改为:
      { 
          weight: <int>, 
          data: {
          	entity: {...}, 
      		custom_spawn_rules: {...} 
      	} 
      }
    • 将刷怪笼的SpawnData字段的内容移动到SpawnData.entity
  • 进度

    • 将进度谓词中的nether_travelentered重命名为start_position,移除了字段exit
  • 物品修饰器

    • 现在set_contentsset_loot_table物品修饰器函数需要type字段
  • 标签

    • 将方块标签lava_pool_stone_replaceables重命名为lava_pool_stone_cannot_replace
  • 世界生成

    • 加入用于地物放置的方块谓词;
    • 加入了已放置的地物;
    • 加入了表面规则;
    • 加入噪声JSON数据文件;
    • 移除了地表生成器;
    • 移除了方块放置器;

1.17

数据包:

  • 命令
    • 加入/item命令,取代了/replaceitem命令;
    • /give命令能给予的物品上限现在是100;
  • 进度
    • 在触发器 effects_changed中加入条件 source
  • 战利品表和谓词
    • 把谓词中的所有物品条件字段的名称从item修改为了items,所有方块条件字段的名称从block修改为了blocks
  • 加入了物品修饰器
  • NBT
    • fireball的字段 ExplosionPower现在是byte而不是int;
    • 史莱姆的字段 Size现在上限是126;
    • 药水云的字段 Radius现在上限是32;
  • 标签
    • 重命名方块标签: snow_step_soundsinside_snow_step_sounds
  • 方块
    • 铁轨能含水了,水不再破坏铁轨;
    • 将炼药锅拆分为cauldron(空的炼药锅), water_cauldron(装水的)和 lava_cauldron(装岩浆的);
    • 重命名 grass_pathdirt_pathgrimstone deepslate
  • 实体
    • 加入了marker
  • 其他
    • 加入了游戏事件;
    • 使用F3+L可以生成一份性能报告,储存在 .minecraft/debug/profiling/下;
    • 文本组件中的目标选择器组件和NBT组件可以使用字段 separator指定分隔符;

资源包:

  • 着色器
    • 现在使用OpenGL 3.2渲染,可使用资源包替换原版着色器;
    • 新增资源包目录shaders/coreshaders/include
  • 其他
    • 制作者名单现在是json格式储存而不是txt;

1.16.2

数据包:

  • 世界生成:
    • 自定义世界生成和维度设置现在在数据包中使用相同的文件夹模式(namespace/<类型>/resource.json),与其他资源保持一致。

1.16

数据包:

  • 命令:
    • 属性命名由驼峰命名改为下划线命名;
  • NBT:
    • 实体的UUID值现在改为4元素整数数组;
  • 数据包组分:
    • 进度:
      • 移除进度触发器 safely_harvest_honey
      • 进度内容location, slept_in_bed, hero_of_the_village, voluntary_exile 字段被放入location 字段下;
    • 世界生成:
      • 加入实验性玩法“自定义世界”;
  • 其他:
    • 数据包加载优化:
      • 若加载失败,则修改不会被应用;
      • 如果进入世界时,已加载的数据包出错,会弹出“安全模式”选项;
      • 仅在数据包成功加载后修改数据包列表;
      • 数据包现在可以在世界生成之前指定;
      • 现在若数据包组分缺失(如卸载了vanilla数据包),将阻止玩家加载世界。