Les predicates (introduit en version 1.9) permettent aujourd’hui de changer le modèle d’un item selon tel ou tel paramètre. Ces derniers sont depuis utilisé par plusieurs ajouts au cour des différentes mises a jour du jeu comme par exemple par les élytra (le modèle variera si l’objet à une durabilité restante de 1 ou non), par l’arc (pour les différente étape du bandage) mais aussi plus récemment par le sac (si il est plein ou non).
Sommaire du tutoriel
Pré-requis
Enregistrer la propriété de l’item permettant de changer le modèle dynamiquement
Résultat
Licence et attribution
Pré-requis
Créer la base d’un mod
Créer un item basique
Apprendre les bases du Java
Connaitre le JSON
Enregistrement de la propriété de l’item permettant de changer le modèle dynamiquement
Le bout de code suivant étant exécute coté client, nous aurons besoin de la fonction d’événement ayant comme paramètre FMLClientSetupEvent dans laquelle nous mettrons le morceau de code suivant :
ItemModelsProperties.registerProperty(ItemInit.TEST_PREDICATE.get(), new ResourceLocation("test"), (itemStack, clientWorld, entity) -> {
return itemStack.getTag() != null && itemStack.getTag().getBoolean("isBest") ? 1.0F : 0.0F;
});
Ici en premier argument nous avons l’item sur lequel le predicate sera appliqué (ici ce sera un item de test, mais vous pouvez tout a fait changer cet item par le votre), en deuxième argument nous avons l’identifiant du predicate qui sera utilisé dans le fichier du modèle de l’item en question (précisé par le premier argument). Le 3ème argument est lui le plus intéressant car il va nous permettre de retourner un nombre selon un critère que nous définirons pour après le gérer dans le fichier modèle (pour faire plus simple, dans cet exemple on retourne un certain nombre décimal si l’item possède un tag de type booléen se nommant isBest ou non (si le tag est présent alors cela retourne 1.0 sinon cela retourne 0.0)).
Pour être plus claire nous allons étudier le fichier du modèle.
{
"parent": "item/generated",
"textures": {
"layer0": "item_predicate_tutorial:item/test_predicate"
},
"overrides": [
{
"predicate": {
"test": 1
},
"model": "item_predicate_tutorial:item/is_best_test_predicate"
}
]
}
Ici nous nous intéresserons au champ overrides (les champs au dessus sont a connaitre car ils servent a faire un item de base) qui dans notre cas contient un seul élément, cet élément vérifie si le predicate test que nous avons enregistrer tout a l’heure a pour valeur 1 (donc si l’item que nous tenons possède le tag isBest), si c’est le cas alors le modèle de l’item deviendra item_predicate_tutorial:item/is_best_test_predicate sinon le modèle restera item_predicate_tutorial:item/test_predicate.
Résultat
Si besoin, voici le repo Github avec les lignes de code utilisées : https://github.com/Les-moddeurs-Francais/Item-Predicate-Tutorial
Licence et attribution
Ce tutoriel rédigé par Mysterious_Dev corrigé par (personne pour le moment) et publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International
Sommaire des tutoriels