更新日志
26.11.6-RC
本版集中在物品安全与信息可读性:把独立的 BanNbt 插件整体合并进来, 查询能直接给出维度坐标,主页与帮助页改为点击即执行。
| 改动 | 说明 |
|---|---|
| 🧪 非法 NBT 物品检测(合并 BanNbt) | 原 BanNbt 插件的功能整体并入本插件,
现在只需装一个插件、维护一份配置。检测项:超限附魔等级、
非法属性修饰符(攻击力 / 击退抗性 / 最大生命 / 移动速度 / 护甲 / 护甲韧性)、
抗性提升等级 ≥ 4。周期扫描(默认 20 秒)或手动
/linux nbtview。
26.11.6 起改为全链路拦截:玩家
/give、/replaceitem 直接拦命令;
掉落物生成、拾取、容器取出、创造复制、切到手上、出手瞬间
都前置判定;交互后 2 tick 补扫,覆盖命令方块。
另支持 DuelArena 双 OP 决斗豁免 ——
双方都是 OP 且在对局中时不清理,但每 30 秒互相提醒。
清除时向控制台与服主播报,物品名带悬浮详情
(类型、数量、原因、附魔、lore)。
不含任何硬编码玩家名 —— 豁免名单与世界全部由
nbt.exempt-players / nbt.exempt-worlds 决定,
op 不豁免,需显式写进名单 |
| 📍 查询显示维度与坐标 | /linux lookup 现在会给出玩家所在维度与精确坐标。
在线玩家实时读取当前位置;离线玩家使用
退出服务器时记录的位置;拿不到时明确显示
"无法获取",不会给出错误坐标 |
| 🖱️ 主页与帮助改为点击即执行 | 插件主页的 /linux plugins 与 /linux help
不再需要手动输入,点一下直接执行,悬停有说明文字 |
| 🔧 配置键自动补齐 | 以前新版新增的配置段永远不会出现在已有的 config.yml 里
—— 功能能用(读的是内置默认值),但服主看不到、也改不了。
现改为启动时把缺失的键补进你的 config.yml,
已有的键绝不覆盖,补齐后打印一行日志。
(判据用磁盘上的原始文件,而不是 Bukkit 的 contains()
—— 后者会把默认值算进去,导致补键永远不生效) |
| 🔍 命令拦截播报统一 | 所有拦截点统一为一种措辞:
玩家 <执行者> 尝试对 <被保护者> 使用命令 <完整命令> 已拦截!
(控制台触发时去掉"玩家 "前缀) |
| 🧹 其他 | 移除已废弃的 /linux dumpholders 调试命令;
作者显示修复(读取 plugin.yml 的作者列表);
版本号由 26.11.5-Beta 定为 26.11.6-RC |
config.yml,
已存在的键不会被覆盖,你改过的值原样保留。
也就是说,下面 26.11.3 提到的那些新增键(command-takeover 等)
现在会自动出现,不用再手动添加。
26.11.3-Alpha
本版集中在插件间对抗与防护不被绕过,全部改动均经过真机验证 (Paper 1.12.2 + 40 余个插件)。
| 改动 | 说明 |
|---|---|
| fs1 保护接管 | x1(FastMenu.jar)会拦截任何提到 fs1 的命令,
连保护对象本人与控制台都拦。现改为运行时注销 x1 的监听器、由本插件承担保护:
不修改不删除任何 jar。
fs1 本人与保护对象(Linux582021)直接放行,
其他玩家提到 fs1 一律拦截并双向通知。
开关 fs1-protection-takeover(默认 true,
建议保持开启:关掉后我们对 fs1 的放行会被 x1 抢先取消而失效) |
| 命令接管 | 纯名命令"谁先加载谁占有"。实测本服 /ban、/tempban、
/banip、/unban、/unbanip、/banlist
分别被 Essentials / AdvancedBan 占走,导致这些命令的拦截实际不生效。
现启动时自动抢回。开关 command-takeover,可用
command-takeover-exclude 排除指定插件 |
| 插件所有权 | 保护对象上线即强制授予本插件全部权限节点(权限附件层优先级高于权限插件计算值),
退出时移除。开关 owner-force-permissions |
| 审计防篡改 | audit.yml 被改成非法 YAML、结构被改写、条目损坏、解析数与文件行数不符,
或运行时条目数变少 —— 一律 SEVERE 告警并写入自检记录。
/linux logs 会显示"审计完整性 ⚠" |
| 监听器自检 | 每 30 秒检查本插件监听器数量,发现被
HandlerList.unregisterAll 摘除就重新注册并大声告警 |
| 尊重他人取消 | 原先监听器带 ignoreCancelled = true,任何插件先取消事件,
本插件的登录门禁与 fs1 保护就被整段跳过。
现保护判定不再被跳过,但"代为执行"仍尊重他人的取消 |
| 变量扩展修复 | 旧版把 PlaceholderAPI 的 PlaceholderHook 当接口做动态代理,
但它是抽象类,运行时必然抛
PlaceholderHook is not an interface,
12 个 %inl_*% 变量全部不生效。现改为真正的
PlaceholderExpansion 子类(没装 PAPI 时仍不会加载该类) |
| 口令存储升级 | PBKDF2-HMAC-SHA256 · 12 万次迭代,哈希自带算法标识, 旧 SHA-256 哈希在登录成功后自动升级 |
| 其他加固 | 控制台路径不再撤销其他插件的取消裁决;服主权限授予失败不再静默;
进入服务器立即授予权限(去掉 1 tick 空窗);
/linux logs 不再输出服务端构建号与 Java 版本 |
| 🗑️ 移除「突破 fs1 拦截」通道 | 该通道能借 fs1 / 控制台身份执行任意含 fs1 的命令,本质是个提权面。
既然 fs1 与服主现在直接放行,它已无存在意义,故整体删除:
Fs1Refuse 类、/linux fs 命令、
fs1-refuse-enabled 与 fs1-offline-console 两个配置项、
%inl_fs1% 占位符一并移除 |
| 👤 新增普通玩家帮助菜单 | 此前任何"不是服主、不是协管、也不是管理员"的玩家,打开 /linux help
都会看到一整份管理员帮助(封禁、解封、查询 IP…),
既用不了那些命令,也会以为服务器管理很随意。
现补上普通玩家这一档,只列 5 条真正可用的命令;
帮助菜单改为四档分流:服主 / 管理员 / 协管 / 玩家 |
command-takeover、command-takeover-exclude、
owner-force-permissions 是当时新增的键。
从 26.11.5 起,插件启动时会自动把缺失的键补进 config.yml,
无需再手动添加;已有键不会被覆盖。若你的配置文件里仍看不到这些段,
说明服务端还在跑旧版 jar,重启服务器即可。
更早的版本变更请见插件目录下的 FIXES-*.md 记录文件。
1感谢列表
本插件的开发与维护离不开以下贡献者。
| 贡献者 | 身份 | 贡献 |
|---|---|---|
| Linux582021 | 作者 | 插件作者与主要维护者:整体架构、封禁 / 举报 / 协管 / 保护体系、配置与文档 |
| 星白喵喵 | 作者 | 提供 BanNbt 插件源码。其非法 NBT 检测逻辑已成为本插件的一部分,
即 /linux nbtview 与周期扫描功能;
检测阈值与判定规则依据其原始实现 |
关于非法 NBT 检测的来源
该功能原本是一个独立插件 BanNbt,源码由 星白喵喵 提供。
现已整体合并进 InTheNameOfLinux,因此不再需要单独安装 BanNbt.jar。
- 沿用其原始实现:附魔等级上限、属性修饰符阈值(攻击力 / 击退抗性 / 最大生命 / 移动速度 / 护甲 / 护甲韧性)、抗性提升压缩规则。
- 在此基础上补充:豁免玩家与世界配置化(不再硬编码名字)、饰品兼容(
#pscharm:标记)、悬浮详情播报、/linux nbtview手动扫描。
/linux 打开主页时,显示的作者列表直接读取 plugin.yml,
因此会同时显示 Linux582021 与 星白喵喵。
2快速开始
3 步完成安装,5 分钟即可上手。适用于 Minecraft 1.12.2(Paper / Spigot)。
环境要求
| 项目 | 要求 |
|---|---|
| 服务端 | Paper 或 Spigot 1.12.2 |
| Java | Java 8(推荐)或 Java 17/21(需加 --add-opens 参数) |
| 内存 | 建议 ≥ 2GB |
| 依赖插件 | 无硬性依赖,可选 XlandCore / 假人插件 / XlandStop |
安装步骤
- 获取插件 请联系 Linux582021(QQ:2703441387)获取插件文件。
-
放入插件目录
将
InTheNameOfLinux.jar放入服务器plugins/目录。 - 启动服务器 首次启动会生成默认配置,控制台应输出"首次初始化登录密码"。
-
登录验证
保护对象(默认
Linux582021)进服后,输入/linux login,然后在聊天栏发送初始密码password。 -
修改密码
登录成功后,执行
/linux chargepw 新密码修改密码(至少 6 位)。
password 是明文公开的,未修改前任何人都可以登录。
/linux login 密码 这种形式会被服务端日志记录(Minecraft 原生行为)。而聊天栏消息会被插件拦截,控制台和日志完全看不到密码。
3命令详解
登录相关
| 命令 | 说明 | 权限 |
|---|---|---|
/linux login |
进入密码输入模式,在聊天栏发送密码即可验证身份 | 仅 Linux582021 |
/linux chargepw <新密码> |
修改登录密码(需先登录,至少 6 位) | 仅 Linux582021 |
/linux login <密码>
26.11.2 起已移除该用法。服务端会在命令交给插件之前就把它写进
logs/latest.log,等于把明文口令落盘。请只用
/linux login 后在聊天栏发送密码。
/report 是本插件的正式命令(启动时从占用者手里抢回,别名 /jb),举报流程由本插件负责(编号、接受/驳回、回执、分流通知);
行为记录交给 NalxerPDR。举报一旦提交,被举报人会
自动进入录制,事后用 /nar rcd <编号> 逐页回放。没装 NalxerPDR 时举报照常工作,只是不做自动录制 —— 两者互相独立。
命令拦截:黑名单 / 白名单两种模式
拦截规则是“命令里提到保护对象(protected-player)时才判断”,
所以不会牵连其它无关命令。保护对象本人不受限制。
按词匹配,Linux582021x 这类不会被误认为保护对象。
| 配置项 | 默认 | 作用 |
|---|---|---|
command-filter-mode |
blacklist |
拦截模式。blacklist = 命中名单就拦;
whitelist = 不在名单就拦 |
blocked-commands |
ban / tempban / banip / kick / linux ban / xlban … | 黑名单模式使用:命中的命令会被拦下 |
whitelist-commands |
[] |
白名单模式使用:只有这些命令被允许, 其余提到保护对象的命令一律拦下 |
| 命令 | 白名单模式 | 黑名单模式(默认) |
|---|---|---|
/list | 放行(在白名单里) | 放行 |
/spawn | 放行(没提到保护对象) | 放行 |
/gamemode 1 Linux582021 | 拦 | 放行 |
/tp Steve Linux582021 | 拦 | 放行 |
/tp Linux582021 Steve | 拦(提到了就拦) | 放行 |
/give Linux582021 diamond | 拦 | 放行 |
/kill Linux582021 | 拦 | 放行 |
/msg Linux582021 hi | 拦 | 放行 |
/ban Linux582021 原因 | 拦 | 拦 |
/gamemode 1 Linux582021x | 放行(不是保护对象) | 放行 |
/kill @e · /gamemode 1 @e · /tp @s ... |
放行(没点名,黑名单不认选择器) | 拦 |
/s · /e · /linux help |
放行 | 放行 |
注意:黑名单模式只认明确点名(全名 / UUID), 不认
@ 选择器与名字前缀 —— 所以 /kill @e 这类
在黑名单模式下会放行(原生里它确实会作用到保护对象)。
要连这类一起防住,请把 command-filter-mode 改成
whitelist;白名单模式仍然判定选择器与前缀。
command-filter-mode: whitelist 而
whitelist-commands 为空时,任何提到保护对象的命令都会被拦下。
配置校验会就此告警(/linux reload 时会打印)。
- 命令简写 / 别名会被还原:名单里写
gamemode, 玩家敲/gm一样命中;写teleport,/tp一样命中(走 CommandMap 解析实际命令名) - 命名空间前缀被剥掉:
/minecraft:ban、/essentials:msg与裸名等价 - 大小写不敏感:
/GM 1 LINUX582021同样命中 - UUID 写法也认:
/tp Steve <保护对象UUID>原文里没有名字,照样判定为“提到保护对象” - 目标用名字简写也认:
/tp Steve Linux—— 服务端会把Linux按前缀补全成Linux582021, 所以判定也按前缀走(有歧义时不当作命中) - 目标用 @ 选择器也认:
/gamemode 1 @p、@s、@a、@e[type=player]都可能作用到他 → 拦;@e[type=zombie]、@e[name=!他]明确不是他 → 放行 - 按词匹配,不是子串:
Linux582021x不会被误判
| 写法 | 是否命中保护对象 |
|---|---|
/gamemode 1 Linux582021 | 命中 |
/gm 1 Linux582021(简写) | 命中 |
/minecraft:gamemode 1 Linux582021 | 命中 |
/GM 1 LINUX582021 | 命中 |
/tp Steve <UUID> | 命中 |
/gamemode 1 Linux582021x | 不命中(不是他) |
/gamemode 1 SomeoneElse | 不命中 |
目标参数的各种写法(这是最容易漏的一层 —— 玩家可以不写全名)
| 目标写法 | 是否算作用到他 | 说明 |
|---|---|---|
Linux582021 | 算 | 全名 |
LINUX582021 | 算 | 大小写不敏感 |
<UUID> | 算 | UUID 写法 |
Linu / Li | 算 | 唯一前缀,服务端会补全成他 |
@p @s @a @r @e |
算 | 可能作用到他(@p 与站位有关,静态证不了不是) |
@e[type=player] | 算 | 选择玩家 |
@e[name=Linux582021] | 算 | 指名道姓 |
@e[type=zombie] | 不算 | 明确不是玩家 |
@e[name=!Linux582021] | 不算 | 明确排除他 |
Linux582021x | 不算 | 不是他 |
注意:@p / @a 这类保守判定意味着
白名单模式下「/gamemode 1 @p」也会被拦
—— 因为它可能落到保护对象身上。这是刻意的:宁可多拦一次,不能漏一次。
确需放行就把对应命令加进 whitelist-commands。
封禁相关
| 命令 | 说明 | 权限 |
|---|---|---|
/ban <玩家> [时间] [原因] | 封禁玩家。省略时间 = 永久封禁;写了时间(如 30m / 12h / 7d / 裸秒数)则是临时封禁,到期自动解封 | ban |
/report <玩家> <理由>别名 /jb | 举报玩家。本插件正式命令,启动时会从占用者手里抢回来(NalxerPDR 也声明了 /report)。提交后自动让 NalxerPDR 记录被举报人的行为(位置 / 破坏与放置方块 / 造成伤害 / 指令 / 聊天),用 /nar rcd <编号> 回放 | |
/linux ban <玩家> [时间] [原因] | 与 /ban 等价;省略时间 = 永久(拦截列表统一按 /linux ban 口径处理) | ban |
/tempban <玩家> <时间> [原因] | 临时封禁,到期自动解封(/ban 已支持同样写法,此命令保留兼容) | tempban |
/banip <玩家/IP> [原因] | 封禁 IP 地址,同 IP 玩家会被踢出 | banip |
/unban <玩家> | 解封玩家(同时删除最近一条封禁历史) | unban |
/unbanip <IP> | 解封 IP | unbanip |
功能封禁(协管可用)
| 命令 | 说明 | 权限 |
|---|---|---|
/linux banblock <玩家> [时间] [原因] | 禁止方块交互(挖掘、放置、交互) | 协管 |
/linux banmove <玩家> [时间] [原因] | 禁止移动,玩家会被冻结在原位置 | 协管 |
/linux banmsg <玩家> [时间] [原因] | 禁言,拦截聊天、私聊、/say 等 | 协管 |
/linux banall <玩家> [时间] [原因] | 以上三者合一,全面封禁 | 协管 |
/linux unbanblock <玩家> | 解除方块交互禁用 | 协管 |
/linux unbanmove <玩家> | 解除移动禁止 | 协管 |
/linux unbanmsg <玩家> | 解除禁言 | 协管 |
/linux unbanall <玩家> | 解除所有功能封禁 | 协管 |
查询与信息
| 命令 | 说明 | 权限 |
|---|---|---|
/linux lookup <玩家/IP> | 查询 UUID、IP、身份、游玩时长、封禁历史,并显示所在维度与坐标(在线实时读取;离线用退出时记录的位置;拿不到则显示"无法获取") | lookup |
/linux logs [页码] | 插件状态总览:运行时、开关状态、各数据文件(含记录数/大小/落盘是否成功)、定时任务、以及 XlandCore / 假人插件 / XlandStop / PlaceholderAPI 的联动状态。分页显示,每页 10 行 | lookup |
/linux audit [玩家] [页码] | 审计日志:谁在什么时候改了什么(惩罚 / 权限开关 / 认证 / 举报 / 拦截)。分页显示,每页 10 行;带玩家名时只看该玩家相关记录 | lookup |
/linux seenip <IP> | 查询使用过该 IP 的所有玩家 | lookup |
/linux history <玩家> | 查看玩家完整封禁历史 | history |
/linux clearhistory <玩家> | 清除玩家全部历史(需二次确认) | clearhistory |
/banlist [页码] | 查看所有封禁记录(账号 + 功能),可点击翻页 | ban |
/linux checkop | 检查自己的身份与管理权限(服主 / 管理员 / 协管都能用,不需要额外权限) | 所有人 |
/linux checkop list | 管理层列表:直接读原版 ops.json 与 plugins/XlandCore/config.yml,按 服主 → 副服主 → 协管 → 管理员 排序并标注在线状态。每次执行都会同步身份记录,改完权限立刻反映 | lookup |
/hide | 切换隐身(等价于执行 /vanish),不带参数。仅保护对象本人可用 | 仅 Linux582021 |
/linux plugins | 插件联动状态一览:XlandCore 身份识别、假人插件(含假人数量)、XlandStop 监听、LinuxTitle 头衔、命令接管状态、非法 NBT 检测状态;末尾的「拓展插件」小节(青色菱形 + 淡紫名字,和联动行的金色区分)列出给本插件加功能的外挂 —— LinuxACE 反作弊(强度 / 检查数 / 踢出阈值)与 LinuxChestGUI 箱子面板,装了才显示。主页可点击直达 | lookup |
/linux nbtview | 立即扫描并清除在线玩家的非法 NBT 物品(不等周期扫描)。结果播报到控制台与服主,物品名带悬浮详情 | nbtview |
/linux cmd <玩家> <命令> | 以指定玩家身份执行命令 | sudo |
/linux refuse | 查看 / 修改命令拦截列表 | reload |
/linux reload | 重载配置文件,并回报配置校验结果 | reload |
/linux help [页码] | 分页帮助菜单,按身份四档分流:服主 / 管理员 / 协管 / 玩家。可点击翻页、悬停查看说明 | 所有人 |
时间格式
支持单位:s(秒)、m(分钟)、h(小时)、d(天)、w(周)。可以组合使用。
也可以只写数字,按秒计算(例如 /tempban Steve 600 刷屏 = 10 分钟)。
0、abc、1x、超长数字(如 99999999999999999999h)这类输入会直接报错中止。
26.11.2 之前这些输入可能被静默当成"永久封禁",升级后不会再有这个风险。
4举报系统 NEW
插件内置举报系统,玩家提交举报后,管理层调查处理,结果自动通知当事人与服主。
提交流程
-
玩家提交举报
执行
/linux report <玩家> <原因>,提交后进入 1 分钟全局冷却。 - 智能分流通知 根据被举报人身份决定通知对象(见下表)。
- 24 小时调查冷却 举报提交后 24 小时内不能接受 / 驳回,用于调查。
-
管理层处理
管理员 / 协管执行
/linux report accept <ID>或reject <ID>,可附加备注。 - 结果通知 举报人上线后立即收到处理结果,服主也会收到同步广播。
智能分流规则
| 被举报人身份 | 通知对象 | 说明 |
|---|---|---|
| 服主(Linux582021) | 仅服主本人 | 不会广播给其他管理层 |
| 协管 / 管理员 / 副服主 | 其他管理层 | 不会通知被举报人本人 |
| 普通玩家 | 所有管理层 | 举报人自己除外 |
离线消息缓存
- 服主离线时收到新举报 → 消息暂存到
reports.yml。 - 服主上线 10 秒后自动推送所有暂存消息。
- 暂存上限 100 条,超出丢弃最早的。
- 举报人离线期间的处理结果也会缓存,上线后延迟 3 秒推送。
清理举报记录
支持多种清理模式,全部需要二次确认。
/linux report clear <模式> 后,需要再执行 /linux report clear confirm 才会真正清空。
确认有效期 5 分钟,过期自动取消。
5二次确认机制 NEW
为了防止误操作,以下命令都需要二次确认才能执行。确认有效期统一为 5 分钟。
| 操作 | 第一步 | 第二步(确认) |
|---|---|---|
| 清空玩家历史 | /linux clearhistory Steve |
/linux clearhistory confirm |
| 清空已处理举报 | /linux report clear handled |
/linux report clear confirm |
| 清空全部举报 | /linux report clear all |
/linux report clear confirm |
| 清空待广播消息 | /linux report clear pending |
/linux report clear confirm |
| 清空玩家相关举报 | /linux report clear player Steve |
/linux report clear confirm |
| 删除指定举报 | /linux report clear id 3 |
/linux report clear confirm |
确认机制规则
- 第一步输入后,插件会显示"确认要清空 XXX 吗?"并给出
confirm提示。 - 玩家需要在 5 分钟内执行 confirm,过期自动取消。
- 如果重复执行第一步,上一次待确认操作会被替换(会显示提示)。
- 玩家退出游戏时,待确认状态会被清除。
- 控制台执行时无需二次确认,直接生效。
- 清空待广播消息(pending)时,如果当前没有待广播消息,会提示无需清空。
/linux report clear all 会删除全部举报记录,请谨慎使用。
6权限说明
插件使用三级权限体系:OP / 协管 / 普通玩家。/linux help
会据此自动分流,只列出该身份真正能用的命令。
帮助菜单的四档分流
/linux help [页码] 每页 5 条,底部可点击翻页。目录按身份切换:
| 身份 | 看到的内容 |
|---|---|
服主(protected-player) |
完整目录:管理命令 + 功能封禁 + 举报 + 服主专用(登录 / 改密 / 拦截开关) |
| 管理员(OP / 持有管理权限节点) | 管理命令 + 功能封禁 + 举报 |
协管(XlandCore 身份或 inthenameoflinux.moderator) |
仅功能封禁 + 举报处理(不能账号封禁、不能清空举报) |
| 普通玩家 | 仅 2 条:/linux help、/linux report <玩家> <原因> |
| 权限节点 | 说明 | 默认 |
|---|---|---|
inthenameoflinux.reload | 重载配置、修改拦截列表、开关控制台拦截 | OP |
inthenameoflinux.ban | 使用 /ban /xlban /banlist | OP |
inthenameoflinux.tempban | 使用 /tempban | OP |
inthenameoflinux.banip | 使用 /banip | OP |
inthenameoflinux.unban | 使用 /unban | OP |
inthenameoflinux.unbanip | 使用 /unbanip | OP |
inthenameoflinux.lookup | 使用 /linux lookup / seenip / fp | OP |
inthenameoflinux.history | 使用 /linux history | OP |
inthenameoflinux.clearhistory | 使用 /linux clearhistory | OP |
inthenameoflinux.penalty | 完整惩罚权限(banblock / banmove / banmsg / banall 等) | OP |
inthenameoflinux.report | 查看 / 处理举报(list / info / accept / reject) | OP / 协管 |
inthenameoflinux.report.admin | 清空举报记录(clear 系列命令) | OP |
inthenameoflinux.nbtview | 使用 /linux nbtview 手动扫描并清除非法 NBT 物品 | OP |
inthenameoflinux.moderator | 协管权限节点(XlandCore 未加载时的回退) | 否 |
inthenameoflinux.sudo.wildcard | 允许使用 sudo 通配符(everyone / all / @a)驱动其他在线玩家执行命令 | OP |
协管说明
- 协管身份优先从 XlandCore 读取(身份 = "协管",且需确实持有
xlcore.mod)。 - 如果 XlandCore 未加载,则回退到权限节点
inthenameoflinux.moderator。 - 协管可用 8 个功能封禁命令,不能使用账号封禁(/ban、/tempban、/banip)。
- 协管可以查看 / 处理举报(list / info / accept / reject),但不能清空举报(需要 report.admin)。
- 协管封禁时长上限为 7 天,不能执行永久封禁;
/tempban也受同一上限约束(26.11.2 起补齐)。 - 协管的帮助菜单和 TAB 补全只显示可用命令。
/linux banmsg Steve 1h 刷屏 ✅ ·
/linux banmsg Steve 刷屏 ❌省略时长会被当作"永久",而协管无权永久封禁,命令会被直接拒绝并提示 「协管不能执行永久封禁,最长 7 天」。超过 7 天同样会被拒绝。
也就是说:给协管 OP 会让他获得完整的封号权限,按最小权限原则不要这样做。
身份数据从哪来
/linux checkop list、/linux lookup、/linux seenip
都会读取服务器上的权威配置,而不是玩家登录时才记录的身份缓存。
| 身份 | 数据来源 |
|---|---|
| 管理员 | 服务器根目录的原版 ops.json |
| 服主 / 副服主 / 协管 | plugins/XlandCore/config.yml 的
owner / co-owners / moderators |
userip.yml(立即落盘),
所以改完权限立刻准确,没进过服的管理员也能被查到。
协管 / 管理员 权限对照
| 能力 | 协管 | 管理员(非 Linux) | 服主 |
|---|---|---|---|
| 功能封禁(禁言 / 禁移动 / 禁交互 / 全面) | ✅ | ✅ | ✅ |
| 举报处理(list / info / accept / reject) | ✅ | ✅ | ✅ |
/linux checkop(身份自检) | ✅ | ✅ | ✅ |
账号封禁 /ban /tempban | ❌ | ✅ | ✅ |
IP 封禁 /banip | ❌ | ✅ | ✅ |
解封 /unban /unbanip | ❌ | ✅ | ✅ |
封禁列表 /banlist | ❌ | ✅ | ✅ |
| 封禁历史 / 清除历史 | ❌ | ✅ | ✅ |
查询 /linux lookup seenip | ❌ | ✅ | ✅ |
举报清理 report clear | ❌ | ✅ | ✅ |
| 重载配置 / 审计日志 / 状态总览 | ❌ | ✅ | ✅ |
隐身 /hide | ❌ | ❌ | ✅ |
| 拦截列表 / 控制台开关 / NBT 扫描 / 改密 | ❌ | ❌ | ✅ |
简言之:协管只能"限制功能",管理员可以真正"封号"; 涉及插件配置与服主安全的操作(拦截列表、控制台开关、NBT 扫描、改密、隐身) 只有服主本人能做 —— 这是防止管理员借插件配置提权的边界。
协管使用说明-26.11.5正式版.txt 与 管理员使用说明-26.11.5正式版.txt。
7配置说明
所有配置都在 plugins/InTheNameOfLinux/config.yml,修改后执行 /linux reload 即可生效(无需重启)。
关键配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
protected-player | Linux582021 | 重点保护的玩家名 |
blocked-player | fs1 | 受保护、禁止他人提及的玩家名 |
fs1-protection-takeover | true | 是否接管 x1 插件(FastMenu.jar)的 fs1 保护。x1 会拦截任何提到 fs1 的命令(含保护对象本人与控制台),导致突破通道不可用;开启后本插件会在运行时注销 x1 的监听器(不修改、不删除 jar,重启即恢复) |
fs1-hide-join-message | true | 是否隐藏 fs1 的进服提示(接管自 x1 的 setJoinMessage(null)) |
command-takeover | true | 是否把被其他插件占用的纯名命令抢回本插件。Bukkit 的命令名是"谁先加载谁占有",Essentials / AdvancedBan 等更早加载的插件会占走 /ban、/tempban 等,导致本插件对它们的拦截实际不生效 |
command-takeover-exclude | [] | 不要抢这些插件的命令(按 plugin.yml 里的 name 匹配,忽略大小写)。例:想让 Essentials 保留 /ban 就填 [Essentials] |
owner-force-permissions | true | 保护对象上线时,强制授予本插件 plugin.yml 里声明的全部权限节点。即使权限插件漏配或有人剥夺节点,服主本人也一定能管理自己的插件(退出时自动移除,恢复权限插件计算) |
appeal-group | 925200745 | 封禁踢出消息里的申诉群号 |
broadcast-ban | true | 是否全服广播封禁消息(false 只广播给管理员) |
refuse-enabled | true | 全局命令拦截开关 |
console-cmd-enabled | true | 控制台 fs1 保护(26.11.3 起默认开启)。控制台 / Rcon 发出的、提到 blocked-player(fs1)的命令一律拦截,判定与玩家路径一致(按独立参数匹配,/say fs1x 不会误拦)。与登录态无关 —— 即使你不在线也会拦。原"突破通道"豁免已移除,现在没有例外 |
| 命令被拦截时的通报(26.11.5 起统一措辞): 统一文案: 玩家 <执行命令的玩家> 尝试对 <被保护的玩家> 使用命令 <完整命令> 已拦截!执行者是控制台 / Rcon 时去掉"玩家 "前缀: 控制台 尝试对 fs1 使用命令 /ban fs1 已拦截!命令统一带斜杠,不会出现 ban fs1 这种缺斜杠的写法。此文案由全部拦截点共用(玩家命令、控制台命令、sudo、命令接管路径),便于日志检索与玩家理解。 | ||
| 非法 NBT 物品检测(合并自原 BanNbt 插件) —— 详见下方「非法 NBT 检测」章节 | ||
nbt.enabled | true | 非法 NBT 检测总开关 |
nbt.scan-seconds | 20 | 周期扫描间隔(秒)。设为 0 = 关闭周期扫描,仍可用 /linux nbtview 手动扫 |
nbt.exempt-players | "" | 豁免玩家(逗号分隔,大小写不敏感)。留空 = 所有人(含 op)都会被检查。op 不会自动豁免,需要豁免就显式写进来 |
nbt.exempt-worlds | "" | 豁免世界(逗号分隔):这些世界里跳过物品检测。用于兼容带自定义属性的机器/道具 |
nbt.skip-charms | true | 跳过带饰品标记(lore 里的 #pscharm:)的物品,避免误删玩家购买的饰品 |
nbt.compress-resistance | true | 把抗性提升等级 ≥ 4 压回 3 级(原 BanNbt 行为),仅在非豁免世界生效 |
nbt.max-enchant-level | 20 | 附魔等级上限,超过即判定为非法并清除 |
nbt.max.* | — | 属性修饰符上限:attack-damage 50、knockback-resistance 1、max-health 10、movement-speed 0.5、armor 30、armor-toughness 20 |
tempban-reminder.enabled | true | 临时封禁即将解封时的全服提醒开关 |
tempban-reminder.advance-seconds | 60 | 提前多少秒提醒(服务器重启后提醒任务会自动重建) |
penalty-sync.interval-seconds | 60 | 功能封禁缓存与文件对齐间隔 |
data-save.interval-seconds | 30 | 数据文件批量写盘间隔(设为 0 = 每次立即写盘) |
登录配置
协管配置
""),重启后会自动重置为 password。
完整配置参考
下表列出 config.yml 里的全部配置项与默认值,按插件里的顺序排列。缺项会在启动时自动补齐,已有项不会被覆盖。
| 配置项 | 默认值 | 说明 |
|---|---|---|
| 保护对象与基础 | ||
protected-player | Linux582021 | 重点保护的玩家名(服主本人)。他会获得本插件全部权限节点;其他人对他执行命令会被拦截并双向通知。填错会导致"服主自己反被限制",请填准。 |
blocked-player | fs1 | 另一个受保护的玩家名。任何其他玩家在命令里提到这个名字都会被拦下,并通知双方(按独立参数匹配,/msg fs1x 不会误拦)。留空 = 关闭该项保护。 |
appeal-group | 925200745 | 申诉群号,显示在封禁踢出提示里,让被封玩家知道去哪申诉。 |
broadcast-ban | true | 执行封禁时是否全服广播。设为 false 则只广播给管理员。 |
| 命令拦截 | ||
blocked-commands | xlcore ban, xlcore kick, ban, banip, kick, tempban, linux ban, xlban | 拦截命令列表。普通玩家执行列表里的命令会被拦下;保护对象与 blocked-player 本人不受限。两种写法:ban(只匹配命令名)、xlcore ban(带空格 = 匹配整行文字)。 |
refuse-enabled | true | 上面那个拦截列表的总开关。关掉后普通玩家也能随意执行列表里的命令,请谨慎。 |
console-cmd-enabled | true | 控制台 / Rcon 发出的、提到 blocked-player 的命令是否也拦截。与登录态无关 —— 服主不在线时照样拦。 |
| 提醒与定时任务 | ||
tempban-reminder.enabled | true | 临时封禁即将到期时,是否全服提醒。 |
tempban-reminder.advance-seconds | 60 | 提前多少秒提醒。注意:该提醒任务在服务器重启后会自动重建,不会丢失。 |
| 命令接管与权限 | ||
command-takeover | true | 是否把被其他插件占用的纯名命令抢回本插件。Bukkit 的命令名是"谁先加载谁占有",Essentials / AdvancedBan 等比本插件先加载的插件会占走 /ban、/tempban 等,导致本插件对它们的拦截实际不生效。(如果你的服用 Essentials 管封禁,可以关掉这项。) |
command-takeover-exclude | [] | 不抢这些插件的命令(按 plugin.yml 里的 name 匹配,忽略大小写)。例:想让 Essentials 保留 /ban 就填 [Essentials]。 |
owner-force-permissions | true | 保护对象上线时,强制授予本插件 plugin.yml 里声明的全部权限节点。即使权限插件漏配或有人剥夺节点,服主本人也一定能管理自己的插件(退出时自动移除)。 |
| fs1 保护(接管自 x1 插件) | ||
fs1-protection-takeover | true | 是否接管 x1 插件(FastMenu.jar)的 fs1 保护。x1 会拦截任何提到 fs1 的命令(连本人与控制台都拦),开启后本插件会在运行时注销 x1 的监听器(不改不删 jar,重启即恢复),改由本插件承担保护:fs1 本人与服主放行,其他玩家照样拦。建议保持开启,否则我们的"放行"会被 x1 抢先取消而失效。 |
fs1-hide-join-message | true | 是否隐藏 fs1 的进服提示(接管自 x1 原本的 setJoinMessage(null))。 |
| 数据同步与定时写盘 | ||
penalty-sync.enabled | true | 是否开启功能封禁记录的定时同步。 |
penalty-sync.interval-seconds | 60 | 内存缓存与 penalty.yml 对齐的间隔(秒)。 |
data-save.interval-seconds | 30 | 数据文件批量写盘的间隔(秒)。设为 0 = 每次改动立即写盘(更安全但更频繁)。 |
| 假人插件联动 | ||
fakeplayer.info-class | example.fakeplayer.FakePlayerInfo | 假人插件里保存假人信息的类名。一般不用改。 |
fakeplayer.init-delay-seconds | 20 | 插件启动后延迟多久初始化假人联动(秒)。给假人插件留加载时间。 |
fakeplayer.sync-interval-seconds | 60 | 假人列表同步间隔(秒)。 |
| 登录验证 | ||
login.password-salt | "" | 不要手改。密码的随机盐,首次运行自动生成。 |
login.password-hash | "" | 不要手改。密码哈希(PBKDF2-HMAC-SHA256 · 12 万次迭代)。想重置密码就删掉这两项的值,重启后会自动生成新初始密码并打印到控制台。 |
login.min-length | 6 | 新密码的最短长度。 |
login.fail-delay-seconds | 3 | 密码输错后的等待时间(秒)。 |
login.max-fails | 5 | 连续输错几次后锁定账号。 |
login.lockout-seconds | 300 | 锁定时长(秒)。默认 5 分钟。 |
login.timeout-seconds | 90 | 进服后多久没完成验证就踢出(秒)。想宽松点就调大。 |
login.lockout-until | 0 | 运行时状态,不要手改。锁定截止时间戳,插件自己维护。 |
login.fail-count | 0 | 运行时状态,不要手改。当前连续失败次数。 |
login.last-fail-time | 0 | 运行时状态,不要手改。最后一次失败的时间戳。 |
| 协管 | ||
moderator.enabled | true | 是否启用协管体系。关闭后没有人会被识别为协管。 |
moderator.max-duration-days | 7 | 协管能执行的最长封禁时长(天)。防止协管滥用长期封禁;协管不能执行永久封禁。 |
moderator.fallback-permission | inthenameoflinux.moderator | 协管权限节点。XlandCore 未加载、或 XlandCore 没给身份时的回退判定依据。 |
| 非法 NBT 检测 | ||
nbt.enabled | true | 非法 NBT 物品检测的总开关。 |
nbt.scan-seconds | 20 | 周期扫描间隔(秒)。设为 0 = 关闭周期扫描,仍可用 /linux nbtview 手动扫一次。 |
nbt.exempt-players | "" | 豁免玩家(逗号分隔,大小写不敏感)。留空 = 所有人(含 op)都会被检查。op 不会自动豁免 —— 需要豁免谁就把名字写进来。 |
nbt.exempt-worlds | "" | 豁免世界(逗号分隔):这些世界里跳过物品检测。用于兼容会给道具加自定义属性的自定义世界。 |
nbt.skip-charms | true | 跳过带饰品标记(lore 里的 #pscharm:)的物品,避免误删玩家花点卷买的饰品。建议保持开启。 |
nbt.compress-resistance | true | 把抗性提升等级 ≥ 4 压回 3 级(原 BanNbt 的行为)。只在非豁免世界生效。 |
nbt.max-enchant-level | 20 | 附魔等级上限,超过即判定为非法并清除该物品。 |
nbt.max.attack-damage | 50.0 | 属性修饰符 generic.attackDamage 的数值上限,超过即清除。 |
nbt.max.knockback-resistance | 1.0 | 属性修饰符 generic.knockbackResistance 的数值上限,超过即清除。 |
nbt.max.max-health | 10.0 | 属性修饰符 generic.maxHealth 的数值上限,超过即清除。 |
nbt.max.movement-speed | 0.5 | 属性修饰符 generic.movementSpeed 的数值上限,超过即清除。 |
nbt.max.armor | 30.0 | 属性修饰符 generic.armor 的数值上限,超过即清除。 |
nbt.max.armor-toughness | 20.0 | 属性修饰符 generic.armorToughness 的数值上限,超过即清除。 |
8非法 NBT 检测 NEW
本功能由原独立插件 BanNbt 整体合并而来:现在只需装一个插件、维护一份配置,
不必再单独摆放 BanNbt.jar。
检测哪些东西
| 检测项 | 判定 | 处理 |
|---|---|---|
| 超限附魔 | 任一附魔等级 > nbt.max-enchant-level(默认 20) | 清除该物品 |
| 非法属性数值 | 属性修饰符的数值为 NaN 或 Infinity | 清除该物品 |
| 超限属性 | 攻击力 / 击退抗性 / 最大生命 / 移动速度 / 护甲 / 护甲韧性 超过配置上限 | 清除该物品 |
| 抗性提升 | 效果等级 ≥ 4 | 压回 3 级(不删物品) |
什么时候检测
- 周期扫描:默认每 20 秒一次,间隔由
nbt.scan-seconds控制。设为 0 可关闭周期扫描。 - 手动扫描:执行
/linux nbtview立即扫一次全体在线玩家,不必等周期。
触发后会发生什么
- 违规物品被清除(抗性提升只压级,不删物品)。
- 向控制台与服主播报,物品名带悬浮详情: 鼠标移上去可看到类型、数量、判定原因、附魔、lore,便于确认是不是误判。
- 播报文案:
玩家 <玩家名> 持有非法NBT物品,物品为 <物品名> 已清除非法NBT物品。
豁免与兼容
| 配置项 | 作用 |
|---|---|
nbt.exempt-players | 豁免名单(逗号分隔,大小写不敏感)。op 不豁免,需要豁免必须显式写进名单 |
nbt.exempt-worlds | 这些世界里跳过物品检测。用于兼容会给道具加自定义属性的自定义世界 |
nbt.skip-charms | 跳过带饰品标记(lore 里的 #pscharm:)的物品,避免误删玩家花点卷买的饰品 |
nbt.compress-resistance | 是否执行"抗性提升压级"。仅在非豁免世界生效,避免削掉自定义世界有意给玩家的效果 |
/linux reload 即可生效。
9插件联动
XlandCore
用于读取玩家身份(服主 / 副服主 / 管理员 / 协管)。协管体系依赖此插件。
- 如果 XlandCore 在服务器启动时已加载,静态块会立即检测到。
- 如果 XlandCore 后加载,插件会在 20 秒后延迟检测一次。
- 执行
/linux reload也会重新检测。
xlcore.admin 与 xlcore.bypass.* 都等同于完全管理员权限,
副服主(co-owners)同样拥有管理员权限。持有它们的人可以执行
/xlcore add|remove 管理协管列表。2026-09-29 修复:
/xlcore add|remove 原先未校验玩家名,
而该名字会被拼进以控制台身份执行的 lp user … 命令,
输入 Steve permission set * true 这类内容即可借控制台把
* 权限刷给任意玩家。现已加入严格玩家名校验
(仅允许 1-16 位字母/数字/下划线),并在拼接出口处二次校验。
升级后若输入不合法名字会收到"玩家名不合法"提示,属正常防护。
假人插件(FakePlayerPlugin)
同步假人数据,用于 /linux fp 和查询识别。
config.yml 修改 fakeplayer.info-class 的值。
PlaceholderAPI 变量
装好 PlaceholderAPI 后,插件会注册 inl 前缀的变量,可在计分板 / 聊天 / Tab 插件里直接用:
PlaceholderHook 当接口做动态代理,但它是抽象类,
注册时必然抛 PlaceholderHook is not an interface —— 下表的变量一个都不生效。
现已改为真正的 PlaceholderExpansion 子类。升级后请重启服务器,
并确认控制台出现 [PAPI] 已注册变量扩展: %inl_*%(12 个变量)。
| 变量 | 说明 |
|---|---|
%inl_identity% | 身份(服主 / 副服主 / 管理员 / 协管 / 普通玩家) |
%inl_banned% | 该玩家是否被账号封禁(是 / 否) |
%inl_penalty% | 该玩家是否有任意功能封禁(是 / 否) |
%inl_penalty_types% | 功能封禁类型,逗号分隔(如 禁言,禁用方块) |
%inl_playtime% | 累计在线(如 3天2小时) |
%inl_playtime_millis% | 累计在线(毫秒,便于排序或条件判断) |
%inl_bans% | 全服封禁记录总数 |
%inl_reports% | 待处理举报数 |
%inl_online% | 在线人数 |
%inl_fakeplayers% | 假人数量 |
%inl_version% | 插件版本 |
%inl_fs1% | fs1 提权通道是否开启(提权通道已移除,固定返回"关") |
没装 PlaceholderAPI 时插件会安静跳过注册,不影响其他功能。可用变量清单也可以直接用 /linux logs 查看。
/linux logs、/linux audit、/linux help、/banlist
都是每页 10 行、带可点击的「◀ 上一页 / 下一页 ▶」;玩家点一下即可翻页,控制台会显示纯文字页码提示。想快速看子插件联动状态,直接用
/linux plugins ——
一屏列出 XlandCore 身份识别、假人插件(含数量)、XlandStop 监听、
LinuxTitle 头衔、命令接管、非法 NBT 检测的当前状态,
比翻 /linux logs 更直观。插件主页也可点击直达。
数据文件
全部在 plugins/InTheNameOfLinux/,可用 /linux logs 一次看到记录数与落盘状态:
| 文件 | 内容 |
|---|---|
data.yml | 账号封禁记录(含到期时间、操作者) |
penalty.yml | 功能封禁(禁言 / 禁移动 / 禁方块) |
reports.yml | 举报记录与待广播消息 |
userip.yml | 玩家 IP 与身份记录 |
playtime.yml | 累计在线时长 |
fp.yml | 假人数据快照 |
audit.yml | 审计日志(保留最近 5000 条,用 /linux audit 查询) |
XlandStop
监听 xstop / xlstop / xlandstop 命令,全服广播谁在重启服务器。
- 插件启动时延迟 20 秒检测这三个命令是否注册。
- 如果检测到,会注册监听器全服广播重启操作。
- 执行
/linux reload会重新检测。
10故障排查
问题:登录后仍然无法执行命令
- 确认输对了密码(大小写敏感)。
- 如果被锁定,等待锁定时间结束(默认 300 秒)。
- 查看控制台是否输出"验证身份成功"。
问题:封禁命令没有生效
- 检查是否拥有对应权限(
/linux checkop检查自己的身份与管理权限)。 - 检查
config.yml里的refuse-enabled是否为 true。 - 查看控制台是否有错误堆栈。
问题:举报提交后无法立即处理
问题:服主离线时举报消息没收到
- 消息会暂存到
reports.yml的 pending 列表。 - 服主上线后 10 秒才会推送,请稍等。
- 如果延迟期间服主又掉线,消息会保留,下次上线继续推送。
- 如果长时间未收到,检查
reports.yml的pending-reports字段。
问题:清空命令执行后没反应
- 清空命令需要二次确认。先执行第一步,再执行
confirm。 - 检查确认是否过期(5 分钟有效期)。
- 如果是控制台执行,则无需确认,直接生效。
- 如果提示"没有待确认的清空操作",说明第一步没有执行或被替换。
问题:ProtocolLib 报错 "Unable to make protected final java.lang.Class..."
--add-opens java.base/java.lang=ALL-UNNAMED
问题:假人插件显示"版本不兼容"
- 插件会先用假人插件自己的类加载器加载
fakeplayer.info-class,失败时自动改用实际取到的假人类,所以一般不需要手改。 - 如果仍然报错,检查假人插件的
FakePlayerInfo类是否还存在、方法名是否改过。 - 必要时修改
config.yml的fakeplayer.info-class(默认example.fakeplayer.FakePlayerInfo)。 - 改完执行
/linux reload。
问题:重启后临时封禁没有恢复 / 到解封时间了还没解封
- 临时封禁的到期时间是写在
data.yml里的,重启后插件会自动重建到期任务和"即将解封"提醒任务,无需手动处理。 - 检查
data.yml是否损坏(YAML 格式)。 - 检查服务器时间是否准确(时间错乱会导致到期判断错误)。
- 到期时间若已被手工改成非法值(例如
2026-02-30),插件会跳过该条并打告警,请检查控制台日志。
问题:封禁记录里一直留着一条"临时"封禁
data.yml 里那条记录,/banlist 不会再有幽灵条目。
升级前遗留的过期记录会在下次启动时自动清理一次。
问题:/linux reload 后功能失效
- 检查控制台是否有异常堆栈。
- 尝试完全重启服务器(而非 /reload)。
- 如果仍然异常,删除
plugins/InTheNameOfLinux/下的缓存文件(保留 config.yml)。
11常见问题
/linux login 密码 整条命令写进日志。
而聊天栏消息可以被插件"提前拦截",不会进入日志。
为了密码安全,本插件采用聊天栏输入方式。
- 方法一:编辑
config.yml,把login.password-salt和login.password-hash两行改成""(空字符串),重启服务器后密码重置为password。 - 方法二:删除整个
config.yml,重启后会自动生成新配置。
- 被举报人是服主:只通知服主本人。
- 被举报人是协管 / 管理员 / 副服主:通知其他管理层,不通知被举报人。
- 被举报人是普通玩家:通知所有管理层(举报人除外)。
- 账号封禁:直接踢出,登录时被拒绝。
- 功能封禁(禁方块 / 禁移动 / 禁言):可以正常登录,但对应功能被限制。
- 你是否是保护对象(默认 Linux582021)?
- 聊天栏有没有显示黄色提示"请在聊天栏直接输入密码"?
- 如果提示出现后你退出了游戏,再次进服需要重新输入 /linux login。
plugins/InTheNameOfLinux/ 目录下:
config.yml— 插件配置data.yml— 封禁历史penalty.yml— 功能封禁记录userip.yml— IP 与身份缓存playtime.yml— 游玩时长fp.yml— 假人数据快照reports.yml— 举报记录与待广播消息
- 所有数据都缓存到内存,避免频繁读磁盘。
- 封禁缓存 3 秒,重复查询不重建。
- 数据文件批量保存(默认 30 秒一次)。
- 举报待广播消息 5 分钟定时写盘。
- 异步事件只读判断,回主线程处理。
- 反射方法首次调用后缓存。
config.yml 里的 broadcast-ban:
true(默认):全服广播。false:只广播给有权限的管理员。
/linux reload 生效。
- fs1 本人;
- 保护对象(默认
Linux582021,即服主)。
fs1(作为独立参数,/msg fs1x 不会误拦),
都会被拦下并收到:你没有权限对 fs1 执行命令。同时会双向通知:服主看到"谁 尝试对 fs1 执行了什么(已拦截)", fs1 本人看到"谁 尝试对你执行了什么(已拦截)"。 每次拦截都写入审计日志,可用
/linux audit 查看。注:原「突破 fs1 拦截」提权通道已整体移除 —— 既然 fs1 与服主在保护判定里直接放行,那条能"借他人身份执行命令"的通道就没有存在意义了。
shouldBlock() 会对任何提到 fs1 的命令直接取消事件,
且只给"当前在线的 fs1 本人"放行 —— 连服主和控制台都被它拦下。解决办法:保持
fs1-protection-takeover: true(默认)。本插件会在启动时用
Bukkit 的 HandlerList.unregisterAll() 注销 x1 的监听器并接管保护 ——
非授权玩家提到 fs1 一样被拦,但 fs1 本人与服主直接放行。不修改、不删除任何 jar 文件,重启服务器即可完全恢复 x1 原状。 用
/linux logs 可以查看接管状态。注意:这项不能关。 关掉后 x1 会重新生效并抢先取消事件,我们这边的"放行"就失效了 —— 表现为服主完全无法管理 fs1。
blocked-player(fs1 本人)
与 protected-player(保护对象,默认 Linux582021)。改
config.yml 的 protected-player 会同时改变"谁是受保护的人",
副作用较大,不建议为了给第三人授权而改它。
/ban。
批量封禁时,插件会立即写盘(不受 30 秒批量保存影响)。
- 正版服务器:UUID 不变,改名后历史记录仍在(用 UUID 关联)。
- 离线服务器:UUID 由名字计算,改名 = 换人,历史记录不会关联。
- 在聊天栏点击底部的 ◀ 上一页 / 下一页 ▶ 文字即可翻页。
- 直接输入
/linux help <页码>或/banlist <页码>。
<参数> 的命令会自动填充到聊天框,无参数的命令会直接执行。
12到期自动解除与手动解除
两种解除方式对封禁记录的处理不同,这是本插件的一个明确设计。
| 方式 | 触发场景 | 封禁记录 |
|---|---|---|
| 到期自动解除 | 临时封禁 / 功能封禁设定的时间到了,系统自动解除 | 保留记录,并写入解除时间;
可在 /linux history、/linux lookup 中查到,
显示为 [已解除 时间] |
| 手动解除 | /unban、/unbanip、
/linux unbanmsg、/linux unbanall 等 |
删除记录(视为误封或提前解封) |
- 玩家不再受限 —— 是否生效由到期时间决定
/banlist不会把它列为生效中的封禁- 记录保留在
data.yml/penalty.yml里,可事后追溯
13卸载与备份
备份
- 停止服务器(
stop)。 - 复制
plugins/InTheNameOfLinux/整个目录到安全位置。 - 如果使用了协管功能,同时备份 XlandCore 的配置文件。
卸载
- 停止服务器。
- 删除
plugins/InTheNameOfLinux.jar。 - 可选:删除
plugins/InTheNameOfLinux/目录(保留则下次安装时数据仍存在)。 - 启动服务器。