Search in sources :

Example 1 with ProxyConfig

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);
}
Also used : CloudPlayerCommandSender(de.dytanic.cloudnet.bridge.internal.util.CloudPlayerCommandSender) ProxyGroup(de.dytanic.cloudnet.lib.server.ProxyGroup) TypeToken(com.google.gson.reflect.TypeToken) CloudPlayer(de.dytanic.cloudnet.lib.player.CloudPlayer) CommandSender(net.md_5.bungee.api.CommandSender) CloudPlayerCommandSender(de.dytanic.cloudnet.bridge.internal.util.CloudPlayerCommandSender) ProxyConfig(de.dytanic.cloudnet.lib.proxylayout.ProxyConfig) PlayerConnection(de.dytanic.cloudnet.lib.player.PlayerConnection) EventHandler(net.md_5.bungee.event.EventHandler)

Example 2 with ProxyConfig

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);
    }
}
Also used : ProxyGroup(de.dytanic.cloudnet.lib.server.ProxyGroup) Motd(de.dytanic.cloudnet.lib.proxylayout.Motd) ProxyConfig(de.dytanic.cloudnet.lib.proxylayout.ProxyConfig) CloudProxy(de.dytanic.cloudnet.bridge.CloudProxy) ServerPing(net.md_5.bungee.api.ServerPing) EventHandler(net.md_5.bungee.event.EventHandler)

Aggregations

ProxyConfig (de.dytanic.cloudnet.lib.proxylayout.ProxyConfig)2 ProxyGroup (de.dytanic.cloudnet.lib.server.ProxyGroup)2 EventHandler (net.md_5.bungee.event.EventHandler)2 TypeToken (com.google.gson.reflect.TypeToken)1 CloudProxy (de.dytanic.cloudnet.bridge.CloudProxy)1 CloudPlayerCommandSender (de.dytanic.cloudnet.bridge.internal.util.CloudPlayerCommandSender)1 CloudPlayer (de.dytanic.cloudnet.lib.player.CloudPlayer)1 PlayerConnection (de.dytanic.cloudnet.lib.player.PlayerConnection)1 Motd (de.dytanic.cloudnet.lib.proxylayout.Motd)1 CommandSender (net.md_5.bungee.api.CommandSender)1 ServerPing (net.md_5.bungee.api.ServerPing)1