itzg / docker-minecraft-bedrock-server

Containerized Minecraft Bedrock Dedicated Server with selectable version
MIT License
1.19k stars 225 forks source link

[ERROR] Unknown authority mode true, expected one of [ 'client-auth', 'server-auth', 'server-auth-with-rewind' ] #142

Open NextSeconds opened 3 years ago

NextSeconds commented 3 years ago

Unknown authority mode true, expected one of [ 'client-auth', 'server-auth', 'server-auth-with-rewind' ] This error is reported when the server is started, and then the world cannot be connected

itzg commented 3 years ago

That sounds like something to report to Mojang.

finndo77 commented 3 years ago

Hi again, I've been digging into this one a little and seriously this issue is the only thing on the internet that google is aware of with the words "minecraft bedrock authority mode". I have not been running a bedrock server since Jan 15th or so, and just updated and fired a clean one up and received this message. I am only posting here to say that the server still works and I can connect to it from Android no issues. The message only seems to appear on server startup, there is no "authority mode" in the server properties, so I am not sure where to even manually set it. here is what I found with grep, I also checked 1 level of sub-dirs.

/mnt/minecraft-1/bedrock1$ grep "authority-mode" ./*
grep: ./behavior_packs: Is a directory
grep: ./definitions: Is a directory
grep: ./development_behavior_packs: Is a directory
grep: ./development_resource_packs: Is a directory
grep: ./development_skin_packs: Is a directory
grep: ./minecraftpe: Is a directory
grep: ./premium_cache: Is a directory
grep: ./resource_packs: Is a directory
grep: ./structures: Is a directory
grep: ./treatments: Is a directory
grep: ./worlds: Is a directory
grep: ./world_templates: Is a directory

/mnt/minecraft-1/bedrock1$ grep "authority mode" ./*
Binary file ./bedrock_server-1.16.220.02 matches
Binary file ./bedrock_server_symbols.debug matches
grep: ./behavior_packs: Is a directory
grep: ./definitions: Is a directory
grep: ./development_behavior_packs: Is a directory
grep: ./development_resource_packs: Is a directory
grep: ./development_skin_packs: Is a directory
grep: ./minecraftpe: Is a directory
grep: ./premium_cache: Is a directory
grep: ./resource_packs: Is a directory
grep: ./structures: Is a directory
grep: ./treatments: Is a directory
grep: ./worlds: Is a directory
grep: ./world_templates: Is a directory

Overall I am in conclusion with itzg, as "authority mode" is located in the binaries from Mojang. This seems to be something Mojang has added, but may not be implemented yet. Again, I do get this "error" message, but I did not have an issue connecting to my itzg/minecraft-bedrock-server docker image and playing. I recommend closing this issue, as I did not find "auth" on the patch notes pages for the last 4 updates.

https://feedback.minecraft.net/hc/en-us/articles/360057677072-Minecraft-1-16-210-Bedrock- https://feedback.minecraft.net/hc/en-us/articles/360059426071-Minecraft-1-16-220-Bedrock- https://feedback.minecraft.net/hc/en-us/articles/360053622851-Minecraft-1-16-201-Bedrock- https://feedback.minecraft.net/hc/en-us/articles/360052712132-Minecraft-1-16-200-Bedrock-

itzg commented 3 years ago

Thanks for the research @finndo77 ! I agree from that analysis, the string only exists in the bedrock binary so that's after the container startup has exec'ed off to that.

Kaiede commented 3 years ago

Out of curiosity for those hitting the issue, what is the server-authoritative-movement setting in your server.properties file?

kaptinkirk commented 3 years ago

Ran into the same issue with an older world that I hadn't played in a while and @Kaiede question pointed me in the right direction.

My old server.properties file looked like:

server-authoritative-movement=true
# Enables server authoritative movement. If true, the server will replay local user input on
# the server and send down corrections when the client's position doesn't match the server's.
# Corrections will only happen if correct-player-movement is set to true.

And in the latest BDS releases it looks like this:

server-authoritative-movement=server-auth
# Allowed values: "client-auth", "server-auth", "server-auth-with-rewind"
# Enables server authoritative movement. If "server-auth", the server will replay local user input on
# the server and send down corrections when the client's position doesn't match the server's.
# If "server-auth-with-rewind" is enabled and the server sends a correction, the clients will be instructed
# to rewind time back to the correction time, apply the correction, then replay all the player's inputs since then. This results in smoother and more frequent corrections.
# Corrections will only happen if correct-player-movement is set to true.

I update my value to server-auth and no more errors đź‘Ť

Kaiede commented 3 years ago

@kaptinkirk That’s what I was thinking might be the case. I guess they added the rewind option somewhat recently, and so it stopped being a true/false option.

chibiakurei commented 3 years ago

Just so you know, I've had a server for my family for nearly 2 years now, never had that message before until yesterday when I updated to the latest build. I actually have copies of my server from the last two builds, no error messages on either of them, only on latest. I'm starting to think theyre gonna push new things (hopefully).

itzg commented 3 years ago

I wonder if I should have the startup script fixup a value of server-authoritative-movement=true? However, then there's the dilemma of downgrading a server version where server-auth won't be known to it. Maybe downgrades just don't need to be fully handled with Bedrock/PE.

Kaiede commented 3 years ago

Just so you know, I've had a server for my family for nearly 2 years now, never had that message before until yesterday when I updated to the latest build. I actually have copies of my server from the last two builds, no error messages on either of them, only on latest. I'm starting to think theyre gonna push new things (hopefully).

Our household only recently jumped into Bedrock, and so our first dedicated server was on 1.16.201. It was already using the new properties, IIRC. What you say makes me think they had some backwards compatibility stuff so that true/false kept working, but they removed it in 220 thinking enough time had passed?

EDIT: Looking at 201 again, it used "client-auth" and "server-auth". The third option is new: "server-auth-with-rewind", which was added in 210. So that's the "new thing" these changes are introducing.

I wonder if I should have the startup script fixup a value of server-authoritative-movement=true? However, then there's the dilemma of downgrading a server version where server-auth won't be known to it. Maybe downgrades just don't need to be fully handled with Bedrock/PE.

I guess it depends? For consoles/iOS/android, it's painful to downgrade. Windows is easier, but still not sure how common it is. Realms tend to force folks to update the client in lock-step with the servers, so it seems like a bit of an edge case.

That said, if you can extract the version from the zip's filename during the update, you can always just do the fixup when needed when the new version is 1.16.220 or later (i.e. when the back-compat option went away), to minimize the impact.

itzg commented 3 years ago

FYI I double checked the container environment variable to property mapping does include the new values, except for server-auth-with-rewind, which I'll add:

https://github.com/itzg/docker-minecraft-bedrock-server/blob/2f6ea327d160ee3a831387fd4d7a8a10f73f9cd2/property-definitions.json#L84-L91