• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Problème sur l'event HarvestDropsEvent

    1.7.x
    1.7.10
    3
    5
    1080
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • DragonBot
      DragonBot dernière édition par

      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  🙂

      1 réponse Dernière réponse Répondre Citer 0
      • Deleted
        Deleted dernière édition par

        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));
        }
        
        
        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

          Il nous faudrait le rapport de crash.
          Et je ne comprends pas pourquoi tu sépare ton code en deux classes …

          1 réponse Dernière réponse Répondre Citer 0
          • DragonBot
            DragonBot dernière édition par

            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 propositions 🙂

            Robin - 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! ^^

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

              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).

              1 réponse Dernière réponse Répondre Citer 0
              • 1 / 1
              • Premier message
                Dernier message
              Design by Woryk
              Contact / Mentions Légales

              MINECRAFT FORGE FRANCE © 2018

              Powered by NodeBB