Domanda hasPermission

Stato
Discussione chiusa ad ulteriori risposte.

DeeJack

Utente Electrum
25 Agosto 2015
409
25
43
124
Ho un problema: non riesco a impostare che se un giocatore non ha un determinato permessi riceve un messaggio con scritto che non ha il permesso, in teoria dovrebbe essere così no?
Java:
Player player = (Player) sender;
                        if(!player.hasPermission("bla.bla")){
                           player.sendMessage(ChatColor.DARK_RED + "Non hai i permessi necessari.");
                            return false;
                        }
Però non funziona, mi mostra solo il messaggio che posso impostare nel plugin.yml
Come risolvo?
 
Ho un problema: non riesco a impostare che se un giocatore non ha un determinato permessi riceve un messaggio con scritto che non ha il permesso, in teoria dovrebbe essere così no?
Java:
Player player = (Player) sender;
                        if(!player.hasPermission("bla.bla")){
                           player.sendMessage(ChatColor.DARK_RED + "Non hai i permessi necessari.");
                            return false;
                        }
Però non funziona, mi mostra solo il messaggio che posso impostare nel plugin.yml
Come risolvo?
Devi far ritornare true:
Codice:
return true;
 
Devi far ritornare true:
Codice:
return true;
Già provato, non funziona. Il comando è questo:
Java:
if(cmd.getName().equalsIgnoreCase("setspawn")){
                    if(!(sender instanceof Player)){
                        sender.sendMessage(ChatColor.DARK_RED + "Solo i player possono eseguire il comando!");
                    }
                    else{
                        if(!(sender.hasPermission("essentials2.setspawn"))){
                                sender.sendMessage(ChatColor.DARK_RED + "Non hai i permessi necessari.");
                            }
                        else{
                            Player player = (Player) sender;
                            plugin.getConfig().set("spawn.world", player.getLocation().getWorld().getName());
                            plugin.getConfig().set("spawn.x", player.getLocation().getX());
                            plugin.getConfig().set("spawn.y", player.getLocation().getY());
                            plugin.getConfig().set("spawn.z", player.getLocation().getZ());
                            plugin.saveConfig();
                            player.sendMessage(ChatColor.GREEN + "Hai impostato lo spawn!");
                        }
                    }
                }
Ho provato sia con l'else sia senza(dopo aver verificato che sia un giocatore), ho provato con i return, ho provato facendo il contrario(se ha il permesso setta lo spawn, se no gli manda un messaggio), ho provato mettendo un Or quando controlla se il player è un player:
Java:
if(!(sender instanceof Player) || !(sender.hasPermission("essentials2.setspawn"))){
                        sender.sendMessage(ChatColor.DARK_RED + "Solo i player possono eseguire il comando!");
                    }
Ma niente di niente, non funziona.

Non ci credo, finalmente ho risolto......... bastava aggiungere && !player.isOP() ............
 
Già provato, non funziona. Il comando è questo:
Java:
if(cmd.getName().equalsIgnoreCase("setspawn")){
                    if(!(sender instanceof Player)){
                        sender.sendMessage(ChatColor.DARK_RED + "Solo i player possono eseguire il comando!");
                    }
                    else{
                        if(!(sender.hasPermission("essentials2.setspawn"))){
                                sender.sendMessage(ChatColor.DARK_RED + "Non hai i permessi necessari.");
                            }
                        else{
                            Player player = (Player) sender;
                            plugin.getConfig().set("spawn.world", player.getLocation().getWorld().getName());
                            plugin.getConfig().set("spawn.x", player.getLocation().getX());
                            plugin.getConfig().set("spawn.y", player.getLocation().getY());
                            plugin.getConfig().set("spawn.z", player.getLocation().getZ());
                            plugin.saveConfig();
                            player.sendMessage(ChatColor.GREEN + "Hai impostato lo spawn!");
                        }
                    }
                }
Ho provato sia con l'else sia senza(dopo aver verificato che sia un giocatore), ho provato con i return, ho provato facendo il contrario(se ha il permesso setta lo spawn, se no gli manda un messaggio), ho provato mettendo un Or quando controlla se il player è un player:
Java:
if(!(sender instanceof Player) || !(sender.hasPermission("essentials2.setspawn"))){
                        sender.sendMessage(ChatColor.DARK_RED + "Solo i player possono eseguire il comando!");
                    }
Ma niente di niente, non funziona.

Non ci credo, finalmente ho risolto......... bastava aggiungere && !player.isOP() ............
Un utente OP ha tutti i permessi, il tuo codice dovrebbe funzionare quindi se l'utente non è operatore giusto?
 
Il codice come lo hai scritto prima mi sembra corretto. Assicurati che il giocatore non abbia i permessi, soprattutto che nel tuo file plugin.yml, se inserito, il permesso non sia impostato su default true.
 
Ultima modifica da un moderatore:
Nel plugin.yml ho messo:
essentials2.setspawn:
description: Ti permette di settare lo spawn.
default: op
In teoria è giusto, no?
Non riesco a capire :/

Ho fatto una prova, ho creato un comando solo per vedere questa cosa e... se non ho i permessi mi dice quella roba la, se ho i permessi invece mi dice quello che ho impostato.... bohhhh
Pastebin
 

Allegati

  • Schermata del 2016-10-03 17-01-48.png
    Schermata del 2016-10-03 17-01-48.png
    81 KB · Visualizzazioni: 29
Posso vedere il codice della classe principale?
Hai utilizzato questo codice?
Codice:
getCommand("tuocomando").setExecutor(new Permission(this))
PS. Permission ti ricordo è la tua classe

Altrimenti prova ad aggiungere anche @override sopra al public boolean onCommand.
 
Posso vedere il codice della classe principale?
Hai utilizzato questo codice?
Codice:
getCommand("tuocomando").setExecutor(new Permission(this))
PS. Permission ti ricordo è la tua classe

Altrimenti prova ad aggiungere anche @override sopra al public boolean onCommand.
No, avevo creato direttamente un altro progetto. Poi provo con @override.
 
Stato
Discussione chiusa ad ulteriori risposte.