Minecraft 22w11a代碼解析
今天1.19的第一個快照發(fā)布了!看看加入了什么新東西。
一. 紅樹
新增了一種新樹木,紅樹和它的一類方塊。

現(xiàn)在版本中不存在它的樹木地物,可能是沒有做完,但是它的樹苗(紅樹胎生苗)已經(jīng)存在,只不過催熟之后是橡樹。
獲取樹苗的方式是從自然生成(即方塊狀態(tài)persistent為false)的紅樹樹葉上采集它。它的生成條件是:樹葉下方兩格都是空氣,且周圍3x3x3的方塊都不含有mangrove_propagule標(biāo)簽。它的生成和隨機(jī)刻有關(guān):當(dāng)條件滿足時,每接受一個隨機(jī)刻就有20%幾率生成。(平均341.33s)
懸掛在樹葉上的樹苗初始狀態(tài)是age=0,每接收到一個隨機(jī)刻會增加1,骨粉可以加速這個過程。當(dāng)age=4時樹苗才可以被采集下來,否則破壞它不會獲得物品。(也就是平均614.4s有一個成熟的樹苗)
采集下來的樹苗只能放置于帶有dirt標(biāo)簽的方塊、耕地、粘土或泥漿上。允許放置在水中,它是一個含水方塊,并且具有樹苗的所有特性:生成樹和使用骨粉。

關(guān)于這個有一個bug,如果樹葉下方有樹苗,當(dāng)樹葉因為distance=7而被清除時可能會讓樹苗懸空。
紅樹根是個含水方塊,但是因為6面都是完整面,所以水不會流出來。
二.泥漿
泥漿可以由含有convertable_to_mud標(biāo)簽的方塊轉(zhuǎn)換而來,用水瓶右鍵或者發(fā)射器發(fā)射水瓶到這些方塊上時就會轉(zhuǎn)變成泥漿。
泥漿碰撞箱是16x14x16像素,類似靈魂沙,實(shí)體在它上面會陷進(jìn)去,但是它的判定箱是完整方塊。
它可以和紅樹根合成沾泥的紅樹根,它的碰撞箱就是完整方塊了。除此之外還能合成泥坯和泥磚。
泥漿轉(zhuǎn)變?yōu)檎惩恋拇a并沒有加入,可能在下個快照才能加入。
三.青蛙
青蛙自然生成于沼澤群系。
它具有三個變種(括號內(nèi)是Variant的值):橙色(TEMPERATE=0)、灰白色(WARM=1)和綠色(COLD=2)。變種和它生成的群系有關(guān):群系帶有spawns_cold_variant_Frogs生成綠色青蛙,帶有spawns_warm_variant_Frogs生成灰白色青蛙,其他群系都是橙色青蛙。所以自然生成的青蛙只有橙色:沼澤不含有上述兩種群系標(biāo)簽。
碰撞箱大小是0.5x0.5x0.5格,意味著它可以穿過0.5格高的空間。
會襲擊最小大小的巖漿怪和史萊姆。襲擊最遠(yuǎn)距離1.75格,襲擊時會伸長舌頭襲擊,襲擊之后生物沒有死亡動畫,掉落物在原先生物的位置生成。襲擊史萊姆時掉落粘液球;襲擊巖漿怪掉落Froglight,具體品種和青蛙本身屬于什么變種有關(guān)。

青蛙能跳的很高,且它們本身具有額外的5格緩沖高度(類似跳躍提升V的摔落減傷效果)。
青蛙會跟隨手上拿著粘液球的玩家,使用粘液球可以使青蛙繁殖,繁殖會有300s冷卻時間。繁殖的兩只青蛙有一只會在周圍一個上方是空氣的水方塊上生成青蛙卵。青蛙卵很脆弱,當(dāng)下方方塊不再是水方塊或者被下落的方塊砸中就會被破壞。
青蛙卵將在3600-12000計劃刻后孵化生成2~6只蝌蚪,生成的蝌蚪都位于卵方塊下0.5格的1x1區(qū)域中。蝌蚪在24000刻后變成青蛙,喂食粘液球可以加速,變種分類取決于變成青蛙的群系。
四.其他修改
Sculk的世界生成斑塊
現(xiàn)在和生物死亡催化統(tǒng)一,只是參數(shù)不同。
更新抑制失效
由于NC更新代碼重寫,更新抑制依賴的棧溢出不能實(shí)現(xiàn),因此更新抑制完全失效。
可以看到現(xiàn)在的更新使用了一個虛擬棧,虛擬棧不會產(chǎn)生StackOverflowError并且能控制棧深度,因此更新抑制基本已經(jīng)無法使用了。

代碼源:22w11a, Mojang Mapping
反混淆:MCDynamicExchanger 1.0 beta.9
反編譯:CFR 0.152
有錯誤可以在評論區(qū)指出。