Résolu Bug étrange lors d'un spawn de mob
-
Bonsour !
J’ai un bug étrange qui m’arrive lorsque j’ai fait en sorte qu’un mob spawn à la mort d’un (¿ comprendo ?):huh:
En gros un mob spawn mais ne bouge pas, ne prend pas de dégâts
Voici mon bout de code dans un event “LivingDeathEvent”
if (event.entityLiving instanceof EntityZombieMale) { EntityZombieCrawler var2 = new EntityZombieCrawler(event.entityLiving.worldObj); var2.setLocationAndAngles(event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, event.entityLiving.rotationYaw, event.entityLiving.rotationPitch); event.entityLiving.worldObj.spawnEntityInWorld(var2); }
J’espère ne pas m’être trompé d’event biensûr, et que quelqu’un à la réponse !
Merci !
-ZeAmateis-
-
Salut,
Même sans voir le reste du code, je suis sûr à 100 % que tu fais spawn l’entity sur le monde client. -
Euhh Oui Il faut un worldObj.remote un truc comme ça ?
-
if(!event.entityLiving.worldObj.isRemote)
Mais avec ça tu aura sûrement plus rien du tout cas la je pense que tu déclenche que ce code en client. Il faudrait le reste du code (et surtout où l’event est enregistré). -
Je te file les codes de suite !
Event enregistré comme ceci dans la fonction “init” de la classe principale
MinecraftForge.EVENT_BUS.register(new DeathEvent());
La classe complète du DeathEvent:
:::
package viruz.zeamateis.event; import java.util.Random; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.entity.living.LivingDeathEvent; import viruz.zeamateis.mob.monster.EntityZombieCrawler; import viruz.zeamateis.mob.monster.EntityZombieMale; public class DeathEvent { /*@ForgeSubscribe public void onLivingDeath(LivingDeathEvent event) { Entity source = event.source.getSourceOfDamage(); if (source != null) { if (source instanceof EntityZombieMale) { if(event.entityLiving.worldObj.isAirBlock((int)(event.entityLiving.posX - 1), (int)event.entityLiving.posY, (int)event.entityLiving.posZ)) { EntityZombieMale var2 = new EntityZombieMale(event.entityLiving.worldObj); var2.setLocationAndAngles(event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, event.entityLiving.rotationYaw, event.entityLiving.rotationPitch); event.entityLiving.worldObj.spawnEntityInWorld(var2); } } } }*/ @ForgeSubscribe public void onLivingDeath(LivingDeathEvent event) { //Player's Head in PVP ! Random rand = new Random(); if (event.entityLiving instanceof EntityPlayer) { boolean dodrop = true; if (event.source.equals("player")) { dodrop = false; } double chance = rand.nextDouble() * 100; if ((dodrop && chance <= 1)) { ItemStack playerHead = new ItemStack(Item.skull, 1, 3); playerHead.setTagCompound(new NBTTagCompound()); EntityPlayer player = (EntityPlayer) event.entityLiving; String playerName = player.getEntityName(); playerHead.getTagCompound().setString("SkullOwner", playerName); event.entityLiving.entityDropItem(playerHead, 0.5F); } } if (event.entityLiving instanceof EntityZombieMale) { EntityZombieCrawler var2 = new EntityZombieCrawler(event.entityLiving.worldObj); var2.setLocationAndAngles(event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, event.entityLiving.rotationYaw, event.entityLiving.rotationPitch); event.entityLiving.worldObj.spawnEntityInWorld(var2); } } }
:::
-
Voilà c’est tout ce qui touche au DeathEvent___Merci ! Robin !
if(!event.entityLiving.worldObj.isRemote) fonctionne parfaitement !