Search in sources :

Example 1 with NucleusOnLoginEvent

use of io.github.nucleuspowered.nucleus.modules.core.events.NucleusOnLoginEvent in project Nucleus by NucleusPowered.

the class CoreListener method onPlayerLoginLast.

/* (non-Javadoc)
     * We do this last to avoid interfering with other modules.
     */
@Listener(order = Order.LATE)
public void onPlayerLoginLast(final ClientConnectionEvent.Login event, @Getter("getProfile") GameProfile profile, @Getter("getTargetUser") User user) {
    Nucleus.getNucleus().getUserDataManager().get(profile.getUniqueId()).ifPresent(qsu -> {
        if (event.getFromTransform().equals(event.getToTransform())) {
            CoreUserDataModule c = qsu.get(CoreUserDataModule.class);
            // Check this
            NucleusOnLoginEvent onLoginEvent = CauseStackHelper.createFrameWithCausesWithReturn(cause -> new NucleusOnLoginEvent(cause, user, qsu, event.getFromTransform()), profile);
            Sponge.getEventManager().post(onLoginEvent);
            if (onLoginEvent.getTo().isPresent()) {
                event.setToTransform(onLoginEvent.getTo().get());
                c.removeLocationOnLogin();
                return;
            }
            // If we have a location to send them to in the config, send them there now!
            Optional<Location<World>> olw = c.getLocationOnLogin();
            olw.ifPresent(worldLocation -> {
                event.setToTransform(event.getFromTransform().setLocation(worldLocation));
                c.removeLocationOnLogin();
            });
        }
        plugin.getUserCacheService().updateCacheForPlayer(qsu);
    });
}
Also used : NucleusOnLoginEvent(io.github.nucleuspowered.nucleus.modules.core.events.NucleusOnLoginEvent) CoreUserDataModule(io.github.nucleuspowered.nucleus.modules.core.datamodules.CoreUserDataModule) Location(org.spongepowered.api.world.Location) ServiceChangeListener(io.github.nucleuspowered.nucleus.internal.permissions.ServiceChangeListener) Listener(org.spongepowered.api.event.Listener)

Aggregations

ServiceChangeListener (io.github.nucleuspowered.nucleus.internal.permissions.ServiceChangeListener)1 CoreUserDataModule (io.github.nucleuspowered.nucleus.modules.core.datamodules.CoreUserDataModule)1 NucleusOnLoginEvent (io.github.nucleuspowered.nucleus.modules.core.events.NucleusOnLoginEvent)1 Listener (org.spongepowered.api.event.Listener)1 Location (org.spongepowered.api.world.Location)1