Home›Java›Mods›KSPlaceholder
KSPlaceholder
[​IMG]

KSPlaceholder es un motor de placeholders diseñado para servidores complejos donde múltiples plugins exponen tokens (%kseco_saldo%, %ksprotect_region%, %kschunk_progreso%, etc.). Ofrece un registro por namespace con separación clara entre claves exactas y prefijos dinámicos, caché por token con TTL, y un puente automático a PlaceholderAPI para no obligar a los usuarios a instalar los dos.

Características
Instalación
  1. Descarga KSPlaceholder-1.0.0.jar.
  2. Coloca el JAR en plugins/.
  3. Coloca KSCore.jar.
  4. Opcional: PlaceholderAPI.jar — KSPlaceholder se autopuentea.
  5. Arranca el servidor.
Los plugins del ecosistema (KsEconomia, KSProtect, KSChunk, KSBoard) detectan automáticamente KSPlaceholder al arrancar y registran sus expansiones.

Requisitos
Requisito Versión mínima
Servidor Paper 1.21+ (api-version 26.2)
Java 21
KSCore 1.0-SNAPSHOT o superior
Dependencias
Plugin Tipo Rol
KSCore Requerida Framework
PlaceholderAPI Opcional Puente bidireccional automático
Comandos
Todos requieren permiso ksp.admin.

Comando Descripción
/ksp list Namespaces registrados con conteo de tokens
/ksp info <namespace> Detalles: claves exactas, prefijos dinámicos, fallback, TTL de caché
/ksp parse <texto> Resuelve el texto sobre ti (solo jugador)
/ksp test <jugador> <texto> Resuelve sobre un jugador online
/ksp reload Recarga config y catálogos internos
/ksp cache stats [ns] Estadísticas de la caché (global o por namespace)
/ksp cache clear [ns] Vacía la caché
Aliases: /ksplaceholder

Permisos
Permiso Default Descripción
ksp.admin op Todos los comandos administrativos
Uso desde otro plugin
Añade la dependencia soft en tu paper-plugin.yml:

Code (YAML):
dependencies:
  server
:
    KSPlaceholder
:
      load
: BEFORE
      required
: false
Y en tu build.gradle.kts
:

compileOnly ( "studio.kuraky:ksplaceholder-api:1.0.0" )

La API vive en un módulo independiente. Otros plugins pueden compilar contra ella sin arrastrar KSCore.

Registrar una expansión

Code (Java):
import studio.kuraky.ksPlaceholder.api.KSP ;
import java.time.Duration ;
KSP. expansion ( "miplugin" )
    // Clave exacta: %miplugin_nombre%
   . add ( "nombre",   p -> "Hola" )
    // Otra clave exacta: %miplugin_nivel%
   . add ( "nivel",    p -> nivelDe (p ) )
    // Prefijo dinámico: %miplugin_top:5%
   . dynamic ( "top",   (p, arg ) -> top ( Integer. parseInt (arg ) ) )
    // Fallback si nada coincide
   . fallback ( (p, params ) -> "?" )
    // Caché con TTL
   . cache (Duration. ofSeconds ( 3 ) )
   . register ( ) ;
 
Resolver placeholders

Code (Java):
// Sustituir tokens en un texto
String linea = KSP. parse (player, "Bienvenido %player_name% — nivel %miplugin_nivel%" ) ;
// Lista de líneas
List <String > lore = KSP. parse (player, List. of ( "Línea 1", "Nivel: %miplugin_nivel%" ) ) ;
// Un token aislado
Object valor = KSP. value (player, "miplugin", "top:1" ) ;
Contrato del resolver

Code (Java):
@FunctionalInterface
public interface Placeholder {
    Object resolver (Player jugador, String params ) ;
}
 
Reglas:

Orden de resolución
Cuando el motor ve %namespace_algo%:

  1. Busca namespace en el registro.
  2. Intenta clave exacta algo (registrada con .add).
  3. Si no, prefijo dinámico más largo que coincida (registrado con .dynamic).
  4. Si tampoco, .fallback de la expansión.
  5. Si nadie responde, deja %namespace_algo% en el texto — otro motor (como PAPI) puede intentarlo.
Puente PlaceholderAPI
Si PlaceholderAPI está cargado:

Un plugin que dependa de KSP puede usar el token %luckperms_primary_group% sin importarle si viene de PAPI o de una expansión KS. El puente es transparente.

Debug
Situaciones típicas:

"Mi token %miplugin_x% no se resuelve".

/ksp list
/ksp info miplugin
/ksp parse "%miplugin_x%"
Comprueba que:

"El valor está desactualizado".

/ksp cache clear miplugin
Fuerza recomputación. Si el problema persiste, el TTL puede ser demasiado alto:

.cache(Duration.ofSeconds(1)) // en lugar de 30 o similar
Rendimiento
Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

KSPlaceholder is a free Minecraft Java mod. Compatible with Minecraft 26.2. Downloaded 5 times (via Spigot). Download it and open it directly in the game.

Explore more