Résolu Event OnLivingDrops
-
Salut
Juste une petite question:
Ajouter un drop à une entity vanilla, ok, mais comment faire pour rajouter un drop seulement si le joueur tue cette entity avec un certain item?
Je pense qu’il faut utiliser .getHeldItem().getItem() mais je ne trouve pas quelle condition il faut rajouter à l’event pour le rajouter.
Merci d’avance! -
Bonjour,
En 1.7.10 ceci fonctionneif(event.source.getEntity() != null && event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == Items.diamond_sword) { System.out.println("Fatality!!!!"); } }
Edit:c’est ce code pas l’ancien
-
Merci, mais ça n’a pas l’air de fonctionner, ou alors je m’y prend mal, j’ai essayer en mettant ceci:
if(event.entity instanceof EntityPig)
{
if(event.entity instanceof EntityPlayer)
{
if(event.entityLiving.getHeldItem().getItem() == Items.apple)
{
ItemStack itemStackToDropa2 = new ItemStack(Items.apple, rand.nextInt(2) + 1);
event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, itemStackToDropa2));
}
}
} -
essaye ca:
if(event.source.getEntity() != null && event.source.getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.source.getEntity(); if(player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == Items.diamond_sword && event.entity instanceof EntityPig) { EntityItem newdropMuttonRaw = new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, new ItemStack(Items.apple, 1)); event.drops.add(newdropMuttonRaw); } }
-
Merci ça marche!
Mais si je veux que l’action se déclenche quand le joueur n’as pas d’item dans la main (je met == null au getItem) le jeu crash quand je tue l’entitée… -
if(player.getCurrentEquippedItem().getItem() == null && event.entity instanceof EntityPig)
c’est normale que ca plante on verifie si c est pas null avant
if(player.getCurrentEquippedItem() != null)
-
Pour aucun item la bonne condition c’est player.getCurrentEquippedItem() == null.
-
ha oui désolé j’ai pas fait gaffe
-
Merci, problème réglé!
Dernière petite question, est-ce possible de placer un bloc quand l’entité est tuée? Je sais que c’est possible de placer pour les blocs mais pour les entités, je n’ai pas trouvé -
Oui. Il faut faire un world.setBlock, c’est la même chose.
-
essaye ca:
int x = (int) event.entity.posX; int y = (int) event.entity.posY; int z = (int) event.entity.posZ; event.entity.worldObj.setBlock(x, y, z, Blocks.anvil);
-
J’utiliserai plutôt MathHelper.floor_double(event.entity.posX) au lieu de cast int.
-
@‘robin4002’:
J’utiliserai plutôt MathHelper.floor_double(event.entity.posX) au lieu de cast int.
je connaissait pas cette alternative ça change beaucoup du cast?
ou c est juste plus propre?edit: Désoler pour le Hors sujet
-
cast en int = arrondir pas défaut.
MathHelper.floor_double = méthode de Minecraft, arrondi par défaut si la partie non entière est < .5 et par accès si ≥ .5 -
Merci à vous deux! Je pense que je n’ai plus de questions à propos de ça alors je passe le sujet en résolu, encore merci