Wie kann ich das Zertrampeln von Ackerboden mit Spigot verhindern?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das Event, das du suchst, sollte das EntityBlockFormEvent (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/EntityBlockFormEvent.html) sein. Leider bin ich mir auch nicht ganz sicher, aber es klingt so wie das, was du suchst.

Woher ich das weiß:Hobby – Spigot-Pluginentwickler seit über 4 Jahren

Habe ich mir zuerst auch gedacht, geht aber nicht.

1
@User339312

Habe es jetzt mit dieser nicht so schönen, aber funktionierenden Alternative gelöst:

@EventHandler
	public void onEntityInteract(EntityInteractEvent ev) {
		if(ev.getBlock().getType() == Material.FARMLAND) {
			ev.setCancelled(true);
		}
	}
1
@User339312

und wider meiner Erwartungen können Villager immer noch Ackerbau betreiben.

1
@User339312

Du solltest auf jeden Fall noch überprüfen, ob der Block nicht null ist, das InteractEvent wird sehr oft ausgeführt.

Wenn du Villager blockieren willst, solltest du vielleicht beim EntityChangeBlockEvent schauen oder im Pathfinding von den Villager rumfuschen.

1

Du suchst das PlayerInteractEvent es gibt eine Action die nennt sich Physical das (Bin mir grad net sicher ob es auch ein EntityInteractEvent gibt aber damit sollte es auch gehen) heißt es würde dann so aussehen:

@EventHandler
public void onInteract(PlayerInteractEvent event) {

if(event.getAction()==Action.Physical)event.setCancelled(true);

}
Woher ich das weiß:Hobby

Was möchtest Du wissen?