Search in sources :

Example 1 with PostLoginEvent

use of net.md_5.bungee.api.event.PostLoginEvent in project BungeeCord by SpigotMC.

the class InitialHandler method finish.

private void finish() {
    if (isOnlineMode()) {
        // Check for multiple connections
        // We have to check for the old name first
        ProxiedPlayer oldName = bungee.getPlayer(getName());
        if (oldName != null) {
            // TODO See #1218
            oldName.disconnect(bungee.getTranslation("already_connected_proxy"));
        }
        // And then also for their old UUID
        ProxiedPlayer oldID = bungee.getPlayer(getUniqueId());
        if (oldID != null) {
            // TODO See #1218
            oldID.disconnect(bungee.getTranslation("already_connected_proxy"));
        }
    } else {
        // In offline mode the existing user stays and we kick the new one
        ProxiedPlayer oldName = bungee.getPlayer(getName());
        if (oldName != null) {
            // TODO See #1218
            disconnect(bungee.getTranslation("already_connected_proxy"));
            return;
        }
    }
    offlineId = UUID.nameUUIDFromBytes(("OfflinePlayer:" + getName()).getBytes(Charsets.UTF_8));
    if (uniqueId == null) {
        uniqueId = offlineId;
    }
    Callback<LoginEvent> complete = new Callback<LoginEvent>() {

        @Override
        public void done(LoginEvent result, Throwable error) {
            if (result.isCancelled()) {
                disconnect(result.getCancelReasonComponents());
                return;
            }
            if (ch.isClosed()) {
                return;
            }
            ch.getHandle().eventLoop().execute(new Runnable() {

                @Override
                public void run() {
                    if (!ch.isClosing()) {
                        UserConnection userCon = new UserConnection(bungee, ch, getName(), InitialHandler.this);
                        userCon.setCompressionThreshold(BungeeCord.getInstance().config.getCompressionThreshold());
                        userCon.init();
                        unsafe.sendPacket(new LoginSuccess(getUniqueId(), getName()));
                        ch.setProtocol(Protocol.GAME);
                        ch.getHandle().pipeline().get(HandlerBoss.class).setHandler(new UpstreamBridge(bungee, userCon));
                        bungee.getPluginManager().callEvent(new PostLoginEvent(userCon));
                        ServerInfo server;
                        if (bungee.getReconnectHandler() != null) {
                            server = bungee.getReconnectHandler().getServer(userCon);
                        } else {
                            server = AbstractReconnectHandler.getForcedHost(InitialHandler.this);
                        }
                        if (server == null) {
                            server = bungee.getServerInfo(listener.getDefaultServer());
                        }
                        userCon.connect(server, null, true, ServerConnectEvent.Reason.JOIN_PROXY);
                    }
                }
            });
        }
    };
    // fire login event
    bungee.getPluginManager().callEvent(new LoginEvent(InitialHandler.this, complete));
}
Also used : ProxiedPlayer(net.md_5.bungee.api.connection.ProxiedPlayer) Callback(net.md_5.bungee.api.Callback) ServerInfo(net.md_5.bungee.api.config.ServerInfo) BungeeServerInfo(net.md_5.bungee.BungeeServerInfo) PostLoginEvent(net.md_5.bungee.api.event.PostLoginEvent) PostLoginEvent(net.md_5.bungee.api.event.PostLoginEvent) LoginEvent(net.md_5.bungee.api.event.LoginEvent) PreLoginEvent(net.md_5.bungee.api.event.PreLoginEvent) LoginSuccess(net.md_5.bungee.protocol.packet.LoginSuccess) UserConnection(net.md_5.bungee.UserConnection)

Example 2 with PostLoginEvent

use of net.md_5.bungee.api.event.PostLoginEvent in project CommandBlocker by TreyRuffy.

the class Update method onJoin.

@EventHandler
public void onJoin(PostLoginEvent e) {
    if (!notifyAboutUpdate)
        return;
    MethodInterface mi = Universal.get().getMethods();
    Configuration config = (Configuration) mi.getConfig();
    if (!config.getBoolean("Updates.Check")) {
        return;
    }
    if (!config.getBoolean("Updates.TellPlayers")) {
        return;
    }
    ProxiedPlayer p = e.getPlayer();
    if (!p.hasPermission("cb.updates")) {
        return;
    }
    for (Component msgToSend : mi.getOldMessages("Updates", "UpdateFound")) {
        HashMap<String, String> placeholders = new HashMap<>();
        placeholders.put("%s", latestUpdateVersion);
        mi.sendMessage(p, Variables.translateVariables(msgToSend, p, placeholders));
    }
}
Also used : ProxiedPlayer(net.md_5.bungee.api.connection.ProxiedPlayer) MethodInterface(me.treyruffy.commandblocker.MethodInterface) Configuration(net.md_5.bungee.config.Configuration) HashMap(java.util.HashMap) Component(net.kyori.adventure.text.Component) EventHandler(net.md_5.bungee.event.EventHandler)

Example 3 with PostLoginEvent

use of net.md_5.bungee.api.event.PostLoginEvent in project DiscordBot by LXGaming.

the class PlayerListener method onPostLogin.

@EventHandler(priority = EventPriority.HIGHEST)
public void onPostLogin(PostLoginEvent event) {
    if (event.getPlayer() == null) {
        return;
    }
    if (!DiscordBotCore.getInstance().getConfiguration().isPlayerJoin() || event.getPlayer().hasPermission("DiscordBot.Silent")) {
        return;
    }
    Message message = new Message().setChannel(DiscordBotCore.getInstance().getConfiguration().getChannels().get("Global").getChannel()).setFormat(DiscordBotCore.getInstance().getConfiguration().getPlayerFormat().get("Join")).setName(event.getPlayer().getName()).setNick(event.getPlayer().getDisplayName()).setServer("Unknown").setMessage("Joined").setDiscord(true).setMinecraft(false).setConsole(false).setRedis(false);
    if (event.getPlayer().getServer() != null && event.getPlayer().getServer().getInfo() != null) {
        message.setServer(event.getPlayer().getServer().getInfo().getName());
    }
    DiscordBotCore.getInstance().getMessageSender().sendMessage(message);
    return;
}
Also used : Message(io.github.lxgaming.discordbot.entries.Message) EventHandler(net.md_5.bungee.event.EventHandler)

Example 4 with PostLoginEvent

use of net.md_5.bungee.api.event.PostLoginEvent in project ChangeSkin by games647.

the class ConnectListener method onPlayerLogin.

@EventHandler(priority = EventPriority.HIGH)
public void onPlayerLogin(PostLoginEvent postLoginEvent) {
    ProxiedPlayer player = postLoginEvent.getPlayer();
    UserPreference preferences = plugin.getLoginSession(player.getPendingConnection());
    if (preferences == null || isBlacklistEnabled()) {
        return;
    }
    preferences.getTargetSkin().ifPresent(skin -> plugin.getApi().applySkin(player, skin));
}
Also used : ProxiedPlayer(net.md_5.bungee.api.connection.ProxiedPlayer) UserPreference(com.github.games647.changeskin.core.model.UserPreference) EventHandler(net.md_5.bungee.event.EventHandler)

Example 5 with PostLoginEvent

use of net.md_5.bungee.api.event.PostLoginEvent in project HuskSync by WiIIiam278.

the class BungeeEventListener method onPostLogin.

@EventHandler(priority = EventPriority.LOWEST)
public void onPostLogin(PostLoginEvent event) {
    final ProxiedPlayer player = event.getPlayer();
    ProxyServer.getInstance().getScheduler().runAsync(plugin, () -> {
        // Ensure the player has data on SQL and that it is up-to-date
        HuskSyncBungeeCord.dataManager.ensurePlayerExists(player.getUniqueId(), player.getName());
        // Get the player's data from SQL
        final Map<Settings.SynchronisationCluster, PlayerData> data = HuskSyncBungeeCord.dataManager.getPlayerData(player.getUniqueId());
        // Update the player's data from SQL onto the cache
        assert data != null;
        for (Settings.SynchronisationCluster cluster : data.keySet()) {
            HuskSyncBungeeCord.dataManager.playerDataCache.get(cluster).updatePlayer(data.get(cluster));
        }
        // Send a message asking the bukkit to request data on join
        try {
            new RedisMessage(RedisMessage.MessageType.REQUEST_DATA_ON_JOIN, new RedisMessage.MessageTarget(Settings.ServerType.BUKKIT, null, null), RedisMessage.RequestOnJoinUpdateType.ADD_REQUESTER.toString(), player.getUniqueId().toString()).send();
        } catch (IOException e) {
            plugin.getBungeeLogger().log(Level.SEVERE, "Failed to serialize request data on join message data");
            e.printStackTrace();
        }
    });
}
Also used : ProxiedPlayer(net.md_5.bungee.api.connection.ProxiedPlayer) RedisMessage(me.william278.husksync.redis.RedisMessage) IOException(java.io.IOException) PlayerData(me.william278.husksync.PlayerData) Settings(me.william278.husksync.Settings) EventHandler(net.md_5.bungee.event.EventHandler)

Aggregations

EventHandler (net.md_5.bungee.event.EventHandler)16 ProxiedPlayer (net.md_5.bungee.api.connection.ProxiedPlayer)13 IOException (java.io.IOException)3 Component (net.kyori.adventure.text.Component)3 UserConnection (net.md_5.bungee.UserConnection)3 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)2 Field (java.lang.reflect.Field)2 UUID (java.util.UUID)2 PostLoginEvent (net.md_5.bungee.api.event.PostLoginEvent)2 ChannelWrapper (net.md_5.bungee.netty.ChannelWrapper)2 ModData (cc.funkemunky.bungee.data.ModData)1 User (cc.funkemunky.bungee.data.user.User)1 BungeePlayer (codecrafter47.bungeetablistplus.player.BungeePlayer)1 ExcludedServersTabOverlayProvider (codecrafter47.bungeetablistplus.tablist.ExcludedServersTabOverlayProvider)1 PlayerName (com.djrapitops.plan.delivery.domain.PlayerName)1 ServerName (com.djrapitops.plan.delivery.domain.ServerName)1 ActiveSession (com.djrapitops.plan.gathering.domain.ActiveSession)1 Database (com.djrapitops.plan.storage.database.Database)1 PlayerRegisterTransaction (com.djrapitops.plan.storage.database.transactions.events.PlayerRegisterTransaction)1 StoreGeoInfoTransaction (com.djrapitops.plan.storage.database.transactions.events.StoreGeoInfoTransaction)1