Introducción
PocketMine-MP es un software de servidor para Minecraft: Bedrock Edition, desarrollado en PHP. Este tutorial te guiará paso a paso en la creación de plugins para PocketMine 5.0.0 y versiones posteriores.
Preparativos
Requisitos
- Conocimientos básicos de PHP
- Un entorno de desarrollo PHP (puede ser un editor de texto como VS Code, Sublime Text, etc.)
- Servidor PocketMine-MP 5.0.0 o superior
- Composer (gestor de dependencias para PHP)
Instalación de PocketMine-MP
- Descarga la última versión de PocketMine-MP desde el sitio oficial.
- Sigue las instrucciones para instalar PocketMine en tu sistema operativo.
Estructura Básica de un Plugin
Un plugin de PocketMine-MP consta de varios archivos, pero el más importante es plugin.yml, que describe el plugin, y el archivo PHP que contiene la lógica del plugin.
Estructura de Carpetas
MyFirstPlugin/ | |
├── src/ | |
│ └── MyFirstPlugin/ | |
│ └── Main.php | |
└── plugin.yml |
Primer Plugin: Hola Mundo
Archivo plugin.yml
name: MyFirstPlugin | |
icon: icon.png | |
main: MyFirstPlugin\Main | |
version: 1.0.0 | |
api: 5.0.0 | |
author: TuNombre | |
description: Mi primer plugin para PocketMine-MP 5.0.0 |
Archivo Main.php
<?php | |
namespace MyFirstPlugin; | |
use pocketmine\plugin\PluginBase; | |
class Main extends PluginBase { | |
public function onEnable(): void { | |
$this->getLogger()->info("¡Hola, mundo! Mi primer plugin ha sido habilitado."); | |
} | |
} |
Comandos Personalizados
Para añadir comandos personalizados, se debe definir en plugin.yml y crear la lógica en el archivo PHP.
Modificación de plugin.yml
commands: | |
hello: | |
description: Saluda al jugador | |
usage: "/hello" |
Modificación de Main.php
<?php | |
namespace MyFirstPlugin; | |
use pocketmine\plugin\PluginBase; | |
use pocketmine\command\Command; | |
use pocketmine\command\CommandSender; | |
use pocketmine\player\Player; | |
class Main extends PluginBase { | |
public function onEnable(): void { | |
$this->getLogger()->info("¡Hola, mundo! Mi primer plugin ha sido habilitado."); | |
} | |
public function onCommand(CommandSender $sender, Command $command, string $label, array $args): bool { | |
if ($command->getName() === "hello") { | |
if ($sender instanceof Player) { | |
$sender->sendMessage("¡Hola, " . $sender->getName() . "!"); | |
return true; | |
} else { | |
$sender->sendMessage("Este comando solo puede ser usado en el juego."); | |
return false; | |
} | |
} | |
return false; | |
} | |
} |
Eventos y Listeners
Los eventos permiten a los plugins reaccionar a ciertas acciones dentro del servidor.
Ejemplo: Listener de Evento
<?php | |
namespace MyFirstPlugin; | |
use pocketmine\plugin\PluginBase; | |
use pocketmine\event\Listener; | |
use pocketmine\event\player\PlayerJoinEvent; | |
class Main extends PluginBase implements Listener { | |
public function onEnable(): void { | |
$this->getLogger()->info("¡Hola, mundo! Mi primer plugin ha sido habilitado."); | |
$this->getServer()->getPluginManager()->registerEvents($this, $this); | |
} | |
public function onPlayerJoin(PlayerJoinEvent $event): void { | |
$player = $event->getPlayer(); | |
$player->sendMessage("¡Bienvenido, " . $player->getName() . " al servidor!"); | |
} | |
} |
Configuración del Plugin
Para permitir la configuración de plugins, se puede crear un archivo config.yml.
Archivo config.yml
mensaje_bienvenida: "¡Bienvenido al servidor, %player%!" |
Modificación de Main.php
<?php | |
namespace MyFirstPlugin; | |
use pocketmine\plugin\PluginBase; | |
use pocketmine\event\Listener; | |
use pocketmine\event\player\PlayerJoinEvent; | |
class Main extends PluginBase implements Listener { | |
public function onEnable(): void { | |
$this->saveDefaultConfig(); | |
$this->getLogger()->info("¡Hola, mundo! Mi primer plugin ha sido habilitado."); | |
$this->getServer()->getPluginManager()->registerEvents($this, $this); | |
} | |
public function onPlayerJoin(PlayerJoinEvent $event): void { | |
$player = $event->getPlayer(); | |
$message = str_replace("%player%", $player->getName(), $this->getConfig()->get("mensaje_bienvenida")); | |
$player->sendMessage($message); | |
} | |
} |
Pruebas y Depuración
- Inicia el servidor de PocketMine-MP.
- Asegúrate de que tu plugin aparezca en la lista de plugins cargados.
- Únete al servidor para verificar que los mensajes y comandos funcionen correctamente.
Publicación del Plugin
- Asegúrate de que tu plugin esté bien documentado.
- Sube tu plugin a un repositorio público como GitHub.
- Comparte tu plugin en la comunidad de PocketMine, por ejemplo, en los foros oficiales.