MethodInfo.java

net.minecraft.server.jsonrpc.api.MethodInfo

信息

  • 全限定名:net.minecraft.server.jsonrpc.api.MethodInfo
  • 类型:public record
  • 包:net.minecraft.server.jsonrpc.api
  • 源码路径:src/main/java/net/minecraft/server/jsonrpc/api/MethodInfo.java
  • 起始行号:L11
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

  • net.minecraft.server.jsonrpc.api.MethodInfo.Named
    • 类型: record
    • 修饰符: public
    • 源码定位: L43
    • 说明:

      TODO

构造器

public MethodInfo(String description, ParamInfo<Params> paramInfo, ResultInfo<Result> resultInfo) @ L12

  • 构造器名:MethodInfo
  • 源码定位:L12
  • 修饰符:public

参数:

  • description: String
  • paramInfo: ParamInfo
  • resultInfo: ResultInfo

说明:

TODO

方法

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

private static <Params> Optional<ParamInfo<Params>> toOptional(List<ParamInfo<Params>> list) @ L16

  • 方法名:toOptional
  • 源码定位:L16
  • 返回类型: Optional<ParamInfo>
  • 修饰符:private static

参数:

  • list: List<ParamInfo>

说明:

TODO

private static <Params> List<ParamInfo<Params>> toList(Optional<ParamInfo<Params>> opt) @ L20

  • 方法名:toList
  • 源码定位:L20
  • 返回类型: List<ParamInfo>
  • 修饰符:private static

参数:

  • opt: Optional<ParamInfo>

说明:

TODO

private static <Params> Codec<Optional<ParamInfo<Params>>> paramsTypedCodec() @ L24

  • 方法名:paramsTypedCodec
  • 源码定位:L24
  • 返回类型: Codec<Optional<ParamInfo>>
  • 修饰符:private static

参数:

说明:

TODO

private static <Params,Result> MapCodec<MethodInfo<Params,Result>> typedCodec() @ L28

  • 方法名:typedCodec
  • 源码定位:L28
  • 返回类型:<Params,Result> MapCodec<MethodInfo<Params,Result>>
  • 修饰符:private static

参数:

说明:

TODO

public MethodInfo.Named<Params,Result> named(Identifier name) @ L39

  • 方法名:named
  • 源码定位:L39
  • 返回类型:MethodInfo.Named<Params,Result>
  • 修饰符:public

参数:

  • name: Identifier

说明:

TODO

代码

public record MethodInfo<Params, Result>(String description, Optional<ParamInfo<Params>> params, Optional<ResultInfo<Result>> result) {
    public MethodInfo(String description, @Nullable ParamInfo<Params> paramInfo, @Nullable ResultInfo<Result> resultInfo) {
        this(description, Optional.ofNullable(paramInfo), Optional.ofNullable(resultInfo));
    }
 
    private static <Params> Optional<ParamInfo<Params>> toOptional(List<ParamInfo<Params>> list) {
        return list.isEmpty() ? Optional.empty() : Optional.of(list.getFirst());
    }
 
    private static <Params> List<ParamInfo<Params>> toList(Optional<ParamInfo<Params>> opt) {
        return opt.isPresent() ? List.of(opt.get()) : List.of();
    }
 
    private static <Params> Codec<Optional<ParamInfo<Params>>> paramsTypedCodec() {
        return ParamInfo.<Params>typedCodec().codec().listOf().xmap(MethodInfo::toOptional, MethodInfo::toList);
    }
 
    private static <Params, Result> MapCodec<MethodInfo<Params, Result>> typedCodec() {
        return RecordCodecBuilder.mapCodec(
            i -> i.group(
                    Codec.STRING.fieldOf("description").forGetter(MethodInfo::description),
                    MethodInfo.<Params>paramsTypedCodec().fieldOf("params").forGetter(MethodInfo::params),
                    ResultInfo.<Result>typedCodec().optionalFieldOf("result").forGetter(MethodInfo::result)
                )
                .apply(i, MethodInfo::new)
        );
    }
 
    public MethodInfo.Named<Params, Result> named(Identifier name) {
        return new MethodInfo.Named<>(name, this);
    }
 
    public record Named<Params, Result>(Identifier name, MethodInfo<Params, Result> contents) {
        public static final Codec<MethodInfo.Named<?, ?>> CODEC = (Codec<MethodInfo.Named<?, ?>>)(Codec<?>)typedCodec();
 
        public static <Params, Result> Codec<MethodInfo.Named<Params, Result>> typedCodec() {
            return RecordCodecBuilder.create(
                i -> i.group(
                        Identifier.CODEC.fieldOf("name").forGetter(MethodInfo.Named::name),
                        MethodInfo.<Params, Result>typedCodec().forGetter(MethodInfo.Named::contents)
                    )
                    .apply(i, MethodInfo.Named::new)
            );
        }
    }
}

引用的其他类