I get this when I start my server... Code: 23:24:40 [INFO] [WarFighter] Loading WarFighter v1.1 23:24:40 [INFO] [WarFighter] Enabling WarFighter v1.1 23:24:40 [INFO] [WarFighter] Enabling WarFighter plugin... 23:24:40 [INFO] [WarFighter] Loading config... 23:24:40 [INFO] [WarFighter] Config successfully loaded! Setting respawn time... 23:24:40 [INFO] [WarFighter] Setting Time Limit... 23:24:40 [INFO] [WarFighter] Registering events... 23:24:40 [INFO] [WarFighter] KD... 23:24:40 [INFO] [WarFighter] ratio... 23:24:40 [SEVERE] Error occurred while enabling WarFighter v1.1 (Is it up to date?) java.lang.NullPointerException at de.mrpixeldream.bukkit.tdm.WarFighter.onEnable(WarFighter.java:84) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.loadPlugin(CraftServer.java:282) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.enablePlugins(CraftServer.java:264) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.reload(CraftServer.java:596) at org.bukkit.Bukkit.reload(Bukkit.java:184) at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchCommand(CraftServer.java:514) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchServerCommand(CraftServer.java:506) at net.minecraft.server.v1_4_R1.DedicatedServer.al(DedicatedServer.java:260) at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:225) at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494) at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427) at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849) 23:24:40 [INFO] Server permissions file permissions.yml is empty, ignoring it 23:24:40 [INFO] CONSOLE: Reload complete. Here is the troubled onEnable Code: System.out.println("[WarFighter] Config successfully loaded! Setting respawn time..."); respawn_time = getConfig().getInt("Respawn.time"); System.out.println("[WarFighter] Setting Time Limit..."); time = getConfig().getInt("General.time limit"); System.out.println("[WarFighter] Registering events..."); getCommand("kd").setExecutor(new CommandKD(this)); System.out.println("[WarFighter] KD..."); getCommand("ratio").setExecutor(new CommandKD(this)); System.out.println("[WarFighter] ratio..."); getCommand("startmatch").setExecutor(new CommandStartMatch(this)); System.out.println("[WarFighter] startmatch..."); getCommand("stopmatch").setExecutor(new CommandStopMatch(this)); System.out.println("[WarFighter] stopmatch..."); getCommand("stats").setExecutor(new CommandStats(this)); System.out.println("[WarFighter] stats..."); getCommand("team").setExecutor(new CommandTeam(this)); System.out.println("[WarFighter] team..."); getServer().getPluginManager().registerEvents(this, this); getServer().getPluginManager().registerEvents(deadmv_handler, this);
Something is null on line 84 of your main class, WarFighter.java. It would help you copied the whole class down and put it in syntax tags and the error in code tags.
Main class Code:Java package de.mrpixeldream.bukkit.tdm; import de.mrpixeldream.bukkit.tdm.cmd.CommandKD;import de.mrpixeldream.bukkit.tdm.cmd.CommandStartMatch;import de.mrpixeldream.bukkit.tdm.cmd.CommandStats;import de.mrpixeldream.bukkit.tdm.cmd.CommandStopMatch;import de.mrpixeldream.bukkit.tdm.cmd.CommandTeam; import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.LinkedList; import org.bukkit.ChatColor;import org.bukkit.entity.Entity;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.entity.PlayerDeathEvent;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.event.player.PlayerQuitEvent;import org.bukkit.event.player.PlayerRespawnEvent;import org.bukkit.inventory.ItemStack;import org.bukkit.plugin.java.JavaPlugin; public class WarFighter extends JavaPlugin implements Listener { private final String PREFIX = ChatColor.DARK_PURPLE + "[WarFighter] ";public static LinkedList<Entity> red;public static LinkedList<Entity> blue;public static ArrayList<Entity> dead;public static ArrayList<Integer> respawn_left;public static HashMap<Player, Integer> scores;public static HashMap<Player, Integer> deaths;public static int respawn_time;public static int red_score = 0;public static int blue_score = 0;public static int time;public static boolean isDeatmatch;public static final FriendlyFireHandler ff_handler = new FriendlyFireHandler();public static final DeadPlayerRespawnHandler deadrs_handler = new DeadPlayerRespawnHandler();public static final DeadPlayerMoveHandler deadmv_handler = new DeadPlayerMoveHandler();public static final DeathmatchHandler dm_handler = new DeathmatchHandler(); /** private final CommandKD CMD_KD = new CommandKD(this); private final* CommandRestart CMD_RESTART = new CommandRestart(this); private final* CommandStats CMD_STATS = new CommandStats(); private final CommandTeam* CMD_TEAM = new CommandTeam();*/ public void onEnable() {System.out.println("[WarFighter] Enabling WarFighter plugin..."); red = new LinkedList<Entity>();blue = new LinkedList<Entity>(); dead = new ArrayList<Entity>();respawn_left = new ArrayList<Integer>(); scores = new HashMap<Player, Integer>();deaths = new HashMap<Player, Integer>(); isDeatmatch = false; System.out.println("[WarFighter] Loading config..."); loadConfig(); System.out.println("[WarFighter] Config successfully loaded! Setting respawn time..."); respawn_time = getConfig().getInt("Respawn.time"); System.out.println("[WarFighter] Setting Time Limit..."); time = getConfig().getInt("General.time limit"); System.out.println("[WarFighter] Registering events..."); getCommand("kd").setExecutor(new CommandKD(this));System.out.println("[WarFighter] KD...");getCommand("ratio").setExecutor(new CommandKD(this));System.out.println("[WarFighter] ratio...");getCommand("startmatch").setExecutor(new CommandStartMatch(this));System.out.println("[WarFighter] startmatch...");getCommand("stopmatch").setExecutor(new CommandStopMatch(this));System.out.println("[WarFighter] stopmatch...");getCommand("stats").setExecutor(new CommandStats(this));System.out.println("[WarFighter] stats...");getCommand("team").setExecutor(new CommandTeam(this));System.out.println("[WarFighter] team...");getServer().getPluginManager().registerEvents(this, this);getServer().getPluginManager().registerEvents(deadmv_handler, this); if (!getConfig().getBoolean("General.friendly_fire")) {getServer().getPluginManager().registerEvents(ff_handler, this);} getServer().getScheduler().scheduleSyncRepeatingTask(this,deadrs_handler, 0L, 20L); System.out.println("[WarFighter] Events successfully registered!");System.out.println("[WarFighter] Thanks for using WarFighter!");} public void onDisable() {System.out.println("[WarFighter] Disabling WarFighter...");System.out.println("[WarFighter] Kicking all players..."); for (Player now : getServer().getOnlinePlayers()) {now.kickPlayer(this.PREFIX + ChatColor.RED+ "Server reload/restart!" + ChatColor.AQUA+ " Please rejoin soon!");} System.out.println("[WarFighter] All players kicked! Ending match..."); dead = null;red = null;blue = null; System.out.println("[WarFighter] WarFighter succesfully disabled!");System.out.println("[WarFighter] Thanks for using!");} public void loadConfig() {boolean configFileExistant = false; if (new File("plugins/WarFighter/").exists()) {configFileExistant = true;} getConfig().options().copyDefaults(true); if (!configFileExistant) {getConfig().addDefault("General.friendly_fire", Boolean.valueOf(false));getConfig().addDefault("General.score limit", Integer.valueOf(10));getConfig().addDefault("Respawn.time", Integer.valueOf(7));getConfig().addDefault("General.time limit", Integer.valueOf(600));} saveConfig();reloadConfig();} @EventHandlerpublic void onPlayerJoin(PlayerJoinEvent e) {String player_display_name = e.getPlayer().getDisplayName(); if (red.size() > blue.size()) {e.setJoinMessage(this.PREFIX + ChatColor.BLUE+ e.getPlayer().getName() + ChatColor.GOLD+ " joined the game!"); blue.add(e.getPlayer());e.getPlayer().sendMessage(this.PREFIX + ChatColor.BLUE + "You joined team blue!");e.getPlayer().getInventory().setHelmet(new ItemStack(35, 1, (short) 11)); e.getPlayer().setDisplayName(ChatColor.BLUE + player_display_name);} else {e.setJoinMessage(this.PREFIX + ChatColor.RED+ e.getPlayer().getName() + ChatColor.GOLD+ " joined the game!"); red.add(e.getPlayer());e.getPlayer().sendMessage(this.PREFIX + ChatColor.RED + "You joined team red!");e.getPlayer().getInventory().setHelmet(new ItemStack(35, 1, (short) 14)); e.getPlayer().setDisplayName(ChatColor.RED + player_display_name);} scores.put(e.getPlayer(), Integer.valueOf(0));deaths.put(e.getPlayer(), Integer.valueOf(0)); e.getPlayer().sendMessage(this.PREFIX + ChatColor.AQUA+ "This server is running WarFighter!");e.getPlayer().sendMessage(this.PREFIX + ChatColor.AQUA + "Have fun and good luck!");} @EventHandlerpublic void onPlayerQuit(PlayerQuitEvent e) {if (red.contains(e.getPlayer())) {e.setQuitMessage(this.PREFIX + ChatColor.RED+ e.getPlayer().getName() + ChatColor.GOLD+ " left the game!");} else {e.setQuitMessage(this.PREFIX + ChatColor.BLUE+ e.getPlayer().getName() + ChatColor.GOLD+ " left the game!");} if (blue.contains(e.getPlayer())) {blue.remove(e.getPlayer());} else {red.remove(e.getPlayer());} scores.remove(e.getPlayer());deaths.remove(e.getPlayer());} @EventHandlerpublic void onPlayerKilled(PlayerDeathEvent e) {Player killed = e.getEntity();String killed_name = killed.getName(); dead.add(killed);respawn_left.add(Integer.valueOf(0)); int player_score = ((Integer) scores.get(killed.getKiller())).intValue();player_score++;scores.remove(killed.getKiller());scores.put(killed.getKiller(), Integer.valueOf(player_score)); int player_deaths = ((Integer) deaths.get(killed)).intValue();player_deaths++;deaths.remove(killed);deaths.put(killed, Integer.valueOf(player_deaths)); if (red.contains(killed.getKiller())) {red_score += 1;e.setDeathMessage(this.PREFIX + ChatColor.RED+ "Red team scored one point!");getServer().broadcastMessage(this.PREFIX + ChatColor.RED+ e.getEntity().getKiller().getName() + " killed "+ killed_name + " with "+ killed.getKiller().getItemInHand().getType());} else {blue_score += 1;e.setDeathMessage(this.PREFIX + ChatColor.BLUE+ "Blue team scored one point!");getServer().broadcastMessage(this.PREFIX + ChatColor.BLUE+ e.getEntity().getKiller().getName() + " killed "+ killed_name + " with "+ killed.getKiller().getItemInHand().getType());} e.getDrops().clear(); if (time == getConfig().getInt("General.time limit")) {if (red_score > blue_score) {blue_score = 0;red_score = 0; getServer().broadcastMessage(this.PREFIX + ChatColor.DARK_RED + "Match over!");getServer().broadcastMessage(this.PREFIX + ChatColor.RED + "Red team won! ("+ getConfig().getInt("General.duration")+ " points)");getServer().broadcastMessage(this.PREFIX + ChatColor.BLUE + "Blue team got "+ blue_score + " points!"); for (Player now : getServer().getOnlinePlayers()) {now.setHealth(20);now.sendMessage(this.PREFIX + ChatColor.AQUA+ "You have been healed to be prepared for next match!");}} if (blue_score > red_score) {blue_score = 0;red_score = 0; getServer().broadcastMessage(this.PREFIX + ChatColor.DARK_RED + "Match over!");getServer().broadcastMessage(this.PREFIX + ChatColor.BLUE + "Blue team won! ("+ getConfig().getInt("General.duration")+ " points)");getServer().broadcastMessage(this.PREFIX + ChatColor.RED + "Red team got " + blue_score+ " points!"); for (Player now : getServer().getOnlinePlayers()) {now.setHealth(20);now.sendMessage(this.PREFIX + ChatColor.AQUA+ "You have been healed to be prepared for next match!");}}} if (red_score == getConfig().getInt("General.score limit")) {blue_score = 0;red_score = 0; getServer().broadcastMessage(this.PREFIX + ChatColor.DARK_RED + "Match over!");getServer().broadcastMessage(this.PREFIX + ChatColor.RED + "Red team won! ("+ getConfig().getInt("General.duration")+ " points)");getServer().broadcastMessage(this.PREFIX + ChatColor.BLUE + "Blue team got "+ blue_score + " points!"); for (Player now : getServer().getOnlinePlayers()) {now.setHealth(20);now.sendMessage(this.PREFIX + ChatColor.AQUA+ "You have been healed to be prepared for next match!");}} if (blue_score == getConfig().getInt("General.score limit")) {blue_score = 0;red_score = 0; getServer().broadcastMessage(this.PREFIX + ChatColor.DARK_RED + "Match over!");getServer().broadcastMessage(this.PREFIX + ChatColor.BLUE + "Blue team won! ("+ getConfig().getInt("General.duration")+ " points)");getServer().broadcastMessage(this.PREFIX + ChatColor.RED + "Red team got " + blue_score+ " points!"); for (Player now : getServer().getOnlinePlayers()) {now.setHealth(20);now.sendMessage(this.PREFIX + ChatColor.AQUA+ "You have been healed to be prepared for next match!");}}} @EventHandlerpublic void onPlayerRespawn(PlayerRespawnEvent e) {if (red.contains(e.getPlayer())) {e.getPlayer().getInventory().setHelmet(new ItemStack(35, 1, (short) 14));} else {e.getPlayer().getInventory().setHelmet(new ItemStack(35, 1, (short) 11));}}} class that line 84 is accessing the command from Code:Java package de.mrpixeldream.bukkit.tdm.cmd; import de.mrpixeldream.bukkit.tdm.WarFighter;import java.util.ArrayList;import java.util.HashMap; import org.bukkit.ChatColor;import org.bukkit.command.Command;import org.bukkit.command.CommandExecutor;import org.bukkit.command.CommandSender;import org.bukkit.entity.Entity;import org.bukkit.entity.Player;import org.bukkit.event.entity.EntityDamageByEntityEvent; public class CommandStartMatch implements CommandExecutor {private WarFighter plugin;private final String PREFIX = ChatColor.DARK_PURPLE + "[WarFighter] ";public int time; public CommandStartMatch(WarFighter plugin) {this.plugin = plugin;} public boolean onCommand(CommandSender sender, Command cmd, String label,String[] args) {if (label.equalsIgnoreCase("startmatch")) {if (args.length == 1) {if (args[0].equalsIgnoreCase("tdm")) {if (sender.hasPermission("wf.start.tdm")) {this.plugin.getServer().broadcastMessage(this.PREFIX + "Starting new match of type \"Team-Deathmatch\"!");EntityDamageByEntityEvent.getHandlerList().unregister(WarFighter.ff_handler);this.plugin.getServer().getPluginManager().registerEvents(WarFighter.ff_handler, this.plugin); WarFighter.dead = new ArrayList<Entity>();WarFighter.deaths = new HashMap<Player, Integer>();WarFighter.respawn_left = new ArrayList<Integer>();WarFighter.scores = new HashMap<Player, Integer>(); WarFighter.isDeatmatch = false; this.plugin.getServer().broadcastMessage(this.PREFIX + ChatColor.DARK_GREEN+ "New match started!");} else {sender.sendMessage(this.PREFIX+ "You don't have permission!");}} else if (args[0].equalsIgnoreCase("dm")) {if (sender.hasPermission("wf.start.dm")) {this.plugin.getServer().broadcastMessage(this.PREFIX+ "Starting new match of type \"Deatmatch\"!");EntityDamageByEntityEvent.getHandlerList().unregister(WarFighter.ff_handler); this.plugin.getServer().getPluginManager().registerEvents(WarFighter.dm_handler,this.plugin); WarFighter.dead = new ArrayList<Entity>();WarFighter.deaths = new HashMap<Player, Integer>();WarFighter.respawn_left = new ArrayList<Integer>();WarFighter.scores = new HashMap<Player, Integer>(); WarFighter.isDeatmatch = true; this.plugin.getServer().broadcastMessage(this.PREFIX + ChatColor.DARK_GREEN+ "New match started!");}} else {sender.sendMessage(this.PREFIX + ChatColor.RED+ "Known match types: dm, tdm");}}}return true;}} Code: 23:24:40 [INFO] [WarFighter] Loading WarFighter v1.1 23:24:40 [INFO] [WarFighter] Enabling WarFighter v1.1 23:24:40 [INFO] [WarFighter] Enabling WarFighter plugin... 23:24:40 [INFO] [WarFighter] Loading config... 23:24:40 [INFO] [WarFighter] Config successfully loaded! Setting respawn time... 23:24:40 [INFO] [WarFighter] Setting Time Limit... 23:24:40 [INFO] [WarFighter] Registering events... 23:24:40 [INFO] [WarFighter] KD... 23:24:40 [INFO] [WarFighter] ratio... 23:24:40 [SEVERE] Error occurred while enabling WarFighter v1.1 (Is it up to date?) java.lang.NullPointerException at de.mrpixeldream.bukkit.tdm.WarFighter.onEnable(WarFighter.java:84) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.loadPlugin(CraftServer.java:282) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.enablePlugins(CraftServer.java:264) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.reload(CraftServer.java:596) at org.bukkit.Bukkit.reload(Bukkit.java:184) at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:186) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchCommand(CraftServer.java:514) at org.bukkit.craftbukkit.v1_4_R1.CraftServer.dispatchServerCommand(CraftServer.java:506) at net.minecraft.server.v1_4_R1.DedicatedServer.al(DedicatedServer.java:260) at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:225) at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494) at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427) at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849) 23:24:40 [INFO] Server permissions file permissions.yml is empty, ignoring it 23:24:40 [INFO] CONSOLE: Reload complete. Well i am stumped... EDIT by Moderator: merged posts, please use the edit button instead of double posting.
getCommand("startmatch").setExecutor(new CommandStartMatch(this)); that is the third part of the command getter. It gets the other commands from the other classes. The first two work fine, but it puts out an error at this line. Does anyone know why it gets an error on this getCommand? EDIT by Moderator: merged posts, please use the edit button instead of double posting.
To use the getCommand(""); method you need to have your commands registered in your plugin.yml, make sure they are registered.
Perhaps you made a mistake in your plugin.yml like a typo in the command name or the command is missing completely? Add your plugin.yml here to check if you can't find any mistake in it.
Believe me, I have checked everything... here is the plugin.yml I just don't understand why it fails at that one getCommand. It used to fail at both the start and stop commands, but I fixed the stop command by changing it to /stopmatch because I don't think the server liked having two /stop commands. Code: name: WarFighter author: MrPixelDream version: 1.2 main: de.mrpixeldream.bukkit.tdm.WarFighter commands: kd: usage: /kd [player] description: Shows the kill-death ratio of [player] ratio: usage: /ratio [player] description: Shows the kill-death ratio of [player] startmatch: usage: /startmatch [game type] description: Starts a new match of [game type] stopmatch: usage: /stopmatch [game type] description: Starts a new match of [game type] team: usage: /team [color] description: Shows all members of team [color] stats: usage: /stats description: Shows the stats of both teams I am about to give up... I spent the whole day trying to learn constructors so that I can get variables between classes...google wasnt very good to me today though... is there any video tutorial or example that you guys and give me? BTW: Somehow I fixed the onEnable error...don't ask how EDIT by Moderator: merged posts, please use the edit button instead of double posting.