- Баллы
- 76
У меня есть кастомный зомби-житель:
Если не ошибаюсь, в новых версиях нет регистрации мобов, но если всё-же ошибаюсь, пните меня - поищу, куда дел.
Спавню этих бедолаг так:
Заставляю мобов двигаться через метод:
И всё работает прекрасно... Но стоит отойти от моба (или мобу отойти от нас) блоков на 30-40, как он встаёт и ничего не делает, пока не подлетишь. При чём, обычные (не-кастомные) зомби-жители спокойно ходят на любом расстоянии.
P. S. Если отойти от моба очень далеко, он сменит свой UUID и станет обычным зомби-жителем с атрибутами. То же самое при рестарте. Это незначительная проблема, но вдруг она как-то связана...
Код:
public class EntityPawn extends EntityZombieVillager{
public EntityPawn(World world) {
super(EntityTypes.ZOMBIE_VILLAGER, ((CraftWorld) world).getHandle());
}
@Override
public void initPathfinder() {
//Пустой метод для полной власти над мобом через сторонние методы
}
public ZombieVillager spawn(Location loc) {
this.setPositionRotation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
this.world.addEntity(this, SpawnReason.CUSTOM);
return (ZombieVillager) this.getBukkitEntity();
}
}
Спавню этих бедолаг так:
Код:
public ZombieVillager spawnNMS(Location loc){
EntityPawn ep=new EntityPawn(loc.getWorld());
ZombieVillager z=ep.spawn(loc);
z.setRemoveWhenFarAway(false);
return z;
}
Код:
ZombieVillager z=spawnNMS(p.getLocation());
z.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED).setBaseValue(0.3);
z.getAttribute(Attribute.GENERIC_FOLLOW_RANGE).setBaseValue(300);
//Дальше код внедрения этого моба в системы
Код:
public static void move(Entity en, Location move){
EntityCreature cr=((EntityCreature) ((CraftEntity) en).getHandle());
cr.getNavigation().a(move.getX(), move.getY(), move.getZ(), 1.0);
}
P. S. Если отойти от моба очень далеко, он сменит свой UUID и станет обычным зомби-жителем с атрибутами. То же самое при рестарте. Это незначительная проблема, но вдруг она как-то связана...