W głównej klasie dodaj coś takiego:
getCommand("p").setExecutor(new KolorowaKomenda(this));
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
getServer().getMessenger().registerIncomingPluginChannel(plugin, "BungeeCord", new KolorowaKomenda(this));
Oraz stwórz klase implementującą CommandExecutor oraz PluginMessageListener
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.plugin.messaging.PluginMessageListener;
import org.jetbrains.annotations.NotNull;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class KolorowaKomenda implements CommandExecutor, PluginMessageListener {
private final JavaPlugin instance;
public KolorowaKomenda(JavaPlugin instance) {
this.instance = instance;
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if(sender instanceof Player player)switchServer(player, "glowny");
return false;
}
public void switchServer(Player player, String serverName) {
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);
try {
out.writeUTF("Connect");
out.writeUTF(serverName);
} catch (IOException e) {
e.printStackTrace();
}
player.sendPluginMessage(instance, "BungeeCord", b.toByteArray());
}
@Override
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
if (!channel.equals("BungeeCord")) return;
ByteArrayDataInput in = ByteStreams.newDataInput(message);
String subchannel = in.readUTF();
if (subchannel.equals("Connect")) {
String server = in.readUTF();
Bukkit.getServer().getLogger().info(player.getName() + " został przekierowany na serwer " + server);
}
}
}