跳到正文

BetterNews

作者:DuoFabriTeam

一个客户端模组:进入世界时会在精美的 GUI 中显示服务器公告。支持 Markdown 渲染、封面图片、智能未读追踪和 `/news` 命令。无需安装服务端模组,只需在网站上放置一个静态 JSON 文件。

收藏

截图

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

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)
行内图片 ![alt](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.toml
  • config/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:

![Screenshot](img/screenshot.jpg)

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 的其他作品

查看全部 →