Add forced host check
This commit is contained in:
parent
82d6c04d58
commit
a92638c097
@ -6,7 +6,7 @@ plugins {
|
|||||||
sourceCompatibility = JavaVersion.VERSION_17
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
|
|
||||||
group 'com.actualplayer'
|
group 'com.actualplayer'
|
||||||
version '1.2.4'
|
version '1.3.0'
|
||||||
description 'A way for the user to login to the server he last connected to.'
|
description 'A way for the user to login to the server he last connected to.'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
@ -4,7 +4,6 @@ import com.actualplayer.rememberme.handlers.*;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import com.google.inject.name.Named;
|
import com.google.inject.name.Named;
|
||||||
import com.velocitypowered.api.event.Subscribe;
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
import com.velocitypowered.api.event.connection.LoginEvent;
|
|
||||||
import com.velocitypowered.api.event.player.PlayerChooseInitialServerEvent;
|
import com.velocitypowered.api.event.player.PlayerChooseInitialServerEvent;
|
||||||
import com.velocitypowered.api.event.player.ServerConnectedEvent;
|
import com.velocitypowered.api.event.player.ServerConnectedEvent;
|
||||||
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||||
@ -12,6 +11,7 @@ import com.velocitypowered.api.plugin.Dependency;
|
|||||||
import com.velocitypowered.api.plugin.Plugin;
|
import com.velocitypowered.api.plugin.Plugin;
|
||||||
import com.velocitypowered.api.plugin.PluginContainer;
|
import com.velocitypowered.api.plugin.PluginContainer;
|
||||||
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
||||||
|
import com.velocitypowered.api.proxy.Player;
|
||||||
import com.velocitypowered.api.proxy.ProxyServer;
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.luckperms.api.LuckPerms;
|
import net.luckperms.api.LuckPerms;
|
||||||
@ -19,6 +19,7 @@ import net.luckperms.api.LuckPermsProvider;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.concurrent.CancellationException;
|
import java.util.concurrent.CancellationException;
|
||||||
import java.util.concurrent.CompletionException;
|
import java.util.concurrent.CompletionException;
|
||||||
|
|
||||||
@ -70,6 +71,10 @@ public class RememberMe {
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onServerChooseEvent(PlayerChooseInitialServerEvent chooseServerEvent) {
|
public void onServerChooseEvent(PlayerChooseInitialServerEvent chooseServerEvent) {
|
||||||
|
if (wasDirectConnection(chooseServerEvent)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Ignore plugin when user has notransfer permission
|
// Ignore plugin when user has notransfer permission
|
||||||
if (!chooseServerEvent.getPlayer().hasPermission("rememberme.notransfer")) {
|
if (!chooseServerEvent.getPlayer().hasPermission("rememberme.notransfer")) {
|
||||||
handler.getLastServerName(chooseServerEvent.getPlayer().getUniqueId()).thenAcceptAsync(lastServerName -> {
|
handler.getLastServerName(chooseServerEvent.getPlayer().getUniqueId()).thenAcceptAsync(lastServerName -> {
|
||||||
@ -89,6 +94,36 @@ public class RememberMe {
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onServerChange(ServerConnectedEvent serverConnectedEvent) {
|
public void onServerChange(ServerConnectedEvent serverConnectedEvent) {
|
||||||
|
if (getPlayerForcedHost(serverConnectedEvent.getPlayer()).isPresent()) {
|
||||||
|
// was a direct connection, do not save the last server name
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
handler.setLastServerName(serverConnectedEvent.getPlayer().getUniqueId(), serverConnectedEvent.getServer().getServerInfo().getName());
|
handler.setLastServerName(serverConnectedEvent.getPlayer().getUniqueId(), serverConnectedEvent.getServer().getServerInfo().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean wasDirectConnection(PlayerChooseInitialServerEvent chooseServerEvent) {
|
||||||
|
var connectedToHost = getPlayerForcedHost(chooseServerEvent.getPlayer());
|
||||||
|
if (connectedToHost.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
getLogger().info("Player {} connected to a forced host ({})", chooseServerEvent.getPlayer().getUsername(), connectedToHost.get());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<String> getPlayerForcedHost(Player player) {
|
||||||
|
var overrides = getServer().getConfiguration().getForcedHosts();
|
||||||
|
var connectedTo = player.getVirtualHost();
|
||||||
|
if (connectedTo.isEmpty()) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
var connectedToHost = connectedTo.get().getHostName();
|
||||||
|
if (!overrides.containsKey(connectedToHost)) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Optional.of(connectedToHost);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user