Aide au développement/Créer un nouveau bloc : Différence entre versions

De Minecraft Wiki
Aller à : navigation, rechercher
(Améliorations)
m (A protégé « Aide au développement/Créer un nouveau bloc » : Bizarrement, beaucoup de vandalisme ([Modifier=Autoriser uniquement les utilisateurs autoconfirmés] (infini) [Renommer=Autoriser uniquement les utilisateurs autoconfirmés] (infini)))
 
(54 révisions intermédiaires par 30 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
== Un bloc normal (cube) ==
{{msgbox
 
| texte = La page est en cours de '''finalisation'''.
 
}}
 
 
= Un bloc normal (cube) =
 
   
Pour créer un bloc basique (exemple : bois, pierre, bois, terre ...), vous devez vous rendre dans : Client --> src --> net.minecraft.src --> Block.java.
+
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 :
 
Ensuite, allez à la ligne 191 (environ), vous devriez voir cela :
Ligne 16 : Ligne 12 :
 
Voici la définition de ce code :
 
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!)<br>
+
* '''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!)<br />
* '''(new Block(250, 169, Material.rock)) = new Block''' 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 [[Valeurs|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...
+
* '''(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 [[Valeurs|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.
 
* ''.setHardness'' définit la durée de temps nécessaire pour casser le bloc.
* ''.setResistance'' définit la résistance du bloc à la TNT.
+
* ''.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.)
 
* ''.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!)
+
* ''.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 :
== Mettre le bloc dans l'inventaire créatif ==
 
  +
  +
En 1.6.4 :
  +
1.14
  +
<code>public static final Block NOMDUBLOC = (new Block(250, Material.rock)).setHardness(3F).setResistance(5F).setStepSound(soundStoneFootstep).setBlockName("magnesium").setTextureName("<nom de texture>");</code>
  +
  +
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 :
  +
  +
<code>blockRegistry.addObjet(250, "NOMDUBLOC", (new BlockNomdubloc(Material.rock)).setHardness(3f).setStepSound(soundTypePiston).setBlockName("magnesuim").setBlockTextureName("nom de la texture"));</code>
  +
  +
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 :
 
Pour mettre un bloc en mode créatif, il faut rajouter la fonction .setCreativeTabs() dans la variable de création de l'objet :
Ligne 29 : Ligne 39 :
 
<code>[...] .setBlockName("magnesium").'''setCreativeTabs(CreativeTabs.Onglet)''';</code>
 
<code>[...] .setBlockName("magnesium").'''setCreativeTabs(CreativeTabs.Onglet)''';</code>
   
Voici la liste officielle des onglets que vous pouvez utiliser. Les noms sont à mettre à la place de CreativeTabs.Onglet. Exemple : <code>[...].setCreativeTabs(CreativeTabs.tabBlock); </code> par exemple !
+
Voici la liste officielle des onglets que vous pouvez utiliser. Les noms sont à mettre à la place de CreativeTabs.Onglet. Exemple : <code>[...].setCreativeTabs(CreativeTabs.tabBlock); </code>
* Building Blocks (Blocs de constructions) : <code>CreativeTabs.tabBlock</code>
+
* Building Blocks (Blocs de construction) : <code>CreativeTabs.tabBlock</code>
 
* Decoration Blocks (Blocs décoratifs) : <code>CreativeTabs.tabDeco</code>
 
* Decoration Blocks (Blocs décoratifs) : <code>CreativeTabs.tabDeco</code>
* Redstone (Redstone) : <code>CreativeTabs.tabDeco</code>
+
* Redstone (Redstone) : <code>CreativeTabs.tabRedstone</code>
 
* Transportation (Moyens de transport) : <code>CreativeTabs.tabTransport</code>
 
* Transportation (Moyens de transport) : <code>CreativeTabs.tabTransport</code>
 
* Miscellaneous (Divers) : <code>CreativeTabs.tabMisc</code>
 
* Miscellaneous (Divers) : <code>CreativeTabs.tabMisc</code>
Ligne 41 : Ligne 51 :
 
* Material (Matériaux) : <code>CreativeTabs.tabMaterials</code>
 
* Material (Matériaux) : <code>CreativeTabs.tabMaterials</code>
   
  +
=== Ajouter une texture à son bloc en 1.5.2 ===
= Un bloc de type escalier =
 
   
  +
Pour ajouter une texture, vous devez aller dans votre minecraft.jar, ouvrir le dossier textures.<br />
= Un bloc de type barrière =
 
  +
Glisser votre texture dans block si c'est un bloc ou dans item si c'est un item<br />
  +
  +
Ouvrez le avec un logiciel de graphisme supportant la transparence. (Ne pas utiliser Paint, choisir plutôt Paint.NET ou Photoshop.) <br />
  +
Ensuite, dans une case violette et rose (C'est une case de texture libre), créez votre texture. <br />
  +
Maintenant, comptez les cases jusqu’à la texture que vous avez dessinée. Exemple: la [[pierre]] a la texture numéro 2. <br />
  +
  +
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 <br />
  +
le dossier lang. Prenez les fichiers en_US.lang, fr_FR.lang et fr_CA.lang et mettez les sur votre bureau. <br />
  +
en_US est l'anglais, fr_FR le français, et fr_CA le français canadien. <br />
  +
Ouvrez les avec Bloc-notes ou Notepad++ (recommandé) et allez vers la ligne 470. <br />
  +
Vous verrez: <br />
  +
<code>tile.potatoes.name=Potatoes</code>. <br />
  +
Il faut ajouter: <br />
  +
<code>tile.NOM_DU_BLOC_DANS_LE_CODE.name=NOM_DUBLOC_EN_JEU</code> <br />
  +
(Veuillez noter que le fichier anglais ne supporte pas les accents.) <br />
  +
 
=== 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(). <br />
  +
(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:
  +
  +
<code>
  +
if (var5 != this.blockID && var5 != Block.fenceGate.blockID)
  +
</code>
  +
  +
Il suffit de rajouter '''&& var5 != Block.NOM_DE_LA_PORTE_BARRIERE.blockID''' après '''&& var5 != Block.fenceGate.blockID'''.
  +
  +
  +
{{Article ordonné
  +
|titre=Tutoriels de développement
  +
|parent=Aide au développement
  +
|précédent=[[Aide au développement/Installer le Minecraft Coder Pack|Installer le Minecraft Coder Pack]]
  +
|suivant=[[Aide au développement/Créer un nouvel objet|Créer un nouvel objet]]
 
}}
   
  +
[[Catégorie:Tutoriel de développement]]
= Un bloc de type Porte-Barrière =
 

Version actuelle datée du 31 mars 2021 à 11:10

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.