MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Crash LivingDeathEvent

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    7 Messages 3 Publieurs 1.0k Vues 1 Watching
    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.
    • FolganskyF Hors-ligne
      Folgansky Correcteurs
      dernière édition par

      J’ai vraiment du mal avec cette méthode, je comprend mal les antagonistes.

      java.lang.NoClassDefFoundError: net/minecraft/client/Minecraft
      at fr.powergame.modpg2.common.LivingEventHandler.onEntityKilled(LivingEventHandler.java:37)

      
      package fr.powergame.modpg2.common;
      
      import java.util.Random;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.entity.DataWatcher;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.EnumChatFormatting;
      import net.minecraftforge.client.event.RenderGameOverlayEvent;
      import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
      import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;
      import net.minecraftforge.event.entity.living.LivingDeathEvent;
      import net.minecraftforge.event.entity.living.LivingFallEvent;
      import net.minecraftforge.event.entity.player.ItemTooltipEvent;
      
      import org.lwjgl.input.Keyboard;
      import org.lwjgl.input.Mouse;
      
      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
      import cpw.mods.fml.common.gameevent.InputEvent;
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      
      public class LivingEventHandler
      {    
          @SubscribeEvent
          public void onEntityKilled(LivingDeathEvent event)
          {
              Random rand = new Random();
              ItemStack stack1 = new ItemStack(ModPg2.itemRandomMunition, 1);
              ItemStack stack2 = new ItemStack(ModPg2.itemMetadata, 1, 0); //Insigne
              ItemStack stack3 = new ItemStack(ModPg2.itemMetadata, 1, 1); //Dent
              ItemStack stack4 = new ItemStack(ModPg2.itemMetadata, 1, 2); //Collier
              if (event.source.getEntity() instanceof EntityPlayer)
              {
                  if(!event.entityLiving.worldObj.isRemote && event.entityLiving instanceof EntityMobGangster)
                  {
                      int randInt = rand.nextInt(100);
                      for(int j = 0 ; j < 2; ++j)
                      {
                          if (randInt <= 5)
                          {   // 5/100
                              event.entityLiving.entityDropItem(stack2, 1);
                          }
                          if (randInt > 5 && randInt <= 15)
                          {   // 10/100
                              event.entityLiving.entityDropItem(stack4, 1);
                          }
                          if (randInt > 15)
                          {   // 84/100
                              event.entityLiving.entityDropItem(stack1, 1);
                          }
                      }
                      if(Minecraft.getMinecraft().thePlayer != null)
                      {
                          int killG1 = Minecraft.getMinecraft().thePlayer.getEntityData().getInteger("killG1");
                          if(!Minecraft.getMinecraft().thePlayer.worldObj.isRemote)
                          {
                              killG1++;
                              Minecraft.getMinecraft().thePlayer.getEntityData().setInteger("killG1", killG1);
                          }
                          if(killG1 == 50)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG1a);
                          }
                          if(killG1 == 200)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG1b);
                          }
                          if(killG1 == 1000)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG1c);
                          }
                          if(killG1 == 5000)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG1d);
                          }
                      }
                  }
                  if(!event.entityLiving.worldObj.isRemote && event.entityLiving instanceof EntityMobGangster2)
                  {
                      int randInt = rand.nextInt(100);
                      for(int j = 0 ; j < 2; ++j)
                      {
                          if (randInt == 0)
                          {   // 1/100
                              event.entityLiving.entityDropItem(stack3, 1);
                              if(Minecraft.getMinecraft().thePlayer != null)
                              {
                                  Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementDentOr);                        
                              }
                          }
                          if (randInt > 0 && randInt <= 10)
                          {   // 10/100
                              event.entityLiving.entityDropItem(stack2, 1);
                          }
                          if (randInt > 5 && randInt <= 15)
                          {   // 10/100
                              event.entityLiving.entityDropItem(stack4, 1);
                          }
                          if (randInt > 15)
                          {   // 79/100
                              event.entityLiving.entityDropItem(stack1, 1);
                          }
                      }
                      if(Minecraft.getMinecraft().thePlayer != null)
                      {
                          int killG2 = Minecraft.getMinecraft().thePlayer.getEntityData().getInteger("killG2");
                          if(!Minecraft.getMinecraft().thePlayer.worldObj.isRemote)
                          {
                              killG2++;
                              Minecraft.getMinecraft().thePlayer.getEntityData().setInteger("killG2", killG2);
                          }
                          if(killG2 == 25)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG2a);
                          }
                          if(killG2 == 100)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG2b);
                          }
                          if(killG2 == 500)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG2c);
                          }
                          if(killG2 == 1000)
                          {
                              Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG2d);
                          }
                      }
                  }
                  if(!event.entityLiving.worldObj.isRemote && event.entityLiving instanceof EntityMobGangster3)
                  {
                      int randInt = rand.nextInt(100);
                      for(int j = 0 ; j < 2; ++j)
                      {
                          if (randInt <= 2)
                          {   // 3/100
                              event.entityLiving.entityDropItem(stack3, 1);
                              if(Minecraft.getMinecraft().thePlayer != null)
                              {
                                  Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementDentOr);                    
                              }
                          }
                          if (randInt > 2 && randInt <= 12)
                          {   // 10/100
                              event.entityLiving.entityDropItem(stack2, 1);
                          }
                          if (randInt > 12 && randInt <= 17)
                          {   // 5/100
                              event.entityLiving.entityDropItem(stack4, 1);
                          }
                          if (randInt > 17)
                          {   // 82/100
                              event.entityLiving.entityDropItem(stack1, 1);
                          }
                      }
                  }
                  if(Minecraft.getMinecraft().thePlayer != null)
                  {
                      int killG3 = Minecraft.getMinecraft().thePlayer.getEntityData().getInteger("killG3");
                      if(!Minecraft.getMinecraft().thePlayer.worldObj.isRemote)
                      {
                          killG3++;
                          Minecraft.getMinecraft().thePlayer.getEntityData().setInteger("killG3", killG3);
                      }
                      if(killG3 == 10)
                      {
                          Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG3a);
                      }
                      if(killG3 == 40)
                      {
                          Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG3b);
                      }
                      if(killG3 == 200)
                      {
                          Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG3c);
                      }
                      if(killG3 == 400)
                      {
                          Minecraft.getMinecraft().thePlayer.triggerAchievement(ModPg2.achievementKillG3d);
                      }
                  }            
              }
          }
      
      

      Ls crashs en boucle, ça use.

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

        Salut,
        LivingDeathEvent est un event serveur donc il ne faut pas utiliser les classes clients. (net/minecraft/client/Minecraft est une classe client).
        Pour avoir le joueur qui a tué l’entité living il faut que tu cast EntityPlayer à event.source.getEntity() (après avoir vérifier que event.source.getEntity() est d’instance EntityPlayer, ce qui est déjà le cas dans ton code).

        1 réponse Dernière réponse Répondre Citer 0
        • AymericRedA Hors-ligne
          AymericRed
          dernière édition par

          “Minecraft.getMinecraft().thePlayer != null”
          Cette classe n’est pas incluse dans les serveurs et comme tu l’appelles sur le serveur, ça crash.
          Pour récupérer le joueur uyilises plutôt évent.entity (truc du genre) en vérifiant bie’ si l’entité est un joueur.

          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

          1 réponse Dernière réponse Répondre Citer 0
          • FolganskyF Hors-ligne
            Folgansky Correcteurs
            dernière édition par

            Ce qui donnerait ça?

            package fr.powergame.modpg2.common;
            
            import java.util.Random;
            
            import net.minecraft.client.Minecraft;
            import net.minecraft.entity.DataWatcher;
            import net.minecraft.entity.player.EntityPlayer;
            import net.minecraft.item.ItemStack;
            import net.minecraft.util.EnumChatFormatting;
            import net.minecraftforge.client.event.RenderGameOverlayEvent;
            import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
            import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;
            import net.minecraftforge.event.entity.living.LivingDeathEvent;
            import net.minecraftforge.event.entity.living.LivingFallEvent;
            import net.minecraftforge.event.entity.player.ItemTooltipEvent;
            
            import org.lwjgl.input.Keyboard;
            import org.lwjgl.input.Mouse;
            
            import cpw.mods.fml.common.eventhandler.SubscribeEvent;
            import cpw.mods.fml.common.gameevent.InputEvent;
            import cpw.mods.fml.relauncher.Side;
            import cpw.mods.fml.relauncher.SideOnly;
            
            public class LivingEventHandler
            {
                @SubscribeEvent
                public void onEntityKilled(LivingDeathEvent event)
                {
                    Random rand = new Random();
                    EntityPlayer player = (EntityPlayer) event.source.getEntity();
                    ItemStack stack1 = new ItemStack(ModPg2.itemRandomMunition, 1);
                    ItemStack stack2 = new ItemStack(ModPg2.itemMetadata, 1, 0); //Insigne
                    ItemStack stack3 = new ItemStack(ModPg2.itemMetadata, 1, 1); //Dent
                    ItemStack stack4 = new ItemStack(ModPg2.itemMetadata, 1, 2); //Collier
                    if (event.source.getEntity() instanceof EntityPlayer)
                    {
                        if(!event.entityLiving.worldObj.isRemote && event.entityLiving instanceof EntityMobGangster)
                        {
                            int randInt = rand.nextInt(100);
                            for(int j = 0 ; j < 2; ++j)
                            {
                                if (randInt <= 5)
                                {   // 5/100
                                    event.entityLiving.entityDropItem(stack2, 1);
                                }
                                if (randInt > 5 && randInt <= 15)
                                {   // 10/100
                                    event.entityLiving.entityDropItem(stack4, 1);
                                }
                                if (randInt > 15)
                                {   // 84/100
                                    event.entityLiving.entityDropItem(stack1, 1);
                                }
                            }
                            if(player != null)
                            {
                                int killG1 = player.getEntityData().getInteger("killG1");
                                if(!player.worldObj.isRemote)
                                {
                                    killG1++;
                                    player.getEntityData().setInteger("killG1", killG1);
                                }
                                if(killG1 == 50)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG1a);
                                }
                                if(killG1 == 200)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG1b);
                                }
                                if(killG1 == 1000)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG1c);
                                }
                                if(killG1 == 5000)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG1d);
                                }
                            }
                        }
                        if(!event.entityLiving.worldObj.isRemote && event.entityLiving instanceof EntityMobGangster2)
                        {
                            int randInt = rand.nextInt(100);
                            for(int j = 0 ; j < 2; ++j)
                            {
                                if (randInt == 0)
                                {   // 1/100
                                    event.entityLiving.entityDropItem(stack3, 1);
                                    if(player != null)
                                    {
                                        player.triggerAchievement(ModPg2.achievementDentOr);                        
                                    }
                                }
                                if (randInt > 0 && randInt <= 10)
                                {   // 10/100
                                    event.entityLiving.entityDropItem(stack2, 1);
                                }
                                if (randInt > 5 && randInt <= 15)
                                {   // 10/100
                                    event.entityLiving.entityDropItem(stack4, 1);
                                }
                                if (randInt > 15)
                                {   // 79/100
                                    event.entityLiving.entityDropItem(stack1, 1);
                                }
                            }
                            if(player != null)
                            {
                                int killG2 = player.getEntityData().getInteger("killG2");
                                if(!player.worldObj.isRemote)
                                {
                                    killG2++;
                                    player.getEntityData().setInteger("killG2", killG2);
                                }
                                if(killG2 == 25)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG2a);
                                }
                                if(killG2 == 100)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG2b);
                                }
                                if(killG2 == 500)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG2c);
                                }
                                if(killG2 == 1000)
                                {
                                    player.triggerAchievement(ModPg2.achievementKillG2d);
                                }
                            }
                        }
                        if(!event.entityLiving.worldObj.isRemote && event.entityLiving instanceof EntityMobGangster3)
                        {
                            int randInt = rand.nextInt(100);
                            for(int j = 0 ; j < 2; ++j)
                            {
                                if (randInt <= 2)
                                {   // 3/100
                                    event.entityLiving.entityDropItem(stack3, 1);
                                    if(player != null)
                                    {
                                        player.triggerAchievement(ModPg2.achievementDentOr);                    
                                    }
                                }
                                if (randInt > 2 && randInt <= 12)
                                {   // 10/100
                                    event.entityLiving.entityDropItem(stack2, 1);
                                }
                                if (randInt > 12 && randInt <= 17)
                                {   // 5/100
                                    event.entityLiving.entityDropItem(stack4, 1);
                                }
                                if (randInt > 17)
                                {   // 82/100
                                    event.entityLiving.entityDropItem(stack1, 1);
                                }
                            }
                        }
                        if(player != null)
                        {
                            int killG3 = player.getEntityData().getInteger("killG3");
                            if(!player.worldObj.isRemote)
                            {
                                killG3++;
                                player.getEntityData().setInteger("killG3", killG3);
                            }
                            if(killG3 == 10)
                            {
                                player.triggerAchievement(ModPg2.achievementKillG3a);
                            }
                            if(killG3 == 40)
                            {
                                player.triggerAchievement(ModPg2.achievementKillG3b);
                            }
                            if(killG3 == 200)
                            {
                                player.triggerAchievement(ModPg2.achievementKillG3c);
                            }
                            if(killG3 == 400)
                            {
                                player.triggerAchievement(ModPg2.achievementKillG3d);
                            }
                        }            
                    }
                }
            

            Le player.getEntityData().getInteger(“…”) me fait douter, me demande si je dois pas rajouter un null check qqpart.

            1 réponse Dernière réponse Répondre Citer 0
            • AymericRedA Hors-ligne
              AymericRed
              dernière édition par

              Non ne t’inquiète pas la fonction en créer un nouveau si il est null 🙂

              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                C’est ça, le seul problème c’est que cette ligne :
                EntityPlayer player = (EntityPlayer) event.source.getEntity();
                Doit être à l’intérieur du bloc de cette condition :
                if (event.source.getEntity() instanceof EntityPlayer)
                Sinon tu peux avoir un NPE ou un ClassCastException.

                1 réponse Dernière réponse Répondre Citer 0
                • FolganskyF Hors-ligne
                  Folgansky Correcteurs
                  dernière édition par

                  Ouki merci les gars ^^

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

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB