Skip to content

Commit

Permalink
feat: improved ServerPreConnect listener
Browse files Browse the repository at this point in the history
feat: avoid sending a message to the player if the message is empty or if the player tries to connect to the initial server
  • Loading branch information
4drian3d committed Feb 10, 2023
1 parent e00c564 commit 7bab7bf
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 9 deletions.
Expand Up @@ -7,9 +7,10 @@
import com.velocitypowered.api.proxy.Player;
import io.github._4drian3d.serverpermissions.ServerPermissions;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;

import static net.kyori.adventure.text.minimessage.MiniMessage.miniMessage;

public final class ServerListener {
@Inject
private ServerPermissions plugin;
Expand All @@ -20,14 +21,33 @@ void onServerSwitch(final ServerPreConnectEvent event, final Continuation contin
final Player player = event.getPlayer();
final String serverName = server.getServerInfo().getName();

if (!player.hasPermission("serverpermissions.server." + serverName)) {
event.setResult(ServerPreConnectEvent.ServerResult.denied());
final Component message = MiniMessage.miniMessage()
.deserialize(plugin.configuration().noPermissionMessage(),
Placeholder.unparsed("server", serverName));
player.sendMessage(message);
// Permission Check
if (player.hasPermission("serverpermissions.server." + serverName)) {
continuation.resume();
return;
}

event.setResult(ServerPreConnectEvent.ServerResult.denied());

// In case the server to which the player is connecting is the initial one,
// it is not necessary to send the message as the player will not see it
if (event.getPreviousServer() == null) {
continuation.resume();
return;
}

final String noPermissionMessage = plugin.configuration().noPermissionMessage();
// If the message is empty, it avoids sending to the player
if (noPermissionMessage.isBlank()) {
continuation.resume();
return;
}

final Component message = miniMessage()
.deserialize(plugin.configuration().noPermissionMessage(),
Placeholder.unparsed("server", serverName));
player.sendMessage(message);
continuation.resume();
});
continuation.resume();
}
}
3 changes: 2 additions & 1 deletion src/main/resources/config.conf
@@ -1,6 +1,7 @@
# ServerPermissions | by 4drian3d

# No Permission Message
# If this message is empty, it will not be sent to the player
# Placeholders available
# <server> | server name
# - <server> | the server name
no-permission-message = "<red>You do not have permission to access this server"

0 comments on commit 7bab7bf

Please sign in to comment.