ParsedTemplate.java

net.minecraft.server.dialog.action.ParsedTemplate

信息

  • 全限定名:net.minecraft.server.dialog.action.ParsedTemplate
  • 类型:public class
  • 包:net.minecraft.server.dialog.action
  • 源码路径:src/main/java/net/minecraft/server/dialog/action/ParsedTemplate.java
  • 起始行号:L9
  • 职责:

    TODO

字段/常量

  • CODEC

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

      TODO

  • VARIABLE_CODEC

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

      TODO

  • raw

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

      TODO

  • parsed

    • 类型: StringTemplate
    • 修饰符: private final
    • 源码定位: L14
    • 说明:

      TODO

内部类/嵌套类型

构造器

private ParsedTemplate(String raw, StringTemplate parsed) @ L16

  • 构造器名:ParsedTemplate
  • 源码定位:L16
  • 修饰符:private

参数:

  • raw: String
  • parsed: StringTemplate

说明:

TODO

方法

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

private static DataResult<ParsedTemplate> parse(String value) @ L21

  • 方法名:parse
  • 源码定位:L21
  • 返回类型:DataResult
  • 修饰符:private static

参数:

  • value: String

说明:

TODO

public String instantiate(Map<String,String> arguments) @ L32

  • 方法名:instantiate
  • 源码定位:L32
  • 返回类型:String
  • 修饰符:public

参数:

  • arguments: Map<String,String>

说明:

TODO

代码

public class ParsedTemplate {
    public static final Codec<ParsedTemplate> CODEC = Codec.STRING.comapFlatMap(ParsedTemplate::parse, t -> t.raw);
    public static final Codec<String> VARIABLE_CODEC = Codec.STRING
        .validate(s -> StringTemplate.isValidVariableName(s) ? DataResult.success(s) : DataResult.error(() -> s + " is not a valid input name"));
    private final String raw;
    private final StringTemplate parsed;
 
    private ParsedTemplate(String raw, StringTemplate parsed) {
        this.raw = raw;
        this.parsed = parsed;
    }
 
    private static DataResult<ParsedTemplate> parse(String value) {
        StringTemplate template;
        try {
            template = StringTemplate.fromString(value);
        } catch (Exception var3) {
            return DataResult.error(() -> "Failed to parse template " + value + ": " + var3.getMessage());
        }
 
        return DataResult.success(new ParsedTemplate(value, template));
    }
 
    public String instantiate(Map<String, String> arguments) {
        List<String> values = this.parsed.variables().stream().map(k -> arguments.getOrDefault(k, "")).toList();
        return this.parsed.substitute(values);
    }
}

引用的其他类

  • StringTemplate
    • 引用位置: 参数/字段/方法调用
    • 关联成员: StringTemplate.fromString(), StringTemplate.isValidVariableName()