- Баллы
- 76
Нужна помощь с переходом с сервера на сервер на BungeeCord.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Перекинуть Player с сервера на другой серверВ чем именно заключается проблема?
PluginMessagingChannel.Перекинуть Player с сервера на другой сервер
Ему зачем это нужно? ._./send [nick] [server] - прописать групе админ в конфиге перм bungee.command.send
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;
}
}
О боже. В onCommand просто отправляй запрос, в onPluginMessageReceived получай данные.Поднимаю старую тему, что-то не могу врубиться, как правильно с этим работать, пытаюсь сделать так, чтобы при вводе команды "survival" игроку отправляло сообщение с количеством онлайна на нем
Java: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; } }
вот такой код:О боже. В onCommand просто отправляй запрос, в onPluginMessageReceived получай данные.
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;
}
}

Ты зачем создаешь новый ByteArrayDataOutput в onCommand просто так? Тебе надо отправить этот запрос от любого игрока.вот такой код:
выводит такую ересь:Java: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; } }
Посмотреть вложение 31054
а как правильно?Ты зачем создаешь новый ByteArrayDataOutput в onCommand просто так? Тебе надо отправить этот запрос от любого игрока.
Прямо под тем куском кода подпиши:а как правильно?
ща попробуюПрямо под тем куском кода подпиши:
((Player) sender).sendPluginMessage(this, "BungeeCord", out.toByteArray());
И да, добавь проверку на игрока там.
Прямо под тем куском кода подпиши:
((Player) sender).sendPluginMessage(this, "BungeeCord", out.toByteArray());
И да, добавь проверку на игрока там.
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;
}
}
Да.ща попробую
Так?Код: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; } }
при вводе команды никакой реакции
Ну так ты закоментилпри вводе команды никакой реакции
теперь опять флудит как на скринеНу так ты закоментил
/*player.sendMessage(server);
player.sendMessage(Integer.toString(playercount));*/
выводит такую ересь:
![]()
теперь опять флудит как на скрине
@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();
}
}
Так правильно?Код:@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(); } }
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;
}
}