UUIDUtil.java

net.minecraft.core.UUIDUtil

信息

  • 全限定名:net.minecraft.core.UUIDUtil
  • 类型:public final class
  • 包:net.minecraft.core
  • 源码路径:src/main/java/net/minecraft/core/UUIDUtil.java
  • 起始行号:L22
  • 职责:

    TODO

字段/常量

  • CODEC

    • 类型: Codec<UUID>
    • 修饰符: public static final
    • 源码定位: L23
    • 说明:

      TODO

  • CODEC_SET

    • 类型: Codec<Set<UUID>>
    • 修饰符: public static final
    • 源码定位: L25
    • 说明:

      TODO

  • CODEC_LINKED_SET

    • 类型: Codec<Set<UUID>>
    • 修饰符: public static final
    • 源码定位: L26
    • 说明:

      TODO

  • STRING_CODEC

    • 类型: Codec<UUID>
    • 修饰符: public static final
    • 源码定位: L27
    • 说明:

      TODO

  • AUTHLIB_CODEC

    • 类型: Codec<UUID>
    • 修饰符: public static final
    • 源码定位: L34
    • 说明:

      TODO

  • LENIENT_CODEC

    • 类型: Codec<UUID>
    • 修饰符: public static final
    • 源码定位: L41
    • 说明:

      TODO

  • STREAM_CODEC

    • 类型: StreamCodec<ByteBuf,UUID>
    • 修饰符: public static final public public
    • 源码定位: L42
    • 说明:

      TODO

  • UUID_BYTES

    • 类型: int
    • 修饰符: public static final
    • 源码定位: L51
    • 说明:

      TODO

  • UUID_PREFIX_OFFLINE_PLAYER

    • 类型: String
    • 修饰符: private static final
    • 源码定位: L52
    • 说明:

      TODO

内部类/嵌套类型

构造器

private UUIDUtil() @ L54

  • 构造器名:UUIDUtil
  • 源码定位:L54
  • 修饰符:private

参数:

说明:

TODO

方法

下面的方法块按源码顺序生成。

public static UUID uuidFromIntArray(int[] intArray) @ L57

  • 方法名:uuidFromIntArray
  • 源码定位:L57
  • 返回类型:UUID
  • 修饰符:public static

参数:

  • intArray: int[]

说明:

TODO

public static int[] uuidToIntArray(UUID uuid) @ L61

  • 方法名:uuidToIntArray
  • 源码定位:L61
  • 返回类型:int[]
  • 修饰符:public static

参数:

  • uuid: UUID

说明:

TODO

private static int[] leastMostToIntArray(long mostSignificantBits, long leastSignificantBits) @ L67

  • 方法名:leastMostToIntArray
  • 源码定位:L67
  • 返回类型:int[]
  • 修饰符:private static

参数:

  • mostSignificantBits: long
  • leastSignificantBits: long

说明:

TODO

public static byte[] uuidToByteArray(UUID uuid) @ L71

  • 方法名:uuidToByteArray
  • 源码定位:L71
  • 返回类型:byte[]
  • 修饰符:public static

参数:

  • uuid: UUID

说明:

TODO

public static UUID readUUID(Dynamic<?> input) @ L77

  • 方法名:readUUID
  • 源码定位:L77
  • 返回类型:UUID
  • 修饰符:public static

参数:

  • input: Dynamic<?>

说明:

TODO

public static UUID createOfflinePlayerUUID(String playerName) @ L86

  • 方法名:createOfflinePlayerUUID
  • 源码定位:L86
  • 返回类型:UUID
  • 修饰符:public static

参数:

  • playerName: String

说明:

TODO

public static GameProfile createOfflineProfile(String playerName) @ L90

  • 方法名:createOfflineProfile
  • 源码定位:L90
  • 返回类型:GameProfile
  • 修饰符:public static

参数:

  • playerName: String

说明:

TODO

代码

public final class UUIDUtil {
    public static final Codec<UUID> CODEC = Codec.INT_STREAM
        .comapFlatMap(list -> Util.fixedSize(list, 4).map(UUIDUtil::uuidFromIntArray), uuid -> Arrays.stream(uuidToIntArray(uuid)));
    public static final Codec<Set<UUID>> CODEC_SET = Codec.list(CODEC).xmap(Sets::newHashSet, Lists::newArrayList);
    public static final Codec<Set<UUID>> CODEC_LINKED_SET = Codec.list(CODEC).xmap(Sets::newLinkedHashSet, Lists::newArrayList);
    public static final Codec<UUID> STRING_CODEC = Codec.STRING.comapFlatMap(s -> {
        try {
            return DataResult.success(UUID.fromString(s), Lifecycle.stable());
        } catch (IllegalArgumentException var2) {
            return DataResult.error(() -> "Invalid UUID " + s + ": " + var2.getMessage());
        }
    }, UUID::toString);
    public static final Codec<UUID> AUTHLIB_CODEC = Codec.withAlternative(Codec.STRING.comapFlatMap(s -> {
        try {
            return DataResult.success(UndashedUuid.fromStringLenient(s), Lifecycle.stable());
        } catch (IllegalArgumentException var2) {
            return DataResult.error(() -> "Invalid UUID " + s + ": " + var2.getMessage());
        }
    }, UndashedUuid::toString), CODEC);
    public static final Codec<UUID> LENIENT_CODEC = Codec.withAlternative(CODEC, STRING_CODEC);
    public static final StreamCodec<ByteBuf, UUID> STREAM_CODEC = new StreamCodec<ByteBuf, UUID>() {
        public UUID decode(ByteBuf input) {
            return FriendlyByteBuf.readUUID(input);
        }
 
        public void encode(ByteBuf output, UUID value) {
            FriendlyByteBuf.writeUUID(output, value);
        }
    };
    public static final int UUID_BYTES = 16;
    private static final String UUID_PREFIX_OFFLINE_PLAYER = "OfflinePlayer:";
 
    private UUIDUtil() {
    }
 
    public static UUID uuidFromIntArray(int[] intArray) {
        return new UUID((long)intArray[0] << 32 | intArray[1] & 4294967295L, (long)intArray[2] << 32 | intArray[3] & 4294967295L);
    }
 
    public static int[] uuidToIntArray(UUID uuid) {
        long mostSignificantBits = uuid.getMostSignificantBits();
        long leastSignificantBits = uuid.getLeastSignificantBits();
        return leastMostToIntArray(mostSignificantBits, leastSignificantBits);
    }
 
    private static int[] leastMostToIntArray(long mostSignificantBits, long leastSignificantBits) {
        return new int[]{(int)(mostSignificantBits >> 32), (int)mostSignificantBits, (int)(leastSignificantBits >> 32), (int)leastSignificantBits};
    }
 
    public static byte[] uuidToByteArray(UUID uuid) {
        byte[] bytes = new byte[16];
        ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN).putLong(uuid.getMostSignificantBits()).putLong(uuid.getLeastSignificantBits());
        return bytes;
    }
 
    public static UUID readUUID(Dynamic<?> input) {
        int[] intArray = input.asIntStream().toArray();
        if (intArray.length != 4) {
            throw new IllegalArgumentException("Could not read UUID. Expected int-array of length 4, got " + intArray.length + ".");
        } else {
            return uuidFromIntArray(intArray);
        }
    }
 
    public static UUID createOfflinePlayerUUID(String playerName) {
        return UUID.nameUUIDFromBytes(("OfflinePlayer:" + playerName).getBytes(StandardCharsets.UTF_8));
    }
 
    public static GameProfile createOfflineProfile(String playerName) {
        UUID id = createOfflinePlayerUUID(playerName);
        return new GameProfile(id, playerName);
    }
}

引用的其他类

  • FriendlyByteBuf

    • 引用位置: 方法调用
    • 关联成员: FriendlyByteBuf.readUUID(), FriendlyByteBuf.writeUUID()
  • StreamCodec

    • 引用位置: 字段
  • Util

    • 引用位置: 方法调用
    • 关联成员: Util.fixedSize()
  • ResolvableProfile

    • 引用位置: 参数