Minecraft 22w11a代码解析
今天1.19的第一个快照发布了!看看加入了什么新东西。
一. 红树
新增了一种新树木,红树和它的一类方块。

现在版本中不存在它的树木地物,可能是没有做完,但是它的树苗(红树胎生苗)已经存在,只不过催熟之后是橡树。
获取树苗的方式是从自然生成(即方块状态persistent为false)的红树树叶上采集它。它的生成条件是:树叶下方两格都是空气,且周围3x3x3的方块都不含有mangrove_propagule标签。它的生成和随机刻有关:当条件满足时,每接受一个随机刻就有20%几率生成。(平均341.33s)
悬挂在树叶上的树苗初始状态是age=0,每接收到一个随机刻会增加1,骨粉可以加速这个过程。当age=4时树苗才可以被采集下来,否则破坏它不会获得物品。(也就是平均614.4s有一个成熟的树苗)
采集下来的树苗只能放置于带有dirt标签的方块、耕地、粘土或泥浆上。允许放置在水中,它是一个含水方块,并且具有树苗的所有特性:生成树和使用骨粉。

关于这个有一个bug,如果树叶下方有树苗,当树叶因为distance=7而被清除时可能会让树苗悬空。
红树根是个含水方块,但是因为6面都是完整面,所以水不会流出来。
二.泥浆
泥浆可以由含有convertable_to_mud标签的方块转换而来,用水瓶右键或者发射器发射水瓶到这些方块上时就会转变成泥浆。
泥浆碰撞箱是16x14x16像素,类似灵魂沙,实体在它上面会陷进去,但是它的判定箱是完整方块。
它可以和红树根合成沾泥的红树根,它的碰撞箱就是完整方块了。除此之外还能合成泥坯和泥砖。
泥浆转变为粘土的代码并没有加入,可能在下个快照才能加入。
三.青蛙
青蛙自然生成于沼泽群系。
它具有三个变种(括号内是Variant的值):橙色(TEMPERATE=0)、灰白色(WARM=1)和绿色(COLD=2)。变种和它生成的群系有关:群系带有spawns_cold_variant_Frogs生成绿色青蛙,带有spawns_warm_variant_Frogs生成灰白色青蛙,其他群系都是橙色青蛙。所以自然生成的青蛙只有橙色:沼泽不含有上述两种群系标签。
碰撞箱大小是0.5x0.5x0.5格,意味着它可以穿过0.5格高的空间。
会袭击最小大小的岩浆怪和史莱姆。袭击最远距离1.75格,袭击时会伸长舌头袭击,袭击之后生物没有死亡动画,掉落物在原先生物的位置生成。袭击史莱姆时掉落粘液球;袭击岩浆怪掉落Froglight,具体品种和青蛙本身属于什么变种有关。

青蛙能跳的很高,且它们本身具有额外的5格缓冲高度(类似跳跃提升V的摔落减伤效果)。
青蛙会跟随手上拿着粘液球的玩家,使用粘液球可以使青蛙繁殖,繁殖会有300s冷却时间。繁殖的两只青蛙有一只会在周围一个上方是空气的水方块上生成青蛙卵。青蛙卵很脆弱,当下方方块不再是水方块或者被下落的方块砸中就会被破坏。
青蛙卵将在3600-12000计划刻后孵化生成2~6只蝌蚪,生成的蝌蚪都位于卵方块下0.5格的1x1区域中。蝌蚪在24000刻后变成青蛙,喂食粘液球可以加速,变种分类取决于变成青蛙的群系。
四.其他修改
Sculk的世界生成斑块
现在和生物死亡催化统一,只是参数不同。
更新抑制失效
由于NC更新代码重写,更新抑制依赖的栈溢出不能实现,因此更新抑制完全失效。
可以看到现在的更新使用了一个虚拟栈,虚拟栈不会产生StackOverflowError并且能控制栈深度,因此更新抑制基本已经无法使用了。

代码源:22w11a, Mojang Mapping
反混淆:MCDynamicExchanger 1.0 beta.9
反编译:CFR 0.152
有错误可以在评论区指出。