Solved Pasting Schematics with WorldEdit

Discussion in 'Plugin Development' started by Doamax, Nov 3, 2013.

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

    Doamax

    I don't understand why worldEdit is returning null.
    Error:
    Code:
    15:48:02 [SEVERE] Could not load 'plugins\SchematicShenanigans.jar' in folder 'p
    lugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NullPointerException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:182)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:305)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:230)
            at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugins(CraftServer.ja
    va:239)
            at org.bukkit.craftbukkit.v1_6_R3.CraftServer.reload(CraftServer.java:60
    7)
            at org.bukkit.Bukkit.reload(Bukkit.java:277)
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    23)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:19
    2)
            at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServe
    r.java:523)
            at net.minecraft.server.v1_6_R3.PlayerConnection.handleCommand(PlayerCon
    nection.java:959)
            at net.minecraft.server.v1_6_R3.PlayerConnection.chat(PlayerConnection.j
    ava:877)
            at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java
    :834)
            at net.minecraft.server.v1_6_R3.Packet3Chat.handle(SourceFile:49)
            at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296
    )
            at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java
    :116)
            at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
            at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:3
    0)
            at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:5
    92)
            at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:2
    27)
            at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:4
    88)
            at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java
    :421)
            at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:5
    83)
    Caused by: java.lang.NullPointerException
            at me.Doamax.SchematicShenanigans.TerrainManager.<init>(TerrainManager.j
    ava:40)
            at me.Doamax.SchematicShenanigans.TimeManager.<init>(TimeManager.java:26
    )
            at me.Doamax.SchematicShenanigans.Main.<init>(Main.java:22)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
     
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
    rce)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:178)
            ... 21 more
    TerrainManager.class: Lines 39-44
    Code:java
    1. public TerrainManager(WorldEditPlugin wep, World world) {
    2. we = wep.getWorldEdit();
    3. localPlayer = null;
    4. localSession = new LocalSession(we.getConfiguration());
    5. editSession = new EditSession(new BukkitWorld(world), we.getConfiguration().maxChangeLimit);
    6. }


    TimeManager.class: Lines 17-27
    Code:java
    1.  
    2. public class TimeManager {
    3. public Main main;
    4. FileConfiguration config;
    5. WorldEditPlugin worldEdit;
    6. public TimeManager(Main main, WorldEditPlugin worldEdit) {
    7. this.main = main;
    8. this.config = main.getConfig();
    9. this.worldEdit = worldEdit;
    10. }
    11. public TerrainManager tem = new TerrainManager(worldEdit, Bukkit.getWorld("world"));
    12. public boolean dayNight;


    Main.class: Lines 17-24
    Code:java
    1. public class Main extends JavaPlugin {
    2. public final Logger logger = Logger.getLogger("Minecraft");
    3. public static Main main;
    4. public final SSListener l = new SSListener(this);
    5. WorldEditPlugin worldEdit = (WorldEditPlugin) Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
    6. public final TimeManager tm = new TimeManager(this, worldEdit);
    7. FileConfiguration config;
    8. PluginManager pm;
     
  2. Your problem lies in the following code
    Code:java
    1. public TimeManager(Main main, WorldEditPlugin worldEdit) {
    2. this.main = main;
    3. this.config = main.getConfig();
    4. this.worldEdit = worldEdit;
    5. }
    6. public TerrainManager tem = new TerrainManager(worldEdit, Bukkit.getWorld("world"));
    7.  


    Variables are loaded before the class constructor gets executed.
    This means that it tries to initialize the TerrainManager before the worldEdit variable gets set.
    To fix this, you'd have to move the variable initialization in the constructor as well, like this
    Code:java
    1. public TimeManager(Main main, WorldEditPlugin worldEdit) {
    2. this.main = main;
    3. this.config = main.getConfig();
    4. this.worldEdit = worldEdit;
    5. this.tem = new TerrainManager(worldEdit, Bukkit.getWorld("world"));
    6. }
    7. public TerrainManager tem;
    8.  
     
    Doamax likes this.
Thread Status:
Not open for further replies.

Share This Page