欢迎光临散文网 会员登陆 & 注册

23w12a的一些代码细节

2023-03-24 21:28 作者:g2245820920  | 我要投稿

1.20的第一个快照23w12a于昨天发布,加了一吨新特性。本文介绍一些代码中发掘的细节。

对Decorated Pot掉落的改动

1.19.4中,Decorated Pot的物品掉落没有使用战利品表,而是直接糊了一段生成物品实体的代码上去。由于这个方块的四个面的信息是储存在方块实体里的,直接用战利品表产生掉落不好实现。这段临时代码有很多bug,比如创造模式破坏没有声音,掉落物没有捡起来的延迟,用debug stick改方块状态就会刷出来一个掉落物等。

23w12a通过一些datapack的魔法,将decorated pot的掉落写到战利品表里了。除了修复了临时代码的各种问题后,方块的onBreak方法也精简了很多:

注意到这个版本里decorated block多了一个cracked方块状态。这个状态用于控制decorated pot被破坏的声音(手和工具破坏的声音不一样)。这个方块状态只当被工具破坏时被设为true,随后这个方块就消失了。这个方块状态不会改变decorated block的外表。

除此以外,decorated pot没有很大改动。

Pitcher Pod的碰撞判定 

Pitcher pod作物的那个盆是有碰撞的,并且会向下延伸1像素:

这使它成为唯一一个向下延伸碰撞的方块;此前有向上延伸的栅栏。目前尚不知道是否为特性。ilmango的快照视频(https://www.youtube.com/watch?v=GXWeDQHkaUo)中演示了用这个特性制作凋灵笼,但视频中的设计用到了成熟的pitcher crop可以在没有耕地时生存的特性。这个特性已被确认为bug且很可能在随后的版本中修复(MC-261204)。

Sculk Sensor的紫水晶共振声音

众所周知23w12a加入了紫水晶共振同频段sculk sensor振动的功能。当共振发声时,紫水晶会发出一个对应的声音。而这个声音的频率是根据振动的频率决定的:振动频率越高,声音越尖锐。

(虽然但是,为什么用了note block的方法啊喂 你们soundcategory没有自己的方法吗)

这个frequency list首先是一坨0-24之间的数字,然后借用note block的一个方法(恰好也是0-24直接)转换成对应的pitch,frequency再选择对应的pitch播放。顺便,那个方法是这样计算频率的:

%5Ctext%7Bpitch%7D%20%3D%202%5E%7B%5Cfrac%7B%5Ctext%7Bnote%7D%20-%2012%7D%7B12%7D%7D

建议扔mathhelper里。

Sniffer Egg孵蛋

23w12a加了一个很大的sniffer egg,但孵蛋的方法却很水。

当这个方块被添加时,它会检查下面是不是HatchBooster(moss),然后再设置对应的时间。以及那个令人迷惑的除以3,可以直接用 ? 4000 : 8000代替。毕竟代码是给developer读的,不是给player读的,这种可读性完全可以省略。此后还会加一个300tick的随机。Sniffer Egg和frog spawn一样使用scheduled tick而不是random tick。值得一提的是frog spawn使用scheduled tick被mj标记成了bug(MC-249308)。sniffer egg也有一个ticket,但是截至目前只是moderator confirmed状态,并没有mj priority(MC-261250)。

当被scheduledtick到时,检查age是否为2,不是的话就增加age并再schedule一次,否则产生一个小的snifflet.

23w12a的一些代码细节的评论 (共 条)

分享到微博请遵守国家法律