主页

系列文章

最新文章

MC Forge Mod 开发记录:加入配置界面(1.16 版)

阅读时长:11 分钟

在本系列博客的第一篇文章中,我介绍了如何在 Minecraft 1.14.4 及以上版本之上给 Minecraft Forge mod 做一个配置界面,即使是在 Forge 里原有的配置界面框架被删除、并且核心开发成员已经决定再也不会把它加回来的情况下。Forge 项目领导者 LexManos 如此冷酷无情地否定 @Cadiboo 耗费多于一年的心血才做出的劳动成果,仅凭几句话就随意地关闭前面链接里的 pull request,让我感到非常失望和心寒。除了对 Minecraft Forge 项目的主要成员又多了一份不满以外,这件事也让我明确了一项新的责任和使命,那就是继续维护这种开发 mod 配置界面的方法,确保它在最新的 Minecraft Forge 版本上仍然可用。在与一名 mod 开发者、本系列博客的一名读者、同时也是我所毕业的高中的一名学生 @yuesha-yc 交流后,我意识到了对于 Minecraft Forge 这样一个官方文档聊胜于无的平台来说,我这些关于 Forge mod 开发的文章对于 mod 开发者们来说就如同雪中送炭,所以我也会竭尽全力,继续分享我关于 Forge mod 开发的经验和知识,为广大开发者提供帮助。 ……

通过 Portage 打补丁以修复上游软件 Bug

阅读时长:11 分钟

如果您经常关注与自由软件相关的一手资讯,您肯定或多或少地读到过某款软件的 bug 最近被修复、或者某款软件有了什么新功能和改进的新闻,然后发现这些 bug 修复和新功能在一段时间内无非就是空气,因为实际收到包含这些修复或者改进的新版本的时候往往可能已经过了很长时间。当一个修复 bug 或者添加新功能的补丁被完成后,需要先提交给上游开发者进行审核、测试和整合,然后要等上游发布下个版本的时候才能正式生效,最后还要等您的发行版将新的上游版本添加到发行版自己的软件仓库,您才能收到包含该 bug 修复或新功能的更新。比如说,我们假设可能在今年 3 月发布的 GNOME 40 里包含一项 bug 修复。如果您使用的是 Fedora Workstation,您需要等到大概 4 月底,Fedora 34 推出的时候才能收到这项 bug 修复。如果是 Gentoo 的话,那我估计起码得等到今年下半年了,因为最近几次 GNOME 更新,Gentoo 都是在上游推出新版本之后过了将近半年才推送给用户的。 ……

用于在基于 Linux 的系统上查看 CPU 温度和频率的小脚本

阅读时长:3 分钟

在这篇帖子中,我将展示在基于 Linux 的系统上,如何仅依赖主流 GNU/Linux 发行版预装的软件包查看 CPU 频率和温度信息。这种方法不需要借助任何额外的和硬件驱动和支持相关的软件包,只需要用一个只有几行的 Bash 脚本,利用 Linux 内核自身提供的机制和一些最基础的 Unix 命令就能读取 CPU 的硬件状态信息。 如果想直入正题,您可以点击此处直接跳到脚本的内容。如果您想了解我发现这种方法的探究历程,欢迎继续向下阅读。 如果您是一名有一定电脑使用知识的 Windows 用户,您肯定有过使用任务管理器监测系统状态的经历。任务管理器提供了 CPU 占用率和频率信息,方便我们了解系统负载。虽然任务管理器提供的监测功能绝不是最全面的,但作为一个系统自带、并且可以快速调出的工具,任务管理器有它独有的优势。 ……

MC Forge Mod 开发记录:升级到 Minecraft 1.16

更新时间: 阅读时长:11 分钟

Minecraft Forge 支持 Minecraft 1.16 已经有相当长一段时间了。1.16.x 系列的第一个稳定版本 34.1.0 早在 2020 年 9 月,也就是我这个系列上一篇关于我的 mod 的更新的文章发布不久后,就已经出了。其实在我准备更新 mod 期间,Forge 的 1.16 支持就已经比较成熟了,所以我当时就在考虑要不要在更新时顺带把 mod 移植到 1.16 上。但是,经过艰苦的尝试,我发现当时 Forge 附带的 MCP 反编译出的 Minecraft 代码中依然有许多没完全反混淆的方法名称,遂感觉 Forge 对 1.16 的支持仍然不够完善,于是决定暂不把 mod 移植到 1.16。 后来,我看到 Forge 出了第一个 1.16 的稳定版后,就将其下载了下来,看了看之前没反混淆的那些方法的名字有没有给改过来。结果是令人十分失望的:所有原来没反混淆的名字,一个都没有变。这样一个在我看来完全算不上是一个稳定版本,Forge 就这么草草发布,贴上了“推荐”的标签,顺带还停止了 1.14.x 的支持。停止支持意味着什么呢?意味着如果您在 Forge 官方论坛发帖求助,并且您用的是一个停止支持的版本,就会有论坛管理给您扔下一句冷冰冰的“你用的版本已停止支持,请升级以继续获得支持”,然后无情地关闭您的帖子,顺手阻止了其他非管理员的论坛成员提供帮助。好家伙,发布一个未成品,还把一个稳定版本的支持结束了,就是强行让追求稳定的开发者选择 1.15.x 呗?我当时差点就要在这里写一篇檄文,点评 Forge 开发者对“稳定版”的重新定义、以及论坛管理对于有关停止支持的版本的提问的冷淡的处理态度。 ……

Gentoo 上手体验

更新时间: 阅读时长:11 分钟

自我上一篇文章发布到现在,已经过去六周时间了。各种新文章的主题和想法在我脑中迸发,把它们写下来并发布的意愿在我心中萦绕,只可惜太忙,而且忙的还是个竹篮打水一场空,只能在百忙之中匆匆把想法记录在草稿里,等有空的时候再写成正式的文章。现在终于忙完了一批活,难得短暂的清静,在可能只有写一篇文章的闲暇时间的情况下,我决定先把之前首次体验 Gentoo 的经历记录下来。Gentoo 是一个源码级 GNU/Linux 发行版,最有代表性的特点就是让用户自己编译系统的几乎所有组件,乃至于 Linux 内核也可以自己编译。 ……

在通过映像安装的 Fedora 系统上使用 Btrfs

阅读时长:7 分钟

自 Fedora 33 起,Fedora 将开始使用 Btrfs 作为桌面版本的默认文件系统。在我关注的几个 Fedora 用户社区(以国外的为主)中,这一更改还是受到了一些欢迎的,毕竟 Btrfs 和传统的 ext4 相比有一些额外、实用的功能。其它非桌面版本(例如服务器版)默认仍然使用 ext4,不过用户在使用 Anaconda 安装 Fedora 时仍然可以手动选择使用 Btrfs。但是,如果使用的是非桌面版本的 raw 映像,比如 aarch64 最小安装(Minimal)映像,因为是直接将映像写到安装目标磁盘上的,而不是用 Anaconda 安装器,所以就没有机会选择使用除 ext4 以外的文件系统。而在这篇帖子中,我将展示一种用映像安装时也可以使用 Btrfs 的方法,其原理是在应用映像后手动转换文件系统。 ……

Fedora 在树莓派 4 上的 USB 问题的复杂解决方法

更新时间: 阅读时长:5 分钟

在上一篇帖子中,我介绍了一种十分简单的解决在树莓派 4B 4GB/8GB 内存型号上运行 Fedora 时无法使用 USB 接口的方法。这种方法通过牺牲可用内存的方式来换取 USB 接口的正常功能。而在现在这篇帖子中,我将再介绍一种方法,虽然需要更多的操作,但是不会导致 3 GiB 内存的限制。 上篇帖子中提到,2GB 内存的型号因为没有 USB 相关的问题,无需进行额外操作。USB 接口不能使用的问题的具体症状也在该帖中有所描述。 概括 如果只用一句话总结这个方法的话,那就是让 Fedora 使用 openSUSE(另一个 GNU/Linux 发行版)的引导程序和固件。这其中涉及的步骤包括: ……

Fedora 在树莓派 4 上的 USB 问题的简易解决方法

阅读时长:2 分钟

截至 Fedora 32 和 Linux 5.8,在树莓派 4B 4GB/8GB 内存型号上使用 Fedora 会出现 USB 接口无法使用的情况。在这篇帖子中,我将介绍一种十分简单的解决方法,简单到只需要给一个配置文件加一行选项。 注意事项 树莓派 4B 2GB 内存型号的用户不需要担心这个问题,USB 接口在 Fedora 上应该是可以直接用的。4GB 和 8GB 型号的用户才可能遇到这个问题。 使用此帖中介绍的这个方法后,系统将只能使用 3 GiB 内存。如果您需要更多的内存的话,就得用另一种稍复杂的方法了。虽然它的步骤比这种简单方法多,但是不会减少可用内存。 症状 树莓派的 USB 接口在官方的树莓派 OS 和其它系统上能用,但是在 Fedora 上无法使用。运行 dmesg | grep xhci_hcd 会出现下列信息: ……

MC Forge Mod 开发记录:加入配置界面

更新时间: 阅读时长:15 分钟

Minecraft Forge 本来有一个允许 mod 创建自己的配置界面的框架,但是该框架在 Minecraft 1.13 的时候被移除了,之后也一直没有被加回来。这篇文章中所记载的就是我如何在不使用该框架的情况下,直接用 Minecraft 的 API 来写一个类似的 mod 配置界面。 本文描述的方法适用于 Minecraft 1.14.4 和 1.15.x。该方法可能也适用于 Minecraft 1.13.x 和 1.14 系列的老版本,不过因为这些版本没有 Minecraft Forge 的稳定版,我并没有进行验证。一般还是推荐用稳定版的 Forge 来进行 mod 开发。 如果您使用的 Minecraft 版本是 1.16.x,请参阅此篇文章。 如果是 Minecraft 1.12.2 或者之前的版本的话,要想使用本文描述的方法,可能需要对给出的代码示例进行大量修改;但是,在这些 Minecraft 老版本上可以直接使用 Forge 的配置界面框架,所以无需依照本篇文章的描述用 Minecraft 的 API 来替代。 ……

手动进行 dnf history undo

阅读时长:8 分钟

我平时常用的 GNU/Linux 发行版包括 Fedora 和 CentOS。后者主要在服务器上使用,而在其它的使用场景下,比如我自己的电脑,就会使用前者。选择这两个发行版主要是因为这它们都使用 DNF 作为软件包管理器前端。有人嫌 DNF 太慢,但我喜欢它是因为它不仅会详细列出它将要进行的操作,包括装卸什么软件包、什么架构、什么版本,还允许方便地查询历史记录。DNF 对其运行的每个事务都保存记录(一个事务就是一次安装或卸载软件包的操作),并且还支持使用 dnf history undo 撤销事务,或使用 dnf history rollback 回滚到某一个事务。其它的一些像 APT 和 Pacman 的软件包尽管也会保存日志,但是并没有类似的撤销操作的功能。 ……