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();
}
}
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();
}
}
Aggregations