UID82897性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-7-23最后登录1970-1-1
| 本帖最后由 Cat_Anchor 于 2024-1-3 18:08 编辑
嗯,那么,这个帖子将成为首个介绍我的“主附加包”的帖子。
那个附加包是2022年1月开始开发的,也是我第一个附加包,它的大小从一开始的几十KiB增长到峰值10多MiB,后来又因为种种原因降到目前的3~4MiB。至今,已经有了上千的方块、配方,几百物品、实体、地物等。它已经存在将近两年了,我目前主要开发它,所以叫“主附加包”。(最初的版本。所有版本我都做好了留档工作。)
而这个附加包的名字是我一开始就想好的。灵感来源于数学上的“补角”这个概念,这里的“补”即是supplementary,我把这个单词拿来用作附加包名称,也用作内容的命名空间,所以我的附加包里的东西的ID都是supplementary:***。
那么,我已经发布的那些附加包其实都是为这个附加包服务的。一开始,附加包体积小,内容少,开发也方便。可后来,附加包内文件越来越多,我就打算搞一个“附加包测试版”的形式。这个是我1.0.0以前的开发方式。后来,它改名成“附加包预览版”。
再过去几个版本,它最终演变成了“实验性玩法于预览版”的形式,这种形式沿用到现在。实验性玩法有一个独立的文件夹,每个玩法其实都是一个附加包。而我早期发布的那些附加包,就是实验性玩法的前身,最近发布的就是实验性玩法本身。所以我发布的附加包的命名空间都是supplementary,它们最后都合并到了主附加包内。
1.17及以前,可以直接在games/com.mojang里面开发。1.18及以后,API版本升级到30导致了数据迁移,同时,文件读写速度大大降低。我的附加包现在有7000多个文件了,所以开发效率也无形中降低不少。
不过近几天,情况有所改善。通过给MC加入文件提供器,我们可以用本地存储实现访问与修改数据目录,即/data/user/0/、/sdcard/Android/data/等目录里面的内容。我测试了一下,发现用这种方式访问与修改com.mojang目录的速度要比原先的方法快上不少,不过还是比外部要慢一点点。由此,开发效率又提高了一些。(在/storage/****-****/下有这些文件夹,指向/sdcard/Android/data/*、/sdcard/Android/obb/*、/data/user/0/*和/data/user_de/0/*。)
今天我又遇到一个特性,游戏有时候会忽略物品文档中的minecraft:use_modifiers组件,这似乎与minecraft:food组件、remove_mob_effect事件方法有关。但这并没有规律,我的附加包有700多个物品,通过二分法找到那个文档后,游戏忽略的目标又转移了。
不过这个比我上次遇到的那个好些。上次那个是只要新版物品文件中minecraft:creative_category组件(旧写法)和menu_category描述(新写法)一起出现,那么游戏会在加载资源包时立刻崩溃,甚至不会有任何提示或者内容日志。这倒害得我排查几个小时,最后才发现是有一个物品文件中出现了上述情况。 |
|