Résolu Problème de lit
-
Euh en tout cas il est dans le package de fml.
-
Alors du coup j’ai essayé ça :
public class EmotionLifeEvent { @SubscribeEvent public void onLivingDeath(LivingDeathEvent e) { if(e.entityLiving instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)e.entityLiving; for(int i = 0; i < player.inventory.getSizeInventory(); i++) { if(player.inventory.getStackInSlot(i) != null && player.inventory.getStackInSlot(i).getItem() == EmotionItems.purpuraRing) { BlockPos pos = player.getPosition(); player.getEntityData().setBoolean("ring", true); player.getEntityData().setInteger("posX", pos.getX()); player.getEntityData().setInteger("posY", pos.getY()); player.getEntityData().setInteger("posZ", pos.getZ()); } } } } @SubscribeEvent public void onEntitySpawn(PlayerEvent.Clone e) { if(e.wasDeath) { EntityPlayer player = e.original; if(player.getEntityData().getBoolean("ring")) { e.entityPlayer.getEntityData().setBoolean("ring", player.getEntityData().getBoolean("ring")); e.entityPlayer.getEntityData().setInteger("posX", player.getEntityData().getInteger("posX")); e.entityPlayer.getEntityData().setInteger("posY", player.getEntityData().getInteger("posY")); e.entityPlayer.getEntityData().setInteger("posZ", player.getEntityData().getInteger("posZ")); } } } @SubscribeEvent public void onEntityWake(PlayerRespawnEvent e) { EntityPlayer player = e.player; if(player.getEntityData().getBoolean("ring")) { player.addPotionEffect(new PotionEffect(Potion.fireResistance.getId(), 800, 0, true, false)); player.setPosition(player.getEntityData().getInteger("posX"), player.getEntityData().getInteger("posY"), player.getEntityData().getInteger("posZ")); } } }
Mais le dernier événement “PlayerRespawnEvent” n’est pas appelé du tout je suppose donc qu’il s’enregistre avec :
FMLCommonHandler.instance().bus().register();
Et non pas :
MinecraftForge.EVENT_BUS.register();
Bref sinon c’est pas grave dans le pire des cas la bague ne fonctionnera que si le spawn point est indéfinie et puis tempi un.
-
Il faut l’enregistrer avec FMLCommonHandler et faire attention à ne pas confondre les 2 classes qui s’appellent PlayerEvent.
-
Ah bah c’est bon j’ai réglé le problème je m’apprêtais à laisser tomber mais au final j’ai créé juste une nouvelle classe :
public class EmotionRespawnEvent { @SubscribeEvent public void onEntityWake(PlayerRespawnEvent e) { EntityPlayer player = e.player; System.out.print("PLAYER RESPAWNED AFTER BED !!!!!!"); if(player.getEntityData().getBoolean("ring")) { player.addPotionEffect(new PotionEffect(Potion.fireResistance.getId(), 800, 0, true, false)); player.setPosition(player.getEntityData().getInteger("posX"), player.getEntityData().getInteger("posY"), player.getEntityData().getInteger("posZ")); player.getEntityData().setBoolean("ring", false); } } }
Que j’ai enregistré comme je l’ai dis avec :
FMLCommonHandler.instance().bus().register();
Et au final c’est enfin réglé, alleluia ! Bref merci à vous deux en tous cas, c’est vrai que j’ai du mal à comprendre pourquoi le post à était aussi long mais au final ça marche alors c’est pas grave.
-
Tu peux utiliser la même classe.
-
D’accord je pensais pas qu’on pouvais enregistrer deux fois la même classe avec deux méthodes différentes, merci encore t’es au top ,)