• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
IK_OnlineTimer —— 在线时长+时长排行

LSE IK_OnlineTimer —— 在线时长+时长排行 1.1.0

请登录后获取
版权类型
原创
版权链接
https://ik-series.netlify.app/
Wiki/文档
https://ik-series.netlify.app/
语言支持
中文(简体)
前置组件
lse
ll
可选 IK_Spark_Bridge
OnlineTimerEX数据迁移
适配版本(基岩)
  1. 最新版本

没有金粒?加入IK系列插件QQ交流群免费获取:318569582

作者承接各类 LSE插件定制,功能均可根据您的需求从零开发或二次修改。
价格优惠,诚信交易,欢迎随时咨询详谈。

简介

IK_OnlineTimer 是“星辰系列”中的一款在线时长统计插件,基于 LeviLamina(LiteLoaderBDS)开发。它能精确记录每位玩家的总在线时长、今日/本周/本月在线时长,支持挂机检测、里程碑庆祝、排行榜展示、计分板与 ActionBar 显示,并可对接 BEPlaceholderAPI、QQ 群机器人,是生存服、 RPG 服激励玩家活跃度的利器。

特性

  • 精准计时:每秒检测玩家活跃状态,只统计非挂机时间,避免挂机刷时长。
  • 多维度统计:同时记录总时长、今日、本周、本月时长,自动按自然周期重置。
  • 智能挂机检测:通过移动、视角变化等多重事件判定挂机状态,挂机期间暂停计时。
  • 里程碑系统:可配置达标小时数(如每 100 小时)或固定节点,触发全服广播、Toast 提示、音效、QQ 消息及自定义命令。
  • 双榜单系统:支持游戏内 GUI 排行榜(总榜 / 日榜 / 周榜 / 月榜)及控制台输出。
  • 计分板与 ActionBar:可选将总时长同步到计分板(玩家列表/名字下方),并定时在屏幕上方滚动显示个人时长。
  • 进服欢迎提示:新玩家首次登录可记录,可配置进服 Title、广播及音效。
  • 隐私设置:每位玩家可自由开关“进服广播”、“参与排行榜”、“头顶时长显示”三项。
  • PAPI 对接:注册 %ik_onlinetime%%ik_online_minutes% 等 10 个变量,方便其他插件调用。
  • QQ 桥接:里程碑消息可自动推送至 QQ 群(需配合 IK_Spark_Bridge 或 SparkAPI)。
  • 数据迁移:支持从 OnlineTimerEXTimeData.json 自动迁移历史数据。
  • 管理员命令:提供 /iktime 管理命令,可查询、增加、减少、重置玩家时长,支持热重载配置。

安装要求

  • LeviLamina 1.0.0 或更高版本(内置 LLSE 脚本引擎)
    • nickname 插件(显示昵称)
    • BEPlaceholderAPI(提供 PAPI 变量)
    • IK_Spark_Bridge 或 SparkAPI(QQ 群消息推送)

安装步骤

  1. IK_OnlineTimer.js 放入 plugins/ 文件夹。
  2. 启动服务器,插件会自动生成 plugins/IK_OnlineTimer/ 目录及配置文件 config.json、数据文件 time_data.json、隐私文件 privacy.json
  3. 根据需要修改 config.json,然后执行 /iktime reload 热重载配置(也可重启服务器)。
  4. (可选)若存在旧版 ./plugins/Ctrini/OnlineTimerEX/TimeData.json,插件启动时会自动迁移并备份原文件。

配置文件

路径:plugins/IK_OnlineTimer/config.json
json

JavaScript:
{

  "tabDisplay": false,

  "joinWelcome": true,

  "welcomeTitle": "§l§d✦ 星辰 ✦",

  "welcomeSubtitle": "§b欢迎来到本服~",

  "actionBar": {

    "enabled": true,

    "interval": 300,

    "format": "§b累计镇守: §e{time}"

  },

  "saveIntervalMinutes": 5,

  "enableAntiAFK": true,

  "afkTimeoutMinutes": 5,

  "enablePAPI": true,

  "rankCacheSeconds": 30,

  "milestones": {

    "enabled": true,

    "intervalHours": 100,

    "hours": [],

    "broadcast": true,

    "sendQQ": true,

    "toast": true,

    "sound": "random.totem",

    "commands": []

  }

}

配置项详解

  • tabDisplay:是否在 Tab 玩家列表计分板显示在线时长。
  • joinWelcome:是否启用进服欢迎。
  • welcomeTitle / welcomeSubtitle:进服时屏幕中央的标题和副标题(支持 § 颜色代码)。
  • actionBar.enabled:是否在屏幕下方循环显示 ActionBar。
  • actionBar.interval:ActionBar 刷新间隔(秒)。
  • actionBar.format:显示格式,{time} 会被替换为玩家在线时长。
  • saveIntervalMinutes:自动保存数据到磁盘的间隔(分钟)。
  • enableAntiAFK:是否启用挂机检测。
  • afkTimeoutMinutes:挂机判定超时时间(分钟),期间无操作即视为挂机。
  • enablePAPI:是否向 BEPlaceholderAPI 注册变量。
  • rankCacheSeconds:排行榜缓存时间(秒),减少性能开销。
  • milestones.enabled:是否启用里程碑功能。
  • milestones.intervalHours:若未指定 hours 列表,则按此间隔自动触发里程碑(小时)。
  • milestones.hours:固定的里程碑小时数数组(如 [50, 100, 200]),优先级高于 intervalHours
  • milestones.broadcast:是否全服广播。
  • milestones.sendQQ:是否推送至 QQ 群。
  • milestones.toast:是否给该玩家弹出顶部 Toast 提示。
  • milestones.sound:庆祝音效(如 random.totem)。
  • milestones.commands:达成里程碑时以控制台身份执行的自定义命令数组,支持 {player}{hours} 占位符。

游戏指令说明

玩家指令

指令说明权限
/mytime打开个人在线时长与排行榜查询 GUI 主菜单所有玩家
/mytime <玩家名>快捷查询指定玩家的详细在线时长数据所有玩家

管理员指令

指令说明权限
/iktime help查看管理员帮助菜单OP / 控制台
/iktime reload热重载配置文件与外部接口OP / 控制台
/iktime save立即将缓存的时长数据强制写入本地文件OP / 控制台
/iktime query <玩家>后台查询玩家各项时长数据OP / 控制台
/iktime set <玩家> <分钟>覆写玩家的总在线时长OP / 控制台
/iktime add <玩家> <分钟>增加指定玩家的在线时长(触发里程碑)OP / 控制台
/iktime reduce <玩家> <分钟>扣除指定玩家的在线时长OP / 控制台
/iktime reset <玩家>将玩家的所有时长数据(含日/周/月)清零OP / 控制台
/iktime qqtest测试 QQ 桥接功能是否正常工作OP / 控制台
/iktime top [分类]在控制台输出前十名榜单 (total/daily/weekly/monthly)OP / 控制台

扩展变量 (PlaceholderAPI)

本插件已全面接入 BEPlaceholderAPI,可用于悬浮字、计分板或其他支持 PAPI 的插件中:

变量名含义说明示例输出
%ik_onlinetime%获取格式化时长(含颜色)§a2§7小时 §a30§7分钟§r (或显示“挂机中”)
%ik_online_minutes%纯数字:玩家总累计在线(分钟)150
%ik_online_hours%纯数字:玩家总累计在线(小时)2
%ik_online_rank%玩家的全服总时长排名1未上榜
%ik_online_status%玩家当前的活跃判定状态活跃中挂机中离线
%ik_online_daily%纯数字:今日在线(分钟)60
%ik_online_weekly%纯数字:本周在线(分钟)300
%ik_online_monthly%纯数字:本月在线(分钟)1200
%ik_first_login%玩家首次登录本服的时间2024-04-26 14:30:00
%ik_last_login%玩家最后一次下线/记录的时间2024-07-24 18:00:00

💻 开发者 API (导出函数)

其他 LSE 插件可通过 ll.import 调用本插件的数据:

导出名称描述说明
getPlayerMinutes(uuid)获取指定 UUID 玩家的总在线分钟数
getPlayerPeriodMinutes(uuid, type)获取周期分钟数 (type: "daily", "weekly", "monthly", "total")
getPlayerStateStr(xuid, uuid)获取玩家状态字符串 (格式化时间 或 "§c挂机中")
isPlayerAFK(xuid)检查目标玩家当前是否处于挂机状态 (返回 boolean)
getPlayerRank(uuid, type)获取玩家在指定榜单的排名数字
canShowHeadTime(xuid, uuid)获取玩家是否开启了“允许头顶显示时长”的隐私设置
checkPrivacy(xuid)(同上) 获取头顶计分板隐私开关状态

数据文件

  • time_data.json:存储所有玩家的时长数据(结构见代码注释)。
  • privacy.json:存储每个玩家的隐私开关(joinBroadcastrankVisibleheadDisplay)。
  • 插件自动备份数据(OnlineTimerEX)到 .bak 文件。

常见问题

Q:如何屏蔽某玩家的排行榜显示?
A:该玩家可使用 /mytime → 隐私设置,关闭“参与在线排行榜”。
Q:里程碑的 QQ 通知没收到?
A:确保配置中 sendQQtrue,且服务器已安装 IK_Spark_Bridge 或 SparkAPI,群号配置正确。可使用 /iktime qqtest 测试。
Q:能不能只统计纯在线时间,排除挂机?
A:默认启用挂机检测(enableAntiAFK: true),挂机期间不计时。afkTimeoutMinutes 可调整判定时间。
Q:排行榜数据不是实时的?
A:为优化性能,排行榜缓存 rankCacheSeconds 秒后更新,可在配置中调小该值。
Q:如何重置某玩家的今日时长?
A:每日时长与系统日期绑定,会自动归零。如需强制重置所有数据,用 /iktime reset <玩家>
Q:如何自定义进服欢迎?
A:修改配置中的 welcomeTitlewelcomeSubtitle,支持 Minecraft 颜色代码。若只不想显示广播,可关闭 joinWelcome 或玩家在隐私设置中关闭“进服欢迎广播”。
作者
I IKUN2004
价格
25.00金粒
下载
14
查看
261
首次发布
最后更新

评分

0.00 星 0 次评分

I IKUN2004 的其他资源

最新更新

  1. 1.1.0更新

    星辰在线时长 (IK_OnlineTimer) 更新日志...
后退
顶部 底部