Orden de carga
Si usas Multiverse, debe cargar sus mundos antes de que PTC los resuelva. Las operaciones de bloques siguen siendo de PTC y se ejecutan por Bukkit/Paper; Multiverse no aplica la copia ni la restauración.
Todo lo necesario para desplegar Protect The Core: qué exige Paper, qué dependencias son opcionales, cómo se compone el plugin, dónde vive cada archivo y qué valores conviene revisar antes de abrir el servidor.
El proyecto se compila contra Paper 26.1.2 build 74 y Java 25. La versión exacta de tu servidor debe ser compatible con esa API.
| Elemento | Valor | Notas |
|---|---|---|
| Nombre del plugin | ProtectTheCore | Comando principal /ptc; alias /protectthecore y /ptcmd. |
| Versión | 2.0.1-SNAPSHOT | La consola muestra edición, versión y nombre del archivo al arrancar. |
| Plataforma | Paper 26.1.2 o superior | api-version: '26.1'. No está pensado para Spigot sin Paper API. |
| Java | 25 | maven.compiler.release=25; una JVM anterior no carga las clases. |
| Ediciones | Free y Premium | Se instala una sola. Comparten módulos, comandos y configuración. |
| JAR Free | ProtectTheCore-Free-2.0.1-SNAPSHOT.jar | Salida en target/free/. |
| JAR Premium | ProtectTheCore-Premium-2.0.1-SNAPSHOT.jar | Salida en target/premium/. |
| Carpeta de datos | plugins/ProtectTheCore/ | Migra datos de Protect The Core/ y Protect-The-Core/ sin sobrescribir. |
| Almacenamiento | SQLite (por defecto) o MySQL / MariaDB | Los controladores JDBC viajan dentro del JAR. |
| Idioma | Español | El antiguo selector language fue retirado; se usan los catálogos españoles. |
# Compilación desde el repositorio (Maven Wrapper incluido) .\mvnw.cmd clean verify -Pfree .\mvnw.cmd clean verify -Ppremium # Instalación: detén el servidor, copia UN solo JAR y arranca plugins/ └─ ProtectTheCore-Premium-2.0.1-SNAPSHOT.jar
plugin.yml declara softdepend: [Multiverse-Core, LuckPerms, Vault, PlaceholderAPI]. Ninguna de esas cuatro es obligatoria; Paper y Java sí.
| Dependencia | Tipo | Versión de compilación | Para qué sirve |
|---|---|---|---|
| Paper | Obligatoria | API 26.1.2 build 74 | Plataforma del plugin: eventos, scoreboard, mundos, tareas y entidades. |
| Java | Obligatoria | 25 | Runtime y compilación. Paper 26.1 también requiere una JVM moderna. |
| Multiverse-Core | Opcional | 5.8.1 | Administración de mundos ya cargados. PTC guarda, analiza y restaura con Bukkit/Paper y su propio generador de mundo; no lo necesita para esos flujos. |
| LuckPerms | Opcional, recomendada | Integración por API de permisos | Grupos, prefijos, pesos y nodos ptc.*. Sin LuckPerms, PTC usa Vault/PAPI como respaldo. |
| Vault | Opcional | Integración de chat/permisos | Respaldo para prefijos y servicio de chat cuando no hay una fuente más específica. |
| PlaceholderAPI | Opcional, recomendada | 2.11.6 | Placeholders externos en header/footer, nametags y scoreboard; PTC registra su expansión %ptc_*%. |
| SQLite JDBC | Incluida | 3.49.1.0 | Controlador embebido para el almacenamiento local por defecto. |
| MySQL Connector/J | Incluida | 9.3.0 | Controlador embebido para MySQL y MariaDB (protocolo compatible). |
| Tebex | Externa, opcional | Online Commands / RCON | Entrega Coins con /ptcdeliver; no es un plugin de Bukkit. |
Si usas Multiverse, debe cargar sus mundos antes de que PTC los resuelva. Las operaciones de bloques siguen siendo de PTC y se ejecutan por Bukkit/Paper; Multiverse no aplica la copia ni la restauración.
PTC lee primero PlaceholderAPI, después LuckPerms y por último Vault. PTC nunca muestra sus nombres de nivel VIP: el rango visible es el prefijo externo del servidor.
Los OP conservan ptc.* y ven la etiqueta DevOP. La consola indica al arrancar qué proveedor se detectó. Para producción se recomienda LuckPerms.
Plugins que sustituyan scoreboards, equipos, chat, nametags, mundos o eventos de bloques pueden competir por los mismos recursos. PTC reaplica la visibilidad de equipos cada tick, pero no puede impedir que otro plugin reemplace el scoreboard completo.
Un solo JAR, cuatro módulos jugables y servicios compartidos. Los módulos no son plugins independientes: comparten economía, base de datos y ciclo de vida.
| Capa / módulo | Paquete principal | Responsabilidad |
|---|---|---|
| PTC Games | modules.games.arena | Arenas, equipos, núcleos, regiones, recursos regenerables, tienda, kits, encantamientos, granjas y tareas de partida. |
| PTC-Clanes | modules.clans | Clanes, roles, invitaciones, solicitudes, banco, chat y límite de miembros. |
| PCW-Core | modules.pcw | Guerras de 2-15 clanes, salas, alineaciones, desafíos, apariciones y resultado. |
| Parkour-Core | modules.parkour | Cursos por mapa, placas de inicio/meta, checkpoints, cronómetro, récords, hologramas y premios. |
| Servicios compartidos | modules.shared.economy, database | Una única economía de Coins y persistencia común para saldos, niveles, clanes, PCW y Parkour. |
| Presentación | presentation | TAB, scoreboard, belowname, anuncios por contexto, lobby central y cosméticos. |
| Edición de mapas | editor, resources | Varita, selección de límites, análisis de bloques, .ptcmap v3, guardado, restauración y reparación por lotes. |
| Juego y protección | listeners, combat, victory, stats, levels | Protección de bloques, PvP, núcleos, muertes, recompensas, estadísticas, XP y condiciones de victoria. |
| Economía y tienda | shop, kits, enchant, special, tebex | Catálogo, compras, kits, encantamientos, objetos especiales y entregas externas. |
| Integraciones y red | integration, network | PlaceholderAPI, LuckPerms, Vault, Multiverse y mensajería BungeeCord para modo multiserver. |
Todo se inicia y se detiene con ProtectTheCore.java. No hay módulos que se carguen por separado ni JAR adicionales para PCW, Parkour o clanes.
PTC Games, PCW, Parkour, misiones y niveles usan la misma instancia de Coins y la misma base de datos. Un saldo o multiplicador vale en todos los modos.
Los recursos se empaquetan en modules/<módulo>/ y al instalar se separan en carpetas por módulo dentro de plugins/ProtectTheCore/.
Los datos de carpetas heredadas y los formatos antiguos se copian o migran sin sobrescribir archivos existentes. Nunca borres una carpeta antigua hasta confirmar la migración.
La base jugable es la misma. Premium añade presentación y cosméticos, y usa lotes de procesamiento mayores por defecto.
| Función | Free | Premium |
|---|---|---|
| PTC Games, clanes, PCW y Parkour | Sí | Sí |
| TAB, belowname, scoreboard y anuncios por contexto | Sí | Sí |
| Tienda, kits, encantamientos, mesas y granjas | Sí | Sí |
Copias .ptcmap v3 y reparación | Sí | Sí |
| Cosméticos del lobby (10 estelas) | No | Sí |
| Bienvenida pública y mensajes de conexión/salida | No | Sí |
| Anuncio promocional de Free | Sí, configurable | No |
| Lote de análisis por defecto | 4096 bloques/tick | 8192 bloques/tick |
| Lote de guardado/restauración por defecto | 4096 / 8192 | 8192 / 8192 |
Los archivos se separan por módulo. Esta es la distribución real que debes respaldar y editar.
plugins/ProtectTheCore/ ├─ config.yml configuración global ├─ mensajes_es.yml mensajes, prefijo, ayuda y anuncios ├─ chat_es.yml formato del chat ├─ lobby-progress.yml misiones, recompensas y rachas del lobby ├─ PTC-Games/ │ ├─ arenas.yml arenas, equipos, núcleos, regiones, mesas │ ├─ shop.yml catálogo de la tienda │ ├─ kits.yml kits iniciales │ ├─ enchants.yml niveles y efectos de encantamiento │ ├─ special_items.yml objetos especiales de la tienda │ ├─ levels.yml progresión de nivel │ ├─ tab_es.yml lista TAB y belowname │ └─ scoreboard_es.yml sidebar por contexto ├─ PTC-Clanes/ │ ├─ config.yml │ └─ mensajes_es.yml ├─ PCW-Core/ │ ├─ config.yml │ └─ mensajes_es.yml ├─ Parkour-Core/ │ ├─ config.yml │ └─ mensajes_es.yml ├─ Shared/ │ └─ ptc_database.db base SQLite cuando storage.type = SQLITE └─ Mapas/ └─ <arena>.ptcmap copia base de cada arena
config.yml, mensajes_es.yml y chat_es.yml viven en la raíz. No los muevas: el plugin los busca ahí en cada arranque y recarga.
Arenas, tienda, kits, encantamientos, objetos especiales, niveles, TAB y scoreboard están bajo PTC-Games/. Las rutas antiguas en la raíz se migran si el archivo de destino no existe.
PTC puede preparar un mundo ptc_<arena> para aislar la copia. La copia .ptcmap contiene solo el cubo seleccionado, nunca la carpeta completa del mundo.
Con SQLite, el archivo vive en Shared/ptc_database.db. Con MySQL/MariaDB, los datos están en el servidor externo configurado en storage.*.
messages.yml, chat.yml, tab.yml y scoreboard.yml se conservan y se migran como personalizaciones cuando el archivo español de destino aún no existía.Valores iniciales de config.yml. Edita el archivo generado en tu servidor y aplica los cambios con /ptc reload cuando la función lo permita.
| Clave | Inicial | Descripción |
|---|---|---|
network.enabled | false | Activa el modo multiserver con BungeeCord. En un servidor único déjalo en false. |
network.role | standalone | standalone, game o lobby. Define el papel de esta instancia en la red. |
network.server-id | local-ptc | Identificador único de la instancia; no lo repitas entre servidores. |
network.proxy-channel | BungeeCord | Canal de mensajería del proxy. |
network.lobby-server | Lobby | Servidor al que se envía al jugador al terminar o salir en modo red. |
defaults.min-players / max-players | 16 / 32 | Valores de referencia para nuevas arenas; /ptc create calcula mínimos y máximos según los equipos. |
defaults.max-per-team | 8 | Jugadores recomendados por equipo; el máximo global de la arena se puede ampliar en /ptc arena config. |
defaults.core-health | 10 | Vidas iniciales del núcleo de diamante. |
defaults.resource-regeneration-seconds | 900 | Regeneración de minerales y madera: 15 minutos. Se puede ajustar por arena con /ptc setregen. |
defaults.countdown-seconds | 60 | Cuenta atrás inicial de la arena. |
defaults.allow-late-join / allow-spectators | false / true | Entrada tardía y espectadores; la entrada tardía también requiere el permiso ptc.perk.late-join. |
| Clave | Inicial | Descripción |
|---|---|---|
storage.type | SQLITE | SQLITE, MYSQL o MARIADB. MariaDB usa el protocolo de MySQL. |
storage.host / port / database | 127.0.0.1 / 3306 / ptc | Conexión MySQL/MariaDB. No publiques estos datos ni la contraseña. |
storage.username / password | ptc_user / CHANGE_ME | Crea un usuario exclusivo con permisos solo sobre la base de PTC. |
storage.save-interval-seconds | 30 | Autoguardado periódico de Coins, niveles y estadísticas. |
economy.currency-name / currency-symbol | Coins / ⛃ | Nombre y símbolo visibles en menús y mensajes. |
economy.kill-reward / core-hit-reward / core-final-bonus | 1 / 1 / 10 | Recompensas base por baja, golpe efectivo y destrucción final. |
economy.win-reward / mvp-reward | 10 / 3 | Victoria PTC y MVP. |
economy.solo-survivor-win-reward | 3 | Victoria reducida si queda un solo jugador activo. |
economy.kill-streak-reward-every / kill-streak-reward | 5 / 5 | Cada 5 asesinatos seguidos se pagan 5 Coins adicionales. |
economy.max-multiplier | 250.0 | Tope del multiplicador temporal de /ptc multicoins. |
drops.arena-pvp-cleanup-seconds | 180 | Tiempo antes de eliminar objetos caídos por muertes PvP dentro de una arena. |
| Clave | Inicial | Descripción |
|---|---|---|
arena-map.blocks-per-tick | 4096 | Lote del analizador en Free. |
arena-map.premium-blocks-per-tick | 8192 | Lote del analizador en Premium; se acota a 8192. |
arena-map.max-millis-per-tick | 8 | Presupuesto por tick para guardar y reconstruir (1-50 ms). |
arena-map.analysis-max-millis-per-tick | 8 | Presupuesto del análisis; las secciones vacías se omiten. |
arena-map.selection-full-height | false | Si es true, la arena usa toda la altura del mundo. |
arena-map.selection-vertical-padding | 24 | Bloques arriba y abajo añadidos a los límites de la selección. |
arena-map.core-protection-radius / height | 8 / 5 | Zona automática protegida alrededor de cada núcleo. |
arena-map.team-spawn-protection-radius / height | 2 / 2 | Protección del spawn de equipo contra roturas, colocación y explosiones. |
arena-map.regenerable-materials / wood-materials | vacío | Materiales extra regenerables; los minerales y todos los troncos se detectan automáticamente. |
arena-restoration.blocks-per-tick | 8192 | Límite de restauración/reparación en Free. |
arena-restoration.premium-blocks-per-tick | 8192 | Límite de restauración/reparación en Premium; acotado a 8192. |
arena-restoration.save-blocks-per-tick / premium-save-… | 4096 / 8192 | Límite del guardado de copias por tick. |
arena-restoration.verify-after-restore | false | Segunda pasada completa opcional; cada bloque e inventario ya se verifica al aplicarse. |
arena-restoration.waiting-room-delay-seconds / waiting-room-lobby-delay-seconds | 3 / 3 | Traslado a la sala de espera y luego al lobby al terminar. |
arena-restoration.start-delay-seconds | 2 | Pausa tras evacuar el mapa antes de restaurar por lotes. |
| Clave | Inicial | Descripción |
|---|---|---|
farms.min-amount / max-amount | 5 / 10 | Rango aceptado por /ptc setfarmspawn. |
farms.check-interval-seconds | 5 | Revisión y reposición solo de los animales que faltan. |
farms.summary-message-cooldown-seconds | 30 | Evita repetir el aviso de reposición si matan animales seguidos. |
farms.adoption-radius-blocks | 16 | Radio para adoptar animales ya presentes en la granja. |
lobby.world | vacío | Mundo del lobby central; sin él no se emiten estelas ni se entregan objetos de lobby. |
lobby.items.* | ver archivo | Selector, cosméticos, recompensas, clanes y accesos de modo: material, ranura y activación. |
lobby.cosmetics.enabled | true | Desactiva todo el módulo de cosméticos sin borrar desbloqueos. |
lobby.cosmetics.interval-ticks / particles | 4 / 6 | Ritmo y cantidad de partículas de la estela. |
lobby.rewards.daily-login-coins | 5 | Coins de la recompensa diaria. |
lobby.missions.* | 3/5, 1/8, 1/10 | Objetivo y premio de misiones de bajas, núcleos y victorias. |
announcements.enabled | true | Activa la rotación de anuncios. |
announcements.interval-seconds | 300 | Ritmo global de respaldo. |
announcements.intervals.<contexto> | 300 | Ritmo propio de general, lobby, waiting, ptc, pcw y parkour; mínimo 60 y máximo 86400. |
announcements.use-prefix | false | Si es true, añade el prefijo PTC al anuncio. |
announcements.include-general-with-context | false | Evita duplicar el anuncio general cuando el contexto tiene el suyo. |
| Clave | Inicial | Descripción |
|---|---|---|
tebex.max-coins-per-delivery | 10000 | Máximo por entrega; protección anti-fraude. |
tebex.min-coins-per-delivery | 1 | Mínimo válido por entrega. |
tebex.rate-limit-count / rate-limit-window-hours | 5 / 1 | Máximo de entregas por jugador dentro de la ventana indicada. |
# Ejemplo de entrega Tebex por RCON / Online Commands:
/ptcdeliver {player} {transaction} coins_{amount} {amount}
# El comando requiere ptc.admin y usa la ventana anti-fraude de config.yml.
# Para jugadores desconectados, activa Offline Commands en Tebex.
CHANGE_ME no es una contraseña de producción. Usa RCON solo en una red de confianza y nunca compartas capturas con la clave.El lobby central es el punto de entrada; la sala de espera y los lobbies de Parkour son ubicaciones independientes.
/ptc setlobby. Los jugadores que conectan y quienes salen de una actividad vuelven a ese punto.config.yml, bajo lobby.items.* y waiting-room.items.*.mensajes_es.yml, personaliza server-welcome.lines, server-events.join y server-events.quit. Las plantillas aceptan %player_name%, %rank% y %clan%.- '&f ' se envían tal cual. El prefijo es opcional con announcements.use-prefix: true.announcements.intervals.general|lobby|waiting|ptc|pcw|parkour; si un contexto no tiene intervalo propio usa announcements.interval-seconds.premium-announcements.* se mantiene por compatibilidad; no vuelve exclusivos de Premium los anuncios por contexto.>>.commands.*, economy.*, stats.* y levels.* cubren las respuestas; help.titles.* y help.entries.* editan la ayuda paginada. Los marcadores se sustituyen al enviar y el archivo nunca se reescribe con valores de fábrica.PTC-Games/tab_es.yml define list-format por contexto, list-nick-color, nametag.contexts y las hasta tres filas de belowname. PTC-Games/scoreboard_es.yml guarda el sidebar.lobby:
items:
selector: {enabled: true, material: COMPASS, slot: 0}
cosmetics: {enabled: true, material: TOTEM_OF_UNDYING, slot: 2}
rewards: {enabled: true, material: WRITTEN_BOOK, slot: 4}
clans: {enabled: true, material: FIREWORK_ROCKET, slot: 8}
mode-ptc: {enabled: true, material: IRON_SWORD, slot: 11}
mode-pcw: {enabled: true, material: SHIELD, slot: 13}
mode-parkour: {enabled: true, material: RABBIT_FOOT, slot: 15}
cosmetics:
enabled: true
interval-ticks: 4
particles: 6
list:
heart:
material: POPPY
particle: HEART
effect: aura
permission: ptc.cosmetic.heart
price: 6500
flame:
material: FIRE_CHARGE
particle: FLAME
effect: fountain
permission: ptc.cosmetic.flame
price: 7000
# soul (spiral, 8000), note (wave, 8500), happy_villager (orbit, 7500),
# enchant (halo, 9000), portal (vortex, 10000), cherry (twirl, 11000),
# snow (burst, 12000) y totem (nova, 15000): diez precios distintos.
Añade una clave nueva bajo list y el menú del lobby crea la entrada con su permiso, efecto y precio; no hace falta recompilar. Un effect desconocido usa aura. El permiso y la compra son alternativas: con el nodo se equipa gratis; sin él se compra una vez con Coins y queda desbloqueado en la cuenta.
PTC expone nodos de permiso; la venta, cobro y duración dependen de LuckPerms y de la tienda que administre el servidor.
Se recomienda crear exactamente seis grupos en tu plugin de permisos, uno por nivel ptc.rank.vip-iron … ptc.rank.vip-amethyst, cada uno con su prefijo. Ejecuta /ptc rangos para ver la guía en el servidor y consulta la página de rangos. Ninguno viene activado como paquete de pago: configura precios, expiración, impuestos y términos por separado. Los nodos de cliente no deben incluir permisos administrativos.
ptc.rank.owner incluye ptc.arena.delete; ptc.rank.admin administra pero no elimina; ptc.rank.moderator repara y controla eventos; ptc.rank.helper observa y usa el chat de staff. Consulta Rangos staff.Las funciones principales tienen archivos dedicados; PTC no reescribe tus YAML al cargar ni al recargar.
arenas.yml, shop.yml, kits.yml, enchants.yml, special_items.yml, levels.yml, tab_es.yml y scoreboard_es.yml dentro de PTC-Games/.
Sus archivos de configuración y mensajes se guardan en PTC-Clanes/, PCW-Core/ y Parkour-Core/ dentro de la carpeta de datos del plugin.
PCW-Core/config.yml controla máximos de clanes/jugadores, partidas simultáneas, expiración de salas, fuego amigo, objetos iniciales y recompensa. Configura los spawns por arena con slots numerados de 1 a 15.
Parkour-Core/config.yml guarda cursos, mapas, puntos, lobby, premio de completado, cooldown, timeout, distancia de caída y XP por checkpoint. Los récords usan la persistencia compartida.
Coins, niveles, estadísticas y clanes se comparten entre modos. Haz una copia de la base de datos antes de migrar o actualizar.
/ptc reload recarga configuraciones; también existen recargas específicas de tienda, kits, encantamientos, PCW y Parkour. Los cambios estructurales de una arena requieren guardar la copia.
| Origen antiguo | Destino actual | Comportamiento |
|---|---|---|
plugins/Protect The Core/ y plugins/Protect-The-Core/ | plugins/ProtectTheCore/ | Copia no destructiva; no sobrescribe archivos existentes. |
messages.yml, chat.yml, tab.yml, scoreboard.yml | Archivos _es.yml | Se migran como personalización solo si el destino aún no existía; se conserva una copia. |
arenas.yml, shop.yml, kits.yml, enchants.yml | PTC-Games/ | Se mueven/copian al módulo de juegos en el primer arranque. |
Copias .ptcmap v2 | Formato v3 | Se siguen leyendo; al volver a guardar se actualizan solas. |
language en config.yml | Retirado | Se elimina la clave al cargar; los archivos antiguos no se borran. |
/ptc reload muestra exactamente lo guardado. Si falta una clave, el valor empaquetado se usa solo en memoria; las migraciones de versión pueden escribir una marca una vez en el arranque, nunca en cada recarga.Medidas concretas para evitar pérdida de datos y problemas de rendimiento.
Antes de cada actualización o edición de mapa, copia plugins/ProtectTheCore/, Mapas/, los mundos ptc_<arena> y la base de datos. Verifica que la copia se pueda restaurar, no solo que exista.
Usa la misma versión de Paper y los mismos plugins. Prueba una partida completa, restauración, permisos, economías y TAB con clientes reales antes de producción.
Reemplaza el JAR anterior; no dejes copias con otro nombre en plugins/. Los artefactos intermedios de Maven no se instalan.
Si hay picos al analizar o restaurar, reduce arena-map.analysis-max-millis-per-tick, arena-map.max-millis-per-tick o los lotes. Más bloques por tick acelera, pero aumenta la carga.
SQLite para un servidor único; MySQL/MariaDB para una red. Usa un usuario exclusivo, contraseña fuerte, backups programados y nunca publiques credenciales.
No entregues nodos administrativos a rangos de pago. Revisa que los grupos VIP solo hereden beneficios de juego y que ptc.arena.delete quede en el Dueño.
Guarda la copia base después de cada cambio estructural. repair solo repara desde una copia válida; no sustituye una copia ausente ni un mapa dañado.
No instales Multiverse solo por PTC. Si ya lo usas, deja que cargue los mundos antes; PTC no delega la copia ni la restauración de bloques en él.
Las carpetas con datos persistentes deben respaldarse antes de reemplazar el plugin.
plugins/ProtectTheCore/, los mapas y la base de datos.plugins/; instala solo Free o Premium.multicoins./ptc validate; no borres archivos para “empezar de cero” sin backup.