Player teleport error

Discussion in 'Plugin Development' started by gamer1097, Jul 26, 2013.

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

    gamer1097

    Hey guys I've been trying to fix this error for awhile and cannot please help.

    Error
    Code:
    00:23:36 [SEVERE] Could not pass event PlayerInteractEvent to MobAPA v<1.0>
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_5_R3.event.CraftEventFactory.callPlayerInte
    ractEvent(CraftEventFactory.java:190)
            at net.minecraft.server.v1_5_R3.PlayerInteractManager.interact(PlayerInt
    eractManager.java:370)
            at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java
    :637)
            at net.minecraft.server.v1_5_R3.Packet15Place.handle(SourceFile:58)
            at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292
    )
            at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java
    :115)
            at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
            at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:3
    0)
            at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:5
    81)
            at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:2
    26)
            at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:4
    77)
            at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java
    :410)
            at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:5
    73)
    Caused by: java.lang.NullPointerException
            at net.gamersmods.MobAPA.Teleportation.Teleport.VotingAndToolSelection(T
    eleport.java:22)
            at net.gamersmods.MobAPA.Listener.EventListener.playerInteract(EventList
    ener.java:53)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            ... 16 more[/syntax]
     
    Main File
    [syntax=java]package net.gamersmods.MobAPA;
     
    import net.gamersmods.MobAPA.Listener.EventListener;
    import net.gamersmods.MobAPA.Until.ReferenceStrings;
     
    import org.bukkit.plugin.java.JavaPlugin;
     
     
    public final class Main extends JavaPlugin
    { 
     
          public static Main plugin = new Main();
       
        @Override
        public void onEnable()
        {
            getLogger().info(ReferenceStrings.OnStartup);
            this.getServer().getPluginManager().registerEvents(new EventListener(), this);
            getCommand("mobapa").setExecutor(new Commands(this));
            getCommand("set").setExecutor(new Commands(this));
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
     
        @Override
        public void onDisable()
        {
            getLogger().info(ReferenceStrings.OnDisable);
        }
     
    }
    
    Main File
    Code:
    package net.gamersmods.MobAPA;
     
    import net.gamersmods.MobAPA.Listener.EventListener;
    import net.gamersmods.MobAPA.Until.ReferenceStrings;
     
    import org.bukkit.plugin.java.JavaPlugin;
     
     
    public final class Main extends JavaPlugin
    {   
       
          public static Main plugin = new Main();
         
        @Override
        public void onEnable()
        {
            getLogger().info(ReferenceStrings.OnStartup);
            this.getServer().getPluginManager().registerEvents(new EventListener(), this);
            getCommand("mobapa").setExecutor(new Commands(this));
            getCommand("set").setExecutor(new Commands(this));
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
     
        @Override
        public void onDisable()
        {
            getLogger().info(ReferenceStrings.OnDisable);
        }
     
    }
    
    Commands File
    Code:
    package net.gamersmods.MobAPA;
     
    import net.gamersmods.MobAPA.Until.ReferenceStrings;
     
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
     
    public class Commands implements CommandExecutor
    {
        private Main plugin;
     
        public Commands(Main plugin) {
            this.plugin = plugin;
        }
     
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
        {
            Player player = (Player) sender;
         
            if(cmd.getName().equalsIgnoreCase("mobapa"))
            {
                if(sender instanceof Player)
                {
                    player.sendMessage(ReferenceStrings.mobapa);
                }
            }
            else if(cmd.getName().equalsIgnoreCase("set"))
            {
                if(sender instanceof Player && args[0].equalsIgnoreCase("MT"))
                {
                    plugin.getConfig().set("MT_X", player.getLocation().getBlockX());
                    plugin.getConfig().set("MT_Y", player.getLocation().getBlockY());
                    plugin.getConfig().set("MT_Z", player.getLocation().getBlockZ());
                    player.sendMessage(ReferenceStrings.setMT);
                    plugin.saveConfig(); 
                    plugin.reloadConfig();
                }
            }
            return false;
        }
     
    }
    
    Teleport File
    Code:
    package net.gamersmods.MobAPA.Teleportation;
     
    import net.gamersmods.MobAPA.Main;
     
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.World;
    import org.bukkit.entity.Player;
     
    public class Teleport
    {
     
        public static void VotingAndToolSelection(Player p)
        {
            int x = Main.plugin.getConfig().getInt("MT_X");
            int y = Main.plugin.getConfig().getInt("MT_Y");
            int z = Main.plugin.getConfig().getInt("MT_Z");
            World world = Bukkit.getServer().getWorld("world");
            p.teleport(new Location(world, x, y, z));
         
        }
    }
    
    Events File
    Code:
    package net.gamersmods.MobAPA.Listener;
     
    import net.gamersmods.MobAPA.Teleportation.Teleport;
    import net.gamersmods.MobAPA.Until.ReferenceStrings;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.block.Sign;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.block.SignChangeEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
     
    public class EventListener implements Listener
    {
        @EventHandler
        public static void playerJoinEvent(PlayerJoinEvent event)
        {
            Player player = event.getPlayer();
            player.sendMessage(ReferenceStrings.motd);
        }
     
        @EventHandler
        public void onSignChange(SignChangeEvent event)
        {
            Player p = event.getPlayer();
         
            if(event.getLine(0).contains("[JoinGame]"))
            {
                event.setLine(1, "ยง4[JoinGame]");
                p.sendMessage(ChatColor.BLUE + "MySign successfully created!");
            }
        }
     
        @EventHandler
        public void playerInteract(PlayerInteractEvent event)
        {
            Player player = event.getPlayer();
            Action action = event.getAction();
            Material block = event.getClickedBlock().getType();
         
            if(action == Action.RIGHT_CLICK_BLOCK)
            {
                if(block == Material.SIGN_POST || block == Material.WALL_SIGN)
                {
                    Sign sign = (Sign)event.getClickedBlock().getState();
                    String line1 = sign.getLine(1);
                    if(line1.contains("[JoinGame]"))
                    {
                        Teleport.VotingAndToolSelection(player);
                    }
                 
                }
            }
         
        }
     
    }
    
     
  2. Offline

    Jake0oo0

    Since theres no line numbers it's possible that the block clicked is null or the items in the config is null.
     
  3. Offline

    Polaris29

    The problem is improper intialization. Your main plugin class should only be intialized once, by the Bukkit server's JavaPluginLoader. The new instance of your Main class, wasn't and will never be initialized by the plugin loader. Instead just declare the variable in a your onEnable() method, because that non-static onEnable method is invoked upon the instance of the main plugin class initialized by the plugin loader.

    In your Main file, change "public static Main plugin = new Main();" to "public static Main plugin;"
    Then in your onEnable, put "plugin = this;"
     
  4. Offline

    Tirelessly

    Don't create a new instance of Main, use the this keyword instead
     
  5. Offline

    gamer1097


    I love you it works :)
     
Thread Status:
Not open for further replies.

Share This Page