Links
Tags
Creators
Details
1.0.0
Compatibility
Changes
SmartBroadcast v1.0.0
First stable release of SmartBroadcast — an intelligent Minecraft LAN discovery protocol broadcaster for Paper / Folia 1.20.1. It decides when to broadcast LAN server information and what MOTD to broadcast, based on configurable expression rules.
Highlights
- Folia-native scheduling — uses GlobalRegionScheduler and AsyncScheduler;
folia-supported: trueis set inplugin.yml - LAN discovery protocol — sends UTF-8 UDP multicast packets to
224.0.2.60:4445 - Ordered, multi-rule engine — rules are checked top-to-bottom, first match wins
- Optional suppression — a matched rule can set
broadcast: falseto skip the packet - Rich expression conditions — player count, whitelist, port, MOTD, and PlaceholderAPI placeholders
- MiniMessage MOTD — custom MOTDs accept MiniMessage and are converted to legacy
§text before broadcasting - Current server MOTD —
{server_motd}re-broadcasts the live Paper MOTD - Hot reload —
/smartbroadcast reload(aliases:/sbc,/lanbroadcast)
Installation
- Download
SmartBroadcast-1.0.0.jarfrom the assets below. - Drop it into your server's
plugins/directory. - Start the server (Paper or Folia, 1.20.1).
- Install PlaceholderAPI as well if you want PAPI placeholder support.
- (Optional) Tune the generated
plugins/SmartBroadcast/config.yml.
Default behavior
rules:
- name: "players-online"
expression: "online > 0"
broadcast: true
motd: "{server_motd}"
If no rule matches, no LAN packet is sent.
Example: hide on whitelist, normal + TPS fallback
rules:
- name: "hide-when-whitelist"
expression: "whitelist == true"
broadcast: false
- name: "good-tps"
expression: "online > 0 && %server_tps_1% >= 18"
broadcast: true
motd: "{server_motd}"
- name: "fallback"
expression: "online > 0"
broadcast: true
motd: "<yellow>Server is online</yellow>"
Built-in variables
| Variable | Type | Description |
|---|---|---|
online |
number | Current online player count |
max_players |
number | Maximum player count |
port |
number | Port advertised to clients |
whitelist |
boolean | Whether the whitelist is enabled |
motd |
string | Plain-text form of the current server MOTD |
Build from source
Requirements: Java 17+, Gradle (the project includes the Gradle Wrapper).
./gradlew shadowJar
Output JAR: build/libs/SmartBroadcast-1.0.0.jar
License
GNU General Public License v3.0 — see LICENSE.
SmartBroadcast v1.0.0 (中文)
SmartBroadcast 首个稳定版本 —— 一个面向 Paper / Folia 1.20.1 的智能 Minecraft 局域网发现协议广播插件。它根据可配置的表达式规则,决定何时向局域网客户端广播服务端信息,以及广播什么 MOTD。
主要特性
- Folia 原生调度 —— 使用 GlobalRegionScheduler 与 AsyncScheduler,
plugin.yml已声明folia-supported: true - LAN 发现协议 —— 向
224.0.2.60:4445发送 UTF-8 UDP 多播包 - 多规则有序匹配 —— 自上而下检查,首条命中即生效
- 可抑制广播 —— 匹配规则可设置
broadcast: false阻止本次广播 - 丰富的表达式条件 —— 在线人数、白名单、端口、MOTD,以及 PlaceholderAPI 占位符
- MiniMessage MOTD —— 自定义 MOTD 可写 MiniMessage,广播前自动转为 legacy
§文本 - 当前服务端 MOTD ——
{server_motd}直接复用 Paper 当前 MOTD - 热重载 ——
/smartbroadcast reload(别名:/sbc、/lanbroadcast)
安装
- 在下方资源中下载
SmartBroadcast-1.0.0.jar。 - 放入服务端
plugins/目录。 - 启动服务端(Paper 或 Folia,1.20.1)。
- 如需 PAPI 占位符,请同时安装 PlaceholderAPI。
- (可选)按需调整自动生成的
plugins/SmartBroadcast/config.yml。
默认行为
rules:
- name: "players-online"
expression: "online > 0"
broadcast: true
motd: "{server_motd}"
若无规则命中,则不发送 LAN 广播包。
示例:白名单隐藏 + 正常 + TPS 兜底
rules:
- name: "hide-when-whitelist"
expression: "whitelist == true"
broadcast: false
- name: "good-tps"
expression: "online > 0 && %server_tps_1% >= 18"
broadcast: true
motd: "{server_motd}"
- name: "fallback"
expression: "online > 0"
broadcast: true
motd: "<yellow>Server is online</yellow>"
内置变量
| 变量 | 类型 | 说明 |
|---|---|---|
online |
数字 | 当前在线玩家数 |
max_players |
数字 | 最大玩家数 |
port |
数字 | 广播给客户端的端口 |
whitelist |
布尔 | 白名单是否开启 |
motd |
字符串 | 当前服务端 MOTD 的纯文本形式 |
从源码构建
要求: Java 17+、Gradle(项目已包含 Gradle Wrapper)。
./gradlew shadowJar
输出 JAR: build/libs/SmartBroadcast-1.0.0.jar
许可证
GNU 通用公共许可证 v3.0,详见 LICENSE。
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:rb5KhiXO:qSOARWcC"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:rb5KhiXO:qSOARWcC"
}

