Package com.hbm_m.block.entity
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
FieldsModifier and TypeFieldDescriptionprotected longprotected longprotected final ModItemStackHandlerprotected net.minecraftforge.common.util.LazyOptional<net.minecraftforge.items.IItemHandler>protected final longprotected final longprotected booleanFields inherited from class net.minecraft.world.level.block.entity.BlockEntity
level, remove, worldPositionFields inherited from interface net.minecraftforge.common.extensions.IForgeBlockEntity
INFINITE_EXTENT_AABB -
Constructor Summary
ConstructorsConstructorDescriptionBaseMachineBlockEntity(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 TypeMethodDescriptionbooleancanConnectEnergy(net.minecraft.core.Direction side) Может ли этот блок подключаться к энергосети с указанной стороныbooleanМожет ли этот провайдер отдавать энергиюbooleanМожет ли этот приемник принимать энергиюprotected voidchargeFromBatterySlot(int slot) Извлекает энергию из предмета-батарейки в указанном слоте и заряжает машину.protected voidchargeItemInSlot(int slot) Передаёт энергию из машины в предмет в указанном слоте (для генераторов).static net.minecraft.core.NonNullList<net.minecraft.world.item.ItemStack>createGhostItemsFromIngredients(List<net.minecraft.world.item.crafting.Ingredient> ingredients) protected ModItemStackHandlercreateInventoryHandler(int size) voidLoader-agnostic дроп содержимого инвентаря.protected voidlongextractEnergy(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.ComponentlonglongПолучить текущее количество энергииnet.minecraft.core.NonNullList<net.minecraft.world.item.ItemStack>Общий доступ к инвентарю машины (loader-agnostic).longПолучить максимальную емкостьПриоритет получения энергии в сетиlongМаксимальная скорость отдачи энергии за тикlongМаксимальная скорость приема энергии за тикnet.minecraft.world.phys.AABBРендер-баундинг бокс по умолчанию.net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacketnet.minecraft.nbt.CompoundTagvoidhandleUpdateTag(net.minecraft.nbt.CompoundTag tag) voidprotected booleanisCriticalSlot(int slot) protected static booleanisEnergyProviderItem(net.minecraft.world.item.ItemStack stack) Проверяет, является ли предмет источником энергии (для валидации батарейного слота).protected static booleanisEnergyReceiverItem(net.minecraft.world.item.ItemStack stack) Проверяет, является ли предмет приёмником энергии (для валидации зарядного слота).protected abstract booleanisItemValidForSlot(int slot, net.minecraft.world.item.ItemStack stack) voidload(net.minecraft.nbt.CompoundTag tag) voidonDataPacket(net.minecraft.network.Connection net, net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket pkt) voidonLoad()longreceiveEnergy(long maxReceive, boolean simulate) Принять энергию в приемникprotected voidsaveAdditional(net.minecraft.nbt.CompoundTag tag) protected voidprotected final voidsetEnergyCapacity(long newCapacity) Меняет энергетический кап машины (нужно некоторым портам, например химмашине).voidsetEnergyStored(long energy) Установить количество энергии (используется сетью)voidsetLevel(net.minecraft.world.level.Level pLevel) voidprotected voidprotected voidupdateEnergyDelta(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, triggerEventMethods inherited from class net.minecraftforge.common.capabilities.CapabilityProvider
areCapsCompatible, areCapsCompatible, deserializeCaps, gatherCapabilities, gatherCapabilities, gatherCapabilities, getCapabilities, reviveCaps, serializeCapsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.minecraftforge.common.capabilities.ICapabilityProvider
getCapabilityMethods inherited from interface net.minecraftforge.common.extensions.IForgeBlockEntity
deserializeNBT, getModelData, hasCustomOutlineRendering, requestModelDataUpdate, serializeNBTMethods inherited from interface net.minecraft.world.inventory.MenuConstructor
createMenuMethods inherited from interface net.minecraft.world.MenuProvider
getDisplayName
-
Field Details
-
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
Общий доступ к инвентарю машины (loader-agnostic). -
dropInventoryContents
public void dropInventoryContents()Loader-agnostic дроп содержимого инвентаря. Используй это вместо Forge-only доступа через ITEM_HANDLER capability. -
createInventoryHandler
-
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:
getEnergyStoredin interfaceIEnergyProvider- Specified by:
getEnergyStoredin interfaceIEnergyReceiver
-
getMaxEnergyStored
public long getMaxEnergyStored()Description copied from interface:IEnergyProviderПолучить максимальную емкость- Specified by:
getMaxEnergyStoredin interfaceIEnergyProvider- Specified by:
getMaxEnergyStoredin interfaceIEnergyReceiver
-
setEnergyCapacity
protected final void setEnergyCapacity(long newCapacity) Меняет энергетический кап машины (нужно некоторым портам, например химмашине). -
setEnergyStored
public void setEnergyStored(long energy) Description copied from interface:IEnergyProviderУстановить количество энергии (используется сетью)- Specified by:
setEnergyStoredin interfaceIEnergyProvider- Specified by:
setEnergyStoredin interfaceIEnergyReceiver
-
getProvideSpeed
public long getProvideSpeed()Description copied from interface:IEnergyProviderМаксимальная скорость отдачи энергии за тик- Specified by:
getProvideSpeedin interfaceIEnergyProvider
-
getReceiveSpeed
public long getReceiveSpeed()Description copied from interface:IEnergyReceiverМаксимальная скорость приема энергии за тик- Specified by:
getReceiveSpeedin interfaceIEnergyReceiver
-
getPriority
Description copied from interface:IEnergyReceiverПриоритет получения энергии в сети- Specified by:
getPriorityin interfaceIEnergyReceiver
-
canConnectEnergy
public boolean canConnectEnergy(net.minecraft.core.Direction side) Description copied from interface:IEnergyConnectorМожет ли этот блок подключаться к энергосети с указанной стороны- Specified by:
canConnectEnergyin interfaceIEnergyConnector- Parameters:
side- Сторона подключения (null = любая)
-
extractEnergy
public long extractEnergy(long maxExtract, boolean simulate) Description copied from interface:IEnergyProviderИзвлечь энергию из провайдера- Specified by:
extractEnergyin interfaceIEnergyProvider- Parameters:
maxExtract- Максимальное количество энергии для извлеченияsimulate- Если true, только симулирует операцию без изменения состояния- Returns:
- Фактически извлеченное количество энергии
-
canExtract
public boolean canExtract()Description copied from interface:IEnergyProviderМожет ли этот провайдер отдавать энергию- Specified by:
canExtractin interfaceIEnergyProvider
-
receiveEnergy
public long receiveEnergy(long maxReceive, boolean simulate) Description copied from interface:IEnergyReceiverПринять энергию в приемник- Specified by:
receiveEnergyin interfaceIEnergyReceiver- Parameters:
maxReceive- Максимальное количество энергии для приемаsimulate- Если true, только симулирует операцию без изменения состояния- Returns:
- Фактически принятое количество энергии
-
canReceive
public boolean canReceive()Description copied from interface:IEnergyReceiverМожет ли этот приемник принимать энергию- Specified by:
canReceivein interfaceIEnergyReceiver
-
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:
saveAdditionalin classnet.minecraft.world.level.block.entity.BlockEntity
-
load
public void load(net.minecraft.nbt.CompoundTag tag) - Overrides:
loadin classnet.minecraft.world.level.block.entity.BlockEntity
-
getUpdateTag
public net.minecraft.nbt.CompoundTag getUpdateTag()- Overrides:
getUpdateTagin classnet.minecraft.world.level.block.entity.BlockEntity
-
handleUpdateTag
public void handleUpdateTag(net.minecraft.nbt.CompoundTag tag) - Specified by:
handleUpdateTagin interfacenet.minecraftforge.common.extensions.IForgeBlockEntity
-
getUpdatePacket
@Nullable public net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket getUpdatePacket()- Overrides:
getUpdatePacketin classnet.minecraft.world.level.block.entity.BlockEntity
-
onDataPacket
public void onDataPacket(net.minecraft.network.Connection net, net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket pkt) - Specified by:
onDataPacketin interfacenet.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:
getCapabilityin interfacenet.minecraftforge.common.capabilities.ICapabilityProvider- Overrides:
getCapabilityin classnet.minecraftforge.common.capabilities.CapabilityProvider<net.minecraft.world.level.block.entity.BlockEntity>
-
onLoad
public void onLoad()- Specified by:
onLoadin interfacenet.minecraftforge.common.extensions.IForgeBlockEntity
-
invalidateCaps
public void invalidateCaps()- Specified by:
invalidateCapsin interfacenet.minecraftforge.common.capabilities.ICapabilityProviderImpl<net.minecraft.world.level.block.entity.BlockEntity>- Overrides:
invalidateCapsin classnet.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:
getRenderBoundingBoxin interfacenet.minecraftforge.common.extensions.IForgeBlockEntity
-
ensureNetworkInitialized
protected void ensureNetworkInitialized() -
setRemoved
public void setRemoved()- Overrides:
setRemovedin classnet.minecraft.world.level.block.entity.BlockEntity
-
setLevel
public void setLevel(net.minecraft.world.level.Level pLevel) - Overrides:
setLevelin classnet.minecraft.world.level.block.entity.BlockEntity
-