Placeholders
Les placeholders SquidCore sont une extension à ceux déjà introduit par PlaceholderAPI
Différence
Les placeholders SquidCore peuvent supporter autre chose que des String (qui n'est pas le cas de PAPI)
Context optionnel
Le contexte (en l'occurrence (Offline)Player dans PAPI) n'est pas obligatoire dans SquidCore et il peut être de n'importe quel type
Création
La création se fait via une des classes présente dans SquidCore, ces dernières suivent tous la même logique
Ils donnent une chaîne de caractères et un context optionnel, vous leur donnez un objet en retour.
Les différentes classes
Les classes avec context
Les classes avec context ont un paramètre en plus : @Nullable Objet context
(Context)PlaceholderRequestable
Le requestable est à la base de tout placeholder et chacune des classes de placeholder.
Il donne l'accès le plus brut et ne contrôle aucun de vos retours
(Context)PlaceholderTraversable
Le traversable est une extension au requestable, il crée un objet PlaceholderTraverser contenant le paramètre divisé à chaque espace.
Il contrôle aussi les retours, appelant automatiquement les objets retournés si ils sont d'une classe de placeholder
PlaceholderTraverser
L'objet PlaceholderTraverser contient plusieurs méthodes: next: permet d'obtenir la prochaine chaine de caractère dans la liste et avance la position de 1peek: permet d'obtenir la prochain chaîne de caractère dans la liste sans incrémenter la positioncollapseRemaining(char delimiter): permet d'obtenir toute les prochaine chaîne de caractère délimité par le délimiteur donné
Appel
Les placeholders peuvent être appelé à l'aide d'un PlaceholderRequestableMap
PlaceholderRequestableMap
Ce dernier est une map contenant les placeholders que vous lui donnez, il peut être créé à l'aide d'une autre map, copiant son contenu
À la création, il est également possible de lui passer un context qui sera automatiquement passé aux placeholders
Méthodes
registerPlaceholder: permet d'enregistrer un placeholderregisterMap: permet de copier le contenu actuel d'une autre mapregisterChildren: permet d'enregistrer une map comme 'enfant' de la map actuel, elle sera appelé si la map ne contient pas le placeholder demandédirectRegister: permet d'enregistrer une valeur a retourné pour un placeholder xunregisterPlaceholder: permet d'enlever un placeholder via son namespacesetFallbackRequestable: permet de définir le placeholder à appelé si aucun autre n'est trouvé
Parsing des placeholders
Les placeholders peuvent être parse de manière générale à l'aide de la méthode PlaceholderWrappers.wrap(objet, class)
Ce dernier retourne un PlaceholderWrapper qui peut être appelé avec une Function<String, Object> (la map compte comme une fonction !)
Certaines classes peuvent aussi être créées via leur constructeur, liste non exhaustive :
ComponentWrapper
ComponentWrapperList
StringWrapper
StringWrapperList