Worldguard API

Dieses Thema im Forum "Programmierung" wurde erstellt von Nexus15, 22. März 2013.

  1. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    Hallo,

    Ich habe heute mal wieder ein kleines Problem die Methode getWorldguard() stößt eine NullPointerException aus.

    Hier einmal der Server log:
    Code (Text):
    1. 2013-03-22 11:03:18 [INFO] Starte Protection Vorgang...
    2. 2013-03-22 11:03:18 [INFO] Farm wurde bestimmt...
    3. 2013-03-22 11:03:18 [INFO] Region wurde erstellt...
    4. 2013-03-22 11:03:18 [INFO] Spieler wurde hinzugef?gt..
    5. 2013-03-22 11:03:18 [INFO] Flags wurden erstellt..
    6. 2013-03-22 11:03:18 [SEVERE] Could not pass event PlayerInteractEvent to THF-Core v1.1
    7. org.bukkit.event.EventException
    8.     at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
    9.     at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    10.     at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
    11.     at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
    12.     at org.bukkit.craftbukkit.v1_4_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:178)
    13.     at net.minecraft.server.v1_4_R1.PlayerInteractManager.interact(PlayerInteractManager.java:376)
    14.     at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:657)
    15.     at net.minecraft.server.v1_4_R1.Packet15Place.handle(SourceFile:58)
    16.     at net.minecraft.server.v1_4_R1.NetworkManager.b(NetworkManager.java:290)
    17.     at net.minecraft.server.v1_4_R1.PlayerConnection.d(PlayerConnection.java:113)
    18.     at net.minecraft.server.v1_4_R1.ServerConnection.b(SourceFile:39)
    19.     at net.minecraft.server.v1_4_R1.DedicatedServerConnection.b(SourceFile:30)
    20.     at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:598)
    21.     at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:224)
    22.     at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:494)
    23.     at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:427)
    24.     at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
    25. Caused by: java.lang.NullPointerException
    26.     at com.the.harvest.event.Events.WorldguardHandler.getWorldGuard(WorldguardHandler.java:30)
    27.     at com.the.harvest.event.Events.WorldguardHandler.protectFarm(WorldguardHandler.java:55)
    28.     at com.the.harvest.event.Events.ClickSign.onClick(ClickSign.java:154)
    29.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    30.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    31.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    32.     at java.lang.reflect.Method.invoke(Method.java:601)
    33.     at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
    34.     ... 16 more

    Hier einmal den WorldguardHandler:

    Code (Text):
    1. public class WorldguardHandler  {
    2.    
    3.     public static WorldGuardPlugin getWorldGuard() {
    4.         Plugin plugin = com.the.harvest.event.Main.getInstance().getServer().getPluginManager().getPlugin("WorldGuard");
    5.         if ((plugin == null) || (!(plugin instanceof WorldGuardPlugin))) {
    6.             return (WorldGuardPlugin)plugin;
    7.         }
    8.  
    9.     return (WorldGuardPlugin)plugin;
    10.   }
    11.     public static com.sk89q.worldedit.BlockVector convertToSk89qBV(Location location){
    12.         return new com.sk89q.worldedit.BlockVector(location.getX(),location.getY(),location.getZ());
    13.     }
    14.     public static ReturnClass cl = new ReturnClass();
    15.     public static void protectFarm(Player sender, String p, World w) throws SQLException, InvalidFlagFormat, ProtectionDatabaseException {
    16.         System.out.println("Starte Protection Vorgang...");
    17.         BlockVector l1 = convertToSk89qBV(cl.getVectorLeft(p, w));
    18.         BlockVector l2 = convertToSk89qBV(cl.getVectorRight(p, w));
    19.         System.out.println("Farm wurde bestimmt...");
    20.         ProtectedRegion region = null;
    21.         DefaultDomain owners = new DefaultDomain();
    22.         region = new ProtectedCuboidRegion(p + "-Farm", l1.toBlockVector(), l2.toBlockVector());
    23.         System.out.println("Region wurde erstellt...");
    24.         owners.addPlayer(p);
    25.         System.out.println("Spieler wurde hinzugefügt..");
    26.         region.setOwners(owners);
    27.         region.setPriority(100);
    28.         System.out.println("Flags wurden erstellt..");
    29.         getWorldGuard().getRegionManager(ClickSign.getFarmWorld()).addRegion(region);
    30.         getWorldGuard().getRegionManager(ClickSign.getFarmWorld()).save();
    31.         System.out.println("Region gesichert..");
    32.     }
    33.    
    34. }

    ReturnClass, welche die Location aus der Datenbank holt.

    Code (Text):
    1. public class ReturnClass  {
    2.     public String user = "Benutzername";
    3.     public String pass = "Passwort";
    4.     public String url = "jdbc:mysql://localhost:3306/Datenbank";
    5.    
    6.     public  Location getVectorLeft(String pn, World w) throws SQLException {
    7.         Location loc = null;
    8.         Statement stmt = null;
    9.         ResultSet rs = null;
    10.         Connection con = DriverManager.getConnection(url, user, pass);
    11.         stmt = con.createStatement();
    12.         rs = stmt.executeQuery("SELECT x, y, z FROM users WHERE name='"+pn+"';");
    13.         while(rs.next()) {
    14.             double x = rs.getDouble(1) + 222;
    15.             double y = rs.getDouble(2);
    16.             double z = rs.getDouble(3) + 222;
    17.             loc = new Location(w,x,y,z);
    18.            
    19.         }
    20.         return loc;
    21.        
    22.     }
    23.    
    24.     public  Location getVectorRight(String pn, World w) throws SQLException {
    25.         Location loc = null;
    26.         Statement stmt = null;
    27.         ResultSet rs = null;
    28.         Connection con = DriverManager.getConnection(url, user, pass);
    29.         stmt = con.createStatement();
    30.         rs = stmt.executeQuery("SELECT x, y, z FROM users WHERE name='"+pn+"';");
    31.         while(rs.next()) {
    32.             double x = rs.getDouble(1) - 222;
    33.             double y = rs.getDouble(2);
    34.             double z = rs.getDouble(3) - 222;
    35.             loc = new Location(w,x,y,z);
    36.            
    37.         }
    38.         return loc;
    39.        
    40.     }
    41.    
    42.    
    43.    
    44.    
    45. }

    Vielen Dank für Hilfe im Voraus ! :)
     
    #1
  2. games6471
    Online

    games6471

    Überprüfst du überhaupt, ob WorldGuard null ist ? Vielleicht irgendwo in onEnable ?

    Denn falls das Plugin nicht gefunden wurde wird null return zurück gegeben. Ich sehe bisher keine Überprüfung dazu.
     
    #2
  3. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    stimmt ich überprüfe das zwar nicht, aber ist das wichtig ? Ich bin mir sicher das ich die aktuelle Version von Worldguard installiert habe.
     
    #3
  4. games6471
    Online

    games6471

    Kannst du mir vielleicht sagen wo die 30 Zeile vom WorldguardHandler ist.
     
    #4
  5. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    Plugin plugin = com.the.harvest.event.Main.getInstance().getServer().getPluginManager().getPlugin("WorldGuard");
     
    #5
  6. games6471
    Online

    games6471

    Genau dort bekommt er eine null. Wenn du wirklick WorldGuard installiert hast, kann es sein, dass er deine Plugin-instanz nicht findet.

    Tipp:

    Hier musst du nicht auf deine Plugininstanz zugreifen, sondern kannst sogar auf die Bukkit-instanz zugreifen.

    (Bukkit.getServer(). usw.)
     
    #6
  7. Nexus15
    Offline

    Nexus15

    Registriert seit:
    30. September 2012
    Beiträge:
    91
    Danke, das war natürlich wieder ein dummer Fehler...

    Funktioniert jetzt alles einwandfrei.

    Vielen Dank! :)
     
    #7