Skocz do zawartości
  • 0

Usunięty#25541

Pytanie

Ok, ten kod miał usunąć opóźnienie klikania, czyli taki tryb combo. Niestety nie wiem dlaczego to nie działa tu jest mój kod:

package me.neatyz.neatyzhitdelay;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;


public class MyListener implements Listener {
	  @EventHandler
	  public void onHit(EntityDamageByEntityEvent event) {
	      event.getPlayer().setMaximumNoDamageTicks(0);
	      event.getPlayer().setNoDamageTicks(0);
	}
}

Proszę o pomoc.

Taki error wyświetla się w eclipse:

The method getPlayer() is undefined for the type EntityDamageByEntityEvent
Edytowane przez Xa4inz
Odnośnik do komentarza
Udostępnij na innych stronach

11 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
38 minut temu, Xa4inz napisał:

Ok, ten kod miał usunąć opóźnienie klikania, czyli taki tryb combo. Niestety nie wiem dlaczego to nie działa tu jest mój kod:

Eclipse informuje cię, że klasa 'EntityDamageByEntityEvent' nie posiada takiej metody jak 'event.getPlayer()'.

Dokumentacja zawsze ratuje tyłek, korzystaj z niej.

https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/entity/EntityDamageByEntityEvent.html

Wystarczy prosty warunek z 'instanceof', a po tym castowanie do 'LivingEntity'.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
10 minut temu, Kormic napisał:

Eclipse informuje cię, że klasa 'EntityDamageByEntityEvent' nie posiada takiej metody jak 'event.getPlayer()'.

Dokumentacja zawsze ratuje tyłek, korzystaj z niej.

https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/entity/EntityDamageByEntityEvent.html

Wystarczy prosty warunek z 'instanceof', a po tym castowanie do 'LivingEntity'.

Ok... A możesz mi to bardziej wytłumaczyć w ludzki sposób, bo jest to mój pierwszy plugin.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
6 minut temu, Xa4inz napisał:

Ok... A możesz mi to bardziej wytłumaczyć w ludzki sposób, bo jest to mój pierwszy plugin.

W tym evencie nie ma gracza. Musisz użyć eventu z graczem lub sprawdzać czy event.getEntity() to gracz i następnie zrobić z niego gracza.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
8 minut temu, Glitchtrap napisał:

Nie wiem, możesz sprawdzić czy się da, lecz to co Ci napisałem, myślę, że będzie lepszym sposobem.

Join event nie działa na serwerze, ale nie wykrywa błędów w e-clipse

A jak mam sprawdzić, że event.getPlayer() to gracz?

I zrobić z niego gracza.

Sorry, że zadaje dużo pytań, ale po prostu piszę mój pierwszy plugin jeszcze mało wiem o Javie i chcę się dowiedzieć

Edytowane przez Xa4inz
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Xa4inz napisał:

Join event nie działa na serwerze, ale nie wykrywa błędów w e-clipse

Spróbuj z tamtym eventem robiąc to co Ci pisałem:

14 minut temu, Glitchtrap napisał:

W tym evencie nie ma gracza. Musisz użyć eventu z graczem lub sprawdzać czy event.getEntity() to gracz i następnie zrobić z niego gracza.

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
16 minut temu, Xa4inz napisał:

Ok... A możesz mi to bardziej wytłumaczyć w ludzki sposób, bo jest to mój pierwszy plugin.

Pierwszy plugin to zwykle jakaś prosta komenda, a nie zmiana systemu walki. Za wysokie progi na twoje nogi.

Więc tak...

'instanceof' pozwala nam na sprawdzenie na chłopski rozum czy coś jest czymś.

W twoim przypadku należy sprawdzić czy 'event.getEntity()' jest 'Player'.

Następnie możesz sobie ustawić do zmiennej typu 'Player' castowanego 'event.getEntity()'.

Zaprezentuję.

Player entity = (Player) event.getEntity();

Możesz to nawet castować do LivingEntity.

Wtedy już nie używasz 'event.getPlayer()' (i tak tej metody nie ma w tym evencie), a zmiennej 'entity' i jej ustawiasz ilość "noDamageTicks'ów".

Jeżeli nadal masz problemy, idź poczytać jakieś poradniki z Javy i Bukkit API, a nie zabierasz się za pluginy.

1 minutę temu, Xa4inz napisał:

Join event nie działa na serwerze, ale nie wykrywa błędów w e-clipse

Każdy listener trzeba zarejestrować, bez tego nic nie zadziała.

To również jest wyjaśnione w poradnikach, ale z Bukkit API.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
18 minut temu, Glitchtrap napisał:

Spróbuj z tamtym eventem robiąc to co Ci pisałem:

 

ok

 

15 minut temu, Glitchtrap napisał:

Musisz użyć 'instanceof'



if (event.getEntity() instanceof Player) {
	Player p = (Player) event.getEntity();
	//twój kod
}

 

Dzięki działa! Społeczeństwo na tym forum jest bardzo pomocne!

Edytowane przez Xa4inz
Studziak

Łącze posty

Notatka dodana przez Studziak

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 minuty temu, Xa4inz napisał:

A jak mam sprawdzić, że event.getPlayer() to gracz?

I zrobić z niego gracza.

Sorry, że zadaje dużo pytań, ale po prostu piszę mój pierwszy plugin jeszcze mało wiem o Javie i chcę się dowiedzieć

Musisz użyć 'instanceof'

if (event.getEntity() instanceof Player) {
	Player p = (Player) event.getEntity();
	//twój kod
}

 

Edytowane przez Glitchtrap
błąd w kodzie :V
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...