45 lines
1.4 KiB
Java
45 lines
1.4 KiB
Java
package fi.flexplex.connect;
|
|
|
|
import com.destroystokyo.paper.event.server.WhitelistToggleEvent;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.EventPriority;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.player.PlayerLoginEvent;
|
|
|
|
import fi.flexplex.connect.event.AsyncWhitelistChangedEvent;
|
|
|
|
public final class FlexConnectListener implements Listener {
|
|
|
|
private final FlexConnect flexConnect;
|
|
|
|
public FlexConnectListener(final FlexConnect flexConnect) {
|
|
this.flexConnect = flexConnect;
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPlayerLogin(final PlayerLoginEvent event) {
|
|
if (flexConnect.getProxyAddresses().contains(event.getRealAddress().getHostAddress())) {
|
|
// Connection is coming from allowed proxy
|
|
return;
|
|
}
|
|
|
|
// Do not allow connections from other proxies
|
|
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Access denied");
|
|
}
|
|
|
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
|
|
public void onWhitelistToggle(final WhitelistToggleEvent event) {
|
|
Bukkit.getScheduler().runTaskAsynchronously(this.flexConnect, () ->
|
|
this.flexConnect.getFlexPlexGraphQLApi().updateWhitelist(event.isEnabled())
|
|
);
|
|
}
|
|
|
|
@EventHandler
|
|
public void onAsyncWhitelistChanged(final AsyncWhitelistChangedEvent event) {
|
|
this.flexConnect.getFlexPlexGraphQLApi().updateWhitelist();
|
|
}
|
|
|
|
}
|