OnTime
OnTime
Now every MineCraft server can track the playtime (current login, daily, weekly, monthly, and all time) for all players with this powerful, full function plugin. With OnTime a “top 10” list can be generated in game, current and total playing statistics can be displayed (also in game), and daily/weekly/monthly reports of all players can be generated and viewed (off line).
Administrators can define OnTime Rewards which will result in econ amounts, items (including enchanted items and potions), item kits, group add/delete, group promotion/demotion, permission grant/denial, command executions, loyalty points, personalized messages, and XP to be automatically issued to a player when they have achieved a specified amount of daily, weekly, monthly, or total playtime on the server.
Rewards can also be issued when players refer other players to the server, voted for the server, played for a specified number of different days, been absent from the server for a specified number of days, shops with their accumulated points or wealth, upon player's death, or they achieve status as a top player. A built in Votifier Listener makes issuing of rewards for web-site voting a snap. Vault is used so OnTime Rewards and permissions are supported by multiple economy and permission plugins.
SUBSCRIBE TO GET LATEST UPDATES
Don't forget to subscribe to OnTime to make sure you are automatically made aware of OnTime updates,which will give you the link to download the latest version even before it is approved by BukkitDev moderators!
Plugin Notes
IMPORTANT NOTES on V4.1.4
Recompiled V4.1.3 using Spigot API for MC 1.9. No other changes or fixes
IMPORTANT NOTES on V4.1.3
The new outputs for vote and refer daily, weekly, monthly totals are not automatically added to the "/ontime <player name>" display. If you want to see this data, then you will need to edit the "output.yml" file.
IMPORTANT NOTES on V4.1.2
- The primary purpose of this update was to address some lingering issues with duplicate MySQL records created when a player changed names.
- In addition to address some base code issues, the "/ontime uuid merge" command was modified to require that one or two player names, or the keyword 'all' be provided when using this command. If a single player name is provided with the command any records with the same UUID as that associated with the provided name will be combined into a single record. The player name associated with that UUID will be the name specified in the command. If 'all' is specified OnTime will merge all records found for each unique UUID..
- If two player names are specified in the command then records containing those two player names will be merged into a single record, and they will be associated with the second player specified and its UUID.
- A new configuration parameter has been added to have ontime auto merge duplicate player records for a given UUID, upon the next login of player seen using such UUIDs. It is recommended that this method be used to correct the duplicate record issue over the 'merge' or 'clean' commands.
- Caution should be taken when the 'ontime uuid replace' and 'ontime uuid merge all' commands are used on systems with large player databases. It may take a very long time for these commands to complete, and should only be run at periods of low player traffic. While these command are running, all OnTime functions will be suspended and players will not receive playtime credit; they will not receive rewards; and votes etc. will not be counted.
- There are still some significant issues with OnTime working properly when 'multiServerEnable' is set to TRUE. It is recommended that until I get these issued addressed that this OnTime function not be used.
IMPORTANT NOTES on V4.1.1
This update fixes issues with duplicate UUID records created when player's change names. This fix will address all future changes but does not directly address the existing duplicates. For this I have extended the "uuid" commands to include an option that will 'merge' the duplicate records into a single record. Please see HERE for more information on the "uuid" command, and specifically the "merge" keyword.
Prior to upgrading to OnTime V4.1.x you MUST have already upgraded to OnTime v3.13.4. Attempting to upgrade from any version prior to V3.13.4 will not properly auto update any of the OnTime YML configuration files. So if you are using any version prior to v3.13.4, load that version first into your plugin directory, restart your server or re-load your plugins, then replace with V4.1.x and do another server restart or plugin reload.
IMPORTANT NOTES on V4.1.x
This version of OnTime contains a significant software re-write in order to be compatible with MineCraft V1.8, with support for UUIDs, and changeable player names. This version was fully tested with Spigot/Bukkit v1.8.1, and this will be the primary MIneCraft server base supported. OnTime V4.1.x will NOT WORK with Bukket v1.25 nor Tekkit classic. It should still work with the last Bukkit releases (1.7.2 / 1.7.9 ), but no significant testing has been done with these releases, so servers using those versions are better off using the latest OnTime V3.x release.
The "online tracking" function still DOES NOT WORK properly in a multi-server configuration. If you are using a single OnTime MySQL database to store data from multiple servers, conflicts will arise between the servers, and errors and some server lag may result. Until I can get this corrected, please disable this function on all multi-server systems.
From OnTime/config.yml:
# Enable if Online player status should be tracked in MYSQL Table onlineTrackingEnable: false
OnTime will automatically modify the contents of your config.yml, playerData.yml, and output.yml when you upgrade from any release previous to v4.1.x. OnTime will put a copy of your current versions of these files into the plugins/OnTime/backup folder prior to this update, so you can revert back if you find the need to downgrade back to an earlier version of OnTime.
Please see the release notes page for additional information about changes that have occurred since your last upgrade.
"ontime.*" Permission Group
In v3.11.0 support for the "ontime.*" wildcard permission was removed. This was causing problems based on how OnTime sometime uses negated permissions. This has been replaced with better defined 'recommended' wildcard permission sets for 'admin', 'moderator', and 'player' roles.
ontime.track Permission
In v3.10.0 a permission string ("ontime.track") was added, which allows admins to enable/disable OnTime tracking of individual players. When this is set to "false" OnTime will not process players upon login, nor will it create OnTime records for new players. This permission is "true" by default, and most permission plugins will pick up this default setting, and server owners will see no change from previous versions of OnTime. But some permission plugins (e.g. bPermissions, others?) do not pick up the default and treat this as "false" for all players, which effectively disables the OnTime plugin. In this case of such permission plugins, the "ontime.track" should be added to the base set of permissions for all groups whose users are to be tracked by OnTime.
Online Support
If I am online you may find me here for IRC
bpermissions plugin compatibility
- If you are going to use OnTime rewards, make sure that the "groups:" keyword is set to "- all" instead of "- global" when using bPermissions.
- Make sure to add the permission string "ontime.track" to your base group, or all groups for which you want tracking enabled.
Integration with AFK Terminator
I have an independent plugin "AFKTerminator" that detects and potentially eliminates AFK Machines. An "AFK Machine" allows a player to avoid "AFK" detection through continual movement. See the [|Other Function] page for more details.
Integration with OnSign
There is a second companion plugin for OnTime, which I have named OnSign. OnSign allows players to create MC signs that will show a player's current online/offline status, time of last login/logout, and their daily/weekly/monthly and total scores for playtime, votes, and referrals. With OnSign you can also create signs showing the "top" players for playtime, votes, and referrals. With OnSign v1.3.0 or later OnSign supports signs that interact with the OnTime Shop rewards, allowing players to pick their own rewards by spending Points or 'coins'.
OnSign and OnTime version compatibility
- OnTime v3.8.1 or earlier will work with OnSign v1.0.0
- OnTime v3.8.2 - v3.9.0 will work with OnSign v1.1.0
- OnTime v3.9.1 - v3.10.3 will work with OnSign v1.2.0
- OnTime v3.11.0 or later will work with OnSign v1.3.0
- OnTime v4.1.x or later (may work with OnSign v1.3.0 (I have not tested this yet, but it should still be working)
Automated Update Check
OnTime performs an automated check to see if there is a new version of the plugin available for download. It will NOT download new versions, but simply notify the server administrator that one exists via console messages. By default, this function is enabled, but can be disabled by setting "updateCheckEnable" in the OnTime/config.yml to 'false'.
Features:
(Items in BOLD are new in the latest 4.1.x release of OnTime)
- ^Player Statistics
- Display your own OnTime data: (configurable) plugin default: current login, daily, weekly, monthly, and total time on the server
- Display anther player's OnTime data: (configurable) plugin default: days since first login, different days on server, current login time, AFK status, AFK time for login, today, week and month; current day, week, and month play time, total OnTime, points accumulated, econ balance, next OnTime reward(s), and voting and referral statistics.
- Display player's total, daily, weekly, and monthly playtime on a per-world basis, in addition to the standard per-server basis
- Display all online players’ current session and total time
- Display ‘top #’ players, ranked by play time
- Display ‘top #’ players, ranked by total time for the day, week, and month
- Display 'top #' players, ranked by total points
- Display 'top #' players who have voted for your server for today, week, month or total
- Display the 'top # sites' to see where the votes are originating
- Display the 'top #' players who have referred other players for today, week, month or total
- Display the 'top #' players who are logging AFK time on your server for today, current week, and current month
- Display list of players referred by a specified player.
Rewards
- Define rewards issued to players for their time played on the server:
- Cash! (Economy)
- MineCraft Items
- Enchanted Items
- Potions
- Item sub-types (e.g. Chiseled Stone)
- MineCraft Item Kits
- Permission Group Add/Remove
- Permission Group Promotion/Demotion
- Give Permissions
- Take Away Permissions
- Execute (almost) any command
- XP (experience points)
- 'Loyalty' Points
- Send a message
- Issue Rewards based on daily, weekly, monthly, or total playtime. For the server, or unique rewards per-world.
- Define Econ, Item, Command, and XP rewards as recurring or perpetual
- Define rewards for referring new players to the server
- Define reward to be issued when a player identifies who referred them.
- Define rewards to be issued when players vote online for your server (via Votifier)
- Define rewards to be issued when a player has been absent from the server for a specified number of days
- Define rewards to be issued when a player dies
- Define rewards that players can purchase using Points or 'coins'
- Definition of Individual (or indi) Rewards, which can be issued to a specific player at a specified future time.
- Issue some rewards to only members of certain permission groups. e.g. donors
- Issue rewards to the 'top' playtime, points, voting, or referring players daily, weekly, monthly, and/or overall total
- Give ‘temporary’ rewards such as rank/group memberships or permissions
- Enable/disable display of 'reward issued' messages to all players
- Enable/disable display of ‘reward issued’ messages on a per-reward basis
- Customize displayed ‘reward issued’ message on a per-reward basis
- Broadcast a message to all Online players when someone else receives a reward. (Good way to advertise rewards issued for voting and referring players.)
- Display of the next rewards to be issued to all online players
- Ability to suspend issue of rewards while a player is AFK.
- Define rewards that are only issued when player is in a specified world
- Make purchase of a 'shop' reward for a specified player via admin command
- Make a purchase of a 'shop' reward by a player for themselves
Messages
- Pre-define messages that can be issued to players at login, or based on time
- Define messages adhoc (on the fly) that can be issued to players at login, or based on time
- Assign customized messages to be displayed when rewards are issued
- Send a message to a player based on play time (daily, weekly, monthly, or total play time)
- Define 'welcome' messages to the player, and server announcements on player's login showing OnTime data
- Enable/Disable server broadcast announcements per player via permissions node
- Manage messages set via edit of .yml file or in-game/console add/remove/list commands.
Manipulate a Player's Data
- Manually add a player to the OnTime database
- Set a player's total OnTime
- Set a player's number of different days on server
- Set a player's first login to the server date
- Set a player's total points
- Add or subtract time to/from a player's total OnTime
- Add or subtract points to/from a player's total points
- Remove a player from the OnTime data files
- Configure plugin to exclude players time 'AFK' from total and daily/weekly/monthly calculations
- Import player names and their total OnTime (play time) data from YML files, OnTime Reports, or LogBlock plugin.
- HTML, TXT, and MYSQL Report format options
- Generate a report file of all players total time and time stamp of last login event
- Generate a report file of all players time on your server today, for the week, or for the month
- Generate a report of player's AFK time daily, weekly, and monthly
- Configure the 'first day of the week' for weekly reports
- Configure the 'first day of the month' for monthly reports.
- Auto generation of total, daily, weekly, and monthly reports
- Auto purge/delete of old report files/tables you no longer want
- Generation of an 'OnLine Report' which stores an admin defined set of data for all online players to a MYSQL table
Manage The OnTime Plugin
- Find missing UUIDs by importing from Mojang's servers
- Automated detection of the availability of a new version of OnTime
- Select method for storing the OnTime player data: .yml files (default), or MySQL database
- Auto-purge inactive or players with low total OnTime from the data files
- Execute admin defined commands when players are purged from the OnTime data files.
- Scheduled saves of OnTime data to disk
- Auto update of all online players data, file save, and data purge on server shutdown/reset
- 'test’ commands to simulate login/logout events; creating fake OnTime records; test daily reports; test votifier rewards
- Logging of OnTime auto purge activity, player login and quit events, and reward system events
- Manual and Automated Generation of Backup versions of OnTime '.dat' files.
- Import playername and total OnTime data from a .yml file.
- Importplayername, total OnTime and last login data from the 'logblock plugin' MySQL database.
- Configure OnTime Report file names and location
- Administrator defined "help" information that players can easily access.
- Suspend/Resume all OnTime activity while administering rewards or other OnTime data manipulation
- Enable/Disable/Configure OnTime LogFile and Console data in game or from the console
Other Plugin Integration
- Use of Vault for support of multiple economy and permission plugins [REQUIRED]
- Integration with Vault Permissions for group changes and permissions add
- Import playername, total OnTime and last login data from the 'logblock plugin' MySQL database.
- Issue rewards when players vote for you server on website which also support Votifier.
- Integration with "AfkTerminator" for discounting time spent AFK while using an AFK Machine
- Integration with OnSign, to display player information, top players, build Reward shop, all on user defined signs.
- API: OnTime offers an APIto allow other plugin integration with access to OnTime's collected data for player's time on the server, votes, and referrals.
- Execute other plugin console commands when players are auto-purged by OnTime
Please see the pages for permissions, configuration, commands, etc.
Installation
- Place ontime.jar in your plugin folder
- Download vault.jar and place that also in your plugin folder
- (Option) Download a Vault supported permissions plugin and place that in your plugin folder
- (Option) Download and install the AFKTerminator plugin
- (Option) Download and install the OnSign plugin
- (Option) Download and install the votifier plugin
- Modify permissions groups to enable OnTime functions. (click here for permission nodes)
- Reset your server
If the optional Permissions plugin is installed: - Edit /plugin/ontime/rewards.yml, listing the permissions groups from lowest to highest under the 'groups:' keyword
If the optional commands rewards are to be used: - Edit /plugin/ontime/rewards.yml, defining the commands that can be 'rewarded' under the 'commands:' keyword
If the optional 'kit' rewards are to be used: - Edit /plugin/ontime/rewards.yml, defining the kits that can be 'rewarded' under the 'kits:' keyword
If the optional MySQL database is to be used to maintain the player data: - Edit the /plugin/ontime/config.yml, enabling the use of mysql and setting up the definition of the MySQL database.
If the you want to change the output the plugin sends a player: - Edit /plugin/ontime/output.yml, following the instructions found in that file.
If the optional OnTime Messages is to be used to displayed timed messages to players: - Edit the /plugin/ontime/messages.yml, to add any pre-defined messages you need. (editing this file is not required to use this feature.)
- If the config.yml, output.yml and/or rewards.yml have been modified, then you must reload this data with the command "/ontime reload all"
Future Enhancements Under Consideration
- See BukkitDev Tickets tab for OnTime
Feature Requests:
If you want to request a feature to be added to this plugin, or you think any of the above should be given a higher priority, please submit a ticket or vote for existing ones.
Please Leave Comments
I'd love to hear what you think (good and bad) about this plugin. It will help me know if it's worth keeping up on the maintenance. Thanks. Edge
Change Log
For a more detailed change log, see here.
V4.1.4
Compiled/Tested with Spigot/Bukkit V1.9; Java8; Vault 1.5.2; Votifier 1.9
- Recompiled V4.1.3 using Spigot API for MC 1.9. No other changes or fixes
V4.1.3
Compiled/Tested with Spigot/Bukkit V1.8.1; Java7; Vault 1.5.2; Votifier 1.9
Fixes
- Fixed problem with "indi" rewards info listing time as "9999 days" instead of "(individual)" in reward info display (Ticket #543)
- Fixed issue where votifier rewards could end up with a 9999 day delay, if redefined from an indi to votifier reward (Ticket #543)
- Fixed lingering issue with race condition between login and changeWorld events on servers with dedicated 'spawn' worlds. (No Ticket)
Functional Enhancements
- Added ability to display daily, weekly, and monthly totals for votes and referrals to the "/ontime <player name>" output. (Ticket #541)
New Output Variables
- [dailyVotes] - Display a players vote total for the current day
- [weeklyVotes] - Display a player's vote total for the current week
- [monthlyVotes] - Display a player's vote total for the current month
- [dailyRerfer] - Display a players referral total for the current day
- [weeklyRefer] - Display a player's referral total for the current week
- [monthlyRefer] - Display a player's referral total for the current month
V4.1.2
Compiled/Tested with Spigot/Bukkit V1.8.1; Java7; Vault 1.5.2; Votifier 1.9
Fixes
- Addressed additional issues with duplicate UUID records created when players change names (Tickets #537, 539)
- Fixed issue where race condition could happen between change-world and join player events on servers with 'spawn' worlds. (No Ticket)
- Fixed issue with "multiServerName" set to invalid value by OnTime autoupgrade (Ticket #536)
Functional Enhancements
- Expanded "uuid" command to support merging of specified player records
- Added auto merge function, to take care of merging player records (same UUID different player name) on login (MySQL only)
- Updated API for compatibility with new v2.0.0 of OnSign
New Permissions
- None
New Configuration Parameters
- uuidMergeEnable: (Default False) - If 'true' OnTime will automatically merge player records if there are multiple records for a single UUID but different player names.
Modified Commands
- ontime uuid [merge] <playername 1> {<playername 2>}
Merges player records to create a single record. Valid for both MySQL and YML dataStorage
New Output Variables
- None
New Configurable Output
- None
V4.1.1
Compiled/Tested with Spigot/Bukkit V1.8.1; Java7; Vault 1.5.2; Votifier 1.9
Fixes
- Addressed issue with duplicate UUID records created when players change names (Ticket #537)
- Fixed issue with daily report SQL syntax error (No Ticket)
- Fixed issue with online report NPE when logging enabled at level 1 (No Ticket)
- Addressed issue where player's total time could not be set to zero, and where current login time was always added to any set value. (Ticket #534)
Functional Enhancements
- Added new 'uuid' command that merges multiple UUID records into a single record (sums times, picks oldest first login, newest playerName, etc.)
- Added support for negative econ (a.k.a. tax) reward (Ticket # 532)
New Permissions
- None
New Configuration Parameters
- None
New Commands
- ontime uuid [merge]
Helps manage UUIDs in the OnTime database. Merges duplicated UUID records, into a single record.
New Output Variables
- None
New Configurable Output
- Rewards: tax - This output is used when negative econ (a.k.a a tax) is imposed on a player
V4.1.0
Compiled/Tested with Spigot/Bukkit V1.8.1; Java7; Vault 1.5.2; Votifier 1.9
Fixes
- OnTime's config.yml has been restructured to make it easier to find elements within (No Ticket)
- Fixed output backup function which was not working previously (No Ticket)
- Fixed issue where players added with "/ontime add player" command were auto-purged on start of next new day. (No Ticket)
- Fixed MySQL 'backup' methodolgy (No Ticket)
- Fixed 'Help' file processing that generated errors in OnTime logfile during at plugin startup (No Ticket)
Functional Enhancements
- UUID Support (Phase II)
- UUIDs missing for players already in the OnTime database, can be imported from Mojang if available
- UUIDs are now used to distinguish players
- If a player changes names, the new name will be auto associated with the UUID, no playtime etc. will be lost
- If a player tries to login with a player name already associated with a UUID found in the OnTime database, the new UUID will not be tracked. This will prevent confusion in the server of having two players with the same player name (at least from an OnTime perspective)
- Command added to help manage UUIDs in OnTime's database
- Added per-world tracking and rewards.
- The time a player spends in each world on the server is now tracked in addition to the total time spent on the server. This includes total, daily, weekly, and monthly times.
- Per-world rewards are improved because it is based on the time spent in the world, not just issued in a particular world based on total server time.
- Improved "AFK" with instant detection when back from AFK
- Removed requirement that a space " " be inserted in some configurable output strings
New Permissions
- None
New Configuration Parameters
- MySQL:multiServerTable - Default = ontime_multiserver
- perWorldEnable - Default: false
New Commands
- ontime <other> <worldname>/[ALL] - see player's time in a particular world, or for all worlds
- ontime uuid [CLEAN | FIND | PURGE | REPLACE]
Helps manage UUIDs in the OnTime database. (Please read command details before using these as records could be lost unintentionally)
New Output Variables
- None
New Configurable Output
- dateNotAavailabe: Used when a date/time piece of data is not found.
This would be perfect with a /redeem function, where they /redeem uniquecode
Getting error spam with the newest version (Will provide pastebin shortly). Additionally, it would seem that at some point my .dat files generated errors, and I do NOT want to lose the data. Any way to salvage them? What can I use to open and edit them?
OnTime Users,
Several of you have asked for rewards that would only be issued to certain groups of players. This can be easily achieved by using permission system groups. Here are my thoughts of what I'd like to do to fulfill this request. If you have any comments, additions, changes, or think this is good plan, please respond here. Thanks, Edge
OnTime "Group Permission" (Exclusive) Rewards:
This enhancement will allow administrators to designate some permission group members capable of receiving specific OnTime Rewards, while members of other groups without the correct permissions will not receive the rewards. In the case where a player does not have the correct permission, that reward would be skipped and the player would be scheduled for the next reward for which they are eligible (if any).
Commands:
Note: For these commands <rewardID> is the ID number shown for a reward in the output of the 'ontime rewards list' command.
ontime rewards exclusive add <rewardID> <group list>
shorthand: ontime rw excl add <rewardID> <group list>
This command will identify a reward as one where permission check is required, and it will automatically add to the listed groups the needed permission strings.
If a reward is already an 'exclusive' reward, this same command can be executed to add more groups.
The groups could be any valid group defined by the permissions plugin and does not necessarily need to be listed in the rewards.yml. (but it is recommended that all groups be listed there.)
ontime rewards exclusive remove <rewardID> <group list>
shorthand: ontime rw excl rem <rewardID> <group list>
This command will remove the permission string from the specified list of groups
ontime rewards general <rewardID>
This command will do the opposite of the 'exclusive add' and will make the reward available to the 'general public' and will automatically remove the permission string from any and all groups which may have it set.
If an exclusive reward is deleted via 'ontime reward remove' command, the permission string will be automatically removed from any group which has that permission string.
ontime rewards info <rewardID>
This command will display all current information about a given reward including:
Reward ID
Single or Recurring
Individual Only' Status
Group Permission or General
If Group Permission: groups with this permission
Permission string
Time Period
Recurring Period
Reward Type
Reward Quantity (for items)
Reward
When the 'exclusive add' is executed the first time the plugin will auto-generate a permission string of the format 'ontime.reward.<rewardstring>' Where <rewardstring> will be a unique combination of some of the data which defines the reward. Although all of the commands needed to manage the automatically the setting of the group permissions, the permission string can be set by hand, and that string can be determined by doing the 'rewards info' command described above.
@MrHedgehog
I think that what you are wanting is the same as the request under Ticket #18 . Take a look and let me know if you think that there is something different that you want. I have started working on this already and will post here shortly my ideas for others to comment on before I code up the whole thing.
In the mean time I think that there may be a solution in the current capabilities for what you want to do, although I agree the 'group permission' is the right way to go about it. My base assumption is that the rank you have 'locked down' is not a rank that would be granted automatically (via OnTime reward) in the first place. If this is a true assumption than I think this will work.
In your rewards.yml list the 'locked down' rank as the highest rank (last in the list), even above admin. As long as you never create a reward that grants this 'locked down' rank, no one would ever be auto promoted to it. And since it is the highest rank in the rewards.yml list, this rank would never be granted any auto promotion ranks. (This is because OnTime thinks it is the highest and hence should never be changed.) Only when someone in this 'locked dowwn' rank is changed to something else via command or other plugiin, would that player then have chance to receive a rank change reward.
If this does not make sense I can try to explain with a more detailed example.
Thanks for the last fix (below) Edge. I added an important feature request:
http://dev.bukkit.org/server-mods/ontime/tickets/23-allow-rewards-to-be-bound-to-only-certain-permissions/
There's a bug with file paths in non-Windows systems: http://dev.bukkit.org/server-mods/ontime/tickets/22-creates-last-login-data-dat-with-windows-slashes/
Great plugin. Imagicraft.net Recommends!
@ThisUsernameIsMine
Hi. This is a known problem. I will have a fixed version out shortly but in the meantime you can find a workaround here:
http://dev.bukkit.org/server-mods/ontime/tickets/20-severe-feed-backs
And you are welcome.
I'm getting NPE's in my console when disabling Rewards. It happens when someone enters the server.
(tested with the latest CB RB and OnTime v2.2.1 @ 32-bit Java 7 / Windows 7 x64)
[SEVERE] java.lang.NullPointerException
[SEVERE] at me.edge209.OnTime.Rewards.issue(Rewards.java:346)
[SEVERE] at me.edge209.OnTime.Rewards$1.run(Rewards.java:222)
[SEVERE] at org.bukkit.craftbukkit.scheduler.CraftWorker.run(CraftWorker.java:34)
[SEVERE] at java.lang.Thread.run(Unknown Source)
Thanks for the cool plugin! ;-)
@Edge209
I fixed the OP's problem.
But players still aren't getting promoted:
http://i.imgur.com/t1hgr.png
However, players who aren't supposed to be promoted yet are looking fine:
http://i.imgur.com/p2p78.png
Just the ones over the 3 hour mark are showing as being promoted in time N/A, though they already should have been, and they're still not in the "member" group.
I changed my config to include all my groups, too.
I'm still seeing this error though:
2012-05-17 15:33:37 [INFO] [ONTIME] Fault - ScheduleReward NULL player specified.
I've enabled logging in the config and set it to 1, but that's all it's showing - nothing logged before or after it except regular player chatting and normal server activity. Also, just noticed this error:
@tnemrap
The .dat files are in a java native format used by the hash table functions, so in other words Its not something you can modify with a text editor. If you want to modify a players record there are OnTime commands you can run from the console or in game to set and add to their total time and number of days they have been on.
You are not first to ask me this, so if you would really like to see a data file that can be edited, please open up an enhancement ticket.
Hi
What dataformat is it in the .dat files. I want to add some old data that i can retrieve from hawkeye.
/Mike
@chaseoes
I don't know yet if I've figured everything out, but I do have some things for you to check since I was able to reproduce some of the things you are seeing.
1. I see that you have a group defined in PermissionsBukkit called "admins", yet you did not include 'admins' in the priority list of groups in the rewards.yml file. Without having 'admins' listed OnTime thinks that 'member' (the only group listed) is the highest of all groups, and it will try to promote all players to that group. If you have people assigned to 'admins' then your 'rewards.yml' should look like the following:
groups:
- member
- admins
Since admins is higher, admins will never be changed to 'member'.
If you have other groups defined you should list them all in the rewards.yml in order of priority. e.g.
groups:
- default
- member
- admins
- owner
- god
(note that in both of the lists above I could not put in the needed spaces before the '-' due to problem with WikiCreole)
2. I tested 'ontime.rewards.recieve: false' with PermissionsBukkit and it worked for me as expected. But I did confirm that you will see some of the problems you are having if your PermissionsBukkit 'config.yml' is not formatted properly. As is true with all .yml files you MUST make sure that you do NOT use any TABS. All indentations done in a .yml file MUST be SPACES. When I put a tab in front of the words 'ontime.rewards.receive', OnTime tired to issue an reward, which yielded an error with no group change, and output from 'ontime <player>' that had a reward time of N/A.
Even if you know this and you think you used all spaces, I suggest you double check.
3. Make sure you are using the latest versions of PermissionsBukkit, Vault, and Bukkit
Let me know if doing these things yield any positive results.
@Edge209
I noticed the player wasn't promoted and I checked his time, so yeah, they're not getting promoted.
Also, it seems to promote me every time I log in (not every 3 hours?).
@chaseoes
Ok, well I gotta say you are finding some good ones .....
Thanks for all the information this is all very helpful.
I'm going to have to run some tests with PermissionsBukkit to see what is going on with the failure of the permissions settings as well as the repeated rewards.
I'll look at the 'new' issue too where people are NOT getting promoted when they should. This is the error that surprises me the most. Can you check to see if the players are truly not getting assigned to the Member group, and it is just not an error in the OnTime display?
@Edge209
Remember that it's happening to OP's, and it might be giving us the permission automatically (which I could fix by modifying your plugin.yml), but taking away the permission from the group I'm in should fix it, which it's not.
Screenshot of me getting promoted: http://i.imgur.com/sFjp5.png
My rewards.yml file: http://pastebin.com/bxcv7RqR
Either way with my setup, players should only be promoted once to the "member" group, and not every 3 hours as it appears to be happening to me.. so they shouldn't even need the permission to not receive rewards.
Also, players aren't getting promoted at all after they reach a certain time: http://i.imgur.com/L7pU6.png
He should have been changed to "member" at 3 hours (see my rewards.yml above). I made sure the group he's in has the "ontime.rewards.receive" permission, too.
@rourke750
I could definately add in some special handling for bpermissions to execute the '/permissions reload' on each player group change. I'll also check to see if there is another more direct way to interface with bpermissions. Please open up a ticket against OnTime for this enhancement.
In the meantime I have an idea of something you can try that may get you the same results using exiting functionality.
In the rewards.yml create something like the following:
rewards: - S,0,1,0,0,0,0,G,1,Builder
- S,0,1,1,0,0,0,C,1,reload
commands: - reload: 'permissions reload'
With these settings what I expect to happen is that at one hour of OnTime a player will be promoted to Builder, their next 'reward', schedled for 1 hour 1 min, is execution of the command 'permissions reload'. So within a minute of actually getting the group change, the bpermissions data should get updated. The only downside I see to this is that the user will be told of the change, but it wont really take effect until a mintue after they are informed.
For each group change reward you have you would need to follow that up with a 'reload command' reward one minute later.
If you give this a try I'd be interested hear the results.
@Davyhalliday
Adding a function to ignore AFK time is on my short list of things to add for sure. I'm fairly certain it is possible to inteface with Essentials, but I will need to do some research to figure it out. Visit the Tickets page for OnTime and vote and add your comment to the open Ticket already there for AFK support.
Thanks
@chaseoes
For me to look into the permisions problem I really could use some more information:
•What permissions plugin are you using?
•Can you provide a sample from your permissions plugin configuration where you are setting ontime.rewards.receive for a group?
•Can you also pull from the permissions settings for one of the players?
i am using bpermissions and how they set it up is that for certain permissions to work you have to do /permissions reload for the group change to actually take effect. is there a way that this could just do that every time a player gets promoted. i found a plugin that i could tell it to do /permissions reload but that just ends up deleting my perms after a certain amo9unt of time