- Source of resources
- Original
- 插件中文名称
- 每日在线占位符
- 插件英文名称
- Time
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- 其他核心
- Language
- Chinese(Simplified)
- Precondition
- PlaceholderAPI https://www.spigotmc.org/resources/placeholderapi.6245/
- 适配版本(Java)
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
- 1.11
- 1.10
- 1.9
- 1.8
插件简介
Time 是一款为 Minecraft 服务器设计的高效在线时间跟踪插件。它能够实时记录玩家的在线时长,并提供丰富的功能来帮助服务器管理员监控、管理和奖励玩家的游戏时间。无论是简单的统计,还是复杂的数据库集成,这款插件都能满足您的需求。修复了一系列已知问题,如果还有问题,请QQ联系
主要功能
1. 实时在线时间统计
- 自动记录:每秒钟更新玩家的在线时间,确保记录的准确性。
- 每日统计:支持每天自动重置在线时间,并在玩家下次登录时显示前一天的总在线时间。
2. 多种存储模式
- 本地文件存储:无需额外配置,插件默认将玩家的在线时间数据保存在 YAML 文件中,每天生成一个新的数据文件。
- MySQL 数据库支持:对于大型服务器,可以启用 MySQL 数据库来存储和管理在线时间数据,确保数据的稳定性和跨服务器共享。
3. 自动任务管理
- 每日重置任务:插件自动计算到午夜的剩余时间,并在午夜时分自动重置当天的在线时间数据。
- 定期数据保存:每隔5分钟自动保存一次在线时间数据,以防服务器崩溃或意外关闭导致的数据丢失。
- 异步操作:大部分数据保存和加载操作都在异步线程中进行,确保不会影响服务器的性能。
4. PlaceholderAPI 集成
- 动态占位符:支持多个 PlaceholderAPI 占位符,允许您在聊天、记分板或其他支持 PlaceholderAPI 的插件中显示玩家的在线时间。
- 多种格式:提供月、周、小时、分钟、秒数、格式化和简洁显示等多种占位符格式,满足不同的显示需求。
5. 离线玩家支持
- 数据缓存:在玩家下线时,插件会自动将其在线时间保存到缓存中,并在适当的时候将数据持久化到文件或数据库中。
6. 在线奖励
- 玩家在线奖励占位符,当玩家在线达到配置文件中设置的时间,则会让对应的占位符返回true,没有到达在线时长则返回false
配置选项
1. 基础配置 (config.yml)
Java:
# 是否使用数据库(true 表示使用,false 表示不使用)
use-database: false
# 数据库相关配置
database:
# 数据库类型(这里是 MySQL)
type: mysql
# 数据库主机地址
host: your-database-host
# 数据库端口号,MySQL 默认是 3306
port: 3306
# 数据库名称
database: playtime
# 数据库用户名
username: your-username
# 数据库密码
password: your-password
# HikariCP 连接池相关配置
HikariCP:
# 最大连接池大小
maximum-pool-size: 10
# 最小空闲连接数
minimum-idle: 2
# 获取数据库连接的最大等待时间(毫秒),超时将抛出异常
connection-timeout: 30000
# 空闲连接的最大存活时间(毫秒),超时将被释放
idle-timeout: 600000
# 连接的最大存活时间(毫秒),超时后连接将被关闭并重新创建
max-lifetime: 1800000
# 在线时间奖励配置
rewards:
- name: 'reward_30_minutes'
time: 1800 # 30分钟
rewardName: '30分钟奖励'
message: '&a恭喜你!你已在线 {minutes} 分钟,获得了 {rewardName} 的奖励!'
- name: 'reward_1_hour'
time: 3600 # 1小时
rewardName: '1小时奖励'
message: '&b恭喜你!你已在线 {hours} 小时,获得了 {rewardName} 的奖励!'
- use-database:设置是否使用 MySQL 数据库进行数据存储。如果关闭,将使用本地文件存储。
- database:数据库连接的详细配置,包括主机、端口、数据库名、用户名、密码以及 HikariCP 连接池的配置选项。
2. 占位符配置
插件内置了多种占位符,可通过 PlaceholderAPI 在服务器内显示玩家的在线时间数据:- %playtimetracker_hours% - 显示玩家当天在线的小时数。
- %playtimetracker_minutes% - 显示玩家当天在线的分钟数。
- %playtimetracker_seconds% - 显示玩家当天在线的秒数。
- %playtimetracker_formatted% - 显示玩家当天在线的时间,格式为“XX小时 XX分 XX秒”。
- %playtimetracker_condensed% - 显示玩家当天在线的时间,格式为“HHMMSS”。
- %playtimetracker_weekly% - 显示玩家在线累计的周和天数 例如:2周 3天
- %playtimetracker_weekly_plain% - 显示玩家在线累计的周和天数 例如:2周 3天转换2 3
- %playtimetracker_monthly% - 显示玩家在线累计的月和天数 例如:1月 5天
- %playtimetracker_monthly_plain% - 显示玩家在线累计的月和天数 例如:1月 5天转换1 5
- %playtimetracker_reward_30_minutes% - 显示玩家是否达到了30分钟的奖励条件(true 或 false)
- %playtimetracker_reward_1_hour% - 显示玩家是否达到了1小时的奖励条件(true 或 false)。
安装与使用指南
- 下载并安装插件
- 将 Time.jar 文件放入服务器的 plugins 目录中。
- 启动服务器,插件将自动生成配置文件和数据文件夹。
- 配置插件
- 停止服务器,打开 plugins/Time/config.yml 文件,根据需求调整配置选项。
- 如果启用 MySQL 数据库,请确保填写正确的数据库连接信息。
- 启动服务器以应用配置。
- 检查安装
- 通过 PlaceholderAPI 支持的插件测试占位符功能。
- 定制使用
- 根据服务器的需求,您可以在聊天、记分板或其他插件中展示玩家的在线时间数据,或者使用每日统计功能为玩家提供奖励。
public class PlayTimeAPI {
private static PlayTimeTracker plugin;
// 初始化API,在插件启用时调用
public static void initialize(PlayTimeTracker playTimeTracker) {
plugin = playTimeTracker;
}
// 获取指定玩家的在线时间(以秒为单位)
public static long getPlayTime(UUID uuid) {
return plugin.getPlayTime(uuid);
}
// 获取指定玩家的在线时间(以格式化的字符串返回)
public static String getFormattedPlayTime(UUID uuid) {
long playTimeInSeconds = getPlayTime(uuid);
long hours = playTimeInSeconds / 3600;
long minutes = (playTimeInSeconds % 3600) / 60;
long seconds = playTimeInSeconds % 60;
return String.format("%02d小时 %02d分 %02d秒", hours, minutes, seconds);
}
// 设置指定玩家的在线时间
public static void setPlayTime(UUID uuid, long playTimeInSeconds) {
plugin.getDataManager().setPlayTime(uuid, playTimeInSeconds);
}
// 获取指定玩家的奖励状态
public static boolean getRewardStatus(UUID uuid, String rewardName) {
return plugin.getDataManager().getRewardStatus(uuid, rewardName);
}
// 设置指定玩家的奖励状态
public static void setRewardStatus(UUID uuid, String rewardName, boolean status) {
plugin.getDataManager().setRewardStatus(uuid, rewardName, status);
}
// 获取最后一次在线时间重置的日期
public static LocalDate getLastResetDate() {
return plugin.getDataManager().getLastResetDate();
}
// 重置所有玩家的在线时间
public static void resetAllPlayTimes() {
plugin.getDataManager().resetPlayTime();
}
// 重置所有玩家的奖励状态
public static void resetAllRewards() {
plugin.getDataManager().resetAllRewards();
}
// 注册监听器
public static void registerEventListeners(Plugin plugin) {
Bukkit.getPluginManager().registerEvents(new PlayTimeTracker(), plugin);
}
}
private static PlayTimeTracker plugin;
// 初始化API,在插件启用时调用
public static void initialize(PlayTimeTracker playTimeTracker) {
plugin = playTimeTracker;
}
// 获取指定玩家的在线时间(以秒为单位)
public static long getPlayTime(UUID uuid) {
return plugin.getPlayTime(uuid);
}
// 获取指定玩家的在线时间(以格式化的字符串返回)
public static String getFormattedPlayTime(UUID uuid) {
long playTimeInSeconds = getPlayTime(uuid);
long hours = playTimeInSeconds / 3600;
long minutes = (playTimeInSeconds % 3600) / 60;
long seconds = playTimeInSeconds % 60;
return String.format("%02d小时 %02d分 %02d秒", hours, minutes, seconds);
}
// 设置指定玩家的在线时间
public static void setPlayTime(UUID uuid, long playTimeInSeconds) {
plugin.getDataManager().setPlayTime(uuid, playTimeInSeconds);
}
// 获取指定玩家的奖励状态
public static boolean getRewardStatus(UUID uuid, String rewardName) {
return plugin.getDataManager().getRewardStatus(uuid, rewardName);
}
// 设置指定玩家的奖励状态
public static void setRewardStatus(UUID uuid, String rewardName, boolean status) {
plugin.getDataManager().setRewardStatus(uuid, rewardName, status);
}
// 获取最后一次在线时间重置的日期
public static LocalDate getLastResetDate() {
return plugin.getDataManager().getLastResetDate();
}
// 重置所有玩家的在线时间
public static void resetAllPlayTimes() {
plugin.getDataManager().resetPlayTime();
}
// 重置所有玩家的奖励状态
public static void resetAllRewards() {
plugin.getDataManager().resetAllRewards();
}
// 注册监听器
public static void registerEventListeners(Plugin plugin) {
Bukkit.getPluginManager().registerEvents(new PlayTimeTracker(), plugin);
}
}
使用场景
- 在线时间奖励:通过统计玩家的在线时间,您可以设置特定的奖励或权限,激励玩家更多地参与服务器活动。
- 服务器管理:作为管理员,您可以监控活跃玩家的在线时间,识别出最常在线或最不活跃的玩家,为制定管理策略提供依据。
- 社区活动:在社区活动期间,记录和展示玩家的在线时间,增加竞争性和参与感。
常见问题
Q: 如何启用 MySQL 数据库存储?A: 打开 config.yml,将 use-database 选项设置为 true,并填写数据库连接信息。Q: 插件是否支持多服务器?A: 是的,如果您的服务器网络共用一个 MySQL 数据库,插件能够在多个服务器之间共享在线时间数据。
Q: 如何处理插件的定期保存任务?A: 插件默认每5分钟保存一次数据,您可以通过修改源码或自定义任务时间间隔来调整这个频率。
支持与反馈
如果您在使用过程中遇到任何问题,或者有任何改进建议,请在插件的评论区留言,或者通过以下方式与我们联系:
- QQ : [761070659]