Xemixd 0 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 Po zabiciu zombie nadal śnieżki strzelają. Jak zapisać to aby wszystko sie działo do momentu kiedy on jest żywy? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 159 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 Co tak właściwie chcesz zrobić? Bo z tego kodu ciężko jest się domyślić Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Xemixd 0 Opublikowano 10 marca 2021 Autor Udostępnij Opublikowano 10 marca 2021 (edytowane) 15 minut temu, LeviBoyPL napisał: Co tak właściwie chcesz zrobić? Bo z tego kodu ciężko jest się domyślić Gdy gracz będzie w obrębie 10 kratek od zombie to zombie wystrzeliwuje śnieżki. Gdy gracz zabije zombie to ten te śnieżki nadal się wystrzeliwują w miejscu gdy zombie zostało zabite. Chce zrobić to tak, że jeżeli zombie nie żyje to śnieżki nie będą strzelały. Edytowane 10 marca 2021 przez Xemixd Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 159 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 @EventHandler public void onEntityTargetEvent(EntityTargetEvent event) { if(!(event.getEntity() instanceof Zombie)) return; Zombie zombie = (Zombie) event.getEntity(); new TargetEventZombieRunnable(zombie).runTaskTimer(main, 1, 15); } Lepiej było by zrobić sobie nową klasę z kodem taska, wtedy kod będzie wyglądał schludniej i wygodniej będzie dodawać kolejne rzeczy do listenera, wyżej tworzysz sobie nową klasę, która rozszerza BukkitRunnable i od razu uruchamiasz task. public class TargetEventZombieRunnable extends BukkitRunnable { private final Zombie zombie; public TargetEventZombieRunnable(Zombie zombie) { this.zombie = zombie; } @Override public void run() { if(zombie.isDead()) cancel(); List<Entity> nearbyEntities = zombie.getNearbyEntities(10, 10, 10); if(nearbyEntities.size() == 0) cancel(); for(Entity loopEntity : nearbyEntities) { if(loopEntity instanceof Player) { Player player = ((Player) loopEntity).getPlayer(); Vector vector = zombie.getLocation().getDirection(); Snowball snowball = zombie.launchProjectile(Snowball.class); zombie.setTarget(player); snowball.setVelocity(vector); } } } } Musisz tylko pamiętać że zombie często traci zainteresowanie graczem i idzie w innym kierunku, jeżeli nagle znów zacznie śledzić gracza powstanie nowy task i będzie działał podwójnie. Aktualny cel zombie możesz sprawdzić poprzez Zombie#getTarget() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Xemixd 0 Opublikowano 10 marca 2021 Autor Udostępnij Opublikowano 10 marca 2021 Jaki jest mob, który nie traci targetu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 LeviBoyPL 159 Opublikowano 10 marca 2021 Udostępnij Opublikowano 10 marca 2021 Nie ma takiego, ale możesz sprawdzić czy target jest nullem i jeśli jest to anulować task Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
0 Xemixd 0 Opublikowano 10 marca 2021 Autor Udostępnij Opublikowano 10 marca 2021 Dzięki wielkie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
Xemixd 0
Po zabiciu zombie nadal śnieżki strzelają.
Jak zapisać to aby wszystko sie działo do momentu kiedy on jest żywy?
Odnośnik do komentarza
Udostępnij na innych stronach
6 odpowiedzi na to pytanie
Rekomendowane odpowiedzi