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