use of de.dytanic.cloudnet.lib.proxylayout.ProxyConfig in project CloudNet by Dytanic.
the class ProxiedListener method handleLogin.
@EventHandler(priority = EventPriority.LOWEST)
public void handleLogin(LoginEvent e) {
PlayerConnection playerConnection = new PlayerConnection(e.getConnection().getUniqueId(), e.getConnection().getName(), e.getConnection().getVersion(), e.getConnection().getAddress().getAddress().getHostAddress(), e.getConnection().getAddress().getPort(), e.getConnection().isOnlineMode(), e.getConnection().isLegacy());
CloudPlayer cloudPlayer = CloudAPI.getInstance().getNetworkConnection().getPacketManager().sendQuery(new PacketOutPlayerLoginRequest(playerConnection), CloudAPI.getInstance().getNetworkConnection()).getResult().getObject("player", new TypeToken<CloudPlayer>() {
}.getType());
if (cloudPlayer == null) {
e.setCancelReason(TextComponent.fromLegacyText("§cYou are already on the network!"));
e.setCancelled(true);
}
CommandSender cloudCommandSender = new CloudPlayerCommandSender(cloudPlayer);
if (CloudProxy.getInstance().getProxyGroup() != null) {
ProxyConfig proxyConfig = CloudProxy.getInstance().getProxyGroup().getProxyConfig();
if ((proxyConfig.isEnabled() && proxyConfig.isMaintenance())) {
PermissionCheckEvent permissionCheckEvent = new PermissionCheckEvent(cloudCommandSender, "cloudnet.maintenance", false);
if (!proxyConfig.getWhitelist().contains(e.getConnection().getName()) && !ProxyServer.getInstance().getPluginManager().callEvent(permissionCheckEvent).hasPermission()) {
e.setCancelled(true);
e.setCancelReason(ChatColor.translateAlternateColorCodes('&', CloudAPI.getInstance().getCloudNetwork().getMessages().getString("kick-maintenance")));
return;
}
}
}
ProxyGroup proxyGroup = CloudProxy.getInstance().getProxyGroup();
if (proxyGroup.getProxyConfig().isEnabled())
if (CloudAPI.getInstance().getOnlineCount() >= CloudProxy.getInstance().getProxyGroup().getProxyConfig().getMaxPlayers()) {
PermissionCheckEvent permissionCheckEvent = new PermissionCheckEvent(cloudCommandSender, "cloudnet.fulljoin", false);
if (!ProxyServer.getInstance().getPluginManager().callEvent(permissionCheckEvent).hasPermission()) {
e.setCancelled(true);
e.setCancelReason(ChatColor.translateAlternateColorCodes('&', CloudAPI.getInstance().getCloudNetwork().getMessages().getString("full-join")));
return;
}
}
CloudProxy.getInstance().getCloudPlayers().put(cloudPlayer.getUniqueId(), cloudPlayer);
}
use of de.dytanic.cloudnet.lib.proxylayout.ProxyConfig in project CloudNet by Dytanic.
the class ProxiedListener method handleProxyPing.
@EventHandler(priority = EventPriority.HIGHEST)
public void handleProxyPing(ProxyPingEvent event) {
ProxyGroup proxyGroup = CloudAPI.getInstance().getProxyGroupData(CloudAPI.getInstance().getGroup());
if (proxyGroup != null && proxyGroup.getProxyConfig().isEnabled()) {
ProxyConfig proxyConfig = proxyGroup.getProxyConfig();
ServerPing serverPing = event.getResponse();
if (!proxyConfig.isMaintenance()) {
Motd motd = proxyConfig.getMotdsLayouts().get(NetworkUtils.RANDOM.nextInt(proxyConfig.getMotdsLayouts().size()));
serverPing.setDescription(ChatColor.translateAlternateColorCodes('&', motd.getFirstLine() + "\n" + motd.getSecondLine()).replace("%proxy%", CloudAPI.getInstance().getServerId()).replace("%version%", CloudProxy.class.getPackage().getImplementationVersion()));
} else {
serverPing.setDescription(ChatColor.translateAlternateColorCodes('&', proxyConfig.getMaintenanceMotdLayout().getFirstLine() + "\n" + proxyConfig.getMaintenanceMotdLayout().getSecondLine()).replace("%proxy%", CloudAPI.getInstance().getServerId()).replace("%version%", CloudProxy.class.getPackage().getImplementationVersion()));
}
int onlineCount = CloudAPI.getInstance().getOnlineCount();
int max = (proxyConfig.getAutoSlot().isEnabled() ? onlineCount + proxyConfig.getAutoSlot().getDynamicSlotSize() : proxyConfig.getMaxPlayers());
ServerPing.PlayerInfo[] playerInfos = new ServerPing.PlayerInfo[proxyConfig.getPlayerInfo().length];
for (short i = 0; i < playerInfos.length; i++) {
playerInfos[i] = new ServerPing.PlayerInfo(ChatColor.translateAlternateColorCodes('&', proxyConfig.getPlayerInfo()[i]), UUID.randomUUID());
}
serverPing.setPlayers(new ServerPing.Players(max, onlineCount, playerInfos));
if (proxyConfig.isMaintenance())
serverPing.setVersion(new ServerPing.Protocol(proxyConfig.getMaintenaceProtocol(), 1));
event.setResponse(serverPing);
}
}
Aggregations