Layer avec texture animé



  • Bonjour,
    J'ai vu le tuto pour créer un bloc avec texture animé.
    Je voulais donc savoir si il était possible de faire la même chose avec le layer des armures lorsqu'on les porte.
    J'ai essayé mais sans résultat concrêt.
    Merci d'avance.


  • Administrateurs

    Salut,
    Met un System.out.println("quelque chose"); avant le return de la fonction getArmorTexture
    Si dans la console ça spam de quelque chose lorsque tu porte l'armure, tu peux animer la texture en indiquant un fichier différent en fonction du temps.
    Si ça ne l'affiche qu'une fois de la console, ce n'est pas possible.



  • Oui ça spam, cela veut donc dire que c'est possible.
    Par contre j'ai utilisé cette texture : 
    http://sebenf0rce.livehost.fr/launcher/magma1.png
    Mais ça ne semble pas marcher 😞



  • Au pire ce que tu peux faire c est de faire un nombre qui varie de 0 à 16 par exemple donc

    n++
    if(n>16){
    n=0;
    }

    puis un if n == 1,2 etc et tu mets à chaque fois la texture correspondante



  • C'est pas possible de faire comme dans le tuto ?



  • le tuto c'est le fichier qui dit la lsite des texture que le bloc utilise mais c'est possible que sa ne marche comme comme cela avec les armures donc a tester



  • C est sur que sa ne fonctionnerai mais ma proposition fonctionne à coup sur


  • Administrateurs

    Non, tu ne pourra pas faire avec la texture que tu as envoyé, car seule les blocs et items utilisent ce fonctionnement.
    Si qu'il faut faire, c'est changer le return en fonction du temps.

    Donc en gros tu fais plusieurs textures (magma_layer2_time0.png, magma_layer2_time1.png, magma_layer2_time2.png … par exemple)
    Et à l'aide et ensuite tu fais une division euclidienne par le nombre de texture que tu as de world.getTotalTime()

    ex :

    ​    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
        {
            if(slot == 2)
            {
                return ModTutoriel.MODID + ":textures/models/armor/tutorial_layer_2_time" + entity.worldObj.getTotalWorldTime() % 30 + ".png";
            }
            return ModTutoriel.MODID + ":textures/models/armor/tutorial_layer_1.png";
        }
    

    La texture risque quand même de clignoter très vite, pour monter le temps par 10 :

    ​    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
        {
            if(slot == 2)
            {
                return ModTutoriel.MODID + ":textures/models/armor/tutorial_layer_2_time" + ((entity.worldObj.getTotalWorldTime() % 30) / 10) + ".png";
            }
            return ModTutoriel.MODID + ":textures/models/armor/tutorial_layer_1.png";
        }
    

    Enfin c'est des maths ça, un peu de proportionnalité, rien de bien compliqué.



  • Je refais mes images et je test 😉



  • Cela m'affiche une erreur : 
    Multiple markers at this line

    • overrides net.minecraft.item.Item.getArmorTexture
    • Syntax error on token "Invalid Character", delete 
      this token

    A la ligne :  [size=xx-smallpublic] [size=xx-smallString][size=xx-small getArmorTexture][size=xx-small(][size=xx-smallItemStack][size=xx-small stack][size=xx-small,] [size=xx-smallEntity][size=xx-small entity][size=xx-small,] [size=xx-smallint][size=xx-small slot][size=xx-small,] [size=xx-smallString][size=xx-small type][size=xx-small)]


  • Administrateurs

    Toute la ligne est souligné ou juste un petit truc ? Si c'est juste un petit truc réécrit les caractères, le forum fait ça dès fois et je ne sais pas d'où ça vient 😕



  • J'ai recopié et ça marche bien. J'ai testé toutes mes textures une à une et elles marchent bien. Par contre lorsque j'essaye de les animer cela les affiches comme si elles n'étaient pas présentent (carée violet et noir).
    J'ai adapté ton code pour layer1 je sais pas si c'est possible, voila ce que j'ai fais :

    
     public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
    
        {
            if(slot == 2)
            {
                return Main.MODID + ":textures/armor/magma_layer_2-time" + ((entity.worldObj.getTotalWorldTime() % 30) / 10) + ".png";
            }
            return Main.MODID + ":textures/armor/magma_layer_1-2-timeg"  + ((entity.worldObj.getTotalWorldTime() % 30) / 10) + ".png";
        }
    
    

  • Administrateurs

    textures/armor/magma_layer_1-2-timeg
    

    ???
    Le problème ne viendrait pas du g ?



  • Non j'avais remis le code normal et pour poster ici je l'ai refais vite fais et j'ai commis cette erreur qui n'étais pas la au départ.



  • Quelqu'un aurait-il la solution ?



  • [size=smallQuelqu'un aurait-il la solution ?]



  • donne l'arborescence du fichier de la texture



  • @'isador34':

    donne l'arborescence du fichier de la texture

    La voici :
    C:\Users\Seb\Desktop\Projet eclipse\Magmafusion\src\main\resources\assets\magmafusion\textures\armor



  • Donne moi aussi le modid que tu a donner dans ton mod



  • @'isador34':

    Donne moi aussi le modid que tu a donner dans ton mod

    Le modid est : magmafusion