Crash Ticking entity
-
@SideOnly(Side.SERVER)
Euh juste pourquoi ?!! (Au-dessus de ton event LivingDeathEvent) -
Essaie de séparer par une entrée avant chaque point et renvoi les crash report avec la classe
-
System.out.println(playerSource.getDisplayName() + " tue " + playerKilled.getDisplayName() + " avec " + playerSource.inventory.getCurrentItem() != null ? playerSource.inventory.getCurrentItem().getDisplayName() : "rien " );Met cette ligne sur plusieurs lignes pour trouver quel objet est null.
En passant, ceci est inutile :if(event.source.getEntity() != null) { if(event.source.getEntity() instanceof EntityPlayer) {null instanceof EntityPlayer retourne false. Donc pas besoin de null check avant le instanceof
-
@‘Julot10085’:
@SideOnly(Side.SERVER)
Euh juste pourquoi ?!! (Au-dessus de ton event LivingDeathEvent)Pour que le message soit que dans la console du serveur.
-
@‘SCAREX’:
Essaie de séparer par une entrée avant chaque point et renvoi les crash report avec la classe
Je ne comprends pas ce que tu veux dire par “[font=Ubuntu, sans-serifséparer par une entrée avant chaque point” :/]
-
@‘robin4002’:
System.out.println(playerSource.getDisplayName() + " tue " + playerKilled.getDisplayName() + " avec " + playerSource.inventory.getCurrentItem() != null ? playerSource.inventory.getCurrentItem().getDisplayName() : "rien " );Met cette ligne sur plusieurs lignes pour trouver quel objet est null.
En passant, ceci est inutile :if(event.source.getEntity() != null) { if(event.source.getEntity() instanceof EntityPlayer) {null instanceof EntityPlayer retourne false. Donc pas besoin de null check avant le instanceof
Voilà mon nouveau code :
@SideOnly(Side.SERVER) @SubscribeEvent public void onPlayerKill(LivingDeathEvent event) { if (event.entity instanceof EntityPlayer) { if (event.source.getEntity() instanceof EntityPlayer) { EntityPlayer playerSource = (EntityPlayer) event.source.getEntity(); EntityPlayer playerKilled = (EntityPlayer) event.entity; if (playerSource != null) { if (playerKilled != null) { System.out.println(playerSource.getDisplayName() + " tue " + playerKilled.getDisplayName() + " avec " + playerSource.inventory.getCurrentItem() != null ? playerSource.inventory.getCurrentItem().getDisplayName() : "rien "); } } } } } -
Enlève le @SideOnly(Side.SERVER)
Le System.out.println(msg) affiche le message dans la console et non pas dans le chat du client, le joueur ne le recevra pas dans son chat même si l’annotation @SideOnly n’est pas là -
Son problème ce n’est pas le message mais le npe …
Ce que SCAREX t’as dit de faire (et moi aussi d’ailleurs) c’est ça :System.out.println(playerSource. getDisplayName() + " tue " + playerKilled .getDisplayName() + " avec " + playerSource .inventory .getCurrentItem() != null ? playerSource .inventory .getCurrentItem() .getDisplayName() : "rien " );Comme ça avec le rapport de crash (avec le numéro de ligne) tu pourra trouver quel objet est null.
-
@‘bodri’:
Enlève le @SideOnly(Side.SERVER)
Le System.out.println(msg) affiche le message dans la console et non pas dans le chat du client, le joueur ne le recevra pas dans son chat même si l’annotation @SideOnly n’est pas làOui mais est-ce que ça le marquera dans la console des joueurs ?

-
@‘robin4002’:
Son problème ce n’est pas le message mais le npe …
Ce que SCAREX t’as dit de faire (et moi aussi d’ailleurs) c’est ça :System.out.println(playerSource. getDisplayName() + " tue " + playerKilled .getDisplayName() + " avec " + playerSource .inventory .getCurrentItem() != null ? playerSource .inventory .getCurrentItem() .getDisplayName() : "rien " );Comme ça avec le rapport de crash (avec le numéro de ligne) tu pourra trouver quel objet est null.
Ah ok je comprenais pas merci beaucoup je vais voir avec ça !
EDIT:
Voici les nouveaux crashs
-
Des null checks et les problèmes se résoudent tout seul !