Minecraft Wiki
S'inscrire
Advertisement

Un bloc normal (cube)

Pour créer un bloc basique (exemple : bois, pierre, terre ...), vous devez vous rendre dans : Client --> src --> net.minecraft.src --> Block.java.

Ensuite, allez à la ligne 191 (environ), vous devriez voir cela : public static final Block stairsWoodJungle[...]

Faites alors un retour à la ligne et mettez ceci :

public static final Block NOMDUBLOC = (new Block(250, 169, Material.rock)).setHardness(3F).setResistance(5F).setStepSound(soundStoneFootstep).setBlockName("magnesium");

Voici la définition de ce code :

  • NOMDUBLOC = Le nom de votre bloc. (Ce n'est pas le nom qui s'affichera dans le jeu, c'est juste le nom du bloc qu'on utilise dans le code!)
  • (new Block(250, 169, Material.rock)) définit que le type de bloc pris ici est un bloc simple, il existe plusieurs autres types, qu'on découvrira plus tard. 250 est l'ID du bloc que nous allons créer (La liste des ID du jeu est disponible ici). 169 est le numéro de la texture de votre bloc, cela sera expliqué plus bas. Material.rock est la matière de votre bloc. Pour le bois c'est Material.wood, ou Material.cloth pour la laine...
  • .setHardness définit la durée de temps nécessaire pour casser le bloc.
  • .setResistance définit la résistance du bloc au TNT.
  • .setStepSound définit le son produit lorsqu'on marche sur votre bloc. (Pour les autres, c'est simple, allez-y avec votre logique.)
  • .setBlockName définit la clé de traduction du nom du bloc (vous allez comprendre plus bas, c'est pour définir le nom en jeu de votre bloc (Note : ce n'est pas encore le nom affiché, mais il va servir pour traduire ce nom affiché en plusieurs langues !)

Nota Bene :

En 1.6.4 : 1.14 public static final Block NOMDUBLOC = (new Block(250, Material.rock)).setHardness(3F).setResistance(5F).setStepSound(soundStoneFootstep).setBlockName("magnesium").setTextureName("<nom de texture>");

Le code de texture n'est plus un identifiant mais une chaîne de caractère. La texture sera décrite dans le fichier <nom de texture>.png présent dans les sous-répertoires de assets\minecraft\textures\. Pour un block ce sera le sous-répertoire blocks.

En 1.7.10 :

blockRegistry.addObjet(250, "NOMDUBLOC", (new BlockNomdubloc(Material.rock)).setHardness(3f).setStepSound(soundTypePiston).setBlockName("magnesuim").setBlockTextureName("nom de la texture"));

Vous devrez créer un fichier avec le même nom que après new donc ici BlockNomdubloc, copiez par exemple le fichier déjà existant d'un bloc, et corrigez l'erreur en remplacez-là par le nom de votre fichier.

Mettre le bloc dans l'inventaire du mode créatif

Pour mettre un bloc en mode créatif, il faut rajouter la fonction .setCreativeTabs() dans la variable de création de l'objet :

[...] .setBlockName("magnesium").setCreativeTabs(CreativeTabs.Onglet);

Voici la liste officielle des onglets que vous pouvez utiliser. Les noms sont à mettre à la place de CreativeTabs.Onglet. Exemple : [...].setCreativeTabs(CreativeTabs.tabBlock);

  • Building Blocks (Blocs de construction) : CreativeTabs.tabBlock
  • Decoration Blocks (Blocs décoratifs) : CreativeTabs.tabDeco
  • Redstone (Redstone) : CreativeTabs.tabRedstone
  • Transportation (Moyens de transport) : CreativeTabs.tabTransport
  • Miscellaneous (Divers) : CreativeTabs.tabMisc
  • Foodstuffs (Nourriture) : CreativeTabs.tabFood
  • Tools (Outils) : CreativeTabs.tabTools
  • Combat (Combat) : CreativeTabs.tabCombat
  • Brewing (Potions) : CreativeTabs.tabBrewing
  • Material (Matériaux) : CreativeTabs.tabMaterials

Ajouter une texture à son bloc en 1.5.2

Pour ajouter une texture, vous devez aller dans votre minecraft.jar, ouvrir le dossier textures.
Glisser votre texture dans block si c'est un bloc ou dans item si c'est un item

Ouvrez le avec un logiciel de graphisme supportant la transparence. (Ne pas utiliser Paint, choisir plutôt Paint.NET ou Photoshop.)
Ensuite, dans une case violette et rose (C'est une case de texture libre), créez votre texture.
Maintenant, comptez les cases jusqu’à la texture que vous avez dessinée. Exemple: la pierre a la texture numéro 2.

Dans le code (new Block(250, 169, Material.rock)), remplacez 169 par votre numéro de texture.

Le nom du bloc en jeu

Maintenant, il s'agit du nom qui s'affichera dans l'inventaire. Il faut ouvrir votre minecraft.jar avec votre logiciel d'extraction et aller dans
le dossier lang. Prenez les fichiers en_US.lang, fr_FR.lang et fr_CA.lang et mettez les sur votre bureau.
en_US est l'anglais, fr_FR le français, et fr_CA le français canadien.
Ouvrez les avec Bloc-notes ou Notepad++ (recommandé) et allez vers la ligne 470.
Vous verrez:
tile.potatoes.name=Potatoes.
Il faut ajouter:
tile.NOM_DU_BLOC_DANS_LE_CODE.name=NOM_DUBLOC_EN_JEU
(Veuillez noter que le fichier anglais ne supporte pas les accents.)

Un bloc de type escalier

Pour créer un escalier, il suffit de remplacer (new Block(250, 169, Material.rock)) par: (new BlockStairs(201, glowStone, 0)) et d'ajouter la fonction .setRequiresSelfNotify().

Explications :

  • 201 est l'ID de votre bloc
  • glowStone est la matière de votre bloc. vous pouvez la changer par ce que vous voulez. Cela correspond au nom (dans le code) du bloc.
  • 0 est la métadonnée (metadata) du bloc. Prenons pour exemple les planches de bois. Il en existe quatre types. Mais si vous regardez bien, elles ont toutes le même identifiant. Par contre, elles ont aussi un sous-ID qui correspond à leur couleur. Il s'agit de la métadonnée. Et si vous faites un escalier avec un bloc ayant des métadonnées, vous mettez celui-ci à la place du 0.

Un bloc de type barrière

Il suffit de remplacer (new Block(250, 169, Material.rock)) par (new BlockFence(202, 105)) et de rajouter la fonction .setRequiresSelfNotify().
(202, 105) représente la même chose que pour un bloc normal.

Un bloc de type portillon

Il faut remplacer (new BlockFence(250, 169, Material.rock)) par (new BlockFenceGate(202, 105)) et rajouter la fonction .setRequiresSelfNotify().

Ensuite, trouvez la classe BlockFence.java et vous trouverez ceci vers la ligne 125:

if (var5 != this.blockID && var5 != Block.fenceGate.blockID)

Il suffit de rajouter && var5 != Block.NOM_DE_LA_PORTE_BARRIERE.blockID après && var5 != Block.fenceGate.blockID.


Advertisement