Class DoorDecl

java.lang.Object
com.hbm_m.block.entity.doors.DoorDecl

public abstract class DoorDecl extends Object
Декларативный класс параметров двери. Модели загружаются автоматически из blockstate JSON файлов.
  • Field Details

    • structureDefinition

      protected DoorDecl.DoorStructureDefinition structureDefinition
    • LARGE_VEHICLE_DOOR

      public static final DoorDecl LARGE_VEHICLE_DOOR
    • ROUND_AIRLOCK_DOOR

      public static final DoorDecl ROUND_AIRLOCK_DOOR
    • TRANSITION_SEAL

      public static final DoorDecl TRANSITION_SEAL
    • FIRE_DOOR

      public static final DoorDecl FIRE_DOOR
    • SLIDE_DOOR

      public static final DoorDecl SLIDE_DOOR
    • SLIDING_SEAL_DOOR

      public static final DoorDecl SLIDING_SEAL_DOOR
    • SECURE_ACCESS_DOOR

      public static final DoorDecl SECURE_ACCESS_DOOR
    • QE_SLIDING

      public static final DoorDecl QE_SLIDING
    • QE_CONTAINMENT

      public static final DoorDecl QE_CONTAINMENT
    • WATER_DOOR

      public static final DoorDecl WATER_DOOR
    • SILO_HATCH

      public static final DoorDecl SILO_HATCH
    • SILO_HATCH_LARGE

      public static final DoorDecl SILO_HATCH_LARGE
    • VAULT_DOOR

      public static final DoorDecl VAULT_DOOR
  • Constructor Details

    • DoorDecl

      public DoorDecl()
  • Method Details

    • getOpenTime

      public abstract int getOpenTime()
      Время открытия в тиках
    • getDoorOpenRanges

      public int[][] getDoorOpenRanges()
      Диапазоны открытия двери для мультиблока
    • defineStructure

      protected void defineStructure(DoorDecl.DoorStructureDefinition definition)
      Инициализация схемы. Должна вызываться в конструкторе конкретной двери.
    • getStructureDefinition

      public DoorDecl.DoorStructureDefinition getStructureDefinition()
    • onTick

      public void onTick(DoorBlockEntity door)
    • getDynamicOutline

      @Nullable public net.minecraft.world.phys.shapes.VoxelShape getDynamicOutline(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.phys.shapes.CollisionContext context, float progress)
    • getDimensions

      public int[] getDimensions()
      Размеры мультиблока двери
    • isDynamicShape

      public boolean isDynamicShape()
    • getBlockId

      public abstract net.minecraft.resources.ResourceLocation getBlockId()
      ID блока для автоматической загрузки модели
    • getPartNames

      public abstract String[] getPartNames()
    • getDefaultModelSelection

      public DoorModelSelection getDefaultModelSelection()
      Выбор модели по умолчанию при первой установке двери. По умолчанию LEGACY. Для round_airlock_door - MODERN + default.
    • getColladaAnimationSource

      @Nullable public net.minecraft.resources.ResourceLocation getColladaAnimationSource()
      Путь к DAE-файлу с анимациями. Если null - используются procedural-анимации (getTranslation/getRotation).
    • getDaeObjectName

      public String getDaeObjectName(String partName)
      Маппинг имени части (OBJ/JSON) на имя объекта в DAE. По умолчанию возвращает partName. Для transition_seal: Cylinder.001 → Cylinder_001.
    • isColladaAnimationInverted

      public boolean isColladaAnimationInverted()
      Инвертировать время анимации DAE. Если true: closed (progress=0) → последний keyframe, open (progress=1) → первый keyframe. Нужно когда Blender экспортировал анимацию с rest pose = открытое состояние.
    • setPartAABBs

      public void setPartAABBs(Map<String,net.minecraft.world.phys.AABB> aabbs)
      Сохраняет извлечённые AABB (вызывается из DoorBakedModel).
    • getPartAABB

      @Nullable public net.minecraft.world.phys.AABB getPartAABB(String partName)
      Получает базовый AABB для части (клиентский доступ).
    • getAllPartAABBs

      public Map<String,net.minecraft.world.phys.AABB> getAllPartAABBs()
      Получает все базовые AABB (клиентский доступ).
    • hasPartAABBs

      public boolean hasPartAABBs()
      Проверяет, загружены ли AABB для этой двери.
    • getBlockOffset

      public int getBlockOffset()
    • remoteControllable

      public boolean remoteControllable()
    • hasSkins

      public boolean hasSkins()
    • getSkinCount

      public int getSkinCount()
    • isLadder

      public boolean isLadder(boolean open)
    • getBlockBound

      public net.minecraft.world.phys.AABB getBlockBound(int x, int y, int z, boolean open, boolean forCollision)
    • getOpenSoundStart

      @Nullable public net.minecraft.sounds.SoundEvent getOpenSoundStart()
    • getOpenSoundEnd

      @Nullable public net.minecraft.sounds.SoundEvent getOpenSoundEnd()
    • getOpenSoundLoop

      @Nullable public net.minecraft.sounds.SoundEvent getOpenSoundLoop()
    • getCloseSoundStart

      @Nullable public net.minecraft.sounds.SoundEvent getCloseSoundStart()
    • getCloseSoundEnd

      @Nullable public net.minecraft.sounds.SoundEvent getCloseSoundEnd()
    • getCloseSoundLoop

      @Nullable public net.minecraft.sounds.SoundEvent getCloseSoundLoop()
    • getSoundLoop2

      @Nullable public net.minecraft.sounds.SoundEvent getSoundLoop2()
    • getSoundVolume

      public float getSoundVolume()
    • getRenderRadius

      public double getRenderRadius()
    • getLockedMessage

      public net.minecraft.network.chat.Component getLockedMessage()
    • doOffsetTransform

      public void doOffsetTransform(IDoorAnimator animator)
    • getBakedModelRotationOffsetY

      public int getBakedModelRotationOffsetY()
      Доп. поворот Y (градусы) для baked model - должен совпадать с doOffsetTransform, чтобы BakedModel и BER были выровнены. По умолчанию 0.
    • getClippingPlanes

      public double[][] getClippingPlanes()
    • getTranslation

      public void getTranslation(String partName, float openTicks, boolean child, float[] trans)
    • getTranslation

      public void getTranslation(String partName, float openTicks, boolean child, float[] trans, @Nullable DoorModelSelection selection)
      Смещение с учётом выбора модели (legacy/modern). По умолчанию делегирует в getTranslation(String, float, boolean, float[]).
    • getOrigin

      public void getOrigin(String partName, float[] orig)
    • getOrigin

      public void getOrigin(String partName, float[] orig, @Nullable DoorModelSelection selection)
      Пивот вращения с учётом выбора модели (legacy/modern). Позволяет задать разные пивоты для новой модели, где части могут иметь иное положение. По умолчанию делегирует в getOrigin(String, float[]).
    • getRotation

      public void getRotation(String partName, float openTicks, float[] rot)
    • getRotation

      public void getRotation(String partName, float openTicks, float[] rot, @Nullable DoorModelSelection selection)
      Поворот с учётом выбора модели (legacy/modern). По умолчанию делегирует в getRotation(String, float, float[]).
    • doesRender

      public boolean doesRender(String partName, boolean child)
    • getChildren

      public String[] getChildren(String partName)
    • getChildren

      public String[] getChildren(String partName, @Nullable DoorModelSelection selection)
      Дочерние части с учётом выбора модели (legacy/modern). По умолчанию делегирует в getChildren(String).
    • getNormTime

      protected float getNormTime(float time)
    • getNormTime

      protected float getNormTime(float time, float min, float max)
    • set

      protected void set(float[] array, float x, float y, float z)
    • getDoorCenter

      protected double[] getDoorCenter()
    • rotateAABB

      protected static net.minecraft.world.phys.AABB rotateAABB(net.minecraft.world.phys.AABB bb, net.minecraft.core.Direction facing)