BetterNews
一个客户端模组:进入世界时会在精美的 GUI 中显示服务器公告。支持 Markdown 渲染、封面图片、智能未读追踪和 `/news` 命令。无需安装服务端模组,只需在网站上放置一个静态 JSON 文件。
截图
介绍
BetterNews – Minecraft GUI中的服务器新闻
BetterNews 是一款适用于 Minecraft Forge 1.20.1 的客户端模组,可在加入世界后立即通过精美的内置界面显示服务器新闻。
🔍 这款模组解决了什么问题?
服务器管理员没有什么好办法能在 Minecraft 游戏内向玩家告知更新、公告和活动。通常他们只能通过 Discord 消息、论坛帖子或游戏内聊天刷屏来发布信息——这些内容都很容易被错过。
BetterNews 解决了这个问题:新闻会从你的网站加载,并在支持图片的精美 GUI 窗口中呈现;每次登录时都会自动显示,但只会显示一次,直到有新内容可读。
✨ 功能
📰 加入游戏后自动显示新闻
- 加入世界或服务器后,模组会稍作等待,然后自动打开新闻窗口
- 仅当至少有一条未读新闻时,才会打开窗口
- 计时器会在玩家移动鼠标后启动——因此绝不会打断加载画面
- 延迟时间可配置(
showDelaySeconds,默认:10 秒)
🖥️ 内置新闻阅读器 GUI
- 简洁美观的面板(默认宽度为屏幕的 80%,高度为 90%)
- 标题栏——左侧显示文章标题,右侧显示格式化日期
- 将鼠标悬停在文章标题上,会显示包含完整标题的提示框
- 封面图片——标题栏下方的全宽横幅(如果服务器提供,则从服务器加载)
- 可滚动的内容区域——渲染 Markdown 内容及内嵌图片
- 页脚——导航按钮、文章计数器、未读标记(
●)
📄 Markdown 渲染
模组会渲染从你的网站获取的 Markdown 内容。支持的元素包括:
| 元素 | 语法 |
|---|---|
| 标题(3 级) | # ## ### |
| 粗体 | **text** |
| 斜体 | *text* |
| 删除线 | ~~text~~ |
| 行内代码 | `code` |
| 代码块 | ``` |
| 项目符号列表(支持嵌套) | - item |
| 编号列表(支持嵌套) | 1. item |
| 链接 | [text](url) |
| 行内图片 |  |
| 表格 | 标准 Markdown 语法 |
| 水平分隔线 | --- |
| 引用块 | > text |
| 彩色文本 | <span style="color:#RRGGBB">text</span> |
🗂️ 在文章间导航
- ← / → 按钮可浏览所有文章(包括已读和未读文章,方便查看历史内容)
- 打开窗口时,会自动跳转到第一篇未读文章
- → 按钮始终可用(没有强制阅读计时器)
- 全部读完按钮会将所有文章标记为已读并关闭窗口
- 按下
ESC会关闭窗口,且不会将任何内容标记为已读 - 关闭窗口时,模组可以在聊天栏显示可配置的提示,其中包含重新打开新闻的命令
✅ 智能阅读追踪
- 当玩家滚动到底部且文章打开时间达到
minReadSeconds后,文章会自动标记为已读 - 已读状态保存在
config/betternews/unreadnews.toml中,并会在不同游戏会话之间保留 - 首次初始化未读列表时,仅将最新文章标记为未读,避免回归玩家被旧新闻刷屏
⚡ 智能预加载
- 打开新闻文章时,模组会在后台预加载当前、下一篇和上一篇文章
- 在相邻文章之间切换几乎无需等待(从缓存中读取)
- 如果文章尚未加载,内容区域会显示动画加载转圈图标,导航按钮也会暂时禁用
🖼️ 异步加载图片并提供回退机制
- 所有图片(封面和正文图片)都在后台线程中异步加载
- 文章文本和所有图片完全加载前,会显示加载转圈图标
- 图片会注册为
DynamicTexture,并通过 Minecraft 的纹理引擎显示 - 支持范围请求回退机制,适用于无法正确响应完整 GET 请求的服务器
- 加载失败时最多重试 3 次
🧹 会话缓存
- 所有已加载的数据(文本、图片)都会保留在内存中,直到玩家离开地图
- 断开连接时,会通过
TextureManager.release()释放所有DynamicTexture资源 - JSON 索引会按可配置的冷却时间(
newsCheckCooldown)缓存,以减少重复的 HTTP 请求
🌐 国际化
- 界面语言遵循 Minecraft 客户端的区域设置
- 日期格式会根据当前区域设置调整(例如,英语为“19 Mar 2026”,俄语为“19 мар. 2026”)
- 内置翻译:英语(
en_us)、俄语(ru_ru)
⌨️ 命令
- 主打开命令可通过
newsCommand配置(默认:/news) - 在聊天框中输入已配置的命令,即可随时打开新闻窗口,即使没有未读文章也可以
/beternews reload可在游戏内重新加载客户端 BetterNews 配置文件
⚙️ 配置
文件:
config/betternews/betternews.tomlconfig/betternews/unreadnews.toml
主配置(config/betternews/betternews.toml)
| 参数 | 默认值 | 说明 |
|---|---|---|
newsIndexUrl |
"" |
新闻索引 JSON 的直接 URL,例如 https://mysite.com/news.json |
newsCommand |
"news" |
用于打开新闻界面的主命令名称(支持带或不带前导 / 的值) |
showDelaySeconds |
10 |
加入游戏后,窗口出现前的延迟秒数 |
httpTimeoutSeconds |
30 |
HTTP 请求超时时间(秒) |
newsCheckCooldown |
"1h" |
两次请求索引 JSON 之间的冷却时间(支持 s、m、h、d 后缀) |
minReadSeconds |
5 |
文章可自动标记为已读前,窗口必须保持打开的最短时间 |
newsCloseHint |
"&bYou can open news with /news" |
关闭新闻界面时显示的聊天提示(留空可禁用提示;支持旧版颜色代码) |
未读状态(config/betternews/unreadnews.toml)
| 参数 | 默认值 | 说明 |
|---|---|---|
unreadNews |
[] |
自动管理的未读文章键列表(请勿手动编辑) |
unreadInitialized |
false |
用于初始化未读状态的内部标记 |
📡 服务端设置(无需安装服务端模组!)
该模组完全在客户端运行。你只需要一个静态网站(或任何 HTTP 文件服务器),并按以下结构组织文件:
JSON 索引(news.json)
[
{
"title": "Major Update 2.0",
"date": "2026-03-19",
"url": "/news/major-update/index.md"
},
{
"title": "Server Launch",
"date": "2026-01-01",
"url": "/news/server-launch/index.md"
}
]
- 文章按从新到旧的顺序排列
url字段必须是相对路径——域名取自配置中的newsIndexUrl- 出于安全考虑,文章条目中的绝对 URL 会被拒绝
文章文件夹结构
news/
└── major-update/
├── index.md ← article body (Markdown with YAML frontmatter)
├── cover.jpg ← optional cover image (full-width banner)
└── img/
└── screenshot.jpg
文章文件(index.md)
---
title: Major Update 2.0
date: 2026-03-19
description: Reworked progression, new dungeons and dozens of fixes.
cover: cover.jpg
server: MyServer
---
## What's new
Some **bold** text, *italic*, and an image:

Frontmatter 字段
| 字段 | 必填 | 说明 |
|---|---|---|
title |
✅ | 显示在标题栏中的文章标题 |
date |
✅ | 发布日期(yyyy-MM-dd),显示在标题栏中 |
如果 frontmatter 中包含
title或date,它们将优先于 JSON 索引中的对应值。
🔗 链接
- 点击文章中的任何
[link](url),都会直接在系统浏览器中打开,不会显示确认对话框
📦 要求
- Minecraft:1.20.1
- Forge:47.4.16 或更高版本(加载器版本 ≥ 47)
- 运行端:仅客户端(无需服务器模组)
- Java:17+
常见问题
BetterNews 支持哪些 Minecraft 版本?
BetterNews 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
BetterNews 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
DuoFabriTeam 的其他作品
查看全部 →CrossFixes
适用于 Minecraft 1.20.1 的 Forge 客户端模组,通过 Mixins 在运行时修复第三方模组导致的严重崩溃,无需修改原始 JAR 文件。
BetterItem
无需编写代码,即可向 Minecraft 添加自定义物品——只需将 PNG 文件放入配置文件夹并重启游戏。支持自定义名称、提示文本、动画纹理和模型,也可在服务器上使用,并自动同步到客户端。
BetterModel
BetterModel 是一款适用于 Minecraft Forge 1.20.1 的模组,可在游戏运行时(无需重启)将自定义的 Blockbench/Bedrock JSON 模型放置到世界中,并支持 GeckoLib 动画、动态纹理,以及通过配置文件夹启用可选的自发光遮罩。
评论
登录后评论和评分