[Problema] problema nel settaggio di un plugin

ciao ragazzi, stavo settando un plugin, però volevo mettere questo:

if (cmd.getName().equalsIgnoreCase("comando")) {
                if (sender.hasPermission(new Permission("pex")))
                  p.sendMessage(mess);
                  p.addPotionEffect(new PotionEffect(PotionEffectType.pozione, tempo, effetto));
                  else if (!sender.hasPermission("pex")) {
                  p.sendMessage(mess);

il problema è che mi segnala else if come errore e mi dice di mettere solo if...ma mettendo solo if il pex non funzionerà, come risolvo? (Modificato 04/07/2014, 10:55 da zandak65.)
Premi quel bellissimo tasto REP se ti sono stato d'aiuto...
[Immagine: 15fsym0.png]
Perché non hai messo le graffe. Se in un IF non metti la graffa è riferito solo all'istruzione successiva.

Inviato dal cesso usando Tapatalk
del tipo, dovrebbe venire così?

if (cmd.getName().equalsIgnoreCase("comando")) {
                if (sender.hasPermission(new Permission("pex")))
                 {
                   p.sendMessage(mess);
                   p.addPotionEffect(new PotionEffect(PotionEffectType.poz, tempo, effetto));
                 }
                  else if (!sender.hasPermission("pex")) {                  
                  p.sendMessage(mess);

ok risolto, grazie mille...ti meriti un bel rep Big Grin (Modificato 04/07/2014, 12:40 da zandak65.)
Premi quel bellissimo tasto REP se ti sono stato d'aiuto...
[Immagine: 15fsym0.png]
@zandak65 nel secondo "codice" ci sono 3 parentesi graffe aperte e 1 chiusa Confused
My Config:
    MotherBoard: GigaByte 990 FX A-UD3 Ultra Durable
    CPU: AMD FX-8350 (8 core, 4.00GHz)
    Dissipatore: ThermalRight Macho HR-02 Rev.a
    RAM: Corsair Vengeance 8GB 4GBx2
    GPU: nVidia GTX 780 Asus OC
    PSU: Corsair CX 750M
    Case: Cooler Master 690 III Midi
    SSD 256GB
    HHD 1TB
    Masterizzatore
sisi lo so, poi sono tutte chiuse sotto Wink
Premi quel bellissimo tasto REP se ti sono stato d'aiuto...
[Immagine: 15fsym0.png]
prova così:

if (cmd.getName().equalsIgnoreCase("comando")) {
                if (sender.hasPermission(new Permission("pex"))) {
                      p.sendMessage(mess);
                      p.addPotionEffect(new PotionEffect(PotionEffectType.pozione, tempo, effetto));
                  } else {
                  p.sendMessage(mess);


basta un else perché se il player non ha il permesso gli arriva p.sendMessage(mess); (Modificato 05/07/2014, 00:59 da gamerover98.)
[Immagine: just_cause_3_sfondo_1.jpg]
Come dice gamerover, non ha bisogno di un else if ! Il metodo hasPermission restituisce un booleano (vero/falso). Se è vero (il player ha i permessi) allora esegui la prima parte di codice. Se invece restituisce un valore falso (non ha i permessi, o se vogliamo rifarci al tuo primo codice, !hasPermission restituisce vero) non entra nell'if. Avendo solo due possibili valori (vero/falso) non hai bisogno di controllare una seconda volta !

se (la prima condizione è vera) {
//fai qualcosa
} else (in tutti gli altri casi, cioè uno solo, "falso" ) {
//fai il resto
}
"È come se ci fossimo dimenticati chi siamo, Donald: esploratori, pionieri. Non dei guardiani."

"Un tempo per la meraviglia alzavamo al cielo lo sguardo sentendoci parte del firmamento, ora invece lo abbassiamo preoccupati di far parte del mare di fango."

- Cooper (Interstellar)
Se non erro, oltretutto hai sbagliato coi permessi. Io metterei:

if (sender.hasPermission(new Permission().pex))

.

Non so se col tuo metodo funziona, ma col mio stai sicuro che va (l'ho provato ieri).

Inviato dal mio Superlativo Nokia Lumia 925 con le Talpe che Parlano. (Modificato 05/07/2014, 01:09 da Qwertylol.)
[Immagine: giphy.gif]
@Qwertylol se ho capito il tuo metodo richiede che crei una nuova classe, cosa inutile, questo metodo è il migliore, in quanto ti permette di decidere anche com'è di default il permesso:
Codice:
p.hasPermission(new Permission("nomeplugin.nomecomando", PermissionDefault.TRUE))
Per i permessi di solito è buona cosa mettere nomeplugin.nomecomando, ma non è obbligatorio, poi con PermissionDefault puoi decidere te se il permesso è:
per tutti -> PermissionDefault.TRUE
per nessuno(nel senso che bisogna metterlo in un plugin di permessi) -> PermissionDefault.FALSE
solo per gli OP -> PermissionDefault.OP
anche per i non OP (non ho mai capito a cosa serve questo) -> PermissionDefault.NOT_OP

Inoltre nel metodo onCommand è sempre buona cosa, se non si devono aggiungere comandi da console mettere un check, per prevenire crash:
Codice:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
   if(!(sender instanceof Player)) {
      sender.sendMessage("You are not a player");
      return false;
   }
  
   Player p = (Player) sender;
   ...
}
[Immagine: mca.png]
Bye bye Bukkit...
Welcome Forge!
grazie per le guide aggiuntive sui pex, ma come ho fatto io funzionano lo stesso Big Grin. Grazie a tutti
Premi quel bellissimo tasto REP se ti sono stato d'aiuto...
[Immagine: 15fsym0.png]
Discussioni simili
 
7 108
Risposta di MrGamp
19/04/2018, 18:05
 
[Risolto] Un plugin
Risposta di PlayGameGabry
17/04/2018, 11:53
 
4 158
Risposta di The_King_ITA
07/04/2018, 10:23
Risposta di Luchinorti
06/04/2018, 22:35
Risposta di Luchinorti
06/04/2018, 22:32

Utente(i) che stanno guardando questa discussione: 1 Ospite(i)