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?
 

AlessioDP

Sviluppatore
Amministratore
30 Gennaio 2012
4,966
228
964
1,735
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;
 

DeeJack

Utente Electrum
25 Agosto 2015
409
25
43
124
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() ............
 

AlessioDP

Sviluppatore
Amministratore
30 Gennaio 2012
4,966
228
964
1,735
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?
 

AlessioDP

Sviluppatore
Amministratore
30 Gennaio 2012
4,966
228
964
1,735
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.
 

DeeJack

Utente Electrum
25 Agosto 2015
409
25
43
124
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: 28

AlessioDP

Sviluppatore
Amministratore
30 Gennaio 2012
4,966
228
964
1,735
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.
 

DeeJack

Utente Electrum
25 Agosto 2015
409
25
43
124
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.