# DNI Plugin para Minecraft
Un plugin completo para gestionar DNIs (Documentos Nacionales de Identidad) de jugadores en servidores de Minecraft.
## Características
- **Sistema de Permisos**: Diferentes niveles de acceso para ver, crear, editar y eliminar DNIs
- **ID Único**: Cada DNI tiene un ID único que nunca se elimina, incluso si se borra el DNI
- **Persistencia de Datos**: Los datos se guardan automáticamente en archivos YAML
- **Validación**: Validación automática de datos como edad, números de documento, etc.
- **Wizard Interactivo**: Creación paso a paso de DNIs con interfaz amigable
- **Comandos Completos**: Todos los comandos necesarios para gestionar DNIs
## Instalación
1. **Descargar el plugin**: Compila el proyecto con Maven o descarga el JAR
2. **Colocar en plugins**: Copia el archivo JAR a la carpeta `plugins` de tu servidor
3. **Reiniciar servidor**: Reinicia el servidor para cargar el plugin
4. **Configurar permisos**: Asigna los permisos necesarios a los jugadores/roles
## Comandos Disponibles
### Comandos Básicos
| Comando | Descripción | Permiso | Uso |
|---------|-------------|---------|-----|
| `/dni` | Ver tu propio DNI | `dni.view` | `/dni` |
| `/dni ver <jugador>` | Ver DNI de otro jugador | `dni.view.others` | `/dni ver Player123` |
| `/dni crear <jugador> <fecha> <edad> <nombre> <apellido> <nacionalidad> <genero>` | Crear DNI con todos los datos | `dni.create` | `/dni crear Player123 1990-05-15 33 Juan Pérez Español Masculino` |
| `/dni wizard <jugador>` | Crear DNI paso a paso | `dni.create` | `/dni wizard Player123` |
| `/dni editar <jugador> <campo> <valor>` | Editar un campo del DNI | `dni.edit` | `/dni editar Player123 edad 25` |
| `/dni eliminar <jugador> [confirmar]` | Eliminar DNI de un jugador | `dni.delete` | `/dni eliminar Player123 confirmar` |
| `/dni reload` | Recargar configuración del plugin | `dni.admin` | `/dni reload` |
### Comandos Individuales (Legacy)
| Comando | Descripción | Permiso | Uso |
|---------|-------------|---------|-----|
| `/dniview <jugador>` | Ver el DNI de un jugador | `dni.view` | `/dniview Player123` |
| `/dnicreate <jugador> <fecha> <edad> <nombre> <apellido> <nacionalidad> <genero>` | Crear DNI con todos los datos | `dni.create` | `/dnicreate Player123 1990-05-15 33 Juan Pérez Español Masculino` |
| `/dnicreatewizard <jugador>` | Crear DNI paso a paso | `dni.create` | `/dnicreatewizard Player123` |
| `/dnidelete <jugador> [confirmar]` | Eliminar el DNI de un jugador | `dni.delete` | `/dnidelete Player123 confirmar` |
| `/dniedit <jugador> <campo> <valor>` | Editar un campo del DNI | `dni.edit` | `/dniedit Player123 edad 25` |
| `/dnireload` | Recargar la configuración del plugin | `dni.admin` | `/dnireload` |
### Campos Editables
- `fecha_nacimiento` o `birthdate` - Formato: dd/MM/yyyy
- `edad` o `age` - Número entre 0 y 150
- `nombre` o `firstname` - Nombre del jugador
- `apellido` o `lastname` - Apellido del jugador
- `nacionalidad` o `nationality` - Nacionalidad
- `genero` o `gender` - Género
## Sistema de Permisos
### Permisos Disponibles
| Permiso | Descripción | Por Defecto |
|---------|-------------|-------------|
| `dni.view` | Ver tu propio DNI | `true` (todos) |
| `dni.view.others` | Ver DNIs de otros jugadores | `op` |
| `dni.create` | Crear nuevos DNIs | `op` |
| `dni.edit` | Editar DNIs existentes | `op` |
| `dni.delete` | Eliminar DNIs | `op` |
| `dni.admin` | Administrar el plugin | `op` |
### Configuración de Permisos
Para configurar permisos, puedes usar plugins como:
- **LuckPerms**: Sistema de permisos avanzado
- **PermissionsEx**: Sistema de permisos tradicional
- **GroupManager**: Gestión de grupos y permisos
#### Ejemplo con LuckPerms:
```
/lp user Player123 permission set dni.view true
/lp user Player123 permission set dni.create true
/lp group Moderator permission set dni.edit true
/lp group Admin permission set dni.admin true
```
## Estructura de Datos del DNI
Cada DNI contiene la siguiente información:
- **ID Único**: ID de entrada al servidor (nunca se elimina)
- **Nombre del Jugador**: Nombre del jugador en el servidor
- **Número de DNI**: Número aleatorio de 8 dígitos
- **Fecha de Nacimiento**: Fecha de nacimiento del jugador
- **Edad**: Edad actual del jugador
- **Nombre**: Nombre real del jugador
- **Apellido**: Apellido real del jugador
- **Nacionalidad**: Nacionalidad del jugador
- **Género**: Género del jugador
- **Fecha de Creación**: Cuándo se creó el DNI
- **Última Modificación**: Cuándo se modificó por última vez
## Wizard de Creación
El comando `/dnicreatewizard` te guía paso a paso para crear un DNI:
1. **Fecha de Nacimiento**: Ingresa la fecha (formato: dd/MM/yyyy)
2. **Edad**: Ingresa la edad (número)
3. **Nombre**: Ingresa el nombre
4. **Apellido**: Ingresa el apellido
5. **Nacionalidad**: Ingresa la nacionalidad
6. **Género**: Ingresa el género
7. **ID Único**: Ingresa el ID de entrada al servidor (ej: 000001)
Durante el proceso puedes escribir `cancelar` para cancelar la creación.
## Tab Completer
El plugin incluye un sistema completo de tab completer que sugiere:
- Nombres de jugadores online
- Campos editables
- Valores válidos para cada campo
- Subcomandos disponibles
Simplemente presiona la tecla Tab mientras escribes para ver las sugerencias disponibles.
## Archivos de Datos
El plugin guarda todos los datos en:
- **Ubicación**: `plugins/DNIPlugin/dni_data.yml` (YAML) o base de datos configurada
- **Formato**: YAML por defecto, configurable para MySQL/SQLite
- **Backup**: Se recomienda hacer copias de seguridad regulares
## Compilación
Para compilar el plugin desde el código fuente:
```bash
# Clonar el repositorio
git clone <url-del-repositorio>
cd dni-plugin
# Compilar con Maven
mvn clean package
# El JAR se generará en target/dni-plugin-1.0.0.jar
```
## Requisitos del Servidor
- **Versión de Minecraft**: 1.20+
- **Versión de Java**: Java 17 o superior
- **Servidor**: Spigot, Paper, o cualquier servidor compatible con Spigot API
## Solución de Problemas
### Problemas Comunes
1. **Plugin no se carga**: Verifica que tengas Java 17+ y que el servidor sea compatible
2. **Permisos no funcionan**: Asegúrate de que el plugin de permisos esté configurado correctamente
3. **Datos no se guardan**: Verifica que el plugin tenga permisos de escritura en la carpeta
4. **Comandos no responden**: Verifica que los comandos estén registrados en `plugin.yml`
### Logs
El plugin registra información importante en los logs del servidor:
- **INFO**: Operaciones exitosas
- **WARNING**: Advertencias sobre datos
- **SEVERE**: Errores críticos
## Soporte
Si tienes problemas o preguntas:
1. Revisa los logs del servidor
2. Verifica la configuración de permisos
3. Asegúrate de que todos los archivos estén en su lugar
4. Contacta al desarrollador del plugin
## Licencia
Este plugin está bajo licencia MIT. Puedes modificarlo y distribuirlo libremente.
## Changelog
### Versión 1.1.0
- Comando principal `/dni` para ver tu propio DNI
- Tab completer para todos los comandos
- Sistema de confirmación para eliminación
- ID único como ID de entrada al servidor
- Opción de configuración para base de datos o YAML
- Permisos separados para ver DNIs propios y de otros
- Wizard mejorado sin atascos
### Versión 1.0.0
- Sistema completo de gestión de DNIs
- Comandos para crear, ver, editar y eliminar DNIs
- Wizard interactivo para creación paso a paso
- Sistema de permisos configurable
- Persistencia de datos en YAML
- ID único que nunca se elimina
