Autorank

Autorank

380k Downloads

Multiple issues

TNTUP opened this issue · 14 comments

commented

Hey, been using AutoRank since Minecraft 1.6.2 (I think) and I was stuck to AutoRank 3.4-Dev-355 because of recent AR issues and incompatibility between plugins (aka Stats2) but I don't use Stats2 anymore so I decided to upgrade AutoRank to its latest release. However, I've encountered issues, let me explain them^^

  • Comments in AR's config gets deleted at server reboot or editing an option then /ar reload

  • Assuming MySQL option is enabled across all servers, the /ar gcheck should be useable on all servers even if the player didn't join the server Y but does play on X and Z.

  • Since I updated Autorank 3.4 to 4.2.8, everyone is being re-ranked up again and its spamming till they reach the maximum requirement. I'm using time based ranks. I'm on LuckPerms, so it doesn't even check if I'm already a Trusted player. Not sure if its because how I did setup my own Paths.yml, if needed ill upload it here. Screenshot: https://i.qcfb.ca/20191203112629.png

eg: Player1 had Trusted rank and completed 24 hours on AR 3.4. I updated Autorank 4.2.8 but Player1 gets ranked up again to Trusted (imagine with a 24 ranks on the server) would spam the chat. It will repeat on other servers if he didn't join since I updated AR.

I'm thinking a solution, AR will check if the player already had Trusted in the permissions plugin (LuckPerms) then it will not rankup but updates the "completed ranks" in the playerdata.yml or in mysql (that would require a new table "playerData")

  • Between servers, the /ar time or /ar gcheck aren't in sync with MySQL database (autorank). Some has a difference of -/+ in hours/minutes. Like, you have 23 days, 14 hours and 44 minutes on Server X. On server Y, you will see a difference of -25 minutes. Despite the AR interval check of 5 minutes, seems the connection to the MySQL database gets dropped if another instance is started. Every server should keep a connection to the MySQL server so every server will update/check the database.

I mean, it won't cause issues if server A updates Player1's time, server B updates player2's time and server C checks Player's time. All in sync

Sorry if its badly explained or vague, my english is quite bad =x

Comments:

I'm using the MySQL as the "primary storage system" so it should go in the database, not in the files like uuids/uuid_a.yml and data/playerData.yml. Guessing that would avoid double rankup across servers and gcheck'ing will be possible. Doing that would create missing tables. I still have these files on my main server, but I've already sync'd their time but not their uuid's and playerData.yml. Thinking an option like "/ar sync playerdata or uuid"

PS: It is possible I typed the same thing twice in this report

**EDIT: I've managed to add them permissions as a prerequestie, if they don't have that permission they wont be autoassigned.

default-Citizen has the permission to the first path, the next rank doesn't have the permission for the first path but does have perm for the next path etc**

commented

Can you show me your Paths.yml file and the Settings.yml file?

commented

AR.zip

Here's both files requested^^ You'll see from the first point the comments are gone in the Settings.yml

commented

Hmm, so both files look good to me. I'm not sure why the comments get removed from the file, that's a bit strange. However, it's also not ground-breaking.

commented

Yep^^

You'll notice (since I updated AR to 4.2.8, I'm getting players spam rankups if they didn't log since I updated AR. The primary storage provider is MySQL, though still saves in uuids/ (folder and files) and in data/playerData.yml. That causes on other servers rankup spam again till they joined because of the update... If they get saved to the database like "playerData" and "uuidData" would allow gcheck'ing across all servers and it will prevent rankup spam on all servers. However, that will require a database reset or like /ar sync playerdata and uuid.

Been using this plugin since 1.6.2, keep the good work and im f*'ing glad you're back!!

commented

Autorank will still keep track of local time and store data in the uuids and playerdata files, because the primary storage provider does not change that. The primary storage provider option merely tells Autorank what data to use when requesting playtime. However, it will still keep track of the other time as well.

commented

The issue that you can't check users that haven't played on the server is something I'm working on. It's not related to the primary storage provider though.

commented

Oki^^ Then how I can avoid spam rankups across all servers? It should check with the permission plugin if they already had X rank. Currently I have "Vagabond (default), Citoyen2, Adepte2, Comte, Savant, Monarque, Duc, Prestige". If the player has Prestige but AR doesn't know it because of the update, it should check with LuckPerms or other perms plugins if they have inheritence.

Ok! Good to know, I was always wondering that was the case xD

commented

So is this what is happening:

  • A player plays on server A and gets rank Z (after rank X and Y).
  • A player then joins server B with default rank X and is quickly promoted to rank Y and Z.

Is that your issue? Or is there something else going on?

commented

Your message is based if I use the "lp user &p promote default" I guess...

The issue if Player A has the rank "Comte, 4rd rank" gets ranked up to "Savant 5rd rank" but it shouldn't because of the requirements. Comte requires atleast 2 days of playtime which Savant is 3days. Player A only has 2days 2 hours 45 minutes. Rinse and repeat on all servers.

As a workaround, I'm using "lp user &p parent add (rank) then on command2 instead of ADD its REMOVE. This prevent "illegal" ranking because they don't have the requirement for.

Still, AR doesn't know if the player already had Comte in LuckPerms. It should check before ranking up (that could avoid spam rankup incase of plugin updates).

(Sorry if there's repeated things here)

commented

Hmm, but why does the player get ranked up from Comte to Savant even though it less than 3 days. That's not right. Is Autorank doing that?

commented

Hmm, but why does the player get ranked up from Comte to Savant even though it less than 3 days. That's not right. Is Autorank doing that?

Sadly yes, because of the command "lp user &p promote default" on all paths. Despite already have Comte, AR doesn't know if he already completed past ranks since the update. Using "parent add (rank)" then "parent remove (rank)" solves partially but doesn't solve the spam ranking (command1 say message, command2 lp user &p parent add (rank) then parent remove (previous rank) to avoid duplicates. I don't want to see "Vagabond, Citoyen, Baron, Comte" in their groups. All of those ranks has inheritances so it should have only one rank.

Hopefully when it reaches Comte (which it already has, Luckperms ignores it) Is it an issue of Luckperms if it doesn't tell AR it already inherits the previous rank?

(Sorry again my english sucks)

commented

So the player can be Comte on one track, but not on the other? Autorank sees 'hey the player is in the group Comte' and thinks that the player changed groups, right?

commented

Let's talk on Discord btw, because I want to know your set up for LuckPerms. It seems I don't understand it. Add me on Discord, my name is Staartvin

commented

They're on all the same track "default". Even if the player is Comte, AR doesn't check if hes already Comte.

Will add :)