Imgur 集成(imgur 段)
基本信息
| 属性 | 值 |
|---|---|
| 配置段名 | imgur |
| 依赖 | Imgur 应用 Client-ID、Gallery/Album ID |
| 离线模式 | 系统属性 -Dbls.offlineMode=true 启用 |
配置项
useImgur
- 类型:Boolean
- 默认:
false - 作用:开启后从指定 Imgur gallery 拉取图片作为随机背景。
imgurAppClientId
- 类型:String
- 默认:
""(空) - 作用:你自己的 Imgur 应用的 Client-ID,作为
Authorization: Client-ID <id>HTTP 头。 - 必须:需要到 imgur.com 注册一个应用获得。
imgurGalleryId
- 类型:String
- 默认:
""(空) - 作用:要 Gallery 或 Album 的 ID(
Ks0TrYE这种)。 - 来源:从
<https://imgur.com/a/<id>或<https://imgur.com/gallery/<id>提取。
imgurRequestTimeout
- 类型:int
- 默认:
5000 - 范围:
[100, Integer.MAX_VALUE]ms - 作用:连接 / 读取超时。
运行行为
启动流程(MinecraftDisplayer.open 末尾)
randomBackgrounds && !salt时才执行;- 实例化
ImgurCacheManager; - 调
setupImgurGallery(resourceLocation -> { … }):- 第一次回调 → 直接覆盖
background(避免要等定时切换才看见新图); - 每次回调都把
ResourceLocation字符串路径add到imgurBackgrounds; randomBackgroundArray = imgurBackgrounds.toArray(new String[0]);- 配合
changing background段进行定时切换。
- 第一次回调 → 直接覆盖
ImgurClient(HTTP 客户端)
- 自定义
CloseableHttpClient:只设Authorization头与超时(连接/连接请求/socket 都用requestTimeout)。 fetchGalleryImageIDs(galleryId, ignoreAds=true):GET https://api.imgur.com/3/album/<id>,解析data.images,返回过滤后的id列表。fetchImage(imageId):GET https://i.imgur.com/<id>.png(注意:imgur 允许把 jpg 当 png 请求,返回仍是 jpg)。
ImgurCacheManager(缓存)
- 磁盘缓存目录:
bls-imgur-cache/<imageID>.png。 - 同步发布:每拿到一张图就通过回调
textureLocationConsumer.accept(new ResourceLocation(IMGUR_CACHE_DIR, imageID))让MinecraftDisplayer注册新背景。 - 启动时优先本地:先扫缓存目录里所有 PNG 的 imageID,按线程局部随机起点循环(
ThreadLocalRandom.current().nextInt),firstOnly=true时读完第一张就退出(让启动时图尽早出现);后续 gallery 流程拉到新图时再补。 - 失效图清理:gallery 流程结束后,对比当前
cachedImageIDs(不在 gallery 中的项),Files.deleteIfExists(...)删除。
离线模式
OFFLINE_MODE = Boolean.getBoolean("bls.offlineMode"):
OFFLINE_MODE=true→ 跳过ImgurClient,仅扫描磁盘缓存(并发)。- 用法:开发/无网环境启动参数加
-Dbls.offlineMode=true。
数值
| 字段 | 默认 |
|---|---|
useImgur |
false |
imgurAppClientId |
"" |
imgurGalleryId |
"" |
imgurRequestTimeout |
5000 ms |
相关条目
- 布局配置 - backgroundList 与 randomBackgrounds
- 背景切换配置 - 切换周期 + 渐变时长
- LateInit 纹理 - 异步纹理上传抽象
- Skepticism 段 - salt 跳过 Imgur