Skocz do zawartości

Pytanie

Użytkownik

Witam! 

Szukałem ostatnio pluginu na wyłączanie tylko fly podczas walki i nie mogłem znalezc nic ciekawego, mój antylogout nie oferuje takiej opcji i nie chciałbym go zmieniać. Chciałbym prosić bardziej doświadczone osoby o pomoc w napisaniu kawałku kodu, który, jeśli gracz lata wyłącza mu fly po uderzeniu tylko i wyłącznie przez drugiego gracza, bądz jeśli gracz który lata uderzy drugiego gracza wyłącza mu fly, w sensie ustawia tą zmienia:

player.setAllowFlight(false);
 

Z góry dziękuję za pomoc! :)

Edytowane przez Vilor

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Użytkownik
  • 0
1 minutę temu, Vilor napisał:

Działa, tylko nie tak jak trzeba, ponieważ wyłącza latanie również jeśli uderzę jakiegoś moba, oraz nie wyłącza fly drugiej osobie, która została zaatakowana a też posiada latanie 

@EventHandler
public void onDamage(EntityDamageByEntityEvent e){
	if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){
		Player p = (Player) e.getDamager();
		Player p2 = (Player) e.getEntity();
		if(p.getAllowFlight()){
			p.setAllowFlight(false);
			p.setFlying(false);
		}
		if(p2.getAllowFlight()){
			p2.setAllowFlight(false);
			p2.setFlying(false);
		}
	}
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0
@EventHandler
public void onDamage(EntityDamageByEntityEvent e){
	if(e.getDamager() instanceof Player){
		Player p = (Player) e.getDamager();
		if(p.getAllowFlight()){
			p.setAllowFlight(false);
			p.setFlying(false);
		}
	}
}

Możesz tak lub też wykorzystać PlayerToggleFlightEvent ale to potrzebował byś tego swojego AntyLogouta żeby sprawdzać czy gracz jest podczas walki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0
6 minut temu, JanekMaSkrypta_ napisał:
@EventHandler
public void onDamage(EntityDamageByEntityEvent e){
	if(e.getDamager() instanceof Player){
		Player p = (Player) e.getDamager();
		if(p.getAllowFlight()){
			p.setAllowFlight(false);
			p.setFlying(false);
		}
	}
}

Możesz tak lub też wykorzystać PlayerToggleFlightEvent ale to potrzebował byś tego swojego AntyLogouta żeby sprawdzać czy gracz jest podczas walki

Działa, tylko nie tak jak trzeba, ponieważ wyłącza latanie również jeśli uderzę jakiegoś moba, oraz nie wyłącza fly drugiej osobie, która została zaatakowana a też posiada latanie 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0
7 minut temu, JanekMaSkrypta_ napisał:
@EventHandler
public void onDamage(EntityDamageByEntityEvent e){
	if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){
		Player p = (Player) e.getDamager();
		Player p2 = (Player) e.getEntity();
		if(p.getAllowFlight()){
			p.setAllowFlight(false);
			p.setFlying(false);
		}
		if(p2.getAllowFlight()){
			p2.setAllowFlight(false);
			p2.setFlying(false);
		}
	}
}

 

Okej działa wszystko jak powinno, dziękuję za pomoc :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Losowy awatar
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×