Interface IForgeBlock

All Known Implementing Classes:
AbstractBannerBlock, AbstractCandleBlock, AbstractCauldronBlock, AbstractChestBlock, AbstractFurnaceBlock, AbstractGlassBlock, AbstractSkullBlock, AirBlock, AmethystBlock, AmethystClusterBlock, AnvilBlock, AttachedStemBlock, AzaleaBlock, BambooBlock, BambooSaplingBlock, BannerBlock, BarrelBlock, BarrierBlock, BaseCoralFanBlock, BaseCoralPlantBlock, BaseCoralPlantTypeBlock, BaseCoralWallFanBlock, BaseEntityBlock, BaseFireBlock, BasePressurePlateBlock, BaseRailBlock, BeaconBlock, BedBlock, BeehiveBlock, BeetrootBlock, BellBlock, BigDripleafBlock, BigDripleafStemBlock, BlastFurnaceBlock, Block, BlockEntityOnLoadTest.TestBlock, BrewingStandBlock, BubbleColumnBlock, BuddingAmethystBlock, BushBlock, ButtonBlock, CactusBlock, CakeBlock, CampfireBlock, CandleBlock, CandleCakeBlock, CarpetBlock, CarrotBlock, CartographyTableBlock, CarvedPumpkinBlock, CauldronBlock, CaveVinesBlock, CaveVinesPlantBlock, ChainBlock, ChestBlock, ChorusFlowerBlock, ChorusPlantBlock, CocoaBlock, CommandBlock, ComparatorBlock, ComposterBlock, ConcretePowderBlock, ConduitBlock, CoralBlock, CoralFanBlock, CoralPlantBlock, CoralWallFanBlock, CraftingTableBlock, CropBlock, CrossCollisionBlock, CryingObsidianBlock, CustomPlantTypeTest.CustomBlock, CustomPlantTypeTest.CustomPlantBlock, CustomRespawnTest.CustomRespawnBlock, CustomSignsTest.CustomStandingSignBlock, CustomSignsTest.CustomWallSignBlock, DaylightDetectorBlock, DeadBushBlock, DetectorRailBlock, DiodeBlock, DirectionalBlock, DirtPathBlock, DispenserBlock, DoorBlock, DoublePlantBlock, DragonEggBlock, DropperBlock, EnchantmentTableBlock, EnderChestBlock, EndGatewayBlock, EndPortalBlock, EndPortalFrameBlock, EndRodBlock, FaceAttachedHorizontalDirectionalBlock, FallingBlock, FarmBlock, FenceBlock, FenceGateBlock, FireBlock, FletchingTableBlock, FlowerBlock, FlowerPotBlock, ForgeChunkManagerTest.ChunkLoaderBlock, FrostedIceBlock, FullPotsAccessorDemo.DioriteFlowerPotBlock, FungusBlock, FurnaceBlock, GameData.BlockCallbacks.BlockDummyAir, GlassBlock, GlazedTerracottaBlock, GlowLichenBlock, GrassBlock, GravelBlock, GrindstoneBlock, GrowingPlantBlock, GrowingPlantBodyBlock, GrowingPlantHeadBlock, HalfTransparentBlock, HangingRootsBlock, HayBlock, HoneyBlock, HopperBlock, HorizontalDirectionalBlock, HugeMushroomBlock, IceBlock, InfestedBlock, InfestedRotatedPillarBlock, IronBarsBlock, JigsawBlock, JukeboxBlock, KelpBlock, KelpPlantBlock, LadderBlock, LanternBlock, LavaCauldronBlock, LayeredCauldronBlock, LeavesBlock, LecternBlock, LeverBlock, LightBlock, LightningRodBlock, LiquidBlock, LoomBlock, MagmaBlock, MelonBlock, MossBlock, MovingPistonBlock, MultifaceBlock, MushroomBlock, MyceliumBlock, NetherPortalBlock, NetherrackBlock, NetherSproutsBlock, NetherWartBlock, NewFluidTest.FluidloggableBlock, NoteBlock, NyliumBlock, ObserverBlock, OreBlock, PipeBlock, PistonBaseBlock, PistonHeadBlock, PlayerHeadBlock, PlayerWallHeadBlock, PointedDripstoneBlock, PotatoBlock, PowderSnowBlock, PowderSnowCauldronBlock, PoweredBlock, PoweredRailBlock, PressurePlateBlock, PumpkinBlock, RailBlock, RedstoneLampBlock, RedStoneOreBlock, RedstoneSidedConnectivityTest.EastRedstoneBlock, RedstoneTorchBlock, RedstoneWallTorchBlock, RedStoneWireBlock, RepeaterBlock, RespawnAnchorBlock, RodBlock, RootedDirtBlock, RootsBlock, RotatedPillarBlock, SandBlock, SaplingBlock, ScaffoldingBlock, ScaffoldingTest.ScaffoldingMethodTestBlock, SculkSensorBlock, SeagrassBlock, SeaPickleBlock, ShulkerBoxBlock, SignBlock, SkullBlock, SlabBlock, SlimeBlock, SmallDripleafBlock, SmithingTableBlock, SmokerBlock, SnowLayerBlock, SnowyDirtBlock, SoulFireBlock, SoulSandBlock, SpawnerBlock, SpongeBlock, SporeBlossomBlock, SpreadingSnowyDirtBlock, StainedGlassBlock, StainedGlassPaneBlock, StairBlock, StandingSignBlock, StemBlock, StemGrownBlock, StoneButtonBlock, StonecutterBlock, StructureBlock, StructureVoidBlock, SugarCaneBlock, SweetBerryBushBlock, TallFlowerBlock, TallGrassBlock, TallSeagrassBlock, TargetBlock, TintedGlassBlock, TntBlock, TorchBlock, TrapDoorBlock, TrappedChestBlock, TripWireBlock, TripWireHookBlock, TurtleEggBlock, TwistingVinesBlock, TwistingVinesPlantBlock, VineBlock, WallBannerBlock, WallBlock, WallSignBlock, WallSkullBlock, WallTorchBlock, WaterlilyBlock, WeatheringCopperFullBlock, WeatheringCopperSlabBlock, WeatheringCopperStairBlock, WebBlock, WeepingVinesBlock, WeepingVinesPlantBlock, WeightedPressurePlateBlock, WetSpongeBlock, WitherRoseBlock, WitherSkullBlock, WitherWallSkullBlock, WoodButtonBlock, WoolCarpetBlock

public interface IForgeBlock
  • Method Details

    • self

      private Block self()
    • getFriction

      default float getFriction(BlockState state, LevelReader world, BlockPos pos, @Nullable Entity entity)
      Gets the slipperiness at the given location at the given state. Normally between 0 and 1.

      Note that entities may reduce slipperiness by a certain factor of their own; for LivingEntity, this is .91. ItemEntity uses .98, and FishingHook uses .92.

      Parameters:
      state - state of the block
      world - the world
      pos - the position in the world
      entity - the entity in question
      Returns:
      the factor by which the entity's motion should be multiplied
    • getLightEmission

      default int getLightEmission(BlockState state, BlockGetter world, BlockPos pos)
      Get a light value for this block, taking into account the given state and coordinates, normal ranges are between 0 and 15
      Parameters:
      state -
      world -
      pos -
      Returns:
      The light value
    • isLadder

      default boolean isLadder(BlockState state, LevelReader world, BlockPos pos, LivingEntity entity)
      Checks if a player or entity can use this block to 'climb' like a ladder.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      entity - The entity trying to use the ladder, CAN be null.
      Returns:
      True if the block should act like a ladder
    • makesOpenTrapdoorAboveClimbable

      default boolean makesOpenTrapdoorAboveClimbable(BlockState state, LevelReader world, BlockPos pos, BlockState trapdoorState)
      Checks if this block makes an open trapdoor above it climbable.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      trapdoorState - The current state of the open trapdoor above
      Returns:
      True if the block should act like a ladder
    • isBurning

      default boolean isBurning(BlockState state, BlockGetter world, BlockPos pos)
      Determines if this block should set fire and deal fire damage to entities coming into contact with it.
      Parameters:
      world - The current world
      pos - Block position in world
      Returns:
      True if the block should deal damage
    • canHarvestBlock

      default boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player)
      Determines if the player can harvest this block, obtaining it's drops when the block is destroyed.
      Parameters:
      world - The current world
      pos - The block's current position
      player - The player damaging the block
      Returns:
      True to spawn the drops
    • removedByPlayer

      default boolean removedByPlayer(BlockState state, Level world, BlockPos pos, Player player, boolean willHarvest, FluidState fluid)
      Called when a player removes a block. This is responsible for actually destroying the block, and the block is intact at time of call. This is called regardless of whether the player can harvest the block or not. Return true if the block is actually destroyed. Note: When used in multiplayer, this is called on both client and server sides!
      Parameters:
      state - The current state.
      world - The current world
      player - The player damaging the block, may be null
      pos - Block position in world
      willHarvest - True if Block.harvestBlock will be called after this, if the return in true. Can be useful to delay the destruction of tile entities till after harvestBlock
      fluid - The current fluid state at current position
      Returns:
      True if the block is actually destroyed.
    • isBed

      default boolean isBed(BlockState state, BlockGetter world, BlockPos pos, @Nullable Entity player)
      Determines if this block is classified as a Bed, Allowing players to sleep in it, though the block has to specifically perform the sleeping functionality in it's activated event.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      player - The player or camera entity, null in some cases.
      Returns:
      True to treat this as a bed
    • getRespawnPosition

      default Optional<Vec3> getRespawnPosition(BlockState state, EntityType<?> type, LevelReader world, BlockPos pos, float orientation, @Nullable LivingEntity entity)
      Returns the position that the entity is moved to upon respawning at this block.
      Parameters:
      state - The current state
      type - The entity type used when checking if a dismount blockstate is dangerous. Currently always PLAYER.
      world - The current world
      pos - Block position in world
      orientation - The angle the entity had when setting the respawn point
      entity - The entity respawning, often null
      Returns:
      The spawn position or the empty optional if respawning here is not possible
    • canCreatureSpawn

      default boolean canCreatureSpawn(BlockState state, BlockGetter world, BlockPos pos, SpawnPlacements.Type type, EntityType<?> entityType)
      Determines if a specified mob type can spawn on this block, returning false will prevent any mob from spawning on the block.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      type - The Mob Category Type
      Returns:
      True to allow a mob of the specified category to spawn, false to prevent it.
    • setBedOccupied

      default void setBedOccupied(BlockState state, Level world, BlockPos pos, LivingEntity sleeper, boolean occupied)
      Called when a user either starts or stops sleeping in the bed.
      Parameters:
      state -
      world - The current world
      pos - Block position in world
      sleeper - The sleeper or camera entity, null in some cases.
      occupied - True if we are occupying the bed, or false if they are stopping use of the bed
    • getBedDirection

      default Direction getBedDirection(BlockState state, LevelReader world, BlockPos pos)
      Returns the direction of the block. Same values that are returned by BlockDirectional. Called every frame tick for every living entity. Be VERY fast.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      Returns:
      Bed direction
    • getExplosionResistance

      default float getExplosionResistance(BlockState state, BlockGetter world, BlockPos pos, Explosion explosion)
      Location sensitive version of getExplosionResistance
      Parameters:
      world - The current world
      pos - Block position in world
      explosion - The explosion
      Returns:
      The amount of the explosion absorbed.
    • getPickBlock

      default ItemStack getPickBlock(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player)
      Called when A user uses the creative pick block button on this block
      Parameters:
      target - The full target the player is looking at
      Returns:
      A ItemStack to add to the player's inventory, empty itemstack if nothing should be added.
    • addLandingEffects

      default boolean addLandingEffects(BlockState state1, ServerLevel worldserver, BlockPos pos, BlockState state2, LivingEntity entity, int numberOfParticles)
      Allows a block to override the standard EntityLivingBase.updateFallState particles, this is a server side method that spawns particles with WorldServer.spawnParticle.
      Parameters:
      worldserver - The current Server World
      pos - The position of the block.
      state2 - The state at the specific world/pos
      entity - The entity that hit landed on the block
      numberOfParticles - That vanilla world have spawned
      Returns:
      True to prevent vanilla landing particles from spawning
    • addRunningEffects

      default boolean addRunningEffects(BlockState state, Level world, BlockPos pos, Entity entity)
      Allows a block to override the standard vanilla running particles. This is called from Entity.spawnSprintParticle and is called both, Client and server side, it's up to the implementor to client check / server check. By default vanilla spawns particles only on the client and the server methods no-op.
      Parameters:
      state - The BlockState the entity is running on.
      world - The world.
      pos - The position at the entities feet.
      entity - The entity running on the block.
      Returns:
      True to prevent vanilla running particles from spawning.
    • canSustainPlant

      boolean canSustainPlant(BlockState state, BlockGetter world, BlockPos pos, Direction facing, IPlantable plantable)
      Determines if this block can support the passed in plant, allowing it to be planted and grow. Some examples: Reeds check if its a reed, or if its sand/dirt/grass and adjacent to water Cacti checks if its a cacti, or if its sand Nether types check for soul sand Crops check for tilled soil Caves check if it's a solid surface Plains check if its grass or dirt Water check if its still water
      Parameters:
      state - The Current state
      world - The current world
      facing - The direction relative to the given position the plant wants to be, typically its UP
      plantable - The plant that wants to check
      Returns:
      True to allow the plant to be planted/stay.
    • isFertile

      default boolean isFertile(BlockState state, BlockGetter world, BlockPos pos)
      Checks if this soil is fertile, typically this means that growth rates of plants on this soil will be slightly sped up. Only vanilla case is tilledField when it is within range of water.
      Parameters:
      world - The current world
      pos - Block position in world
      Returns:
      True if the soil should be considered fertile.
    • isConduitFrame

      default boolean isConduitFrame(BlockState state, LevelReader world, BlockPos pos, BlockPos conduit)
      Determines if this block can be used as the frame of a conduit.
      Parameters:
      world - The current world
      pos - Block position in world
      conduit - Conduit position in world
      Returns:
      True, to support the conduit, and make it active with this block.
    • isPortalFrame

      default boolean isPortalFrame(BlockState state, BlockGetter world, BlockPos pos)
      Determines if this block can be used as part of a frame of a nether portal.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      Returns:
      True, to support being part of a nether portal frame, false otherwise.
    • getExpDrop

      default int getExpDrop(BlockState state, LevelReader world, BlockPos pos, int fortune, int silktouch)
      Gathers how much experience this block drops when broken.
      Parameters:
      state - The current state
      world - The world
      pos - Block position
      fortune -
      Returns:
      Amount of XP from breaking this block.
    • rotate

      default BlockState rotate(BlockState state, LevelAccessor world, BlockPos pos, Rotation direction)
    • getEnchantPowerBonus

      default float getEnchantPowerBonus(BlockState state, LevelReader world, BlockPos pos)
      Determines the amount of enchanting power this block can provide to an enchanting table.
      Parameters:
      world - The World
      pos - Block position in world
      Returns:
      The amount of enchanting power this block produces.
    • onNeighborChange

      default void onNeighborChange(BlockState state, LevelReader world, BlockPos pos, BlockPos neighbor)
      Called when a tile entity on a side of this block changes is created or is destroyed.
      Parameters:
      world - The world
      pos - Block position in world
      neighbor - Block position of neighbor
    • shouldCheckWeakPower

      default boolean shouldCheckWeakPower(BlockState state, LevelReader world, BlockPos pos, Direction side)
      Called to determine whether to allow the a block to handle its own indirect power rather than using the default rules.
      Parameters:
      world - The world
      pos - Block position in world
      side - The INPUT side of the block to be powered - ie the opposite of this block's output side
      Returns:
      Whether Block#isProvidingWeakPower should be called when determining indirect power
    • getWeakChanges

      default boolean getWeakChanges(BlockState state, LevelReader world, BlockPos pos)
      If this block should be notified of weak changes. Weak changes are changes 1 block away through a solid block. Similar to comparators.
      Parameters:
      world - The current world
      pos - Block position in world
      Returns:
      true To be notified of changes
    • getSoundType

      default SoundType getSoundType(BlockState state, LevelReader world, BlockPos pos, @Nullable Entity entity)
      Sensitive version of getSoundType
      Parameters:
      state - The state
      world - The world
      pos - The position. Note that the world may not necessarily have state here!
      entity - The entity that is breaking/stepping on/placing/hitting/falling on this block, or null if no entity is in this context
      Returns:
      A SoundType to use
    • getBeaconColorMultiplier

      @Nullable default float[] getBeaconColorMultiplier(BlockState state, LevelReader world, BlockPos pos, BlockPos beaconPos)
      Parameters:
      state - The state
      world - The world
      pos - The position of this state
      beaconPos - The position of the beacon
      Returns:
      A float RGB [0.0, 1.0] array to be averaged with a beacon's existing beam color, or null to do nothing to the beam
    • getStateAtViewpoint

      default BlockState getStateAtViewpoint(BlockState state, BlockGetter world, BlockPos pos, Vec3 viewpoint)
      Used to determine the state 'viewed' by an entity (see Camera.getBlockAtCamera()). Can be used by fluid blocks to determine if the viewpoint is within the fluid or not.
      Parameters:
      state - the state
      world - the world
      pos - the position
      viewpoint - the viewpoint
      Returns:
      the block state that should be 'seen'
    • getAiPathNodeType

      @Nullable default BlockPathTypes getAiPathNodeType(BlockState state, BlockGetter world, BlockPos pos, @Nullable Mob entity)
      Get the PathNodeType for this block. Return null for vanilla behavior.
      Returns:
      the PathNodeType
    • isSlimeBlock

      default boolean isSlimeBlock(BlockState state)
      Parameters:
      state - The state
      Returns:
      true if the block is sticky block which used for pull or push adjacent blocks (use by piston)
    • isStickyBlock

      default boolean isStickyBlock(BlockState state)
      Parameters:
      state - The state
      Returns:
      true if the block is sticky block which used for pull or push adjacent blocks (use by piston)
    • canStickTo

      default boolean canStickTo(BlockState state, BlockState other)
      Determines if this block can stick to another block when pushed by a piston.
      Parameters:
      state - My state
      other - Other block
      Returns:
      True to link blocks
    • getFlammability

      default int getFlammability(BlockState state, BlockGetter world, BlockPos pos, Direction face)
      Chance that fire will spread and consume this block. 300 being a 100% chance, 0, being a 0% chance.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      face - The face that the fire is coming from
      Returns:
      A number ranging from 0 to 300 relating used to determine if the block will be consumed by fire
    • isFlammable

      default boolean isFlammable(BlockState state, BlockGetter world, BlockPos pos, Direction face)
      Called when fire is updating, checks if a block face can catch fire.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      face - The face that the fire is coming from
      Returns:
      True if the face can be on fire, false otherwise.
    • catchFire

      default void catchFire(BlockState state, Level world, BlockPos pos, @Nullable Direction face, @Nullable LivingEntity igniter)
      If the block is flammable, this is called when it gets lit on fire.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      face - The face that the fire is coming from
      igniter - The entity that lit the fire
    • getFireSpreadSpeed

      default int getFireSpreadSpeed(BlockState state, BlockGetter world, BlockPos pos, Direction face)
      Called when fire is updating on a neighbor block. The higher the number returned, the faster fire will spread around this block.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      face - The face that the fire is coming from
      Returns:
      A number that is used to determine the speed of fire growth around the block
    • isFireSource

      default boolean isFireSource(BlockState state, LevelReader world, BlockPos pos, Direction side)
      Currently only called by fire when it is on top of this block. Returning true will prevent the fire from naturally dying during updating. Also prevents firing from dying from rain.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      side - The face that the fire is coming from
      Returns:
      True if this block sustains fire, meaning it will never go out.
    • canEntityDestroy

      default boolean canEntityDestroy(BlockState state, BlockGetter world, BlockPos pos, Entity entity)
      Determines if this block is can be destroyed by the specified entities normal behavior.
      Parameters:
      state - The current state
      world - The current world
      pos - Block position in world
      Returns:
      True to allow the ender dragon to destroy this block
    • canDropFromExplosion

      default boolean canDropFromExplosion(BlockState state, BlockGetter world, BlockPos pos, Explosion explosion)
      Determines if this block should drop loot when exploded.
    • getTags

      Set<ResourceLocation> getTags()
      Retrieves a list of tags names this is known to be associated with. This should be used in favor of TagCollection.getOwningTags, as this caches the result and automatically updates when the TagCollection changes.
    • onBlockExploded

      default void onBlockExploded(BlockState state, Level world, BlockPos pos, Explosion explosion)
      Called when the block is destroyed by an explosion. Useful for allowing the block to take into account tile entities, state, etc. when exploded, before it is removed.
      Parameters:
      world - The current world
      pos - Block position in world
      explosion - The explosion instance affecting the block
    • collisionExtendsVertically

      default boolean collisionExtendsVertically(BlockState state, BlockGetter world, BlockPos pos, Entity collidingEntity)
      Determines if this block's collision box should be treated as though it can extend above its block space. Use this to replicate fence and wall behavior.
    • shouldDisplayFluidOverlay

      default boolean shouldDisplayFluidOverlay(BlockState state, BlockAndTintGetter world, BlockPos pos, FluidState fluidState)
      Called to determine whether this block should use the fluid overlay texture or flowing texture when it is placed under the fluid.
      Parameters:
      state - The current state
      world - The world
      pos - Block position in world
      fluidState - The state of the fluid
      Returns:
      Whether the fluid overlay texture should be used
    • getToolModifiedState

      @Nullable default BlockState getToolModifiedState(BlockState state, Level world, BlockPos pos, Player player, ItemStack stack, ToolAction toolAction)
      Returns the state that this block should transform into when right clicked by a tool. For example: Used to determine if an axe can strip, a shovel can path, or a hoe can till. Return null if vanilla behavior should be disabled.
      Parameters:
      state - The current state
      world - The world
      pos - The block position in world
      player - The player clicking the block
      stack - The stack being used by the player
      toolAction - The action being performed by the tool
      Returns:
      The resulting state after the action has been performed
    • isScaffolding

      default boolean isScaffolding(BlockState state, LevelReader world, BlockPos pos, LivingEntity entity)
      Checks if a player or entity handles movement on this block like scaffolding.
      Parameters:
      state - The current state
      world - The current world
      pos - The block position in world
      entity - The entity on the scaffolding
      Returns:
      True if the block should act like scaffolding
    • canConnectRedstone

      default boolean canConnectRedstone(BlockState state, BlockGetter world, BlockPos pos, @Nullable Direction direction)
      Whether redstone dust should visually connect to this block on a given side

      The default implementation is identical to RedStoneWireBlock#shouldConnectTo(BlockState, Direction)

      RedStoneWireBlock updates its visual connection when BlockBehaviour.BlockStateBase.updateShape(Direction, BlockState, LevelAccessor, BlockPos, BlockPos) is called, this callback is used during the evaluation of its new shape.

      Parameters:
      state - The current state
      world - The world
      pos - The block position in world
      direction - The coming direction of the redstone dust connection (with respect to the block at pos)
      Returns:
      True if redstone dust should visually connect on the side passed

      If the return value is evaluated based on world and pos (e.g. from BlockEntity), then the implementation of this block should notify its neighbors to update their shapes when necessary. Consider using BlockBehaviour.BlockStateBase.updateNeighbourShapes(LevelAccessor, BlockPos, int, int) or BlockBehaviour.BlockStateBase.updateShape(Direction, BlockState, LevelAccessor, BlockPos, BlockPos).

      Example:

      1. yourBlockState.updateNeighbourShapes(world, yourBlockPos, UPDATE_ALL);

      2. neighborState.updateShape(fromDirection, stateOfYourBlock, world, neighborBlockPos, yourBlockPos), where fromDirection is defined from the neighbor block's point of view.