Hey! Comme vous l'avez sûrement vu dans le titre (bah oui sinon vous auriez pas cliqué), vous allez suivre à travers ce topic le développement de mon no-mod en 1.9.
°Mes conseils pour un monde apte à la création de no-mods:
Voici le chemin dans le créateur de mondes:
>Create new world
>Définir un nom + Game mode: creative
>More world options
>World type: superflat
>Customize
>Presets
>Redstone Ready
>Use preset
>Done
>Create new world
Ensuite, commencez par définir quelques gamerules:
> Mettez le jour infini
Code (cpp):
/ gamerule doDaylightCycle false
>Empêchez le spawn des mobs (pour ne pas être embêté)
Code (cpp):
/ gamerule doMobSpawning false
>Enlevez les messages de command blocks, sinon vous ne vous en sortirez plus.
Code (cpp):
/ gamerule commandBlockOutput false
Et c'est parti pour la création!
I/ Le no-mod
Donc, avec ce no-mod, vous aurez la possibilité de faire éclore l’œuf de dragon et d'avoir un lézard géant rien qu'à vous, tout mimi et câlin mais surtout SURPUISSANT et DESTRUCTEUR.
Il bénéficiera donc d'attaques surpuissantes pour détruire vos ennemis, mais ne sera pas non plus facile à faire grandir. En effet, il vous faudra du lait de dragon (dragon breath+seau de lait+nether star) pour le mener à sa taille adulte.
J'ai l'ambition de créer plusieurs resource packs pour que vous ayez le choix entre plusieurs types de dragons.
II/ Partie resource packs
Ici, je vous donnerais tous les bouts de codes et astuces que j'utilise pour personnaliser au maximum le resource pack.
Tout d'abord, sachez que j'utilise BDCraft Cubik Pro pour le resourcepack et qu'il sera principalement en 3d. Pour les textures, j'utilise Photoshop Cs6 mais un autre logiciel tel que gimp fera amplement l'affaire.
° Faire une texture qui n'en modifie aucune autre dans le jeu.
Vous avez pour cela deux moyens:
-Les structure blocks. Les structure blocks sont des blocks utilisés par mojang pour développer le jeu. On ne peut les obtenir que grâce à des commandes, ils sont incassables en survie, émettent de la lumière et sont au nombre de quatre. Ils ne peuvent que se poser grâce à des commandes:
Code (cpp):
/ setblock ~ ~ ~ minecraft: structure_block
Pour celui en forme de S
Code (cpp):
/ setblock ~ ~ ~ minecraft: structure_block 1
Pour celui en forme de L
Code (cpp):
/ setblock ~ ~ ~ minecraft: structure_block 2
Pour celui en forme de C
Code (cpp):
/ setblock ~ ~ ~ minecraft: structure_block 3
Pour celui en forme de D
Il suffit maintenant de changer leur model dans votre resource pack:
>assets
>minecraft
>models
>block
>structure_block_corner ou structure_block_data ou structure_block_load ou structure_block_save
Vous aurez maintenant de nouvelles textures / models non obtenables en survie.
Le défaut: Les structures blocks ne peuvent que êtres posés, ils ne sont pas obtenables en tant qu'items dans l'inventaires. Ils sont au nombre de quatre, ce qui limite les possibilités.
-Les damage d'items
Parmi son lot de nouveautés apportées par la 1.9 qui vont révolutionner le mapmaking, je vais vous faire découvrir l'une d'elles. En effet, nous pouvons maintenant appliquer des models/textures différents aux items ayant une durabilité (outils).
>Voici un tutoriel très bien expliqué de samasaurus6, mais malhereusement en anglais, ça serait trop long d'expliquer sur ce post.
>
Je vous mets ici le tutoriel de @Calambiel pour l'utiliser:
>
Je laisse quand même un exemple de .json ci-dessous.
Code (cpp):
{
"parent" : "item/handheld" ,
"textures" : {
"layer0" : "items/stone_sword"
} ,
"overrides" : [
{ "predicate" : { "damaged" : 1 , "damage" : 0.2 } , "model" : "item/stone_sword_damaged_1" } ,
{ "predicate" : { "damaged" : 1 , "damage" : 0.4 } , "model" : "item/stone_sword_damaged_2" } ,
{ "predicate" : { "damaged" : 1 , "damage" : 0.6 } , "model" : "item/stone_sword_damaged_3" } ,
{ "predicate" : { "damaged" : 1 , "damage" : 0.8 } , "model" : "item/stone_sword_damaged_4" }
]
}
Ici nous modifions donc l'épée en pierre, le fichier s'appelle stone_sword.json et se trouve dans le dossier models>item (il y a aussi block pour les blocks mais je ne connais pas de moyen de faire varier la texture).
La fonction overrides permet selon certaines paramètres d'utiliser un model différent, ici la durabilité.
Le damage défini le pourcentage de durabilité à partir duquel le changement de model est observé (0.8 étant donc lorsque l'item n'est plus qu'à 20% de durabilité) et model donne le nom du fichier de modèle à utiliser.
Cela ne veut pas dire qu'il faut nécessairement des models 3D, un model peut utiliser une simple texture se trouvant dans le pack, comme dans cet exemple :
Code (cpp):
{
"parent" : "item/handheld" ,
"textures" : {
"layer0" : "items/stone_sword_damaged_1"
}
}
Ceci serait mon model "stone_sword_damaged_1.json" dans models>item, qui permet d'appliquer la texture éponyme se trouvant dans textures>items.
(Ah et pour ceux qui se posent la question, le "damaged" de la fonction overrides permet de choisir si l'item doit avoir perdu de la durabilité ou pas, ce que ça implique : pour une valeur de 1 cela affecte un objet normal mais pour une valeur de 0 cela peut affecter un objet avec le tag unbreakable, ce qui permet de donner une quasi infinité de textures pour un objet avec beaucoup de durabilité)
Donc, en utilisant cette technique, vous pourrez donner une nouvelle texture/model à l'item quand il est endommagé au maximum. Vous pourrez ajouter 30 models (car il y a 30 outils avec durabilité).
J'ai ici un model se nommant "stade_1" dans le dossier "item".
Code (cpp):
{
"parent" : "item/handheld" ,
"textures" : {
"layer0" : "items/diamond_hoe"
} ,
"overrides" : [
{ "predicate" : { "damaged" : 1 , "damage" : 1 } , "model" : "item/stade_1" }
]
}
Je remplace ici le model de la houe en diamant (diamond_hoe) cassée à 100% par le model de mon dragon au stade 1 (le plus petit).
Le défaut: après des test, il s'avère que les items ne se cassent que quand leur durabilité est de -1, donc avec une durabilité de 0, leur model sera toujours visible. Sauf erreur de ma part, il est impossible de définir un model pour les durabilités négatives d'un item, bien que l'on puisse s'en giver. Mais, en considérant que la personne va sûrement spam-click, le model pour la durabilité 0 ne sera visible qu'une fraction de seconde.
Obtenir un item avec un dommage voulu:
>Pressez simultanément f3+H sur votre clavier.
>Prenez l'outil de votre choix (ici la houe en diamant), mettez vous en survie et frappez un mob avec pour user sa durabilité.
>Remettez-vous en créatif et passez votre curseur sur l'outil. Vous verrez apparaître:
Durability: 1560/1561 (valeurs pour la houe en diamant, elles varieront selon l'outil choisi)
>Vous connaissez maintenant le nombre d'utilisations de votre item: 1561 pour la houe en diamant.
>Utilisez cette commande:
Code (cpp):
/ give @p diamond_hoe 1 1
Vous obtiendrez une houe en diamant usée une fois. Si vous remplacez le 1 par un 500, la houe sera usée 500 fois.
>Nous voulons ici qu'elle soit usée au maximum, donc 1561 fois. Il suffit juste de remplacer le dernier 1 par 1561.
Code (cpp):
/ give @p diamond_hoe 1 1561
Nous avons maintenant une houe en diamant avec 1561 dommages. Mais comment la mettre sur la tête d'un armorstand, pour qu'elle ait la taille désirée?
Il suffit juste d'utiliser cette commande:
Code (cpp):
/ summon ArmorStand ~ ~1 ~ { ArmorItems: [ { } ,{ } ,{ } ,{ id: diamond_hoe,Damage: 1561 } ] }
Vous pouvez aussi personnaliser la commande, comme cela (c'est celle que j'utilise)
Code (cpp):
/ summon ArmorStand ~ ~1 ~ { Tags: [ "Stade_1" ] ,ArmorItems: [ { } ,{ } ,{ } ,{ id: diamond_hoe,Damage: 1561 } ] ,Invisible: 1 ,Invulnerable: 1 ,Marker: 1 }
III/Partie command blocks
A/ Monter sur le lézard
Je vais ici vous apprendre à créer un mob montable comme un cheval.
1° Faire apparaître un cheval: Je vais ici fair apparaître un cheval invisible, qui nous servira de base.
L'apparition:
Code (cpp):
/ summon EntityHorse ~ ~1 ~ { Tags: [ "Lezard" ] ,Type: 0 ,Variant: 0 ,Silent: 1 ,CustomName: Lizard,CustomNameVisible: 1 }
Le rendre invisible (commande à mettre en repeat)
Code (cpp):
/ effect @e[ tag= Lezard] minecraft: invisibility 1 1 true
Je lui administre également un peu de lenteur:
Code (cpp):
/ effect @e[ tag= Lezard] minecraft: slowness 1 3 true
2° Faire apparaître un ArmorStand invisible portant sur la tête le model 3d que vous avez utilisé pour représenter le mob.
L'apparition (au même endroit que le cheval):
Code (cpp):
/ summon ArmorStand ~ ~1 ~ { Tags: [ "Stade_3" ] ,ArmorItems: [ { } ,{ } ,{ } ,{ id: wooden_hoe,Damage: 59 } ] ,Invisible: 1 ,Invulnerable: 1 ,Marker: 1 ,NoGravity: 1 ,Silent: 1 }
3° Téléporter l'ArmorStand.
a/ Le téléporter un dixième de block plus bas:
tp @e[tag=Stade_3] ~ ~-0.1 ~
Cela ne sert à rein pour l'instant mais sera utile lors du kill.
b/ Le téléporter au cheval:
Code (cpp):
execute @e[ tag= Stade_3] ~ ~ ~ tp @e[ tag= Stade_3,c= 1 ] @e[ tag= Lezard,c= 1 ,r= 2 ]
Note: Si vous voulez que plusieurs Mobs puissent se promener sans soucis au même moment, il est très important de bien laisser le c=1 et le r=2. Vous aurez néanmoins des problèmes si deux lézards se rentrent dedans, c'est pourquoi je vous conseille de tuer les lézards quand ils se rentrent dedans avec un effet cool. C'est ce que nous allons faire maintenant:
B/ Tuer les lézards quand ils se rentrent dedans
Je vais commencer par vous expliquer comment détecter quand deux lézards sont dans un rayon de 3 blocks.
Code (cpp):
execute @e[ type= EntityHorse,tag= Lezard] ~ ~ ~ execute @e[ type= EntityHorse,tag= Lezard,r= 3 ,rm= 1 ] ~ ~ ~
Cette commande exécute sur les chevaux avec le tag lézard un execute dans un rayon de 3 blocks et un rayon de 1 au minimum à un autre cheval avec le tag de lézard une commande, ce qui permets de détecter si deux lézards sont côte à côte.
Nous allons rajouter un effet de particule:
Code (cpp):
execute @e[ type= EntityHorse,tag= Lezard] ~ ~ ~ execute @e[ type= EntityHorse,tag= Lezard,r= 3 ,rm= 1 ] ~ ~ ~ / particle dragonbreath ~ ~ ~ 1 1 1 0.01 1000
Puis un effet sonore:
Code (cpp):
execute @e[ type= EntityHorse,tag= Lezard] ~ ~ ~ execute @e[ type= EntityHorse,tag= Lezard,r= 3 ,rm= 1 ] ~ ~ ~ / playsound minecraft: entity.enderdragon .growl hostile @a
Et nous allons enfin tuer l'entité:
Code (cpp):
execute @e[ type= EntityHorse,tag= Lezard] ~ ~ ~ execute @e[ type= EntityHorse,tag= Lezard,r= 3 ,rm= 1 ] ~ ~ ~ / kill @e[ tag= Lezard,r= 3 ]
Maintenant que le cheval a disparu, la commande inutile plus haut va permettre au corps du lézard de glisser à travers le sol jusqu’à tomber dans le vide et disparaître.
C/ Crafts customisés au sol
Nous allons ici (juste pour exemple) créer une stone monster egg à partir de 5 lingots de fer et d'une stone.
a/ Les tags
Pour reconnaître quel objet est jeté au sol, nous allons lui attribuer un tag.
Code (cpp):
/ scoreboard players tag @e[ type= Item] add Stone { OnGround: 1b,Item: { id: "minecraft:stone" ,Count: 1b} }
Ici, le "OnGround:1b" permets de donner le tag uniquement si l'item est au sol. Le "Count:1b" veut dire qu'il ne doit y avoir qu'un exemplaire de l'item.
Code (cpp):
/ scoreboard players tag @e[ type= Item] add Iron { OnGround: 1b,Item: { id: "minecraft:iron_ingot" ,Count: 5b} }
Cette fois, le "Count:5b" nous permets de dire qu'il faut 5 lingots.
b/ Le craft
Il faut d'abord détecter que les deux items sont au même endroit:
Code (cpp):
execute @e[ tag= Stone] ~ ~ ~ execute @e[ tag= Iron,r= 1 ] ~ ~ ~
Il ne nous reste plus qu'à exécuter notre commande. En l’occurrence, faire apparaître le nouveau block et tuer les items.
Code (cpp):
execute @e[ tag= Stone] ~ ~ ~ execute @e[ tag= Iron,r= 1 ] ~ ~ ~ summon Item ~ ~1 ~ { Item: { id: "minecraft:monster_egg" ,Count: 1b} ,Motion: [ 0.0 ,0.5 ,0.0 ] }
Ici, le tag "Motion" sert à faire sauter l'item vers le haut.
Puis,
Code (cpp):
execute @e[ tag= Stone] ~ ~ ~ execute @e[ tag= Iron,r= 1 ] ~ ~ ~ kill @e[ type= Item,c= 2 ]
On tue les items.
V/BDCraft Cubik Pro
Voici tout d'abord un tutoriel pour apprendre à utiliser le logiciel <Lien>
Mais je voudrais l'approfondir pour vous apprendre à mieux utiliser le logiciel.
a) Les fenêtres
Je vous conseille fortement d'utiliser le préréglage "max workspace with managers on right"
>Window
>Max workspace with mangers on right
ou Ctrl+1 (sur votre pavé numérique)
b) Les paramètres de la grille
Rendez-vous dans:
>Tools
>Preferences
>Grid settings
Une fois ici, vous pouvez régler les paramètres d'affichage de la grille. Elle est par défaut à 16x16, donc la taille d'un block normal. Je préfère la passer à 32x32.
Vous pouvez également décider de la "grid drag & drop snap" qui vous permettra de régler la taille de la grille pour les objets, c'est à dire pour définir leurs dimensions ou pour les déplacer. Par défaut, elle est de 32x32, ce qui donne un-demi pixel de plus par rapport à la grille visible. Vous pouvez le descendre à 8x8 ou le faire monter jusqu'à 256x256. Je vous conseille de le mettre à 64x64, ce qui vous donne un quart de pixel par rapport à la grille par défaut et un demi pour celle que j'aie définie.
c) Astuces:
° Vous pouvez déplacer les cubes grâces aux flèches de votre pavé numérique.
° Vous pouvez définir l'endroit et la forme d’apparition de vos cubes en bougeant et en changeant la taille des petits carrés bleus.
°Si vous ne voyez pas les textures, rendez-vous dans:
>Tools
>Preferences
>View
Et cochez "use advanced 3D preview with textures".
°Vous pouvez charger une image sur les vues haut, devant et gauche en vous rendant dans:
>Views
>Load a picture for Top/Left/Front/All view
Le tutoriel s'arrête là pour l'instant, mais ce post sera de nombreuses fois mis à jour au fur et à mesure que le no-mod évoluera, car je le construit avec vous et en suivant vos conseils. N'hésitez donc pas à me faire part de vos idées dans les commentaires. En attendant, suivez l'évolution de ce post et les commentaires que je posterai.
Les commentaires importants:
Aucun pour l'instant.