Cat_Anchor 发表于 2025-11-11 22:42:32

无框玻璃板性能重大突破与自制乐谱格式

本帖最后由 Cat_Anchor 于 2025-11-11 22:48 编辑

今天是我的期中考试的日子。数学选择第二题椭圆焦距忘乘 2 了,痛失 5 分,气死我啦!

> (^\_^)

回到房间里,我越想越气,一气之下就突破了无框玻璃板的性能问题……

> ヾ(@^▽^@)ノ

其实也不算复杂,不过是方块特征、骨骼可见性与方块剔除的综合应用,和椭圆与双曲线简单几何性质的应用一样。

> 注:椭圆、双曲线与抛物线都属于圆锥曲线,高二的我学完了前两个,还没学第三个。

> 实则难死我了…… ╰(⇀‸↼)╯

![无框玻璃板](https://pic1.imgdb.cn/item/6913305c3203f7be00f4a464.jpg)(无框玻璃板。)

![无框玻璃测试](https://pic1.imgdb.cn/item/691330483203f7be00f4a3fa.jpg)(无框玻璃压力测试,测试极端情况下的处理能力。处理速率大约是 18000 方块 / s。)

![无框玻璃板测试](https://pic1.imgdb.cn/item/6913305b3203f7be00f4a45d.jpg)(无框玻璃板压力测试。处理速率大约是 2000 方块 / s。)

无框玻璃的处理速率大约是无框玻璃板的 9 倍,因为对于后者,我们需要用 SAPI 手动设置两个方块状态。也许其实不用,但是相关接口缺乏文档,基岩开发 wiki 上没有,官方文档上也没有……

> •﹏•

---

还有一点,那就是无框玻璃板有多个部分的碰撞箱,得益于——新的接口!

> (^▽^) ✨🎉🎊🎉🎊🎉✨

其实最显著的变化是,我们现在终于可以复刻原版楼梯了。以前复刻出的自定义楼梯的碰撞箱都不完整,大多是半砖形状的,根本不能做出楼梯的效果。现在不一样了,我们可以创建两个部分的碰撞箱,三个部分的也行。

另外,我们终于不用再依赖一个关于 `minecraft:transformation` 的漏洞来实现自定义栅栏了,好耶!

> \(^▽^@)ノ 🚀🔥🎉🎉

---

目前的[万象添补](https://klpbbs.com/thread-153081-1-1.html)已经开发到了 `0.17.6`,而现在可以获得的是 `0.17.1`。我们来看看这些版本间的变化:

> * 0.17.2:主要以修复和加入实用命令为主,并引入了方块平铺器的自动化功能。

> * 0.17.3 & 0.17.4:重点加入了多种新作物、食物和对应的方块,并修复了它们的属性和纹理。

> * 0.17.5:这是一个重大更新,修复了关键问题,并引入了完整的乐谱编写和播放系统,大大扩展了附加包的可玩性。

> * 0.17.6:对乐谱系统进行了优化,并显著提升了无框玻璃板的性能。

这些都是我让 AI 总结的,因为我的更新日志写得太长了。

> ✿✿ヽ(°▽°)ノ✿

这些功能中,花了我最多时间的肯定是乐谱播放系统。为了做到在游戏中编写乐谱并播放,我直接设计了一种新的乐谱格式,它的名字是——Cat Anchor's Jazz Format, *.caj
这是种相当简单的乐谱格式,和简谱差不多。让我们来看看它的示例:

|1|

一个四分音符!

好吧,这个示例可能过于简单了(不过确实是有效的 CAJ 乐谱)。我们来看一个更加复杂的乐谱(仍然很简单):

标题
作者
Time: 4/4
Key: C
BPM: 150
Tone: 'note.harp+note.bell+note.pling+note.xylophone'
{测试}

[ (5v 1)_ 3 0_ (3 3)_ 3_ | 0 (2 3 2 1)_ 0 | (5v 1)_ 3 0_ (1 3)_ 5_ | 0 (4 3)_ 2 0 | (5 4)_ 3 0_ (3 2)_ 1_ | 0 (2 3 5 4)_ 0 | (6v 6v)_ 5v 0_ (7v 1)_ 2_ | 0 (3 2)_ 1 0 | (5v 1)_ 3 0_ (3 3)_ 3_ | 0 (2 3 2 1)_ 0 ]

这也是在游戏中使用 `getcajbooksfromstring` 命令获得的乐谱,它的五线谱大概长这样:![示例五线谱](https://pic1.imgdb.cn/item/69134a923203f7be00f52bb0.jpg)

至于这种格式的具体书写规则,可以查阅更新日志(等到我更新附加包的时候)。

CAJ 不是一种封闭的格式,我用 AI 制作了 MIDI 到 CAJ 的转换器。因为 CAJ 格式比较简单,它也是一种为在 Minecraft 中播放音乐而设计的格式,这种转换在前后听起来大概率有很大不同,不过基本旋律是可以转换好的。

---

其实这种乐谱格式的名称来源于我很久之前加入又移除的文件,`jazz.js`,它最初用于实现饱和度与消耗度渲染。现在我重新加入了这个文件,给了它新的功能。为什么一开始这个文件叫这个名字?因为当时我不知道那个文件叫什么名字好,于是我把命名文件的窗口截屏发给了 isss,得到的就是 jazz。现在我用这个名字实现了乐谱的解析与播放,但是给对应的方块起名时,我又犯了难。于是在 `0.17.5` 中,那个方块的名字就是能播放乐谱的方块
我得再请 isss 给它起一个中文名
但是后来,又问了 isss 之后……

> isss: 图片

于是在 `0.17.6`(也就是现在这个版本)中,这个方块的名字就被我改成了“图片方块”,相当好,然而也相当有误导性的名字,误导性和 `minecraft:destructible_by_mining` 组件的 `seconds_to_destroy` 与 `destroy_speed` 字段指的其实都是硬度有的一拼。

---

好了,明天还有一天期中考试,而且一上来就要考难度顶天的化学,我们化学老师用一小时都做不完的化学了。不得不说,我的签名档里 isss 那句话的含金量还在上升。

Sakarwei 发表于 2025-11-12 23:16:46

回头看看才会发现,原来自己走过的路有那么长!


诶,说道CAJ我只想到知网那东西文献
页: [1]
查看完整版本: 无框玻璃板性能重大突破与自制乐谱格式