Class PlayerHeadUtil

java.lang.Object
dev.cwhead.GravesX.util.PlayerHeadUtil

public final class PlayerHeadUtil extends Object
Compact utilities for snapshotting player head (skull) blocks across versions.
  • Field Details

    • MARKER

      public static final String MARKER
      Delimiter used to append a GXHEAD JSON payload to replace_data.
      See Also:
  • Constructor Details

    • PlayerHeadUtil

      private PlayerHeadUtil()
  • Method Details

    • appendFromBlock

      public static String appendFromBlock(org.bukkit.block.Block block, String existingReplaceData)
      Appends a head snapshot (if block is a head) to existingReplaceData.
      Parameters:
      block - the block to read
      existingReplaceData - prior replace_data (nullable)
      Returns:
      replace_data with MARKER+JSON appended when applicable
    • parseFromReplaceData

      public static Optional<PlayerHeadUtil.HeadPayload> parseFromReplaceData(String replaceData)
      Parses the last GXHEAD payload from replaceData.
      Parameters:
      replaceData - string containing zero or more payloads
      Returns:
      last PlayerHeadUtil.HeadPayload, if present
    • extract

      public static PlayerHeadUtil.HeadPayload extract(org.bukkit.block.Block block)
      Extracts snapshot data from a skull block.
      Parameters:
      block - block to inspect
      Returns:
      payload or null if not a head
    • isHead

      private static boolean isHead(org.bukkit.block.Block b)
      Returns:
      true if block is any supported head material.
    • safeMatName

      private static String safeMatName(org.bukkit.block.Block b)
      Returns material name or null.
    • empty

      private static boolean empty(String s)
      Returns:
      true if s is null/empty.
    • getBlockDataString

      private static String getBlockDataString(org.bukkit.block.Block block)
      Gets BlockData#getAsString(true) on 1.13+, else null.
    • readMountAndFaces

      private static PlayerHeadUtil.MountFace readMountAndFaces(org.bukkit.block.Block block)
      Reads mount and facing via 1.13+ APIs or legacy material data.
    • cardinal

      private static String cardinal(String face)
      Keeps only cardinal directions.
    • tryLoad

      private static Class<?> tryLoad(String name)
      Loads a class or returns null.
    • getTextures

      private static Collection<?> getTextures(Object propertyMap)
      Returns PropertyMap["textures"] as a collection when present.
    • callString

      private static String callString(Object target, String modern, String legacy)
      Invokes modern or fallback legacy string accessor.
    • tryReadCustomNameJson

      private static String tryReadCustomNameJson(org.bukkit.block.Skull skull)
      Reads custom name as JSON (Adventure if available; otherwise wraps legacy name).
    • toJson

      private static String toJson(PlayerHeadUtil.HeadPayload p)
      Serializes a payload to compact JSON.
    • writeInt

      private static void writeInt(StringBuilder sb, String k, int v, boolean always)
      Writes an int field.
    • writeStr

      private static void writeStr(StringBuilder sb, String k, String v)
      Writes a string field if non-null.
    • escape

      private static String escape(String s)
      Escapes backslashes and quotes for JSON.
    • parseJson

      private static PlayerHeadUtil.HeadPayload parseJson(String json)
      Parses the compact JSON back into PlayerHeadUtil.HeadPayload.
    • unquote

      private static String unquote(String s)
      Removes surrounding quotes and unescapes JSON string.