AbstractListBuilder.java

net.minecraft.util.AbstractListBuilder

信息

  • 全限定名:net.minecraft.util.AbstractListBuilder
  • 类型:abstract class
  • 包:net.minecraft.util
  • 源码路径:src/main/java/net/minecraft/util/AbstractListBuilder.java
  • 起始行号:L9
  • 实现:ListBuilder
  • 职责:

    TODO

字段/常量

  • ops

    • 类型: DynamicOps<T>
    • 修饰符: private final
    • 源码定位: L10
    • 说明:

      TODO

  • builder

    • 类型: DataResult<B>
    • 修饰符: protected
    • 源码定位: L11
    • 说明:

      TODO

内部类/嵌套类型

构造器

protected AbstractListBuilder(DynamicOps<T> ops) @ L13

  • 构造器名:AbstractListBuilder
  • 源码定位:L13
  • 修饰符:protected

参数:

  • ops: DynamicOps

说明:

TODO

方法

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

public DynamicOps<T> ops() @ L17

  • 方法名:ops
  • 源码定位:L17
  • 返回类型:DynamicOps
  • 修饰符:public

参数:

说明:

TODO

protected abstract B initBuilder() @ L22

  • 方法名:initBuilder
  • 源码定位:L22
  • 返回类型:B
  • 修饰符:protected abstract

参数:

说明:

TODO

protected abstract B append(B builder, T value) @ L24

  • 方法名:append
  • 源码定位:L24
  • 返回类型:B
  • 修饰符:protected abstract

参数:

  • builder: B
  • value: T

说明:

TODO

protected abstract DataResult<T> build(B builder, T prefix) @ L26

  • 方法名:build
  • 源码定位:L26
  • 返回类型:DataResult
  • 修饰符:protected abstract

参数:

  • builder: B
  • prefix: T

说明:

TODO

public ListBuilder<T> add(T value) @ L28

  • 方法名:add
  • 源码定位:L28
  • 返回类型:ListBuilder
  • 修饰符:public

参数:

  • value: T

说明:

TODO

public ListBuilder<T> add(DataResult<T> value) @ L34

  • 方法名:add
  • 源码定位:L34
  • 返回类型:ListBuilder
  • 修饰符:public

参数:

  • value: DataResult

说明:

TODO

public ListBuilder<T> withErrorsFrom(DataResult<?> result) @ L40

  • 方法名:withErrorsFrom
  • 源码定位:L40
  • 返回类型:ListBuilder
  • 修饰符:public

参数:

  • result: DataResult<?>

说明:

TODO

public ListBuilder<T> mapError(UnaryOperator<String> onError) @ L46

  • 方法名:mapError
  • 源码定位:L46
  • 返回类型:ListBuilder
  • 修饰符:public

参数:

  • onError: UnaryOperator

说明:

TODO

public DataResult<T> build(T prefix) @ L52

  • 方法名:build
  • 源码定位:L52
  • 返回类型:DataResult
  • 修饰符:public

参数:

  • prefix: T

说明:

TODO

代码

abstract class AbstractListBuilder<T, B> implements ListBuilder<T> {
    private final DynamicOps<T> ops;
    protected DataResult<B> builder = DataResult.success(this.initBuilder(), Lifecycle.stable());
 
    protected AbstractListBuilder(DynamicOps<T> ops) {
        this.ops = ops;
    }
 
    @Override
    public DynamicOps<T> ops() {
        return this.ops;
    }
 
    protected abstract B initBuilder();
 
    protected abstract B append(B builder, T value);
 
    protected abstract DataResult<T> build(B builder, T prefix);
 
    @Override
    public ListBuilder<T> add(T value) {
        this.builder = this.builder.map(b -> this.append((B)b, value));
        return this;
    }
 
    @Override
    public ListBuilder<T> add(DataResult<T> value) {
        this.builder = this.builder.apply2stable(this::append, value);
        return this;
    }
 
    @Override
    public ListBuilder<T> withErrorsFrom(DataResult<?> result) {
        this.builder = this.builder.flatMap(r -> result.map(v -> r));
        return this;
    }
 
    @Override
    public ListBuilder<T> mapError(UnaryOperator<String> onError) {
        this.builder = this.builder.mapError(onError);
        return this;
    }
 
    @Override
    public DataResult<T> build(T prefix) {
        DataResult<T> result = this.builder.flatMap(b -> this.build((B)b, prefix));
        this.builder = DataResult.success(this.initBuilder(), Lifecycle.stable());
        return result;
    }
}

引用的其他类