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

Créer des effets de potions

Autres
1.7.x
11
36
14.7k
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.
  • Ama
    Ama dernière édition par robin4002 29 nov. 2021, 00:57 30 oct. 2014, 16:16

    Sommaire

    • Introduction
    • Pré-requis
    • Code
      • Classe CustomPotion
      • Classe Principale
    • Bonus
    • Résultat
    • Crédits

    Introduction

    Yellow à tous ! Je reviens parmi vous pour vous faire un petit tutoriel fort sympathique !
    Et ce, pour créer des effets de potions customs ! Et seulement des effets de potion, pas la potion !
    Bonne lecture !

    Pré-requis

    • Créer la base de votre mod
    • Une goutte d’Eclipse, un zeste de Java et une pincée de temps !

    Code

    Classe CustomPotion :

    Commençons par créer la classe CustomPotion.java que nous extendrons Potion.java
    Et voilà ce que ça nous donne:

    import net.minecraft.potion.Potion;
    public class CustomPotion extends Potion {
    protected CustomPotion(int p_i1573_1_, boolean p_i1573_2_, int p_i1573_3_){
    super(p_i1573_1_, p_i1573_2_, p_i1573_3_);
    }
    }

    Vu que p_i1573_1_, p_i1573_2_, p_i1573_3_ a relativement un effet vomitif sur mes yeux nous allons changer ça en ID, isBadEffectOrNot, color

    Ce qui sera tout de suite plus lisible et plus compréhensible

    import net.minecraft.potion.Potion;
    public class CustomPotion extends Potion{
    protected CustomPotion(int id, boolean isBadEffectOrNot, int color, String name) {
    super(id, isBadEffectOrNot, color);
    }
    }

    Dans le constructeur ajoutons la fonction pour définir le nom de nos futurs effets de potions !
    Voilà pourquoi le petit String name est parmi nous, pour nous simplifier la vie !

    this.setPotionName("potion." + name);
    

    Ensuite dans la classe il va falloir rajouter 3 fonctions, qui sont les suivantes:

    @Override
    public CustomPotion setIconIndex(int x, int y)
    {
    super.setIconIndex(x, y);
    return this;
    }
    public static void loadEffects()
    {
    }
    public static void register()
    {
    }

    Bien, passons maintenant au vif du sujet en ce qui concerne la création de nos effets de potions !

    Entre le constructeur et le début de la classe il nous faut déclarer deux choses:

    • L’effet de potion
    • L’ID de ce dernier

    Pour ce faire rien de plus simple !

    public static CustomPotion customEffect;
    public static int customEffectID;

    Ces deux petits bouts de lignes nous servent à créer la potion en elle même (elle est prête à être créée à ce stade) et l’autre à lui définir un ID

    Passons à la deuxième fonction “loadEffects()”

    et ajoutons ce code que je vous ai préparé !

    customEffect = new CustomPotion(customEffectID, true, Color.red.getRGB(), "customEffectDeFifou").setIconIndex(4, 2);
    

    Et expliquons tout ça !
    D’une certaine manière cela ressemble à la création d’un bloc ou d’un objet basique ! C’est cool non ?

    customEffectID = l’ID de notre effet de potion
    true = (isBadEffectOrNot) traduction Malus ou Bonus ?
    ici c’est un Malus en true et si c’est false c’est un Bonus !
    La différence entre les deux ? À vous de voir ! Tout le reste passe par des events !
    Color.red.getRGB() = La couleur des particules de potion une fois sur vous
    “customEffectDeFifou” = Le nom de la potion dans l’inventaire (L’effet toujours ! Nous ne créons pas d’item potion !)
    .setIconIndex(4, 2); = Ajoute une petit icône à votre effet de potion, pour ce faire il faut modifier l’image “inventory.png” qui ce trouve dans la version de minecraft .jar “assets/gui/inventory.png”
    Moi je fait comme ça en tout cas, il y a sans doute une autre solution, mais je ne la connais pas 😕

    Et pour “terminer” dans la classe CustomPotion il faut enregistrer notre potion !

    Allez dans la fonction “register()” et ajoutez

    CustomPotion.potionTypes[customEffect.getId()] = customEffect;
    

    Pour faire simple:

    On get le type de potion que nous avons fait, plus précisément sont ID (/!\ Pas customEffectID nous ne l’avons pas définie encore), puis on l’attribue à notre effet de potion !

    Et nous avons terminé la partie où nous créons notre effet de potion !
    Mais il manque 2 / 3 trucs encore ! Et il faut aller dans la classe principale !

    Classe Principale :

    Bien, définissons un ID à notre potion !

    Dans la fonction “preInit” (Pré-Initialisation), ajoutez ceci:

    CustomPotion.customEffectID = 30;

    Il faut que l’ID soit supérieur à 24 et inférieur à 32 sinon votre jeu crashera !
    Ce qui vous laisse la possibilité de créer …8 effets de potions…

    C’est NUL ! REMBOURSÉ ! REMBOURSÉ !

    Petite aparté…

    La classe Potion.java est comme l’ancienne classe Block.java il faut passer par des ID pour créer notre effet, mais, car il y a toujours un MAIS, seulement 32 slots sont réservés pour les potions ! Ce qui nous laisse pas énormément de possibilités !
    La seule solution serait de passer par l’ASM et de modifier cette valeur, mais là encore je ne suis pas sûr de mes dires !
    A confirmer…

    Il vous faut encore ajouter deux choses !
    Dans la fonction “init” (Initialisation)

    CustomPotion.loadEffects();
    CustomPotion.register();

    Et voilà notre effet de potion est prêt ! Mais le mieux est de faire en sorte que si notre effet est actif par exemple notre joueur aille plus vite ? Et pour faire ce genre de modification sur le joueur, moi je passe par les events !

    Bonus

    Comment faire pour que notre joueur aille plus vite si il a l’effet de potion actif ?

    GROS INDICE:

    if(event.entityLiving instanceof EntityPlayer)
    {
    if (event.entityLiving.isPotionActive(BOTIEffect.superPowersFlash))
    {
    if (event.entityLiving.getActivePotionEffect(BOTIEffect.superPowersFlash).getDuration() == 0)
    {
    event.entityLiving.removePotionEffect(BOTIEffect.superPowersFlash.id);
    return;
    }
    if (event.entityLiving.worldObj.isRemote)
    {
    if(event.entityLiving.onGround)
    {
    event.entityLiving.motionX *= 1.6F;
    event.entityLiving.motionZ *= 1.6F;
    }
    }
    }
    }

    Je ne vous dirais pas quel event utiliser, car là j’en ai trop dit ! À vous de trouver !

    Résultat

    Fichiers .lang

    en_US.lang:

    potion.customEffectDeFifou=Custom Effect
    

    fr_FR.lang:

    potion.customEffectDeFifou=Effet Custom
    

    Dans l’inventaire :

    Les particules sont rouges :

    Crédits

    Rédaction :

    • ZeAmateis

    Correction :

    • Fine33

    Creative Commons
    Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

    retourRetour vers le sommaire des tutoriels

    Si je t'ai filé un coup de main n'oublie pas le + / -
    Par contre évite les demandes d'aides en MP, tu sera sympa'

    La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

    Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

    1 réponse Dernière réponse Répondre Citer 0
    • Diangle
      Diangle dernière édition par 30 oct. 2014, 21:34

      Tu ne développe pas assez, je te demande une chose dure mais pourquoi pas montrer les craft de potion (j’ai mis au moins un mois a comprendre c’est très dure) ? Et développer un peux avec les attributs… Sinon très bon tutoriel et quand je dit développer je veux dire montrer comment changé des attributs, modifier la vue… Et il y a deux ou trois autre fonction cool, si tu peux les expliquer.

      1 réponse Dernière réponse Répondre Citer 0
      • Fine33
        Fine33 dernière édition par 2 nov. 2014, 12:58

        Sauf erreur de ma part, il a écrit que ce n’est que les effets de potion, pas les potions en elles-mêmes 😉

        Mes mods :

        Agriculcraft

        #L'âge ne fait pas le mod.(L'âge ne fait pas le mod.)

        1 réponse Dernière réponse Répondre Citer 0
        • pulgan
          pulgan dernière édition par 2 nov. 2014, 13:25

          les modifications de l’ath sont provoquer par l’effet de la potion d’après mon point de vue

          1 réponse Dernière réponse Répondre Citer 0
          • Ama
            Ama dernière édition par 2 nov. 2014, 14:14

            @‘Fine33’:

            Sauf erreur de ma part, il a écrit que ce n’est que les effets de potion, pas les potions en elles-mêmes 😉

            Oui ce n’est que les effets de potions car je trouve que cela reste simple de créer un item potion et de faire en sorte d’addPotionEffect

            Envoyé depuis mon Android edition by sfr STARADDICT avec Tapatalk

            Si je t'ai filé un coup de main n'oublie pas le + / -
            Par contre évite les demandes d'aides en MP, tu sera sympa'

            La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

            Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

            1 réponse Dernière réponse Répondre Citer 0
            • Fine33
              Fine33 dernière édition par 2 nov. 2014, 14:48

              Oui, je répondais à Diangle 😉

              Mes mods :

              Agriculcraft

              #L'âge ne fait pas le mod.(L'âge ne fait pas le mod.)

              1 réponse Dernière réponse Répondre Citer 0
              • pulgan
                pulgan dernière édition par 2 nov. 2014, 15:23

                tu peut le faire en partie bonus sa fait plus de contenu

                1 réponse Dernière réponse Répondre Citer 0
                • sosoh
                  sosoh dernière édition par 15 nov. 2014, 11:16

                  Je trouves pas pour le bonus… Help Please

                  Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                  1 réponse Dernière réponse Répondre Citer 0
                  • sosoh
                    sosoh dernière édition par 17 nov. 2014, 20:49

                    Up, tu peux dire comment rajouter des effets autres que speed par exmple pour fusionner 2 effets de potion sous un autre nom etc… Ou comment créer des effets completement customs ?

                    Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                    1 réponse Dernière réponse Répondre Citer 0
                    • P
                      Portuar dernière édition par 17 nov. 2014, 21:40

                      #event tu mes un if(l effet est actif) et tu fais ce que tu veux a l intérieur c est pas sorcier !

                      1 réponse Dernière réponse Répondre Citer 0
                      • sosoh
                        sosoh dernière édition par 17 nov. 2014, 21:43

                        Je peux débuter non ?

                        Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                        1 réponse Dernière réponse Répondre Citer 0
                        • pulgan
                          pulgan dernière édition par 17 nov. 2014, 21:47

                          @‘sosoh’:

                          Je peux débuter non ?

                          Bah Va voir un tuto sur java car c’est la base

                          1 réponse Dernière réponse Répondre Citer 0
                          • sosoh
                            sosoh dernière édition par 17 nov. 2014, 21:56

                            @‘pulganr’:

                            @‘sosoh’:

                            Je peux débuter non ?

                            Bah Va voir un tuto sur java car c’est la base

                            Mais je ne maitrise pas les events encore c’est pour ca… D’ailleurs j’ai toujours pas trouvé… Je cherche dans toutes les classes des events mais je ne trouves pas l’event pour savoir si un joueur a un effet de potion…

                            Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                            1 réponse Dernière réponse Répondre Citer 0
                            • sosoh
                              sosoh dernière édition par 17 nov. 2014, 22:27

                              Tu peux m’aider, j’ai créer une classe avec mon event:

                              package com.harrypotter.sosoh.common;
                              import net.minecraft.entity.player.EntityPlayer;
                              import net.minecraft.entity.player.EntityPlayerMP;
                              import cpw.mods.fml.common.gameevent.TickEvent;
                              import cpw.mods.fml.common.gameevent.TickEvent.Phase;
                              import cpw.mods.fml.common.gameevent.TickEvent.Type;
                              import cpw.mods.fml.relauncher.Side;
                              public class EventHandler {
                                  public static class PlayerTickEvent extends TickEvent {
                                      public final EntityPlayer player;
                                      public PlayerTickEvent(Phase phase, EntityPlayer player)
                                      {
                                          super(Type.PLAYER, player instanceof EntityPlayerMP ? Side.SERVER : Side.CLIENT, phase);
                                          this.player = player;
                                      }
                                  }
                              }

                              Mais je ne trouves pas comment checker si le joueur a mon effet… J’ai essaye avec ca mais ca ne marche pas:

                              package com.harrypotter.sosoh.common;
                              import net.minecraft.entity.player.EntityPlayer;
                              import net.minecraft.entity.player.EntityPlayerMP;
                              import cpw.mods.fml.common.gameevent.TickEvent;
                              import cpw.mods.fml.common.gameevent.TickEvent.Phase;
                              import cpw.mods.fml.common.gameevent.TickEvent.Type;
                              import cpw.mods.fml.relauncher.Side;
                              public class EventHandler {
                                  public static class PlayerTickEvent extends TickEvent {
                                      public final EntityPlayer player;
                                      public PlayerTickEvent(Phase phase, EntityPlayer player)
                                      {
                                          super(Type.PLAYER, player instanceof EntityPlayerMP ? Side.SERVER : Side.CLIENT, phase);
                                          this.player = player;
                                          if player.getActivePotionEffect(SomniferePotionEffect){
                                          }
                                      }
                                  }
                              }

                              Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                              1 réponse Dernière réponse Répondre Citer 0
                              • sosoh
                                sosoh dernière édition par 18 nov. 2014, 16:58

                                S’il vous plait je galere je ne trouves pas 😢

                                Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                                1 réponse Dernière réponse Répondre Citer 0
                                • P
                                  Portuar dernière édition par 18 nov. 2014, 17:17

                                  C est cette ligne

                                  ​
                                  1. if (event.entityLiving.isPotionActive(BOTIEffect.superPowersFlash))
                                  1 réponse Dernière réponse Répondre Citer 0
                                  • sosoh
                                    sosoh dernière édition par 18 nov. 2014, 17:27

                                    Ah ok merci! J’etais bloqué et tu me rend extrêmement service 🙂

                                    Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • robin4002
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 18 nov. 2014, 17:57

                                      Déjà tu devais lire le tutoriel sur les event car le code que tu as mit ne risque pas du tout de fonctionner …
                                      Et 24h entre chaque message, merci de respecter le règlement.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • sosoh
                                        sosoh dernière édition par 18 nov. 2014, 18:46

                                        J’ai mis le code, suivis le tuto sur les events mais je ne sais pas par quoi remplacer 
                                        :::
                                        [size=xx-smallBOTIEffect][size=xx-small.][size=xx-smallsuperPowersFlash]
                                        :::

                                        J’ai remplacer BOTIEffect par SomniferePotionEffect, mais pour le superPowersFlash je ne sais pas quoi mettre car sinon ca fais une erreur…

                                        Et la j’ai pas besoin d’attendre 24h pour répondre non ? Car tu as mis un message toi non?

                                        Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 18 nov. 2014, 20:50

                                          Oui, 24h entre deux posts de la même personne, dans l’autre cas il suffit d’éditer le message …
                                          C’est presque la même règle sur tous les forums, ça évite le spam.

                                          Logiquement tu mets ClassOuSeTrouveLaDeclarationDeLaPotion.nomDuField
                                          ça c’est la base en Java, il faut l’apprendre (il y a un bon tutoriel sur OpenClassRoom) sinon tu n’arrivera à rien.

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

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB