Permission.java

net.minecraft.server.permissions.Permission

信息

  • 全限定名:net.minecraft.server.permissions.Permission
  • 类型:public interface
  • 包:net.minecraft.server.permissions
  • 源码路径:src/main/java/net/minecraft/server/permissions/Permission.java
  • 起始行号:L10
  • 职责:

    TODO

字段/常量

  • FULL_CODEC

    • 类型: Codec<Permission>
    • 修饰符: package-private
    • 源码定位: L11
    • 说明:

      TODO

  • CODEC

    • 类型: Codec<Permission>
    • 修饰符: package-private
    • 源码定位: L12
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.server.permissions.Permission.Atom

    • 类型: record
    • 修饰符: public
    • 源码定位: L20
    • 说明:

      TODO

  • net.minecraft.server.permissions.Permission.HasCommandLevel

    • 类型: record
    • 修饰符: public
    • 源码定位: L39
    • 说明:

      TODO

构造器

方法

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

MapCodec<?extends Permission> codec() @ L18

  • 方法名:codec
  • 源码定位:L18
  • 返回类型:MapCodec<?extends Permission>
  • 修饰符:package-private

参数:

说明:

TODO

代码

public interface Permission {
    Codec<Permission> FULL_CODEC = BuiltInRegistries.PERMISSION_TYPE.byNameCodec().dispatch(Permission::codec, c -> c);
    Codec<Permission> CODEC = Codec.either(FULL_CODEC, Identifier.CODEC)
        .xmap(
            e -> e.map(permission -> (Permission)permission, Permission.Atom::create),
            permission -> permission instanceof Permission.Atom atom ? Either.right(atom.id()) : Either.left(permission)
        );
 
    MapCodec<? extends Permission> codec();
 
    public record Atom(Identifier id) implements Permission {
        public static final MapCodec<Permission.Atom> MAP_CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(Identifier.CODEC.fieldOf("id").forGetter(Permission.Atom::id)).apply(i, Permission.Atom::new)
        );
 
        @Override
        public MapCodec<Permission.Atom> codec() {
            return MAP_CODEC;
        }
 
        public static Permission.Atom create(String name) {
            return create(Identifier.withDefaultNamespace(name));
        }
 
        public static Permission.Atom create(Identifier id) {
            return new Permission.Atom(id);
        }
    }
 
    public record HasCommandLevel(PermissionLevel level) implements Permission {
        public static final MapCodec<Permission.HasCommandLevel> MAP_CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(PermissionLevel.CODEC.fieldOf("level").forGetter(Permission.HasCommandLevel::level)).apply(i, Permission.HasCommandLevel::new)
        );
 
        @Override
        public MapCodec<Permission.HasCommandLevel> codec() {
            return MAP_CODEC;
        }
    }
}

引用的其他类

  • Identifier
    • 引用位置: 方法调用
    • 关联成员: Identifier.withDefaultNamespace()