Class AbstractPartBasedRenderer<T extends net.minecraft.world.level.block.entity.BlockEntity,M extends net.minecraft.client.resources.model.BakedModel>

java.lang.Object
com.hbm_m.client.render.AbstractPartBasedRenderer<T,M>
All Implemented Interfaces:
net.minecraft.client.renderer.blockentity.BlockEntityRenderer<T>
Direct Known Subclasses:
DoorRenderer, MachineAdvancedAssemblerRenderer, MachineAssemblerRenderer, MachineChemicalPlantRenderer, MachineCoolingTowerRenderer, MachineHydraulicFrackiningTowerRenderer, MachinePressRenderer

public abstract class AbstractPartBasedRenderer<T extends net.minecraft.world.level.block.entity.BlockEntity,M extends net.minecraft.client.resources.model.BakedModel> extends Object implements net.minecraft.client.renderer.blockentity.BlockEntityRenderer<T>
  • Constructor Details

    • AbstractPartBasedRenderer

      public AbstractPartBasedRenderer()
  • Method Details

    • getModel

      protected net.minecraft.client.resources.model.BakedModel getModel(T blockEntity)
      Получает модель для рендеринга. По умолчанию - из blockstate. Можно переопределить для выбора модели по данным BlockEntity (например, двери с разными скинами).
    • getModelType

      protected abstract M getModelType(net.minecraft.client.resources.model.BakedModel rawModel)
    • getFacing

      protected abstract net.minecraft.core.Direction getFacing(T blockEntity)
    • renderParts

      protected abstract void renderParts(T blockEntity, M model, LegacyAnimator animator, float partialTick, int packedLight, int packedOverlay, com.mojang.blaze3d.vertex.PoseStack poseStack, net.minecraft.client.renderer.MultiBufferSource bufferSource)
    • setupBlockTransform

      protected void setupBlockTransform(LegacyAnimator animator, T blockEntity)
    • getCurrentModelViewMatrix

      public org.joml.Matrix4f getCurrentModelViewMatrix()
      Defensive copy - callers may not mutate the renderer's snapshot field.
    • shouldRenderOffScreen

      public boolean shouldRenderOffScreen(T blockEntity)
      Specified by:
      shouldRenderOffScreen in interface net.minecraft.client.renderer.blockentity.BlockEntityRenderer<T extends net.minecraft.world.level.block.entity.BlockEntity>
    • render

      public void render(T blockEntity, float partialTick, com.mojang.blaze3d.vertex.PoseStack poseStack, net.minecraft.client.renderer.MultiBufferSource bufferSource, int packedLight, int packedOverlay)
      Specified by:
      render in interface net.minecraft.client.renderer.blockentity.BlockEntityRenderer<T extends net.minecraft.world.level.block.entity.BlockEntity>
    • getMinecraft

      protected final net.minecraft.client.Minecraft getMinecraft()
    • isInViewFrustum

      protected boolean isInViewFrustum(T blockEntity)
    • unwrapFabricForwardingModels

      public static net.minecraft.client.resources.model.BakedModel unwrapFabricForwardingModels(net.minecraft.client.resources.model.BakedModel model)
      Разворачивает цепочку ForwardingBakedModel обёрток (Continuity CtmBakedModel, EmissiveBakedModel и т.п.) до исходной модели.

      Continuity через Connector оборачивает все blockstate-модели в CtmBakedModel (extends ForwardingBakedModel), из-за чего instanceof-проверки в getModelType(net.minecraft.client.resources.model.BakedModel) возвращают null и блок становится невидимым.