Class AbstractPersistentEntityHack<T extends net.minecraft.world.entity.Entity>

java.lang.Object
me.desht.pneumaticcraft.api.pneumatic_armor.hacking.AbstractPersistentEntityHack<T>
Type Parameters:
T - entity class
All Implemented Interfaces:
IHackableEntity<T>
Direct Known Subclasses:
HackableBlaze, HackableEnderman, HackableGhast, HackableGuardian, HackableShulker

public abstract class AbstractPersistentEntityHack<T extends net.minecraft.world.entity.Entity> extends Object implements IHackableEntity<T>
Convenience base class for hacks which are added as a persistent object to an entity's hack list. Such a hack will be ticked each client & server tick until the entity dies, or until the hack's IHackableEntity.afterHackTick(Entity) method returns false.
  • Constructor Details

  • Method Details

    • canHack

      public boolean canHack(net.minecraft.world.entity.Entity entity, net.minecraft.world.entity.player.Player player)
      Description copied from interface: IHackableEntity
      Returning true will allow the player to hack this entity. This can be used to only allow hacking under certain conditions. Default implementation just checks the entity's class is appropriate and the entity is alive, but this can be overridden to add extract checks. Just be sure to call this super method in your overridden method.
      Specified by:
      canHack in interface IHackableEntity<T extends net.minecraft.world.entity.Entity>
      Parameters:
      entity - the potential hacking target
      player - the player who is potentially hacking the target entity
    • addHackInfo

      public void addHackInfo(T entity, List<net.minecraft.network.chat.Component> curInfo, net.minecraft.world.entity.player.Player player)
      Description copied from interface: IHackableEntity
      Add info that is displayed on the entity tracker panel, describing what the hack would do to the entity. This is only called if IHackableEntity.canHack(Entity, Player) returned true. Keep this message short; one short phrase is enough.
      Specified by:
      addHackInfo in interface IHackableEntity<T extends net.minecraft.world.entity.Entity>
      Parameters:
      entity - the potential hack target
      curInfo - a text component list to append info to
      player - the player who is potentially hacking the target entity
    • addPostHackInfo

      public void addPostHackInfo(T entity, List<net.minecraft.network.chat.Component> curInfo, net.minecraft.world.entity.player.Player player)
      Description copied from interface: IHackableEntity
      Add info that is displayed on the entity tracker panel, describing what the hack has done to the entity. This is displayed for a second or so after the hack completes.
      Specified by:
      addPostHackInfo in interface IHackableEntity<T extends net.minecraft.world.entity.Entity>
      Parameters:
      entity - the hacked target
      curInfo - a text component list to append info to
      player - the player who has hacked the entity
    • getHackTime

      public int getHackTime(T entity, net.minecraft.world.entity.player.Player player)
      Description copied from interface: IHackableEntity
      Return the time it takes to hack this entity in ticks. Most builtin PneumaticCraft hacks use a time of 60 ticks, but for more powerful hacks, a longer required hacking time is suggested.
      Specified by:
      getHackTime in interface IHackableEntity<T extends net.minecraft.world.entity.Entity>
      Parameters:
      entity - the potential hack target
      player - the player who is potentially hacking the target entity
    • onHackFinished

      public void onHackFinished(T entity, net.minecraft.world.entity.player.Player player)
      Description copied from interface: IHackableEntity
      Called when a player successfully hacks an entity; basically getHackTime(Entity) ticks after the hack was initiated.
      Specified by:
      onHackFinished in interface IHackableEntity<T extends net.minecraft.world.entity.Entity>
      Parameters:
      entity - the hacked entity
      player - the player who has hacked the entity
    • afterHackTick

      public boolean afterHackTick(T entity)
      Description copied from interface: IHackableEntity
      Called every tick after the hack completed. Return false for one-shot hacks, or true to keep this hack ticking. The majority of hacks are one-shot; see also AbstractPersistentEntityHack for a class to use for persistent hacks.

      Dead or otherwise removed entities will automatically be removed from the after-hack tick list.

      Specified by:
      afterHackTick in interface IHackableEntity<T extends net.minecraft.world.entity.Entity>
      Parameters:
      entity - the hacked entity
      Returns:
      true to keep having this method called each tick for the entity, false to stop ticking
    • hasPersistentHack

      public static <T extends net.minecraft.world.entity.Entity> boolean hasPersistentHack(T entity, Class<? extends AbstractPersistentEntityHack<T>> cls)
      Convenience method to check if an entity has a specific persisting hack
      Type Parameters:
      T - entity type
      Parameters:
      entity - the entity to check
      cls - class of the hack to check for
      Returns:
      true if the entity has been hacked, false otherwise