fix: don't do additional profile lookups if we have all the required info already (fixes #10648)

This commit is contained in:
bridge 2024-05-03 16:01:23 +02:00 committed by Bjarne Koll
parent 716dfd8698
commit fb52cd5185
No known key found for this signature in database
GPG Key ID: 27F6CCCF55D2EE62
1 changed files with 7 additions and 3 deletions

View File

@ -16,10 +16,10 @@ public org.bukkit.craftbukkit.profile.CraftPlayerProfile setProperty(Ljava/lang/
diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
new file mode 100644
index 0000000000000000000000000000000000000000..68c99e29450e318d2b6eb83099e3e4012b6f0c01
index 0000000000000000000000000000000000000000..a750ec2cde2c6b3942806241b2d972cef57f3d44
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
@@ -0,0 +1,412 @@
@@ -0,0 +1,416 @@
+package com.destroystokyo.paper.profile;
+
+import com.mojang.authlib.yggdrasil.ProfileResult;
@ -248,9 +248,13 @@ index 0000000000000000000000000000000000000000..68c99e29450e318d2b6eb83099e3e401
+ return complete(textures, GlobalConfiguration.get().proxies.isProxyOnlineMode());
+ }
+ public boolean complete(boolean textures, boolean onlineMode) {
+ if (this.isComplete() && (!textures || hasTextures())) { // Don't do lookup if we already have everything
+ return true;
+ }
+
+ MinecraftServer server = MinecraftServer.getServer();
+ boolean isCompleteFromCache = this.completeFromCache(true, onlineMode);
+ if (onlineMode && (!isCompleteFromCache || textures && !hasTextures())) {
+ if (onlineMode && (!isCompleteFromCache || (textures && !hasTextures()))) {
+ ProfileResult result = server.getSessionService().fetchProfile(this.getId(), true);
+ if (result != null && result.profile() != null) {
+ copyProfileProperties(result.profile(), this.profile, true);