- ◆ 游戏版本
- 1.8.8~26.x
- ◆ 服务端核心
- Paper / Purpur / Spigot / Folia
- ◆ 前置/依赖
- 无
WoPopUp
进服弹窗 —— 让每一条公告都真的被看见。
适用版本:1.8.8 ~ 26.x | 服务端:Spigot / Paper / Purpur / Folia |不需要任何前置|支持服务端在接入 Velocity / BungeeCord 的情况下使用
你是不是一直在为这些事发愁
- 服务器更新了,在群里发了重要公告,结果一多半玩家压根没看,回头还在问"改了什么",“这个功能怎么用”,“世界怎么重置了”。
- 活动开了三天,还有人在问"活动奖励在哪领"。
- 在聊天栏上喊公告,一分钟就被刷屏冲走了;写在主城全息文字、告示牌上,根本没人走近。
- 玩家一进服就埋头苦玩,你的充值活动、充值广告、引导说明他们从来没注意到。
问题不在于你写得不好,而在于你没找到一个能让玩家必须先看一眼的地方。
WoPopUp 就是为这种情况设计的,把公告变成玩家进服后第一眼看见的东西,且玩家必须点击“关闭”或“本次弹窗不再弹出”按钮,才能关闭弹窗。
你的充值活动、重要更新、玩家帮助、处罚通知,统统可以塞进这个插件,还可以加入可执行的命令。
安装必看:<u>管理员默认有wopopup.bypass,进服不会自动弹出,请先设置此权限为false。LuckPerms插件可直接执行这个命令 lp user <管理员ID> permission set wopopup.bypass false 来设置。</u>
功能特性有哪些
玩家进服 → 检测到有玩家没有点过“不再提示”的弹窗 → 你配置的界面弹出来
- 方便好配置的GUI界面弹窗。
- 界面的标题、格数、边框,每个按钮用什么物品、叫什么名字、写什么说明、执行什么命令,全部可配置。
- 直接按 ESC 关不掉,想关,只能点你给的按钮。
- 不用担心每次弹出会让玩家厌烦,只要点了“本次弹窗不再弹出”,就不会继续在进服时弹出同一个弹窗,并且不影响服主设置新的弹窗通知。
- 支持配很多个弹窗,每次进服只弹其中一个,可以按优先级挑,也可以随机。
安装:把 jar 丢进去就行
首次启动会自带一个示例弹窗,进服就能看到。
管理员默认有wopopup.bypass,进服不会自动弹出,请先设置此权限为false。LuckPerms插件可直接执行这个命令 lp user <管理员ID> permission set wopopup.bypass false 来设置。
做你自己的第一个弹窗
弹窗不在 config.yml 里配,是一个文件一个弹窗,弹窗配置文件都放在 plugins/WoPopUp/popups/ 下面。
文件名就是弹窗的 ID。 建一个 announce.yml,这个弹窗的 ID 就叫 announce。
改完执行 /wopup reload 立刻生效。
一个能直接用的最小配置
# 是否启用
enabled: true
# 标题(支持 & 颜色码)
title: '&8&l✦ &b&l服务器公告 &8&l✦'
# 界面格数:只能填 9 / 18 / 27 / 36 / 45 / 54
# 27 = 3 排,54 = 6 排
size: 27
# 空槽填充,用来做边框,不填也行
filler:
enabled: true
material: GRAY_STAINED_GLASS_PANE
name: ' '
# 按钮
buttons:
know:
slot: 27 # 格位,从 1 开始数
material: EMERALD
name: '&a&l知道了'
lore:
- '&7关闭本窗口'
close: true # 点击后关闭
玩家怎么关掉弹窗
靠按钮上的两个开关控制:
| 写法 | 效果 |
|---|---|
close: true |
点了就关,下次进服还会弹 |
dismiss: true |
点了就关,并且以后不再弹这个弹窗,不影响其他弹窗 |
两个都不写,这个按钮就是"只干活、不关窗"——比如只发一条消息提示他。
按钮点击后能干什么
在按钮的 commands 里写,一行一条。用前缀决定谁来执行:
| 前缀 | 干什么 | 例子 |
|---|---|---|
tell: |
只给点击的玩家发一条消息 | tell:&a欢迎回来! |
msg: |
同上 | msg:&7请前往官网查看活动 |
bc: |
全服广播一条消息(暂未支持bc跨服,后续更新) | bc:&e[公告] 双倍经验开启! |
player: |
让玩家自己执行一条指令(受他自己的权限限制) | player:spawn |
op: |
临时给玩家管理员权限后执行 | op:fly |
console: |
由控制台执行 | console:give %player% diamond 3 |
| 不写前缀 | 等同于 console: |
give %player% diamond 3 |
命令里想带上玩家名字,写 %player% 。
管理命令
主命令 /wopopup,也可以简写成 /wpu 或 /popup。
| 命令 | 作用 |
|---|---|
/wopup reload |
重载配置和所有弹窗,不用重启 |
/wopup list |
列出全部弹窗,以及它们的启用状态、优先级、按钮数 |
/wopup open <玩家> <弹窗ID> |
立刻给指定玩家弹出指定弹窗 |
/wopup reset <玩家> [弹窗ID] |
清掉这名玩家的「不再弹出」记录(不带 ID 就全清) |
/wopup check <玩家> |
诊断:这名玩家进服会弹哪个、其他为什么被跳过 |
权限
| 权限 | 默认给谁 | 作用 |
|---|---|---|
wopopup.admin |
OP | 使用上面所有管理命令 |
wopopup.bypass |
OP | 进服时不弹窗(给管理号、测试号用) |
注意事项
1. 用了 Velocity / BungeeCord 代理?建议把延迟调大。
打开 config.yml,把 join-delay-ticks 从默认的 20 改成 40 ~ 60。
发现无弹窗的时候可以修改试试,因为插件在发现没弹出来时会自己重试。
2. 可以设置等资源包加载完再弹。
config.yml 里的 wait-resource-pack 打开后,弹窗会等你服务器的材质包加载完成再出现。
但如果你的服务器不下发资源包,请保持 false —— 否则每个玩家都要等一次超时20秒后才能看见。另外,如果你是用代理下发资源包的,子服的插件收不到加载状态,这个开关起不到作用,也保持 false。
3. 如果你使用1.8版本,材质名按照现代写法填。
比如 GRAY_STAINED_GLASS_PANE,在 1.8 ~ 1.12 的服务器上会自动变成对应的老版玻璃板。
4. 玩家说"我不想再看了"。
他点「此条信息不再弹出」后,插件就记住了。如果你要重新给他弹,执行:
/wopup reset <玩家名>
5. 弹窗死活不弹?
先跑 /wopup check <玩家名>,它会直接检查,并告诉你卡在哪一环。还可以把 config.yml 里的 debug 改成 true,重启后进服复现一次,日志里会有完整过程。
兼容性
| 项目 | 支持情况 |
|---|---|
| 服务端 | Spigot、Paper、Purpur、Folia |
| 服务端版本 | 1.8.8 ~ 26.x |
| 前置插件 | 无 |
| Folia(多线程服务端) | 支持 |
| 服务端接入代理(Velocity / BungeeCord) | 支持(但暂不支持插件装代理端) |
| 热重载 | /wopup reload / Plugman |
常见问题
Q:能和别的欢迎插件一起用吗?
理论上能,但不保证,可以尝试。
Q:一次进服会弹几个?
只弹一个。多个弹窗同时可用时,按 config.yml 里的 selection 规则挑,priority 取优先级最高的,random 随机挑一个。
Q:玩家在大厅和主服之间来回切换,会重复弹吗?
会。这种多子服架构下,每次进子服都算一次进服。想避免重复,可以只把弹窗放在主营服上,或者给弹窗打开 first-join-only,只对首次进服的人生效。