Interface IMultiBlock
- All Superinterfaces:
IMBStateSyncer
- All Known Subinterfaces:
IExpandingMultiblock,IMovableMultiblock,IPreviewableMultiblock
- All Known Implementing Classes:
AbstractMultiBlock,TestBlock
-
Method Summary
Modifier and TypeMethodDescriptiondefault booleanallBlocksPresent(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) default booleancanPlace(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos center, net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.entity.Entity player, boolean ignoreEntities) default booleancanSurviveHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos) Helper for Block.canSurvive()default voiddestroy(net.minecraft.core.BlockPos center, net.minecraft.world.level.Level level, net.minecraft.world.level.block.state.BlockState state, boolean dropBlock) default booleanentityUnobstructed(net.minecraft.world.level.CollisionGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.entity.Entity player) default booleanextraSurviveRequirements(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) Extra requirements for the block to survive or be placed, runs for every single block in the multiblockdefault voidfixInStructures(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.ServerLevelAccessor level, net.minecraft.core.BlockPos pos) Prevents desyncs and ghost blocks when multiblocks are used in structuresdefault voidfixTick(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos) Tries to fix the multiblock, called afterfixInStructures(BlockState, ServerLevelAccessor, BlockPos)static net.minecraft.core.BlockPosgetCenter(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) Returns the center BlockPos of the multiblockdefault net.minecraft.core.DirectiongetDirection(net.minecraft.world.level.block.state.BlockState state) default net.minecraft.world.level.block.state.properties.DirectionPropertyReturns the multiblocks DirectionProperty.default List<net.minecraft.core.BlockPos>getFullBlockShape(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level) default List<net.minecraft.core.BlockPos>getFullBlockShapeNoCache(net.minecraft.core.BlockPos center, net.minecraft.world.level.block.state.BlockState state) static List<net.minecraft.core.BlockPos>getFullShape(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos) default intgetMaxAge(net.minecraft.world.level.block.state.properties.IntegerProperty ageProperty) default net.minecraft.world.level.block.state.BlockStategetStateForPlacementHelper(net.minecraft.world.item.context.BlockPlaceContext context) default net.minecraft.world.level.block.state.BlockStategetStateForPlacementHelper(net.minecraft.world.item.context.BlockPlaceContext context, net.minecraft.core.Direction direction) Helper forBlock.getStateForPlacement(BlockPlaceContext)default net.minecraft.world.level.block.state.BlockStategetStateFromOffset(net.minecraft.world.level.block.state.BlockState state, net.minecraft.core.BlockPos offset) Changes the BlockState for each Block based on its offset from centerstatic intgetXOffset(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) static intgetYOffset(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) static intgetZOffset(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) default voidgrowHelper(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos blockPos, net.minecraft.world.level.block.state.properties.IntegerProperty ageProperty) Deprecated.Use synced blockStates insteadstatic voidinvalidateCaches(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) default booleanisBroken(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) Checks if the multiblock needs fixing byfixTick(BlockState, Level, BlockPos)static booleanisCenter(net.minecraft.world.level.block.state.BlockState state) static booleanisCenter(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos) static booleanisMultiblock(net.minecraft.world.level.block.state.BlockState state) static booleanisMultiblock(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) static booleanisSameMultiblock(net.minecraft.world.level.Level level, net.minecraft.world.level.block.state.BlockState state1, net.minecraft.world.level.block.state.BlockState state2, net.minecraft.core.BlockPos center, net.minecraft.core.BlockPos posNew) List<net.minecraft.core.BlockPos>makeFullBlockShape(net.minecraft.core.Direction direction, net.minecraft.core.BlockPos center, net.minecraft.world.level.block.state.BlockState state) Returns a BlockPos Stream of every block in this multiblock.default voidonPlaceHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState) default voidplace(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos centerPos, net.minecraft.world.level.block.state.BlockState stateOriginal) Places the multiblock, sets its BlockStates and BlockEntity centerstatic List<net.minecraft.core.BlockPos>posStreamToList(Stream<net.minecraft.core.BlockPos> posStream) Mojangs BetweenClosed methods return a mutable BlockPos, which breaks everything.default List<com.mojang.datafixers.util.Pair<net.minecraft.core.BlockPos,net.minecraft.world.level.block.state.BlockState>> prepareForPlace(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos centerPos, net.minecraft.world.level.block.state.BlockState stateOriginal) Prepares all blocks to be Placeddefault voidpreventCreativeDrops(net.minecraft.world.entity.player.Player player, net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos) Should be added intoBlock.playerDestroy(Level, Player, BlockPos, BlockState, BlockEntity, ItemStack)default net.minecraft.world.level.block.state.BlockStateupdateShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.LevelAccessor level, net.minecraft.core.BlockPos pos) Helper for Block.updateShape()default net.minecraft.world.phys.shapes.VoxelShapevoxelShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.phys.shapes.VoxelShape shape) default net.minecraft.world.phys.shapes.VoxelShapevoxelShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.phys.shapes.VoxelShape shape, float xOffset, float yOffset, float zOffset) default net.minecraft.world.phys.shapes.VoxelShapevoxelShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.phys.shapes.VoxelShape shape, float xOffset, float yOffset, float zOffset, boolean hasDirectionOffsets) Offsets each Blocks VoxelShape to the center, allowing for VoxelShapes larger than 1 blockMethods inherited from interface net.nikdo53.tinymultiblocklib.block.IMBStateSyncer
createSyncedBlockStates, getSyncedStateProperties, getSyncedStatePropertiesBuilder, syncBlockStates
-
Method Details
-
makeFullBlockShape
List<net.minecraft.core.BlockPos> makeFullBlockShape(@Nullable net.minecraft.core.Direction direction, net.minecraft.core.BlockPos center, net.minecraft.world.level.block.state.BlockState state) Returns a BlockPos Stream of every block in this multiblock.Should only be used for overriding
-
posStreamToList
static List<net.minecraft.core.BlockPos> posStreamToList(Stream<net.minecraft.core.BlockPos> posStream) Mojangs BetweenClosed methods return a mutable BlockPos, which breaks everything. Use this helper method to convert them safely -
getDirectionProperty
@Nullable default net.minecraft.world.level.block.state.properties.DirectionProperty getDirectionProperty()Returns the multiblocks DirectionProperty.Only used for multiblocks that can be rotated, otherwise returns null
-
getDirection
@Nullable default net.minecraft.core.Direction getDirection(net.minecraft.world.level.block.state.BlockState state) -
getFullBlockShapeNoCache
default List<net.minecraft.core.BlockPos> getFullBlockShapeNoCache(net.minecraft.core.BlockPos center, net.minecraft.world.level.block.state.BlockState state) -
getFullBlockShape
default List<net.minecraft.core.BlockPos> getFullBlockShape(net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level) -
getFullShape
static List<net.minecraft.core.BlockPos> getFullShape(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos) -
invalidateCaches
static void invalidateCaches(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) -
getStateFromOffset
default net.minecraft.world.level.block.state.BlockState getStateFromOffset(net.minecraft.world.level.block.state.BlockState state, net.minecraft.core.BlockPos offset) Changes the BlockState for each Block based on its offset from center -
onPlaceHelper
default void onPlaceHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState) -
place
default void place(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos centerPos, net.minecraft.world.level.block.state.BlockState stateOriginal) Places the multiblock, sets its BlockStates and BlockEntity center -
prepareForPlace
default List<com.mojang.datafixers.util.Pair<net.minecraft.core.BlockPos,net.minecraft.world.level.block.state.BlockState>> prepareForPlace(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos centerPos, net.minecraft.world.level.block.state.BlockState stateOriginal) Prepares all blocks to be Placed -
getStateForPlacementHelper
default net.minecraft.world.level.block.state.BlockState getStateForPlacementHelper(net.minecraft.world.item.context.BlockPlaceContext context) -
getStateForPlacementHelper
default net.minecraft.world.level.block.state.BlockState getStateForPlacementHelper(net.minecraft.world.item.context.BlockPlaceContext context, net.minecraft.core.Direction direction) Helper forBlock.getStateForPlacement(BlockPlaceContext)- Parameters:
direction- The direction the block will have when placed, ignored whengetDirectionProperty()is null
-
canPlace
default boolean canPlace(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos center, net.minecraft.world.level.block.state.BlockState state, @Nullable net.minecraft.world.entity.Entity player, boolean ignoreEntities) -
entityUnobstructed
default boolean entityUnobstructed(net.minecraft.world.level.CollisionGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state, @Nullable net.minecraft.world.entity.Entity player) -
destroy
default void destroy(net.minecraft.core.BlockPos center, net.minecraft.world.level.Level level, net.minecraft.world.level.block.state.BlockState state, boolean dropBlock) -
allBlocksPresent
default boolean allBlocksPresent(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) -
updateShapeHelper
default net.minecraft.world.level.block.state.BlockState updateShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.LevelAccessor level, net.minecraft.core.BlockPos pos) Helper for Block.updateShape()Destroys the multiblock if canSurvive returns false
-
canSurviveHelper
default boolean canSurviveHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos) Helper for Block.canSurvive() -
extraSurviveRequirements
default boolean extraSurviveRequirements(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) Extra requirements for the block to survive or be placed, runs for every single block in the multiblock -
preventCreativeDrops
default void preventCreativeDrops(net.minecraft.world.entity.player.Player player, net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos) Should be added intoBlock.playerDestroy(Level, Player, BlockPos, BlockState, BlockEntity, ItemStack) -
fixInStructures
default void fixInStructures(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.ServerLevelAccessor level, net.minecraft.core.BlockPos pos) Prevents desyncs and ghost blocks when multiblocks are used in structures -
fixTick
default void fixTick(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.Level level, net.minecraft.core.BlockPos pos) Tries to fix the multiblock, called afterfixInStructures(BlockState, ServerLevelAccessor, BlockPos) -
isBroken
default boolean isBroken(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state) Checks if the multiblock needs fixing byfixTick(BlockState, Level, BlockPos) -
getCenter
static net.minecraft.core.BlockPos getCenter(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) Returns the center BlockPos of the multiblock -
isCenter
static boolean isCenter(net.minecraft.world.level.LevelReader level, net.minecraft.core.BlockPos pos) -
isCenter
static boolean isCenter(net.minecraft.world.level.block.state.BlockState state) -
isMultiblock
static boolean isMultiblock(net.minecraft.world.level.block.state.BlockState state) -
isMultiblock
static boolean isMultiblock(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) -
getXOffset
static int getXOffset(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) -
getYOffset
static int getYOffset(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) -
getZOffset
static int getZOffset(net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos) -
voxelShapeHelper
default net.minecraft.world.phys.shapes.VoxelShape voxelShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.phys.shapes.VoxelShape shape) -
voxelShapeHelper
default net.minecraft.world.phys.shapes.VoxelShape voxelShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.phys.shapes.VoxelShape shape, float xOffset, float yOffset, float zOffset) -
voxelShapeHelper
default net.minecraft.world.phys.shapes.VoxelShape voxelShapeHelper(net.minecraft.world.level.block.state.BlockState state, net.minecraft.world.level.BlockGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.phys.shapes.VoxelShape shape, float xOffset, float yOffset, float zOffset, boolean hasDirectionOffsets) Offsets each Blocks VoxelShape to the center, allowing for VoxelShapes larger than 1 block- Parameters:
hasDirectionOffsets- Larger directional multiblocks may have their center in a different point for every rotation, this offsets the VoxelShapes accordingly
-
growHelper
@Deprecated default void growHelper(net.minecraft.world.level.Level level, net.minecraft.core.BlockPos blockPos, net.minecraft.world.level.block.state.properties.IntegerProperty ageProperty) Deprecated.Use synced blockStates insteadIncreases age in each block at the same timeIf used in the randomTick method, don't forget to check
isCenter(BlockState)first, otherwise the block will grow significantly faster (each block tick separately) -
getMaxAge
default int getMaxAge(net.minecraft.world.level.block.state.properties.IntegerProperty ageProperty) -
isSameMultiblock
static boolean isSameMultiblock(net.minecraft.world.level.Level level, net.minecraft.world.level.block.state.BlockState state1, net.minecraft.world.level.block.state.BlockState state2, net.minecraft.core.BlockPos center, net.minecraft.core.BlockPos posNew)
-