#Пример плагина

Полный пример плагина, демонстрирующий основные возможности API.

java
package com.example.welcome;

import com.proxy.api.command.Command;
import com.proxy.api.command.CommandSender;
import com.proxy.api.event.EventHandler;
import com.proxy.api.event.EventPriority;
import com.proxy.api.event.impl.*;
import com.proxy.api.player.ProxyPlayer;
import com.proxy.api.plugin.Plugin;
import com.proxy.api.scheduler.ScheduledTask;

import java.util.concurrent.TimeUnit;

public class WelcomePlugin extends Plugin {

    private ScheduledTask announceTask;

    @Override
    public void onEnable() {
        getProxy().getEventBus().register(this, new PlayerListener());
        getProxy().getCommandManager().register(new HubCommand());

        announceTask = getProxy().getScheduler().scheduleRepeating(
            this,
            () -> {
                for (ProxyPlayer player : getProxy().getPlayerManager().getAllPlayers()) {
                    player.sendMessage("§6Используйте §b/hub §6для возврата в лобби!");
                }
            },
            60, 300, TimeUnit.SECONDS
        );
    }

    @Override
    public void onDisable() {
        if (announceTask != null) announceTask.cancel();
        getProxy().getScheduler().cancelAll(this);
        getProxy().getEventBus().unregisterAll(this);
    }

    public class PlayerListener {

        @EventHandler(priority = EventPriority.HIGH)
        public void onConnect(PlayerConnectEvent event) {
            ProxyPlayer player = event.getPlayer();

            getProxy().getScheduler().schedule(
                WelcomePlugin.this,
                () -> {
                    player.sendMessage("");
                    player.sendMessage("§6§l  Добро пожаловать на сервер!");
                    player.sendMessage("§7  Используйте §b/server §7для выбора режима");
                    player.sendMessage("");
                },
                1, TimeUnit.SECONDS
            );
        }

        @EventHandler
        public void onDisconnect(PlayerDisconnectEvent event) {
            for (ProxyPlayer online : getProxy().getPlayerManager().getAllPlayers()) {
                online.sendMessage("§c- §7" + event.getPlayer().getUsername() + " покинул сервер");
            }
        }
    }

    public class HubCommand extends Command {
        public HubCommand() {
            super("hub", "lobby", "l");
        }

        @Override
        public void execute(CommandSender sender, String[] args) {
            if (!(sender instanceof ProxyPlayer player)) {
                sender.sendMessage("Только для игроков");
                return;
            }

            getProxy().getServerManager().getDefaultServer().ifPresentOrElse(
                server -> {
                    player.connect(server);
                    player.sendMessage("§aПеремещение в лобби...");
                },
                () -> player.sendMessage("§cЛобби сервер недоступен")
            );
        }
    }
}

#plugin.yml

yaml
name: WelcomePlugin
version: 1.0.0
author: alexec0de
main: com.example.welcome.WelcomePlugin
description: Плагин приветствия и базовых команд