Doing a whitelist in the config.yml

Discussion in 'Spigot Plugin Development' started by Xuho, Jun 12, 2017.

  1. Anyone knows how to create a list on the config like this:
    - /hola
    - /adios
    - /pepe
    to prevent players from executing all commands except this?
    Surely is a stupid and easy thing but I can't figure how to do it xddd
     
  2. Te lo explicaré en español, veo que es el idioma que hablas.
    Hay un evento en Bukkit llamado "CommandPreProcessEvent". Puedes detectar qué comando se está ejecutando al colocar "event.getMessage()".
    Lo que tendrías que hacer es algo como esto:

    boolean permitir = false;
    for (String command : getConfig().getStringList("CommandsWhitelist")) {
    if (event.getMessage().startsWith(command));
    permitir = false;
    }

    if (!permitir) {
    event.setCancelled(true);
    }

    Perdona la demora, es difícil escribir código en un editor de texto normal.
    EDIT: No copies y pegues el código... Te recomiendo mirar las partes del mismo y armarlas por ti mismo. Te ayudará a aprender más rápido.
     
  3. El código no hacia falta, eso si se hacerlo, lo que tenia problemas era con lo de crear la lista en la config, fallo mío por no haberlo dicho, de todos modos muchas gracias ^^
     
  4. No hay de qué, me alegro de que haya funcionado. El código solo fue para ejemplificar lo que intentaba decir :)
     
    • Like Like x 1
  5. Perdona, lo he estado probando ahora cuando he tenido un poco de tiempo y el problema es que checkea todos los comandos y lo testea con cada uno, por lo tanto si pongo 7 comandos, cancela el evento 7 veces, y el problema es que quiero poner un mensaje y no queda nada bien que lo envié 7 veces.
    Hay alguna forma de checkear todos y en el caso de que ninguno coincida con el comando escrito realice la acción?