6 mars 2014, 12:59

Sommaire

Introduction

Dans ce tutoriel qui est plus une astuce qu’un bon gros tutoriel de 6 pages, on va voir comment faire un random de textures sur nos entités…

Pré-requis

Avoir au minimum un mob simple de créer, comment faire ? Allez voir le tutoriel de elias54 disponible ICI

Code

Entity.java de notre mob:

Voici le bout de classe que sera modifié:

public class EntityAstuceTextureRandom extends EntityMob
{    
    public EntityAstuceTextureRandom(World par1World)
    {
        super(par1World);
        //Ici vos task.add pour l'intelligence artificielle
        //...
    }

Dans ce bout de classe, rien de spécial, donc nous allons rajouter 2 petites choses:

Au début de la classe avant le constructor rajoutez ceci:
public int texture;
Dans le constructeur, vous allez rajouter, après le super…:
texture = this.worldObj.rand.nextInt(nombreDeTexturePresente);

Explications: le nombreDeTexturePresente est un int
vous allez simplement mettre le nombre de textures que vous avez (si vous avez 25 textures différentes vous mettez (25) tout simplement)

Voici ce que vous devriez avoir:

public class EntityAstuceTextureRandom extends EntityMob
{
    public int texture;
    public EntityAstuceTextureRandom(World par1World)
    {
        super(par1World);
        texture = this.worldObj.rand.nextInt(65); //65 pour le nombre de textures qui seront random

        //Ici vos task.add pour l'intelligence artificielle
        //...
    }

Pour la classe principale de notre mob, c’est terminé !
Passons à la classe Render

Render.java de notre mob:

Dans le Render.java d’elias54 nous allons modifier 3/4 choses:

    //Bout de code de elias54
    protected ResourceLocation getAniZobTextures(EntityAnizob anizob)
    {
        return texture;
    }

    protected ResourceLocation getEntityTexture(Entity par1Entity)
    {
        return this.getAniZobTextures((EntityAnizob)par1Entity);
    }

Changeons tout ça !

Par ça !

    //Bout de code de elias54
    protected ResourceLocation getEntityAstuceTextureRandomTextures(EntityAstuceTextureRandom astuceRandom)
    {
        return new ResourceLocation("modid:mob/votremob"  + astuceRandom.texture + ".png"); //Changez, biensûr le chemin d'accès au textures !
    }

    protected ResourceLocation getEntityTexture(Entity par1Entity)
    {
        return this.getEntityAstuceTextureRandomTextures((EntityAstuceTextureRandom)par1Entity);
    }

Nous avons remplacé “return texture” par:
return new ResourceLocation(“modid:mob/votremob” + astuceRandom.texture + “.png”);

Résultat

Une fois que notre mob spawn avec un œuf, ou naturellement, il aura une texture random parmi nos 65 textures

Voici quelques images:


PS: Si ils ont des items dans la mains, c’est parce que j’ai directement pris des screens de mobs que j’ai créé, flemme de faire un mob “AstuceTextureRandom”. Et c’est sur ces mobs que j’ai appliqué le tutoriel “Créer un mob tenant un item dans sa main”, mais le random de textures est bien présent !

Bonus

Pour les versions antérieures à la 1.6.x :

public class EntityAstuceRandomTexture extends EntityMob
{
    public EntityAstuceRandomTexture (World par1World)
    {
        super(par1World);
        this.texture = "modid:mob/astuceRandom" + (new Random().nextInt(65)) + ".png";
        //Ici vos task.add pour l' Intelligence Artificielle
    }
}

Crédits

Merci Robin de m’avoir trouvé la solution et c’est pour cela que j’en ai fait une astuce !


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