资源图标

原创 开源 其他 AntiAd —— 反服务器宣传广告把清净还给服务器·支持Folia [1.21.1~26.x] 1.0.13

完成注册/登录后下载
版权类型
原创
插件中文名称
AntiAd
插件英文名称
AntiAd
原帖地址
https://github.com/xingxing2024/AntiAd
支持的核心(服务端)
  1. Paper
  2. Folia
  3. Purpur
语言支持
中文(简体)
适配版本(Java)
  1. 26.x
  2. 1.21
一、这个插件解决什么问题
服务器被别的服拉人,靠人力盯聊天盯不过来;但很多反广告插件的处理方式又太粗暴 —— 直接删消息、直接封号,结果误伤正常玩家,服主还得去道歉。

AntiAd 的做法是「藏」而不是「删」,而且只对确认过的广告动手:

命中的消息照常发出,但只有发送者自己看得见,其他玩家完全不知道(他自己也看不出被拦了);
命中不会自动封号:要确认对方是真的 Minecraft 服务器(查 SRV 记录 / 按 MC 协议探测端口)才计入封禁次数 —— 随手打一个不存在的网址只会被隐藏,不会被累计封号;
老玩家完全免检:按「游玩时长 + 行为分 + 近 24 小时无违规」判定,老玩家一条都不查、不扣分、不统计。
插件本体只有 148 KB,不需要装一堆前置插件。
二、功能
1. 命中不删消息(影子隐藏)

取消原版聊天事件、只把内容补回给发送者。所以即使是 TrChat、CMI 聊天这类接管了聊天的插件,照样拦得住(已实测:旧实现会被 TrChat 绕过、本实现 0 次广播)。

2. 地址检测(确定性规则,不花钱、不联网)

IPv4、十进制数字 IP(3107365173 这种写法)、域名(内置 379 个服务器常用后缀:全部两字母国别后缀 + 常见通用后缀,含 ren、icu、wang)
绕过写法归一化:全角转半角、颜色代码插字(9.9.§c9.§r9)、字间空格(9 8 . 1 3 9、m c . c o m)、(dot) / [DOT] / 点 / 。 / ·
跨消息拼条:把域名拆成好几条发也认得出来,而且只在「加上这一条才拼得出来」时才算命中,不会因为历史碎片连锁误判
不误伤:内网 / 回环 / 运营商内网地址不算;版本号(1.20.1)、日期(20261012)不会被当成地址

3. 地址情报探测 —— 确认是真服务器才计入封禁

这是本插件最有意思的一块:命中地址后,插件会免费做一次技术探测,回答「这个地址到底是不是一台 Minecraft 服务器」:

查 _minecraft._tcp 的 SRV 记录(这条记录只有 MC 客户端会查,存在基本就是 MC 服;并且按它指向的主机/端口去连,所以「域名 + SRV 指向非标准端口」的服务器也认得出来)
按 Minecraft 服务器列表协议 ping 一次,真服务器会回版本 / 在线人数 / MOTD
没确认时再抓一眼网站首页标题,看是不是「XX 我的世界服务器」这类站点
不是 25565 端口也认:mc.example.com:47514、mc.example.com: 47514、mc.example.com 端口 47514 这些写法都能取出端口
结论进入三处:AI 判断的线索、管理员的通报、以及决定这次命中算不算封禁次数
不花钱、不调 AI、全异步、有缓存、只探公网地址(不会被玩家当成内网扫描器)。
4. 行为分类(决定检查强度,不按时间算)

新玩家初始 20 分,真的在玩(挖方块、用指令)会加分,命中违规扣分:

分类条件检查强度
正常≥ 30 分只跑规则,不花 AI 额度
观望20 ~ 29 分规则 + 预筛后送 AI
重点关注≤ 19 分所有带字的消息都送 AI,封禁阈值降为 2
广告号≤ 5 分,或被本插件封过阈值 1,下一次命中直接封
老玩家(游玩时长 + 行为分 + 近 24 小时无违规)完全免检 —— 不检查、不扣分、不统计、不会被封。
5. 可选 AI 审核(可完全关闭)

规则没命中的可疑消息,连同该玩家最近发言、进服时长、命中的敏感词线索、地址情报一起交给 AI 判断:

接口任意 OpenAI 兼容:智谱 GLM-4-Flash(默认,免费)、DeepSeek、硅基流动、OpenRouter、本地 Ollama(完全离线)
敏感词只作为线索,不是直接隐藏 —— 判不判广告由 AI 决定(不会因为「卖号角」这种包含匹配误伤)
提示词可改,占位符:{self} {minutes} {hits} {words} {probe}(地址情报){context} {message}
超时 / 限流 / 报错一律放行(宁漏勿误伤),待审队列上限 32 条、超出直接放行,不会让玩家一直等
每次判定都写后台日志,/antiad cost 能看每天的调用次数、tokens 和估算费用

6. 记录与查询(SQLite,自动管理)

每次命中都记录时间、玩家、IP、类型、命中内容、整条原文和处理结果(已隐藏 / 只隐藏(没探测到服务器)/ 已封禁)。默认保留 30 天、自动清理,重启后 60 秒窗口内的累计次数会恢复。

7. 其他

非聊天入口也查:告示牌、铁砧改名、书与笔、/me 这类广播命令
玩家白名单:whitelist.players 写名字或 UUID,名单里的人完全免检(不用记着给权限)
白名单地址/域名 + 内置受信任平台表(B 站、YouTube、GitHub、mcmod、Modrinth、CurseForge 等,发这些平台的链接不会被拦)
支持 Folia(全部改用区域化调度)
命令短写:/ad c=check、b=ban、ub=unban、bh=behavior、a=ai、co=cost、r=records、t=test、rl=reload
服务器不会卡:所有数据库读写都在异步线程,聊天处理只读内存缓存

三、兼容性与注意事项​

  • 支持:Paper / Purpur / Folia 1.21.1 ~ 26.x(一份 jar 通吃,已在 Java 21 + Purpur 1.21.1、Java 25 + Purpur 26.3 实测)
  • 不支持 Spigot 和 1.21.1 以下(用了 Paper 的 AsyncChatEvent、BanListType、区域化调度等 API)
  • 不需要:Vault、经济插件、PlaceholderAPI、ProtocolLib
  • 首次启动会从阿里云镜像下载 SQLite 驱动(约 13 MB,缓存在服务端根目录 libraries/,之后不再联网)。没有外网的话,手动把 sqlite-jdbc-3.51.0.0.jar 放进 libraries/org/xerial/sqlite-jdbc/3.51.0.0/ 即可;驱动缺失时插件照常拦广告,只是不写记录
  • 隐私:记录库只在你服务器本地;开启 AI 后会把聊天内容发给你自己配置的接口(不含玩家名/UUID/IP);插件内置 bStats 匿名统计(插件 ID 34706,可在 plugins/bStats/config.yml 全局关闭),只上报插件/服务端/Java/在线人数/地区这类信息
  • 地址探测会向消息里出现的地址发一次探测请求(只看是不是服务器),只探公网地址、回环和内网一律拒绝;不想要可以 probe.enabled: false
作者
耗子
下载
0
查看
93
首次发布
最后更新

评分

0.00 星 0 次评分
后退
顶部 底部