/god funktion programieren?

2 Antworten

Du darfst nicht einfach jede Entity auf Player casten! Nach:

Player p = (Player) e.getEntity();

solltest du IMMER prüfen ob es auch geklappt hat und Player nicht null ist!!

if(p != null)
{
// gültiger Player

Okay, probier ich mal aus

0
@ichfragdochnur7

Immer wenn du eine Typumwandlung mit Objekten wie oben machst, solltest du danach direkt testen ob die Umwandlung funktioniert hat. Mit einem Nullpointer arbeiten bringt dein Programm schneller zum abstürzen als du gucken kannst...

0

soll if(p != null) { unter Player p = (Player)e.getEntity(); ?

0
@TheHunter147

Das kommt dann:

[11:14:48 ERROR]: Could not pass event EntityDamageByEntityEvent to System v1.0

org.bukkit.event.EventException: null

       at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:93) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:580) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:483) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:612) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity0(EntityLiving.java:1344) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity(EntityLiving.java:868) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityMonster.damageEntity(EntityMonster.java:44) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityZombie.damageEntity(EntityZombie.java:163) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityHuman.attack(EntityHuman.java:1005) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityPlayer.attack(EntityPlayer.java:1311) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1621) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:69) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:13) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]

       at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]

       at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]

Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.entity.CraftZombie cannot be cast to org.bukkit.entity.Player

       at de.TreftCraft.EntityDamage.onDamage(EntityDamage.java:11) ~[?:?]

       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]

       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]

       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]

       at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]

       at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       ... 25 more

0
@ichfragdochnur7

Ja.

Player p = (Player)e.getEntity();
//Entity in Player-Objekt umwandeln

if(p != null)
{
// Umwandlung hat geklappt

Nicht jedes Entity-Objekt ist vom Typ Player, aber jeder Player ist vom Typ Entity. Du solltest dir auf jedenfall noch mal die Grundlagen der objektorientierten Programmierung angucken...

0
@user373h383

Ich will ja nichts sagen aber der fehler kommt immer noch.....

Hab geändert, gespeichert, exportortiert, Server reloadet immernoch der gleiche fehler:

[11:21:55 ERROR]: Could not pass event EntityDamageEvent to System v1.0

org.bukkit.event.EventException: null

       at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:93) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:580) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:566) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:612) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity0(EntityLiving.java:1344) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity(EntityLiving.java:868) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityMonster.damageEntity(EntityMonster.java:44) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityZombie.damageEntity(EntityZombie.java:163) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.Entity.Y(Entity.java:439) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityLiving.Y(EntityLiving.java:204) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityInsentient.Y(EntityInsentient.java:186) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.Entity.B_(Entity.java:320) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityLiving.B_(EntityLiving.java:1871) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityInsentient.B_(EntityInsentient.java:246) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.EntityMonster.B_(EntityMonster.java:28) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.World.entityJoinedWorld(World.java:1631) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.World.h(World.java:1601) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.World.tickEntities(World.java:1435) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.WorldServer.tickEntities(WorldServer.java:665) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:817) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]

Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.entity.CraftZombie cannot be cast to org.bukkit.entity.Player

       at de.TreftCraft.EntityDamage.onDamage(EntityDamage.java:11) ~[?:?]

       at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) ~[?:?]

       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]

       at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]

       at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]

       ... 27 more

>

1
@user373h383

Derya001

tut mir leid aber du solltest dir java auch noch mal anschauen das hat gefehlt:

      if (entity instanceof Player) {

0

Für die die jetzt noch dazu kommen! So wie @user373h383 das beschrieben hat ist es auch nicht ganz richtig! Erst checken ob "if(e.getEntity() instanceof Player)" true ist. Danach kannst du casten, da er dir sonst eine ClassCastException schmeißt, noch bevor er zur if(p != null) Abfrage kommt :)

0

Das Casten funktioniert (wie schon beschrieben) nicht...

Auch solltest du beachten, dass es noch andere Listener zB EntityDamageEntitiy gibt, die du eventuell auch canceln solltest. Könnte aber auch generell alles über den EntityDamage laufen, da bin ich nicht sicher

Was möchtest Du wissen?