unmojang / drasl

Yggdrasil-compatible API server for Minecraft
GNU General Public License v3.0
118 stars 19 forks source link

Cannot whitelist players that never joined the server #63

Closed TechClusterHQ closed 7 months ago

TechClusterHQ commented 7 months ago

I am unable to whitelist players that have never joined the server and am getting the error "That player does not exist". I can see in the Drasl logs that it indeed returns a 404 for the player. If I disable the whitelist then I can join just fine. This is my Drasl config (url changed):

# Drasl default config file

# Example: drasl.example.com
Domain = "mca.xxxxx.com"

# Example: https://drasl.example.com
BaseURL = "https://mca.xxxxx.com"

#ListenAddress = "127.0.0.1:25585"

InstanceName = "mca.xxxxx.com"

ApplicationOwner = "TechCluster"

DefaultPreferredLanguage = "de"

# List of usernames who automatically become admins of the Drasl instance
DefaultAdmins = ["admin"]

[RegistrationNewPlayer]
Allow = true
RequireInvite = true

[[FallbackAPIServers]]
  Nickname = "Mojang"
  SessionURL = "https://sessionserver.mojang.com"
  AccountURL = "https://api.mojang.com"
  ServicesURL = "https://api.minecraftservices.com"
  SkinDomains = ["textures.minecraft.net"]
  CacheTTLSeconds = 60

I am using the fabric server version 0.15.10 with MC 1.20.4, launching using Aikar's flags. Start script:

#!/bin/bash

sdk use java 17.0.10-tem # SDKMAN, can be ignored for this issue
java -Xmx3072M -Xms3072M -Dminecraft.api.env=custom -Dminecraft.api.auth.host=https://mca.xxxxx.com/auth -Dminecraft.api.account.host=https://mca.xxxxx.com/account -Dminecraft.api.session.host=https://mca.xxxxx.com/session -Dminecraft.api.services.host=https://mca.xxxxx.com/services -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar fabric-server-mc.1.20.4-loader.0.15.10-launcher.1.0.1.jar nogui

Mods: NoChatReports (same problem occurs without it as well)

enforce-secure-profile is currently set to false, but changing it to true does not fix the issue.

Is this a known issue with whitelist or is my config not set up properly? Thanks!

evan-goode commented 7 months ago

Thanks for the report. I couldn't reproduce this myself, but I'd like to help debug. I didn't try your start script exactly, but it looks good at first glance. The Drasl config looks correct also.

  1. What version of Drasl are you running? Try the latest master branch (or v1.0.3, I just released it). The playername -> UUID lookup API route was recently moved to https://api.minecraftservices.com/minecraft/profile/lookup/bulk/byname and this route was not implemented in Drasl v1.0.2. But I think 1.20.4 still uses the old route, so I'm not sure this is the problem.
  2. Does the error still occur when not using FallbackAPIServers? i.e. can you create the user in Drasl and still get a 404 from Drasl?
  3. You can test the Drasl API route directly with:
curl --verbose -X POST https://drasl.XXX/profiles/minecraft -d '["myusername"]' -H 'Content-Type: application/json'

or to Mojang:

curl --verbose -X POST https://api.mojang.com/profiles/minecraft -d '["myusername"]' -H 'Content-Type: application/json'
evan-goode commented 7 months ago

But I think 1.20.4 still uses the old route, so I'm not sure this is the problem.

Ah, no, it looks like the route was changed in 1.20.3, so I bet that's it.

TechClusterHQ commented 7 months ago

v1.0.3 did indeed fix it! I totally forgot about this change, thanks for implementing it!