npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bloomery

v1.8.0

Published

Minecraft 启动器

Readme

Bloomery 启动器

Minecraft 启动器命令行。TypeScript 编写,Node ≥ 20,零运行时依赖。

安装

npm i -g bloomery
bloomery --version

从源码:

git clone https://github.com/EtherosGroup/Bloomery.git
cd Bloomery
npm install
npm run start -- --version

更新

npm i -g bloomery@latest

快速开始

bloomery folder add ~/.minecraft           # 登记游戏文件夹
bloomery java scan                         # 扫描本机 Java
bloomery auth login cibocaz                # 离线账户
bloomery install 1.20.6                    # 安装原版
bloomery install 1.20.6 --loader fabric    # 安装加载器版本
bloomery launch                            # 启动

install 的输出末行给出该实例的启动命令,直接复制即可。

命令

bloomery [全局选项] <命令> [命令选项] [参数]

launch

启动游戏。省略版本时按序取:当前选中 → 上次启动 → 第一个可用。

bloomery launch                            # 启动默认实例
bloomery launch 1.20.6-fabric-0.19.5       # 指定实例 id
bloomery launch --dry-run                  # 只打印启动计划
bloomery launch --account cibocaz          # 指定账户
bloomery launch --folder mc                # 指定文件夹

启动当前选中实例时,首行给出提示。

install

安装指定版本。目录名默认按版本与加载器推导。

bloomery install 1.20.6                          # 原版
bloomery install 1.20.6 --loader fabric          # 最新 fabric
bloomery install 1.20.6 --loader [email protected]   # 指定加载器版本
bloomery install 1.20.6 --loader quilt
bloomery install 1.20.6 --loader forge           # 官方安装器,取最新正式版
bloomery install 1.20.6 --loader [email protected]   # 指定 Forge 版本,游戏版本前缀可省
bloomery install 1.20.6 --loader neoforge        # neoforge 版本号不带游戏版本前缀
bloomery install 1.20.6 --loader [email protected]
bloomery install 1.20.6 --name MyPack            # 指定实例名
bloomery install 1.20.6 --no-assets              # 跳过资源对象

同名实例已存在时拒绝,不覆盖。

auth

账户管理。离线账户立即可用,微软账户见下文。

bloomery auth login cibocaz                      # 离线账户
bloomery auth login --type microsoft             # 微软设备码登录
bloomery auth list
bloomery auth logout cibocaz

mod

从 Modrinth 检索与安装 MOD。

bloomery mod search sodium                       # 检索
bloomery mod search sodium --limit 20
bloomery mod install sodium                      # 装进实例的 mods/
bloomery mod install sodium --version 1.20.6-fabric
bloomery mod install sodium-extra --deps         # 连必需依赖
bloomery mod install sodium --no-deps
bloomery mod install sodium --dry-run            # 只算不装

目标实例省略时同 launch 的规则。文件落在该实例自己的 mods/ 下,同名文件已存在时跳过。目前只接 Modrinth。

modpack

导入 Modrinth 的 .mrpack。

bloomery modpack pack.mrpack
bloomery modpack pack.mrpack --name MyPack       # 实例名
bloomery modpack pack.mrpack --dry-run           # 只算不导入
bloomery modpack pack.mrpack --no-assets

按包里的游戏版本与加载器建实例,随后下清单文件(校验 sha1)、摊平 overrides/ 与 client-overrides/。清单里没有下载地址的文件只记警告,不中止。

view

加载器与游戏版本互相查询。

bloomery view loader                             # 四种加载器概览
bloomery view loader fabric                      # 某加载器的全部版本,每页 20 条
bloomery view loader fabric --page 2
bloomery view loader neoforge --type release     # 只看正式版
bloomery view loader fabric --game 1.20.6        # 该游戏版本上可用的加载器版本
bloomery view loader fabric --games              # 该加载器支持的游戏版本
bloomery view game 1.20.6                        # 该游戏版本上四种加载器各有哪些版本

发布通道由版本号判断:含 alpha 为预览,含 beta / rc / pre / snapshot 为测试,其余为正式。

version

bloomery version list                            # 列出实例,标出当前选中
bloomery version info 1.20.6-fabric-0.19.5       # 单个实例详情
bloomery version select 1.20.6-fabric-0.19.5     # 选中

选中后 launch 与 mod install 省略版本时都用它。优先级:命令行给的 > 当前选中 > 上次启动 > 第一个可用。

folder

bloomery folder add ~/.minecraft                 # 登记
bloomery folder list
bloomery folder scan ~/.minecraft                # 扫描磁盘上已有版本
bloomery folder select mc                        # 切换当前文件夹
bloomery folder remove mc

java

bloomery java scan                               # 扫描
bloomery java list
bloomery java add /usr/lib/jvm/jdk-21/bin/java
bloomery java which 1.20.6                       # 该版本会用哪个 Java
bloomery java remove /path/to/java
bloomery java list --major 21

mirror

查看、切换下载源,或从镜像站拉取清单。默认 Mojang 官方直连。

bloomery mirror list                             # 预置源、拉来的源与当前选择
bloomery mirror use bmclapi                      # 切到 BMCLAPI
bloomery mirror use official                     # 切回官方
bloomery mirror use custom --url https://mirror.example.com
bloomery mirror update --from https://example.com/mirrors.json
bloomery mirror update                           # 不给 --from 就用上次的地址

update 拉取的清单格式(数组,或 { "entries": [...] }):

[{ "name": "bmclapi", "label": "BMCLAPI", "base": "https://bmclapi2.bangbang93.com" }]

拉来的清单缓存在 <配置目录>/mirrors.json(含来源地址与拉取时刻),mirror use <名字> 对预置与拉来的源一视同仁;拉来的源按 custom 写入。BMCLAPI 只改写 Mojang 主机(库、资源、版本 json),Forge 等第三方 maven 原样直连。写入的是 setting.json 的 download.sources。

全局选项

-v, --verbose     输出调试日志
-q, --quiet       只输出警告与错误
    --json        以 JSON 输出结果
    --progress <style>  进度输出:bar / plain / off / ndjson
-h, --help        显示帮助
-V, --version     显示版本号

全局选项写在命令名之前:bloomery --json install 1.20.6。

--json 下标准输出只有一份 JSON,过程提示静默。

--json 出错时标准输出给一份机器可读的错误(人类可读的那份仍写 stderr):

{
    "error": {
        "code": "DownloadFailed",
        "message": "下载失败",
        "detail": "forge 安装器",
        "exit": 1,
        "context": { "url": "…" }
    }
}

code 是稳定的错误码,message 是它对应的中文短语,exit 是进程退出码。

--progress ndjson 把进度写成机器可读事件到 stderr(标准输出不受影响),供外壳读取:

{ "v": 1, "stage": "库", "done": 12, "total": 47, "bytes": true }

节流 100ms 一条;新阶段与收尾必发;stderr 积压超过 64KB 时丢中间帧(收尾那条仍强制写),因此消费端再慢也不会拖慢下载。

加载器

| 加载器 | 安装方式 | 版本号写法 | | -------- | ---------- | ----------------------------------------- | | fabric | 官方 meta | [email protected] | | quilt | 官方 meta | [email protected] | | neoforge | 官方安装器 | [email protected] | | forge | 官方安装器 | [email protected] 或 [email protected] |

版本号与游戏版本必须配对:

  • neoforge 的版本号前两段即所需游戏版本(20.6.x 对应 1.20.6,21.1.x 对应 1.21.1)
  • forge 的版本号以游戏版本为前缀,省略前缀时自动补
  • 配对不符时直接报错,不下载安装器

省略加载器版本时取该游戏版本上最新的正式版。

forge 与 neoforge 走官方安装器:下载安装器到 <文件夹>/.bloomery/,执行完删除;过程需要本机 Java,耗时数分钟,输出实时透传。--name 指定实例名时,安装器写出的版本目录整份改名接管,继承链只留一层。

存储

按 PCL / HMCL 的布局存放,只使用版本隔离模式:

<游戏文件夹>/
  versions/<实例 id>/
    <实例 id>.json        # 版本描述
    <实例 id>.jar         # 客户端 jar
    mods/                 # MOD
    config/               # 配置
    natives/              # 解出的本地库
  libraries/              # 共享库
  assets/                 # 共享资源

MOD、配置、存档都在实例目录下,互不影响。

配置与日志:

~/.config/bloomery/
  setting.json            # 文件夹、账户、下载源、代理、并发、选中项
  state.json              # 上次启动的实例、Java 探测缓存
  logs/latest.log

下载源、代理与并发在 setting.json 的 network 段(concurrency 默认 8,四类文件按任务数分配)。

微软登录

内置应用 id 已通过 Mojang 审核,直接登录:

bloomery auth login --type microsoft

流程为设备码:终端给出一串代码与网址(https://www.microsoft.com/link),浏览器完成授权。凭据过期时启动前自动刷新。--client-id <id> 或环境变量 BLOOMERY_CLIENT_ID 可覆盖内置值。

开发

npm run start -- <参数>     # 直接跑源码,Node 原生剥离类型
npm run check               # tsc --noEmit
npm test                    # node --test,167 项
npm run fmt                 # oxfmt 格式化
npm run build               # 产物到 dist/

分层:cli → 功能模块 → platform / infra / output。系统分支只出现在 src/platform/。

发版:npm version <版本> --no-git-tag-version → 提交 → 打 v<版本> 标签 → 推送。标签触发 npm 发布与 Release 打包。

许可

见 LICENSE。

联系

邮箱 [email protected],站点 https://bloomery.xyit.net。