Class CitizensNPC

java.lang.Object
com.ranull.graves.manager.EntityDataManager
com.ranull.graves.integration.CitizensNPC

public final class CitizensNPC extends EntityDataManager
Manages NPC interactions and corpse creation/removal related to player graves using Citizens2. Utilizes reflection to remain compatible across multiple Citizens versions.
  • Field Details

    • plugin

      private final Graves plugin
    • citizensNPCInteractListener

      private final CitizensNPCInteractListener citizensNPCInteractListener
    • npcClass

      private final Class<?> npcClass
    • skinTraitClass

      private final Class<?> skinTraitClass
    • getNPCRegistryMethod

      private final Method getNPCRegistryMethod
    • createNPCMethod

      private final Method createNPCMethod
    • spawnMethod

      private final Method spawnMethod
    • dataMethod

      private final Method dataMethod
    • getOrAddTraitMethod

      private final Method getOrAddTraitMethod
    • destroyMethod

      private final Method destroyMethod
    • deregisterMethod

      private final Method deregisterMethod
    • nmsRemoveMethod

      private final Method nmsRemoveMethod
  • Constructor Details

    • CitizensNPC

      public CitizensNPC(Graves plugin)
      Constructs a new CitizensNPC instance with the specified Graves plugin.
      Parameters:
      plugin - The main Graves plugin instance.
  • Method Details

    • findClass

      private Class<?> findClass(String[] names, ClassLoader loader)
    • registerListeners

      public void registerListeners()
      Registers the NPC interaction listeners.
    • unregisterListeners

      public void unregisterListeners()
    • createCorpses

      public void createCorpses()
      Creates NPC corpses based on the cached entity data.
    • createCorpse

      public void createCorpse(org.bukkit.Location location, Grave grave)
      Creates a new NPC corpse at the specified location with the given grave data.
      Parameters:
      location - The location to spawn the NPC.
      grave - The grave data for the NPC.
    • createCorpse

      public void createCorpse(UUID uuid, org.bukkit.Location location, Grave grave, boolean createEntityData)
      Creates a new NPC corpse with a specific UUID at the given location using the provided grave data.
      Parameters:
      uuid - The UUID for the NPC.
      location - The location to spawn the NPC.
      grave - The grave data for the NPC.
      createEntityData - Whether to create entity data for the NPC.
    • removeCorpse

      public void removeCorpse(Grave grave)
      Removes the NPC corpse for the given grave.
    • removeCorpse

      public void removeCorpse(EntityData entityData)
      Removes a specific corpse entity and its data.
    • removeCorpse

      public void removeCorpse(Map<EntityData,Object> entityDataMap)
      Bulk removal using reflection.
    • getNPCNameFromLocation

      private String getNPCNameFromLocation(org.bukkit.Location location)
    • getEntityDataNPCMap

      private Map<EntityData,Object> getEntityDataNPCMap(List<EntityData> list)
      Finds all matching EntityData and NPCs.
    • getNPCByName

      private Object getNPCByName(String name)
      Locates an NPC by name via registry iteration.
    • getNPCCorpse

      public boolean getNPCCorpse(Grave grave)
      Checks if a corpse exists for the grave.