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 Java 1.13 sera principalement une mise à jour technique, pour corriger des bugs et rendre le fonctionnement de Minecraft plus modulaire, ce qui simplifiera les developpement future et qui rendra la création de contenu plus simple pour les map-makers.
Dinnerbone nous avait déjà rapporter un certain nombre de changement
il y a 2 semaines:
-
Des messages d'erreurs plus claires
-
La compilation des fonctions
-
L'amélioration des sélecteurs
-
L'intégration des datapacks
-
Et divers autres petits changements
Je vous laisse lire
notre précédente news à ce sujet pour en savoir plus.
L'interface graphique
C'est dans un
tweet énigmatique que Dinnerbone a
dévoilé une nouvelle image montrant un nouveau système d'assistance pour l'écriture des commandes:
Il semblerait que la syntaxe de la commande s'affichera automatiquement, et que le paramètre en cours de frappe sera affiché en surbrillance. Un fonctionnement bien plus pratique qu'actuellement, ou la syntaxe de la commande n'est afficher qu'en cas d'erreur lors de la validation de la commande.
Les sélecteurs
Une autre nouveauté se cache dans cette image: c'est la possibilité de filtrer une entité en fonction de ses tags NBT.
Comme vous pouvez le voir, Dinnerbone a entré la commande:
/entitydata @e[nbt=!{coolness:"Super Cool"}] {coolness:"Super Cool"}
La partie vraiment intéressante est
nbt=!{coolness:"Super Cool"}
Nous aurons donc un paramètre "nbt" dans les sélecteurs qui nous permettra de sélectionner des entités avec un certain NBT tag, sans devoir passer par la commande .
Autre changement important: nous pourrons maintenant utiliser plusieurs fois le même argument dans les sélecteurs. Par exemple le sélecteur suivant sera désormais valide:
@e[tag=pizza,tag=sans,tag=ananas]
Lorsqu'un argument est répété plusieurs fois, c'est l'opérateur logique "ET" qui est utilisé: il faut que toutes les conditions soit vérifié en même temps pour que l'entité soit sélectionné. Ainsi l'exemple précédent sélectionnera toutes les entités à la fois le tag "pizza", le tag "sans" et le tag "ananas".
Cela fonctionnera également avec des arguments moins intuitif, par exemple avec l'argument "
name" (nom du joueur): Cela n'a pas de sens d'en spécifier plusieurs car un joueur ne peut pas avoir plusieurs nom, mais il est possible d'utiliser la négation plusieurs fois:
@a[name=!foo,name=!bar]
Cet exemple sélectionnera tous les joueurs, sauf "foo" et "bar".
BlockStates, NBT et DataValues
Actuellement de nombreuses commandes utilisent des paramètres "state", "data" et "nbt" pour pouvoir sélectionner/définir un bloc en incluant des données de blockstate, "datavalue" et/ou NBT. (Pour rappel les blockstate permettent de définir l'état d'un bloc, par exemple le sens d'ouverture d'une porte, l'état allumé/éteint d'une torche redstone ou d'un four, etc.)
Mais d'une commande à l'autre la syntaxe n'est pas toujours rigoureusement identique, et la plupart des commandes ne permettent même pas de spécifier ces informations (blockstate ou nbt). Dans la version 1.13 tout sera simplifié et uniformisé: Tous les paramètres de type
blockstate ou nbt seront supprimés, ces informations seront directement
inclusent avec l'ID du bloc, via une nouvelle syntaxe.
Exemple de l'ancienne syntaxe :
/setblock <x> <y> <z> furnace facing=north [old block handling] {BurnTime:200}
La même commande avec la nouvelle syntaxe:
/setblock <x> <y> <z> furnace[facing=north]{BurnTime:200}
Il sera ainsi possible de l'utiliser dans d'autres commandes, comme la commande /execute :
/execute @a ~ ~ ~ detect ~ ~-1 ~ furnace[facing=north]{BurnTime:200} 0 tp @s ~ ~-1 ~1
Cette commande est donc maintenant possible. Il était avant impossible de détecter si un joueur marchait sur un bloc avec des tags NBT ou BlockStates précis.
Quelques exemples d'ID de bloc incluant un blockstate ou un tag NBT:
minecraft:redstone_wire[power=15,north=up,south=down]
minecraft:jukebox{RecordItem:{...}}
minecraft:furnace[facing=north]{BurnTime:200}
Comme avant, le namespace ("
minecraft:") reste optionnel. S'il n'est pas précisé, c'est le namespace "
minecraft:" qui est utilisé.
Les blockstates peuvent générer des erreurs de syntaxe, par exemple:
minecraft:stone[doesntexist=purpleberry]
Le blockstate "doesntexist" n'existe pas, donc c'est une erreur de syntaxe
Autre exemple:
minecraft:redstone_wire[power=tuesday]
Cette fois blockstate "power" existe bien, mais il attend une valeur comprise entre 0 et 15, donc Minecraft générera une erreur de syntaxe pour cet ID.
Enfin Dinnerbone a annoncé la suppression à partir de la version 1.13 des Data Values. Ces valeurs sont des "sous-ID" de blocs, elles permettaient d'avoir plusieurs variantes d'un même bloc. Par exemple tous les blocs de laines avaient le même ID ("
wool"), mais une Data Value différente (entre 0 et 15). Idem avec les roches (granite, diorite, granite poli, etc.), toutes avait l'ID "
stone", mais une Data Value entre 0 et 6.
Les DataValues seront remplacé dans la version 1.13 soit par des BlockStates, soit par de nouveaux ID de bloc (les DataValue étaient beaucoup utilisées pour contrer le problème de limitation du nombre de bloc dans Minecraft, mais puisque cette limitation sera supprimée dans la version 1.13, Mojang pourra en créer de nouveau sans problème).
Les commandes
Dinnerbone
nous avait déjà parlé du changement de la syntaxe de la commande , mais de nombreuses autres commandes seront concernées par ces changements:
/execute
C'est probablement le plus gros changement dans les commandes, puisque la commande sera purement et simplement supprimée, remplacée par 4 nouvelles commandes:
/as <entité> <commande>
La commande
as permettra d’exécuter une autre commande en tant que l'entité indiquée, mais sans prendre sa position.
/at <entité> <commande>
La commande
at permettra d’exécuter une autre commande en prenant la position de l'entité indiquée, mais sans prendre son identité.
/offset <x y z> <commande>
La commande
offset permet d’exécuter une autre commande en utilisant la position indiquée.
/detect <x y z> <bloc> <commande>
La commande
detect exécute la commande indiquée si le bloc à la position
<x y z> est bien celui décrit par le paramètre
<bloc>.
Aucune de ces 4 commandes ne fait exactement la même chose que l'ancienne commande /execute, mais il est possible de combiner ces commandes pour avoir un équivalent:
/execute @e ~ ~ ~ detect ~ ~ ~ stone say Stone! devient
/as @e at @s detect ~ ~ ~ stone say Stone!
/execute @e ~ ~ ~ detect ~ ~ ~ grass summon pig devient
/at @e detect ~ ~ ~ grass summon pig
Finalement ce nouveau système est non seulement plus simple d'utilisation, permet d'écrire des commandes plus courte, mais il est en plus beaucoup plus puissant, permettant bien plus de combinaison qu'avant.
/gamemode
Comme pour le paramètre de sélecteur "
m", la commande ne permet plus d'indiquer le mode de jeu sous forme numérique ou sous la forme abrégé, seul la forme complète est possible:
Par exemple plus passer en mode aventure il faudra utiliser la commande suivante:
/gamemode adventure
Les syntaxes suivantes ne seront plus valide:
/gamemode 2
/gamemode a
/difficulty
Même chose pour la commande , seul la syntaxe complète sera valide.
Par exemple pour passer en mode normal il faudra taper:
/difficulty normal
Les syntaxes suivantes ne seront plus valide:
/difficulty 2
/difficulty n
Autres commandes
De nombreuses autres commandes seront modifiées, afin de supprimer les paramètres de blockstate, de datavalue, ou de tag NBT, c'est nottament le cas des commandes , et .
Dans le cas de la commande clone, le paramètre bloc est également déplacé avant les options "force/move/normal".
Pour nous aider Dinnerbone a fournit la liste des nouvelles syntaxes de toutes les commandes... du moins celles qui sont déjà migrées sur le nouveau parseur 1.13 !
https://gist.github.com/Dinnerbone/943fbcd763c19be188ed6b72a12d7e65
il va juste falloir que je m'habitue d'écrire pour le /gamemode le nom entier.