Package com.hbm_m.block.entity.doors
Class DoorDecl
java.lang.Object
com.hbm_m.block.entity.doors.DoorDecl
Декларативный класс параметров двери.
Модели загружаются автоматически из blockstate JSON файлов.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclstatic final DoorDeclprotected DoorDecl.DoorStructureDefinitionstatic final DoorDeclstatic final DoorDeclstatic final DoorDecl -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddefineStructure(DoorDecl.DoorStructureDefinition definition) Инициализация схемы.booleandoesRender(String partName, boolean child) voiddoOffsetTransform(IDoorAnimator animator) Получает все базовые AABB (клиентский доступ).intДоп. поворот Y (градусы) для baked model - должен совпадать с doOffsetTransform, чтобы BakedModel и BER были выровнены.net.minecraft.world.phys.AABBgetBlockBound(int x, int y, int z, boolean open, boolean forCollision) abstract net.minecraft.resources.ResourceLocationID блока для автоматической загрузки моделиintString[]getChildren(String partName) String[]getChildren(String partName, DoorModelSelection selection) Дочерние части с учётом выбора модели (legacy/modern).double[][]net.minecraft.sounds.SoundEventnet.minecraft.sounds.SoundEventnet.minecraft.sounds.SoundEventnet.minecraft.resources.ResourceLocationПуть к DAE-файлу с анимациями.getDaeObjectName(String partName) Маппинг имени части (OBJ/JSON) на имя объекта в DAE.Выбор модели по умолчанию при первой установке двери.int[]Размеры мультиблока двериprotected double[]int[][]Диапазоны открытия двери для мультиблокаnet.minecraft.world.phys.shapes.VoxelShapegetDynamicOutline(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) net.minecraft.network.chat.Componentprotected floatgetNormTime(float time) protected floatgetNormTime(float time, float min, float max) net.minecraft.sounds.SoundEventnet.minecraft.sounds.SoundEventnet.minecraft.sounds.SoundEventabstract intВремя открытия в тикахvoidvoidgetOrigin(String partName, float[] orig, DoorModelSelection selection) Пивот вращения с учётом выбора модели (legacy/modern).net.minecraft.world.phys.AABBgetPartAABB(String partName) Получает базовый AABB для части (клиентский доступ).abstract String[]doublevoidgetRotation(String partName, float openTicks, float[] rot) voidgetRotation(String partName, float openTicks, float[] rot, DoorModelSelection selection) Поворот с учётом выбора модели (legacy/modern).intnet.minecraft.sounds.SoundEventfloatvoidgetTranslation(String partName, float openTicks, boolean child, float[] trans) voidgetTranslation(String partName, float openTicks, boolean child, float[] trans, DoorModelSelection selection) Смещение с учётом выбора модели (legacy/modern).booleanПроверяет, загружены ли AABB для этой двери.booleanhasSkins()booleanИнвертировать время анимации DAE.booleanbooleanisLadder(boolean open) voidonTick(DoorBlockEntity door) booleanprotected static net.minecraft.world.phys.AABBrotateAABB(net.minecraft.world.phys.AABB bb, net.minecraft.core.Direction facing) protected voidset(float[] array, float x, float y, float z) voidsetPartAABBs(Map<String, net.minecraft.world.phys.AABB> aabbs) Сохраняет извлечённые AABB (вызывается из DoorBakedModel).
-
Field Details
-
structureDefinition
-
LARGE_VEHICLE_DOOR
-
ROUND_AIRLOCK_DOOR
-
TRANSITION_SEAL
-
FIRE_DOOR
-
SLIDE_DOOR
-
SLIDING_SEAL_DOOR
-
SECURE_ACCESS_DOOR
-
QE_SLIDING
-
QE_CONTAINMENT
-
WATER_DOOR
-
SILO_HATCH
-
SILO_HATCH_LARGE
-
VAULT_DOOR
-
-
Constructor Details
-
DoorDecl
public DoorDecl()
-
-
Method Details
-
getOpenTime
public abstract int getOpenTime()Время открытия в тиках -
getDoorOpenRanges
public int[][] getDoorOpenRanges()Диапазоны открытия двери для мультиблока -
defineStructure
Инициализация схемы. Должна вызываться в конструкторе конкретной двери. -
getStructureDefinition
-
onTick
-
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
-
getDefaultModelSelection
Выбор модели по умолчанию при первой установке двери. По умолчанию LEGACY. Для round_airlock_door - MODERN + default. -
getColladaAnimationSource
@Nullable public net.minecraft.resources.ResourceLocation getColladaAnimationSource()Путь к DAE-файлу с анимациями. Если null - используются procedural-анимации (getTranslation/getRotation). -
getDaeObjectName
Маппинг имени части (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
Сохраняет извлечённые AABB (вызывается из DoorBakedModel). -
getPartAABB
Получает базовый 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
-
getBakedModelRotationOffsetY
public int getBakedModelRotationOffsetY()Доп. поворот Y (градусы) для baked model - должен совпадать с doOffsetTransform, чтобы BakedModel и BER были выровнены. По умолчанию 0. -
getClippingPlanes
public double[][] getClippingPlanes() -
getTranslation
-
getTranslation
public void getTranslation(String partName, float openTicks, boolean child, float[] trans, @Nullable DoorModelSelection selection) Смещение с учётом выбора модели (legacy/modern). По умолчанию делегирует вgetTranslation(String, float, boolean, float[]). -
getOrigin
-
getOrigin
Пивот вращения с учётом выбора модели (legacy/modern). Позволяет задать разные пивоты для новой модели, где части могут иметь иное положение. По умолчанию делегирует вgetOrigin(String, float[]). -
getRotation
-
getRotation
public void getRotation(String partName, float openTicks, float[] rot, @Nullable DoorModelSelection selection) Поворот с учётом выбора модели (legacy/modern). По умолчанию делегирует вgetRotation(String, float, float[]). -
doesRender
-
getChildren
-
getChildren
Дочерние части с учётом выбора модели (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)
-