Skocz do zawartości
  • 0
deusowy_yt

Problem z eventem RegionEnterEvent

Pytanie

Użytkownik

Witam, mam mały problem, ktory polega na blokowaniu wejscia na spawna gdy gracz jest podczas walki. Nie potrafię sprawdzić czy gracz próbuje wejść na spawna tyłem lub przodem. 

	@EventHandler
	public void onEntry(RegionEnterEvent e) {
		Player p = e.getPlayer();
		if(Main.combat.containsKey(p.getUniqueId())) {
			if(e.getRegion().getId().equals("spawn")) {
				p.teleport(p.getLocation().add(p.getLocation().getDirection().multiply(-8)));
			}
		}
	}

Jeśli wejdzie przodem to logiczne jest, ze go przeteleportuje do tyłu, ale gdy wejdzie tyłem to wiadome, ze go przeteleportuje w strone spawna. Mógłby ktoś doradzić jak to można sprawdzić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

3 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Użytkownik
  • 0

Myślę że warto było tu by użyć else! najpierw niech sprawdza czy jest odwrocony przodem i gdy jest niech tepa do tylu. gdy jednak tak nie jest to tepa do tylu. ale teraz zostaje pytanie co jezeli ktos leci bokiem ?? ;)

EDIT:

public static String getCardinalDirection(Player player) {

double rotation = (player.getLocation().getYaw() - 90) % 360;

if (rotation < 0) {

rotation += 360.0;

}

if (0 <= rotation && rotation < 22.5) {

return "N";

} else if (22.5 <= rotation && rotation < 67.5) {

return "NE";

} else if (67.5 <= rotation && rotation < 112.5) {

return "E";

} else if (112.5 <= rotation && rotation < 157.5) {

return "SE";

} else if (157.5 <= rotation && rotation < 202.5) {

return "S";

} else if (202.5 <= rotation && rotation < 247.5) {

return "SW";

} else if (247.5 <= rotation && rotation < 292.5) {

return "W";

} else if (292.5 <= rotation && rotation < 337.5) {

return "NW";

} else if (337.5 <= rotation && rotation < 360.0) {

return "N";

} else {

return null;

}

}

tu masz sprawdzanie kierunków może to ci pomoże ;)

 

Edytowane przez fapeqTM
edit

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Użytkownik
  • 0

getEyeLocation moze

@edir w sumie to bez sensu, masz vector i to powinno wystarczyć 

Edytowane przez yooniks

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Losowy awatar
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Maksymalnie dozwolone są tylko 75 emotikony.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.


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

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

×