Boutique : vendeur villageois

Avant les recettes personnalisées, on utilisait des vendeurs villageois. Ils sont toujours utiles pour les objets utilisant des tags.

Pour l’exemple, nous allons mettre en place un vendeur de fruits décoratifs. Il s’agit en fait de têtes personnalisées.

Invocation

Commençons par créer la fonction d’invocation du Villageois. Dans le dossier des fonctions de la boutique, je créé un dossier villagers. Il contiendra les fonctions pour invoquer les vendeurs. Je créé ensuite la fonction fruits, pour un vendeur de fruits.

La commande d’invocation est assez simple :

summon villager ~ ~1 ~

Nous invoquons simplement un villageois à l’endroit où est lancée la fonction avec la commande :

/function mangarmor:shop/villagers/fruits

Personnalisations maintenant le villageois. Nous pouvons continuer la commande avec des données de villageois. Celles-ci peuvent définir sa profession, son niveau de métier ainsi que son biome. Pour aider à choisir, on peut consulter la liste des vêtements sur le wiki Minecraft.

summon villager ~ ~1 ~ {VillagerData:{profession:farmer, level:5, type:plains}}

Pour simplifier la génération de la commande, on peut utiliser des sites comme DigMinecraft ou Minecraft Command Science.

Décoration : la pomme

Création d'une offre de villageois sur le site DigMinecraft
Création d’une offre de villageois sur le site DigMinecraft

J’utilise DigMinecraft pour générer la commande. Minecraft Command Science propose d’autres options mais la commande générée n’est pas compatible avec Minecraft 1.16.

J’indique donc une offre pour échanger 5 émeraudes contre une tête de joueur. Nous indiquerons plus tard la texture pour obtenir une pomme. Voici la commande générée :

summon villager ~ ~1 ~ {VillagerData: profession:farmer, level:5, type:plains}, Invulnerable:1, PersistenceRequired:1, CustomName:"Fruits", Offers:{Recipes:[{buy:{id:emerald,Count:5}, sell:{id:player_head,Count:1,tag:{display:{Name:"\"Pomme\""}}}, rewardExp:0b, maxUses:9999999}]}}

Il est temps de chercher une tête en forme de pomme. Pour cela, j’utilise le site Minecraft Heads. Voici le code indiqué pour Minecraft 1.16 :

/give @p minecraft:player_head{display:{Name:"{\"text\":\"Apple\"}"}, SkullOwner:{Id:[I;1773962895,-939242600,-1676573066,1848849180], Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTIxMTI3ZDIyNjc1YzVjNzY5YTBjMDhiNTcyMDE4ZDI5OWM4MzA0NmY4ZTFmOTQzZWQ5ZDUxYmUwM2IwNyJ9fX0="}]}}} 1

Ce qui nous intéresse ici, c’est la partie SkullOwner. Elle comporte un id et surtout les textures de la tête. Nous allons copier toute la partie SkullOwner dans la commande d’invocation du vendeur, dans la partie tag, juste après le display.

summon villager ~ ~1 ~ {VillagerData:{profession:farmer, level:5, type:plains}, Invulnerable:1, PersistenceRequired:1, CustomName:"Fruits", Offers:{Recipes:[{buy:{id:emerald,Count:5}, sell:{id:player_head,Count:1,tag:{display:{Name:"{\"text\":\"Pomme\"}"}, SkullOwner:{Id:[I;1773962895,-939242600,-1676573066,1848849180], Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTIxMTI3ZDIyNjc1YzVjNzY5YTBjMDhiNTcyMDE4ZDI5OWM4MzA0NmY4ZTFmOTQzZWQ5ZDUxYmUwM2IwNyJ9fX0="}]}}}},rewardExp:0b,maxUses:9999999}]}}

Décoration : la pêche

Comme pour la pomme, nous allons ajouter une offre. Pour cela, je copie l’offre de la pomme. Je change le nom en pêche et modifie l’id et les textures par ceux trouvés sur Minecraft Heads. J’ajoute donc ce bloc de code dans les offres :

{buy:{id:emerald,Count:5}, sell:{id:player_head,Count:1,tag:{display:{Name:"{\"text\":\"Pêche\"}"}, SkullOwner:{Id:[I;436418374,257114978,-1779699401,1303019964], Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg0MDRjZmU3YWQxMTY2ODFiNDg1MGI4OTk5OGFjZjAzY2ViZTQ2ODVjYzc2NjM4OTMwNjUyZGM0YWZjMzc2MiJ9fX0="}]}}}},rewardExp:0b,maxUses:9999999}

Persistance et immobilité

Comme tu as pu le remarquer, le villageois est invulnérable et ne peut pas disparaître. Toutefois, il court partout. Pour l’empêcher de bouger, on peut cocher la case NoAI du générateur. Cela ajoutera le paramètre NoAI:1 à la commande. Le villageois sera incapable de bouger mais ne sera pas soumis à la gravité.

Une autre solution est de rendre nulle la vitesse de déplacement du villageois. Pour cela, on passe l’attribut movement_speed à 0 en ajoutant cette petite ligne :

Attributes:[{Name:"generic.movement_speed",Base:"0f"}]

Voici donc le code complet de mon vendeur :

summon villager ~ ~1 ~ {VillagerData:{profession:farmer,level:5,type:plains}, Invulnerable:1, PersistenceRequired:1, Attributes:[{Name:"generic.movement_speed",Base:"0f"}], CustomName:"Fruits", Offers:{Recipes:[{buy:{id:emerald,Count:5}, sell:{id:player_head,Count:1,tag:{display:{Name:"{\"text\":\"Pomme\"}"}, SkullOwner:{Id:[I;1773962895,-939242600,-1676573066,1848849180],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTIxMTI3ZDIyNjc1YzVjNzY5YTBjMDhiNTcyMDE4ZDI5OWM4MzA0NmY4ZTFmOTQzZWQ5ZDUxYmUwM2IwNyJ9fX0="}]}}}},rewardExp:0b,maxUses:9999999}, {buy:{id:emerald,Count:5}, sell:{id:player_head,Count:1,tag:{display:{Name:"{\"text\":\"Pêche\"}"}, SkullOwner:{Id:[I;436418374,257114978,-1779699401,1303019964], Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg0MDRjZmU3YWQxMTY2ODFiNDg1MGI4OTk5OGFjZjAzY2ViZTQ2ODVjYzc2NjM4OTMwNjUyZGM0YWZjMzc2MiJ9fX0="}]}}}},rewardExp:0b,maxUses:9999999}]}}

Il ne me reste plus qu’à créer d’autres vendeurs avec de nouvelles fonctions. Pour ajouter le vendeur dans ma boutique, j’utilise la commande indiquée en début d’article :

/function mangarmor:shop/villagers/fruits

Téléchargement

Le datapack est disponible au téléchargement. Il contient un deuxième vendeur qui échange également un objet contre des émeraudes.

Sommaire

Partager

Partager sur facebook
Facebook
Partager sur twitter
Twitter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.