Added plugin API
This commit is contained in:
parent
71b7aff0dd
commit
d267f1c3fa
@ -19,23 +19,25 @@ import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class AuthMeVelocityPlugin {
|
||||
private final ProxyServer server;
|
||||
private static ProxyServer proxy;
|
||||
private final Logger logger;
|
||||
private static Yaml config = new Yaml("config", "plugins/AuthmeVelocity");
|
||||
|
||||
public final List<UUID> loggedPlayers = Collections.synchronizedList(new ArrayList<>());
|
||||
protected static final List<UUID> loggedPlayers = Collections.synchronizedList(new ArrayList<>());
|
||||
|
||||
@Inject
|
||||
public AuthMeVelocityPlugin(ProxyServer server, Logger logger) {
|
||||
this.server = server;
|
||||
proxy = server;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onProxyInitialize(ProxyInitializeEvent event) {
|
||||
server.getChannelRegistrar().register(new LegacyChannelIdentifier("authmevelocity:main"), MinecraftChannelIdentifier.create("authmevelocity", "main"));
|
||||
server.getEventManager().register(this, new ProxyListener(this, server));
|
||||
server.getEventManager().register(this, new FastLoginListener(this, server));
|
||||
proxy.getChannelRegistrar().register(
|
||||
new LegacyChannelIdentifier("authmevelocity:main"),
|
||||
MinecraftChannelIdentifier.create("authmevelocity", "main"));
|
||||
proxy.getEventManager().register(this, new ProxyListener(proxy));
|
||||
proxy.getEventManager().register(this, new FastLoginListener(proxy));
|
||||
AuthMeConfig.defaultConfig();
|
||||
logger.info("AuthMeVelocity enabled");
|
||||
logger.info("AuthServers: " + config.getList("authservers"));
|
||||
@ -44,4 +46,8 @@ public class AuthMeVelocityPlugin {
|
||||
public static Yaml getConfig(){
|
||||
return config;
|
||||
}
|
||||
|
||||
protected static ProxyServer getProxy(){
|
||||
return proxy;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,51 @@
|
||||
package com.glyart.authmevelocity.proxy;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
|
||||
public class AuthmeVelocityAPI {
|
||||
/**
|
||||
* Check if the player is logged in or not
|
||||
* @param player the player
|
||||
* @return if the player is logged in or not
|
||||
*/
|
||||
public static boolean isLogged(Player player){
|
||||
final UUID playerUUID = player.getUniqueId();
|
||||
return AuthMeVelocityPlugin.loggedPlayers.contains(playerUUID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a player to the list of logged in players
|
||||
* @param player the new logged player
|
||||
*/
|
||||
public static void addPlayer(Player player){
|
||||
final UUID playerUUID = player.getUniqueId();
|
||||
if(!AuthmeVelocityAPI.isLogged(player)){
|
||||
AuthMeVelocityPlugin.loggedPlayers.add(playerUUID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a player from the list of logged-in players
|
||||
* @param player the unlogged player
|
||||
*/
|
||||
public static void removePlayer(Player player){
|
||||
final UUID playerUUID = player.getUniqueId();
|
||||
if(AuthmeVelocityAPI.isLogged(player)){
|
||||
AuthMeVelocityPlugin.loggedPlayers.remove(playerUUID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes players who meet the established condition
|
||||
* @param predicate the condition
|
||||
*/
|
||||
public static void removePlayerIf(Predicate<Player> predicate){
|
||||
AuthMeVelocityPlugin.loggedPlayers.stream()
|
||||
.map(uuid -> AuthMeVelocityPlugin.getProxy().getPlayer(uuid).orElse(null))
|
||||
.filter(predicate)
|
||||
.forEach(player -> AuthMeVelocityPlugin.loggedPlayers.remove(player.getUniqueId()));
|
||||
}
|
||||
}
|
@ -3,6 +3,9 @@ package com.glyart.authmevelocity.proxy.event;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
|
||||
/**
|
||||
* Event executed in case the player is successfully logged in
|
||||
*/
|
||||
public class ProxyLoginEvent {
|
||||
|
||||
private final Player player;
|
||||
|
@ -1,29 +1,23 @@
|
||||
package com.glyart.authmevelocity.proxy.listener;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.github.games647.fastlogin.velocity.event.VelocityFastLoginAutoLoginEvent;
|
||||
import com.glyart.authmevelocity.proxy.AuthMeVelocityPlugin;
|
||||
import com.glyart.authmevelocity.proxy.AuthmeVelocityAPI;
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
|
||||
public class FastLoginListener {
|
||||
private final AuthMeVelocityPlugin plugin;
|
||||
private final ProxyServer server;
|
||||
public FastLoginListener(AuthMeVelocityPlugin plugin, ProxyServer server){
|
||||
this.plugin = plugin;
|
||||
public FastLoginListener(ProxyServer server){
|
||||
this.server = server;
|
||||
}
|
||||
@Subscribe
|
||||
public void onAutoLogin(VelocityFastLoginAutoLoginEvent event){
|
||||
Optional<Player> autoLoginPlayer = server.getPlayer(event.getProfile().getName());
|
||||
if(autoLoginPlayer.isPresent()){
|
||||
UUID playerUUID = autoLoginPlayer.get().getUniqueId();
|
||||
if(!plugin.loggedPlayers.contains(playerUUID)){
|
||||
plugin.loggedPlayers.add(playerUUID);
|
||||
}
|
||||
AuthmeVelocityAPI.addPlayer(autoLoginPlayer.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.glyart.authmevelocity.proxy.listener;
|
||||
|
||||
import com.glyart.authmevelocity.proxy.AuthMeVelocityPlugin;
|
||||
import com.glyart.authmevelocity.proxy.AuthmeVelocityAPI;
|
||||
import com.glyart.authmevelocity.proxy.event.ProxyLoginEvent;
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
@ -20,11 +21,9 @@ import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ProxyListener {
|
||||
private final AuthMeVelocityPlugin plugin;
|
||||
private final ProxyServer server;
|
||||
|
||||
public ProxyListener(AuthMeVelocityPlugin plugin, ProxyServer server) {
|
||||
this.plugin = plugin;
|
||||
public ProxyListener(ProxyServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
@ -39,29 +38,28 @@ public class ProxyListener {
|
||||
if (!sChannel.equals("LOGIN")) return;
|
||||
|
||||
String user = input.readUTF();
|
||||
Optional<Player> player = server.getPlayer(UUID.fromString(user));
|
||||
if (!player.isPresent()) return;
|
||||
Optional<Player> optionalPlayer = server.getPlayer(UUID.fromString(user));
|
||||
if (!optionalPlayer.isPresent()) return;
|
||||
|
||||
Player loggedPlayer = player.get();
|
||||
UUID playerUUID = loggedPlayer.getUniqueId();
|
||||
if (!plugin.loggedPlayers.contains(playerUUID)){
|
||||
plugin.loggedPlayers.add(playerUUID);
|
||||
Player loggedPlayer = optionalPlayer.get();
|
||||
if (!AuthmeVelocityAPI.isLogged(loggedPlayer)){
|
||||
AuthmeVelocityAPI.addPlayer(loggedPlayer);
|
||||
|
||||
RegisteredServer loginServer = player.get().getCurrentServer().get().getServer();
|
||||
RegisteredServer loginServer = loggedPlayer.getCurrentServer().get().getServer();
|
||||
server.getEventManager().fireAndForget(new ProxyLoginEvent(loggedPlayer, loginServer));
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDisconnect(final DisconnectEvent event) {
|
||||
plugin.loggedPlayers.remove(event.getPlayer().getUniqueId());
|
||||
AuthmeVelocityAPI.removePlayer(event.getPlayer());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onCommandExecute(final CommandExecuteEvent event) {
|
||||
if (!(event.getCommandSource() instanceof Player player)) return;
|
||||
|
||||
if (plugin.loggedPlayers.contains(player.getUniqueId())) return;
|
||||
if (AuthmeVelocityAPI.isLogged(player)) return;
|
||||
|
||||
Optional<ServerConnection> server = player.getCurrentServer();
|
||||
boolean isAuthServer = server.isPresent() &&
|
||||
@ -77,7 +75,7 @@ public class ProxyListener {
|
||||
@Subscribe
|
||||
public void onPlayerChat(final PlayerChatEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
if (plugin.loggedPlayers.contains(player.getUniqueId())) return;
|
||||
if (AuthmeVelocityAPI.isLogged(player)) return;
|
||||
|
||||
Optional<ServerConnection> server = player.getCurrentServer();
|
||||
if (server.isPresent() && AuthMeVelocityPlugin.getConfig().getList("authservers").contains(server.get().getServerInfo().getName())) {
|
||||
@ -89,8 +87,7 @@ public class ProxyListener {
|
||||
|
||||
@Subscribe
|
||||
public void onServerPreConnect(ServerPreConnectEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
if (plugin.loggedPlayers.contains(player.getUniqueId())) return;
|
||||
if (AuthmeVelocityAPI.isLogged(event.getPlayer())) return;
|
||||
|
||||
Optional<RegisteredServer> server = event.getResult().getServer();
|
||||
if (server.isPresent() && AuthMeVelocityPlugin.getConfig().getList("authservers").contains(server.get().getServerInfo().getName())) {
|
||||
@ -115,8 +112,7 @@ public class ProxyListener {
|
||||
|
||||
@Subscribe
|
||||
public void onTabComplete(PlayerAvailableCommandsEvent event){
|
||||
Player player = event.getPlayer();
|
||||
if (!plugin.loggedPlayers.contains(player.getUniqueId())) {
|
||||
if (!AuthmeVelocityAPI.isLogged(event.getPlayer())) {
|
||||
event.getRootNode().getChildren().iterator().remove();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user