/** * Handles pre-hooks for a player login. * * @param name the name of the player who is logging in * @param address the address of the player who is logging in * @param uuid the UUID of the player who is logging in, provided by Mojang * @return an AsyncPlayerPreLoginEvent */ @SuppressWarnings("deprecation") public AsyncPlayerPreLoginEvent onPlayerPreLogin(String name, InetSocketAddress address, UUID uuid) { // call async event AsyncPlayerPreLoginEvent event = new AsyncPlayerPreLoginEvent(name, address .getAddress(), uuid); callEvent(event); // call sync event only if needed if (PlayerPreLoginEvent.getHandlerList().getRegisteredListeners().length > 0) { // initialize event to match current state from async event PlayerPreLoginEvent syncEvent = new PlayerPreLoginEvent(name, address .getAddress(), uuid); if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { syncEvent.disallow(event.getResult(), event.getKickMessage()); } // call event synchronously and copy data back to original event callEvent(syncEvent); event.disallow(syncEvent.getResult(), syncEvent.getKickMessage()); } return event; }
syncEvent.disallow(asyncEvent.getResult(), asyncEvent.getKickMessage());