>> La recherche se fait sur tous les élements du jeu Minecraft <<
Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs
Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs

Minecraft Snapshot 19w38a et b: Les predicates

Le 26/09/2019 à 5h57
Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs

Mercredi dernier sont sortie 2 snapshots, les versions 19w38a et 19w38b, ajoutant dans le jeu plusieurs changements techniques qui devraient ravire les créateurs de contenus.


Les predicates
Les predicates permettent de cibler des éléments dans le jeu en fonction de leurs données internes (en générale des données enregistrées dans leurs tags NBT). Ils sont utilisé dans les tables de loots, et permettent de modifier les loots en fonctions de critère très précis. Grâce à cette mise à jour, il devient par exemple possible de définir un loot si on tue un autre joueur uniquement s'il avait un niveau d'XP suffisant et/ou s'il avait déjà découvert un certain progrés.

Voila la liste des nouveaux predicates disponibles:
  • Predicate de joueur:
    • level: définit le level du joueur (ou un interval, min ou max)
    • gamemode: permet de choisir le(s) mode(s) de jeu du joueur
    • stats: permet de cibler le joueur en fonction de ses statistiques de jeu (nombre de bloc miner, nombre de mort, etc...)
    • recipes: permet de cibler le joueur en fonction de recette de crafting débloqué ou non dans son livre de recette. Il s'agit d'une liste de clé-valeur, avec le nom de la recette, suivit d'une valeur booléenne true ou false indiquant si la recette doit être débloqué ou non pour que la condition soit accepté.
    • advancements: permet de cibler le joueur en fonction du/des progrès qu'il a déjà débloqué. Comme pour les recettes, il s'agit d'une liste avec pour chaque progrès un booléen indiquant si le progrès doit être réussit ou non. Il est également possible de cibler un critère particulière en remplacement la valeur booléenne par un objet désignant un critère a tester (pour rappel, un critère de progrès est une condition permettant de remporter un progrès, par exemple le progrès deux par deux demande a accouplé tous les animaux du jeu au moins une fois, un critère de ce progrès serait d'accoupler seulement 1 espèce d'animaux en particulier au moins une fois)

  • Predicate d'équipe:
    • team: cible le joueur en fonction des équipes auxquelles il appartient.

  • Predicate de position: Les predicates block et fluid acceptent maintenant les sous-predicates suivant:
    • block / fluid: id exact du bloc ou fluide
    • tag: tag auquel doit appartenir le bloc ou fluide
    • nbt: donnée NBT qui doit avoir le bloc
    • state: donnée d'état du bloc, il s'agit d'une liste de couple clé-valeur, de type numérique, booléen, objet ou de chaine de caractère. Les fonctions min et max sont disponible.

  • Predicate de lumière:
    • Le sous-predicate light permet de cibler un bloc ou une entité en fonction de la lumière visible (light est la valeur maximale entre la lumière ambiance (soleil) et la lumière artificiel (torche, etc.) à la position du bloc/entité)

  • Predicates personnalisés:
Il est également possible de définir des predicates personnalisés, en utilisant le predicate "reference" (et son paramètre "name"). Il faut alors référence à un predicate définit dans un fichier de configuration enregistré dans le dossier "predicates" dans un datapack. Cela permettra aux créateurs de créer des conditions complexes, réutilisable facilement dans de nombreuses tables de loot.

  • Autres options des loots tables: D'autres options générales ont été ajouté dans les loots tables
    • Options de position: Il est possible de définir une condition de position via l'option "location_check", en indiquant l'offset via les options offsetX, offsetY et offsetZ
    • Options de temps: Il est possible de définir une condition de temps (heure) via l'option "time_check"' qui vérifie l'heure dans le jeu. L'heure est indiqué via l'option "value", cette valeur prend 24000 valeur par jour (0 et 24000 sont la même heure du jour), mais cette valeur augmente de jour en jour, c'est ce changement qui permet de changer les phases de la lune. Il est possible de définir un modulo à cette valeur afin de travailler en heure journalière par exemple, pour cela il faut utiliser l'option "period" (avec typiquement la valeur 24000).

Les predicates personnalisés peuvent être utilisé directement dans des [commande=a]sélecteurs[/commande], via le nouveau parametre de selecteur "predicate", suivit du nom du predicate personnalisé (définit dans un datapack, en indiquant son nom).


Ajout de variable
Une nouvelle destination a été ajouté pour la commande /data:
/data (...) storage

La commande /data permettait déjà de modifier les données NBT de blocs et d'entités, mais il devient maintenant possible de stoquer des données directement dans le jeu, sans passer par un élément du jeu: c'est donc le concept de variable qui vient d'être ajouté dans le jeu !

C'est une révolution pour les créateurs de contenus pour Minecraft Java: jusqu'à maintenant lorsqu'on voulait enregistrer une valeur dans le jeu, il fallait créer une entité invisible (en général un support d'armure), puis y stoquer sous forme de tag NBT des données. C'était compliqué et lent (le jeu devait gérer une entité qui ne servait à rien, puisqu'elle était invisible), et cela obligé à garder le chunk contenant le support d'armure invisible toujours chargé. Mais Il devient enfin possible de stocker des valeurs dans le jeu, sans devoir créer des support d'armure.

Les données enregistrer dans le storage sont universel, disponible dans tous les mondes. Il est possible de stocker autant de valeur qu'on le souhaite, sous la forme de couple clé-valeur. Ces valeurs sont enregistré avec la partie, et donc restauré lorsqu'on relance le jeu.


Les nouvelles commandes
D'autres commandes ont également évoluer dans cette mise à jour:
  • /execute if predicate
La commande /execute if permettaient déjà d'executer des commandes sous des conditions diverses (condition de bloc, de score, de data, etc), elle permet maintenant en plus d'ajouter des conditions en fonction de predicate, via la syntaxe:
/execute if predicate ...
Cette commande test les predicates personnalisés disponible dans le dossier predicates des datapacks.
  • /schedule ... [append|replace]
La /schedule function accepte maintenant un nouveau paramètre à la fin de la commande, qui permet d'ajouter plusieurs planification pour une même fonction: Si la valeur est "replace" et qu'une programmation existe déjà pour cette fonction, la programmation sera modifié, si la valeur est "append", une nouvelle programmation sera crée. Si ce paramètre est omis, c'est la valeur "replace" qui sera choisit.
  • /schedule clear <id>
Il est maintenant possible de supprimer une programmation existant, via la fonction /schedule clear. On choisit la programmation a supprimé en indiquant l'ID de cette programmation en dernier paramètre.
  • /kill
La valeur par défaut pour la commande kill sans paramètre est maintenant @s (c'est à dire que c'est l'entité qui tape la commande qui est tué). Cela ne devrait pas changer le fonctionnement de la commande dans la quasi-totalité des cas.
 
 
Amélioration de l'affichage graphique
Enfin, le plus gros changement de cette snapshot est invisible, puisque purement technique, c'est l'implementation d'un nouveau moteur de rendu, nommé par les équipes de Mojang "Blaze 3D". Si tout se passe bien, aucun changement ne devrait être visible, mais comme tout changement technique en profondeur, il risque d'y avoir de nouveaux bugs ajoutés dans le jeu. Heureusement nous n'en somme qu'aux premières snapshots de Minecraft 1.15, Mojang aura tout le temps de corriger ces bugs avant la sortie de la Release.

Notez que ce changement empêche tout retour en arrière: lors du premier chargement, votre monde de Minecraft est convertie vers Blaze 3D, ce qui rendra votre monde incompatible avec les anciennes versions de Minecraft. Donc plus que jamais, si vous souhaitez tester cette snapshot, faites une sauvegarde de votre monde, ou créez un nouveau monde de test spécialement pour tester cette snapshot.


Corrections de bugs
Une dizaines de bugs ont été corrigé dans la snapshot 19w38a, notamment des problèmes d'interaction avec les bateaux et les autres blocs/entités, la gamerule dofiredamage ne désactivait pas les dégâts du magma, des problèmes avec les perles d'Enderman sont corrigés, ainsi que des problèmes avec les raids et des corrections de problèmes de lags.

La snapshot 19w38b, sortie seulement quelques heures après la 19w38a, corrige un problème de crash de la première snapshot lorsqu'on cassait un bloc.


Vous pouvez tester cette snapshot dès maintenant en un clic sur "Tester la snapshot" depuis le launcher FR-Minecraft. Si vous souhaitez tester cette snapshot il est recommandé de faire une sauvegarde de vos mondes, puisque les snapshots sont des versions instables qui risquent de corrompre votre monde.
Cet article a été publié par Tronics, le 2019-09-26 05:57:16. Source
Validé par  Tronics. Dernière modification par  Tronics le 26/09/2019 à 6:30.
Partager :
Commentaires de la news Minecraft
Minecraft Snapshot 19w38a et b: Les predicates :
Tronics (administrateur)
le 26/09/2019 à 06:02
Cette snapshot est sortie il y a une semaine, mais mon agenda surchargé depuis 7 jours ne m'a malheureusement pas permit de poster cette news avant :-( J'espère que vous ne m'en tiendrez pas rigueur ! Mojang semble compréhensif, ils n'ont pas sortie de snapshot ce mercredi pour compenser ;-)

Pour revenir à la news, je n'ai pas compris la mise à jour du /kill, j'ai fait plusieurs test, et je ne vois aucune différence avec le fonctionnement dans les anciennes version, si quelqu'un sait ce qui a changé, ça m'intéresse!

Pour les predicates, il me semble qu'il s'agit de condition sur le bloc/entité qui est tué/cassé, mais j'avoue avoir un petit doute, s'il y a des experts ici n'hésitez pas à me corriger si j'ai dit une bêtise.
Tronics (administrateur)
le 26/09/2019 à 06:22
Je remarque également que la notion de bloc et de fluide sont distinct dans les predicates, serait-ce le signe que Dinnerbone continue de travailler à la séparation des notions de bloc et de fluide ? Il en avait parlé il y a longtemps, ce n'est pas sortie en 1.14 comme on s'y attendait, mais il a précisé que ce n'était pas un projet abandonné.
Pour rappel, le but est de séparer les blocs et les fluides dans 2 mondes différent, mais superposé à l'affichage, ce qui permettra de superposer à terme n'importe quel bloc dans n'importe quel fluide très simplement.
franswa (rédacteur)
le 26/09/2019 à 07:43
En 1.14.4, le /kill impose un argument pour déterminer qui on veut tuer. Sur cette snapshot, le /kill existe sans argument et est un alias de /kill @s
le 26/09/2019 à 09:58
@Tronics
Pas grave, et merci pour l’article complet et détaillé :-)

Pour le /kill et comme le dit @franswa, c’était juste histoire de ne plus avoir à taper @s pour se tuer soi même, ce qui était assez embêtant quand on voulait se tuer rapidement pour des tests par exemple.

Pour les prédicats, je ne me suis pas encore bien attaqué au truc, mais je pense que comme les prédicats des tables de loots, on peut mettre une condition sur la personne (ou l’entité ?) qui fait l’action (grâce au "this"), comme sur le bloc/entité qui subit l’action.

Pour les fluides dans les prédicats, il y a deux cas de figures non incompatibles :
- Mojang veut toujours taffer dessus donc continue à prendre en compte les fluides pour le futur
- c’est un moyen de détecter de l’eau, sans avoir à faire de disjonction des cas (if water OU if #TagAFaireQuiContientTousLesBlocsWaterLogged[waterlogged=true])
Mais pour avoir reporté quelques bugs concernant les fluides (et leurs tags), tous fermés car « marche comme prévu », je doute que Mojang souhaite y toucher pour atteindre ce qui était annoncé à la Minecon 2017, en tout cas pas avant 1-2 ans.
le 26/09/2019 à 10:54
A quoi sert le nouveau moteur de rendu ?
Tronics (administrateur)
le 26/09/2019 à 14:41
mathaym25: Merci pour ces précisions !
Le problème du bug tracker, c'est qu'il est géré et modérer par la communauté (les modos ne travaillent pas pour Mojang), et bien souvent il est impossible de rapporter des bugs car les modos les clorent avant même que les dev puissent les voir...

Vous devez être connecté pour laisser un commentaire.