SwissMiner91 Geschrieben 24. Januar 2016 Share Geschrieben 24. Januar 2016 Hallo zusammen, ich versuche mir eine Art Worldguard Plugin zu Programmieren.Alles läuft über MySQL und die Abfragen laufen super. Jetzt will ich das wenn jemand einen Block abbaut und nicht der Besitzer dieses Landes ist, das es den Block wieder setzt. Bis zum senden der Nachricht: "Du hast keine Rechte" funktioniert alles, jedoch wird der Block nicht wieder gesetzt. Kann mir da wer helfen? Hier der Code: @EventHandler public void onBlockBreak(BlockBreakEvent event) { Material block = event.getBlock().getType(); int x = event.getBlock().getX(); int y = event.getBlock().getY(); int z = event.getBlock().getZ(); String chunk = event.getBlock().getChunk().toString(); mysql sql = this.getMySQL(); Connection conn = sql.getConnection(); ResultSet rs = null; PreparedStatement st = null; try { st = conn.prepareStatement("SELECT * FROM gs WHERE chunk LIKE ?"); st.setString(1, chunk); rs = st.executeQuery(); rs.last(); if(rs.getRow() == 0) { event.getPlayer().sendMessage(ChatColor.GREEN + "[LAND] - " + ChatColor.RED + "Du musst dieses Land erst kaufen!"); event.getPlayer().sendMessage(ChatColor.WHITE + "Benutze dazu /landkaufen"); String world = event.getPlayer().getWorld().toString(); Block getblock = this.getServer().getWorld(world).getBlockAt(x, y, z); getblock.setType(block); return; } else { String name = event.getPlayer().getName().toString(); if(rs.getString("besitzer") == name) { return; } else { event.getPlayer().sendMessage(ChatColor.GREEN + "[LAND] - " + ChatColor.RED + "Du hast auf diesem Grundstück keine Rechte!"); String world = event.getPlayer().getWorld().toString(); Block getblock = this.getServer().getWorld(world).getBlockAt(x, y, z); getblock.setType(block); return; } } } catch (SQLException e) { e.printStackTrace(); } } Freundlicher Gruss SwissMiner91 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Yuki Geschrieben 25. Januar 2016 Share Geschrieben 25. Januar 2016 (bearbeitet) Hi, Zitat Block getblock = this.getServer().getWorld(world).getBlockAt(x, y, z); getblock.setType(block); Warum machst du es hier uso umständlich, wenn du oben schon richtig mit event.getBlock() arbeitest. Es sollte hier also auch folgendes genügen: event.getBlock().setType(...) Ich kann es jetzt nicht genau sagen, aber im BlockBreakEvent ist der Block ja im Grunde schon zerstört und daher wird es schwierig diesen mit getBlockAt() abzufragen. -Yuki bearbeitet 25. Januar 2016 von Yuki Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Joey Geschrieben 29. Januar 2016 Share Geschrieben 29. Januar 2016 Warum cancelst du nicht einfach das Event ? Mfg, Joey Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
loupix_ Geschrieben 25. April 2016 Share Geschrieben 25. April 2016 (bearbeitet) Jup einfach event.setCancelled(true); Das macht das Setzen Rückgängig bearbeitet 25. April 2016 von loupix_ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden