Class PistonMovingBlockEntity

All Implemented Interfaces:
IAttachmentHolder, IBlockEntityExtension

public class PistonMovingBlockEntity extends BlockEntity
  • Field Details

    • TICKS_TO_EXTEND

      private static final int TICKS_TO_EXTEND
      See Also:
    • PUSH_OFFSET

      private static final double PUSH_OFFSET
      See Also:
    • TICK_MOVEMENT

      public static final double TICK_MOVEMENT
      See Also:
    • movedState

      private BlockState movedState
    • direction

      private Direction direction
    • extending

      private boolean extending
      Whether this piston is extending.
    • isSourcePiston

      private boolean isSourcePiston
    • NOCLIP

      private static final ThreadLocal<Direction> NOCLIP
    • progress

      private float progress
    • progressO

      private float progressO
      The extension / retraction progress
    • lastTicked

      private long lastTicked
    • deathTicks

      private int deathTicks
  • Constructor Details

    • PistonMovingBlockEntity

      public PistonMovingBlockEntity(BlockPos pPos, BlockState pBlockState)
    • PistonMovingBlockEntity

      public PistonMovingBlockEntity(BlockPos pPos, BlockState pBlockState, BlockState pMovedState, Direction pDirection, boolean pExtending, boolean pIsSourcePiston)
  • Method Details

    • getUpdateTag

      public CompoundTag getUpdateTag(HolderLookup.Provider pRegistries)
      Overrides:
      getUpdateTag in class BlockEntity
    • isExtending

      public boolean isExtending()
    • getDirection

      public Direction getDirection()
    • isSourcePiston

      public boolean isSourcePiston()
    • getProgress

      public float getProgress(float pPartialTicks)
      Returns:
      interpolated progress value (between lastProgress and progress) given the partialTicks
    • getXOff

      public float getXOff(float pPartialTicks)
    • getYOff

      public float getYOff(float pPartialTicks)
    • getZOff

      public float getZOff(float pPartialTicks)
    • getExtendedProgress

      private float getExtendedProgress(float pProgress)
    • getCollisionRelatedBlockState

      private BlockState getCollisionRelatedBlockState()
    • moveCollidedEntities

      private static void moveCollidedEntities(Level pLevel, BlockPos pPos, float pPartialTick, PistonMovingBlockEntity pPiston)
    • moveEntityByPiston

      private static void moveEntityByPiston(Direction pNoClipDirection, Entity pEntity, double pProgress, Direction pDirection)
    • moveStuckEntities

      private static void moveStuckEntities(Level pLevel, BlockPos pPos, float pPartialTick, PistonMovingBlockEntity pPiston)
    • matchesStickyCritera

      private static boolean matchesStickyCritera(AABB pBox, Entity pEntity, BlockPos pPos)
    • isStickyForEntities

      private boolean isStickyForEntities()
    • getMovementDirection

      public Direction getMovementDirection()
    • getMovement

      private static double getMovement(AABB pHeadShape, Direction pDirection, AABB pFacing)
    • moveByPositionAndProgress

      private static AABB moveByPositionAndProgress(BlockPos pPos, AABB pAabb, PistonMovingBlockEntity pPistonMovingBlockEntity)
    • fixEntityWithinPistonBase

      private static void fixEntityWithinPistonBase(BlockPos pPos, Entity pEntity, Direction pDir, double pProgress)
    • getMovedState

      public BlockState getMovedState()
    • finalTick

      public void finalTick()
    • tick

      public static void tick(Level pLevel, BlockPos pPos, BlockState pState, PistonMovingBlockEntity pBlockEntity)
    • loadAdditional

      protected void loadAdditional(CompoundTag pTag, HolderLookup.Provider pRegistries)
      Overrides:
      loadAdditional in class BlockEntity
    • saveAdditional

      protected void saveAdditional(CompoundTag pTag, HolderLookup.Provider pRegistries)
      Overrides:
      saveAdditional in class BlockEntity
    • getCollisionShape

      public VoxelShape getCollisionShape(BlockGetter pLevel, BlockPos pPos)
    • getLastTicked

      public long getLastTicked()
    • setLevel

      public void setLevel(Level pLevel)
      Overrides:
      setLevel in class BlockEntity