1
0
mirror of https://github.com/lucko/LuckPerms.git synced 2025-09-01 02:21:43 +02:00

Clarify uuid type in user info command (#3233)

This commit is contained in:
Luck
2021-12-10 23:47:06 +00:00
parent 8cc126f711
commit 664cad21a9
3 changed files with 71 additions and 12 deletions

View File

@@ -56,6 +56,22 @@ public interface UniqueIdDetermineTypeEvent extends LuckPermsEvent, ResultEvent<
*/ */
String TYPE_UNAUTHENTICATED = "unauthenticated"; String TYPE_UNAUTHENTICATED = "unauthenticated";
/**
* The players UUID most likely belongs to a NPC (non-player character).
*
* <p>Usually indicated by the UUID being {@link UUID#version() version} 2.</p>
*
* @since 5.4
*/
String TYPE_NPC = "npc";
/**
* Unknown UUID type.
*
* @since 5.4
*/
String TYPE_UNKNOWN = "unknown";
/** /**
* Gets the {@link UUID unique id} being queried. * Gets the {@link UUID unique id} being queried.
* *

View File

@@ -28,7 +28,9 @@ package me.lucko.luckperms.common.util;
import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import net.luckperms.api.event.player.lookup.UniqueIdDetermineTypeEvent; import net.luckperms.api.event.player.lookup.UniqueIdDetermineTypeEvent;
import java.util.UUID; import java.util.UUID;
@@ -40,16 +42,31 @@ public final class UniqueIdType {
public static final UniqueIdType AUTHENTICATED = new UniqueIdType( public static final UniqueIdType AUTHENTICATED = new UniqueIdType(
UniqueIdDetermineTypeEvent.TYPE_AUTHENTICATED, UniqueIdDetermineTypeEvent.TYPE_AUTHENTICATED,
Component.translatable("luckperms.command.user.info.uuid-type.mojang", NamedTextColor.DARK_GREEN) NamedTextColor.DARK_GREEN,
"luckperms.command.user.info.uuid-type.mojang",
"luckperms.command.user.info.uuid-type.desc.mojang"
); );
public static final UniqueIdType UNAUTHENTICATED = new UniqueIdType( public static final UniqueIdType UNAUTHENTICATED = new UniqueIdType(
UniqueIdDetermineTypeEvent.TYPE_UNAUTHENTICATED, UniqueIdDetermineTypeEvent.TYPE_UNAUTHENTICATED,
Component.translatable("luckperms.command.user.info.uuid-type.not-mojang", NamedTextColor.DARK_GRAY) NamedTextColor.DARK_GRAY,
"luckperms.command.user.info.uuid-type.not-mojang",
"luckperms.command.user.info.uuid-type.desc.not-mojang"
); );
private static final String TYPE_NPC = "npc"; public static final UniqueIdType NPC = new UniqueIdType(
public static final UniqueIdType NPC = new UniqueIdType(TYPE_NPC); UniqueIdDetermineTypeEvent.TYPE_NPC,
NamedTextColor.GOLD,
"luckperms.command.user.info.uuid-type.npc",
"luckperms.command.user.info.uuid-type.desc.npc"
);
public static final UniqueIdType UNKNOWN = new UniqueIdType(
UniqueIdDetermineTypeEvent.TYPE_UNKNOWN,
NamedTextColor.RED,
"luckperms.command.user.info.uuid-type.unknown",
"luckperms.command.user.info.uuid-type.desc.unknown"
);
public static UniqueIdType determineType(UUID uniqueId, LuckPermsPlugin plugin) { public static UniqueIdType determineType(UUID uniqueId, LuckPermsPlugin plugin) {
// determine initial type based on the uuid version // determine initial type based on the uuid version
@@ -65,10 +82,10 @@ public final class UniqueIdType {
// if the uuid is version 2, assume it is an NPC // if the uuid is version 2, assume it is an NPC
// see: https://github.com/lucko/LuckPerms/issues/1470 // see: https://github.com/lucko/LuckPerms/issues/1470
// and https://github.com/lucko/LuckPerms/issues/1470#issuecomment-475403162 // and https://github.com/lucko/LuckPerms/issues/1470#issuecomment-475403162
type = TYPE_NPC; type = UniqueIdDetermineTypeEvent.TYPE_NPC;
break; break;
default: default:
type = "unknown"; type = UniqueIdDetermineTypeEvent.TYPE_UNKNOWN;
break; break;
} }
@@ -80,8 +97,10 @@ public final class UniqueIdType {
return AUTHENTICATED; return AUTHENTICATED;
case UniqueIdDetermineTypeEvent.TYPE_UNAUTHENTICATED: case UniqueIdDetermineTypeEvent.TYPE_UNAUTHENTICATED:
return UNAUTHENTICATED; return UNAUTHENTICATED;
case TYPE_NPC: case UniqueIdDetermineTypeEvent.TYPE_NPC:
return NPC; return NPC;
case UniqueIdDetermineTypeEvent.TYPE_UNKNOWN:
return UNKNOWN;
default: default:
return new UniqueIdType(type); return new UniqueIdType(type);
} }
@@ -90,13 +109,30 @@ public final class UniqueIdType {
private final String type; private final String type;
private final Component component; private final Component component;
private UniqueIdType(String type) { // constructor used for built-in types
this(type, Component.text(type, NamedTextColor.GOLD)); private UniqueIdType(String type, TextColor displayColor, String translationKey, String translationKeyHover) {
this.type = type;
this.component = Component.translatable()
.key(translationKey)
.color(displayColor)
.hoverEvent(HoverEvent.showText(Component.translatable(
translationKeyHover,
NamedTextColor.DARK_GRAY
)))
.build();
} }
private UniqueIdType(String type, Component component) { // constructor used for types provided via the API
private UniqueIdType(String type) {
this.type = type; this.type = type;
this.component = component; this.component = Component.text()
.content(type)
.color(NamedTextColor.GOLD)
.hoverEvent(HoverEvent.showText(Component.translatable(
"luckperms.command.user.info.uuid-type.desc.api",
NamedTextColor.GRAY
)))
.build();
} }
public String getType() { public String getType() {

View File

@@ -237,8 +237,15 @@ luckperms.command.generic.contextual-data.null-result=None
luckperms.command.user.info.title=User Info luckperms.command.user.info.title=User Info
luckperms.command.user.info.uuid-key=UUID luckperms.command.user.info.uuid-key=UUID
luckperms.command.user.info.uuid-type-key=type luckperms.command.user.info.uuid-type-key=type
luckperms.command.user.info.uuid-type.mojang=mojang luckperms.command.user.info.uuid-type.mojang=official
luckperms.command.user.info.uuid-type.not-mojang=offline luckperms.command.user.info.uuid-type.not-mojang=offline
luckperms.command.user.info.uuid-type.npc=npc
luckperms.command.user.info.uuid-type.unknown=unknown
luckperms.command.user.info.uuid-type.desc.mojang=This is a unique id for an official Minecraft: Java Edition account (online mode)
luckperms.command.user.info.uuid-type.desc.not-mojang=This is a pseudo unique id generated from the username (offline mode)
luckperms.command.user.info.uuid-type.desc.npc=This is a unique id for a NPC (non-player character)
luckperms.command.user.info.uuid-type.desc.unknown=This is an unknown unique id type
luckperms.command.user.info.uuid-type.desc.api=This is a unique id type specified via the LuckPerms API
luckperms.command.user.info.status-key=Status luckperms.command.user.info.status-key=Status
luckperms.command.user.info.status.online=Online luckperms.command.user.info.status.online=Online
luckperms.command.user.info.status.offline=Offline luckperms.command.user.info.status.offline=Offline