Event Not Working

Discussion in 'Plugin Development' started by Darkpicasa, Sep 4, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Darkpicasa

    I'm using the Essentials NickChangeEvent, but it seems to not ever occur, even when I do /nick.
    Code:
    public void onNickChange(NickChangeEvent e){
    Player p = e.getController().getBase();
    if (p.hasPermission("nt.bypass")){
    return;
    }
    if (Playerdata.getConfig().getInt(p.getName()) <= 0){
    e.setCancelled(true);
    p.sendMessage(ChatColor.RED + "You do not have enough tokens!");
    }
    else{
    int tokens = Playerdata.getConfig().getInt(p.getName());
    tokens -= 1;
     
    Playerdata.getConfig().set(p.getName(), tokens);
    Playerdata.saveConfig();
    p.sendMessage(ChatColor.GOLD + "Nickname set! You lost one token!");
    }
    }
     
  2. Offline

    fireblast709

    Darkpicasa EventHandler annotation? Listener registered? Handler debugged? (Latter is just a message printed on the first line of the method)
     
    Zarkopafilis likes this.
  3. Offline

    Darkpicasa

    Everything is registered, I just only gave a couple lines of code. This is the full code:
    Code:
    package me.darkpicasa.NicknameTokens;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    import net.ess3.api.events.NickChangeEvent;
     
    public class NicknameTokens extends JavaPlugin implements Listener{
     
    public static boolean isNumeric(String str)  
    {  
     try  
     {  
    int d = Integer.parseInt(str);
       if (d <= 0){
       return false;
       }
     }  
     catch(NumberFormatException nfe)  
     {  
       return false;  
     }  
     return true;  
    }
     
    public static NicknameTokens plugin;
    CustomConfig Playerdata;
    public void onEnable() {
    plugin = this;
    getLogger().info("Plugin Enabled!");
    Playerdata = new CustomConfig(plugin, "tokens.yml");
    Playerdata.getConfig().options().copyDefaults(true);
    Playerdata.saveConfig();
    getConfig().options().copyDefaults(true);
    saveConfig();
    Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }
     
    public void onDisable() {
    getLogger().info("Plugin Disabled!");
    }
     
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    if(sender instanceof Player){
    Player player = (Player) sender;
    if(cmd.getName().equalsIgnoreCase("givetokens")){
    if (player.hasPermission("nt.give")){
    if(args.length == 2){
    if(!Playerdata.getConfig().contains(args[0])){
    player.sendMessage(ChatColor.RED + "The player specified is invalid");
    }
    else if (!isNumeric(args[1]) || Integer.parseInt(args[1]) <= 0){
    player.sendMessage(ChatColor.RED + "The number of tokens specified is invalid");
    }
    else{
    int updater = Playerdata.getConfig().getInt(args[0]);
    int tokens = Integer.parseInt(args[1]);
    updater += tokens;
    Playerdata.getConfig().set(args[0], updater);
    Playerdata.saveConfig();
    player.sendMessage(ChatColor.GOLD + "Tokens given!");
    }
    }
    else{
    player.sendMessage(ChatColor.RED + "Invalid Usage! /givetokens <player> <amount>");
    }
    }
    else{
    player.sendMessage(ChatColor.DARK_RED + "You do not have access to this command!");
    }
    }
     
    else if (cmd.getName().equalsIgnoreCase("listtokens")){
    if (args.length == 0){
    if (player.hasPermission("nt.list")){
    player.sendMessage(ChatColor.GOLD + "You have " + Playerdata.getConfig().getInt(player.getName()) + " tokens.");
    }
    else{
    player.sendMessage(ChatColor.DARK_RED + "You do not have access to this command!");
    }
    }
    else if (args.length == 1){
    if (player.hasPermission("nt.list.others") && player.hasPermission("nt.list")){
    if(!Playerdata.getConfig().contains(args[0])){
    player.sendMessage(ChatColor.RED + "The specified player is invalid!");
    }
    else{
    player.sendMessage(ChatColor.GOLD + args[0] + " has " + Playerdata.getConfig().getInt(args[0]) + " tokens.");
    }
    }
    else{
    player.sendMessage(ChatColor.DARK_RED + "You do not have access to this command!");
    }
    }
    else{
    player.sendMessage(ChatColor.RED + "Invalid usage! /listtokens [player]");
    }
    }
     
    }
    return false;
    }
     
     
    @EventHandler
     
    public void onPlayerJoin(PlayerJoinEvent event){
     
    if (!Playerdata.getConfig().contains(event.getPlayer().getName())){
    Playerdata.getConfig().createSection(event.getPlayer().getName());
    Playerdata.getConfig().set(event.getPlayer().getName(), 0);
    Playerdata.saveConfig();
    }
    }
     
    public void onNickChange(NickChangeEvent e){
    Player p = e.getController().getBase();
    if (p.hasPermission("nt.bypass")){
    return;
    }
    if (Playerdata.getConfig().getInt(p.getName()) <= 0){
    e.setCancelled(true);
    p.sendMessage(ChatColor.RED + "You do not have enough tokens!");
    }
    else{
    int tokens = Playerdata.getConfig().getInt(p.getName());
    tokens -= 1;
     
    Playerdata.getConfig().set(p.getName(), tokens);
    Playerdata.saveConfig();
    p.sendMessage(ChatColor.GOLD + "Nickname set! You lost one token!");
    }
    }
    }
    
     
  4. Offline

    xTigerRebornx

    Darkpicasa You have no @EventHandler annotation on the method that handles the NickChangeEvent
     
  5. Offline

    Darkpicasa

    Oh okay, thanks! I added that in, and now it sorta works...
    But, I still have a bug.
    Even when the person has 0 tokens, this part of it doesn't run.
    Code:
    if (Playerdata.getConfig().getInt(p.getName()) <= 0){
    e.setCancelled(true);
    p.sendMessage(ChatColor.RED + "You do not have enough tokens!");
    }
    
    Never mind. I made a typo :p

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 10, 2016
Thread Status:
Not open for further replies.

Share This Page