Skocz do zawartości
  • 0

Przenoszenie na inny tryb


heobrine

Pytanie

Cześć, napisze mi ktoś kod pluginu (z importami cały ogl) jak zrobić przenoszenie komendą np. /boxpvp na tryb boxpvp (w pluginie na spigota) czyli że plugin spigot na przenoszenie przez bungee na np. boxpvp

Odnośnik do komentarza
https://skript.pl/temat/56475-przenoszenie-na-inny-tryb/
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
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);
        }
    }
}
Edytowane przez prostychlop
Odnośnik do komentarza
https://skript.pl/temat/56475-przenoszenie-na-inny-tryb/#findComment-338487
Udostępnij na innych stronach

  • 0
47 minut temu, prostychlop napisał:
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);
        }
    }
}

jak ma działać ten kod, bo po wpisaniu komendy nic sie nie dzieje? (wersja 1.18.2 java 17)

Odnośnik do komentarza
https://skript.pl/temat/56475-przenoszenie-na-inny-tryb/#findComment-338490
Udostępnij na innych stronach

  • 0
16 minut temu, heobrine napisał:

jak ma działać ten kod, bo po wpisaniu komendy nic sie nie dzieje? (wersja 1.18.2 java 17)

czy przy użyciu metody `switchServer(player, "glowny")` zmieniłeś "glowny" na nazwe serwera "boxpvp" którą ustawiłeś w bungeecord?

Odnośnik do komentarza
https://skript.pl/temat/56475-przenoszenie-na-inny-tryb/#findComment-338491
Udostępnij na innych stronach

  • 0
27 minut temu, prostychlop napisał:

czy przy użyciu metody `switchServer(player, "glowny")` zmieniłeś "glowny" na nazwe serwera "boxpvp" którą ustawiłeś w bungeecord?

dobra nie ważne xD, juz działa

Odnośnik do komentarza
https://skript.pl/temat/56475-przenoszenie-na-inny-tryb/#findComment-338493
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...