Résolu Problème sur l'event HarvestDropsEvent
-
Bonjour ou peut-être rebonjour
Je suis depuis plusieurs heures face à un problème d’event que je n’arrive pas à corriger malgrès mes nombreuses tentatives.Voici le code de mes events:
@SubscribeEvent public void onDrops(BlockEvent.HarvestDropsEvent event) { if(event.block == Blocks.dirt && event.harvester.getHeldItem() != null) event.drops.clear();
@SubscribeEvent public void onDrops(BlockEvent.HarvestDropsEvent event) { // Dirt if(event.block == Blocks.dirt && event.harvester.getHeldItem() == null) { event.drops.add(new ItemStack(ModResetcraft.Dirtdust, 1)); }
Avec ces codes, le bloc de terre détruit à la main fait crasher le jeu, alors qu’il devrait donner 1 Dirtdust.
Je les ai séparer en deux car ils sont chacun dans une classe différente (Je n’arrivais pas à mettre le .clear avec le .add dans la même classe, l’eventbus de celle de .clear est dans preInit et cette de .add dans postInit), ce que je n’ai pas dit c’est que ce code marchait très bien les premières fois que je vérifiais mon mod.
Si quelqu’un pourrait me dire où est le problème s’il le voit (je cherche encore de mon coté mais je commence à tourner en rond), je lui en remercie
-
Essaies comme ceci et dis moi
@SubscribeEvent public void onDrops(BlockEvent.HarvestDropsEvent event) { if(event.block == Blocks.dirt && event.harvester.getHeldItem() != null) { event.drops.clear(); } else if(event.block == Blocks.dirt && event.harvester.getHeldItem() == null) { event.drops.add(new ItemStack(ModResetcraft.Dirtdust, 1)); }
-
Il nous faudrait le rapport de crash.
Et je ne comprends pas pourquoi tu sépare ton code en deux classes … -
Merci de vos réponses ^^
Julot - Le jeu ne crash plus, c’est déjà ça, mais ce n’est pas encore bon… le bloc donne 1 Dirtdust et 1 bloc de terre en plus. Je vais essayer de modifier un peu ça voir si j’arrive à quelque chose, mais je suis toujours ouvert à d’autres propositionsRobin - Voilà:
–-- Minecraft Crash Report ---- // Uh... Did I do that? Time: 27/06/15 19:12 Description: Ticking memory connection java.lang.NullPointerException: Ticking memory connection at com.google.Dr4g0nB0t4.Resetcraft.common.BlockEventHandler.onDrops(BlockEventHandler.java:25) at cpw.mods.fml.common.eventhandler.ASMEventHandler_8_BlockEventHandler_onDrops_HarvestDropsEvent.invoke(.dynamic) at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138) at net.minecraftforge.event.ForgeEventFactory.fireBlockHarvesting(ForgeEventFactory.java:155) at net.minecraft.block.Block.dropBlockAsItemWithChance(Block.java:806) at net.minecraft.block.Block.dropBlockAsItem(Block.java:795) at net.minecraft.block.Block.harvestBlock(Block.java:1217) at net.minecraft.server.management.ItemInWorldManager.tryHarvestBlock(ItemInWorldManager.java:325) at net.minecraft.server.management.ItemInWorldManager.uncheckedTryHarvestBlock(ItemInWorldManager.java:234) at net.minecraft.network.NetHandlerPlayServer.processPlayerDigging(NetHandlerPlayServer.java:532) at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:61) at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:94) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at com.google.Dr4g0nB0t4.Resetcraft.common.BlockEventHandler.onDrops(BlockEventHandler.java:25) at cpw.mods.fml.common.eventhandler.ASMEventHandler_8_BlockEventHandler_onDrops_HarvestDropsEvent.invoke(.dynamic) at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138) at net.minecraftforge.event.ForgeEventFactory.fireBlockHarvesting(ForgeEventFactory.java:155) at net.minecraft.block.Block.dropBlockAsItemWithChance(Block.java:806) at net.minecraft.block.Block.dropBlockAsItem(Block.java:795) at net.minecraft.block.Block.harvestBlock(Block.java:1217) at net.minecraft.server.management.ItemInWorldManager.tryHarvestBlock(ItemInWorldManager.java:325) at net.minecraft.server.management.ItemInWorldManager.uncheckedTryHarvestBlock(ItemInWorldManager.java:234) at net.minecraft.network.NetHandlerPlayServer.processPlayerDigging(NetHandlerPlayServer.java:532) at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:61) at net.minecraft.network.play.client.C07PacketPlayerDigging.processPacket(C07PacketPlayerDigging.java:94) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) -- Ticking connection -- Details: Connection: net.minecraft.network.NetworkManager@28a3d314 Stacktrace: at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Windows 8.1 (amd64) version 6.3 Java Version: 1.8.0_45, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 2807419024 bytes (2677 MB) / 3151495168 bytes (3005 MB) up to 3151495168 bytes (3005 MB) JVM Flags: 3 total; -Xincgc -Xmx3G -Xms3G AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 4 mods loaded, 4 mods active mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available modresetcraft{1.0.0} [ModResetcraft] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Player Count: 1 / 8; [EntityPlayerMP['DragonBot'/1, l='New World', x=683,58, y=4,00, z=2033,15]] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fml,forge'
Je met deux classes car je n’arrivais pas à mettre le .clear et le .add dans le même event, mais je l’ai fais quand j’ai commencer les events et je n’avais toujours pas modifier ça ^^___Bon et bien, problème résolu
Voici le code:@SubscribeEvent public void onDrops(BlockEvent.HarvestDropsEvent event) { // Dirt if(event.block == Blocks.dirt && event.harvester.getHeldItem() == null) { event.drops.clear(); event.drops.add(new ItemStack(ModResetcraft.Dirtdust, 1)); } else if(event.block == Blocks.dirt && event.harvester.getHeldItem().getItem() != null && event.harvester.getHeldItem().getItem() == ModResetcraft.Shovel) { event.drops.clear(); event.drops.add(new ItemStack(ModResetcraft.Dirtdust, 4)); }
Merci! ^^
-
Tu as un NPE, donc quelque chose est null.
En fait tu cherche à faire quoi exactement ? Que la terre drop rien sauf si on casse à la main est dans ce cas ça drop de la poussière/poudre de terre ?ÉDIT : ok j’ai compris, en passant je fusionne tes deux messages (pas de double poste merci).