#Пример плагина
Полный пример плагина, демонстрирующий основные возможности 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: Плагин приветствия и базовых команд