1745 字
9 分钟
MineCodes v0.3.0 开发日志:一个文科生的 Electron 探索之旅

MineCodes v0.3.0 开发日志:一个文科生的 Electron 探索之旅#

MineCodes 是一个为 Minecraft 玩家准备的辅助工具 —— 查指令、找物品 ID、存笔记,一站式搞定。

前言#

先简单交代一下背景:我是文科生,代码不算我的专业领域。

《MineCodes》从最初由 AI 裸生成的草率的界面、只能翻指令列表的简陋版本,到今天能够查物品 ID、记指令笔记、支持深色模式等等功能的趋近完善工具,经历了不少推倒重来的时刻——比如界面从0开始重新设计、放弃 Python 改用 Electron 内核。

温馨提醒:如果你在用的是旧版本,建议直接下载最新版安装包,因为在正式版发布之前的每一个版本都可能完全不一样。


最近更新#

指令笔记:随手记下容易忘的指令、数值#

查到一个复杂的指令导致需要频繁切窗口,看模板?使用填充指令时记不住坐标?…

这次更新了一个 指令笔记 功能。主界面右侧为笔记输入区,你可以在查阅指令的同时,顺手把自己的理解或者简化写法记录下来:

指令笔记截图

笔记保存在本地的 JSON 文件,你也可以手动编辑。

物品 ID 查询:使用 /give 不用再切网页#

/give 指令记起来非常简单,/给予 谁 什么 多少个,但麻烦在这个什么,你只能输入物品的ID,没办法用中文。我自己用的时候要么用翻译软件猜,要么直接上网搜,效率特低。

现在,我在《MineCodes》里增加了一个物品ID查询的功能。

物品ID查询截图

搜索框输入中文名或英文名都能匹配,点击直接复制 ID,顺手就能拿去写指令。目前覆盖了 Java 版的主流物品,后续会持续补充。

深色模式:晚上很实用#

大多数人都只有晚上有时间玩游戏,浅色的界面很刺眼。新版本做了深色模式适配,目前只支持手动切换,后续会尝试支持跟随系统主题:

深色模式截图


开发日志:三个核心功能的实现思路#

功能 1:指令库 + 收藏系统#

这个功能其实是最早做的,也是整个工具的基础。

最初的设计就是简单列一个表格,后来觉得这种展示方式太“文档化”了,不够直观。所以改成了卡片式布局,每个指令单独展示,点展开可以看到详细的用法说明和示例。

收藏功能的实现其实很简单 —— 就是一个本地存储的 ID 数组,收藏的指令会单独列在“收藏夹”视图里。但难的是如何让用户一眼就知道哪个指令被收藏了,以及在收藏夹列表怎么方便地取消收藏。前后改了三次交互逻辑,现在的方案是:每个卡片右上角有一个爱心图标,点击即收藏/取消,虽然状态还没能实现实时同步。

收藏示例

功能 2:物品 ID 查询 —— 数据源怎么来的?#

物品 ID 数据是一个大工程。Minecraft 从 1.12 到 1.20 版本之间,命名空间和数据格式都变了好几轮。为了确保数据的准确性,我主要用了三个来源:

  1. Minecraft Wiki 上公开的物品列表作为基准;
  2. 官方 JSON 数据文件中扒取的注册名;
  3. 找 AI 对照着一个个验证。

最终录入的条目覆盖了原版生存模式中会用到的绝大多数物品,接近 800 条。当然了,不排除有遗漏,如果遇到找不到的物品 ID,欢迎在 GitHub 提 Issue 反馈,你也可以通过本篇文章底部的评论区或发送邮件反馈。

功能 3:笔记模块 —— 最简单的实现往往最可靠#

笔记模块的开发是这轮更新里最顺畅的一个环节。不是因为简单,而是因为一开始就很清楚要做一个什么样的东西:

  • 不需要云端同步(太复杂,而且用户未必需要);
  • 不需要多笔记本分类(那是另外一个层面的需求)。

也许以后会加导出/导入功能,但短期内不打算过度复杂化。


为什么用 Electron?#

  1. 跨平台:Minecraft 玩家什么系统的都有,Electron 生成一套代码覆盖 Windows、macOS(ARM64 / x64)、Linux 三端,省事。
  2. 本地优先:笔记数据、收藏记录都存本地,不依赖服务器,用户不用担心隐私问题。
  3. 熟悉的前端技术栈:虽然我是文科生,但 HTML / CSS / JS 相对好上手,Electron 的学习曲线比从头学 C# 或 Swift 要友好得多。

当然,Electron 的缺点也很明显 —— 包体积大(光是 chromium 内核就占几十 MB)、内存占用高。但对于一个偶尔打开查一查指令的工具来说,这些缺点在可接受范围内。


技术踩坑记录#

坑 1:物品 ID 搜索的性能优化#

物品列表有接近 800 条数据,输入框添加搜索事件监听之后,每次键盘敲击都触发一次全量过滤,低配机器上明显能感觉到卡顿。

优化方案很简单 —— 防抖 + 虚拟滚动

  • 防抖:用户停止输入 150ms 后再执行过滤,减少重复计算;
  • 虚拟滚动:只渲染当前可视区域的 15-20 条结果,其他先不渲染,大幅降低 DOM 操作开销。

改完之后搜索体验顺滑了很多。


写在最后#

这个项目对我个人来说,最大的意义可能不在于做出多厉害的工具,而是我能够做我自己想做的事,并且把他做得超乎我自己的预期。

这个过程很麻烦。但每次看着屏幕上跑起一个自己写的新功能,这种成就感真的非常上头。

MineCodes 会持续更新。接下来几个版本的计划包括:

  • 指令自动补全和参数提示;
  • 支持更多 Minecraft 版本的数据切换;
  • 笔记模块增加导出为 Markdown / PDF 功能。

目前 MineCodes 已在 GitHub 开源:

https://github.com/Zionyas-Van/MineCodes

特别感谢:YasVnite

如果你在使用中遇到问题,欢迎通过邮箱联系我:2223857511@qq.com,或者直接在 GitHub Issues 区提出来,我会尽量回复。


如果你觉得这篇文章对你有帮助,不妨点个赞。
当然,如果你愿意请我喝杯咖啡 —— 那我更要认真写下一篇了。


本文为 MineCodes 第 1 篇开发日志,后续将持续记录项目迭代中的思考与踩坑经验。

MineCodes v0.3.0 开发日志:一个文科生的 Electron 探索之旅
https://fuwari.vercel.app/posts/record/minecodes-030-dairy/
作者
ZionyasVan
发布于
2026-05-04
许可协议
CC BY-NC-SA 4.0