PLUGINPOO es un plugin desarrollado para servidores Spigot/Paper que introduce funcionalidades de control del End, creación de NPCs (aldeanos con diálogos personalizados) y tareas automatizadas que permiten que los NPCs interactúen visualmente con los jugadores cercanos.
El proyecto está diseñado con enfoque modular, separando comandos, eventos y tareas en paquetes individuales para facilitar su mantenimiento y extensión.
com.tunombre.pluginpoo
│
├── PLUGINPOO.java # Clase principal
│
├── comandos/
│ ├── ComandoTp.java # Implementa el comando /tp
│ ├── ComandoProhibirEnd.java # Implementa el comando /prohibirend
│ └── ComandoNpc.java # Implementa el comando /npc
│
├── eventos/
│ ├── EventoEnd.java # Listener que bloquea el acceso al End
│ └── EventoGeneral.java # Listener para otras interacciones (opcional)
│
└── tareas/
└── TareaMirarJugadores.java # Tarea repetitiva que hace que los NPCs miren a los jugadores cercanos
name: PLUGINPOO
main: com.tunombre.pluginpoo.PLUGINPOO
version: 1.0
api-version: 1.20
author: Erik
commands:
tp:
description: Teletransporta al jugador.
prohibirend:
description: Activa o desactiva el bloqueo del End.
npc:
description: Crea un aldeano NPC con diálogo.Clase base del plugin. Extiende JavaPlugin y gestiona la inicialización del sistema, el registro de comandos y eventos, y la ejecución de tareas automáticas.
private static PLUGINPOO instancia;
private boolean endProhibido = false;
private final HashMap<UUID, String[]> aldeanosDialogo = new HashMap<>();| Atributo | Tipo | DescripciĂłn |
|---|---|---|
instancia |
PLUGINPOO |
Singleton del plugin para acceso global. |
endProhibido |
boolean |
Indica si el acceso al End está bloqueado. |
aldeanosDialogo |
HashMap<UUID, String[]> |
Guarda los diálogos asociados a cada aldeano. |
- Inicializa la instancia.
- Carga la configuraciĂłn (
saveDefaultConfig()). - Registra comandos (
tp,prohibirend,npc). - Registra eventos (
thisyEventoEnd). - Crea un aldeano de ejemplo (
crearAldeanoEjemplo()). - Inicia una tarea repetitiva para que los NPCs miren a los jugadores (
iniciarTareaMirarJugadores()).
- Muestra un mensaje en consola al desactivar el plugin.
- Crea un aldeano NPC con nombre, IA desactivada, invulnerabilidad, y profesiĂłn.
- Asocia un diálogo de ejemplo en
aldeanosDialogo.
- Crea una
BukkitRunnableque hace que los aldeanos giren hacia el jugador más cercano cada ciertos ticks.
Clase: ComandoProhibirEnd.java
FunciĂłn: Alterna el valor de endProhibido y notifica al jugador del nuevo estado.
Ejemplo de uso:
/prohibirend
→ "El End ahora está prohibido"
Clase: ComandoNpc.java
Función: Crea un aldeano con diálogo y lo agrega al registro aldeanosDialogo.
Puede incluir argumentos para personalizar el nombre o el texto del diálogo.
Ejemplo de uso:
/npc Hola soy un aldeano parlante.
Clase: ComandoTp.java
FunciĂłn: Teletransporta al jugador a una ubicaciĂłn o a otro jugador.
(ImplementaciĂłn depende del contexto del proyecto.)
Ejemplo de uso:
/tp <jugador>
Rol: Bloquea la entrada al End cuando endProhibido es true.
Ejemplo de comportamiento:
@EventHandler
public void onPortal(PlayerPortalEvent event) {
if (event.getCause() == TeleportCause.END_PORTAL && plugin.isEndProhibido()) {
event.setCancelled(true);
event.getPlayer().sendMessage("§cEl End está prohibido actualmente.");
}
}Puede gestionar otras interacciones con NPCs:
- Clicks en aldeanos para mostrar diálogo.
- Mensajes personalizados al interactuar.
Tipo: BukkitRunnable
Función: Recorre todos los NPCs creados y ajusta su orientación para mirar al jugador más cercano.
Ciclo de ejecuciĂłn:
- Se ejecuta cada cierto nĂşmero de ticks.
- Calcula la dirección hacia el jugador más próximo.
- Ajusta el
YawyPitchdel aldeano.
Servidor inicia
│
└──▶ PLUGINPOO.onEnable()
│
├── Guarda instancia (Singleton)
├── Registra comandos y eventos
├── Crea NPC de ejemplo
└── Inicia tarea de observación
│
Jugador usa /prohibirend → cambia endProhibido
Jugador intenta entrar al End → EventoEnd bloquea si endProhibido = true
TareaMirarJugadores → hace que NPCs miren a jugadores cercanos
+------------------+
| JavaPlugin |
+------------------+
^
|
+------------------+
| PLUGINPOO |
+------------------+
| - instancia |
| - endProhibido |
| - aldeanosDialogo|
+------------------+
| + onEnable() |
| + onDisable() |
| + crearAldeano() |
| + iniciarTarea() |
+---------+--------+
|
-----------------------------
| | |
v v v
Comando* Evento* TareaMirarJugadores
| Componente | Tipo | Depende de | DescripciĂłn |
|---|---|---|---|
PLUGINPOO |
JavaPlugin |
— | Núcleo del plugin. Registra todos los módulos. |
ComandoProhibirEnd |
CommandExecutor |
PLUGINPOO |
Modifica el estado endProhibido. |
ComandoNpc |
CommandExecutor |
PLUGINPOO |
Crea aldeanos con diálogo. |
ComandoTp |
CommandExecutor |
PLUGINPOO |
Teletransporta jugadores. |
EventoEnd |
Listener |
PLUGINPOO |
Cancela viajes al End si está prohibido. |
TareaMirarJugadores |
BukkitRunnable |
PLUGINPOO |
Hace que NPCs miren a jugadores cercanos. |
- Crear una clase en
comandos/que implementeCommandExecutor. - Registrar el comando en
plugin.yml. - Registrar el ejecutor en
onEnable().
- Crear una clase que implemente
Listener. - Anotar los métodos con
@EventHandler. - Registrar el listener en
onEnable()con:getServer().getPluginManager().registerEvents(new TuEvento(), this);
- Crear una clase que extienda
BukkitRunnable. - Implementar el método
run(). - Ejecutar la tarea con:
new MiTarea(this).runTaskTimer(this, 0L, 20L);
| Propiedad | Valor |
|---|---|
| Minecraft | 1.20+ |
| API | Spigot / Paper |
| Java | 17 o superior |
| Dependencias externas | Ninguna |
Erick
Desarrollador de plugins Bukkit/Spigot.
Proyecto educativo de ProgramaciĂłn Orientada a Objetos (POO) con Minecraft.