Error trying to schedule events

Discussion in 'Plugin Development' started by hankered, Jun 25, 2014.

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

    hankered

    Hey, I'm trying to schedule events. I get an error and when I read it, it say 'Plugin attempted to register task while disabled'.

    StackTrace:
    Code:java
    1. [16:42:29 ERROR]: Could not pass event InventoryClickEvent to MoneyPrinter 2 v1.
    2. 2.1
    3. org.bukkit.event.EventException
    4. at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    5. va:427) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    6. at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    7. a:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    8. at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    9. ava:481) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    10. at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    11. ava:466) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    12. at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
    13. :1351) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    14. at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.a(SourceFile:32)
    15. [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    16. at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.handle(SourceFil
    17. e:10) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    18. at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
    19. ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    20. at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craf
    21. tbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    22. at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    23. 55) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    24. at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    25. 50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    26. at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    27. 45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    28. at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    29. :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    30. at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    31. 17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    32. Caused by: org.bukkit.plugin.IllegalPluginAccessException: Plugin attempted to r
    33. egister task while disabled
    34. at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.validate(Craf
    35. tScheduler.java:394) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    36. at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.runTaskTimer(
    37. CraftScheduler.java:120) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    38. at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.scheduleSyncR
    39. epeatingTask(CraftScheduler.java:116) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2
    40. 974jnks]
    41. at me.chris.moneyprinter.Main.scheduleEvent(Main.java:12) ~[?:?]
    42. at me.chris.moneyprinter.InteractListener.click(InteractListener.java:70
    43. ) ~[?:?]
    44. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0
    45. _40]
    46. at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0
    47. _40]
    48. at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    49. .7.0_40]
    50. at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_40]
    51. at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    52. va:425) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    53. ... 13 more


    Main Class (OnEnable and what method I used to schedule events):
    Code:java
    1. package me.chris.moneyprinter;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.plugin.java.JavaPlugin;
    5. import org.bukkit.scheduler.BukkitScheduler;
    6.  
    7. public class Main extends JavaPlugin{
    8.  
    9. public static void scheduleEvent(Long a, Long b, final String s, final int i){
    10. Main m = new Main();
    11. BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
    12. scheduler.scheduleSyncRepeatingTask(m, new Runnable() {
    13. @Override
    14. public void run(){
    15. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "eco give "+ s + " " + i);
    16. }
    17. }, a, b);
    18. }
    19.  
    20. @Override
    21. public void onEnable(){
    22. SpawnVillager sv = new SpawnVillager();
    23. InteractListener il = new InteractListener();
    24. Bukkit.getPluginManager().registerEvents(il, this);
    25. this.getCommand("spawnvillager").setExecutor(sv);
    26. }
    27.  
    28. }
    29.  


    Listener Class: (where all my events go)
    Code:java
    1. package me.chris.moneyprinter;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Material;
    6. import org.bukkit.entity.Entity;
    7. import org.bukkit.entity.EntityType;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.entity.Villager;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.entity.EntityDeathEvent;
    13. import org.bukkit.event.inventory.InventoryClickEvent;
    14. import org.bukkit.event.player.PlayerInteractEntityEvent;
    15. import org.bukkit.inventory.Inventory;
    16. import org.bukkit.inventory.ItemStack;
    17. import org.bukkit.inventory.meta.ItemMeta;
    18.  
    19. public class InteractListener implements Listener{
    20.  
    21.  
    22. public static ItemStack mp1(){
    23. ItemStack moneyprinter1 = new ItemStack(Material.FURNACE, 1);
    24. ItemMeta moneyprinter1m = moneyprinter1.getItemMeta();
    25. moneyprinter1m.setDisplayName(ChatColor.GREEN + "Money Printer 1");
    26. moneyprinter1.setItemMeta(moneyprinter1m);
    27. return moneyprinter1;
    28. }
    29. public static ItemStack mp2(){
    30. ItemStack moneyprinter11 = new ItemStack(Material.FURNACE, 1);
    31. ItemMeta moneyprinter1m1 = moneyprinter11.getItemMeta();
    32. moneyprinter1m1.setDisplayName(ChatColor.GREEN + "Money Printer 2");
    33. moneyprinter11.setItemMeta(moneyprinter1m1);
    34.  
    35. return moneyprinter11;
    36. }
    37. public static ItemStack mp3(){
    38. ItemStack moneyprinter111 = new ItemStack(Material.FURNACE, 1);
    39. ItemMeta moneyprinter1m11 = moneyprinter111.getItemMeta();
    40. moneyprinter1m11.setDisplayName(ChatColor.GREEN + "Money Printer 3");
    41. moneyprinter111.setItemMeta(moneyprinter1m11);
    42. return moneyprinter111;
    43. }
    44. public static ItemStack mp4(){
    45. ItemStack moneyprinter1111 = new ItemStack(Material.FURNACE, 1);
    46. ItemMeta moneyprinter1m111 = moneyprinter1111.getItemMeta();
    47. moneyprinter1m111.setDisplayName(ChatColor.GREEN + "Money Printer 4");
    48. moneyprinter1111.setItemMeta(moneyprinter1m111);
    49. return moneyprinter1111;
    50. }
    51.  
    52. public static Inventory myInventory = Bukkit.createInventory(null, 9, "MoneyPrinter!");
    53. static {
    54. myInventory.setItem(1, mp1());
    55. myInventory.setItem(3, mp2());
    56. myInventory.setItem(5, mp3());
    57. myInventory.setItem(7, mp4());
    58. }
    59.  
    60.  
    61. @EventHandler
    62. public void click(InventoryClickEvent e){
    63. Inventory inv = e.getInventory();
    64. ItemStack click = e.getCurrentItem();
    65. Player p = (Player)e.getWhoClicked();
    66. if(inv.getName().equalsIgnoreCase("MoneyPrinter!")){
    67. if(click.getType() == Material.FURNACE){
    68. if(click.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Money Printer 1")){
    69. p.getInventory().addItem(mp1());
    70. Main.scheduleEvent(0L, 60L, p.getName(), 10);
    71. p.closeInventory();
    72.  
    73. e.setCancelled(true);
    74. }
    75. if(click.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Money Printer 2")){
    76. p.getInventory().addItem(mp2());
    77. p.closeInventory();
    78. e.setCancelled(true);
    79.  
    80.  
    81. }
    82. if(click.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Money Printer 3")){
    83. p.getInventory().addItem(mp3());
    84. p.closeInventory();
    85. e.setCancelled(true);
    86.  
    87. }
    88. if(click.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Money Printer 4")){
    89. p.getInventory().addItem(mp4());
    90. p.closeInventory();
    91. e.setCancelled(true);
    92.  
    93. }
    94. }
    95. }
    96. }
    97.  
    98. @EventHandler
    99. public void death(EntityDeathEvent e){
    100. Entity ent = e.getEntity();
    101. if (ent.getType() == EntityType.VILLAGER) {
    102. Villager v = (Villager) ent;
    103. if(v.getCustomName().equalsIgnoreCase("Andre")){
    104. for(Player p : Bukkit.getOnlinePlayers()){
    105. p.sendMessage(ChatColor.RED + "Andre has died! :(");
    106. }
    107. }
    108. }
    109. }
    110.  
    111.  
    112.  
    113.  
    114. @EventHandler
    115. public void interact(PlayerInteractEntityEvent e){
    116. //Villager v = (Villager)e;
    117. Entity ent = e.getRightClicked();
    118. if (ent.getType() == EntityType.VILLAGER) {
    119. Villager v = (Villager) ent;
    120. Player p = e.getPlayer();
    121. if(v.getCustomName().equalsIgnoreCase("Andre")){
    122. p.sendMessage(ChatColor.GREEN + "Yo "+p.getName()+ ChatColor.RED.toString() + "" + ChatColor.GREEN + ", what you looking for?");
    123. e.setCancelled(true);
    124. p.openInventory(myInventory);
    125. }
    126. }
    127.  
    128.  
    129. }
    130.  
    131.  
    132.  
    133. }
    134.  


    Command Class:
    Code:
    package me.chris.moneyprinter;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Sound;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Villager;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
     
    public class SpawnVillager implements CommandExecutor {
       
        // s
        @Override
        public boolean onCommand(CommandSender sender, Command command,
                String label, String[] args) {
                Player p = (Player)sender;
               
           
            if(label.equalsIgnoreCase("spawnvillager")){
                if(sender instanceof Player){
                Villager v = p.getWorld().spawn(p.getLocation(), Villager.class);
                v.setCustomName("Andre");
                v.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 120000000, 1000));
                for(Player all : Bukkit.getOnlinePlayers()){
                    all.sendMessage(ChatColor.GREEN + "Andre has been spawned!");
                    all.playSound(all.getLocation(), Sound.CAT_MEOW, 10, 10);
                }
            }else{
                p.sendMessage(ChatColor.RED + "You must be a player to preform this command.");
            }
            }
            return true;
        }
     
    }
    
     
  2. Offline

    thecrystalflame

    try delaying it by 20 ticks or so, i think youll find that its trying to register it to early.
     
  3. Offline

    hankered

    thecrystalflame
    Alright. Will try.

    EDIT: --
    thecrystalflame
    Tried again. I turned it into: Should I change the first Long?
    Code:java
    1. Main.scheduleEvent(0L, 40L, p.getName(), 10);
    2.  
     
  4. Offline

    CorrieKay

    :confused: i've never had an issue where a listener is attempting to be registered too early. Can you show me where you're attempting to register the listener from, and your main class?
     
  5. Offline

    hankered

    CorrieKay
    Its on the OP but
    Code:java
    1. package me.chris.moneyprinter;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.plugin.java.JavaPlugin;
    5. import org.bukkit.scheduler.BukkitScheduler;
    6.  
    7. public class Main extends JavaPlugin{
    8.  
    9. public static void scheduleEvent(Long a, Long b, final String s, final int i){
    10. Main m = new Main();
    11. BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
    12. scheduler.scheduleSyncRepeatingTask(m, new Runnable() {
    13. @Override
    14. public void run(){
    15. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "eco give "+ s + " " + i);
    16. }
    17. }, a, b);
    18. }
    19.  
    20. @Override
    21. public void onEnable(){
    22. SpawnVillager sv = new SpawnVillager();
    23. InteractListener il = new InteractListener();
    24. Bukkit.getPluginManager().registerEvents(il, this);
    25. this.getCommand("spawnvillager").setExecutor(sv);
    26. BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
    27. scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
    28. @Override
    29. public void run() {
    30. Bukkit.broadcast("hi", "hi.hi");
    31. }
    32. }, 100L, 20L);
    33. //Just used the scheduler up there as a test.
    34.  
    35. }
    36.  
    37.  
    38. }
    39.  
     
  6. Offline

    fireblast709

    hankered line 10 is a huge no no. Never ever create your own instances of the main class.
     
    hankered likes this.
  7. Offline

    CorrieKay

    Got it. for whatever reason, line 10, you're initializing a new instance of your main class. No need to do that, just pass in "this" instead. the new instance of the plugin you're trying to create (which is a no-no in bukkit) is not initialized, which is why bukkit is freaking out.

    edit: like fireblast said :p
     
    hankered likes this.
  8. Offline

    hankered

Thread Status:
Not open for further replies.

Share This Page