DaysOn Promotion Not Working #560

  • Defect
  • Started
Assigned to _ForgeUser8455416
  • _ForgeUser10435848 created this issue Apr 19, 2016

    What Version of OnTime and Bukkit are you using?
    OnTime: 4.1.3
    Bukkit: 1.7.10

    What storage option are you using? (YML or MYSQL) ?


    What permissions plugin are you using? (Groupmanager, PEX,bPermissions, etc.)


    Please provide a link to a copy of your plugins/OnTime/config.yml:

    What steps will reproduce the problem?
    1. Set up a promotion reward.
    2. Set the reward as a DaysOn based reward.

    What is the expected output? What do you see instead?

    Player should get promoted when they have played for X days.
    Player never gets promoted.

    It looks correct when I list the rewards but is never given to a player, and produces an error when it's scheduled after a reload:

    "... Bad recurrence code: DAYSON"

    Promotion works fine when time based and only 'breaks' when set to DaysOn.

    Do you have an console log of what happened?

    Nothing related to issue was present in the log.

    Are you having a "rewards" problem?  Please provide a link to a copy of your /plugins/OnTime/rewards.yml :

    Did you turn on OnTime logging (/ontime logfile enable 1)?  If so, provide a link to that file too.

    Please provide any additional information below.

    When collecting the log info above I set myself (DiggyWig) to Explorer rank and so should have been promoted to Resident rank but wasn't.

    Doing '/ontime rewards next straight after reloading the config showed the "Bad recurrence" message where the promotion should have been listed.

    Unfortunately the log doesn't seem to provide any relevant information at all, although the checks for the promotion rewards look like they run fine for players who don't yet have a high enough number of days, they only seem to mess up once the reward actually tries to schedule.

  • _ForgeUser10435848 added the tags New Defect Apr 19, 2016
  • _ForgeUser10435848 posted a comment Apr 19, 2016

    I haven't tried 4.1.4, it seemed a bit pointless as it says no fixes / changes other than being compiled against 1.9.

  • _ForgeUser8455416 posted a comment Apr 19, 2016

    @JBDiggy: Go

    Hi. First thanks for opening the ticket and providing all the info. I'll start digging in shortly.

    The best reason I can give to upgrade to the latest is to insure that we are both working from the same load, and there is later no confusion as to which version should be used.

  • _ForgeUser10435848 posted a comment Apr 19, 2016

    @Edge209: Go

    No problem, fingers crossed you figure it out :)

    Fair enough, I'll upgrade and test it again shortly.


    I updated to 4.1.4, deleted the rewards and then set them up again from scratch, no change.

    Also, here's a screenshot of the message displayed by "/ontime rewards next" just after reloading:


    Edited Apr 19, 2016
  • _ForgeUser8455416 posted a comment Apr 19, 2016

    @JBDiggy: Go

    Thanks for the screen shot, that helps as I was looking in the wrong spot for that part of the problem.

    Regarding how you tried to 'test' the issue, OnTime does not work that way at present. While OnTime can detect 'overdue' promotions when those rewards are based on time played, it currently does not do the same when promotions based on 'days on'.

    The 'days on' reward will only be issued:

    • upon a player's first login on a given day
    • when that first login occurs exactly on the 'days on' count required for the reward

    So if your 'days on' is at 100, but the promotion is supposed to happen on day=75, you will not get the reward. Only if your 'days on' count is set at 74, and you login in for the first time on your 75th day, will you get that reward.

    I will have to consider how OnTime could handle 'days on' promotions in the same manner as time-played based promotions.

    So, in short it should still be working as I described for players as they reach the correct 'days on', but it wont work for anyone that has already exceeded the 'days played' but have a lower group rank.

  • _ForgeUser10435848 posted a comment Apr 19, 2016

    @Edge209: Go

    Ah ok that's interesting to know, thanks for clarifying.

    So to test it properly myself I would also need to set my 'days on' count to a suitable value and wait until the following day (so that it was also the first login of the day).

    We've had about a dozen players that should have been given promotions over the last few days but weren't, but then that was with 4.1.3. I just did a quick check and found 3 due for promotion tomorrow so that will provide a proper test, I'll update then :)

    I would be great if you could figure out a way for it to handle overdue 'days on' promotions, I prefer having it set up that way so that players don't just go AFK for hours, moving every so often so the time still counts, just so they rank up.

    Edited Apr 19, 2016
  • _ForgeUser8455416 posted a comment Apr 19, 2016

    @JBDiggy: Go

    If you have OnTime AFK detection enabled, any time spent AFK will not be counted toward their total time played. Sure they could wake up every so often, but they will only collect a maximum time of the afk detection time (10 min) is the default. The plugin will also tell you how much time a player spends AFK.

    If players try to get around this by using an variety of 'afk machines' or methods, then you can use my other plugin afkTerminator to defeat that.

    Just some options....

    I'll still look at a promotion catch up, but I may be limited in what I can do when you are using YML instead of MYSQL.

  • _ForgeUser10435848 posted a comment Apr 21, 2016

    @Edge209: Go

    The promotions still didn't work, and nothing relevant was logged.

    I've switched to play time based promotions for now, but I'll keep an eye on things in case you figure out promotion catch up or they just start working again in a future update.

    I do use AFK detection but some people just move a little etc every 5-10 minutes to get around it. I can live with that though. I've tried to strike a balance between keeping the promotion times reasonable and preventing players from earning promotions too fast.

    I'll keep an eye on the future versions release notes, thanks for all your hard work :)

    I use YML as I don't really have a need for many of the advanced features, it's a relatively small server and I'm trying to keep thing fairly simple plugin wise. That said I'd definitely consider switching to MYSQL if it meant I could do promotions in the way I originally described.

  • _ForgeUser8455416 posted a comment May 1, 2016

    @JBDiggy: Go

    I have figured out a simple method to make the 'days on' promotions work, such that players missing any such promotions can be caught up. This is not going to require you to move to MYSQL.

    I will have an updated version out sometime this week (I hope) and it will include this enhancement.

  • _ForgeUser8455416 removed a tag New May 1, 2016
  • _ForgeUser8455416 added a tag Started May 1, 2016

To post a comment, please login or register a new account.