Class BaseMachineBlockEntity

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.block.entity.BaseMachineBlockEntity
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>
Direct Known Subclasses:
BatterySocketBlockEntity, HeatingOvenBlockEntity, LaunchPadBaseBlockEntity, MachineAdvancedAssemblerBlockEntity, MachineArcWelderBlockEntity, MachineAssemblerBlockEntity, MachineBatteryBlockEntity, MachineBreederBlockEntity, MachineCatalyticReformerBlockEntity, MachineCentrifugeBlockEntity, MachineChemicalFactoryBlockEntity, MachineChemicalPlantBlockEntity, MachineCoolingTowerBlockEntity, MachineCoreEmitterBlockEntity, MachineCoreInjectorBlockEntity, MachineCoreReceiverBlockEntity, MachineCrackingTowerBlockEntity, MachineCrystallizerBlockEntity, MachineCyclotronBlockEntity, MachineDeuteriumTowerBlockEntity, MachineFelBlockEntity, MachineFlareStackBlockEntity, MachineFrackingTowerBlockEntity, MachineFractionTowerBlockEntity, MachineGasCentrifugeBlockEntity, MachineHydrotreaterBlockEntity, MachineIndustrialBoilerBlockEntity, MachineIndustrialTurbineBlockEntity, MachineLargePylonBlockEntity, MachineLiquefactorBlockEntity, MachineMiningDrillBlockEntity, MachineMixerBlockEntity, MachinePressBlockEntity, MachinePumpjackBlockEntity, MachineRadarBlockEntity, MachineRefineryBlockEntity, MachineShredderBlockEntity, MachineSilexBlockEntity, MachineSolarBoilerBlockEntity, MachineSolarMirrorsBlockEntity, MachineSolderingStationBlockEntity, MachineSteamCondenserBlockEntity, MachineSteamTurbineBlockEntity, MachineSubstationBlockEntity, MachineTowerSmallBlockEntity, MachineTurbineBlockEntity, MachineTurbofanBlockEntity, MachineVacuumDistillBlockEntity, MachineWatzPowerplantBlockEntity, MachineWoodBurnerBlockEntity, MachineZirnoxBlockEntity, OilDrillBaseBlockEntity

public abstract class BaseMachineBlockEntity extends net.minecraft.world.level.block.entity.BlockEntity implements net.minecraft.world.MenuProvider, IEnergyProvider, IEnergyReceiver
Базовый класс для всех машин с энергией. Реализует хранение энергии, инвентарь и синхронизацию.
  • Nested Class Summary

    Nested classes/interfaces inherited from class net.minecraftforge.common.capabilities.CapabilityProvider

    net.minecraftforge.common.capabilities.CapabilityProvider.AsField<B extends net.minecraftforge.common.capabilities.ICapabilityProviderImpl<B>>

    Nested classes/interfaces inherited from interface com.hbm_m.interfaces.IEnergyReceiver

    IEnergyReceiver.Priority
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected long
     
    protected long
     
    protected final ModItemStackHandler
     
    protected net.minecraftforge.common.util.LazyOptional<net.minecraftforge.items.IItemHandler>
     
    protected final long
     
    protected final long
     
    protected boolean
     

    Fields inherited from class net.minecraft.world.level.block.entity.BlockEntity

    level, remove, worldPosition

    Fields inherited from interface net.minecraftforge.common.extensions.IForgeBlockEntity

    INFINITE_EXTENT_AABB
  • Constructor Summary

    Constructors
    Constructor
    Description
    BaseMachineBlockEntity(net.minecraft.world.level.block.entity.BlockEntityType<?> type, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int inventorySize, long capacity, long receiveRate)
    ОСНОВНОЙ КОНСТРУКТОР для машин-потребителей.
    BaseMachineBlockEntity(net.minecraft.world.level.block.entity.BlockEntityType<?> type, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int inventorySize, long capacity, long maxReceive, long maxExtract)
    ПОЛНЫЙ КОНСТРУКТОР.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    canConnectEnergy(net.minecraft.core.Direction side)
    Может ли этот блок подключаться к энергосети с указанной стороны
    boolean
    Может ли этот провайдер отдавать энергию
    boolean
    Может ли этот приемник принимать энергию
    protected void
    Извлекает энергию из предмета-батарейки в указанном слоте и заряжает машину.
    protected void
    chargeItemInSlot(int slot)
    Передаёт энергию из машины в предмет в указанном слоте (для генераторов).
    static net.minecraft.core.NonNullList<net.minecraft.world.item.ItemStack>
    createGhostItemsFromIngredients(List<net.minecraft.world.item.crafting.Ingredient> ingredients)
     
     
    void
    Loader-agnostic дроп содержимого инвентаря.
    protected void
     
    long
    extractEnergy(long maxExtract, boolean simulate)
    Извлечь энергию из провайдера
    <T> net.minecraftforge.common.util.LazyOptional<T>
    getCapability(net.minecraftforge.common.capabilities.Capability<T> cap, net.minecraft.core.Direction side)
     
    protected abstract net.minecraft.network.chat.Component
     
    long
     
    long
    Получить текущее количество энергии
    net.minecraft.core.NonNullList<net.minecraft.world.item.ItemStack>
     
    Общий доступ к инвентарю машины (loader-agnostic).
    long
    Получить максимальную емкость
    Приоритет получения энергии в сети
    long
    Максимальная скорость отдачи энергии за тик
    long
    Максимальная скорость приема энергии за тик
    net.minecraft.world.phys.AABB
    Рендер-баундинг бокс по умолчанию.
    net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket
     
    net.minecraft.nbt.CompoundTag
     
    void
    handleUpdateTag(net.minecraft.nbt.CompoundTag tag)
     
    void
     
    protected boolean
    isCriticalSlot(int slot)
     
    protected static boolean
    isEnergyProviderItem(net.minecraft.world.item.ItemStack stack)
    Проверяет, является ли предмет источником энергии (для валидации батарейного слота).
    protected static boolean
    isEnergyReceiverItem(net.minecraft.world.item.ItemStack stack)
    Проверяет, является ли предмет приёмником энергии (для валидации зарядного слота).
    protected abstract boolean
    isItemValidForSlot(int slot, net.minecraft.world.item.ItemStack stack)
     
    void
    load(net.minecraft.nbt.CompoundTag tag)
     
    void
    onDataPacket(net.minecraft.network.Connection net, net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket pkt)
     
    void
     
    long
    receiveEnergy(long maxReceive, boolean simulate)
    Принять энергию в приемник
    protected void
    saveAdditional(net.minecraft.nbt.CompoundTag tag)
     
    protected void
     
    protected final void
    setEnergyCapacity(long newCapacity)
    Меняет энергетический кап машины (нужно некоторым портам, например химмашине).
    void
    setEnergyStored(long energy)
    Установить количество энергии (используется сетью)
    void
    setLevel(net.minecraft.world.level.Level pLevel)
     
    void
     
    protected void
     
    protected void
    updateEnergyDelta(long currentEnergy)
     

    Methods inherited from class net.minecraft.world.level.block.entity.BlockEntity

    addEntityType, clearRemoved, fillCrashReportCategory, getBlockPos, getBlockState, getLevel, getPersistentData, getPosFromTag, getType, hasLevel, isRemoved, loadStatic, onChunkUnloaded, onlyOpCanSetNbt, saveToItem, saveWithFullMetadata, saveWithId, saveWithoutMetadata, setBlockState, setChanged, setChanged, triggerEvent

    Methods inherited from class net.minecraftforge.common.capabilities.CapabilityProvider

    areCapsCompatible, areCapsCompatible, deserializeCaps, gatherCapabilities, gatherCapabilities, gatherCapabilities, getCapabilities, reviveCaps, serializeCaps

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface net.minecraftforge.common.capabilities.ICapabilityProvider

    getCapability

    Methods inherited from interface net.minecraftforge.common.extensions.IForgeBlockEntity

    deserializeNBT, getModelData, hasCustomOutlineRendering, requestModelDataUpdate, serializeNBT

    Methods inherited from interface net.minecraft.world.inventory.MenuConstructor

    createMenu

    Methods inherited from interface net.minecraft.world.MenuProvider

    getDisplayName
  • Field Details

    • inventory

      protected final ModItemStackHandler inventory
    • itemHandler

      protected net.minecraftforge.common.util.LazyOptional<net.minecraftforge.items.IItemHandler> itemHandler
    • energy

      protected long energy
    • capacity

      protected long capacity
    • maxReceive

      protected final long maxReceive
    • maxExtract

      protected final long maxExtract
    • networkInitialized

      protected boolean networkInitialized
  • Constructor Details

    • BaseMachineBlockEntity

      public BaseMachineBlockEntity(net.minecraft.world.level.block.entity.BlockEntityType<?> type, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int inventorySize, long capacity, long receiveRate)
      ОСНОВНОЙ КОНСТРУКТОР для машин-потребителей. По умолчанию, maxExtract = 0, потому что нехуй высасывать энергию из того, что не должно её жрать. Машина - не батарейка. Запомни это, или я приду к тебе во сне.
    • BaseMachineBlockEntity

      public BaseMachineBlockEntity(net.minecraft.world.level.block.entity.BlockEntityType<?> type, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, int inventorySize, long capacity, long maxReceive, long maxExtract)
      ПОЛНЫЙ КОНСТРУКТОР. Используй это только для тех ебанутых случаев, когда машина должна ВДРУГ начать отдавать энергию. Для батарей, например. Хотя ты же сказал, что они ничего не наследуют. Ну, пусть будет. На всякий.
  • Method Details

    • getInventory

      public ModItemStackHandler getInventory()
      Общий доступ к инвентарю машины (loader-agnostic).
    • dropInventoryContents

      public void dropInventoryContents()
      Loader-agnostic дроп содержимого инвентаря. Используй это вместо Forge-only доступа через ITEM_HANDLER capability.
    • createInventoryHandler

      protected ModItemStackHandler createInventoryHandler(int size)
    • getDefaultName

      protected abstract net.minecraft.network.chat.Component getDefaultName()
    • isItemValidForSlot

      protected abstract boolean isItemValidForSlot(int slot, net.minecraft.world.item.ItemStack stack)
    • isCriticalSlot

      protected boolean isCriticalSlot(int slot)
    • getEnergyStored

      public long getEnergyStored()
      Description copied from interface: IEnergyProvider
      Получить текущее количество энергии
      Specified by:
      getEnergyStored in interface IEnergyProvider
      Specified by:
      getEnergyStored in interface IEnergyReceiver
    • getMaxEnergyStored

      public long getMaxEnergyStored()
      Description copied from interface: IEnergyProvider
      Получить максимальную емкость
      Specified by:
      getMaxEnergyStored in interface IEnergyProvider
      Specified by:
      getMaxEnergyStored in interface IEnergyReceiver
    • setEnergyCapacity

      protected final void setEnergyCapacity(long newCapacity)
      Меняет энергетический кап машины (нужно некоторым портам, например химмашине).
    • setEnergyStored

      public void setEnergyStored(long energy)
      Description copied from interface: IEnergyProvider
      Установить количество энергии (используется сетью)
      Specified by:
      setEnergyStored in interface IEnergyProvider
      Specified by:
      setEnergyStored in interface IEnergyReceiver
    • getProvideSpeed

      public long getProvideSpeed()
      Description copied from interface: IEnergyProvider
      Максимальная скорость отдачи энергии за тик
      Specified by:
      getProvideSpeed in interface IEnergyProvider
    • getReceiveSpeed

      public long getReceiveSpeed()
      Description copied from interface: IEnergyReceiver
      Максимальная скорость приема энергии за тик
      Specified by:
      getReceiveSpeed in interface IEnergyReceiver
    • getPriority

      public IEnergyReceiver.Priority getPriority()
      Description copied from interface: IEnergyReceiver
      Приоритет получения энергии в сети
      Specified by:
      getPriority in interface IEnergyReceiver
    • canConnectEnergy

      public boolean canConnectEnergy(net.minecraft.core.Direction side)
      Description copied from interface: IEnergyConnector
      Может ли этот блок подключаться к энергосети с указанной стороны
      Specified by:
      canConnectEnergy in interface IEnergyConnector
      Parameters:
      side - Сторона подключения (null = любая)
    • extractEnergy

      public long extractEnergy(long maxExtract, boolean simulate)
      Description copied from interface: IEnergyProvider
      Извлечь энергию из провайдера
      Specified by:
      extractEnergy in interface IEnergyProvider
      Parameters:
      maxExtract - Максимальное количество энергии для извлечения
      simulate - Если true, только симулирует операцию без изменения состояния
      Returns:
      Фактически извлеченное количество энергии
    • canExtract

      public boolean canExtract()
      Description copied from interface: IEnergyProvider
      Может ли этот провайдер отдавать энергию
      Specified by:
      canExtract in interface IEnergyProvider
    • receiveEnergy

      public long receiveEnergy(long maxReceive, boolean simulate)
      Description copied from interface: IEnergyReceiver
      Принять энергию в приемник
      Specified by:
      receiveEnergy in interface IEnergyReceiver
      Parameters:
      maxReceive - Максимальное количество энергии для приема
      simulate - Если true, только симулирует операцию без изменения состояния
      Returns:
      Фактически принятое количество энергии
    • canReceive

      public boolean canReceive()
      Description copied from interface: IEnergyReceiver
      Может ли этот приемник принимать энергию
      Specified by:
      canReceive in interface IEnergyReceiver
    • updateEnergyDelta

      protected void updateEnergyDelta(long currentEnergy)
    • getEnergyDelta

      public long getEnergyDelta()
    • getGhostItems

      public net.minecraft.core.NonNullList<net.minecraft.world.item.ItemStack> getGhostItems()
    • createGhostItemsFromIngredients

      public static net.minecraft.core.NonNullList<net.minecraft.world.item.ItemStack> createGhostItemsFromIngredients(List<net.minecraft.world.item.crafting.Ingredient> ingredients)
    • setupFluidCapability

      protected void setupFluidCapability()
    • saveAdditional

      protected void saveAdditional(net.minecraft.nbt.CompoundTag tag)
      Overrides:
      saveAdditional in class net.minecraft.world.level.block.entity.BlockEntity
    • load

      public void load(net.minecraft.nbt.CompoundTag tag)
      Overrides:
      load in class net.minecraft.world.level.block.entity.BlockEntity
    • getUpdateTag

      public net.minecraft.nbt.CompoundTag getUpdateTag()
      Overrides:
      getUpdateTag in class net.minecraft.world.level.block.entity.BlockEntity
    • handleUpdateTag

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

      @Nullable public net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket getUpdatePacket()
      Overrides:
      getUpdatePacket in class net.minecraft.world.level.block.entity.BlockEntity
    • 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
    • sendUpdateToClient

      protected void sendUpdateToClient()
    • getCapability

      @NotNull public <T> net.minecraftforge.common.util.LazyOptional<T> getCapability(@NotNull net.minecraftforge.common.capabilities.Capability<T> cap, @Nullable net.minecraft.core.Direction side)
      Specified by:
      getCapability in interface net.minecraftforge.common.capabilities.ICapabilityProvider
      Overrides:
      getCapability in class net.minecraftforge.common.capabilities.CapabilityProvider<net.minecraft.world.level.block.entity.BlockEntity>
    • onLoad

      public void onLoad()
      Specified by:
      onLoad in interface net.minecraftforge.common.extensions.IForgeBlockEntity
    • invalidateCaps

      public void invalidateCaps()
      Specified by:
      invalidateCaps in interface net.minecraftforge.common.capabilities.ICapabilityProviderImpl<net.minecraft.world.level.block.entity.BlockEntity>
      Overrides:
      invalidateCaps in class net.minecraftforge.common.capabilities.CapabilityProvider<net.minecraft.world.level.block.entity.BlockEntity>
    • chargeFromBatterySlot

      protected void chargeFromBatterySlot(int slot)
      Извлекает энергию из предмета-батарейки в указанном слоте и заряжает машину. Вся платформенная логика (Forge Capabilities / Fabric Transfer API) скрыта здесь. Конкретные машины просто вызывают chargeFromBatterySlot(BATTERY_SLOT).
    • chargeItemInSlot

      protected void chargeItemInSlot(int slot)
      Передаёт энергию из машины в предмет в указанном слоте (для генераторов). Вся платформенная логика скрыта здесь. Конкретные машины-генераторы вызывают chargeItemInSlot(CHARGE_SLOT).
    • isEnergyProviderItem

      protected static boolean isEnergyProviderItem(net.minecraft.world.item.ItemStack stack)
      Проверяет, является ли предмет источником энергии (для валидации батарейного слота). Используй в isItemValidForSlot(int, net.minecraft.world.item.ItemStack) вместо платформенных проверок.
    • isEnergyReceiverItem

      protected static boolean isEnergyReceiverItem(net.minecraft.world.item.ItemStack stack)
      Проверяет, является ли предмет приёмником энергии (для валидации зарядного слота). Используй в isItemValidForSlot(int, net.minecraft.world.item.ItemStack) вместо платформенных проверок.
    • getRenderBoundingBox

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

      protected void ensureNetworkInitialized()
    • setRemoved

      public void setRemoved()
      Overrides:
      setRemoved in class net.minecraft.world.level.block.entity.BlockEntity
    • setLevel

      public void setLevel(net.minecraft.world.level.Level pLevel)
      Overrides:
      setLevel in class net.minecraft.world.level.block.entity.BlockEntity