Interface IMultiblockController

All Known Implementing Classes:
CargoElevatorBlock, DoorBlock, HeatingOvenBlock, LaunchPadBlock, LaunchPadRustedBlock, MachineAdvancedAssemblerBlock, MachineArcFurnaceBlock, MachineArcWelderBlock, MachineAssemblerBlock, MachineBat9000Block, MachineBatterySocketBlock, MachineBreederBlock, MachineCatalyticReformerBlock, MachineCentrifugeBlock, MachineChemicalFactoryBlock, MachineChemicalPlantBlock, MachineChungusBlock, MachineCoreEmitterBlock, MachineCoreInjectorBlock, MachineCoreReceiverBlock, MachineCrackingTowerBlock, MachineCrucibleBlock, MachineCrystallizerBlock, MachineCyclotronBlock, MachineDerrickBlock, MachineDeuteriumTowerBlock, MachineFelBlock, MachineFlareStackBlock, MachineFluidTankBlock, MachineFrackingTowerBlock, MachineFractionTowerBlock, MachineGasCentrifugeBlock, MachineHydrotreaterBlock, MachineIndustrialBoilerBlock, MachineIndustrialTurbineBlock, MachineLargePylonBlock, MachineLargeRadarBlock, MachineLiquefactorBlock, MachineMiningDrillBlock, MachineMixerBlock, MachinePressBlock, MachinePumpjackBlock, MachineRadarBlock, MachineRadarScreenBlock, MachineRbmkConsoleBlock, MachineRefineryBlock, MachineSilexBlock, MachineSolarBoilerBlock, MachineSolarMirrorsBlock, MachineSolderingStationBlock, MachineSteamTurbineBlock, MachineSubstationBlock, MachineTowerLargeBlock, MachineTowerSmallBlock, MachineTurbineBlock, MachineTurbofanBlock, MachineVacuumDistillBlock, MachineWatzPowerplantBlock, MachineWoodBurnerBlock, MachineZirnoxBlock, MachineZirnoxDestroyedBlock, NukeFatManBlock, TransitionSealBlock

public interface IMultiblockController
  • Method Summary

    Modifier and Type
    Method
    Description
    default boolean
    canSurviveMultiblockPlacement(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos placedPos)
    Поскольку мы используем MultiblockBlockItem, блок всегда спавнится сразу в координатах ядра (уже в глубине).
    default net.minecraft.world.phys.shapes.VoxelShape
    getCustomMasterVoxelShape(net.minecraft.world.level.block.state.BlockState state)
    Позволяет переопределить стандартную VoxelShape для мультиблока.
    default net.minecraft.core.BlockPos
    Если вы изменили размер или компоновку структуры в новой версии мода, из-за чего контроллер сместился в координатах шаблона (local grid), верните здесь его СТАРЫЙ офсет.
    default int
     
    getPartRole(net.minecraft.core.BlockPos localOffset)
    Returns the specific role of a multiblock part based on its local offset from the controller.
     
    default net.minecraft.core.BlockPos
    placeMultiblockStructure(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos placedPos, net.minecraft.world.level.block.state.BlockState state)
    Строит фантомные части мультиблока вокруг контроллера.
    default boolean
    Returns whether this controller should be destroyed when one of its machine parts is removed.
  • Method Details

    • getStructureHelper

      MultiblockStructureHelper getStructureHelper()
      Returns:
      Экземпляр MultiblockStructureHelper, описывающий данную структуру.
    • getOffset

      default int getOffset()
    • getPartRole

      PartRole getPartRole(net.minecraft.core.BlockPos localOffset)
      Returns the specific role of a multiblock part based on its local offset from the controller. This is where you define which parts are energy connectors, item inputs/outputs, etc.
      Parameters:
      localOffset - The part's position relative to the controller (e.g., new BlockPos(1, 0, 0)).
      Returns:
      The PartRole for that part.
    • getCustomMasterVoxelShape

      @Nullable default net.minecraft.world.phys.shapes.VoxelShape getCustomMasterVoxelShape(net.minecraft.world.level.block.state.BlockState state)
      Позволяет переопределить стандартную VoxelShape для мультиблока. Используется для структур со сложной геометрией (провода, выступы и т.д.). Если этот метод возвращает Shapes.empty(), система автоматически сгенерирует форму на основе расположения блоков-частей.
      Parameters:
      state - Состояние блока-контроллера.
      Returns:
      Кастомная VoxelShape или Shapes.empty() для использования авто-генерации.
    • shouldDestroyOnPartRemoved

      default boolean shouldDestroyOnPartRemoved()
      Returns whether this controller should be destroyed when one of its machine parts is removed. Override to return false for "permanent" destroyed/ruin states that should never auto-collapse.
    • getLegacyControllerOffset

      @Nullable default net.minecraft.core.BlockPos getLegacyControllerOffset()
      Если вы изменили размер или компоновку структуры в новой версии мода, из-за чего контроллер сместился в координатах шаблона (local grid), верните здесь его СТАРЫЙ офсет. Это позволит системе починки сдвинуть ядро так, чтобы вся структура осталась стоять на своих старых координатах в мире. Если возвращает null — считается, что смещения ядра не было.
    • canSurviveMultiblockPlacement

      default boolean canSurviveMultiblockPlacement(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos placedPos)
      Поскольку мы используем MultiblockBlockItem, блок всегда спавнится сразу в координатах ядра (уже в глубине). Проверка на свободное место теперь делается ДО установки. Этот метод можно использовать для дополнительных проверок на выживаемость.
    • placeMultiblockStructure

      @Nullable default net.minecraft.core.BlockPos placeMultiblockStructure(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos placedPos, net.minecraft.world.level.block.state.BlockState state)
      Строит фантомные части мультиблока вокруг контроллера.

      Вызывается из метода setPlacedBy() или onPlace() в вашем классе блока. Контроллер в этот момент УЖЕ стоит на правильных координатах.