Je crée un plugin PvP, mais je ne peux pas continuer parce que j'ai un problème de casting ennuyeux que je ne peux pas résoudre. Je suis en train d'obtenir la dernière cause des dommages, la damager, vérifiez si le damager utilisé un Flèche, convertir la « flèche » dans le jeu de tir . Mais il me donne constamment des erreurs dans ma console.Bukkit/Spigot - EntityDamageByEntityEvent: lancer le shooter
Alors, voici mon code
Player player = (Player)event.getPlayer(); // this variable is in my public void onPlayerMovement event
if(((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager() instanceof Arrow)
{
Arrow arrow = (Arrow) ((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager();
ProjectileSource shooter = ((ProjectileSource) ((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager());
if(shooter instanceof Player) // checking if the shooter is a player.
{
shooter.sendMessage("You hitted someone with a bow right?");
player.sendMessage("You got hit by a bow..");
}
}
La raison pour laquelle je veux convertir la flèche dans le jeu de tir est parce que je veux afficher un message au tireur, et deux autres choses.
C'est l'erreur
[22:39:10 ERROR]: Could not pass event PlayerMoveEvent to FendykPVP v1.8
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:270) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PacketPlayInFlying.a(SourceFile:126) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PacketPlayInFlying$PacketPlayInPosition.a(SourceFile:57) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_121]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_121]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_8_R3.entity.CraftArrow cannot be cast to org.bukkit.entity.Player
at GameCore.playerKill.onPlayerMovement(playerKill.java:102) ~[?:?]
at sun.reflect.GeneratedMethodAccessor1391.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
... 15 more
J'espère que quelqu'un peut me aider avec ce
Ligne 102: Player damager = (Joueur) entitydamager; –
Cette ligne est appelée quand Y <= 10 –
J'ai ajouté ProjectileSource shooter = arrow.getShooter(); mais cela me donne une erreur quand j'essaie d'utiliser ceci: shooter.sendmessage() ;. Son dit: "la méthode sendMessage (String) n'est pas définie pour le type ProjectileSource". –