MFF

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

    OnItemRightClick sur une entity.

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    125 Messages 8 Publieurs 21.6k 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.
    • GabsG Hors-ligne
      Gabs
      dernière édition par

      J’ai fais comme vous avez dis mais j’ai un problème encore :
      Detected ongoing potential memory leak. 4000 packets have leaked. Top offenders
      [22:36:38] [Client thread/ERROR] [FML]: amm: : 4000
      [22:36:38] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 4100 packets have leaked. Top offenders
      fuite de mémoire …
      Class item:

      public class LIIT extends ItemFood {
      
       AT alcohol = new AT();
      
      public LIIT (int itemID, int i, boolean b)
       {
         super(itemID, i, b);
      
      }
      
       public EnumAction getItemUseAction(ItemStack itemstack)
       {
         return EnumAction.drink;
       }
         public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
         {
             if (player.canEat(true))
             {
                 player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
             }
             return stack;
         }
      
         public int getMaxItemUseDuration(ItemStack stack)
         {
             return 32;
         }
      
         public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
         {
             –stack.stackSize;
             ExtendedEntityPropAlcool prop = ExtendedEntityPropAlcool.get(player);
             prop.setAlcool(prop.getAlcool() + 1);
             player.getFoodStats().addStats(1, 2); // nombre de demi-gigots + saturation
             world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
             player.addPotionEffect(new PotionEffect(Potion.confusion.id, 315,0));
             player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 315,0));
             player.addPotionEffect(new PotionEffect(Potion.hunger.id, 315,0));
             player.addPotionEffect(new PotionEffect(Potion.weakness.id, 315,0));
      
      return stack;
         }
         @Override
       public boolean hasEffect(ItemStack par1ItemStack){
        return true;
       }
      
      }
      
      

      class ExtendedEntity:

      public class ExtendedEntityPropAlcool implements IExtendedEntityProperties {
      
          public final static String EXT_PROP_NAME = "ExtPropAlcool";
          private int alcool = 0;
          private final EntityPlayer player;
      
          public ExtendedEntityPropAlcool(EntityPlayer player) {
                  this.player = player;
      }
      
      @Override
      public void saveNBTData(NBTTagCompound compound) {
                  NBTTagCompound properties = new NBTTagCompound();
      properties.setInteger("alcool", this.alcool);
      compound.setTag(EXT_PROP_NAME, properties);
      }
      
      @Override
      public void loadNBTData(NBTTagCompound compound) {
                  NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
      this.alcool = properties.getInteger("alcool");
      }
      
      @Override
      public void init(Entity entity, World world) {
      // TODO Auto-generated method stub
      
      }
      
          public static final void register(EntityPlayer player) {
      player.registerExtendedProperties(ExtendedEntityPropAlcool.EXT_PROP_NAME,
      new ExtendedEntityPropAlcool(player));
      }
      
      public static final ExtendedEntityPropAlcool get(EntityPlayer player) {
      return (ExtendedEntityPropAlcool) player.getExtendedProperties(EXT_PROP_NAME);
      }
      
          public final void sync() 
          {
      PacketAlcool packetAlcool = new PacketAlcool(this.alcool);
            AltisMineMod.network.sendToServer(packetAlcool);
      
      if (!player.worldObj.isRemote) 
                  {
      EntityPlayerMP playerClient = (EntityPlayerMP) this.player;
      AltisMineMod.network.sendTo(packetAlcool, playerClient);
      }
      }
      
         private static String getSaveKey(EntityPlayer player) {
      return player.getDisplayName() + ":" + EXT_PROP_NAME;
      }
      
      public static void saveProxyData(EntityPlayer player) {
      ExtendedEntityPropAlcool playerData = ExtendedEntityPropAlcool.get(player);
      NBTTagCompound savedData = new NBTTagCompound();
      
      playerData.saveNBTData(savedData);
      CommonProxy.storeEntityData(getSaveKey(player), savedData);
      }
      
      public static void loadProxyData(EntityPlayer player) {
      ExtendedEntityPropAlcool playerData = ExtendedEntityPropAlcool.get(player);
      NBTTagCompound savedData = CommonProxy
      .getEntityData(getSaveKey(player));
      
      if (savedData != null) {
      playerData.loadNBTData(savedData);
      }
      playerData.sync();
      }
      
         public void setAlcool(int taux) {
                 this.alcool = taux;
                 this.sync();
         }
      
         public int getAlcool() {
      this.alcool = 0;
      if (alcool != 0)
      alcool = Math.abs(alcool / 2);
        else if (alcool == 0) {
        alcool = Math.abs(alcool);
        }
                 return this.alcool;
         }
      
      }
      
      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

        public final void sync()
        {
            PacketAlcool packetAlcool = new PacketAlcool(this.alcool);
            AltisMineMod.network.sendToServer(packetAlcool);
        
            if (!player.worldObj.isRemote)
            {
                EntityPlayerMP playerClient = (EntityPlayerMP) this.player;
                AltisMineMod.network.sendTo(packetAlcool, playerClient);
            }
        }
        

        Change en :

        public final void sync()
        {
           PacketAlcool packetAlcool = new PacketAlcool(this.alcool);
           if (!player.worldObj.isRemote)
           {
               EntityPlayerMP playerClient = (EntityPlayerMP) this.player;
               AltisMineMod.network.sendTo(packetAlcool, playerClient);
           }
           else
           {
               AltisMineMod.network.sendToServer(packetAlcool);
           }
        }
        
        1 réponse Dernière réponse Répondre Citer 0
        • GabsG Hors-ligne
          Gabs
          dernière édition par

          Merci problème réglé par conte c’est exactement pareil 0 même lorsque on boit.

          Edit:
          Je suis sur que le problème vient d’ici:

          public int getAlcool() {
          this.alcool = 0;
          if (alcool != 0)
          alcool = Math.abs(alcool / 2);
            else if (alcool == 0) {
            alcool = Math.abs(alcool);
            }
                     return this.alcool;
             }
          
          }
          
          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

            Mets directement return this.alcool;

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

              "Je comprend pas pourquoi ça renvoie toujours 0 … : "
              public int getAlcool() {
              this.alcool = 0;

              xD

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

                pareil marche toujours pas 😕

                1 réponse Dernière réponse Répondre Citer -1
                • GabsG Hors-ligne
                  Gabs
                  dernière édition par

                  Quelqu’un ?

                  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

                    Renvoies ton code actuel.

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

                      package com.AltisMine.mod;
                      
                      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                      import net.minecraft.entity.Entity;
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.entity.player.EntityPlayerMP;
                      import net.minecraft.nbt.NBTTagCompound;
                      import net.minecraft.world.World;
                      import net.minecraftforge.common.IExtendedEntityProperties;
                      import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;
                      
                      public class ExtendedEntityPropAlcool implements IExtendedEntityProperties {
                      
                          public final static String EXT_PROP_NAME = "ExtPropAlcool";
                          private int alcool = 0;
                          private final EntityPlayer player;
                      
                          public ExtendedEntityPropAlcool(EntityPlayer player) {
                                  this.player = player;
                      }
                      
                      @Override
                      public void saveNBTData(NBTTagCompound compound) {
                                  NBTTagCompound properties = new NBTTagCompound();
                      properties.setInteger("alcool", this.alcool);
                      compound.setTag(EXT_PROP_NAME, properties);
                      }
                      
                      @Override
                      public void loadNBTData(NBTTagCompound compound) {
                                  NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
                      this.alcool = properties.getInteger("alcool");
                      }
                      
                      @Override
                      public void init(Entity entity, World world) {
                      // TODO Auto-generated method stub
                      
                      }
                      
                          public static final void register(EntityPlayer player) {
                      player.registerExtendedProperties(ExtendedEntityPropAlcool.EXT_PROP_NAME,
                      new ExtendedEntityPropAlcool(player));
                      }
                      
                      public static final ExtendedEntityPropAlcool get(EntityPlayer player) {
                      return (ExtendedEntityPropAlcool) player.getExtendedProperties(EXT_PROP_NAME);
                      }
                      
                      public final void sync() 
                      {
                         PacketAlcool packetAlcool = new PacketAlcool(this.alcool);
                         if (!player.worldObj.isRemote) 
                         {
                             EntityPlayerMP playerClient = (EntityPlayerMP) this.player;
                             AltisMineMod.network.sendTo(packetAlcool, playerClient);
                         }
                         else
                         {
                             AltisMineMod.network.sendToServer(packetAlcool);
                         }
                      }
                      
                         private static String getSaveKey(EntityPlayer player) {
                      return player.getDisplayName() + ":" + EXT_PROP_NAME;
                      }
                      
                      public static void saveProxyData(EntityPlayer player) {
                      ExtendedEntityPropAlcool playerData = ExtendedEntityPropAlcool.get(player);
                      NBTTagCompound savedData = new NBTTagCompound();
                      
                      playerData.saveNBTData(savedData);
                      CommonProxy.storeEntityData(getSaveKey(player), savedData);
                      }
                      
                      public static void loadProxyData(EntityPlayer player) {
                      ExtendedEntityPropAlcool playerData = ExtendedEntityPropAlcool.get(player);
                      NBTTagCompound savedData = CommonProxy
                      .getEntityData(getSaveKey(player));
                      
                      if (savedData != null) {
                      playerData.loadNBTData(savedData);
                      }
                      playerData.sync();
                      }
                      
                         public void setAlcool(int taux) {
                                 this.alcool = taux;
                                 this.sync();
                         }
                      
                         public int getAlcool() {
                      this.alcool = 0;
                      if (alcool != 0)
                      alcool = Math.abs(alcool / 2);
                        else if (alcool == 0) {
                        alcool = Math.abs(alcool);
                        }
                      
                        return this.alcool;
                      
                         }
                      
                      }
                      

                      Class bouteille d’alcool:

                      package com.AltisMine.mod;
                      
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.item.EnumAction;
                      import net.minecraft.item.ItemFood;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.potion.Potion;
                      import net.minecraft.potion.PotionEffect;
                      import net.minecraft.world.World;
                      
                      public class LIIT extends ItemFood {
                      
                       AT alcohol = new AT();
                      
                      public LIIT (int itemID, int i, boolean b)
                       {
                         super(itemID, i, b);
                      
                      }
                      
                       public EnumAction getItemUseAction(ItemStack itemstack)
                       {
                         return EnumAction.drink;
                       }
                         public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                         {
                             if (player.canEat(true))
                             {
                                 player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
                             }
                             return stack;
                         }
                      
                         public int getMaxItemUseDuration(ItemStack stack)
                         {
                             return 32;
                         }
                      
                         public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
                         {
                             –stack.stackSize;
                             ExtendedEntityPropAlcool prop = ExtendedEntityPropAlcool.get(player);
                             prop.setAlcool(prop.getAlcool() + 1);
                             player.getFoodStats().addStats(1, 2); // nombre de demi-gigots + saturation
                             world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
                             player.addPotionEffect(new PotionEffect(Potion.confusion.id, 315,0));
                             player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 315,0));
                             player.addPotionEffect(new PotionEffect(Potion.hunger.id, 315,0));
                             player.addPotionEffect(new PotionEffect(Potion.weakness.id, 315,0));
                      
                      return stack;
                         }
                         @Override
                       public boolean hasEffect(ItemStack par1ItemStack){
                        return true;
                       }
                      
                      }
                      
                      
                      1 réponse Dernière réponse Répondre Citer 0
                      • Snowy_1803S Hors-ligne
                        Snowy_1803
                        dernière édition par

                        Le getAlcool tu mets juste return alcool, c’est tout ! Pourquoi tout ce code ?

                        Moddeur 1.8

                        Développeur Java

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

                          J’essaye ça je vous dis

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

                            @‘Snowy_1803’:

                            Le getAlcool tu mets juste return alcool, c’est tout ! Pourquoi tout ce code ?

                            Surtout que Robin le lui a déjà dit de mettre return this.alcool (et il l’a pas fait)

                            @‘robin4002’:

                            Mets directement return this.alcool;

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

                              Niquel merci

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

                                Juste une dernière question si je veux faire baisser le niveau d’alcoolémie de 1 au bout de 15 minutes je dois faire comment ?

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

                                  TickHandler avec la variable getTotalWorldTime() + modulo

                                  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

                                    TickEvent.PlayerTickEvent*
                                    L’interface ITickHandler n’existe plus depuis la 1.7

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

                                      J’ai trouvais ça sur internet je dois définir le nombre de tick comment?

                                      @SubscribeEvent
                                      public void onPlayerTickEvent(TickEvent.PlayerTickEvent event) {
                                          if (event.phase == TickEvent.Phase.START && !event.player.worldObj.isRemote) {
                                              IExtendedEntityProperties properties = event.player.getExtendedProperties(PlayerExtendedProperties.ID);
                                              if (properties instanceof PlayerExtendedProperties) {
                                                  PlayerExtendedProperties playerExtendedProperties = (PlayerExtendedProperties) properties;
                                                  playerExtendedProperties.tick();
                                              }
                                              properties = event.player.getExtendedProperties(PlayerPreferencesProperties.ID);
                                              if (properties instanceof PlayerPreferencesProperties) {
                                                  PlayerPreferencesProperties preferencesProperties = (PlayerPreferencesProperties) properties;
                                                  preferencesProperties.tick(RFToolsMessages.INSTANCE);
                                              }
                                          }
                                      }
                                      
                                      1 réponse Dernière réponse Répondre Citer 0
                                      • DeletedD Hors-ligne
                                        Deleted
                                        dernière édition par

                                        Le nombre de tick à la seconde est déjà défini.
                                        Ton code va logiquement crash car worldObj sera null lorsque le menu principal sera ouvert.
                                        Du coup null-check pour le world et pour faire vérifier un code tous les x nbre de tick, c’est comme ça

                                        
                                        if(event.player.worldObj.getTotalWorldTime() % (nbreDeSecondes * 20) == 0
                                        {
                                        System.out.println("ton code à exécuter avec ton ExtProp");
                                        }
                                        
                                        
                                        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

                                          PlayerTickEvent n’est que appelé en jeu, donc normalement event.player.worldObj ne sera jamais nul. Pas besoin de null check.

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

                                            Ok je reverrai mes sources la prochaine fois 😉

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 3 / 7
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB