Bukkit Entity/Tier nach bestimmter Distanz zum Spieler teleportieren lassen
Hallo, meine Frage wäre wie ich es schaffe, dass wenn der Spieler mehr als 10 Blöcke vom Entity/Tier entfernt ist, das sich das Tier zum Spieler teleportiert.
final Chicken c = (Chicken)p.getWorld().spawnCreature(loc, CreatureType.CHICKEN);
plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable(){
@Override
public void run() {
if(c.getLocation().distanceSquared(p.getLocation()) < 20) {
followPlayer(c, p, 1.3);
}else{
c.teleport(p.getLocation());
}
public void followPlayer(Creature creature, Player p, double speed) {
Location location = p.getLocation();
((CraftCreature) creature).getHandle().getNavigation().a(location.getX(), location.getY(), location.getZ(), speed);
}
Das funktionier so lala. Das Chicken portet sich zwar aber schon nach 5 blöcken und nicht 20;
3 Antworten
![](https://images.gutefrage.net/media/user/MBgamer/1525782331969_nmmslarge__408_23_1045_1045_95c001dd65f30e37ac587571a64d647b.jpg?v=1525782334000)
du benutzt ja auch .distanceSquared() das heißt die Distanz hoch 2 was bei 4^2 = 16, und bei 5^2 = 25 wäre. Das heißt die Entfernung ab der das Huhn teleportiert wird liegt zwischen 4 und 5. Du musst nur .distance() nutzen.
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Du könntest es ganz einfach so machen:
Player p;(Hier deine Spielerinstanz einfügen)
Chicken chicken;(Hier deine Tierinstanz einfügen)
ArrayList entities = new ArrayList();
for(Entity ent : p.getNearbyEntities(10, 10, 10)) {
entities.add(ent);
}
if(!entities.contains(a)) {
a.teleport(p.getLocation());
}
Diese Methode 'p.getNearbyEntities(10,10,10);' gibt dir alle Entities, die im Umfeld von x10, y10 und z10 Blöcken entfernt, sind wieder.
Dieser Codeabschnitt müsste so passen, du musst nur oben die Instanz vom Chicken anpassen. Wenn du zum Beispiel nach einem Spieler suchst, musst du dort hinschreiben 'Player target = Bukkit.getPlayer("NAME DER ZIELPERSON");'. Wenn du aber nach einem LivingEntity oder einem Entity suchst, musst du wissen woher du die Instanz davon bekommst.
Nicht vergessen oben die Spielerinstanz(Player p;) noch für dich anzupassen.
Ich hoffe ich konnte dir helfen auch wenn es schon etwas länger her ist ^^ :)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
in minecraft ist 1 = 0.25 also solltest du eine veriable erstellen also einfach so: i =80
und danach das 20 wegmachen und i reinpacken