Solved Multiple Source Packages

Discussion in 'Plugin Development' started by reider45, Dec 8, 2013.

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

    reider45

    Hello there again bukkit, I know it's very possible to use multiple src packages, such as

    [​IMG]

    So basically I've seen multiple threads on this, but still don't really understand. In my main class, I have
    Code:java
    1. public class Main extends JavaPlugin{
    2. Logger logger = Logger.getLogger("Minecraft");
    3.  
    4. public boolean gamestarted = false;
    5. public LobbyTimer lobbytimerclass;
    6.  
    7.  
    8. public void onEnable(){
    9. lobbytimerclass = new me.reider45.KnightsVSDragons.timers.LobbyTimer(this);
    10. logger.info("[KvsD] enabled. Created by Reider45");
    11. lobbytimerclass.lobbytimer = 122;
    12. // Start Timer
    13.  
    14. lobbytimerclass.lobbytimerstart();
    15. //lobbytimerclass.test();
    16. }


    And in my LobbyTimer class as show above, I have

    Code:java
    1. public class LobbyTimer extends Main{
    2. public Main plugin;
    3.  
    4. public LobbyTimer(Main instance){
    5. instance = plugin;
    6. }
    7.  
    8. public int lobbytimer = 122;
    9.  
    10. public void lobbytimerstart(){
    11. lobbytimer = 122;
    12. Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    13. public void run(){
    14. Bukkit.broadcastMessage(ChatColor.RED + "Run");
    15. // Le more code
    16. }
    17. },20L, 20L);
    18. }
    19. }


    Basically, i can use the lobbytimerstart(), but i get an error on

    Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable()

    Im assuming the problem is the
    {
    Code:java
    1. (plugin, new Runnable()


    I believe that I have to replace plugin with something else... but i'm not sure what. Here is the error upon startup:

    [12:29:43] [Server thread/INFO]: [KnightsVSDragons] Loading KnightsVSDragons v1.0
    [12:29:43] [Server thread/INFO]: [KnightsVSDragons] Enabling KnightsVSDragons v1.0
    [12:29:43] [Server thread/INFO]: [KvsD] enabled. Created by Reider45
    [12:29:43] [Server thread/ERROR]: Error occurred while enabling KnightsVSDragons v1.0 (Is it up to date?)
    java.lang.IllegalArgumentException: Plugin cannot be null
    at org.apache.commons.lang.Validate.notNull(Validate.java:203) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.validate(CraftScheduler.java:391) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:120) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.scheduleSyncRepeatingTask(CraftScheduler.java:116) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at me.reider45.KnightsVSDragons.timers.LobbyTimer.lobbytimerstart(LobbyTimer.java:19) ~[?:?]
    at me.reider45.KnightsVSDragons.Main.onEnable(Main.java:26) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:298) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:280) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(CraftServer.java:630) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.Bukkit.reload(Bukkit.java:279) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchServerCommand(CraftServer.java:529) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.DedicatedServer.aw(DedicatedServer.java:286) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:251) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:541) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:453) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    [12:29:43] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it

    Any help appreciated, thanks!
     
  2. Offline

    The_Doctor_123

    Errrr...
    Code:java
    1. public LobbyTimer(Main instance){
    2. instance = plugin;
    3. }
     
  3. Offline

    Not2EXceL

  4. Offline

    reider45

    Not2EXceL The_Doctor_123

    Still confused on what to put at the stared section :S any help?
    Code:java
    1. Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(***, new Runnable() {


    Also thanks for that document Not2EXceL
     
  5. Offline

    The_Doctor_123

    reider45
    Your main class instance..
     
  6. Offline

    reider45


    I tried that and got the same error as above.
     
  7. Offline

    The_Doctor_123

    Did you change this?
    Code:java
    1. public LobbyTimer(Main instance){
    2. instance = plugin;
    3. }
     
  8. Offline

    reider45


    Yes, but then I changed it back, here is the code

    Code:java
    1. package me.reider45.KnightsVSDragons.timers;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5.  
    6. import me.reider45.KnightsVSDragons.Main;
    7.  
    8. public class LobbyTimerClass{
    9. public Main plugin;
    10.  
    11. public LobbyTimerClass(Main instance){
    12. instance = plugin;
    13. }
    14.  
    15. public int lobbytimer = 122;
    16.  
    17. public void lobbytimerstart(){
    18. lobbytimer = 122;
    19. Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    20. public void run(){
    21. Bukkit.broadcastMessage(ChatColor.RED + "Run");
    22. }
    23. },20L, 20L);
    24. }
    25. }


    and the main class

    Code:java
    1. package me.reider45.KnightsVSDragons;
    2.  
    3. import java.util.logging.Logger;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.command.Command;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9. import org.bukkit.plugin.java.JavaPlugin;
    10.  
    11. import me.reider45.KnightsVSDragons.timers.LobbyTimerClass;
    12.  
    13. public class Main extends JavaPlugin{
    14. Logger logger = Logger.getLogger("Minecraft");
    15.  
    16. public boolean gamestarted = false;
    17. LobbyTimerClass timerpack = new LobbyTimerClass(null);
    18.  
    19. public void onEnable(){
    20. logger.info("[KvsD] enabled. Created by Reider45");
    21. timerpack.lobbytimer = 122;
    22. timerpack.lobbytimerstart();
    23. }
    24.  
    25. public void onDisable(){
    26. logger.info("[KvsD] disabled. Created by Reider45");
    27. }
    28. }
     
  9. Offline

    The_Doctor_123

    Umm.. you may want to learn a little bit of Algebra..

    The left hand side of the equals sign is the variable you're assigning the value to..
     
  10. Offline

    reider45


    FML, literally the one time I switch them around...

    Reguardless, this
    Code:java
    1. package me.reider45.KnightsVSDragons.timers;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5.  
    6. import me.reider45.KnightsVSDragons.Main;
    7.  
    8. public class LobbyTimerClass{
    9. public Main plugin;
    10.  
    11. public LobbyTimerClass(Main instance){
    12. plugin = instance;
    13. }
    14.  
    15. public int lobbytimer = 122;
    16.  
    17. public void lobbytimerstart(){
    18. lobbytimer = 122;
    19. Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable()


    still gives me the error

    [23:04:49] [Server thread/INFO]: [KnightsVSDragons] Loading KnightsVSDragons v1.0
    [23:04:49] [Server thread/INFO]: [KnightsVSDragons] Enabling KnightsVSDragons v1.0
    [23:04:49] [Server thread/INFO]: [KvsD] enabled. Created by Reider45
    [23:04:49] [Server thread/ERROR]: Error occurred while enabling KnightsVSDragons v1.0 (Is it up to date?)
    java.lang.IllegalArgumentException: Plugin cannot be null
    at org.apache.commons.lang.Validate.notNull(Validate.java:203) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.validate(CraftScheduler.java:391) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:120) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.scheduleSyncRepeatingTask(CraftScheduler.java:116) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at me.reider45.KnightsVSDragons.timers.LobbyTimerClass.lobbytimerstart(LobbyTimerClass.java:19) ~[?:?]
    at me.reider45.KnightsVSDragons.Main.onEnable(Main.java:22) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) ~[Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:298) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:280) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(CraftServer.java:630) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.Bukkit.reload(Bukkit.java:279) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchServerCommand(CraftServer.java:529) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.DedicatedServer.aw(DedicatedServer.java:286) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:251) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:541) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:453) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]
    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [Bukkit.jar:git-Bukkit-1.6.4-R2.0-28-g373cbb7-b2945jnks]

    Also, thanks for all your help so far ;)
     
  11. Offline

    The_Doctor_123

    reider45
    Uhum.
    Code:java
    1. public class LobbyTimer extends Main{

    No. There can only be one instance of your main class in a single plugin.
     
    Garris0n likes this.
  12. Offline

    Garris0n

    That's not algebra, it's code... in algebra it doesn't really matter.

    As for the OP:
    The error says plugin can not be null. Your constructor takes the plugin. If you note your main class, you pass it null. Therefore plugin is null. Plugin can not be null...
     
  13. Offline

    The_Doctor_123

    Garris0n
    Programming is a whole lot like Algebra. Although, less in Java due to references rather than copies(although, it is a copy of a reference when you say something is equal to something else). Algebra is all about variables and storing values in variables, and so is programming.
     
  14. Offline

    reider45

    Garris0n Thanks for the explanation, I believe I'm beginning to understand it more, So how would I execute the lobbytimerstart() in the main class then..?
     
  15. Offline

    Garris0n

    What I meant was that in algebra x=1 and 1=x mean the same thing. In programming x=1 is assigning a variable, while 1=x is a compiler error. I'm not sure if there are any languages where the reverse is true, though.

    Edit:
    For the OP,
    You have to pass an instance of your main class to your constructor. Right now you are passing null. You then proceed to use your "plugin" variable (which you passed null to in the constructor), even though it is null. The place where you use it does not allow a null value. You should also construct the class in your onEnable to prevent any issues, though I don't think it would cause a problem in this case.
     
    reider45 likes this.
  16. Offline

    The_Doctor_123

    Garris0n
    Quite true, although it is proper to write <Single Variable> = <Value> in Algebra.

    reider45
    Errr.. do you understand OOP?
     
  17. Offline

    Garris0n

    I'm aware, I just meant that while it's proper in algebra it's required in code. And I think the answer to your question is a no...
     
  18. Offline

    reider45

    The_Doctor_123 Not as of now, and yes I'm reading the wiki on it as I type...
     
  19. Offline

    The_Doctor_123

    reider45
    The wiki is going to give you the most technical definition of OOP. As it stands at this moment, you need an understandable guide. This may be better.
     
  20. Offline

    reider45

    Garris0n So basically my 'plugin' in the LobbyTimer class is null, alright, where would I have to move it?
     
  21. Offline

    Garris0n

    Moving it won't fix the null pointer. You do understand what the constructor does, right? I think you should take The_Doctor_123 's advice and read that.
     
  22. Offline

    reider45

    Garris0n likes this.
Thread Status:
Not open for further replies.

Share This Page