I have an event on my plugin, the onPlayerJoin... I don't think this does anything... It sits there doing nothing, and I rely on this code for my plugin commands. Code: @EventHandler(priority = EventPriority.NORMAL) public boolean playerJoinEvent(PlayerJoinEvent event){ FileConfiguration config; Player player = event.getPlayer(); try{ config = getConfig(); File aCommands = new File("plugins"+File.separator+"aCommands"+File.separator+"Players"+File.separator+player.getName()+File.separator + "config.yml"); aCommands.mkdir(); if(!config.contains("general.name")) { config.set("general.name", player.getName()); } if(!config.contains("teleport.allow")) { config.set("teleport.allow", true); } if(!config.contains("general.afk")) { config.set("general.afk", false); } saveConfig(); }catch(Exception e1){ e1.printStackTrace(); } return false; } I get this error when I try /ac... I suspect its the onJoinPlayer event... Code: 012-03-16 19:34:07 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'ac' in plugin aCommands v0.4 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:166) at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:461) at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:818) at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:778) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:761) at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:33) at net.minecraft.server.NetworkManager.b(NetworkManager.java:229) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:112) at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:554) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:452) at net.minecraft.server.ThreadServerApplication.run(SourceFile:490) Caused by: java.lang.NullPointerException at net.sky.the.venture.acommands.aCommands.onCommand(aCommands.java:96) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40) ... 12 more
Can you post all classes please, either on PasteBin, or using the syntax=java code Code: [syntax=java]code here[/syntax] Thanks
i see: java.lang.NullPointerException that means that you tried to give a variable the value null. also i see only return false; are you sure you don't have to return true?
Try changing the return false; to return true; . You should also paste in your command handler for /ac to see of there is any problems in there.
I changed Code:java @EventHandler(priority = EventPriority.NORMAL) to: Code:java @EventHandler(priority = EventPriority.MONITOR) Does the onCommand() have to be return false or true?
If it returns false, then the listeners stops, if you return true it continues to listen. Also, there's is an error with your onCommand(aCommands.java:96) so check your a commands on line 96
Thats... Code:java Boolean teleport = config.getBoolean("teleport.allow"); But I probably know why...
This is my code, It's under anything... So its kind of like this. Code:java public class aCommands extends JavaPlugin{ @EventHandler(priority = EventPriority.MONITOR) public void playerJoinEvent(PlayerJoinEvent event){ Player player = event.getPlayer(); try{ config = getConfig(); File aCommands2 = new File("plugins"+File.separator+"aCommands"+File.separator+"Players"+File.separator+player.getName()); aCommands2.mkdir(); File PlayerConfig = new File(aCommands2+File.separator+"config.yml"); try{ PlayerConfig.createNewFile(); log.info("aCommands: aHomes is created."); } catch ( IOException ex ){ log.info("Error: #2"); } if(!config.contains("general.name")) { config.set("general.name", player.getName()); } if(!config.contains("teleport.allow")) { config.set("teleport.allow", true); } if(!config.contains("general.afk")) { config.set("general.afk", false); }saveConfig();log.info("Created config file for "+player.getName()); }catch(Exception e1){ e1.printStackTrace(); } }}[syntax][/syntax]
Your event listener needs to be in a class that implements Listener. Then you need to register the event.
Heres a rewrite... But the listener doesn't activate on playerJoinEvent... Code: public class aCommands extends JavaPlugin implements Listener{ //Other code } Othercode: Code: @EventHandler(priority = EventPriority.MONITOR) public void playerJoinEvent(PlayerJoinEvent event){ Player player = event.getPlayer(); try{ config = getConfig(); File aCommands2 = new File("plugins"+File.separator+"aCommands"+File.separator+"Players"+File.separator+player.getName()); aCommands2.mkdir(); File PlayerConfig = new File(aCommands2+File.separator+"config.yml"); try{ PlayerConfig.createNewFile(); log.info("aCommands: aHomes is created."); } catch ( IOException ex ){ log.info("Error: #2"); } if(!config.contains("general.name")) { config.set("general.name", player.getName()); } if(!config.contains("teleport.allow")) { config.set("teleport.allow", true); } if(!config.contains("general.afk")) { config.set("general.afk", false); } saveConfig(); log.info("Created config file for "+player.getName()); }catch(Exception e1){ e1.printStackTrace(); } }
This is my main class on how to register new classes and events Code:java private GlassDropsCommands commands; // Declaring variable, private/public <ClassName> <Variable> public void onEnable() { commands = new GlassDropsCommands(this); // variable = new<ClassName.java>(this); PluginManager pm = Bukkit.getServer().getPluginManager(); pm.registerEvents(this.commands, this); // Registering events } Hope this kind of makes sence.
Thanks... Now the onPlayerJoin is activating but I get this... Code: 2012-03-17 20:01:17 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'ac' in plugin aCommands v0.4 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:166) at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:461) at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:818) at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:778) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:761) at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:33) at net.minecraft.server.NetworkManager.b(NetworkManager.java:229) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:112) at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:554) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:452) at net.minecraft.server.ThreadServerApplication.run(SourceFile:490) Caused by: java.lang.NullPointerException at net.sky.the.venture.acommands.aCommands.onCommand(aCommands.java:102) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40) ... 12 more
Heres my onEnable start. Those are the first 4 lines. Code:java public void onEnable(){commands = new aCommands();PluginManager pm = Bukkit.getServer().getPluginManager();pm.registerEvents(this.commands, this); // Registering eventsPluginDescriptionFile pdfFile = this.getDescription();
Code:java getCommand("command").setExecutor(ClassVariable);// Mine isgetCommand("gd").setExecutor(commands); Add that and see if it works.
Its going to be long... Really long.. Code:java package net.sky.the.venture.acommands; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.HashMap;import java.util.Map.Entry;import java.util.logging.Logger; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.GameMode;import org.bukkit.Location;import org.bukkit.World;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.configuration.file.FileConfiguration;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.EventPriority;import org.bukkit.event.Listener;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.plugin.PluginDescriptionFile;import org.bukkit.plugin.PluginManager;import org.bukkit.plugin.java.JavaPlugin; public class aCommands extends JavaPlugin implements Listener{ Logger log;private final String FILE_HOMES = "aHomes.txt";private File m_Folder;private HashMap<String, Location> m_Homes = new HashMap<String, Location>();String author = "AeroMcDoom";FileConfiguration config;private aCommands commands;Boolean teleport; public void onEnable(){ commands = new aCommands(); PluginManager pm = Bukkit.getServer().getPluginManager(); pm.registerEvents(this.commands, this); // Registering events getCommand("command").setExecutor(commands); PluginDescriptionFile pdfFile = this.getDescription();log = this.getLogger();log.info("aCommands: Version - " + pdfFile.getVersion());log.info("aCommands: Loading Systems"); m_Folder = getDataFolder(); if ( !m_Folder.exists() ){ log.info("aCommands: Config folder missing, creating..."); m_Folder.mkdir(); log.info("aCommands: aHomes is created."); } File homelist = new File(m_Folder.getAbsolutePath() + File.separator + FILE_HOMES); if ( !homelist.exists() ){ log.info("aCommands: aHomes.txt is missing, creating..."); try{ homelist.createNewFile(); log.info("aCommands: aHomes is created."); } catch ( IOException ex ){ log.info("Error: #2"); } } try{ File configs = new File(m_Folder.getAbsolutePath() + File.separator + "config.yml"); File aCommands = new File("plugins" + File.separator + "aCommands"); aCommands.mkdir(); if ( !configs.exists() ){ log.info("Config.yml is missing"); try{ configs.createNewFile(); log.info("aCommands: aHomes is created."); } catch ( IOException ex ){ log.info("Error: #1"); } }saveConfig();}catch(Exception e1){ e1.printStackTrace(); } log.info("Loading aHomes..."); if ( loadSettings() ) log.info("Loading aHomes completed."); else log.info("Loading aHomes failed.");log.info("Systems Loaded");} public void onDisable(){log.info("Unloading Systems");log.info("Saving Configs.");saveConfig();log.info("Systems Unloaded");} public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) { Player player = (Player)sender; loadPlayerConfig(player,config); config = getConfig(); teleport = config.getBoolean("teleport.allow"); PluginDescriptionFile pdfFile = this.getDescription(); if (!(sender instanceof Player)) { sender.sendMessage(ChatColor.RED + "This command has to be called by a player!"); return true; } CommandBoost extrac = new CommandBoost(); if (command.getName().equalsIgnoreCase("setspawn")) { if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } Location spawn = player.getLocation(); player.getWorld().setSpawnLocation(spawn.getBlockX(), spawn.getBlockY(), spawn.getBlockZ());player.sendMessage(ChatColor.RED + "Spawn set"); } else if (command.getName().equalsIgnoreCase("spawn")) { if (!player.hasPermission("command.default")){ player.sendMessage(ChatColor.RED + "You don't have a permission to do that."); return true; } Location spawn = player.getWorld().getSpawnLocation();spawn.setX(spawn.getBlockX() + 0.5);spawn.setY(spawn.getBlockY());spawn.setZ(spawn.getBlockZ() + 0.5);player.teleport(spawn); } else if (command.getName().equalsIgnoreCase("acversion")){ player.sendMessage("aCommands: Version - " + pdfFile.getVersion()); } else if (command.getName().equalsIgnoreCase("acauthor")){player.sendMessage("aCommands: Author - " + author); } else if (command.getName().equalsIgnoreCase("ac")){ player.sendMessage("aCommands: Showing Help"); player.sendMessage("Version - /acversion"); } else if (command.getName().equalsIgnoreCase("home")){ Location loc = m_Homes.get(player.getName()); if ( loc != null ){ player.teleport(loc); } else { player.sendMessage( ChatColor.RED + "Home not set, yet. Set it with /home, first" ); } return true; } else if (command.getName().equalsIgnoreCase("sethome")){ m_Homes.put(player.getName(), player.getLocation()); player.sendMessage( ChatColor.GREEN + "Home set!" ); saveSettings(); return true; } else if (command.getName().equalsIgnoreCase("time")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } return extrac.timeSet(player, args[0]); } else if (command.getName().equalsIgnoreCase("strike")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } if (args.length == 0){ return extrac.lightningStrike(player, args[0]); }else if (args.length == 1){ return extrac.lightningStrike(player, args.length > 0 ? args[0] : null); } } else if (command.getName().equalsIgnoreCase("players")){ return extrac.playerList(player); } else if (command.getName().equalsIgnoreCase("s")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } if (config.getBoolean("teleport.allow")){ return extrac.playerTpHere(player,playerFind(player, args[0])); } else { player.sendMessage("That person has teleportation disabled..."); } } else if (command.getName().equalsIgnoreCase("tp")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } if (config.getBoolean("teleport.allow")){ return extrac.playerTpTo(player, (playerFind(player, args[0]))); } else { player.sendMessage("That person has teleportation disabled..."); } } else if (command.getName().equalsIgnoreCase("tpoverride")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } return extrac.playerTpTo(player, (playerFind(player, args[0]))); } else if (command.getName().equalsIgnoreCase("soverride")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } return extrac.playerTpHere(player,playerFind(player, args[0])); } else if (command.getName().equalsIgnoreCase("tpdeny")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } if (config.getBoolean("teleport.allow")){ if(!config.contains("teleport.allow")) { config.set("teleport.allow", false); player.sendMessage("You have disabled teleportation"); } } } else if (command.getName().equalsIgnoreCase("tpallow")){ if (!player.hasPermission("command.op")){ player.sendMessage(ChatColor.RED + "You don't have permission to do that."); return true; } if (teleport){ if(!config.contains("teleport.allow")) { config.set("teleport.allow", false); player.sendMessage("You have enabled teleportation"); } } } else if (command.getName().equalsIgnoreCase("afk")){ if(!config.contains("general.afk")) { config.set("general.afk", true); Bukkit.getServer().broadcastMessage( " is now AFK"); } Bukkit.getServer().broadcastMessage(player + " is now AFK"); } else if (command.getName().equalsIgnoreCase("noafk")){ Bukkit.getServer().broadcastMessage(player + " has come back online"); } else if (command.getName().equalsIgnoreCase("gm")){ player.setGameMode(player.getGameMode() == GameMode.SURVIVAL ? GameMode.CREATIVE : GameMode.SURVIVAL); player.sendMessage(player.getGameMode() == GameMode.SURVIVAL ? "You are now in Creative mode" : "You are now in Survival mode"); }return false; } private boolean saveSettings() { try { BufferedWriter writer = new BufferedWriter(new FileWriter((m_Folder.getAbsolutePath() + File.separator + FILE_HOMES))); for ( Entry<String, Location> entry : m_Homes.entrySet() ) { Location loc = entry.getValue(); if ( loc != null ) { writer.write(entry.getKey() + ";" + loc.getX() + ";" + loc.getBlockY() + ";" + loc.getBlockZ() + ";" + loc.getPitch() + ";" + loc.getYaw() + ";" + loc.getWorld().getName() ); writer.newLine(); } } writer.close(); return true; } catch (Exception ex) { return false; } } public boolean loadSettings() { try { BufferedReader reader = new BufferedReader(new FileReader((m_Folder.getAbsolutePath() + File.separator + "aHomes.txt"))); String line = reader.readLine(); while ( line != null ) { String[] values = line.split(";"); if ( values.length == 7 ) { double X = Double.parseDouble(values[1]); double Y = Double.parseDouble(values[2]); double Z = Double.parseDouble(values[3]); float pitch = Float.parseFloat(values[4]); float yaw = Float.parseFloat(values[5]); World world = getServer().getWorld(values[6]); if ( world != null ) m_Homes.put(values[0], new Location(world, X, Y, Z, yaw, pitch)); } line = reader.readLine(); } return true; } catch (Exception ex) { return false; } } public Player playerFind(Player player, String arg){ Player targetplayer = null; if (player.getServer().getPlayer(arg) != null) { targetplayer = player.getServer().getPlayer(arg); }return targetplayer; } @EventHandler(priority = EventPriority.NORMAL) public void playerJoinEvent(PlayerJoinEvent event){ Player player = event.getPlayer(); File aCommands2 = new File("plugins"+File.separator+"aCommands"+File.separator+"Players"+File.separator+player.getName()); try{ aCommands2.mkdir(); }catch(Exception e1){ e1.printStackTrace(); } try{ File PlayerConfig = new File(aCommands2+File.separator+"config.yml"); PlayerConfig.createNewFile(); log.info("aCommands: aHomes is created."); if(!config.contains("general.name")) { config.set("general.name", player.getName()); } if(!config.contains("teleport.allow")) { config.set("teleport.allow", true); } if(!config.contains("general.afk")) { config.set("general.afk", false); } saveConfig();log.info("Created config file for "+player.getName()); } catch ( IOException ex ){ log.info("Error: #2"); } } public void loadPlayerConfig(Player player, FileConfiguration config){ File aCommands2 = new File("plugins"+File.separator+"aCommands"+File.separator+"Players"+File.separator+player.getName()); File playerConfig = new File(aCommands2+File.separator+"config.yml"); if (!(playerConfig.exists())){ aCommands2.mkdir(); try {playerConfig.createNewFile();} catch (IOException e) {e.printStackTrace();} } teleport = config.getBoolean("teleport.allow"); } The End...
I assumed that you has more thah one class, the; private aCommands commands; and commands = new aCommands(); is not needed. As for the rest, i don't know sorry Hopefully someone else knows...
1. Make a new class called something like "Commands" and make it implement "CommandExecutor" Code:java public class Ping implements CommandExecutor { 2. get the instanceof of "plugin" Code:java public static pluginclass plugin;public Ping(pluginclass instance){plugin = instance;} 3. Writte the command into the commandexecutor class. 4. Writte the command into the "plugin.yml" HTML: commands: ping: usage: "Usage: /<command>" 5. Execute the command. Under the "public class pluginname extends JavaPlugin implements Listener {" Code:java private Ping ping = null; In the onEnable() method: Code:java ping = new Ping(this); This a slack way to execute commands. Btw, "Ping" is just an example command.