• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

Geschlossen SkyPVP BlockListener

Status
Not open for further replies.

LetsMCLP

Member
Dev-Wiki | Member
#1
Hallo!
Ich brauche wieder hilfe, da ich ein Problem mit meinem Listener hab.

Java:
package at.skypvp.listener;



import org.bukkit.OfflinePlayer;

import org.bukkit.event.EventHandler;

import org.bukkit.event.Listener;

import org.bukkit.event.block.BlockBreakEvent;

import org.bukkit.event.block.BlockPlaceEvent;

import org.bukkit.event.entity.EntityDamageEvent;



import at.skypvp.commands.Build;



public class BlockListener implements Listener{

  

  

    @EventHandler

    public void onPlace(BlockPlaceEvent e) {

        if(!Build.allowed.contains(e.getPlayer())) {

          

            e.setCancelled(true);

          

        }

      

    }

  

  

 

    @EventHandler

    public void onBreake(BlockBreakEvent e) {

        if(!Build.allowed.contains(e.getPlayer())) {

        e.setCancelled(true);

        }

    }

  

    @EventHandler

    public void onPlayerJoin(EntityDamageEvent e) {

        if(!Build.allowed.contains(((BlockPlaceEvent) e).getPlayer())) {

          

            e.setCancelled(true);

          

        }

      

    }

   }
Edit by Moderator: Bitte füge den QuellCode immer in einen CodeBlock ein!
 
Last edited by a moderator:
G

Givou

Gast
Dev-Wiki | Gast
#2
Hey,

Hab grad nicht so viel Zeit..aber:
Wieso Parst du e.getPlayer(); mit BlockBreakEvent.

Schau mir das daheim dann nochmal an.

Lg
 
G

Givou

Gast
Dev-Wiki | Gast
#3
Hey,

Ein anderer User wird dir das jetzt erklären, du kannst aber nicht einfach was aus einem anderen Event heben! Du musst das Entity zu einem Spieler parsen O.O

Lg
 

neo_0815

Stammgast
Dev-Wiki | Stammgast
Dev-Wiki | Member
#4
Hey LetsMCLP,

könntest du deine Frage eventuell etwas spezifizieren (z.B. durch einen Error oder ähnlichem). Außerdem macht die letzte Methode onPlayerJoin keine Sinn, weil eine playerJoin-Methode sollte auch ein PlayerJoinEvent als Parameter besitzen.
Und wenn der Name einfach nur nicht sinnvoll gewählt ist, wundert es mich warum (wie schon gesagt wurde) du das Event castest. Ein canclen von einem EntityDamageEvent hat auch aus Verständnisgründen keinen Platz in einem BlockListener. Und ein JoinEvent ist glaube ich nicht Mal cancable.

LG
 

neo_0815

Stammgast
Dev-Wiki | Stammgast
Dev-Wiki | Member
#5
Hey,

Ein anderer User wird dir das jetzt erklären, du kannst aber nicht einfach was aus einem anderen Event heben! Du musst das Entity zu einem Spieler parsen O.O

Lg
Man kann auch direkt das bereitgestellte Entity aus dem EntityDamageEvent nehmen. Geht über
Player p = (Player) e.getDamager();
 

RaizCookie

Moderator
Dev-Wiki | Moderation
Dev-Wiki | Freund
Mentor
Dev-Wiki | Stammgast
#6
Ich glaube ich weiß was du möchtest. Du möchtest, dass man den Armorstand (oder wie das Teil heißt) nicht zerstören kann. Ich denke, dass du erstmal abfragen musst, ob das Entity, das Schaden bekommt der Armorstand ist. Falls ja cancelst du das Event.
Code:
public void OnEnitityDamage(EntityDamageEvent e) {
        Entity a = (Entity) e.getEntity();
        if(a.getType() == EntityType.ARMOR_STAND) {
            e.setCancelled(true);
        }
    }
Habe es probiert. Bei mir klappt es. Ich hoffe, dass das dir hilft. Und sei beim nächsten Post etwas genauer. :)
 
G

Givou

Gast
Dev-Wiki | Gast
#7
Ach ja: Vergiss bitte nicht die Interaktion mit dem Amorstand zu Canceln! Sonst kann jeder Spieler dem Armorstand Sachen an/aus ziehen!
 
T

TrolluZz

Gast
Dev-Wiki | Gast
#8
Ist damit deine Frage geklärt? Ansonsten wird dieses Thema in den nächsten 24h geschlossen.
 
Status
Not open for further replies.