1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем AguRChek_TV, 12 июн 2019.

  1. Автор темы
    AguRChek_TV

    AguRChek_TV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
    Как мне при клики по предмету в инвентаре перенаправить игрока на другой сервер майнкрафт в BungeeCord ?
     
  2. WhileInside

    WhileInside Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    ловишь клик ивент, проверяешь тот ли этот предмет, пишешь бандже чтоб игрока приконнектили к другому серверу.
     
  3. Автор темы
    AguRChek_TV

    AguRChek_TV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV

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

    Клик поймал а как перенаправить там можно поподробнее?
     
  4. WhileInside

    WhileInside Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    В 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());
     
  5. Автор темы
    AguRChek_TV

    AguRChek_TV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
    Я пробовал сделать вот так но у меня не получилось.

    Код:

    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) {
     
  6. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Сделай скрин
     
  7. Автор темы
    AguRChek_TV

    AguRChek_TV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
     

    Вложения:

  8. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Методы не могут быть внутри метода...
     
  9. Автор темы
    AguRChek_TV

    AguRChek_TV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
    а как мне тогда сделать что бы игрока перекидывало именно после нажатия?
     
  10. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Для начала выучи джаву.

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

    AguRChek_TV Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AguRChek_TV
    Вот так ?

    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());
    }
     
  12. Meltionix

    Meltionix Участник Пользователь

    Баллы:
    31
    Боже.. Во первых, помещай код в специальный тег, вместе со всеми отступами. Во вторых, учи джаву, ибо ты даже не понимаешь, что такое тело метода, и что в теле метода объявить другой метод нельзя.
     
    Последнее редактирование: 13 июн 2019
  13. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Серьёзно?
    upload_2019-6-13_1-24-9.png
     
  14. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    При этом всем, он умудряется не знать озы джава и пихает метод в метод.
     
  15. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
    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");
        }
    }
     

Поделиться этой страницей