ServerPlugin WorldGuard macht einen Hacken in die Rechnung D:

Dieses Thema im Forum "Programmierung" wurde erstellt von MineForce, 17. Januar 2014.

  1. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    Hallo,

    Ich habe ein Minigame Plugin programmiert.
    Nun gibt es da Probleme mit WorldGuard!
    WorldGuard blockiert (laut Config) Tnt-Block-Schaden.
    das heißt Tnt kann keine Blöcke zerstören D:

    Wie ich gesehen habe haben andere Minigame Plugins eine Methode die WorldGuard ignoriert oder wenigends einiges davon.
    Ich möchte nun einen Listener machen der blockiert das WorldGuard TnT-Block-Schaden blockiert.
    Also kurz: TnT soll Blöcke zerstören auch wenn in der Config von WorldGuard was anderes steht. (In meiner Arena wegen Minigame).
    Nun welches Event soll ich nehmen BlockBreakEvent?

    EntityExplodeEvent ist das TnT überhaupt explodiert kanns schonmal nicht sein.

    Ich habe die Priority des Events auf Hightest gesetzt und der Code:
    Code (Text):
    1. @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled=true)
    Ich habe auch gesetzt das wenn WorldGuard Tnt-Block-Schaden blockiert also canncelt das das ignoriert wird.

    Nun welches Event?

    danke vorraus.
     
    #1
  2. MrOAriO
    Offline

    MrOAriO

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    135
    Minecraft:
    OAriO
    Dann stell die Config um ? o_O
    Oder benutz halt kein WorldEdit / WorldGuard wenn das einzelene Server sind die nur für das Spiel gedacht sind, also BlockBreak & Place einfach caneln.
     
    #2
  3. games6471
    Offline

    games6471

    Also erstmal wieso ignorierst überhaupt die gecancellten Events, ich dachte du willst das Event geschehen lassen?
    Jetzt zum eigentlichen Thema. Du musst für dieses Explosion jedes auf jedes einzelne Event, welches für eine TnT-Explosion zuständigen ist, hören. Das wären jedoch nur zwei, also EntityExplodeEvent (Schaden und Mobs und Spieler) und EntityDamageEvent(Schaden an Blöcken und Explosionseffekt).
     
    #3
  4. MineForce
    Offline

    MineForce Gesperrt

    Registriert seit:
    17. Oktober 2012
    Beiträge:
    122
    FALSCH xD

    Mal genau:

    WorldGuard canncelt jetzt mal das Tnt Blöcke zerstört das nervt aber und macht kein Spaß angenommen WorldGuard sagt pech gehabt du kannst es nicht in der Config umstellen (nur mal so nicht in echt) dann mach ich ein Plugin was sagt haha WorldGuard ich habs wieder angestellt fertig und Tnt macht wieder Blöcke schaden.

    Dazu brauche ich nur BlockBreakEvent weil:
    Tnt explodiert ja und tötet auch mobs.

    Nur wie kann ich die höhste Priorität und genau bei BlockBreakEvent das Tnt Event herrausnehmen?
     
    #4
  5. MrOAriO
    Offline

    MrOAriO

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    135
    Minecraft:
    OAriO
    Unötig ? Du machst einfach die Config aus oder machst WorldGuard weg.
     
    #5
  6. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Probier es mal damit:
    Code (Text):
    1. public void onExplode(EntityExplodeEvent e) {
    2.        
    3.     for (Block b : e.blockList()) {
    4.            
    5.         b.breakNaturally();
    6.         //wenn keine Items gedroppt weden sollen, benutze
    7.         //b.setType(Material.AIR);
    8.            
    9.     }
    10.        
    11. }
    Natürlich musst du noch dafür sorgen, dass die Schleife nur startet, wenn das ganze in der Arena ist.
     
    #6
  7. Baba43
    Offline

    Baba43 Ehem. Teammitglied

    Registriert seit:
    5. November 2012
    Beiträge:
    590
    WorldGuard wertet z.B. das BlockBreakEvent mit der Priorität HIGH aus und ignoriert Events, die bereits abgebrochen wurden.

    Danach gibt es noch die Priorität MONITOR, welche du benutzen könntest, um Events, die gecancelt wurden, wieder zu aktivieren.

    Wenn du WorldGuard ausperren willst, könntest du mal versuchen, das Event vorher abzubrechen, damit es von WorldGuard ignoriert wird und anschließend wieder aktiv zu setzen.
     
    #7