Class MachineRadarBlockEntity

java.lang.Object
net.minecraftforge.common.capabilities.CapabilityProvider<net.minecraft.world.level.block.entity.BlockEntity>
net.minecraft.world.level.block.entity.BlockEntity
com.hbm_m.blockentity.BaseMachineBlockEntity
com.hbm_m.blockentity.machines.MachineRadarBlockEntity
All Implemented Interfaces:
IEnergyConnector, IEnergyProvider, IEnergyReceiver, net.minecraft.world.inventory.MenuConstructor, net.minecraft.world.MenuProvider, net.minecraftforge.common.capabilities.ICapabilityProvider, net.minecraftforge.common.capabilities.ICapabilityProviderImpl<net.minecraft.world.level.block.entity.BlockEntity>, net.minecraftforge.common.capabilities.ICapabilitySerializable<net.minecraft.nbt.CompoundTag>, net.minecraftforge.common.extensions.IForgeBlockEntity, net.minecraftforge.common.util.INBTSerializable<net.minecraft.nbt.CompoundTag>

public class MachineRadarBlockEntity extends BaseMachineBlockEntity
  • Field Details

    • SLOT_BATTERY_PRIMARY

      public static final int SLOT_BATTERY_PRIMARY
      See Also:
    • SLOT_BATTERY_SECONDARY

      public static final int SLOT_BATTERY_SECONDARY
      See Also:
    • SLOT_SCREEN_LINKER

      public static final int SLOT_SCREEN_LINKER
      Слот radar linker'а для связи с Radar Screen (порт slots[8]).
      See Also:
    • RADAR_RANGE

      public static final int RADAR_RANGE
      See Also:
    • RADAR_LARGE_RANGE

      public static final int RADAR_LARGE_RANGE
      See Also:
    • RADAR_BUFFER

      public static final int RADAR_BUFFER
      See Also:
    • RADAR_ALTITUDE

      public static final int RADAR_ALTITUDE
      See Also:
    • ENERGY_CONSUMPTION

      public static final long ENERGY_CONSUMPTION
      Потребление за тик (порт TileEntityMachineRadarNT.consumption = 500).
      See Also:
    • MAP_DIM

      public static final int MAP_DIM
      Размер карты высот радара (200x200), как TileEntityMachineRadarNT.map.
      See Also:
    • MAP_LENGTH

      public static final int MAP_LENGTH
      See Also:
    • prevRotation

      public float prevRotation
      Клиентская анимация тарелки (порт TileEntityMachineRadarNT).
    • rotation

      public float rotation
    • scanMissiles

      public boolean scanMissiles
    • scanShells

      public boolean scanShells
    • scanPlayers

      public boolean scanPlayers
    • smartMode

      public boolean smartMode
    • redMode

      public boolean redMode
    • showMap

      public boolean showMap
      Показывать карту высот (порт TileEntityMachineRadarNT.showMap).
    • jammed

      public boolean jammed
    • map

      public byte[] map
      Карта высот 200x200 (порт TileEntityMachineRadarNT.map).
    • clearFlag

      public boolean clearFlag
      Серверный флаг очистки карты (порт TileEntityMachineRadarNT.clearFlag).
    • clearPulse

      public boolean clearPulse
      Транзитный импульс очистки карты для клиентского синка (сбрасывается после отправки).
    • nearbyMissiles

      public final List<int[]> nearbyMissiles
    • ACTION_TOGGLE_MISSILES

      public static final int ACTION_TOGGLE_MISSILES
      See Also:
    • ACTION_TOGGLE_SHELLS

      public static final int ACTION_TOGGLE_SHELLS
      See Also:
    • ACTION_TOGGLE_PLAYERS

      public static final int ACTION_TOGGLE_PLAYERS
      See Also:
    • ACTION_TOGGLE_SMART

      public static final int ACTION_TOGGLE_SMART
      See Also:
    • ACTION_TOGGLE_RED

      public static final int ACTION_TOGGLE_RED
      See Also:
    • ACTION_TOGGLE_MAP

      public static final int ACTION_TOGGLE_MAP
      Показать/скрыть карту высот (порт receiveControl["map"]).
      See Also:
    • ACTION_OPEN_SLOTS

      public static final int ACTION_OPEN_SLOTS
      Открыть GUI слотов (порт receiveControl["gui1"] ↔ GUIMachineRadarNTSlots).
      See Also:
    • ACTION_CLEAR_MAP

      public static final int ACTION_CLEAR_MAP
      Очистить карту высот (порт receiveControl["clear"]).
      See Also:
    • ACTION_OPEN_MAIN

      public static final int ACTION_OPEN_MAIN
      Вернуться из GUI слотов в главный экран радара.
      See Also:
    • ACTION_OFFSET

      public static final int ACTION_OFFSET
      See Also:
    • ACTION_LAUNCH_AT_ENTITY

      public static final int ACTION_LAUNCH_AT_ENTITY
      See Also:
    • ACTION_LAUNCH_AT_COORDS

      public static final int ACTION_LAUNCH_AT_COORDS
      See Also:
  • Constructor Details

    • MachineRadarBlockEntity

      public MachineRadarBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state)
  • Method Details

    • setEnergyStored

      public void setEnergyStored(long energy)
      Базовый setEnergyStored() помечает чанк грязным при КАЖДОМ изменении энергии. Радар тратит/получает энергию каждый тик — чанк становится перманентно dirty, и сервер обязан сериализовать 40 КБ карты в NBT при каждом автосейве/выгрузке. Точное значение заряда не обязано переживать рестарт с точностью до тика, поэтому dirty-флаг взводим редко (раз в ~10 секунд) или при пересечении нуля (нужен записанный флаг active на диске).
      Specified by:
      setEnergyStored in interface IEnergyProvider
      Specified by:
      setEnergyStored in interface IEnergyReceiver
      Overrides:
      setEnergyStored in class BaseMachineBlockEntity
    • isLargeRadar

      public boolean isLargeRadar()
    • getRange

      public int getRange()
    • getRenderBoundingBox

      public net.minecraft.world.phys.AABB getRenderBoundingBox()
      Description copied from class: BaseMachineBlockEntity
      Рендер-баундинг бокс по умолчанию. На Forge это @Override метода из BlockEntity, на Fabric — обычный public метод. Подклассы могут переопределить для мультиблоков с увеличенным размером.
      Specified by:
      getRenderBoundingBox in interface net.minecraftforge.common.extensions.IForgeBlockEntity
      Overrides:
      getRenderBoundingBox in class BaseMachineBlockEntity
    • tick

      public static void tick(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, MachineRadarBlockEntity blockEntity)
    • getTargetTypeName

      public String getTargetTypeName(int index)
    • getPowerScaled

      public long getPowerScaled(int scale)
    • handleButtonPress

      public void handleButtonPress(int buttonId)
    • handleLaunchCommand

      public boolean handleLaunchCommand(int linkSlot, int action, int targetId, int x, int z)
      Команда пуска через radar linker в одном из линк-слотов 0..7 (порт TileEntityMachineRadarNT.receiveControl: link=id → slots[id]).
      Parameters:
      linkSlot - индекс слота 0..7 (клавиши 1-8 → слоты 0-7)
      action - ACTION_LAUNCH_AT_ENTITY или ACTION_LAUNCH_AT_COORDS
      targetId - entityID цели (для LAUNCH_AT_ENTITY), иначе -1
      x - целевые X (для LAUNCH_AT_COORDS)
      z - целевые Z (для LAUNCH_AT_COORDS)
      Returns:
      true если команда принята установкой
    • getLinkerPos

      @Nullable public net.minecraft.core.BlockPos getLinkerPos(int linkSlot)
      Читает BlockPos из NBT radar linker'а в линк-слоте 0..7 (порт slots[id] == radar_linker + ItemCoordinateBase.getPosition).
    • getScreenLinkerPos

      @Nullable public net.minecraft.core.BlockPos getScreenLinkerPos()
      Читает BlockPos Radar Screen из NBT radar linker'а в слоте SLOT_SCREEN_LINKER (порт slots[8] == radar_linker → TileEntityMachineRadarScreen).
    • getRedPower

      public int getRedPower()
    • getProgressScaled

      public int getProgressScaled(int scale)
    • getProgress

      public int getProgress()
    • getMaxProgress

      public int getMaxProgress()
    • isActive

      public boolean isActive()
    • saveAdditional

      public void saveAdditional(net.minecraft.nbt.CompoundTag tag)
      Overrides:
      saveAdditional in class BaseMachineBlockEntity
    • load

      public void load(net.minecraft.nbt.CompoundTag tag)
      Overrides:
      load in class BaseMachineBlockEntity
    • getDefaultName

      protected net.minecraft.network.chat.Component getDefaultName()
      Specified by:
      getDefaultName in class BaseMachineBlockEntity
    • getDisplayName

      public net.minecraft.network.chat.Component getDisplayName()
    • getUpdateTag

      public net.minecraft.nbt.CompoundTag getUpdateTag()
      Лёгкий сетевой синк: без инвентаря и полной карты (40 КБ). Карта — несколько последовательных инкрементальных слайсов по 100 байт.
      Overrides:
      getUpdateTag in class BaseMachineBlockEntity
    • handleUpdateTag

      public void handleUpdateTag(net.minecraft.nbt.CompoundTag tag)
      Specified by:
      handleUpdateTag in interface net.minecraftforge.common.extensions.IForgeBlockEntity
      Overrides:
      handleUpdateTag in class BaseMachineBlockEntity
    • onDataPacket

      public void onDataPacket(net.minecraft.network.Connection net, net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket pkt)
      Specified by:
      onDataPacket in interface net.minecraftforge.common.extensions.IForgeBlockEntity
      Overrides:
      onDataPacket in class BaseMachineBlockEntity
    • canPlaceItemInSlot

      public boolean canPlaceItemInSlot(int slot, net.minecraft.world.item.ItemStack stack)
      Публичная обёртка над isItemValidForSlot(int, net.minecraft.world.item.ItemStack) для слотов меню.
    • isItemValidForSlot

      protected boolean isItemValidForSlot(int slot, net.minecraft.world.item.ItemStack stack)
      Specified by:
      isItemValidForSlot in class BaseMachineBlockEntity
    • createMenu

      public net.minecraft.world.inventory.AbstractContainerMenu createMenu(int id, net.minecraft.world.entity.player.Inventory inventory, net.minecraft.world.entity.player.Player player)