GeyserMC / Floodgate

Hybrid mode plugin to allow for connections from Geyser to join online mode servers.
https://geysermc.org
MIT License
575 stars 170 forks source link

Could not whitelist player: "Got an error from requesting the xuid..." #304

Open rhystedstone opened 2 years ago

rhystedstone commented 2 years ago

Myself and a few others attempted to /fwhitelist add a bedrock player to the server. Floodgate displays the following error on the console:

[20:10:22 INFO]: _R_T_ issued server command: /fwhitelist add ToastySoap90628
[20:10:23 ERROR]: [floodgate] Got an error from requesting the xuid of a Bedrock player: Unable to find user in our cache. Please try specifying their Floodgate UUID instead

I have confirmed that the player exists and the username is correct. Is there something I'm missing? Whitelisting is currently working for both Java and Bedrock players.

Server Version: This server is running Paper version git-Paper-299 (MC: 1.18.2) (Implementing API version 1.18.2-R0.1-SNAPSHOT) (Git: 76ed156) Geyser Version: This server is running Geyser version 2.0.3-SNAPSHOT (git-master-8c9d1fe) (Java: 1.18.2, Bedrock: 1.18.0/1.18.1/1.18.2 - 1.18.30/1.18.31) Floodgate Version: Build 65 - 20 March 2022

Camotoy commented 2 years ago

We are aware of this issue - for now, you can use https://floodgate-uuid.heathmitchell1.repl.co/ to get a player's UUID.

shovelbug commented 2 years ago

https://floodgate-uuid.heathmitchell1.repl.co/ does not work for me i get error An error occurred: No API Key provided or invalid API Key

thomcrielaard commented 2 years ago

For me that website is also down. Please work on a fix...

onebeastchris commented 2 years ago

Unfortunately, the floodgateuuid converter currently does not work. In the meantime, you can manually find out a uuid using this method: Step 1: visit https://www.cxkes.me/xbox/xuid and enter the bedrock username (without the period that is added by Geyser) Step 2: Search for the hexidecimal result and copy it down Step 3: You can try just that number instead of the username, but mine was formatted like this

XUID Search Result: 000901F4BF5B7415 Minecraft XUID: 00000000-0000-0000-0009-01f4bf5b7415

So step 4 would be to add a dash after the first four digits and then paste "00000000-0000-0000-" before the search result to get the correct format. Also, don't forget the dash after the first 4 digits (see example above)

thomcrielaard commented 2 years ago

Hey @onebeastchris ,

Thank you for your response! That does indeed work! Just one question; is there an API which I can use for this? I have not been able to find a proper XUID API without an API key and I would like to automate this using a PHP script :)

onebeastchris commented 2 years ago

that's the thing, there isn't one to my knowledge. That's the reason why the uuid converter went down... That's why Geyser has it's own global API for xuid lookups, but it only works with cached players that have played on any Geyser server before

thomcrielaard commented 2 years ago

This is just an idea, but maybe you can do something like this: Whenever someone adds their username to the fwhitelist you store the username temporarily. Then whenever Geyser performs a whitelist check, and the username of the connecting (Bedrock) user matches the name in your temporary whitelist file, you add that player to the whitelist

onebeastchris commented 2 years ago

feel free to make a pr/open a new issue for it, i'm not a dev here

rhystedstone commented 2 years ago

This is just an idea, but maybe you can do something like this: Whenever someone adds their username to the fwhitelist you store the username temporarily. Then whenever Geyser performs a whitelist check, and the username of the connecting (Bedrock) user matches the name in your temporary whitelist file, you add that player to the whitelist

Currently, the whitelist is managed by the server - Geyser simply inserts their username (with the correct prefix and _ instead of spaces) into the existing whitelist.json file, along with their UID.

The problem is, after authentication became UUID-based, so did whitelists. In most cases a fake UID would not allow a player with a whitelisted username to join.