• Bitte beachte, dass wir eine Serverliste sind!
    Wenn du ein Problem auf einem Server hast (z.B. Entbannantrag, etc), dann ist das Forum hier der falsche Ort.
  • 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!

Kurzer PvP-Schutz nach Respawn

Valyreon

Minecrafter
Registriert
18 September 2014
Beiträge
18
Diamanten
0
Minecraft
Valyreon
Guten Tag,
ich habe wieder mal eine kleine Frage die vermutlich vielen einfach vorkommt, aber Google mir leider nicht beantworten will:
Ich dachte immer, Essentials, Multiverse, oder ein anderes Grundplugin oder eine Einstellung könnte irgendwie einen Respawnschutz erzeugen. Also für eine Zeit nach dem Respawn ist man unverwundbar.

Leider bringt mich Google nur zu Lösungen, die die Protection des Spawnbereichs meinen, aber keine zu meiner Frage nach einer zeitweisen Unverwundbarkeit nach dem respawn.

Vielleicht kann mir ja jemand hier die Frage beantworten, gab hier sehr oft gute Hilfestellungen bei allen möglichen Fragen.
Danke schonmal für jede konstruktive Antwort.
 
V

Verschraubt

Guest
Hai!
Wenn mich nicht Alles täuscht müsste man das so hinbekommen:
Code:
private ArrayList<Player> schutz = new ArrayList<>();

    @EventHandler
    public void onRespawn(PlayerRespawnEvent e) {
        final Player p = e.getPlayer();
        schutz.add(p);
        Bukkit.getScheduler().scheduleAsyncDelayedTask(this.plugin, new Runnable() {
      
            @Override
            public void run() {
                schutz.remove(p);
          
            }
        }, 100); // Diese Zahl beschreibt die Dauer des Schutzes in Ticks [1 Sec = 20 Ticks]
    }
    @EventHandler
    public void onDamage(EntityDamageEvent e) {
        Player p = (Player) e.getEntity();
        if (schutz.contains(p)){
            e.setCancelled(true);
        }
    }
 
Zuletzt bearbeitet von einem Moderator:
C

CitopiaMC

Guest
Essentials bietet die Möglichkeit nach einem Teleport den Spieler für x Sekunden unverwundbar zu machen.

Leider gilt dies nicht für Respawning daher wäre der Vorschlag von DasThema am besten.

Jedoch würde ich beim EntityDamageEvent erst prüfen ob das Entity das Schaden genommen hat, ein Spieler ist. (Könnte sonst zu Fehlern führen)

Code:
@EventHandler
public void onDamage(EntityDamageEvent event) {
    if(event.getEntity() instanceof Player) {
        Player p = (Player) event.getEntity();
        if(schutz.contains(p.getName)) {
            event.setCancelled(true);
        }
    }

}

Mit freundlichen Grüßen,
CitopiaMC
 

Valyreon

Minecrafter
Registriert
18 September 2014
Beiträge
18
Diamanten
0
Minecraft
Valyreon
Wao, vielen Dank für die schnellen und wertvollen Antworten :0
Auf Anhieb ein Problem durch ein eigenes Plugin zu lösen, dazu reichen meine Fähigkeiten leider nicht aus.
Darum noch einmal vielen Dank für den Code an euch beide.
Den noch in einen Standard-Pluginrahmen zu integrieren, bekomme sogar ich hin und was dazugelernt habe ich auch.
:D
 
Oben