Class BlockSnapshot
java.lang.Object
net.neoforged.neoforge.common.util.BlockSnapshot
Represents a captured snapshot of a block, including the level, position, state, BE data, and setBlock flags.
Used to record the prior state and unwind changes if the change was denied, such as during BlockEvent.BreakEvent
.
-
Field Summary
Modifier and TypeFieldDescriptionprivate static final boolean
private final ResourceKey
<Level> private final int
private WeakReference
<LevelAccessor> private static final org.apache.logging.log4j.Logger
private final @Nullable CompoundTag
private final BlockPos
private final BlockState
private @Nullable String
-
Constructor Summary
ModifierConstructorDescriptionprivate
BlockSnapshot
(ResourceKey<Level> dim, LevelAccessor level, BlockPos pos, BlockState state, @Nullable CompoundTag nbt, int flags) -
Method Summary
Modifier and TypeMethodDescriptionstatic BlockSnapshot
create
(ResourceKey<Level> dim, LevelAccessor level, BlockPos pos) Creates a new snapshot with the default block flags (and Block#UPDATE_CLIENTS
.static BlockSnapshot
create
(ResourceKey<Level> dim, LevelAccessor level, BlockPos pos, int flag) Creates a new snapshot of the data at the given position.boolean
private static @Nullable CompoundTag
getBlockEntityTag
(LevelAccessor level, BlockPos pos) Checks for a block entity at a given position, and saves it to NBT with full metadata if it exists.Returns the current (live) block state at the recorded position, not the snapshot's recorded state.Returns the recorded dimension key.int
getFlags()
@Nullable LevelAccessor
getLevel()
Returns the stored level, attempting to resolve it from the current server if it has gone out of scope.getPos()
Returns the recorded position.getState()
Returns the snapshot's recorded block state.@Nullable CompoundTag
getTag()
Returns the recorded block entity NBT data, if one was present.int
hashCode()
@Nullable BlockEntity
recreateBlockEntity
(HolderLookup.Provider provider) Recreates a block entity from the stored data (pos/state/NBT) of this block snapshot.boolean
restore()
CallsrestoreToLocation(net.minecraft.world.level.LevelAccessor, net.minecraft.core.BlockPos, int)
with the stored level, position, and block flags.boolean
restore
(int flags) CallsrestoreToLocation(net.minecraft.world.level.LevelAccessor, net.minecraft.core.BlockPos, int)
with the stored level, position, but custom block flags.boolean
restoreBlockEntity
(LevelAccessor level, BlockPos pos) Loads the storedBlockEntity
data if one exists at the given position.boolean
restoreToLocation
(LevelAccessor level, BlockPos pos, int flags) Restores this block snapshot to the target level and position with the specified flags.toString()
-
Field Details
-
DEBUG
private static final boolean DEBUG -
LOGGER
private static final org.apache.logging.log4j.Logger LOGGER -
dim
-
pos
-
flags
private final int flags -
state
-
nbt
-
level
-
toString
-
-
Constructor Details
-
BlockSnapshot
private BlockSnapshot(ResourceKey<Level> dim, LevelAccessor level, BlockPos pos, BlockState state, @Nullable @Nullable CompoundTag nbt, int flags)
-
-
Method Details
-
create
public static BlockSnapshot create(ResourceKey<Level> dim, LevelAccessor level, BlockPos pos, int flag) Creates a new snapshot of the data at the given position.- Parameters:
dim
- The dimension of the changed blocklevel
- The level of the changed blockpos
- The position of the changed blockflag
- TheLevel.setBlock(BlockPos, BlockState, int)
flags that the block was changed with.- Returns:
- A captured block snapshot, containing the state and BE data from the given position.
-
create
Creates a new snapshot with the default block flags (and Block#UPDATE_CLIENTS
.- See Also:
-
getDimension
Returns the recorded dimension key.- Returns:
- the recorded dimension key
-
getPos
Returns the recorded position.- Returns:
- the recorded position
-
getFlags
public int getFlags()- Returns:
- the recorded
Level.setBlock(BlockPos, BlockState, int)
flags
-
getTag
Returns the recorded block entity NBT data, if one was present.- Returns:
- the recorded block entity NBT data, if one was present
-
getState
Returns the snapshot's recorded block state.- Returns:
- the snapshot's recorded block state
-
getLevel
Returns the stored level, attempting to resolve it from the current server if it has gone out of scope.- Returns:
- the stored level, attempting to resolve it from the current server if it has gone out of scope
-
getCurrentState
Returns the current (live) block state at the recorded position, not the snapshot's recorded state.- Returns:
- the current (live) block state at the recorded position, not the snapshot's recorded state
-
recreateBlockEntity
Recreates a block entity from the stored data (pos/state/NBT) of this block snapshot.- Returns:
- The newly created block entity, or null if no NBT data was present, or it was invalid.
-
restoreToLocation
Restores this block snapshot to the target level and position with the specified flags.- Returns:
- true if the block was successfully updated, false otherwise.
-
restore
public boolean restore(int flags) CallsrestoreToLocation(net.minecraft.world.level.LevelAccessor, net.minecraft.core.BlockPos, int)
with the stored level, position, but custom block flags. -
restore
public boolean restore()CallsrestoreToLocation(net.minecraft.world.level.LevelAccessor, net.minecraft.core.BlockPos, int)
with the stored level, position, and block flags. -
restoreBlockEntity
Loads the storedBlockEntity
data if one exists at the given position.- Returns:
- true if any data was loaded
-
equals
-
hashCode
public int hashCode() -
toString
-
getBlockEntityTag
Checks for a block entity at a given position, and saves it to NBT with full metadata if it exists.
-