SOLVED Demande d'aide pour créer une pioche à spawner [Forge 1.7.10]
-
Bonjour, j’ai un petit soucis j’essaie de crée une pioche qui permet de récupérer les “mob_spawner” donc déjà tout d’abord je déclare mon événement dans ma Class Event
MinecraftForge.EVENT_BUS.register(new DropsBlock());
et crée la class lui correspondant
public class DropsBlock { @SubscribeEvent public void BlockDestroyed(HarvestDropsEvent events) { if(events.block == Blocks.mob_spawner) { events.drops.add(new ItemStack(Blocks.mob_spawner)); } } }
Oui je sais je n’est pas intégré la condition pour que ma Pioche à Spawner uniquement puisse récupérer le “mob_spawner” (a vrai dire je ne vois pas vraiment comment faire) , mais ce n’est pas encore l’heure de ce pré-occuper de ce problème mon problème actuel et que ben tout simplement mon évent ne marche pas j’ai ma petite idée je pense que c’est du au fait que j’utilise HarvestDropsEvent et pas BreakBlock, donc si une âme charitable pourrait m’accorder son aide.
-
Salut,
En effet HarvestDropsEvent n’est appelé que lorsqu’un bloc drop des items, ce qui n’est pas le cas du spawner.
Il faut absolument utiliser BlockEvent.BreakEvent (tu peux drop un item en faisant spawn l’EntityItem dans le monde). -
Merci de ta réponse qui confirme mon hypothèse de base par malchance je ne sais pas comment utiliser cette Event correctement j’ai essayer déjà mais sans succès
-
De la même façon que les autres event.
Tu peux envoyer le code d’une de tes tentatives ? -
Non je l’es malheureusement supprimer car je ne trouvais d’ailleurs plus comment drops le block au sol
Edit à 19:10 H donc j’ai re-tester un code en bidouillant
public class DropSpawner extends BreakEvent { public DropSpawner(int x, int y, int z, World world, Block block, int blockMetadata, EntityPlayer player) { super(x, y, z, world, block, blockMetadata, player); if(block == Blocks.mob_spawner) { world.setBlock(x, y, z, Blocks.mob_spawner); } } }
Donc il marche mais je ne sais pas si il y a mieux et ensuite j’vois pas trop comment rajouter ma condition pour ma Pioche. j’me doute bien que dans mon if j’doit dire que l’item qui effectue le break = Item.diamond_pickaxe mais c’est le “item qui effectue le break” que je n’arrive pas à faire
-
L’event doit être utilisé comme les autres event :
@SubscribeEvent public void BlockDestroyed(BreakEvent events) { if(events.block == Blocks.mob_spawner) { events.world.spawnEntityInWorld(new EntityItem(x, y, z, new ItemStack(Blocks.mob_spawner))); } }
-
D’accord merci et pour la condition pour vérifier la pioche car je ne trouve pas s’il te plaît
-
depuis event.player il faut get le current item (et vérifier qu’il n’est pas null)