aikar / aikar/commands

Main command permission is null if i set a permission on a subcommand

オープン
#375 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
628
フォーク
150
PR マージ指標
30日以内にマージされた PR はありません

説明

Hello, i have this command here!

`@CommandAlias("hide")
@CommandPermission("core.command.hide")
public class HideCommand extends BaseCommand {

private final ProxySockeCore plugin;

public HideCommand(ProxySockeCore plugin) {
this.plugin = plugin;
}

@Default
public void onDefault(Player player){
if(plugin.getPlayerDataManager().isNotLoaded(player)){
player.sendMessage("§cDeine Daten wurden noch nicht geladen!");
return;
}
PlayerDataHolder holder = plugin.getPlayerDataManager().get(player);
if(holder.isHidden()){
//Vanish deaktivieren
holder.setHidden(false);
player.removeMetadata("vanished", plugin);
for(Player online : plugin.getServer().getOnlinePlayers()){
if(online == player) continue;
online.showPlayer(plugin, player);
}
player.sendMessage("§aDu bist nun wieder für alle Spieler sichtbar!");
}else{
//Vanish aktivieren
holder.setHidden(true);
player.setMetadata("vanished", new FixedMetadataValue(plugin, true));
for(Player online : plugin.getServer().getOnlinePlayers()){
if(online == player) continue;
if(!online.hasPermission("core.command.hide.see")) online.hidePlayer(plugin, player);
}
HideUtils.removeTarget(player);
player.sendMessage("§aDu bist nun für alle Spieler unsichtbar!");
}
}

@Subcommand("info")
public void onInfo(Player player){
if(plugin.getPlayerDataManager().isNotLoaded(player)){
player.sendMessage("§cDeine Daten wurden noch nicht geladen!");
return;
}
if(plugin.getPlayerDataManager().get(player).isHidden()){
player.sendMessage("§aDu bist nicht für Spieler sichtbar!");
return;
}
player.sendMessage("§cDu bist für alle Spieler sichtbar!");
}

@Subcommand("list")
@CommandPermission("core.command.hide.list")
public void onList(Player player){
List vanished = new ArrayList<>();
for(Player p : plugin.getServer().getOnlinePlayers()){
if(p.hasMetadata("vanished")) vanished.add(p.getName());
}
player.sendMessage(String.format("§fVersteckt (%d): §e%s", vanished.size(), String.join(", ", vanished)));
}

@CatchUnknown
public void onUnknown(Player player){
player.sendMessage("§c» §7Unterbefehle für: §e§o'/hide'\n"
+ " §8▪ §f/hide info\n"
+ " §8▪ §f/hide list");
}
}`

I use this code to get the permission of a command

`Command command = plugin.getServer().getCommandMap().getCommand("ignore");`

Now if i call command.getPermission() it return null, but it must return "core.command.hide"

On all other commands i have made it works well

The error occurs, if i add a subcommand with a permission!

To Test:

1. Make a normal command without SubCommands (a @Default method) and a permission set

2. Use this code on Paper: `Command command = plugin.getServer().getCommandMap().getCommand("nameofthecommand");`

3. Call command.getPermission() you will see the permission

4. Now add a subcommand with @SubCommand("test") and @CommandPermission("test.test");

5. Call command.getPermission() another time, and you will see that it returns null

It would be nice if this gets fixed because it destroys my system!

Thanks

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。