Solved Countdown in menu, error

Discussion in 'Plugin Development' started by shadow5353, Jul 2, 2014.

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

    shadow5353

    In a menu it will teleport a player to a location that are in the config, but when I add a BukkitRunnable so it will countdown and teleport after 5 seconds. But it give me a error when I click on the menu.

    Code:
    Code:
    package me.shadow5353.fasttravel;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.GameMode;
    import org.bukkit.Location;
    import org.bukkit.World;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.material.Wool;
    import org.bukkit.scheduler.BukkitRunnable;
     
    public class Menu implements Listener {
     
            private static Inventory inv;
            private ItemStack c, s, a;
            private FastTravel plugin;
            SettingsManager settings = SettingsManager.getInstance();
            MessageManager msg = MessageManager.getInstance();
         
            public Menu() {
                    inv = Bukkit.getServer().createInventory(null, 9, "Fast Travel");
                 
                    c = createItem(DyeColor.GREEN, ChatColor.GREEN + "City");
                    s = createItem(DyeColor.YELLOW, ChatColor.YELLOW + "Town Harbor");
                    a = createItem(DyeColor.RED, ChatColor.RED + "Town");
                 
                    inv.setItem(1, c);
                    inv.setItem(4, s);
                    inv.setItem(7, a);
            }
         
            private ItemStack createItem(DyeColor dc, String name) {
                    ItemStack i = new Wool(dc).toItemStack(1);
                    ItemMeta im = i.getItemMeta();
                    im.setDisplayName(name);
                    i.setItemMeta(im);
                    return i;
            }
         
            public static void show(Player p) {
                    p.openInventory(inv);
            }
         
            @EventHandler
            public void onInventoryClick(InventoryClickEvent e) {
                final Player p = (Player) e.getWhoClicked();
                if (!e.getInventory().getName().equalsIgnoreCase(inv.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("City")) {
                    e.setCancelled(true);
                    if(settings.getData().getString("locations.city.enable") == null){
                        msg.info(p, "This Fast Travel have been disabled!");
                        return;
                    }
                    msg.info(p, "You will get teleported in 5 seconds!");
                    new BukkitRunnable(){
                        private int countdown = 5;
                        @Override
                        public void run(){
                            countdown--;
                            if(countdown == 4){
                                msg.info(p, "4..");
                                }
                            if(countdown == 3){
                                msg.info(p, "3..");
                                }
                            if(countdown == 2){
                                msg.info(p, "2..");
                                }
                            if(countdown == 1){
                                msg.info(p, "1..");
                                }       
                            if(countdown == 0){
                                cancel();
                                World world = Bukkit.getServer().getWorld(settings.getData().getString("locations.city.world"));
                                int x = settings.getData().getInt("locations.city.x");
                                int y = settings.getData().getInt("locations.city.y");
                                int z = settings.getData().getInt("locations.city.z");
                                int yaw = settings.getData().getInt("locations.city.yaw");
                                int pitch = settings.getData().getInt("locations.city.pitch");
                                Location loc = new Location(world, x, y, z, yaw, pitch);
                                p.teleport(loc);
                                p.closeInventory();
                                msg.good(p, "You have been teleported to City!");
                                }
                            }
                        }.runTaskTimer(plugin, 0L, 20L);
                    }
                    if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Town Harbor")) {
                            e.setCancelled(true);
                            e.getWhoClicked().setGameMode(GameMode.SURVIVAL);
                            e.getWhoClicked().closeInventory();
                    }
                    if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Town")) {
                            e.setCancelled(true);
                            e.getWhoClicked().setGameMode(GameMode.ADVENTURE);
                            e.getWhoClicked().closeInventory();
                    }
            }
    }
    Error:
    Code:
    [11:06:13] [Server thread/ERROR]: Could not pass event InventoryClickEvent to FastTravel v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:1363) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.a(SourceFile:32) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.PacketPlayInWindowClick.handle(SourceFile:10) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:157) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:260) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
    Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
        at org.apache.commons.lang.Validate.notNull(Validate.java:203) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at org.bukkit.craftbukkit.v1_7_R3.scheduler.CraftScheduler.validate(CraftScheduler.java:391) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at org.bukkit.craftbukkit.v1_7_R3.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:120) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at org.bukkit.scheduler.BukkitRunnable.runTaskTimer(BukkitRunnable.java:100) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        at me.shadow5353.fasttravel.Menu.onInventoryClick(Menu.java:94) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_60]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_60]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_60]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_60]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-59-g6efeddf-b3074jnks]
        ... 13 more
     
  2. Offline

    NoLiver92

    shadow5353 Plugin is null, you havent set it in the constructor
     
  3. shadow5353 Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
     
  4. Offline

    shadow5353

    AdamQpzm NoLiver92 Thanks for pointing it out that it was in null, did not see it when I looked on the error.
     
    AdamQpzm likes this.
  5. Offline

    CynutsBR

    PogoStick29 give to you a hug!just kidding but it is true :p
     
Thread Status:
Not open for further replies.

Share This Page