Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

[Решено] Переход с сервера на сервер на BungeeCord(Bukkit плагин)

Тема в разделе "Разработка плагинов для новичков", создана пользователем Sonicxd2, 5 мар 2015.

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

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

    Баллы:
    76
    Нужна помощь с переходом с сервера на сервер на BungeeCord.
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    Sonicxd2

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

    Баллы:
    76
    Перекинуть Player с сервера на другой сервер
     
  4. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Кстати, интересная тема. Как взаимодействовать bukkit плагинами с bungee?
     
  5. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    PluginMessagingChannel.
     
  6. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
  7. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ему зачем это нужно? ._.
     
  8. Автор темы
    Sonicxd2

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

    Баллы:
    76
  9. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Поднимаю старую тему, что-то не могу врубиться, как правильно с этим работать, пытаюсь сделать так, чтобы при вводе команды "survival" игроку отправляло сообщение с количеством онлайна на нем
    Код:
    package ru.stuvanya.bungeescoreboard;
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.plugin.messaging.PluginMessageListener;
    
    import com.google.common.io.ByteArrayDataInput;
    import com.google.common.io.ByteArrayDataOutput;
    import com.google.common.io.ByteStreams;
    
    public class Main extends JavaPlugin implements PluginMessageListener {
        @Override
          public void onEnable() {
            this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
            this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
          }
          @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("SomeSubChannel")) {
              // Use the code sample in the 'Response' sections below to read
              // the data.
            }
          }
    
          public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
              if (cmd.getName().equalsIgnoreCase("survival")) {
                  ByteArrayDataOutput out = ByteStreams.newDataOutput();
                  out.writeUTF("PlayerCount");
                  out.writeUTF("survival");
                  String server = in.readUTF(); // Name of server, as given in the arguments
                  int playercount = in.readInt();;
                  sender.sendMessage(ChatColor.GREEN + playercount);
              }
            return true;
          }
    
    }
     
  10. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    О боже. В onCommand просто отправляй запрос, в onPluginMessageReceived получай данные.
     
  11. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    вот такой код:
    Код:
    package ru.stuvanya.bungeescoreboard;
    
    //import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.plugin.messaging.PluginMessageListener;
    
    import com.google.common.io.ByteArrayDataInput;
    import com.google.common.io.ByteArrayDataOutput;
    import com.google.common.io.ByteStreams;
    
    public class Main extends JavaPlugin implements PluginMessageListener {
        @Override
          public void onEnable() {
            this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
            this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
          }
          @Override
          public void onPluginMessageReceived(String channel, Player player, byte[] message) {
            if (!channel.equals("BungeeCord")) {
              return;
            }
            ByteArrayDataInput in = ByteStreams.newDataInput(message);
            String server = in.readUTF();
            int playercount = in.readInt();
            player.sendMessage(server);
            player.sendMessage(Integer.toString(playercount));
    
          }
    
          public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
              if (cmd.getName().equalsIgnoreCase("survival")) {
                  ByteArrayDataOutput out = ByteStreams.newDataOutput();
                  out.writeUTF("PlayerCount");
                  out.writeUTF("survival");
              }
            return true;
          }
    
    }
    выводит такую ересь:
    upload_2015-3-15_21-31-18.png
     
  12. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ты зачем создаешь новый ByteArrayDataOutput в onCommand просто так? Тебе надо отправить этот запрос от любого игрока.
     
  13. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    а как правильно?
     
  14. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Прямо под тем куском кода подпиши:
    ((Player) sender).sendPluginMessage(this, "BungeeCord", out.toByteArray());

    И да, добавь проверку на игрока там.
     
  15. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    ща попробую[DOUBLEPOST=1426445863,1426445677][/DOUBLEPOST]
    Код:
    public class Main extends JavaPlugin implements PluginMessageListener {
        @Override
          public void onEnable() {
            this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
            this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
          }
          @Override
          public void onPluginMessageReceived(String channel, Player player, byte[] message) {
            if (!channel.equals("BungeeCord")) {
              return;
            }
            ByteArrayDataInput in = ByteStreams.newDataInput(message);
            String server = in.readUTF();
            int playercount = in.readInt();
            /*player.sendMessage(server);
            player.sendMessage(Integer.toString(playercount));*/
    
          }
    
          public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
              if (cmd.getName().equalsIgnoreCase("survival")) {
                  ByteArrayDataOutput out = ByteStreams.newDataOutput();
                  out.writeUTF("PlayerCount");
                  out.writeUTF("survival");
                  ((Player) sender).sendPluginMessage(this, "BungeeCord", out.toByteArray());
              }
            return true;
          }
    
    }
    Так?
     
  16. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Да.
     
  17. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    при вводе команды никакой реакции
     
  18. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Ну так ты закоментил
    /*player.sendMessage(server);
    player.sendMessage(Integer.toString(playercount));*/
     
  19. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    теперь опять флудит как на скрине
     
  20. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Код:
     @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("PlayerCount")) {
           String server = in.readUTF();
           int playercount = in.readInt();
        }
      }
     
  21. Studenikin

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

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Так правильно?
    Код:
    public class Main extends JavaPlugin implements PluginMessageListener {
        @Override
          public void onEnable() {
            this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
            this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
          }
         @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("PlayerCount")) {
               String server = in.readUTF();
               int playercount = in.readInt();
               player.sendMessage(server);
               player.sendMessage(Integer.toString(playercount));
            }
         }
          public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
              if (cmd.getName().equalsIgnoreCase("survival")) {
                  ByteArrayDataOutput out = ByteStreams.newDataOutput();
                  out.writeUTF("PlayerCount");
                  out.writeUTF("survival");
                  ((Player) sender).sendPluginMessage(this, "BungeeCord", out.toByteArray());
              }
            return true;
          }
    
    }
     

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