Added support for unregister events
- Added 4drian3d to plugin.yml authors - Added ProxyForcedUnregisterEvent and ProxyUnregisterEvent to API
This commit is contained in:
parent
e871d555d6
commit
97882d1e31
@ -7,6 +7,8 @@ import com.velocitypowered.api.event.ResultedEvent.GenericResult;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Event to be executed just before sending a player to another server after login/registration.
|
||||
* Here you have the ability to deny the event.
|
||||
@ -24,7 +26,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
||||
* @param actualServer the server on which the player is located
|
||||
* @param serverToSend the server to which the player will be sent
|
||||
*/
|
||||
public PreSendOnLoginEvent(Player player, RegisteredServer actualServer, RegisteredServer serverToSend){
|
||||
public PreSendOnLoginEvent(@NotNull Player player, @NotNull RegisteredServer actualServer, @NotNull RegisteredServer serverToSend){
|
||||
this.player = player;
|
||||
this.actualserver = actualServer;
|
||||
this.serverToSend = serverToSend;
|
||||
@ -34,7 +36,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
||||
* Obtain the logged player
|
||||
* @return the player
|
||||
*/
|
||||
public Player getPlayer(){
|
||||
public @NotNull Player getPlayer(){
|
||||
return this.player;
|
||||
}
|
||||
|
||||
@ -42,7 +44,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
||||
* Obtain the server on which the player is located
|
||||
* @return the actual server of the player
|
||||
*/
|
||||
public RegisteredServer getActualServer(){
|
||||
public @NotNull RegisteredServer getActualServer(){
|
||||
return this.actualserver;
|
||||
}
|
||||
|
||||
@ -50,7 +52,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
||||
* Obtain the server to which the player will be sent
|
||||
* @return the server to send the player
|
||||
*/
|
||||
public RegisteredServer getSendServer(){
|
||||
public @NotNull RegisteredServer getSendServer(){
|
||||
return this.serverToSend;
|
||||
}
|
||||
|
||||
@ -58,7 +60,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
||||
* Get the result of the event
|
||||
*/
|
||||
@Override
|
||||
public GenericResult getResult() {
|
||||
public @NotNull GenericResult getResult() {
|
||||
return this.result;
|
||||
}
|
||||
|
||||
@ -67,7 +69,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
||||
* @param newresult the new result
|
||||
*/
|
||||
@Override
|
||||
public void setResult(GenericResult newresult) {
|
||||
public void setResult(@NotNull GenericResult newresult) {
|
||||
this.result = Objects.requireNonNull(newresult);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,17 @@
|
||||
package com.glyart.authmevelocity.proxy.event;
|
||||
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class ProxyForcedUnregisterEvent {
|
||||
private final Player player;
|
||||
|
||||
public ProxyForcedUnregisterEvent(@Nullable Player player){
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public @Nullable Player getPlayer(){
|
||||
return this.player;
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.glyart.authmevelocity.proxy.event;
|
||||
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ProxyUnregisterEvent {
|
||||
private final Player player;
|
||||
|
||||
public ProxyUnregisterEvent(@NotNull Player player){
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public @NotNull Player getPlayer(){
|
||||
return this.player;
|
||||
}
|
||||
}
|
@ -6,9 +6,11 @@ import java.util.Random;
|
||||
import com.glyart.authmevelocity.proxy.AuthmeVelocityAPI;
|
||||
import com.glyart.authmevelocity.proxy.config.AuthMeConfig;
|
||||
import com.glyart.authmevelocity.proxy.event.PreSendOnLoginEvent;
|
||||
import com.glyart.authmevelocity.proxy.event.ProxyForcedUnregisterEvent;
|
||||
import com.glyart.authmevelocity.proxy.event.ProxyLoginEvent;
|
||||
import com.glyart.authmevelocity.proxy.event.ProxyLogoutEvent;
|
||||
import com.glyart.authmevelocity.proxy.event.ProxyRegisterEvent;
|
||||
import com.glyart.authmevelocity.proxy.event.ProxyUnregisterEvent;
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.velocitypowered.api.event.Continuation;
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
@ -19,6 +21,7 @@ import com.velocitypowered.api.proxy.ServerConnection;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class PluginMessageListener {
|
||||
@ -48,27 +51,33 @@ public class PluginMessageListener {
|
||||
|
||||
ByteArrayDataInput input = event.dataAsDataStream();
|
||||
final String sChannel = input.readUTF();
|
||||
final Player loggedPlayer = connection.getPlayer();
|
||||
final String playername = input.readUTF();
|
||||
final @Nullable Player loggedPlayer = proxy.getPlayer(playername).orElse(null);
|
||||
switch(sChannel){
|
||||
case "LOGIN" :
|
||||
if (api.addPlayer(loggedPlayer)){
|
||||
if (loggedPlayer != null && api.addPlayer(loggedPlayer)){
|
||||
createServerConnectionRequest(loggedPlayer, proxy, logger, connection);
|
||||
}
|
||||
continuation.resume();
|
||||
break;
|
||||
case "LOGOUT":
|
||||
if(api.removePlayer(loggedPlayer)){
|
||||
if(loggedPlayer != null && api.removePlayer(loggedPlayer)){
|
||||
proxy.getEventManager().fireAndForget(new ProxyLogoutEvent(loggedPlayer));
|
||||
}
|
||||
continuation.resume();
|
||||
break;
|
||||
case "REGISTER":
|
||||
if(loggedPlayer != null)
|
||||
proxy.getEventManager().fireAndForget(new ProxyRegisterEvent(loggedPlayer));
|
||||
continuation.resume();
|
||||
break;
|
||||
|
||||
default: continuation.resume();
|
||||
case "UNREGISTER":
|
||||
if(loggedPlayer != null)
|
||||
proxy.getEventManager().fireAndForget(new ProxyUnregisterEvent(loggedPlayer));
|
||||
break;
|
||||
case "FORCE_UNREGISTER":
|
||||
proxy.getEventManager().fireAndForget(new ProxyForcedUnregisterEvent(loggedPlayer));
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
continuation.resume();
|
||||
}
|
||||
|
||||
private void createServerConnectionRequest(Player loggedPlayer, ProxyServer proxy, Logger logger, ServerConnection connection){
|
||||
|
@ -3,6 +3,8 @@ package com.glyart.authmevelocity.spigot;
|
||||
import com.glyart.authmevelocity.spigot.listeners.AuthMeListener;
|
||||
import com.google.common.io.ByteArrayDataOutput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -14,13 +16,18 @@ public class AuthMeVelocityPlugin extends JavaPlugin {
|
||||
this.getServer().getMessenger().registerOutgoingPluginChannel(this, CHANNEL);
|
||||
this.getServer().getPluginManager().registerEvents(new AuthMeListener(this), this);
|
||||
|
||||
this.getLogger().info("AuthMeVelocity enabled.");
|
||||
this.getSLF4JLogger().info("AuthMeVelocity enabled");
|
||||
}
|
||||
|
||||
public void sendMessageToProxy(@NotNull final Player player, MessageType type) {
|
||||
public void sendMessageToProxy(final Player player, @NotNull MessageType type, @NotNull String playername) {
|
||||
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||
out.writeUTF(type.toString());
|
||||
out.writeUTF(playername);
|
||||
|
||||
if(player == null){
|
||||
Bukkit.getServer().sendPluginMessage(this, CHANNEL, out.toByteArray());
|
||||
} else {
|
||||
player.sendPluginMessage(this, CHANNEL, out.toByteArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
package com.glyart.authmevelocity.spigot;
|
||||
|
||||
public enum MessageType {
|
||||
LOGIN, REGISTER, LOGOUT
|
||||
LOGIN, REGISTER, LOGOUT, FORCE_UNREGISTER, UNREGISTER;
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ public class PreSendLoginEvent extends PlayerEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private boolean isCancelled = false;
|
||||
|
||||
public PreSendLoginEvent(@NotNull final Player player) {
|
||||
public PreSendLoginEvent(@NotNull Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,8 @@ import com.glyart.authmevelocity.spigot.events.PreSendLoginEvent;
|
||||
import fr.xephi.authme.events.LoginEvent;
|
||||
import fr.xephi.authme.events.LogoutEvent;
|
||||
import fr.xephi.authme.events.RegisterEvent;
|
||||
import fr.xephi.authme.events.UnregisterByAdminEvent;
|
||||
import fr.xephi.authme.events.UnregisterByPlayerEvent;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -21,21 +23,31 @@ public class AuthMeListener implements Listener {
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onLogin(final LoginEvent event) {
|
||||
public void onLogin(LoginEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
PreSendLoginEvent preSendLoginEvent = new PreSendLoginEvent(player);
|
||||
if(preSendLoginEvent.callEvent()){
|
||||
plugin.sendMessageToProxy(player, MessageType.LOGIN);
|
||||
plugin.sendMessageToProxy(player, MessageType.LOGIN, player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onRegister(RegisterEvent event){
|
||||
plugin.sendMessageToProxy(event.getPlayer(), MessageType.REGISTER);
|
||||
plugin.sendMessageToProxy(event.getPlayer(), MessageType.REGISTER, event.getPlayer().getName());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onLogout(LogoutEvent event){
|
||||
plugin.sendMessageToProxy(event.getPlayer(), MessageType.LOGOUT);
|
||||
plugin.sendMessageToProxy(event.getPlayer(), MessageType.LOGOUT, event.getPlayer().getName());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onUnRegister(UnregisterByPlayerEvent event){
|
||||
plugin.sendMessageToProxy(event.getPlayer(), MessageType.UNREGISTER, event.getPlayer().getName());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onAdminUnRegister(UnregisterByAdminEvent event){
|
||||
plugin.sendMessageToProxy(event.getPlayer(), MessageType.FORCE_UNREGISTER, event.getPlayerName());
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
name: AuthMeVelocity
|
||||
author: xQuickGlare
|
||||
authors: [xQuickGlare, 4drian3d]
|
||||
version: ${project.version}
|
||||
main: com.glyart.authmevelocity.spigot.AuthMeVelocityPlugin
|
||||
depend: [AuthMe]
|
||||
api-version: 1.15
|
||||
# pls, dont use outdated versions, use 1.16.5+
|
||||
api-version: 1.13
|
Loading…
x
Reference in New Issue
Block a user