- Баллы
- 76
- Имя в Minecraft
- AguRChek_TV
Как мне при клики по предмету в инвентаре перенаправить игрока на другой сервер майнкрафт в BungeeCord ?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
ловишь клик ивент, проверяешь тот ли этот предмет, пишешь бандже чтоб игрока приконнектили к другому серверу.
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(server);
player.sendPluginMessage(pluginInstance, "BungeeCord", out.toByteArray());
В onEnable() добавляешь:
Создаёшь метод, к примеру connectPlayer(Player player, String server):Код:getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
Код: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 = 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");
}
}