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.Player;
|
||||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
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.
|
* Event to be executed just before sending a player to another server after login/registration.
|
||||||
* Here you have the ability to deny the event.
|
* 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 actualServer the server on which the player is located
|
||||||
* @param serverToSend the server to which the player will be sent
|
* @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.player = player;
|
||||||
this.actualserver = actualServer;
|
this.actualserver = actualServer;
|
||||||
this.serverToSend = serverToSend;
|
this.serverToSend = serverToSend;
|
||||||
@ -34,7 +36,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
|||||||
* Obtain the logged player
|
* Obtain the logged player
|
||||||
* @return the player
|
* @return the player
|
||||||
*/
|
*/
|
||||||
public Player getPlayer(){
|
public @NotNull Player getPlayer(){
|
||||||
return this.player;
|
return this.player;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +44,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
|||||||
* Obtain the server on which the player is located
|
* Obtain the server on which the player is located
|
||||||
* @return the actual server of the player
|
* @return the actual server of the player
|
||||||
*/
|
*/
|
||||||
public RegisteredServer getActualServer(){
|
public @NotNull RegisteredServer getActualServer(){
|
||||||
return this.actualserver;
|
return this.actualserver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +52,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
|||||||
* Obtain the server to which the player will be sent
|
* Obtain the server to which the player will be sent
|
||||||
* @return the server to send the player
|
* @return the server to send the player
|
||||||
*/
|
*/
|
||||||
public RegisteredServer getSendServer(){
|
public @NotNull RegisteredServer getSendServer(){
|
||||||
return this.serverToSend;
|
return this.serverToSend;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,7 +60,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
|||||||
* Get the result of the event
|
* Get the result of the event
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public GenericResult getResult() {
|
public @NotNull GenericResult getResult() {
|
||||||
return this.result;
|
return this.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +69,7 @@ public final class PreSendOnLoginEvent implements ResultedEvent<GenericResult> {
|
|||||||
* @param newresult the new result
|
* @param newresult the new result
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setResult(GenericResult newresult) {
|
public void setResult(@NotNull GenericResult newresult) {
|
||||||
this.result = Objects.requireNonNull(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.AuthmeVelocityAPI;
|
||||||
import com.glyart.authmevelocity.proxy.config.AuthMeConfig;
|
import com.glyart.authmevelocity.proxy.config.AuthMeConfig;
|
||||||
import com.glyart.authmevelocity.proxy.event.PreSendOnLoginEvent;
|
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.ProxyLoginEvent;
|
||||||
import com.glyart.authmevelocity.proxy.event.ProxyLogoutEvent;
|
import com.glyart.authmevelocity.proxy.event.ProxyLogoutEvent;
|
||||||
import com.glyart.authmevelocity.proxy.event.ProxyRegisterEvent;
|
import com.glyart.authmevelocity.proxy.event.ProxyRegisterEvent;
|
||||||
|
import com.glyart.authmevelocity.proxy.event.ProxyUnregisterEvent;
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
import com.velocitypowered.api.event.Continuation;
|
import com.velocitypowered.api.event.Continuation;
|
||||||
import com.velocitypowered.api.event.Subscribe;
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
@ -19,6 +21,7 @@ import com.velocitypowered.api.proxy.ServerConnection;
|
|||||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
public class PluginMessageListener {
|
public class PluginMessageListener {
|
||||||
@ -48,27 +51,33 @@ public class PluginMessageListener {
|
|||||||
|
|
||||||
ByteArrayDataInput input = event.dataAsDataStream();
|
ByteArrayDataInput input = event.dataAsDataStream();
|
||||||
final String sChannel = input.readUTF();
|
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){
|
switch(sChannel){
|
||||||
case "LOGIN" :
|
case "LOGIN" :
|
||||||
if (api.addPlayer(loggedPlayer)){
|
if (loggedPlayer != null && api.addPlayer(loggedPlayer)){
|
||||||
createServerConnectionRequest(loggedPlayer, proxy, logger, connection);
|
createServerConnectionRequest(loggedPlayer, proxy, logger, connection);
|
||||||
}
|
}
|
||||||
continuation.resume();
|
|
||||||
break;
|
break;
|
||||||
case "LOGOUT":
|
case "LOGOUT":
|
||||||
if(api.removePlayer(loggedPlayer)){
|
if(loggedPlayer != null && api.removePlayer(loggedPlayer)){
|
||||||
proxy.getEventManager().fireAndForget(new ProxyLogoutEvent(loggedPlayer));
|
proxy.getEventManager().fireAndForget(new ProxyLogoutEvent(loggedPlayer));
|
||||||
}
|
}
|
||||||
continuation.resume();
|
|
||||||
break;
|
break;
|
||||||
case "REGISTER":
|
case "REGISTER":
|
||||||
|
if(loggedPlayer != null)
|
||||||
proxy.getEventManager().fireAndForget(new ProxyRegisterEvent(loggedPlayer));
|
proxy.getEventManager().fireAndForget(new ProxyRegisterEvent(loggedPlayer));
|
||||||
continuation.resume();
|
|
||||||
break;
|
break;
|
||||||
|
case "UNREGISTER":
|
||||||
default: continuation.resume();
|
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){
|
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.glyart.authmevelocity.spigot.listeners.AuthMeListener;
|
||||||
import com.google.common.io.ByteArrayDataOutput;
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -14,13 +16,18 @@ public class AuthMeVelocityPlugin extends JavaPlugin {
|
|||||||
this.getServer().getMessenger().registerOutgoingPluginChannel(this, CHANNEL);
|
this.getServer().getMessenger().registerOutgoingPluginChannel(this, CHANNEL);
|
||||||
this.getServer().getPluginManager().registerEvents(new AuthMeListener(this), this);
|
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();
|
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||||
out.writeUTF(type.toString());
|
out.writeUTF(type.toString());
|
||||||
|
out.writeUTF(playername);
|
||||||
|
|
||||||
|
if(player == null){
|
||||||
|
Bukkit.getServer().sendPluginMessage(this, CHANNEL, out.toByteArray());
|
||||||
|
} else {
|
||||||
player.sendPluginMessage(this, CHANNEL, out.toByteArray());
|
player.sendPluginMessage(this, CHANNEL, out.toByteArray());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package com.glyart.authmevelocity.spigot;
|
package com.glyart.authmevelocity.spigot;
|
||||||
|
|
||||||
public enum MessageType {
|
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 static final HandlerList HANDLERS = new HandlerList();
|
||||||
private boolean isCancelled = false;
|
private boolean isCancelled = false;
|
||||||
|
|
||||||
public PreSendLoginEvent(@NotNull final Player player) {
|
public PreSendLoginEvent(@NotNull Player player) {
|
||||||
super(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.LoginEvent;
|
||||||
import fr.xephi.authme.events.LogoutEvent;
|
import fr.xephi.authme.events.LogoutEvent;
|
||||||
import fr.xephi.authme.events.RegisterEvent;
|
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.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
@ -21,21 +23,31 @@ public class AuthMeListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
public void onLogin(final LoginEvent event) {
|
public void onLogin(LoginEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
PreSendLoginEvent preSendLoginEvent = new PreSendLoginEvent(player);
|
PreSendLoginEvent preSendLoginEvent = new PreSendLoginEvent(player);
|
||||||
if(preSendLoginEvent.callEvent()){
|
if(preSendLoginEvent.callEvent()){
|
||||||
plugin.sendMessageToProxy(player, MessageType.LOGIN);
|
plugin.sendMessageToProxy(player, MessageType.LOGIN, player.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onRegister(RegisterEvent event){
|
public void onRegister(RegisterEvent event){
|
||||||
plugin.sendMessageToProxy(event.getPlayer(), MessageType.REGISTER);
|
plugin.sendMessageToProxy(event.getPlayer(), MessageType.REGISTER, event.getPlayer().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onLogout(LogoutEvent event){
|
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
|
name: AuthMeVelocity
|
||||||
author: xQuickGlare
|
authors: [xQuickGlare, 4drian3d]
|
||||||
version: ${project.version}
|
version: ${project.version}
|
||||||
main: com.glyart.authmevelocity.spigot.AuthMeVelocityPlugin
|
main: com.glyart.authmevelocity.spigot.AuthMeVelocityPlugin
|
||||||
depend: [AuthMe]
|
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