Playtime is a plugin for tracking numerous times for particular players. Currently within its release stage, it can track the time that a player has been online, been alive for, and how long they have played on the server in total. It currently supports three forms of data management, which are MySQL, SQLite, and flat file storage using yaml files. There is also tracking of AFK players (if you wish to enable it), and I try to keep everything within this plugin as configurable as possible. Please, if you have any type of feedback at all, don't hesitate to leave a comment! I usually try to add new ideas within a week of requesting it if I deem that it is appropriate for the plugin.

News: Playtime-2.0.0!

There are plans for an upcoming re-write of the Playtime plugin in its entirety! You can view the notes on this update at the link below:

This will add some major overhauls, including an incredible re-write of the event system, finally fixing the event system to allow for player-defined events after a certain time period.

Have questions on the update, or need help with the plugin in general? Leave a comment below or feel free to talk to me direct via IRC: #codelanx

Updating to Playtime 1.4.1+

Note that v1.4.0 introduces an event system with a few example events placed in. If you would not like any events to be used at all, simply remove everything in the events.yml file and save it as blank.


  1. Download the jar file and put it in your plugin folder
  2. Start your server
  3. PlayTime has generated a config.yml in your plugins folder, customize it so it can connect to your database
  4. Restart your server


Java 6 or higher


  • Logs PlayTime for users currently online, updates it every minute
  • Logs the PlayTime in a MySQL database
  • Looking up your own play time with a command
  • Look up up someone elses play time with a command
  • See how long since your last death
  • See how long since someone else's death
  • Stop tracking the time of AFK players
  • Flatfile support (yml files) - Deprecated, will return in the future
  • SQLite support
  • Dynamic configuration updating
  • Asynchronous data management
  • Time spent online since login
  • Other languages - Currently supported: en_US (English), de_DE (German)
  • Firing Console commands when a time is reached
  • Add top for total time played
  • Add command to switch between data managers
  • Automatic updating and version checking. This is possible to disable under the "update" section of the config. For more information, read the Configuration page

For a full list of upcoming features, feel free to look here:

Metrics Stats

Playtime uses metrics, which keeps track of information such as OS, player count, java version, and other specific information in an anonymous fashion. You can view the collected information by clicking the graph below, and it is used for any potential future development for specific groups that develop within statistics:

This can be disabled in the Metrics configuration for all plugins, under plugins/PluginMetrics/config.yml , and set "opt-out" to true. Keep in mind this will make your server not report any information, and I love stats almost as much as cats </3

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Edge209 Edge209 Apr 23, 2016 at 02:39 UTC - 0 likes

    I don't like to go trolling on other, similar plugins looking to pull away users, but I it does look like some servers are in need of an alternative if Playtime is no longer active. It has all of the same functionality, plus much more, including UUID support, so please check out OnTime.

    My plugins:

    OnTime - Playing time tracking, auto-reward system
    OnSign - Displays player online and playtime status on signs
    afkTermnator - Find/ punish players using machines to avoid AFK detection


  • Avatar of Elian1203 Elian1203 Apr 23, 2016 at 01:18 UTC - 0 likes

    I don't think the author is ever going to update the plugin. I had to make my own plugin with compatibility to convert old playtimes from this plugin to itself. I'd recommend you all get a new playtime plugin that supports UUIDs. This plugin caused my server to crash many times because of the SQLite database.

  • Avatar of Dh82 Dh82 Apr 12, 2016 at 00:11 UTC - 0 likes

    Unfortunately, the developer links do not work. Please inform me if I am the only one who is getting the "404" error code from the link.

  • Avatar of dutchy1001 dutchy1001 Apr 08, 2016 at 09:01 UTC - 0 likes

    @FireController1847: Go

    Sorry for previous reply (deleted now) wasn't awake to realise I answered in the wrong plugin as my own.

    Were is my Coffee.....

    uSkyblock: Official Website
    uSkyblock: Issue report
    Latest version download: uSkyblock Latest
    uSkyblock server:

    I'm associated with uSkyblock (v2.0.1 and upwards) but can't be held responsible for mistakes you make.

  • Avatar of FireController1847 FireController1847 Apr 08, 2016 at 03:14 UTC - 0 likes

    Every time I run the game, I get this error:

    [22:10:51] [Server thread/ERROR]: Cannot load plugins/Playtime/events.yml org.bukkit.configuration.InvalidConfigurationException: while parsing a block collection in "", line 8, column 9: - 'msg %u For playing thirty min ... ^ expected , but found Scalar in "", line 9, column 12: - 'adjustbonusclaimblocks %u 10' ^ at org.bukkit.configuration.file.YamlConfiguration.loadFromString( ~[YamlConfiguration.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at org.bukkit.configuration.file.FileConfiguration.load( ~[FileConfiguration.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at org.bukkit.configuration.file.FileConfiguration.load( ~[FileConfiguration.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration( [YamlConfiguration.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at com.rogue.playtime.event.EventHandler.loadEvents( [Playtime.jar:?] at com.rogue.playtime.event.EventHandler.( [Playtime.jar:?] at com.rogue.playtime.Playtime.onEnable( [Playtime.jar:?] at [JavaPlugin.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at [JavaPluginLoader.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at org.bukkit.plugin.SimplePluginManager.enablePlugin( [SimplePluginManager.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin( [CraftServer.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins( [CraftServer.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] at net.minecraft.server.MinecraftServer.func_71243_i( [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.func_71222_d( [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.func_71247_a( [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71197_b( [lt.class:?] at [MinecraftServer.class:?] at [?:1.8.0_66] Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block collection; expected , but found Scalar at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockSequenceEntry.produce( ~[ParserImpl$ParseBlockSequenceEntry.class:?] at org.yaml.snakeyaml.parser.ParserImpl.peekEvent( ~[ParserImpl.class:?] at org.yaml.snakeyaml.parser.ParserImpl.checkEvent( ~[ParserImpl.class:?] at org.yaml.snakeyaml.composer.Composer.composeSequenceNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeMappingNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeMappingNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeMappingNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeNode( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.composeDocument( ~[Composer.class:?] at org.yaml.snakeyaml.composer.Composer.getSingleNode( ~[Composer.class:?] at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData( ~[BaseConstructor.class:?] at org.yaml.snakeyaml.Yaml.loadFromReader( ~[Yaml.class:?] at org.yaml.snakeyaml.Yaml.load( ~[Yaml.class:?] at org.bukkit.configuration.file.YamlConfiguration.loadFromString( ~[YamlConfiguration.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0] ... 17 more [22:10:51]

    And this is my events.yml:

    events: thirtyminutes: type: onlinetime time: 30 at-login: false repeat: true commands: - 'msg %u For playing thirty minutes, you have earned 10 bonus claim blocks! - 'adjustbonusclaimblocks %u 10'>>

    Any ideas?

    Edit: It is actually working, it's just giving me a big error.

    Last edited Apr 08, 2016 by FireController1847: Missed a part

    Yogbox 2.0 Official Server

  • Avatar of TheCrafterBoyGER TheCrafterBoyGER Mar 23, 2016 at 10:13 UTC - 0 likes

    It sends "Playtime:Null" every 10 Minutes. I didn't change anything... but yesterday it worked fine. Server Version: git-Spigot-db6de12-18fbb24 (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT)

  • Avatar of SalC1 SalC1 Mar 06, 2016 at 18:35 UTC - 0 likes

    If you have 1.9, do not install this. It will spam the console with errors. Please update this to 1.9!

  • Avatar of raphy123 raphy123 Jul 19, 2015 at 11:57 UTC - 0 likes

    hello, can you update for 1.8.7 ? please :) I have some errors to configure events

  • Avatar of conetopia3000 conetopia3000 Jul 06, 2015 at 10:46 UTC - 0 likes

    Known issue. in the config, you have to set your own perms its listed as noperm, ingame none of my default users can check /playtime

  • Avatar of kwilson7770 kwilson7770 Jun 19, 2015 at 23:50 UTC - 0 likes

    So this plugin keeps track of players time as expected, which I love. Something that is annoying is that the events does not work :/

    Some of the events work without issue. This is at-login and online type of events. However, the most important one for me is the playtime event. This is what my events.yml is set to:

        type: onlinetime
        time: 120
        at-login: false
        repeat: true
        - 'msg %u Here''s some food for being online so much!'
        - 'give %u 354 2'
        type: playtime
        time: 0
        at-login: true
        repeat: false
        - 'msg %u You have played for %t'
        type: playtime
        time: 480
        at-login: false
        repeat: false
        - 'pex user %u group set Level1'
        - 'broadcast Congrats on the promotion %u!'
        type: playtime
        time: 1440
        at-login: false
        repeat: false
        - 'pex user %u group set Level2'
        - 'broadcast Congrats on the promotion %u!'
        type: playtime
        time: 2160
        at-login: false
        repeat: false
        - 'pex user %u group set Level3'
        - 'broadcast Congrats on the promotion %u!'
        type: playtime
        time: 2880
        at-login: false
        repeat: false
        - 'pex user %u group set Level4'
        - 'broadcast Congrats on the promotion %u!'
        type: playtime
        time: 3600
        at-login: false
        repeat: false
        - 'pex user %u group set Level5'
        - 'broadcast Congrats on the promotion %u!'

    It is rather simple, after a set period of time people will be promoted using PEX and a broadcast will be displayed.

    This is my config:

      debug-level: 0
      check: true
      download: true
      use-github: true
      locale: en_US
      death-time: true
      online-time: true
      enabled: true
      interval: 60
      timeout: 900
      check-chat: false
      enabled: true
      interval: 10
      manager: sqlite
        host: *******
        port: *******
        database: *******
        username: ******
        password: *****

    I left this alone for the most part and for some reason it still doesn't work :/

    Please help or fix whatever is causing the events to not fire off.


Date created
Aug 10, 2012
Last update
Jan 21, 2014
Development stage
  • enUS
GNU General Public License version 3 (GPLv3)
Curse link
Reverse relationships
Recent files