1. Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

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:
    89
    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 ! :)
     
  2. games6471
    Offline

    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.
     
  3. Nexus15
    Offline

    Nexus15

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

    games6471

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

    Nexus15

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

    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.)
     
  7. Nexus15
    Offline

    Nexus15

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

    Funktioniert jetzt alles einwandfrei.

    Vielen Dank! :)