Search in sources :

Example 1 with Packet

use of com.alessiodp.parties.bungeecord.utils.Packet in project Parties by AlessioDP.

the class BungeeListener method onConnect.

@EventHandler
public void onConnect(ServerConnectEvent event) {
    /*
		 * Connect chain starts here,
		 * this method will sent a PartiesPacket to the player server
		 */
    if (event.isCancelled())
        return;
    ProxiedPlayer proxyPlayer = event.getPlayer();
    // Return if its not a player
    if (proxyPlayer.getServer() == null)
        return;
    // Return if the player is already in the server
    if (proxyPlayer.getServer().getInfo().equals(event.getTarget()))
        return;
    // Return if the server is not into the follow list
    if (!listContains(ConfigMain.follow_listserver, proxyPlayer.getServer().getInfo().getName()))
        return;
    /*
		 * 
		 */
    try {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(stream);
        // Initialize packet
        Packet packet = new Packet(plugin.getDescription().getVersion(), event.getTarget().getName(), ConfigMain.follow_neededrank, ConfigMain.follow_minimumrank);
        // Write to the DataOutputStream the data
        packet.write(out);
        if (proxyPlayer.getServer() != null) {
            PartiesBungee.debugLog("Parties packet sent to " + proxyPlayer.getServer().getInfo().getName());
            proxyPlayer.getServer().sendData(partiesChannel, stream.toByteArray());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Also used : ProxiedPlayer(net.md_5.bungee.api.connection.ProxiedPlayer) Packet(com.alessiodp.parties.bungeecord.utils.Packet) DataOutputStream(java.io.DataOutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) EventHandler(net.md_5.bungee.event.EventHandler)

Example 2 with Packet

use of com.alessiodp.parties.bungeecord.utils.Packet in project Parties by AlessioDP.

the class BungeeService method onPluginMessageReceived.

public void onPluginMessageReceived(String channel, Player player, byte[] message) {
    if (!channel.equals(partiesChannel)) {
        return;
    }
    ByteArrayInputStream stream = new ByteArrayInputStream(message);
    DataInputStream in = new DataInputStream(stream);
    // Load entities
    PartyPlayerEntity pp = plugin.getPlayerManager().getPlayer(player.getUniqueId());
    PartyEntity party = plugin.getPartyManager().getParty(pp.getPartyName());
    try {
        // Get packet in input
        Packet packet = new Packet(in);
        if (packet.getVersion().equals(plugin.getDescription().getVersion())) {
            // Does the player have a party
            if (party != null) {
                // Check for rank needed to follow
                if (pp.getRank() < packet.getRankNeeded())
                    return;
                // Preparing a list that contains the name of each player to teleport
                List<String> list = new ArrayList<String>();
                for (Player pl : party.getOnlinePlayers()) {
                    UUID pUuid = pl.getUniqueId();
                    if (!pUuid.equals(player.getUniqueId())) {
                        // Have the player the minimum rank to follow?
                        if (plugin.getPlayerManager().getPlayer(pUuid).getRank() >= packet.getRankMinimum()) {
                            list.add(pUuid.toString());
                        }
                    }
                }
                // Set the info list
                packet.setInfo(list);
                // Set the message for the user
                packet.setMessage(ChatColor.translateAlternateColorCodes('&', Messages.OTHER_FOLLOW_SERVER.replace("%server%", packet.getServer())));
                // Send the output
                ByteArrayOutputStream outstream = new ByteArrayOutputStream();
                DataOutputStream out = new DataOutputStream(outstream);
                packet.write(out);
                try {
                    Player p = Bukkit.getServer().getOnlinePlayers().iterator().next();
                    if (p != null) {
                        LoggerManager.log(LogLevel.DEBUG, Constants.DEBUG_BUNGEE_REPLY, true);
                        p.sendPluginMessage(plugin, partiesChannel, outstream.toByteArray());
                    }
                } catch (Exception ex) {
                // Server empty
                }
            }
        } else {
            LoggerManager.printError(Constants.DEBUG_BUNGEE_VERSIONMISMATCH.replace("{packet}", packet.getVersion()));
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}
Also used : Packet(com.alessiodp.parties.bungeecord.utils.Packet) PartyPlayerEntity(com.alessiodp.parties.players.objects.PartyPlayerEntity) Player(org.bukkit.entity.Player) DataOutputStream(java.io.DataOutputStream) ArrayList(java.util.ArrayList) PartyEntity(com.alessiodp.parties.parties.objects.PartyEntity) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) DataInputStream(java.io.DataInputStream) IOException(java.io.IOException) ByteArrayInputStream(java.io.ByteArrayInputStream) UUID(java.util.UUID)

Aggregations

Packet (com.alessiodp.parties.bungeecord.utils.Packet)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 DataOutputStream (java.io.DataOutputStream)2 IOException (java.io.IOException)2 PartyEntity (com.alessiodp.parties.parties.objects.PartyEntity)1 PartyPlayerEntity (com.alessiodp.parties.players.objects.PartyPlayerEntity)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 DataInputStream (java.io.DataInputStream)1 ArrayList (java.util.ArrayList)1 UUID (java.util.UUID)1 ProxiedPlayer (net.md_5.bungee.api.connection.ProxiedPlayer)1 EventHandler (net.md_5.bungee.event.EventHandler)1 Player (org.bukkit.entity.Player)1