Properly create profiles with custom name/uuid (#7558)

This commit is contained in:
Bjarne Koll 2022-03-19 14:39:38 +01:00
commit 6b895464b0
4 changed files with 38 additions and 13 deletions

View file

@ -298,7 +298,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
} }
+ +
+ /** + /**
+ * Creates a PlayerProfile for the specified uuid, with name as null + * Creates a PlayerProfile for the specified uuid, with name as null.
+ *
+ * If a player with the passed uuid exists on the server at the time of creation, the returned player profile will
+ * be populated with the properties of said player.
+ *
+ * @param uuid UUID to create profile for + * @param uuid UUID to create profile for
+ * @return A PlayerProfile object + * @return A PlayerProfile object
+ */ + */
@ -308,7 +312,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ } + }
+ +
+ /** + /**
+ * Creates a PlayerProfile for the specified name, with UUID as null + * Creates a PlayerProfile for the specified name, with UUID as null.
+ *
+ * If a player with the passed name exists on the server at the time of creation, the returned player profile will
+ * be populated with the properties of said player.
+ *
+ * @param name Name to create profile for + * @param name Name to create profile for
+ * @return A PlayerProfile object + * @return A PlayerProfile object
+ */ + */
@ -321,6 +329,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ * Creates a PlayerProfile for the specified name/uuid + * Creates a PlayerProfile for the specified name/uuid
+ * + *
+ * Both UUID and Name can not be null at same time. One must be supplied. + * Both UUID and Name can not be null at same time. One must be supplied.
+ * If a player with the passed uuid or name exists on the server at the time of creation, the returned player
+ * profile will be populated with the properties of said player.
+ * + *
+ * @param uuid UUID to create profile for + * @param uuid UUID to create profile for
+ * @param name Name to create profile for + * @param name Name to create profile for
@ -343,7 +353,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
boolean suggestPlayerNamesWhenNullTabCompletions(); boolean suggestPlayerNamesWhenNullTabCompletions();
+ +
+ /** + /**
+ * Creates a PlayerProfile for the specified uuid, with name as null + * Creates a PlayerProfile for the specified uuid, with name as null.
+ *
+ * If a player with the passed uuid exists on the server at the time of creation, the returned player profile will
+ * be populated with the properties of said player.
+ *
+ * @param uuid UUID to create profile for + * @param uuid UUID to create profile for
+ * @return A PlayerProfile object + * @return A PlayerProfile object
+ */ + */
@ -351,7 +365,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ com.destroystokyo.paper.profile.PlayerProfile createProfile(@NotNull UUID uuid); + com.destroystokyo.paper.profile.PlayerProfile createProfile(@NotNull UUID uuid);
+ +
+ /** + /**
+ * Creates a PlayerProfile for the specified name, with UUID as null + * Creates a PlayerProfile for the specified name, with UUID as null.
+ *
+ * If a player with the passed name exists on the server at the time of creation, the returned player profile will
+ * be populated with the properties of said player.
+ *
+ * @param name Name to create profile for + * @param name Name to create profile for
+ * @return A PlayerProfile object + * @return A PlayerProfile object
+ */ + */
@ -362,6 +380,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ * Creates a PlayerProfile for the specified name/uuid + * Creates a PlayerProfile for the specified name/uuid
+ * + *
+ * Both UUID and Name can not be null at same time. One must be supplied. + * Both UUID and Name can not be null at same time. One must be supplied.
+ * If a player with the passed uuid or name exists on the server at the time of creation, the returned player
+ * profile will be populated with the properties of said player.
+ * + *
+ * @param uuid UUID to create profile for + * @param uuid UUID to create profile for
+ * @param name Name to create profile for + * @param name Name to create profile for

View file

@ -22,8 +22,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ } + }
+ +
/** /**
* Creates a PlayerProfile for the specified uuid, with name as null * Creates a PlayerProfile for the specified uuid, with name as null.
* @param uuid UUID to create profile for *
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/Server.java --- a/src/main/java/org/bukkit/Server.java
@ -40,8 +40,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ String getPermissionMessage(); + String getPermissionMessage();
+ +
/** /**
* Creates a PlayerProfile for the specified uuid, with name as null * Creates a PlayerProfile for the specified uuid, with name as null.
* @param uuid UUID to create profile for *
diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/command/Command.java --- a/src/main/java/org/bukkit/command/Command.java

View file

@ -660,10 +660,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ @Override + @Override
+ public com.destroystokyo.paper.profile.PlayerProfile createProfile(@Nullable UUID uuid, @Nullable String name) { + public com.destroystokyo.paper.profile.PlayerProfile createProfile(@Nullable UUID uuid, @Nullable String name) {
+ Player player = uuid != null ? Bukkit.getPlayer(uuid) : (name != null ? Bukkit.getPlayerExact(name) : null); + Player player = uuid != null ? Bukkit.getPlayer(uuid) : (name != null ? Bukkit.getPlayerExact(name) : null);
+ if (player != null) { + if (player == null) return new com.destroystokyo.paper.profile.CraftPlayerProfile(uuid, name);
+ return new com.destroystokyo.paper.profile.CraftPlayerProfile((CraftPlayer)player); +
+ if (Objects.equals(uuid, player.getUniqueId()) && Objects.equals(name, player.getName())) {
+ return new com.destroystokyo.paper.profile.CraftPlayerProfile((CraftPlayer) player);
+ } + }
+ return new com.destroystokyo.paper.profile.CraftPlayerProfile(uuid, name); +
+ final com.mojang.authlib.GameProfile profile = new com.mojang.authlib.GameProfile(uuid, name);
+ profile.getProperties().putAll(((CraftPlayer)player).getHandle().getGameProfile().getProperties());
+ return new com.destroystokyo.paper.profile.CraftPlayerProfile(profile);
+ } + }
// Paper end // Paper end
} }

View file

@ -9,8 +9,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -0,0 +0,0 @@ public final class CraftServer implements Server { @@ -0,0 +0,0 @@ public final class CraftServer implements Server {
} profile.getProperties().putAll(((CraftPlayer)player).getHandle().getGameProfile().getProperties());
return new com.destroystokyo.paper.profile.CraftPlayerProfile(uuid, name); return new com.destroystokyo.paper.profile.CraftPlayerProfile(profile);
} }
+ +
+ @Override + @Override