1快速开始

3 步完成安装,5 分钟即可上手。适用于 Minecraft 1.12.2(Paper / Spigot)。

环境要求

项目 要求
服务端 Paper 或 Spigot 1.12.2
Java Java 8(推荐)或 Java 17/21(需加 --add-opens 参数)
内存 建议 ≥ 2GB
依赖插件 无硬性依赖,可选 XlandCore / 假人插件 / XlandStop

安装步骤

  1. 编译打包
    使用 Maven 编译:mvn clean package,生成 InTheNameOfLinux.jar
  2. 放入插件目录
    将 jar 文件放入服务器 plugins/ 目录。
  3. 启动服务器
    首次启动会生成默认配置,控制台应输出"首次初始化登录密码"。
  4. 登录验证
    保护对象(默认 Linux582021)进服后,输入 /linux login,然后在聊天栏发送初始密码 password
  5. 修改密码
    登录成功后,执行 /linux chargepw <新密码> 修改密码(至少 6 位)。
⚠️
务必第一时间修改密码 初始密码 password 是明文公开的,未修改前任何人都可以登录。
💡
为什么密码要在聊天栏输入? 因为 /linux login 密码 这种形式会被服务端日志记录(Minecraft 原生行为)。而聊天栏消息会被插件拦截,控制台和日志完全看不到密码

2命令详解

登录相关

命令 说明 权限
/linux login 进入密码输入模式,在聊天栏发送密码即可验证身份 仅 Linux582021
/linux chargepw <新密码> 修改登录密码(需先登录,至少 6 位) 仅 Linux582021

封禁相关

命令 说明 权限
/ban <玩家> [原因] 永久封禁玩家账号 ban
/tempban <玩家> <时间> [原因] 临时封禁,到期自动解封 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 seenip <IP> 查询使用过该 IP 的所有玩家 lookup
/linux history <玩家> 查看玩家完整封禁历史 history
/linux clearhistory <玩家> 清除玩家全部历史(需二次确认) clearhistory
/banlist 查看所有封禁记录(账号 + 功能) ban
/linux op [list] 检查自己身份 / 列出所有管理员 lookup

时间格式

10s # 10 秒
5m # 5 分钟
1h # 1 小时
1d # 1 天
1w # 1 周
1d12h # 1 天 12 小时(组合)
1w2d3h30m # 1 周 2 天 3 小时 30 分钟

支持单位:s(秒)、m(分钟)、h(小时)、d(天)、w(周)。可以组合使用。

3权限说明

插件使用三级权限体系:OP / 协管 / 普通玩家。

权限节点 说明 默认
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.moderator 协管权限节点(XlandCore 未加载时的回退)

协管说明

  • 协管身份优先从 XlandCore 读取(身份 = "协管")。
  • 如果 XlandCore 未加载,则回退到权限节点 inthenameoflinux.moderator
  • 协管可用 8 个功能封禁命令,不能使用账号封禁(/ban、/tempban、/banip)。
  • 协管封禁时长上限为 7 天,不能执行永久封禁。
  • 协管的帮助菜单和 TAB 补全只显示可用命令。
💡
OP 优先原则 如果玩家同时是 OP 和协管,插件会将其识别为"完整管理员",显示完整帮助。

4配置说明

所有配置都在 plugins/InTheNameOfLinux/config.yml,修改后执行 /linux reload 即可生效(无需重启)。

关键配置项

配置项 默认值 说明
protected-player Linux582021 重点保护的玩家名
blocked-player fs1 突破拦截时的代理玩家
appeal-group 925200745 封禁踢出消息里的申诉群号
broadcast-ban true 是否全服广播封禁消息(false 只广播给管理员)
refuse-enabled true 全局命令拦截开关
console-cmd-enabled false 控制台对保护对象命令的拦截开关
fs1-refuse-enabled true 突破 fs1 拦截功能开关
penalty-sync.interval-seconds 60 功能封禁缓存与文件对齐间隔
data-save.interval-seconds 30 数据文件批量写盘间隔

登录配置

login:
password-salt: "" # 自动生成,勿改
password-hash: "" # 自动生成,勿改
min-length: 6 # 密码最短长度
fail-delay-seconds: 3 # 失败冷却(秒)
max-fails: 5 # 连续失败多少次锁定
lockout-seconds: 300 # 锁定时长(秒)
timeout-seconds: 90 # 登录超时踢出(秒)

协管配置

moderator:
enabled: true # 协管功能开关
max-duration-days: 7 # 协管封禁时长上限(天)
fallback-permission: "inthenameoflinux.moderator"
⚠️
不要手动修改 login.password-salt / password-hash 这两行由插件自动生成。如果修改错误,会导致无法登录。想重置密码,删掉这两行的值(改成 ""),重启后会自动重置为 password

5插件联动

XlandCore

用于读取玩家身份(服主 / 副服主 / 管理员 / 协管)。协管体系依赖此插件。

  • 如果 XlandCore 在服务器启动时已加载,静态块会立即检测到。
  • 如果 XlandCore 后加载,插件会在 20 秒后延迟检测一次
  • 执行 /linux reload 也会重新检测。

假人插件(FakePlayerPlugin)

同步假人数据,用于 /linux fp 和查询识别。

⚠️
如果假人插件改过包名 请在 config.yml 修改 fakeplayer.info-class 的值。

XlandStop

监听 xstop / xlstop / xlandstop 命令,全服广播谁在重启服务器。

6故障排查

问题:登录后仍然无法执行命令

  • 确认输对了密码(大小写敏感)。
  • 如果被锁定,等待锁定时间结束(默认 300 秒)。
  • 查看控制台是否输出"验证身份成功"。

问题:封禁命令没有生效

  • 检查是否拥有对应权限(/linux op 检查自己身份)。
  • 检查 config.yml 里的 refuse-enabled 是否为 true。
  • 查看控制台是否有错误堆栈。

问题:ProtocolLib 报错 "Unable to make protected final java.lang.Class..."

💡
这是 ProtocolLib 与 Java 17+ 的兼容问题,与本插件无关。 在启动脚本的 java 命令中加参数: --add-opens java.base/java.lang=ALL-UNNAMED

问题:假人插件显示"版本不兼容"

  • 检查假人插件的实际包名。
  • 修改 config.ymlfakeplayer.info-class
  • 执行 /linux reload

问题:重启后临时封禁没有恢复

  • 检查 data.yml 是否损坏(YAML 格式)。
  • 检查服务器时间是否准确(时间错乱会导致到期判断错误)。
  • 查看控制台是否有"恢复任务失败"日志。

问题:/linux reload 后功能失效

  • 检查控制台是否有异常堆栈。
  • 尝试完全重启服务器(而非 /reload)。
  • 如果仍然异常,删除 plugins/InTheNameOfLinux/ 下的缓存文件(保留 config.yml)。

7常见问题

为什么密码要在聊天栏输入,不能直接 /linux login 密码?
Minecraft 服务端在处理命令前,会先把 /linux login 密码 整条命令写进日志。 而聊天栏消息可以被插件"提前拦截",不会进入日志。 为了密码安全,本插件采用聊天栏输入方式。
忘记密码了怎么办?
两种方法:
  • 方法一:编辑 config.yml,把 login.password-saltlogin.password-hash 两行改成 ""(空字符串),重启服务器后密码重置为 password
  • 方法二:删除整个 config.yml,重启后会自动生成新配置。
协管为什么不能封禁账号?
这是设计选择。协管权限有限,只能使用"功能封禁"(禁方块 / 禁移动 / 禁言 / 全封)。 账号封禁(/ban、/tempban、/banip)属于更高级的操作,仅限完整管理员。
协管为什么不能永久封禁?
防止协管滥用权限。永久封禁是不可逆操作,需要完整管理员执行。 协管最长可封 7 天(可配置)。
封禁后玩家还能上线吗?
  • 账号封禁:直接踢出,登录时被拒绝。
  • 功能封禁(禁方块 / 禁移动 / 禁言):可以正常登录,但对应功能被限制。
为什么被禁言后,我说话没反应?
这是正常的。禁言会拦截你的所有聊天消息、私聊指令、/say 等。你只能与管理员私聊。 屏幕上会显示一条提示"你已被禁言!"。
/linux login 后没有提示我输密码?
检查几点:
  • 你是否是保护对象(默认 Linux582021)?
  • 聊天栏有没有显示黄色提示"请在聊天栏直接输入密码"?
  • 如果提示出现后你退出了游戏,再次进服需要重新输入 /linux login。
数据文件在哪里?如何备份?
所有数据都在 plugins/InTheNameOfLinux/ 目录下:
  • config.yml — 插件配置
  • data.yml — 封禁历史
  • penalty.yml — 功能封禁记录
  • userip.yml — IP 与身份缓存
  • playtime.yml — 游玩时长
  • fp.yml — 假人数据快照
直接复制整个文件夹即可备份。
插件会影响服务器性能吗?
影响极小。插件采用了多重优化:
  • 所有数据都缓存到内存,避免频繁读磁盘。
  • 封禁缓存 3 秒,重复查询不重建。
  • 数据文件批量保存(默认 30 秒一次)。
  • 异步事件只读判断,回主线程处理。
  • 反射方法首次调用后缓存。
实测 TPS 影响 < 0.5%。
如何修改封禁广播的范围?
编辑 config.yml 里的 broadcast-ban
  • true(默认):全服广播。
  • false:只广播给有权限的管理员。
修改后 /linux reload 生效。
如何关闭"突破 fs1 拦截"功能?
两种方法:
  • 执行 /linux fs off(仅 Linux582021 本人可用)。
  • 编辑 config.yml,把 fs1-refuse-enabled 改成 false
能同时封禁多个玩家吗?
目前不支持批量命令。可以写循环脚本调用 /ban。 批量封禁时,插件会立即写盘(不受 30 秒批量保存影响)。
玩家改名后历史记录会丢失吗?
  • 正版服务器:UUID 不变,改名后历史记录仍在(用 UUID 关联)。
  • 离线服务器:UUID 由名字计算,改名 = 换人,历史记录不会关联。

8卸载与备份

备份

  1. 停止服务器(stop)。
  2. 复制 plugins/InTheNameOfLinux/ 整个目录到安全位置。
  3. 如果使用了协管功能,同时备份 XlandCore 的配置文件。

卸载

  1. 停止服务器。
  2. 删除 plugins/InTheNameOfLinux.jar
  3. 可选:删除 plugins/InTheNameOfLinux/ 目录(保留则下次安装时数据仍存在)。
  4. 启动服务器。
🚨
卸载前请注意 如果插件中存在活跃的临时封禁任务,卸载后这些任务会被取消,被封禁的玩家将立刻可以进入服务器。 卸载前建议先手动解封所有玩家。
更新插件时 直接替换 jar 文件即可,不需要删除数据目录。配置和数据会自动保留。