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

      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
                                  • GabsG Hors-ligne
                                    Gabs
                                    dernière édition par

                                    J’ai fais sa je suis pas trop sur que ça marche…

                                      @SubscribeEvent
                                      public void onPlayerTickEvent(TickEvent.PlayerTickEvent event) {
                                    
                                      if(event.player.worldObj.getTotalWorldTime() % (60 * 20) == 0)
                                      {
                                      ExtendedEntityPropAlcool prop = ExtendedEntityPropAlcool.get(event.player);
                                           prop.setAlcool(prop.getAlcool() - 1);
                                      System.out.println("Test!");
                                      }
                                      }
                                    
                                    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

                                      Normalement ça devrait être bon.
                                      Regardes en jeu si Test ! s’affiche. Si ce n’est pas le cas c’est surement car ta classe n’est pas enregistré avec FMLCommonHandler.instance().bus().register(new NomDeTaClasseD’event());

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

                                        D’acc je vais voir ça, sinon aussi des fois je rencontre quelques problème par exemple: lorsque je bois un verre d’alcool mon niveau d’alcoolémie devrais normalement augmenté que de 1 bah des fois même souvent, il augmente de 2 😕

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

                                          Ouais merci je l’avais enregistré avec MinecraftForge.EVENT_BUS … Par j’ai un soucis le message TEST il me l’envois 4 fois (2 fois server 2 fois clients ) au lieux de 2 fois (1 fois client 1 fois server) .

                                          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

                                            @‘floriangabet’:

                                            D’acc je vais voir ça, sinon aussi des fois je rencontre quelques problème par exemple: lorsque je bois un verre d’alcool mon niveau d’alcoolémie devrais normalement augmenté que de 1 bah des fois même souvent, il augmente de 2 😕

                                            Sûrement un problème client/serveur ajoutes un if(!player.worldObj.isRemote) avant d’exécuter le code qui augmente le niveau d’alcoolémie pour le faire seulement côté serveur.

                                            @‘floriangabet’:

                                            Ouais merci je l’avais enregistré avec MinecraftForge.EVENT_BUS … Par j’ai un soucis le message TEST il me l’envois 4 fois (2 fois server 2 fois clients ) au lieux de 2 fois (1 fois client 1 fois server) .

                                            Ne retire pas la ligne MinecraftForge.EVENT_BUS si tu as aussi des événements Forge dans la classe. Il faut mettre les deux en même temps (c’est un peu confus, en 1.8 ils ont changé ça, MinecraftForge.EVENT_BUS suffit).
                                            Pour le message en quadruple, ajoutes une condition if(event.phase == TickEvent.Phase.END) (l’event est appelé deux fois, au début du tick et à la fin du tick).

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB