Package com.hbm_m.blockentity.machines
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>
-
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 TypeFieldDescriptionstatic final intОчистить карту высот (порт receiveControl["clear"]).static final intstatic final intstatic final intstatic final intВернуться из GUI слотов в главный экран радара.static final intОткрыть GUI слотов (порт receiveControl["gui1"] ↔ GUIMachineRadarNTSlots).static final intПоказать/скрыть карту высот (порт receiveControl["map"]).static final intstatic final intstatic final intstatic final intstatic final intbooleanСерверный флаг очистки карты (порт TileEntityMachineRadarNT.clearFlag).booleanТранзитный импульс очистки карты для клиентского синка (сбрасывается после отправки).static final longПотребление за тик (портTileEntityMachineRadarNT.consumption= 500).booleanbyte[]Карта высот 200x200 (порт TileEntityMachineRadarNT.map).static final intРазмер карты высот радара (200x200), как TileEntityMachineRadarNT.map.static final intfinal List<int[]>floatКлиентская анимация тарелки (портTileEntityMachineRadarNT).static final intstatic final intstatic final intstatic final intbooleanfloatbooleanbooleanbooleanbooleanПоказывать карту высот (порт TileEntityMachineRadarNT.showMap).static final intstatic final intstatic final intПервый линк-слот команды (всего 8: 0..7).static final intstatic final intСлот radar linker'а для связи с Radar Screen (порт slots[8]).booleanFields inherited from class com.hbm_m.blockentity.BaseMachineBlockEntity
capacity, energy, inventory, itemHandler, maxExtract, maxReceive, networkInitializedFields 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
ConstructorsConstructorDescriptionMachineRadarBlockEntity(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) -
Method Summary
Modifier and TypeMethodDescriptionbooleancanPlaceItemInSlot(int slot, net.minecraft.world.item.ItemStack stack) Публичная обёртка надisItemValidForSlot(int, net.minecraft.world.item.ItemStack)для слотов меню.net.minecraft.world.inventory.AbstractContainerMenucreateMenu(int id, net.minecraft.world.entity.player.Inventory inventory, net.minecraft.world.entity.player.Player player) protected net.minecraft.network.chat.Componentnet.minecraft.network.chat.Componentnet.minecraft.core.BlockPosgetLinkerPos(int linkSlot) Читает BlockPos из NBT radar linker'а в линк-слоте 0..7 (порт slots[id] == radar_linker + ItemCoordinateBase.getPosition).intlonggetPowerScaled(int scale) intintgetProgressScaled(int scale) intgetRange()intnet.minecraft.world.phys.AABBРендер-баундинг бокс по умолчанию.net.minecraft.core.BlockPosЧитает BlockPos Radar Screen из NBT radar linker'а в слоте SLOT_SCREEN_LINKER (порт slots[8] == radar_linker → TileEntityMachineRadarScreen).getTargetTypeName(int index) net.minecraft.nbt.CompoundTagЛёгкий сетевой синк: без инвентаря и полной карты (40 КБ).voidhandleButtonPress(int buttonId) booleanhandleLaunchCommand(int linkSlot, int action, int targetId, int x, int z) Команда пуска через radar linker в одном из линк-слотов 0..7 (портTileEntityMachineRadarNT.receiveControl:link=id→ slots[id]).voidhandleUpdateTag(net.minecraft.nbt.CompoundTag tag) booleanisActive()protected booleanisItemValidForSlot(int slot, net.minecraft.world.item.ItemStack stack) booleanvoidload(net.minecraft.nbt.CompoundTag tag) voidonDataPacket(net.minecraft.network.Connection net, net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket pkt) voidsaveAdditional(net.minecraft.nbt.CompoundTag tag) voidsetEnergyStored(long energy) Базовый setEnergyStored() помечает чанк грязным при КАЖДОМ изменении энергии.static voidtick(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, MachineRadarBlockEntity blockEntity) Methods inherited from class com.hbm_m.blockentity.BaseMachineBlockEntity
canConnectEnergy, canExtract, canReceive, chargeFromBatterySlot, chargeItemInSlot, clearRemoved, createGhostItemsFromIngredients, createInventoryHandler, dropInventoryContents, ensureNetworkInitialized, extractEnergy, getCapability, getEnergyDelta, getEnergyStored, getGhostItems, getInventory, getMaxEnergyStored, getPriority, getProvideSpeed, getReceiveSpeed, getUpdatePacket, invalidateCaps, isCriticalSlot, isEnergyProviderItem, isEnergyReceiverItem, onLoad, receiveEnergy, sendUpdateToClient, setEnergyCapacity, setLevel, setRemoved, setupFluidCapability, updateEnergyDeltaMethods inherited from class net.minecraft.world.level.block.entity.BlockEntity
addEntityType, 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, serializeNBT
-
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_LINK_FIRST
public static final int SLOT_LINK_FIRSTПервый линк-слот команды (всего 8: 0..7).- See Also:
-
SLOT_LINK_LAST
public static final int SLOT_LINK_LAST- 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
-
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:
setEnergyStoredin interfaceIEnergyProvider- Specified by:
setEnergyStoredin interfaceIEnergyReceiver- Overrides:
setEnergyStoredin classBaseMachineBlockEntity
-
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:
getRenderBoundingBoxin interfacenet.minecraftforge.common.extensions.IForgeBlockEntity- Overrides:
getRenderBoundingBoxin classBaseMachineBlockEntity
-
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
-
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_COORDStargetId- entityID цели (для LAUNCH_AT_ENTITY), иначе -1x- целевые 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:
saveAdditionalin classBaseMachineBlockEntity
-
load
public void load(net.minecraft.nbt.CompoundTag tag) - Overrides:
loadin classBaseMachineBlockEntity
-
getDefaultName
protected net.minecraft.network.chat.Component getDefaultName()- Specified by:
getDefaultNamein classBaseMachineBlockEntity
-
getDisplayName
public net.minecraft.network.chat.Component getDisplayName() -
getUpdateTag
public net.minecraft.nbt.CompoundTag getUpdateTag()Лёгкий сетевой синк: без инвентаря и полной карты (40 КБ). Карта — несколько последовательных инкрементальных слайсов по 100 байт.- Overrides:
getUpdateTagin classBaseMachineBlockEntity
-
handleUpdateTag
public void handleUpdateTag(net.minecraft.nbt.CompoundTag tag) - Specified by:
handleUpdateTagin interfacenet.minecraftforge.common.extensions.IForgeBlockEntity- Overrides:
handleUpdateTagin classBaseMachineBlockEntity
-
onDataPacket
public void onDataPacket(net.minecraft.network.Connection net, net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket pkt) - Specified by:
onDataPacketin interfacenet.minecraftforge.common.extensions.IForgeBlockEntity- Overrides:
onDataPacketin classBaseMachineBlockEntity
-
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:
isItemValidForSlotin classBaseMachineBlockEntity
-
createMenu
public net.minecraft.world.inventory.AbstractContainerMenu createMenu(int id, net.minecraft.world.entity.player.Inventory inventory, net.minecraft.world.entity.player.Player player)
-