MFF

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

    Système de gravité inversé

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    13 Messages 3 Publieurs 2.3k 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.
    • AmelyaA Hors-ligne
      Amelya
      dernière édition par

      Bonjour à tous je cherche à créer un  système avec différentes plumes et durabilité
      exemples:
      plume niv 1 :dure 5 sec
      plume niv 2 :30sec
      plume niv 3:2min
      plume niv 4:5min
      plume niv 5:10 min
      plume renforcée: pas de durabilité
      plume de vol : voler comme en créa pendant 2 min

      avec ces plumes on ne pourra pas voler ais faire un peu comme la 1.9 a chaque clic on monte dans le ciel et si on atterit de trop haut on  meurt

      est ce possible de faire cela ? car je ne pense pas mais ce serait intéressant merci d’avance 😉

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

        Il faut que tu dises à l’entity player qui tient l’item qu’il est en train de voler (je pense qu’il y a une boolean isFly ou une fonction setFly/setFlying mais pas sur) dans la fonction onItemRightClick de ton item, et dans un event déclenché quand l’entité du joueur est update (PlayerTickEvent) (cf le tuto des events du forum), tu fais player.motionY += ceQueTuveux si il tient l’item et qu’il l’a activé (tu peux faire un int qui est enregistré dans les tags de l’item stack que tient le joueur comme compteur).

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

          je vois ce que tu veux dire mais je n’y arrive pas peut tu me montrer l’exemple avec la première par exemple ? se serait ggénial merci ^^

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

            Je te montre ça demain ou ce soir

            Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

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

              pas de probleme ^^

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

                j’ai essayer encore mais je n’y arrive toujours pas ^^ je vois pas comment faire mais je comprends le principe sa m’aiderai beaucoup si au moins un objet été coder que je comprene le truc pour en faire d’autre apres

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

                  Alors dans la fonction onItemRigthClick (que tu peux obtenir en faisant ctrl+espace dans la classe de ton item puis en tapant son nom car je ne connais pas ses arguments en 1.7.10) :

                  NBTTagCompound tag = stack.getTagCompound();
                  if(tag == null)
                  {
                  tag = new NBTTagCompound();
                  stack.setTagCompoundTag(tag);
                  }
                  int duration = tag.getInteger("FlyCounter");
                  if(duration <= 0)
                  {
                  tag.setInteger("FlyCounter", laDureeEnTicksDeTonEffet); //Tu enregistres la durée de ton effet pour pouvoir la conserver
                  }
                  

                  Puis dans ta classe d’event (à créer si tu n’en a pas), tu fais l’event [size=smallPlayerTickEvent] qui sera appelé dès qu’un joueur est update :

                  @SubscribeEvent
                  public void onPlayerUpdate([size=smallPlayerTickEvent event)]
                  {
                  if(!event.player/*player ou getPlayer() ou entity ou getEntity*/.getWorld().isRemote)//Si on est sur le serveur
                  {
                  ItemStack stack = event.player/*player ou getPlayer() ou entity ou getEntity*/.getHeldItem();
                  if(stack != null)//Si le joueur tient quelque chose
                  {
                  if(stack.getItem() == tonItemPourFly)
                  {
                  NBTTagCompound tag = stack.getTagCompound();
                  if(tag != null)
                  {
                  int flyDuration = tag.getInteger("FlyCounter");
                  if(flyDuration > 0) //Si l'effet est en cours
                  {
                  event.player/*player ou getPlayer() ou entity ou getEntity*/.motionY += laHauteurQueTuSouhaites;
                  tag.setInteger("FlyCounter", flyDuration–); //Tu diminues le compteur
                  }
                  }
                  }
                  }
                  }
                  }
                  

                  Puis enfin tu enregistres ta classe d’event pour que les events qui sont dedans soient appelés par Forge :

                  [size=x-smallFMLCommonHandler.bus().register(new TaClassD'event();]
                  ``` à mettre dans ta classe principale dans la fonction init par exemple.
                  
                  Si il y a une erreur ou quelque chose que tu ne comprend pas quelque part, hésite pas :)
                  
                  Petite précision, après avoir écrit tout ça, je me dis que par contre il faut que le joueur continue à tenir l'item pour voler, si ça te gène dis-le, je regarderais pour enregistrer la durée de vol autre part que dans les tags de l'item.

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

                    je n’ai pas d’erreur mais ne marche pas en jeu j’ai du me tromper quelque part ^^

                    :::

                    package fr.amelya.modelia.common;
                    
                    import cpw.mods.fml.common.FMLCommonHandler;
                    import cpw.mods.fml.common.Mod;
                    import cpw.mods.fml.common.Mod.EventHandler;
                    import cpw.mods.fml.common.Mod.Instance;
                    import cpw.mods.fml.common.SidedProxy;
                    import cpw.mods.fml.common.event.FMLInitializationEvent;
                    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
                    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
                    import cpw.mods.fml.common.registry.GameRegistry;
                    import fr.amelya.modelia.common.blocs.EliaOre;
                    import fr.amelya.modelia.common.items.EliaIngot;
                    import fr.amelya.modelia.proxy.CommonProxy;
                    import net.minecraft.block.Block;
                    import net.minecraft.block.material.Material;
                    import net.minecraft.item.Item;
                    import net.minecraftforge.common.MinecraftForge;
                    
                    @Mod(modid = "modelia", name = "Elia", version = "1.0.0")
                    
                    public class Modelia
                    {
                    @Instance("modelia")
                    public static Modelia instance;
                    public static final String MODID = "modelia";
                    
                    @SidedProxy(clientSide = "fr.amelya.modelia.proxy.ClientProxy", serverSide = "fr.amelya.modelia.proxy.CommonProxy")
                    public static CommonProxy proxy;
                    
                    public static Item EliaIngot;
                    public static Block EliaOre;
                    @EventHandler
                    public void preInit(FMLPreInitializationEvent event)
                    {
                    EliaIngot = new EliaIngot().setUnlocalizedName("eliaingot").setTextureName(Modelia.MODID + ":elia_ingot");
                    
                    EliaOre = new EliaOre(Material.rock).setBlockName("eliaore").setBlockTextureName(Modelia.MODID + ":elia_ore");
                    
                    GameRegistry.registerItem(EliaIngot, "elia_ingot");
                    
                    GameRegistry.registerBlock(EliaOre, "elia_ore");
                    
                    FMLCommonHandler.instance().bus().register(new PlayerEventHandler());
                    MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());
                    
                    }
                    
                    @EventHandler
                    public void init(FMLInitializationEvent event)
                    {
                    proxy.registerRender();
                    }
                    
                    @EventHandler
                    public void postInit(FMLPostInitializationEvent event)
                    {
                    
                    }
                    
                    }
                    
                    

                    :::

                    :::

                    package fr.amelya.modelia.common;
                    
                    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                    import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
                    import net.minecraft.item.ItemStack;
                    import net.minecraft.nbt.NBTTagCompound;
                    
                    public class PlayerEventHandler
                    {
                    @SubscribeEvent
                    public void onPlayerUpdate(PlayerTickEvent event)
                    {
                    if(!event.player/* player ou getPlayer() ou entity ou getEntity */.getEntityWorld().isRemote)// Si on est sur le serveur
                    {
                    ItemStack stack = event.player/* player ou getPlayer() ou entity ou getEntity */.getHeldItem();
                    if(stack != null)// Si le joueur tient quelque chose
                    {
                    if(stack.getItem() == Modelia.EliaIngot)
                    {
                    NBTTagCompound tag = stack.getTagCompound();
                    if(tag != null)
                    {
                    int flyDuration = tag.getInteger("FlyCounter");
                    if(flyDuration > 0) // Si l'effet est en cours
                    {
                    event.player/* player ou getPlayer() ou entity ou getEntity */.motionY += 10;
                    tag.setInteger("FlyCounter", flyDuration–); // Tu diminues le compteur
                    }
                    }
                    }
                    }
                    }
                    }
                    }
                    
                    

                    :::

                    :::

                    package fr.amelya.modelia.common.items;
                    
                    import net.minecraft.creativetab.CreativeTabs;
                    import net.minecraft.entity.player.EntityPlayer;
                    import net.minecraft.item.Item;
                    import net.minecraft.item.ItemStack;
                    import net.minecraft.nbt.NBTTagCompound;
                    import net.minecraft.world.World;
                    
                    public class EliaIngot extends Item
                    {
                    public EliaIngot()
                    {
                    this.setCreativeTab(CreativeTabs.tabMaterials);
                    }
                    
                    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                    {
                    
                    NBTTagCompound tag = stack.getTagCompound();
                    if(tag == null)
                    {
                    tag = new NBTTagCompound();
                    stack.setTagCompound(tag);
                    }
                    int duration = tag.getInteger("FlyCounter");
                    if(duration <= 0)
                    {
                    tag.setInteger("FlyCounter", 100); // Tu enregistres la durée de ton effet pour pouvoir la conserver
                    }
                    return stack;
                    
                    }
                    }
                    
                    

                    :::

                    j’ai mis sa sur un lingot en attendant la fleme de crer lobjet pour l’instant je le ferai quand sa marchera

                    merci de ton aide pour trouver l’erreur

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

                      je n’ai pas d’erreur mais ne marche pas en jeu j’ai du me tromper quelque part ^^

                      :::

                      package fr.amelya.modelia.common;
                      
                      import cpw.mods.fml.common.FMLCommonHandler;
                      import cpw.mods.fml.common.Mod;
                      import cpw.mods.fml.common.Mod.EventHandler;
                      import cpw.mods.fml.common.Mod.Instance;
                      import cpw.mods.fml.common.SidedProxy;
                      import cpw.mods.fml.common.event.FMLInitializationEvent;
                      import cpw.mods.fml.common.event.FMLPostInitializationEvent;
                      import cpw.mods.fml.common.event.FMLPreInitializationEvent;
                      import cpw.mods.fml.common.registry.GameRegistry;
                      import fr.amelya.modelia.common.blocs.EliaOre;
                      import fr.amelya.modelia.common.items.EliaIngot;
                      import fr.amelya.modelia.proxy.CommonProxy;
                      import net.minecraft.block.Block;
                      import net.minecraft.block.material.Material;
                      import net.minecraft.item.Item;
                      import net.minecraftforge.common.MinecraftForge;
                      
                      @Mod(modid = "modelia", name = "Elia", version = "1.0.0")
                      
                      public class Modelia
                      {
                        @Instance("modelia")
                        public static Modelia instance;
                        public static final String MODID = "modelia";
                      
                        @SidedProxy(clientSide = "fr.amelya.modelia.proxy.ClientProxy", serverSide = "fr.amelya.modelia.proxy.CommonProxy")
                        public static CommonProxy proxy;
                      
                        public static Item EliaIngot;
                        public static Block EliaOre;
                        @EventHandler
                        public void preInit(FMLPreInitializationEvent event)
                        {
                            EliaIngot = new EliaIngot().setUnlocalizedName("eliaingot").setTextureName(Modelia.MODID + ":elia_ingot");
                      
                            EliaOre = new EliaOre(Material.rock).setBlockName("eliaore").setBlockTextureName(Modelia.MODID + ":elia_ore");
                      
                            GameRegistry.registerItem(EliaIngot, "elia_ingot");
                      
                            GameRegistry.registerBlock(EliaOre, "elia_ore");
                      
                            FMLCommonHandler.instance().bus().register(new PlayerEventHandler());
                            MinecraftForge.EVENT_BUS.register(new PlayerEventHandler());
                      
                        }  
                      
                        @EventHandler
                        public void init(FMLInitializationEvent event)
                        {
                            proxy.registerRender();
                        }
                      
                        @EventHandler
                        public void postInit(FMLPostInitializationEvent event)
                        {
                      
                        }
                      
                      }
                      
                      

                      :::

                      :::

                      package fr.amelya.modelia.common;
                      
                      import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                      import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.nbt.NBTTagCompound;
                      
                      public class PlayerEventHandler
                      {
                        @SubscribeEvent
                        public void onPlayerUpdate(PlayerTickEvent event)
                        {
                            if(!event.player/* player ou getPlayer() ou entity ou getEntity */.getEntityWorld().isRemote)// Si on est sur le serveur
                            {
                                ItemStack stack = event.player/* player ou getPlayer() ou entity ou getEntity */.getHeldItem();
                                if(stack != null)// Si le joueur tient quelque chose
                                {
                                    if(stack.getItem() == Modelia.EliaIngot)
                                    {
                                        NBTTagCompound tag = stack.getTagCompound();
                                        if(tag != null)
                                        {
                                            int flyDuration = tag.getInteger("FlyCounter");
                                            if(flyDuration > 0) // Si l'effet est en cours
                                            {
                                                event.player/* player ou getPlayer() ou entity ou getEntity */.motionY += 10;
                                                tag.setInteger("FlyCounter", flyDuration–); // Tu diminues le compteur
                                            }
                                        }
                                    }
                                }
                            }
                        }
                      }
                      
                      

                      :::

                      :::

                      package fr.amelya.modelia.common.items;
                      
                      import net.minecraft.creativetab.CreativeTabs;
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.item.Item;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.nbt.NBTTagCompound;
                      import net.minecraft.world.World;
                      
                      public class EliaIngot extends Item
                      {
                        public EliaIngot()
                        {
                            this.setCreativeTab(CreativeTabs.tabMaterials);
                        }
                      
                        public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                        {
                      
                            NBTTagCompound tag = stack.getTagCompound();
                            if(tag == null)
                            {
                                tag = new NBTTagCompound();
                                stack.setTagCompound(tag);
                            }
                            int duration = tag.getInteger("FlyCounter");
                            if(duration <= 0)
                            {
                                tag.setInteger("FlyCounter", 100); // Tu enregistres la durée de ton effet pour pouvoir la conserver
                            }
                            return stack;
                      
                        }
                      }
                      
                      

                      :::

                      j’ai mis sa sur un lingot en attendant la fleme de crer lobjet pour l’instant je le ferai quand sa marchera

                      merci de ton aide pour trouver l’erreur

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

                        Alors il va falloir mettre des System.out.println un peu partout dans ta fonction onPlayerUpdate pour voir où ça bloque (appelé 20fois par secondes donc t’aura une console bien remplie).

                        Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

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

                          apeler 20 fois par seconde ? et mettre sa dans la classe objet ou event ?

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

                            La classe objet ? C’est quoi ?

                            Met le dans l’event pour voir si tout ton code est appelé

                            Site web contenant mes scripts : http://SCAREXgaming.github.io

                            Pas de demandes de support par MP ni par skype SVP.
                            Je n'accepte sur skype que l…

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

                              c’est l’item qui sert a faire voller ici un lingot (pour le test) et merci je testerai sa

                              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