17 juil. 2013, 15:31

Nous allons maintenant commencer notre premier bloc.

Pre-requis

Dans la classe principale

À la suite de la déclaration de votre instance, déclarez votre bloc comme ceci :

    public static Block BlockTutorial;

Pensez à importer “net.minecraft.block.Block”
Si vous voulez créer plusieurs blocs, vous pouvez les déclarer à la suite de cette façon :

    public static Block BlockTutorial, DeuximeBlock, TroixiemeBlock;

Ensuite dans la partie @PreInit, vous allez ajouter ceci :

    BlockTutorial = new BlockTutorial(2000).setHardness(1.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("BlockTutorial").setTextureName("modtutoriel:BlockTutorial");

2000 est l’id du bloc (les ids de bloc vont de 0 à 4095, les ids de 0 à 600 sont à éviter pour ne pas avoir de conflit avec les id de minecraft), setHardness correspond à la résistance du bloc par rapport à la pioche (ou à la main) et setResistance est la résistance aux explosions, setStepSound défini le son du bloc et setTextureName défini la texture (nous reviendrons dessus plus tard)
Pour la liste les sons possible :

  • soundPowderFootstep = son par défaut, le même que soundStoneFootstep
  • soundWoodFootstep = son du bois
  • soundGravelFootstep = son du gravier
  • soundGrassFootstep = son de l’herbe, des pousses, des feuilles …
  • soundStoneFootstep = son de la pierre
  • soundMetalFootstep = son des blocs de fer, or, diamant (c’est le même que la pierre)
  • soundGlassFootstep = son du verre
  • soundClothFootstep = son de laine
  • soundSandFootstep = son du sable
  • soundSnowFootstep = son de la neige
  • soundLadderFootstep = son de l’échelle
  • soundAnvilFootstep = son de l’enclume

Juste en dessous, ajoutez :

GameRegistry.registerBlock(BlockTutoriel, "BlockTutoriel");

Il vous restera une erreur sur “new BlockTutoriel”, créez cette classe.

La classe du bloc

Vous allez avoir une classe qui ressemble à ça :

package tutoriel.common;

public class BlockTutoriel
{

}

Ajoutez extends Block après “public class BlockTutoriel”. Importez “net.minecraft.block.Block”. Maintenant vous allez avoir une erreur sur “BlockTutoriel”, passez la souris dessus et faite "add constructor ‘BlockTutoriel(int, Material)’
Vous allez obtenir un contructeur comme ceci :

    public BlockTutoriel(int par1, Material par2Material)
    {
        super(par1, par2Material);
    }

Nous allons le modifier de cette façon la :

    public BlockTutoriel(int id)
    {
        super(id, Material.rock);
        this.setCreativeTab(CreativeTabs.tabBlock);
    }

Material.rock est le matériel, avec le type rock le bloc ne peut que être dropé avec une pioche. Pour la liste des matériels, fait ctrl + clic sur Material, la classe Material va s’ouvrir, il y tout dedans.
Pensez à changer les paramètres du type par1, par2, par3, etc. par ce qui correspond, on s’y retrouve beaucoup mieux avec des noms corrects.

Les ressources du bloc (texture + nom)

Dans la classe principale, j’ai utilisé cette fonction : .setTextureName(“modtutoriel:BlockTutorial”)
modtutoriel correspond à mon modid sans aucune majuscule, il ne faut pas en mettre. BlockTutorial est le nom de ma texture

Pour l’emplacement de la texture, allez dans votre dossier forge/mcp/src/minecraft
Dans ce dossier se trouvent les sources du jeu. Vous devrez normalement y voir un dossier du même nom que votre package, tutoriel dans mon cas. Créez un nouveau dossier et nommez-le “assets” (Pour ceux qui ont une version récente de forge, ce dossier existe déjà). À l’intérieur de ce dossier, créez un autre dossier et nommez-le avec votre modid sans majuscule, modtutoriel dans mon cas. À nouveau, dans ce dossier créez un autre dossier nommé textures. Dans le dossier texture, créez le dossier blocks
Nous avons donc 4 dossiers : assets/modtutoriel/textures/blocks/
Maintenant dans le dossier blocks, créez votre fichier .png de 16x16 nommé BlockTutoriel, ce qui correspond à la partie après le “:”. (vous pouvez aussi faire des textures plus grandes, mais elles seront plus lourdes à charger)
Par ailleurs, lorsque vous compilerez votre mods, pensez à placer le dossier mods qui se trouve dans /forge/mcp/src/minecraft dans l’archive de votre mods, sinon les textures seront manquantes.

Retournez dans le dossier qui porte comme nom votre modid, “modtutoriel” dans mon cas. Créez un nouveau dossier nommé “lang”
Dans ce dossier, créer un nouveau fichier en_US avec l’extension .lang. Pour ça, ouvrez votre éditeur de texte (notepad ++ comme je vous l’ai conseillé si possible), faite un nouveau fichier, cliquez sur enregistrer sous et cochez “All type (.)”
Dans ce fichier, ajoutez tile.«le nom non localisé de votre bloc (celui dans setUnlocalizedName(“”))».name=«le nom en jeu»
Par exemple :

tile.BlockTutorial.name=Block Tutorial

/!\ Il ne doit pas avoir d’espace entre le nom non localisé, l’égale, et le nom localisé /!\
Vous pouvez aussi créer les autres fichiers de langage, fr_FR, etc …
/!\ Vérifiez que le fichier est encodé en UTF-8 sans BOM, avec notepad ++, cliquez sur Encodage puis “encoder en UTF-8 (sans BOM)”, sinon vous aurez des problèmes avec les accents /!

Rendu final

Voir les changements sur Github

Un bloc moddé sous Minecraft