Jump to content

Abgebauten Block wieder setzen


SwissMiner91
 Share

Recommended Posts

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 to comment
Share on other sites

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

Edited by Yuki
Link to comment
Share on other sites

  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B
B