Помогите Как мне при клики по предмету в инвентаре перенаправить игрока на другой сервер майнкрафт ?

AguRChek_TV

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
AguRChek_TV
Как мне при клики по предмету в инвентаре перенаправить игрока на другой сервер майнкрафт в BungeeCord ?
 
ловишь клик ивент, проверяешь тот ли этот предмет, пишешь бандже чтоб игрока приконнектили к другому серверу.


if(i2.equals(e.getClickedInventory()) && e.getSlot() == 12) {
Player p = (Player) e.getWhoClicked();
p.sendMessage(ChatColor.BLUE + "[Server]" + ChatColor.WHITE + " - " + ChatColor.GOLD + "Conecting..");
}

Клик поймал а как перенаправить там можно поподробнее?
 
В onEnable() добавляешь:
Код:
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
Создаёшь метод, к примеру connectPlayer(Player player, String server):
Код:
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(server);
player.sendPluginMessage(pluginInstance, "BungeeCord", out.toByteArray());
 
В onEnable() добавляешь:
Код:
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
Создаёшь метод, к примеру connectPlayer(Player player, String server):
Код:
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(server);
player.sendPluginMessage(pluginInstance, "BungeeCord", out.toByteArray());

Я пробовал сделать вот так но у меня не получилось.

Код:

if(i2.equals(e.getClickedInventory()) && e.getSlot() == 12) {
p.sendMessage(ChatColor.BLUE + "[Server]" + ChatColor.WHITE + " - " + ChatColor.GOLD + "Conecting..");

String server = server;
changeServer(p, server);
}

private void connectPlayer(Player player, String server) {
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);

try {
out.writeUTF("Connect");
out.writeUTF(server);
}
catch (IOException eee) {
}
p.sendPluginMessage(this, "BungeeCord", b.toByteArray());
}

Ошибки:

Multiple markers at this line
-Syntax error on taken ")" ,: expected
-Syntax error on taken "," ,: expected
-Syntax error on taken "(" ,: expected
-void is an invalid type for the variable
-Syntax error on taken "," ,: expected

в строчке:

private void connectPlayer(Player player, String server) {
 
Я пробовал сделать вот так но у меня не получилось.

Код:

if(i2.equals(e.getClickedInventory()) && e.getSlot() == 12) {
p.sendMessage(ChatColor.BLUE + "[Server]" + ChatColor.WHITE + " - " + ChatColor.GOLD + "Conecting..");

String server = server;
changeServer(p, server);
}

private void connectPlayer(Player player, String server) {
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);

try {
out.writeUTF("Connect");
out.writeUTF(server);
}
catch (IOException eee) {
}
p.sendPluginMessage(this, "BungeeCord", b.toByteArray());
}

Ошибки:

Multiple markers at this line
-Syntax error on taken ")" ,: expected
-Syntax error on taken "," ,: expected
-Syntax error on taken "(" ,: expected
-void is an invalid type for the variable
-Syntax error on taken "," ,: expected

в строчке:

private void connectPlayer(Player player, String server) {
Сделай скрин
 
Для начала выучи джаву.

Вынеси метод из тела метода ивента в тело класса.

Вот так ?

if(i2.equals(e.getClickedInventory()) && e.getSlot() == 12) {
p.sendMessage(ChatColor.BLUE + "[Server]" + ChatColor.WHITE + " - " + ChatColor.GOLD + "Conecting..");

String server = lobby2;
changeServer(p, server);
}

private String changeServer(Player player, String lobby2) {
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);

try {
out.writeUTF("Connect");
out.writeUTF(lobby2);
}
catch (IOException eee) {
}
p.sendPluginMessage(this, "BungeeCord", b.toByteArray());
}
 
Вот так ?

if(i2.equals(e.getClickedInventory()) && e.getSlot() == 12) {
p.sendMessage(ChatColor.BLUE + "[Server]" + ChatColor.WHITE + " - " + ChatColor.GOLD + "Conecting..");

String server = lobby2;
changeServer(p, server);
}

private String changeServer(Player player, String lobby2) {
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);

try {
out.writeUTF("Connect");
out.writeUTF(lobby2);
}
catch (IOException eee) {
}
p.sendPluginMessage(this, "BungeeCord", b.toByteArray());
}
Боже.. Во первых, помещай код в специальный тег, вместе со всеми отступами. Во вторых, учи джаву, ибо ты даже не понимаешь, что такое тело метода, и что в теле метода объявить другой метод нельзя.
 
Последнее редактирование:
Код:
package Example;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;

import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;

public class PluginMessage {

    private Plugin plugin;
    public PluginMessage(Plugin plugin) {
        this.plugin = plugin;
        Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
    }

    public void connectServer(Player player, String serverName) {
        ByteArrayDataOutput out = ByteStreams.newDataOutput();
        out.writeUTF("Connect");
        out.writeUTF(serverName);
        player.sendPluginMessage(this.plugin, "BungeeCord", out.toByteArray());
    }
}
Код:
package Example;

import org.bukkit.plugin.java.JavaPlugin;

import Example.events.EventListener;

public class Main extends JavaPlugin {
    public PluginMessage pluginMessage;

    @Override
    public void onEnable() {
        this.pluginMessage = new PluginMessage(this);
        this.getServer().getPluginManager().registerEvents(new EventListener(this), this);
    }
}

Код:
package Example.events;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;

import Example.Main;

public class EventListener implements Listener {
    private Main plugin;

    public EventListener(Main plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void on(InventoryClickEvent e) {
        //TODO поиск инвентаря с нужным предметом.
        
        this.plugin.pluginMessage.connectServer((Player) e.getWhoClicked(), "serverName");
    }
}
 
Назад
Верх