• MineBBS 第一期星光推广计划开始了!丰富的金粒奖励,还有现金大奖噢~【点我去看看】
每日在线占位符Time —— 支持1.8 - 1.21.1

原创 工具 每日在线占位符Time —— 支持1.8 - 1.21.1 3.4

Source of resources
Original
插件中文名称
每日在线占位符
插件英文名称
Time
原帖地址
#
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. 其他核心
Language
Chinese(Simplified)
Precondition
PlaceholderAPI https://www.spigotmc.org/resources/placeholderapi.6245/
适配版本(Java)
  1. 1.21
  2. 1.20
  3. 1.19
  4. 1.18
  5. 1.17
  6. 1.16
  7. 1.15
  8. 1.14
  9. 1.13
  10. 1.12
  11. 1.11
  12. 1.10
  13. 1.9
  14. 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)

🚀 安装与使用指南​

  1. 下载并安装插件
    • 将 Time.jar 文件放入服务器的 plugins 目录中。
    • 启动服务器,插件将自动生成配置文件和数据文件夹。
  2. 配置插件
    • 停止服务器,打开 plugins/Time/config.yml 文件,根据需求调整配置选项。
    • 如果启用 MySQL 数据库,请确保填写正确的数据库连接信息。
    • 启动服务器以应用配置。
  3. 检查安装
    • 通过 PlaceholderAPI 支持的插件测试占位符功能。
  4. 定制使用
    • 根据服务器的需求,您可以在聊天、记分板或其他插件中展示玩家的在线时间数据,或者使用每日统计功能为玩家提供奖励。

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);
}
}

💡 使用场景​

  • 在线时间奖励:通过统计玩家的在线时间,您可以设置特定的奖励或权限,激励玩家更多地参与服务器活动。
  • 服务器管理:作为管理员,您可以监控活跃玩家的在线时间,识别出最常在线或最不活跃的玩家,为制定管理策略提供依据。
  • 社区活动:在社区活动期间,记录和展示玩家的在线时间,增加竞争性和参与感。

📝 常见问题​

Q: 如何启用 MySQL 数据库存储?A: 打开 config.yml,将 use-database 选项设置为 true,并填写数据库连接信息。

Q: 插件是否支持多服务器?A: 是的,如果您的服务器网络共用一个 MySQL 数据库,插件能够在多个服务器之间共享在线时间数据。

Q: 如何处理插件的定期保存任务?A: 插件默认每5分钟保存一次数据,您可以通过修改源码或自定义任务时间间隔来调整这个频率。

💬 支持与反馈
如果您在使用过程中遇到任何问题,或者有任何改进建议,请在插件的评论区留言,或者通过以下方式与我们联系:
  • QQ : [761070659]
  • Like
Reactions: PuddingKC
Author
世世世
Price
5金粒
Downloads
37
Views
577
First release
Last update
Rating
5.00 star(s) 1 ratings

More resources from 世世世

Share this resource

Latest updates

  1. 增加可修改的提示

    rewards: - name: 'reward_30_minutes' time: 1800 # 30分钟 rewardName: '30分钟奖励'...
  2. 修复

    未启用数据库下的频繁提示,改成提示一次
  3. 修复

    修复一系列已知问题,如果还有问题,请QQ联系

Latest reviews

good!