Interface IPlayerExtension

All Known Implementing Classes:
AbstractClientPlayer, FakePlayer, LocalPlayer, Player, RemotePlayer, ServerPlayer

public interface IPlayerExtension
  • Method Summary

    Modifier and Type
    Method
    Description
    default boolean
    canReach(BlockPos pos, double padding)
    Checks if the player can reach a block.
    On the server, additional padding is added to account for movement/lag.
    default boolean
    canReach(Entity entity, double padding)
    Checks if the player can reach an entity.
    On the server, additional padding is added to account for movement/lag.
    default boolean
    canReach(Vec3 entityHitVec, double padding)
    Checks if the player can reach an entity by targeting the passed vector.
    On the server, additional padding is added to account for movement/lag.
    default double
    The reach distance is increased by 0.5 for creative players, unless it is currently zero, which disables interactions.
    default double
    The entity reach is increased by 2 for creative players, unless it is currently zero, which disables attacks and entity interactions.
    default boolean
    isCloseEnough(Entity entity, double dist)
    Utility check to see if the player is close enough to a target entity.
    default OptionalInt
    openMenu(MenuProvider menuProvider, Consumer<FriendlyByteBuf> extraDataWriter)
    Request to open a GUI on the client, from the server
    default OptionalInt
    openMenu(MenuProvider menuProvider, BlockPos pos)
    Request to open a GUI on the client, from the server
    private Player
     
  • Method Details

    • self

      private Player self()
    • getEntityReach

      default double getEntityReach()
      The entity reach is increased by 2 for creative players, unless it is currently zero, which disables attacks and entity interactions.
      Returns:
      The entity reach of this player.
    • getBlockReach

      default double getBlockReach()
      The reach distance is increased by 0.5 for creative players, unless it is currently zero, which disables interactions.
      Returns:
      The reach distance of this player.
    • canReach

      default boolean canReach(Vec3 entityHitVec, double padding)
      Checks if the player can reach an entity by targeting the passed vector.
      On the server, additional padding is added to account for movement/lag.
      Parameters:
      entityHitVec - The vector being range-checked.
      padding - Extra validation distance.
      Returns:
      If the player can attack the entity.
      API Note:
      Do not use for block checks, as this method uses getEntityReach()
    • canReach

      default boolean canReach(Entity entity, double padding)
      Checks if the player can reach an entity.
      On the server, additional padding is added to account for movement/lag.
      Parameters:
      entity - The entity being range-checked.
      padding - Extra validation distance.
      Returns:
      If the player can attack the passed entity.
      API Note:
      Prefer using canReach(Vec3, double) if you have a HitResult available.
    • canReach

      default boolean canReach(BlockPos pos, double padding)
      Checks if the player can reach a block.
      On the server, additional padding is added to account for movement/lag.
      Parameters:
      pos - The position being range-checked.
      padding - Extra validation distance.
      Returns:
      If the player can interact with this location.
    • isCloseEnough

      default boolean isCloseEnough(Entity entity, double dist)
      Utility check to see if the player is close enough to a target entity. Uses "eye-to-closest-corner" checks.
      Parameters:
      entity - The entity being checked against
      dist - The max distance allowed
      Returns:
      If the eye-to-center distance between this player and the passed entity is less than dist.
      Implementation Note:
      This method inflates the bounding box by the pick radius, which differs from vanilla. But vanilla doesn't use the pick radius, the only entity with > 0 is AbstractHurtingProjectile.
    • openMenu

      default OptionalInt openMenu(MenuProvider menuProvider, BlockPos pos)
      Request to open a GUI on the client, from the server

      Refer to IMenuTypeExtension.create(IContainerFactory) for how to provide a function to consume these GUI requests on the client.

      Parameters:
      menuProvider - A supplier of container properties including the registry name of the container
      pos - A block pos, which will be encoded into the additional data for this request
    • openMenu

      default OptionalInt openMenu(MenuProvider menuProvider, Consumer<FriendlyByteBuf> extraDataWriter)
      Request to open a GUI on the client, from the server

      Refer to IMenuTypeExtension.create(IContainerFactory) for how to provide a function to consume these GUI requests on the client.

      The maximum size for #extraDataWriter is 32600 bytes.

      Parameters:
      menuProvider - A supplier of container properties including the registry name of the container
      extraDataWriter - Consumer to write any additional data the GUI needs
      Returns:
      The window ID of the opened GUI, or empty if the GUI could not be opened