package fi.flexplex.connect; import com.destroystokyo.paper.profile.ProfileProperty; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerPreLoginEvent; public final class FlexConnectListener implements Listener { private final FlexConnect flexConnect; public FlexConnectListener(final FlexConnect flexConnect) { this.flexConnect = flexConnect; } @EventHandler public void onAsyncPlayerPreLogin(final AsyncPlayerPreLoginEvent event) { // Authenticate players for (final ProfileProperty property : event.getPlayerProfile().getProperties()) { if (property.getName().equals("flexplex-token") && property.getValue().equals(flexConnect.getToken())) { // Authentication success return; } } // Authentication failed event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Access denied"); } }