Condition.java

net.minecraft.client.renderer.block.dispatch.multipart.Condition

信息

  • 全限定名:net.minecraft.client.renderer.block.dispatch.multipart.Condition
  • 类型:public interface
  • 包:net.minecraft.client.renderer.block.dispatch.multipart
  • 源码路径:src/main/java/net/minecraft/client/renderer/block/dispatch/multipart/Condition.java
  • 起始行号:L18
  • 职责:

    TODO

字段/常量

  • CODEC
    • 类型: Codec<Condition>
    • 修饰符: default
    • 源码定位: L19
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

<O,S extends StateHolder<O,S>> Predicate<S> instantiate(StateDefinition<O,S> definition) @ L44

  • 方法名:instantiate
  • 源码定位:L44
  • 返回类型:<O,S extends StateHolder<O,S>> Predicate
  • 修饰符:package-private

参数:

  • definition: StateDefinition<O,S>

说明:

TODO

代码

@FunctionalInterface
@OnlyIn(Dist.CLIENT)
public interface Condition {
    Codec<Condition> CODEC = Codec.recursive(
        "condition",
        self -> {
            Codec<CombinedCondition> combinerCodec = Codec.simpleMap(
                    CombinedCondition.Operation.CODEC, self.listOf(), StringRepresentable.keys(CombinedCondition.Operation.values())
                )
                .codec()
                .comapFlatMap(map -> {
                    if (map.size() != 1) {
                        return DataResult.error(() -> "Invalid map size for combiner condition, expected exactly one element");
                    } else {
                        Entry<CombinedCondition.Operation, List<Condition>> entry = map.entrySet().iterator().next();
                        return DataResult.success(new CombinedCondition(entry.getKey(), entry.getValue()));
                    }
                }, condition -> Map.of(condition.operation(), condition.terms()));
            return Codec.either(combinerCodec, KeyValueCondition.CODEC).flatComapMap(either -> either.map(l -> l, r -> r), condition -> {
                return switch (condition) {
                    case CombinedCondition combiner -> DataResult.success(Either.left(combiner));
                    case KeyValueCondition keyValue -> DataResult.success(Either.right(keyValue));
                    default -> DataResult.error(() -> "Unrecognized condition");
                };
            });
        }
    );
 
    <O, S extends StateHolder<O, S>> Predicate<S> instantiate(StateDefinition<O, S> definition);
}

引用的其他类