Jump to content

Villager wird nicht bewegt?


Reddi
 Share

Recommended Posts

Hallo.

Ich möchte, dass ein Villager immer wieder teleportiert wird, wenn er weg läuft.

Dazu hab ich schon einiges ausprobiert. Einmal sich selbst als Passenger setzen, dann stürzte aber MC eines Freundes ab. Dann Slowness, aber man kann ihn noch verschieben. Und dann wollte ich, dass er zusätzlich zudem Slowness noch den TP bekommt. Aber dann wurde er nicht teleportiert.

Nun hab ich eine Lösung gefunden. Und zwar nur das TP ohne alles. Nun ist es aber so, dass der Villager beim OnEnable gesetzt wird. Dann wird abgefragt, ob die Location nicht mit der des Villagers (Der der gesetzt wurde) übereinstimmt.

Wenn man jetzt einmal rejoint, dann wird der Villager gar nicht mehr teleportiert.

Hier der Code. Es ist schwer zu erklären 😄

Location location4 = new Location(Bukkit.getWorld("world"), 116.5, 128, 90.5);
		location4.setYaw(90);
		location4.setPitch(2);
		
		
		Villager villager = location4.getWorld().spawn(location4, Villager.class);
		belohnung.add(villager);
		
		task = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
			
			@Override
			public void run() {
				villager.teleport(location4);
			}
		}, 20, 2);

Das ist der onEnable Teil. Der Villager wird gesetzt und wenn die Location nicht mit location4 übereinstimmt, dann wird er teleportiert. Wenn ich jetzt rejoine, dann wird der Villager, egal wo er steht, nicht mehr teleportiert.

Ich hoffe ihr versteht es.

EIne Frage hab ich dann noch:

Wie kann ich alle Villager einer Welt removen? Hab das mit Enity e : Bukkit.getWorld....getEntities() probiert, aber dann werden ja alle gekillt.

Danke schonma 😄

 

Link to comment
Share on other sites

Hi,

dazu benötigst du keinen Mod.

Du kannst jedem Entitie den NoAI NBT-Tag geben:

Zitat
NoAI Makes mobs have no AI. Mobs will not move on their own.     {NoAI:0b} or {NoAI:1b}

Also einfach beim spawnen des Villagers direkt mitgeben oder nachträglich per Chat-Command oder Command-Block setzen.

 

-Yuki

Edited by Yuki
Link to comment
Share on other sites

Danke. Wie mach ich es dann, dass man sie nicht mehr verschieben kann? Dass sie sich nicht von selbst bewegen hab ich mit Slowness gemacht, ich kann das auch anpassen, aber viel wichtiger ist es, dass man sie als Spieler nicht mehr bewegen kann.

Reddi

Link to comment
Share on other sites

Hi,

Ok, da wirds schon schwieriger.

Wenn du die Möglichkeit hast diesen einzubauen, also einfach in ein kleines Häuschen packen oder eine Art Marktstand oder so.

Noch eine Option wäre über ihn einen Barriere-Block und rund um ihn herum Teppich, dann kommt der Spieler nicht ran und der Villager kann sich nicht raus bewegen.

Eine andere Möglichkeit wäre noch um deine /tp Option aufzugreifen, dem Villager einen Name geben und dann mit einem Command Block den Villager immer wieder zurück an seine Position zu teleportieren. Die Command-Blocks könnte man entweder in eine Bedrock-Box packen oder am Spawn unter das Bedrock, so kommt kein Spieler ran (je nach MC-Version).

 

-Yuki

Link to comment
Share on other sites

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