Improve NameManager

This commit is contained in:
tanyaofei 2024-08-08 17:56:05 +08:00
parent 7c306a9c45
commit f21d96d319

View File

@ -80,7 +80,7 @@ public class NameManager {
* @param name 名称 * @param name 名称
* @return UUID * @return UUID
*/ */
private @NotNull UUID uuidFromName(@NotNull String name) { private @NotNull UUID getUUIDFromName(@NotNull String name) {
{ {
var uuid = profileRepository.selectUUIDByName(name); var uuid = profileRepository.selectUUIDByName(name);
if (uuid != null) { if (uuid != null) {
@ -102,15 +102,14 @@ public class NameManager {
// 新逻辑 // 新逻辑
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
var uuid = UUID.randomUUID(); var uuid = UUID.randomUUID();
if (profileRepository.existsByUUID(uuid) || Bukkit.getOfflinePlayer(uuid).hasPlayedBefore()) { if (legacyUsedIdRepository.contains(uuid) || profileRepository.existsByUUID(uuid) || Bukkit.getOfflinePlayer(uuid).hasPlayedBefore()) {
continue; continue;
} }
profileRepository.insert(name, uuid); profileRepository.insert(name, uuid);
return uuid; return uuid;
} }
throw new IllegalStateException("Failed to generate uuid for fake player after 10 attempts: " + name); throw new IllegalStateException("Failed to generate uuid for fake player '%s' after 10 attempts".formatted(name));
} }
/** /**
@ -162,7 +161,7 @@ public class NameManager {
return new SequenceName( return new SequenceName(
"custom", "custom",
0, 0,
this.uuidFromName(name), this.getUUIDFromName(name),
name name
); );
} }
@ -201,14 +200,14 @@ public class NameManager {
return new SequenceName( return new SequenceName(
source, source,
seq, seq,
this.uuidFromName(name), this.getUUIDFromName(name),
name name
); );
} }
var name = FALLBACK_NAME + RandomStringUtils.random(MAX_LENGTH - FALLBACK_NAME.length(), true, true); var name = FALLBACK_NAME + RandomStringUtils.random(MAX_LENGTH - FALLBACK_NAME.length(), true, true);
log.warning("Could not generate a regular name for the fake player after 10 tries, using a random name as fallback: " + name); log.warning("Could not generate a regular name for the fake player after 10 tries, using a random name as fallback: " + name);
return new SequenceName("random", 0, uuidFromName(name), name); return new SequenceName("random", 0, this.getUUIDFromName(name), name);
} }
/** /**