DTC - Destroy The Core

A competitive PvP event where players must destroy the core to earn rewards.

85

Quick challenge

How far can you run before the mobs catch you?

DTC - Destroy The Core

⚔️ EC-DTC — Destroy The Core

Version

Minecraft

Platform

PlaceholderAPI

Evento PvP competitivo avanzado para servidores Paper donde los jugadores destruyen un núcleo para ganar recompensas, dominar el ranking y obtener premios automáticos.

> Documentación para uso público. Los cambios recientes del plugin están en la sección Changelog al final.

---

🚀 ¿Qué es EC-DTC?

EC-DTC (Destroy The Core) es un sistema de eventos PvP automático y manual totalmente configurable.

> Los jugadores deben destruir un núcleo con vida configurable. > Cada golpe cuenta. Cada porcentaje importa. > Al finalizar, se calcula un TOP de contribución y se reparten recompensas automáticamente.

---

✨ Características Principales

- ✅ Sistema multi-evento por ID (`default`, `mina`, `nether`, etc.) - ✅ Scheduler independiente por evento - ✅ Mensajes 100% editables en MiniMessage - ✅ BossBar con progreso en tiempo real - ✅ Sistema de contribución individual - ✅ TOP final con recompensas por posición - ✅ Recompensas por porcentaje acumulado - ✅ Protección inteligente de bedrock fuera del evento - ✅ Placeholders para HUD, Scoreboard y Menús - ✅ Estadísticas guardadas por jugador - ✅ Soporte completo para PlaceholderAPI

---

✅ Compatibilidad

- Java 17+ - Paper/Spigot 1.20+ - PlaceholderAPI (opcional, recomendado)

---

⚙️ Instalación

1. Compila o descarga el `.jar`. 2. Copia el archivo en `plugins/`. 3. Inicia el servidor para generar `config.yml` y `lang.yml`. 4. Edita configuración y mensajes. 5. Ejecuta `/dtc reload` para aplicar cambios.

---

⌨️ Comandos

| Comando | Descripción | Permiso | |---|---|---| | `/dtc start [id]` | Inicia un evento por ID (`default`, `mina`, etc.) | `dtc.admin` | | `/dtc stop [id]` | Detiene el evento activo (opcionalmente validando ID) | `dtc.admin` | | `/dtc info [id]` | Muestra información del evento/perfil | `dtc.admin` | | `/dtc time` | Muestra tiempo y ID del próximo evento programado | `dtc.admin` | | `/dtc top` | Muestra ranking del evento activo | `dtc.admin` | | `/dtc reload` | Recarga config y mensajes | `dtc.admin` |

---

🧩 Placeholders (`%dtc_*%`)

| Placeholder | Descripción | |---|---| | `%dtc_blocks_broken%` | Bloques rotos por el jugador | | `%dtc_blocks_remaining%` | Bloques restantes del núcleo | | `%dtc_blocks_total%` | Vida total del núcleo | | `%dtc_my_contribution%` | Contribución del jugador en % | | `%dtc_global_stats%` | Valor global de contribución del jugador | | `%dtc_minutes_until_event%` | Minutos aproximados hasta el próximo evento | | `%dtc_time_until_event%` | Tiempo restante formateado | | `%dtc_next_event%` | Hora del próximo evento (`HH:mm`) | | `%dtc_event_active%` | `true` / `false` si hay evento activo | | `%dtc_event_time_left%` | Tiempo restante del evento activo |

---

🗂️ Configuración recomendada

1) Perfil de núcleo por evento

Se define en `Events.<id>`:

```yml Events: default: CoreHealth: 5 CoreMaterial: OBSIDIAN Location: world: "world" x: -174 y: 48 z: -24 break-sound: BLOCK_BEACON_DEACTIVATE break-sound-volume: 1.0 break-sound-pitch: 1.0 ```

2) Scheduler por evento (estructura única)

```yml Schedule: TimeZone: "UTC" Events: default: ActiveDays: ["SUNDAY"] Times: ["03:00"] mina: ActiveDays: ["MONDAY"] Times: ["01:00"] ```

- Formato de hora: `HH:mm` - Si falta configuración de horarios, el plugin no crashea; registra debug `[DTC-DEBUG]` y no programa ese evento.

3) Recompensas por golpe (umbrales acumulados)

```yml Core: hit-rewards: "30": - give %player% diamond 1 "60": - give %player% netherite_ingot 1 "90": - give %player% emerald 1 "100": - give %player% enchanted_golden_apple 1 ```

Interpretación: 30% / 30% / 30% / 10%.

4) Control al finalizar evento

```yml Core: replace-on-end: true ```

- `true`: reemplaza el núcleo por bedrock al terminar. - `false`: no reemplaza automáticamente.

---

💬 Mensajería (MiniMessage)

`lang.yml` acepta MiniMessage:

- `<red>Texto</red>` - `<bold>Texto</bold>` - `<gradient:#ff0000:#00ffff>Texto</gradient>`

---

🧾 Changelog reciente

v2.0.0

- Nuevo sistema de MiniMessage (`start/info/stop` con `id`). - Scheduler por evento con `Schedule.Events.<id>.ActiveDays` y `Times`. - Soporte completo de MiniMessage en mensajes (`lang.yml`) y textos de config usados por el plugin. - `/dtc time` ahora soporta `%event_id%` además de `%time%` en `Messages.NextTimeCommand`. - Fix de `Core.hit-rewards` por umbrales acumulados (config y lectura consistentes). - Clave explícita `Core.replace-on-end` para controlar reemplazo al terminar evento. - Corrección de errores de compilación por imports y genéricos. - Cancelación correcta de tareas para evitar duplicados tras reload. - Null-safety en PlaceholderAPI cuando no hay jugador en contexto. - Limpieza del mapa de cooldown en protección de bedrock.

ADS