Last active
July 6, 2023 23:25
-
-
Save TheMolkaPL/7623034 to your computer and use it in GitHub Desktop.
Connecting players to another BungeeCord server with PluginMessage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pl.themolka.bungee; | |
import java.io.ByteArrayOutputStream; | |
import java.io.DataOutputStream; | |
import java.io.IOException; | |
import org.bukkit.Bukkit | |
import org.bukkit.entity.Player; | |
import org.bukkit.event.Listener; | |
import org.bukkit.plugin.Plugin; | |
import org.bukkit.plugin.java.JavaPlugin; | |
import pl.themolka.bungee.PlayerChangeServerEvent; | |
/** | |
* author TheMolkaPL | |
*/ | |
public class BungeeConnector extends JavaPlugin { | |
private static Plugin instance; | |
public void onEnable() { | |
instance = this; | |
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); | |
} | |
/** | |
* Connects a player to a server | |
* | |
* @author TheMolkaPL | |
* | |
* @param player Player which you want to connect | |
* @param serverName Server's name to display in the message | |
* @param serverAddress Server's BungeeCord address to connect | |
*/ | |
public static void connect(Player player, String serverName, String serverAddress) { | |
PlayerChangeServerEvent event = new PlayerChangeServerEvent(player, serverName, serverAddress); | |
Bukkit.getPluginManager().callEvent(event); | |
if(!event.isCancelled()) { | |
ByteArrayOutputStream b = new ByteArrayOutputStream(); | |
DataOutputStream out = new DataOutputStream(b); | |
if(event.getMessage() != null) { | |
player.sendMessage(event.getMessage()); | |
} | |
try { | |
out.writeUTF("Connect"); | |
out.writeUTF(event.getServerAddress()); | |
} catch(IOException ex) {} | |
Bukkit.getLogger().info("Connecting " + player.getName() + " to " + serverName + "..."); | |
player.sendPluginMessage(instance, "BungeeCord", b.toByteArray()); | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package pl.themolka.bungee; | |
import org.bukkit.ChatColor; | |
import org.bukkit.entity.Player; | |
import org.bukkit.event.Cancellable; | |
import org.bukkit.event.Event; | |
import org.bukkit.event.HandlerList; | |
/** | |
* author TheMolkaPL | |
*/ | |
public class PlayerChangeServerEvent extends Event implements Cancellable { | |
private static final HandlerList handlers = new HandlerList(); | |
private boolean cancelled; | |
private Player playerPla; | |
private String serverStr; | |
private String serverAddressStr; | |
private String messageStr = ChatColor.GRAY + "Connecting to server " + ChatColor.GOLD + null + ChatColor.GRAY + "..."; | |
public PlayerChangeServerEvent(Player player, String server, String serverAddress) { | |
playerPla = player; | |
serverStr = server; | |
serverAddressStr = serverAddress; | |
messageStr = ChatColor.GRAY + "Connecting to server " + ChatColor.GOLD + server + ChatColor.GRAY + "..."; | |
} | |
@Override | |
public HandlerList getHandlers() { | |
return handlers; | |
} | |
public static HandlerList getHandlerList() { | |
return handlers; | |
} | |
@Override | |
public boolean isCancelled() { | |
return cancelled; | |
} | |
@Override | |
public void setCancelled(boolean cancel) { | |
cancelled = cancel; | |
} | |
public String getMessage() { | |
return messageStr; | |
} | |
public Player getPlayer() { | |
return playerPla; | |
} | |
public String getServer() { | |
return serverStr; | |
} | |
public String getServerAddress() { | |
return serverAddressStr; | |
} | |
public void setMessage(String message) { | |
messageStr = message; | |
} | |
public void setServer(String server) { | |
serverStr = server; | |
} | |
public void setServerAddress(String serverAddress) { | |
serverAddressStr = serverAddress; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment