• 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!

ArrowShootEvent

EdiNear

Minecrafter
Mitglied seit
11 November 2016
Beiträge
6
Diamanten
0
Minecraft
EdiNear
Hallo liebes Forum ich brauche mal eure Hilfe :)

Wie kann ich das Event nur ausführen lassen wenn der Pfeil den der Spieler schießt ein bestimmten Namen hat?


Code:
    @EventHandler
    public void onArrowShoot(final ProjectileHitEvent event) {
        if (!(event.getEntity().getShooter() instanceof Player)) {
            return;
        }
        if (!(event.getEntity() instanceof Arrow)) {
            return;
        }
        final Player player = (Player)event.getEntity().getShooter();
            final Location l = event.getEntity().getLocation();
            l.setYaw(player.getLocation().getYaw());
            l.setPitch(player.getLocation().getPitch());
            player.playSound(l, Sound.ENTITY_SHULKER_TELEPORT, 1.0f, 1.0f);
           
            player.teleport(l);
            event.getEntity().remove();
            }

    }
Ich danke schonmal im Voraus für alle Antworten.

Mit Freundlichen Grüßen EdiNear.
 

EdiNear

Minecrafter
Mitglied seit
11 November 2016
Beiträge
6
Diamanten
0
Minecraft
EdiNear
Hi Taminoful,

Danke Für deine Antwort leider bekomme ich dann eine "NullPointerException" wenn ich versuche den CustomName abzufragen :(

LG

Code:
@EventHandler
    public void onArrowShoot(final ProjectileHitEvent event) {
        if (!(event.getEntity().getShooter() instanceof Player)) {
                return;
            }
            if (!(event.getEntity() instanceof Arrow)) {
                return;
            }
         if(event.getEntity().getCustomName().equalsIgnoreCase("§a§oTeleport Pfeil")) {
            final Player player = (Player)event.getEntity().getShooter();
      
            final Location l = event.getEntity().getLocation();
            l.setYaw(player.getLocation().getYaw());
            l.setPitch(player.getLocation().getPitch());
                player.playSound(l, Sound.ENTITY_SHULKER_TELEPORT, 1.0f, 1.0f);
            
            player.teleport(l);
            event.getEntity().remove();

                 }
            
        }



Fehler:
[14:50:36 ERROR]: Could not pass event ProjectileHitEvent to RedIslands v4.0
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callProjectileHitEvent(CraftEventFactory.java:803) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityArrow.a(EntityArrow.java:259) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityArrow.B_(EntityArrow.java:194) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityTippedArrow.B_(EntityTippedArrow.java:86) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.entityJoinedWorld(World.java:1631) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.h(World.java:1601) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.tickEntities(World.java:1435) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.WorldServer.tickEntities(WorldServer.java:668) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:817) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265]
Caused by: java.lang.NullPointerException
        at de.edinear.redisladns.events.Event_Dealer.onArrowShoot(Event_Dealer.java:103) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_265]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_265]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_265]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_265]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
        ... 16 more
 

Taminoful

Schafhirte
Mitglied seit
3 August 2012
Beiträge
115
Alter
23
Diamanten
68
Minecraft
Taminoful
Hi Taminoful,

Danke Für deine Antwort leider bekomme ich dann eine "NullPointerException" wenn ich versuche den CustomName abzufragen :(

LG

Code:
@EventHandler
    public void onArrowShoot(final ProjectileHitEvent event) {
        if (!(event.getEntity().getShooter() instanceof Player)) {
                return;
            }
            if (!(event.getEntity() instanceof Arrow)) {
                return;
            }
         if(event.getEntity().getCustomName().equalsIgnoreCase("§a§oTeleport Pfeil")) {
            final Player player = (Player)event.getEntity().getShooter();
   
            final Location l = event.getEntity().getLocation();
            l.setYaw(player.getLocation().getYaw());
            l.setPitch(player.getLocation().getPitch());
                player.playSound(l, Sound.ENTITY_SHULKER_TELEPORT, 1.0f, 1.0f);
         
            player.teleport(l);
            event.getEntity().remove();

                 }
         
        }

Fehler:
[14:50:36 ERROR]: Could not pass event ProjectileHitEvent to RedIslands v4.0
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callProjectileHitEvent(CraftEventFactory.java:803) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityArrow.a(EntityArrow.java:259) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityArrow.B_(EntityArrow.java:194) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityTippedArrow.B_(EntityTippedArrow.java:86) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.entityJoinedWorld(World.java:1631) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.h(World.java:1601) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.tickEntities(World.java:1435) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.WorldServer.tickEntities(WorldServer.java:668) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:817) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265]
Caused by: java.lang.NullPointerException
        at de.edinear.redisladns.events.Event_Dealer.onArrowShoot(Event_Dealer.java:103) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_265]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_265]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_265]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_265]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-dcd1643-e60fc34]
        ... 16 more
Wie in der getCustomName Methode beschrieben, kann diese null zurück liefern. Dies ist der Fall, wenn das Projectile Objekt keinen Custom Name besitzt. Du könntest jetzt noch schauen ob du über das in Projectile implementierte Interface CommandSender an den Namen kommst. Hier wäre zwar die Beschreibung des Interfaces in den Docs nicht treffend, aber diese bietet dir eine getName() Methode an.
 
Zuletzt bearbeitet:

EdiNear

Minecrafter
Mitglied seit
11 November 2016
Beiträge
6
Diamanten
0
Minecraft
EdiNear
Dem Pfeil wird beim Bespannen des Bogens der Displayname entzogen deswegen kann ich die diesen nicht abfragen. Sobald der Pfeil den Boden trift hat dieser somit keine Name mehr. Eine Idee wie ich abfragen kann ob der Spieler diesen besonderen Pfeil besitzt. Das er nur teleportiert wird wenn der Spieler diesen Pfeil hat?

LG
 
Zuletzt bearbeitet:

Taminoful

Schafhirte
Mitglied seit
3 August 2012
Beiträge
115
Alter
23
Diamanten
68
Minecraft
Taminoful
Der Pfeil wird beim Bespannen des Bogens der Displayname entzogen deswegen kann ich die diesen nicht abfragen. Sobald der Pfeil den Boden trift hat dieser somit keine Name mehr. Eine Idee wie ich abfragen kann ob der Spieler diesen besonderen Pfeil besitzt. Das er nur teleportiert wird wenn der Spieler diesen Pfeil hat?

LG
Du könntest im EntityShootBowEvent den zu verwendenden ItemStack per getConsumable Methode abrufen, wenn dieser mit dem Item übereinstimmt, kannst du ihn teleportieren.
 
Oben