• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot Problem mit dem NoHitDelay

yzac

Minecrafter
Registriert
29 Januar 2021
Beiträge
4
Diamanten
250
Guten Tag allerseits,

ich schlage mich derzeit mit einem Problem rum, was mich zum Verzweifeln bringt.
Aus irgend einen Grund bekommt der Spieler, der mit einem Bogen getötet worden ist das NoHitDelay.
Das Komische daran ist, dass das NoHitDelay immer stärker wird, wenn der Spieler erneut vom Bogen getötet wird.

Ich habe darauf im PlayerDeathEvent abgefragt, ob der Spieler von einem Bogen getötet worden ist und die MaximumNoDamageTicks
auf den Standardwert 20 gestellt. Wenn der Spieler nun mit einem Bogen getötet wird, hat er kein NoHitDelay mehr. Wenn er aber erneut
von einem Bogen getötet wird schon. Ich blick da nicht durch.

Code:
@EventHandler
    public void handleBowKill(PlayerDeathEvent event) {

        if(!(plugin.getGameStateManager().getCurrentGameState() instanceof IngameState)) return;

        if(event.getEntity().getLastDamageCause().getCause().equals(EntityDamageEvent.DamageCause.PROJECTILE)) {
            event.getEntity().setMaximumNoDamageTicks(20);
        }
    }
 

Malfrador

Threadripper
Registriert
16 Juni 2013
Beiträge
1.473
Diamanten
396
Minecraft
Malfrador
Meinst du mit Hit-Delay den Delay, den man mit seit 1.9 beim schlagen mit einer Waffe hat?
Das ist eine andere Mechanik als die noDamageTicks, die existieren seit es PvP gibt. Diese sind einfach nur die Zeit, in der eine Entity immun von Schaden ist, was vom Client durch den roten Effekt auf der Entity dargestellt wird. Während dieser Zeit ist die Entity komplett immun, außer der zugefügte Schaden ist höher als der, durch den die noDamageTicks zustande kamen.

Um den Hit-Delay zu setzen, musst du einfach das attackSpeed-Attribut des Spielers verändern, entweder direkt oder über ein Attribut auf einem Item.

Generell ist aber das Death-Event dafür auch ungeeignet - der Spieler ist schließlich tot & Veränderungen an toten Entities funktionieren entweder gar nicht oder verhalten sich seltsam. Wenn du das nach einem Tod setzen willst, solltest du das Respawn-Event nutzen
 

yzac

Minecrafter
Registriert
29 Januar 2021
Beiträge
4
Diamanten
250
Meinst du mit Hit-Delay den Delay, den man mit seit 1.9 beim schlagen mit einer Waffe hat?
Nein. Ich meine das der Spieler kein Delay mehr hat. Er kann den Spieler also durchgehend schlagen. Auf Gomme gibt es in Kit1vs1 ein Modus, der heißt ebenfalls NoHitDelay. Man kann den Spieler quasi in die Luft katapultieren und ihn gleichzeitig schlagen so stark ist das NoHitDelay.

Generell ist aber das Death-Event dafür auch ungeeignet - der Spieler ist schließlich tot & Veränderungen an toten Entities funktionieren entweder gar nicht oder verhalten sich seltsam
Da hast du recht. War ein Fehler von mir.
 

yzac

Minecrafter
Registriert
29 Januar 2021
Beiträge
4
Diamanten
250
Ich habe die noDamageTicks nun im RespawnEvent gesetzt. Trotz allem gibt es keine Veränderungen. Der Spieler bekommt weiterhin das NoHitDelay.

Wie ich oben bereits geschrieben habe, bleibt der Wert bei 20 er geht weder runter noch hoch. Trotzdem kann ich den Spieler durchgehend schlagen. Das passiert nur, wenn der Spieler von einem Bogen stirbt. Sonst nicht. Weird
 
Zuletzt bearbeitet:
Oben