Skip to content

Commit

Permalink
+ /hasperm
Browse files Browse the repository at this point in the history
  • Loading branch information
Niilyx committed Jun 22, 2024
1 parent 44dbdc7 commit 4868041
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/main/java/fr/efreicraft/ecatup/ECATUP.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ public void onEnable() {
registerCommand("groupperms", new GroupsCom());
registerCommand("playerperms", new PlayersCom());

registerCommand("hasperm", new HasPerm());

// Send log to Discord
DiscordWebhook webhook = new DiscordWebhook(config.getString("webhook"));
webhook.addEmbed(new DiscordWebhook.EmbedObject()
Expand Down
94 changes: 94 additions & 0 deletions src/main/java/fr/efreicraft/ecatup/commands/HasPerm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package fr.efreicraft.ecatup.commands;

import fr.efreicraft.animus.endpoints.PlayerService;
import fr.efreicraft.animus.invoker.ApiException;
import fr.efreicraft.animus.models.Permission;
import fr.efreicraft.ecatup.ECATUP;
import fr.efreicraft.ecatup.players.ECPlayer;
import fr.efreicraft.ecatup.utils.MessageUtils;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;

public class HasPerm implements CommandExecutor, TabExecutor {

@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
OfflinePlayer player;
String permission;
boolean fromDB = false;

if (args.length == 2) {
player = Bukkit.getOfflinePlayer(args[0]);
permission = args[1];
} else if (args.length == 3) {
player = Bukkit.getOfflinePlayer(args[0]);
permission = args[1];
fromDB = Boolean.parseBoolean(args[2].toLowerCase());
} else {
MessageUtils.sendMessage(sender, MessageUtils.ChatPrefix.SERVER, "&cSyntaxe invalide : /hasperm <player> <permission> <fromDB:true|false>");
return true;
}

if (!player.isOnline()) fromDB = true;

permission = permission.toLowerCase();

if (fromDB) {
try {
List<Permission> perms = PlayerService.getPermissionOfPlayer(player.getUniqueId().toString());
for (Permission p : perms) {
if (p.getName().equalsIgnoreCase(permission)) {
MessageUtils.sendMessage(sender, MessageUtils.ChatPrefix.SERVER,
"%s possède la permission &a[%s]&r dans [%s].".formatted(player.getName(), permission, String.join(",", p.getServerTypes())));
return true;
}
}

MessageUtils.sendMessage(sender, MessageUtils.ChatPrefix.SERVER,
"%s ne possède pas la permission &a[%s]&r.".formatted(player.getName(), permission));
} catch (ApiException e) {
MessageUtils.sendMessage(sender, MessageUtils.ChatPrefix.SERVER,
"&cLa base de données n'a pas répondu, ou a retourné une erreur. Veuillez voir les logs.");
Bukkit.getLogger().severe("Couldn't fetch %s's permissions".formatted(player.getName()));
Bukkit.getLogger().severe("It was to test permission [%s] (initiated by %s)".formatted(permission, sender.getName()));
Bukkit.getLogger().severe("Code: %s Message: %s".formatted(e.getCode(), e.getMessage()));
}
} else {
ECPlayer ecPlayer = ECATUP.getInstance().getPlayerManager().getPlayer(player.getPlayer());
if (ecPlayer == null) {
MessageUtils.sendMessage(sender, MessageUtils.ChatPrefix.SERVER,
"&cWtf ? Joueur non trouvé...?");
return true;
}


for (Permission p : ecPlayer.getAnimusPlayer().getPerms()) {
if (p.getName().equalsIgnoreCase(permission)) {
MessageUtils.sendMessage(sender, MessageUtils.ChatPrefix.SERVER,
"%s possède la permission &a[%s]&r dans [%s].".formatted(player.getName(), permission, String.join(",", p.getServerTypes())));
return true;
}
}

MessageUtils.sendMessage(sender, MessageUtils.ChatPrefix.SERVER,
"%s ne possède pas la permission &a[%s]&r.".formatted(player.getName(), permission));
}

return true;
}

@Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (args.length == 1) return Bukkit.getOnlinePlayers().stream().map(String::valueOf).sorted().toList();
if (args.length == 3) return List.of("true", "false");
return null;
}
}
5 changes: 5 additions & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ commands:
- wspeed
- wsp
permission: ecatup.speed.walk

groupperms:
description: All about group perms
aliases:
Expand All @@ -125,3 +126,7 @@ commands:
aliases:
- pperms
permission: ecatup.playerperms

hasperm:
description: (Debug) Check if player has specified permission
permission: ecatup.hasperm

0 comments on commit 4868041

Please sign in to comment.