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