probleme testfor inventory pour 1.13

Statut
N'est pas ouverte pour d'autres réponses.

quentinoe66

Aventurier
25 Octobre 2017
14
1
4
21
bonjour j'ai un problème: je cherche a faire une map en gamemode aventure et il faudrait creer un portail du nether. donc j'ai donné un pioche cassant l'obsi et je veux détecter lorsque le joueur obtiens de l'obsi et lui en donner une autre, posable. Cependant comment détecter le bloc d'obsi normal d'un joueur sans détecter le bloc d'obsi déjà échangé ?

voici la commande actuelle :
testfor @a[r=30] {Inventory:[{id:"minecraft:obsidian"}]}
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
C'est pas si simple... Il faut passer par l'execute qui ne fonctionne pas de la même manière...
L'execute est conçu pour le lancement de commande en tant qu'entité, donc tu vas devoir repenser ton système...

Voici une ce que ça donnerait, c'est incomplet, je n'ai pas ta commande de give...
C'est un équivalent au testfor, juste le testfor...
Code:
#Sample Detector
/execute as @a[distance=..30,nbt={Inventory:[{id:"minecraft:obsidian"}]}] run <COMMAND>

L'argument "r=30" pour les sélecteurs n'existe plus il a été remplacer par "distance=..30"...
Google existe, ça prends moins de 10 secondes...
 

quentinoe66

Aventurier
25 Octobre 2017
14
1
4
21
Merci, je savais pour le remplacement par le /Execute mais ne sachant pas comment celui ci fonctionnait , que les tuto des premières pages de chrome n'étaient en rien un aide car allant très peu loin sur le sujet, et ayant un débit trop faible pour regarder des vidéo j'ai fait de mon mieux... Enfin merci pour la soluce, je vais la tester de ce pas. Et si tu as des tutos/sites explicatifs je les voudraient bien si ça ne te dérange pas.
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Petit truc : Pourquoi chercher à détecter l'obsi dans l'inventaire du joueur? Il suffit de remplacer l'obsidienne au moment où elle est droppée! Plus précisément, avec un petit /data (1.13 aïe aïe aïe)! En plus, ça ne modifie pas le nombre d'items droppés en stacks, ni même sa motion et tous ses autres effets!
Voici comment procéder : Extrèmement facile à faire et réglable, un seul bloc de commande suffit.

La commande, que tu placeras dans un bloc de commande réglé sur répétition-inconditionnel-par la redstone :
Code:
/data merge entity @e[type=minecraft:item,limit=1,nbt={Item:{id:"minecraft:obsidian"}},tag=!Obsidienne] {Tags:["Obsidienne"],Item:{tag:{HideFlags:16,CanPlaceOn:["minecraft:dirt","minecraft:obsidian"]}}}
Pour régler l'obsidienne modifiée :
-ici, l'obsidienne pourra être placée sur de la terre et de l'obsidienne. si tu veux changer ça, c'est dans le "CanPlaceOn".tu peux remplacer "minecraft:dirt" par "minecraft:sand", ou ajouter plus de blocs sur lesquels on pourra placer.
-Si tu veux que les blocs sur lesquels on pourra poser l'obsidienne s'affichent dans la description de l'item, il suffit d'enlever "HideFlags:16,"dans la commande, sans oublier la virgule.

Comment ça marche :
Dès que ça détecte un bloc d'obsidienne droppé n'ayant pas le tag "Obsidienne", ses données sont instantanément changées (avant même d'être récupéré par un joueur ou par un entonnoir) :
-Il obtient le tag "Obsidienne" (Pour ne pas recevoir la commande plusieurs fois, risque de bug)
-Il devient plaçable sur certains blocs (là, j'ai mis la terre et l'obsidienne)


Et voilà! Avec ça, le seul moyen d'obtenir de l'obsidienne sans modification, c'est le /give!

À ton service!
 
Statut
N'est pas ouverte pour d'autres réponses.