Authmereloaded: "restoreWalkSpeed" - Unable to walk on login

Created on 2 Jun 2017  Â·  40Comments  Â·  Source: AuthMe/AuthMeReloaded

Running Spigot 1.7.10 w/ AuthMe Reloaded 5.3.1-legacy. (Build 1702). Offline Mode.

Issue: Unable to walk, even after authentication. Running on an absolute fresh test server with no configuration or plugins in order to diagnose this problem. However, I CAN fly around in gamemode 1, but cannot walk. Op status makes no difference. Happens after re-logging in after password creation. Happens with both a fresh MySQL database or using Sqlite file.

Issue relates to to Limbo: "restoreWalkSpeed: RESTORE setting.

Changing that to "RESTORE_NO_ZERO" or "DEFAULT" speed allows for normal movement, resolving or at least working around the issue.

bug

Most helpful comment

@lianera Thank you for the detailed logs — I really appreciate it! One thing I forgot to mention is that some stuff is logged explicitly for the 'RESTORE' setting only, which is why I think some might be missing.

Regardless, it seems I've been able to reproduce this, so I'll start poking around. I'll keep this thread updated. Thanks once again

All 40 comments

restore no zero is the new default value since 5.3, @ljacqu the MAX and RESTORE options are still glitched.

I'm afraid I'm not able to reproduce this, using the default, MAX_RESTORE, for the walk speed, tested on 1.9.

@Smurfgar we have a command /authme debug limbo <name> that will display limbo information on players incl. the walk speed. A limbo player is basically the speed data of a player that hasn't logged in yet.

We had bad speed restore issues in 5.2 which we attempted to solve in 5.3 with the new limbo way. If you could kindly run /authme debug limbo <name> before and after you log in, you can see what data we have on the limbo player and how it gets restored to the online player after logging in.

I did some test, and I've noticed that this bug happen with restoreWalkSpeed: 'MAX_RESTORE' & useAsyncTasks: true

@ljacqu When you tried to reproduce that, did you have useAsyncTasks: true ?

I tested with useAsyncTasks: true and allowMovement: false.

The thing to be aware of is that once a player has walk speed 0, it can only be changed if the player is logged in. Changing the speed of a player that is not logged in will have no effect when he logs in or joins the server again.

I'd be very interested in some outputs from the debug command, especially if @Smurfgar says this happens on a fresh server even for new players. Right now I don't understand how this is possible.

@ljacqu And did you have deleted your data which is stored in your server's files ? Like playerdata.dat and essentials data. Because this bug happen to new players, when there is any data about him.

Yes, just tried by wiping everything

image

Ok here we go....

After I log on, but before authenticating, with the config set to "restoreWalkSpeed: 'RESTORE_NO_ZERO'.

>authme debug limbo smurfgar

After authenticating, and can now move, with the config set to "restoreWalkSpeed: 'RESTORE_NO_ZERO'.


After I log on, but before authenticating, with the config set to "restoreWalkSpeed: 'RESTORE'.


After authenticating, and cannot move, with the config set to "restoreWalkSpeed: 'RESTORE'.


Not sure if it matters, but I see the debug command doesn't say the 2nd line ("Note: no Limbo information available") before I'm authenticated, only after.

And obviously the walk speed line is different with the config setting changed back to the default 'RESTORE'.

And finally not sure if it matters but I do get a console error when using the debug command on my character when it's online, but still I get the limbo output (obviously, as pasted):

.
.
.
org.bukkit.command.CommandException: Unhandled exception executing command 'authme' in plugin AuthMe v5.3.1-b1702
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[lobby.jar:git-Spigot-1646]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181) ~[lobby.jar:git-Spigot-1646]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:767) ~[lobby.jar:git-Spigot-1646]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchServerCommand(CraftServer.java:753) [lobby.jar:git-Spigot-1646]
at net.minecraft.server.v1_7_R4.DedicatedServer.aB(DedicatedServer.java:326) [lobby.jar:git-Spigot-1646]
at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:290) [lobby.jar:git-Spigot-1646]
at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [lobby.jar:git-Spigot-1646]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [lobby.jar:git-Spigot-1646]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [lobby.jar:git-Spigot-1646]
Caused by: java.lang.UnsupportedOperationException: SuperPerms no group permissions.
at net.milkbowl.vault.permission.plugins.Permission_SuperPerms.getPrimaryGroup(Permission_SuperPerms.java:96) ~[?:?]
at net.milkbowl.vault.permission.Permission.getPrimaryGroup(Permission.java:862) ~[?:?]
at net.milkbowl.vault.permission.Permission.getPrimaryGroup(Permission.java:871) ~[?:?]
at fr.xephi.authme.permission.handlers.VaultHandler.getPrimaryGroup(VaultHandler.java:84) ~[?:?]
at fr.xephi.authme.permission.PermissionsManager.getPrimaryGroup(PermissionsManager.java:274) ~[?:?]
at java.util.Optional.map(Optional.java:215) ~[?:1.8.0_121]
at fr.xephi.authme.command.executable.authme.debug.LimboPlayerViewer$InfoDisplayer.getData(LimboPlayerViewer.java:136) ~[?:?]
at fr.xephi.authme.command.executable.authme.debug.LimboPlayerViewer$InfoDisplayer.sendEntry(LimboPlayerViewer.java:131) ~[?:?]
at fr.xephi.authme.command.executable.authme.debug.LimboPlayerViewer.execute(LimboPlayerViewer.java:73) ~[?:?]
at fr.xephi.authme.command.executable.authme.debug.DebugCommand.executeSection(DebugCommand.java:65) ~[?:?]
at fr.xephi.authme.command.executable.authme.debug.DebugCommand.executeCommand(DebugCommand.java:40) ~[?:?]
at fr.xephi.authme.command.CommandHandler.executeCommand(CommandHandler.java:116) ~[?:?]
at fr.xephi.authme.command.CommandHandler.handleCommandResult(CommandHandler.java:75) ~[?:?]
at fr.xephi.authme.command.CommandHandler.processCommand(CommandHandler.java:68) ~[?:?]
at fr.xephi.authme.AuthMe.onCommand(AuthMe.java:389) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[lobby.jar:git-Spigot-1646]

Oh, and I did one more quick test.

Deleted config, so running on default config. And running new player database, deleted .db file. Before registering. Obviously cannot move.

Registered account. But still cannot move. Re-logging in and authenticating shows the same:


With the default config.yml recreated, the setting is back to "'MAX_RESTORE"

@Smurfgar Thanks for the extended feedback! I will have a look at this tomorrow. I've never tried with restore type "RESTORE", I guess that's what I was missing to reproduce this. I checked & double checked the code and right now I don't understand why it's happening.

i had this happen to my secondary character once earlier today. had to type essentialsX "/speed 1" to fix it

I had the same problem (player is unable to walk and can only jump after login) with Minecraft 1.12 and AuthMe 5.3.1 on a new server install and changing restoreWalkSpeed to RESTORE_NO_ZERO fixed it for me as well (was .MAX_RESTORE by default)

Restore no zero is the new default since 5.3, but the cause of the glitch is still unknown.

@ljqcqu have you figured out something by looking at the debug images?

Hello @Smurfgar @FlorianFranzen @lianera & whoever gets referred to this issue. Unfortunately I'm still not able to reproduce this issue. Therefore, I kindly ask you to download the JAR (legacy or spigot) from https://github.com/AuthMe/AuthMeReloaded/tree/1238-limbo-speed-debug/samples and to run it on your server with logLevel: 'DEBUG' in config.yml.

This JAR simply prints out more information relating to the speed, e.g.:

[01:42:32 INFO]: [AuthMe] [DEBUG] Limbo: got walk & fly speed 0.37777779 and 0.1 for player `bobby`
[01:42:32 INFO]: [AuthMe] [DEBUG] LimboServiceHelper: Setting speeds to 0 for player `bobby`
[01:42:45 INFO]: [AuthMe] bobby logged in!
[01:42:45 INFO]: [AuthMe] [DEBUG] Restoring fly speed 0.1 to player `bobby`
[01:42:45 INFO]: [AuthMe] [DEBUG] Restoring walk speed 0.37777779 to player `bobby`. Reported speed: 0.37777779 (old: 0.20000000298023224)
[01:42:45 INFO]: [AuthMe] [DEBUG] Restored LimboPlayer stats for `bobby`

If you could share the output, it would be immensely helpful in determining what is going wrong. I'm starting to wonder if another plugin is also doing speed stuff.

For example in the log I share above (which is from my server, with another username) you can see "Settings speeds to 0" but then below it says "reported speed: [...] (old: 0.20[...])". It's strange not to see 0 there since AuthMe literally set the speed to 0 just before.

isn't speed supposed to be 1?

MC keeps it between 0 and 1 internally. The default is 0.2, if I do /speed 10 with Essentials it makes me have speed "1". The 0.37777779 you see above is /speed 3 apparently.

@ljacqu I've tested with a fresh spigot 1.12 server and only installed the AuthMe-5.3.2-SNAPSHOT-legacy plugin, the problem still happens. The debug process is as following:
Normal login/disconnect is ok, but if I just connect server and directly disconnect without login, the problem happens, when login again, it can't walk.

## connect server
[23:09:02 INFO]: UUID of player lianera is 36cd7373-fd3e-4eea-86ee-3e05cb38ee24
[23:09:03 INFO]: lianera[/127.0.0.1:22658] logged in with entity id 95 at ([world]3.72898516395842, 63.0, 219.02550055173768)
[23:09:03 INFO]: [AuthMe] [DEBUG] Limbo: got walk & fly speed 0.2 and 0.1 for player `lianera`
[23:09:03 INFO]: [AuthMe] [DEBUG] LimboServiceHelper: Setting speeds to 0 for player `lianera`
## without login, directly disconnect
[23:09:08 INFO]: lianera lost connection: Disconnected
[23:09:08 INFO]: lianera left the game
[23:09:08 INFO]: [AuthMe] [DEBUG] Restored LimboPlayer stats for `lianera`
## login again, the character can't walk
[23:09:14 INFO]: UUID of player lianera is 36cd7373-fd3e-4eea-86ee-3e05cb38ee24
[23:09:14 INFO]: lianera[/127.0.0.1:22672] logged in with entity id 96 at ([world]3.72898516395842, 63.0, 219.02550055173768)
[23:09:14 INFO]: [AuthMe] [DEBUG] Limbo: got walk & fly speed 0.0 and 0.0 for player `lianera`
[23:09:14 INFO]: [AuthMe] [DEBUG] LimboServiceHelper: Setting speeds to 0 for player `lianera`
[23:09:20 INFO]: [AuthMe] lianera logged in!
[23:09:20 INFO]: [AuthMe] [DEBUG] Restored LimboPlayer stats for `lianera`

It seems this restoring process failed '[23:09:08 INFO]: [AuthMe] [DEBUG] Restored LimboPlayer stats for lianera'

im unable to download that jar from github

@lianera Thank you for the detailed logs — I really appreciate it! One thing I forgot to mention is that some stuff is logged explicitly for the 'RESTORE' setting only, which is why I think some might be missing.

Regardless, it seems I've been able to reproduce this, so I'll start poking around. I'll keep this thread updated. Thanks once again

Just a sign of life from my side—I'll have time to look at this thoroughly on Friday :wink:

Equally, quit the game without logging in successfully,players can't move, they can only jump.
Remove player data and return to normal.

you can:
# Can unregistered players walk around?
allowMovement: true
# How far can unregistered players walk?
# Set to 0 for unlimited radius
allowedMovementRadius: 1

I have the same damn issue, none of my player are able to move, not even after removing the plugin. I have to remove the plugin and then kill everyone, then they can walk again...
I'm rocking Spigot 1.12 with AuthMe-5.3.1-spigot, and my config sais "restoreWalkSpeed: 'MAX_RESTORE'". What defines max_restore?
I setting it to RESTORE_NO_ZERO looks like it did the trick.

@ljacqu any news? atm i'm busy 24/24h, i can't look at it.

@sgdc3 It's my top priority in AuthMe; I just forgot I had plans on Friday so it was bumped to today. I'm aware of this issue :wink:

Hi everyone, I propose a fix for this issue which is now available in build n. 1708 and upwards at http://ci.xephi.fr/job/AuthMeReloaded/ – I would kindly ask you to try it out and report back whether it still happens or not. I can't always reliably reproduce this bug. So while I'm not able to reproduce it anymore, I'm still a little skeptical...

Read on if you're interested, otherwise I'm looking forward to your feedback ;)


The change that I've added tells the server to save the player data after we modify the speed values. Since the player has already quit in the cases where the bug happens, I suspect that changing the speed to the player is not detected by Bukkit anymore: Bukkit has already processed the player quitting, has saved its data, and so it can forget about the player until he joins again (and then it's another Player _object_). By explicitly telling it to save, I suspect that the issue should not happen anymore.

However, at this point I kind of wonder whether it's worth doing all of these acrobatics just to remove the speed from the player. If allowMovement: false we catch all the movement events and cancel them already. On a laggy server it will seem like you can move for a second before going back to your initial point, which I suspect is the reason that "remove speed" has been introduced. Beyond that I'm not really sure what benefit it brings.

So really, one simple workaround is allowMovement: true with allowedMovementRadius: 1. I can't think of many cases where that would not be possible to do instead of allowMovement: false.

And finally, big thanks to @Smurfgar and @lianera for providing logs! This has helped tremendously and I'm also very grateful for everyone's patience in this thread. It's an annoying bug but it's not straightforward to analyze...


@ElectricPulze "What defines max_restore?" > MAX_RESTORE takes the maximum of the player's current speed (before he logged in) and the previous one (when he joined, before we modified him) and sets that to the player.

Bug has been repaired,thanks.

@ljacqu which version do i use for 1.11.2 spigot? legacy?

@shuiqing2046 Thanks for the feedback!
@chillerkraft Legacy for 1.11, anything below 1.12 needs the legacy JAR now :)

@ljacqu or anyone
is this bug the reason some of my players can not run?
if so can u please rebrief or copy paste or refer me to how to fix it?

@chillerkraft what do you mean?

i mean, some of my players can only walk they can not run! how do i fix it?

?

It sounds very strange, does the /speed run 2 command fix the issue?

i tried /speed 2, it just made me walk faster. still couldnt run
ill try /speed run 2

no it does the same thing.

Please copy the server and remove any plugin, just keep authme, we need to be sure this is an issue caused by authme.

confirmed. it occurs with just authme

Could you please open a new issue and fill the default issue report module?

Thank you

Was this page helpful?
0 / 5 - 0 ratings

Related issues

RoffDaniel picture RoffDaniel  Â·  7Comments

ITZVGcGPmO picture ITZVGcGPmO  Â·  3Comments

cPathz picture cPathz  Â·  10Comments

Ahryzth picture Ahryzth  Â·  8Comments

netherstar picture netherstar  Â·  5Comments