Class CacheManager

java.lang.Object
com.ranull.graves.manager.CacheManager

public class CacheManager extends Object
  • Constructor Details

    • CacheManager

      public CacheManager()
      Constructs a new CacheManager with initialized maps.

      The constructor initializes all the maps used for caching data related to graves, chunks, locations, and items

  • Method Details

    • getGraveMap

      public Map<UUID,Grave> getGraveMap()
      Returns the map of grave UUIDs to their corresponding Grave objects.
      Returns:
      the map of graves
    • addRightClickedBlock

      public void addRightClickedBlock(String playerName, org.bukkit.Location location)
      Adds a right-clicked block location for a specified player.
      Parameters:
      playerName - the name of the player
      location - the location of the right-clicked block
    • getRightClickedBlock

      public org.bukkit.Location getRightClickedBlock(String playerName)
      Retrieves the location of the right-clicked block for a specified player.
      Parameters:
      playerName - the name of the player
      Returns:
      the location of the right-clicked block, or null if not found
    • removeRightClickedBlock

      public void removeRightClickedBlock(String playerName, org.bukkit.Location location)
      Removes the right-clicked block location for a specified player.
      Parameters:
      playerName - the name of the player
      location - the location of the right-clicked block
    • hasRightClickedBlock

      public boolean hasRightClickedBlock(String playerName)
      Checks if a right-clicked block location exists for a specified player.
      Parameters:
      playerName - the name of the player
      Returns:
      true if the right-clicked block location exists, false otherwise
    • getChunkMap

      public Map<String,ChunkData> getChunkMap()
      Returns the map of chunk identifiers to their corresponding ChunkData objects.
      Returns:
      the map of chunk data
    • getLastLocationMap

      public Map<UUID,org.bukkit.Location> getLastLocationMap()
      Returns the map of entity UUIDs to their last known Location.
      Returns:
      the map of last known locations
    • getRemovedItemStackMap

      public Map<UUID,List<org.bukkit.inventory.ItemStack>> getRemovedItemStackMap()
      Returns the map of entity UUIDs to lists of removed ItemStack objects.
      Returns:
      the map of removed item stacks
    • startViewingGrave

      public boolean startViewingGrave(UUID graveUUID, UUID viewerUUID)
      Marks a grave as currently being viewed by the given player.

      If the grave is already being viewed by someone else, this will NOT overwrite the current viewer. Use canAccessGrave(UUID, UUID) / isGraveBeingViewed(UUID) to check first.

      Parameters:
      graveUUID - the grave UUID
      viewerUUID - the player's UUID
      Returns:
      true if the viewer was set (lock acquired), false if someone else already holds it
    • stopViewingGrave

      public boolean stopViewingGrave(UUID graveUUID, UUID viewerUUID)
      Clears the viewer lock for a grave if the given player is the current viewer.
      Parameters:
      graveUUID - the grave UUID
      viewerUUID - the player's UUID
      Returns:
      true if the lock was cleared, false if it was held by someone else or not set
    • clearGraveViewer

      public void clearGraveViewer(UUID graveUUID)
      Force-clears the viewer lock for a grave (regardless of who is viewing). Useful for cleanup if a viewer disconnects unexpectedly.
      Parameters:
      graveUUID - the grave UUID
    • clearAllGraveViewersFor

      public int clearAllGraveViewersFor(UUID viewerUUID)
      Clears any grave-viewer locks held by the specified player. Useful to call on PlayerQuitEvent.
      Parameters:
      viewerUUID - the player's UUID
      Returns:
      number of locks removed
    • isGraveBeingViewed

      public boolean isGraveBeingViewed(UUID graveUUID)
      Checks whether a grave is currently being viewed by someone.
      Parameters:
      graveUUID - the grave UUID
      Returns:
      true if the grave is being viewed, otherwise false
    • getGraveViewer

      public UUID getGraveViewer(UUID graveUUID)
      Gets the UUID of the player currently viewing a grave, or null if none.
      Parameters:
      graveUUID - the grave UUID
      Returns:
      the viewer UUID, or null
    • canAccessGrave

      public boolean canAccessGrave(UUID graveUUID, UUID viewerUUID)
      Checks if a player can access a grave right now.

      Access is allowed if the grave is not being viewed, or if it is being viewed by the same player.

      Parameters:
      graveUUID - the grave UUID
      viewerUUID - the player's UUID
      Returns:
      true if access is allowed, otherwise false
    • getOldestGrave

      public Grave getOldestGrave(UUID playerUUID)
      Returns the oldest grave for a given player.
      Parameters:
      playerUUID - The UUID of the player whose graves to consider.
      Returns:
      The oldest grave for the specified player.