Jump to content

Recommended Posts

Posted

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

Posted (edited)

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
  • 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
×
×
  • Create New...
B
B