ShieldSpecialRenderer.java

net.minecraft.client.renderer.special.ShieldSpecialRenderer

信息

  • 全限定名:net.minecraft.client.renderer.special.ShieldSpecialRenderer
  • 类型:public class
  • 包:net.minecraft.client.renderer.special
  • 源码路径:src/main/java/net/minecraft/client/renderer/special/ShieldSpecialRenderer.java
  • 起始行号:L29
  • 实现:SpecialModelRenderer
  • 职责:

    TODO

字段/常量

  • DEFAULT_TRANSFORMATION

    • 类型: Transformation
    • 修饰符: public static final
    • 源码定位: L30
    • 说明:

      TODO

  • sprites

    • 类型: SpriteGetter
    • 修饰符: private final
    • 源码定位: L31
    • 说明:

      TODO

  • model

    • 类型: ShieldModel
    • 修饰符: private final
    • 源码定位: L32
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.client.renderer.special.ShieldSpecialRenderer.Unbaked
    • 类型: record
    • 修饰符: public
    • 源码定位: L89
    • 说明:

      TODO

构造器

public ShieldSpecialRenderer(SpriteGetter sprites, ShieldModel model) @ L34

  • 构造器名:ShieldSpecialRenderer
  • 源码定位:L34
  • 修饰符:public

参数:

  • sprites: SpriteGetter
  • model: ShieldModel

说明:

TODO

方法

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

public DataComponentMap extractArgument(ItemStack stack) @ L39

  • 方法名:extractArgument
  • 源码定位:L39
  • 返回类型:DataComponentMap
  • 修饰符:public

参数:

  • stack: ItemStack

说明:

TODO

public void submit(DataComponentMap components, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, int overlayCoords, boolean hasFoil, int outlineColor) @ L43

  • 方法名:submit
  • 源码定位:L43
  • 返回类型:void
  • 修饰符:public

参数:

  • components: DataComponentMap
  • poseStack: PoseStack
  • submitNodeCollector: SubmitNodeCollector
  • lightCoords: int
  • overlayCoords: int
  • hasFoil: boolean
  • outlineColor: int

说明:

TODO

public void getExtents(Consumer<Vector3fc> output) @ L82

  • 方法名:getExtents
  • 源码定位:L82
  • 返回类型:void
  • 修饰符:public

参数:

  • output: Consumer

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class ShieldSpecialRenderer implements SpecialModelRenderer<DataComponentMap> {
    public static final Transformation DEFAULT_TRANSFORMATION = new Transformation(null, null, new Vector3f(1.0F, -1.0F, -1.0F), null);
    private final SpriteGetter sprites;
    private final ShieldModel model;
 
    public ShieldSpecialRenderer(SpriteGetter sprites, ShieldModel model) {
        this.sprites = sprites;
        this.model = model;
    }
 
    public @Nullable DataComponentMap extractArgument(ItemStack stack) {
        return stack.immutableComponents();
    }
 
    public void submit(
        @Nullable DataComponentMap components,
        PoseStack poseStack,
        SubmitNodeCollector submitNodeCollector,
        int lightCoords,
        int overlayCoords,
        boolean hasFoil,
        int outlineColor
    ) {
        BannerPatternLayers patterns = components != null
            ? components.getOrDefault(DataComponents.BANNER_PATTERNS, BannerPatternLayers.EMPTY)
            : BannerPatternLayers.EMPTY;
        DyeColor baseColor = components != null ? components.get(DataComponents.BASE_COLOR) : null;
        boolean hasPatterns = !patterns.layers().isEmpty() || baseColor != null;
        SpriteId base = hasPatterns ? Sheets.SHIELD_BASE : Sheets.SHIELD_BASE_NO_PATTERN;
        submitNodeCollector.submitModel(this.model, Unit.INSTANCE, poseStack, lightCoords, overlayCoords, -1, base, this.sprites, outlineColor, null);
        if (hasPatterns) {
            BannerRenderer.submitPatterns(
                this.sprites,
                poseStack,
                submitNodeCollector,
                lightCoords,
                overlayCoords,
                this.model,
                Unit.INSTANCE,
                false,
                Objects.requireNonNullElse(baseColor, DyeColor.WHITE),
                patterns,
                null
            );
        }
 
        if (hasFoil) {
            submitNodeCollector.submitModel(
                this.model, Unit.INSTANCE, poseStack, RenderTypes.entityGlint(), lightCoords, overlayCoords, -1, this.sprites.get(base), 0, null
            );
        }
    }
 
    @Override
    public void getExtents(Consumer<Vector3fc> output) {
        PoseStack poseStack = new PoseStack();
        this.model.root().getExtentsForGui(poseStack, output);
    }
 
    @OnlyIn(Dist.CLIENT)
    public record Unbaked() implements SpecialModelRenderer.Unbaked<DataComponentMap> {
        public static final ShieldSpecialRenderer.Unbaked INSTANCE = new ShieldSpecialRenderer.Unbaked();
        public static final MapCodec<ShieldSpecialRenderer.Unbaked> MAP_CODEC = MapCodec.unit(INSTANCE);
 
        @Override
        public MapCodec<ShieldSpecialRenderer.Unbaked> type() {
            return MAP_CODEC;
        }
 
        public ShieldSpecialRenderer bake(SpecialModelRenderer.BakingContext context) {
            return new ShieldSpecialRenderer(context.sprites(), new ShieldModel(context.entityModelSet().bakeLayer(ModelLayers.SHIELD)));
        }
    }
}

引用的其他类