Astatine 是一个功能较杂的优化 Mod,不过主要是涉及其他模组较少改动的地方,通过直接的 ASM 字节码修改和 Mixin 实现功能。
功能
快速随机数,暴力移植了新版的钫。将部分原版的 new Random() 替换为 ThreadLocalRandom.current(),提升一些场景的性能(目前还有点奇怪的问题);
FastLang,本模组还将原版通过 Splitter 对象和正则解析 .lang 的方式改为直接用手动编写的状态机解析,大大提高了解析 .lang 语言文件的速度;
Language Reload的移植,让你可以像选择资源包一样选择语言,支持搜索;
重写了原版的星星生成,允许修改:
亦重写了其亮度机制,实现了简单的闪烁效果,允许修改:
星星的基础亮度;
星星的闪烁频率/强度;
用来随机生成星星的种子。
强制 ASCII 字体,修复使用中文这种包含 Unicode 字符的语言时,无论如何都会把字体渲染成 Unicode 样式的问题;
创造也能吃/吃吃吃 ,允许在创造模式乃至任何情况下都可以吃东西;
整数倍减慢世界时间的流速,延长白天和夜晚的时间;
在左上角简单显示当前世界的时间(HH:MM);
无视堆叠上限,强制合并掉落的物品;
Out Of Sight的移植,取消对远于一定距离的实体/方块实体的渲染;
不渲染玩家刚刚投掷的实体(如雪球),防止遮挡视线。
计划
这些功能只是一个想法,离真正的实现可能还遥遥无期。
这些功能正在实现但已经能用,功能可能不稳定而导致 bug,一些细节可能仍欠考虑。
以每个区块在本次游戏中的已加载时间为依据,直接对 Chunk 对象进行缓存;具体机制比较复杂,详见配置文件。
只保存玩家实际进入过的区块,而不是一切生成的区块,大大减少存档磁盘占用大小,但会导致已生成的区块重复生成,浪费 cpu。
彻底移除用处不大的统计信息系统,减少统计信息占用的内存;可能导致进度系统出问题。
缓步移植锂的小部分功能,优化数据结构(如 HashSet<Long> 改 LongOpenHashSet)和一些低效的算法等。
模组高度重视可配置性,一切功能都可以在游戏的 config/astatine.properties 文件中调整,目前不支持游戏内修改。
一些稳定而且影响较小的配置默认是开启的,其余功能请在配置文件中手动调整开启。
画廊
模组处于积极开发状态,经常尝试添加新功能。想到啥写啥
欢迎在评论区讨论你的想法,或者报告现有的 Bug。