détection de block

pierre08

Mineur des cavernes
2 Avril 2015
52
2
28
27
Bonjour à toutes et à tous,
Je cherche le moyen de give un item à un joueur lorsque ce dernier pose un block précis.
Par exemple lorsque le joueur pose une tête de creeper, on lui give 3 TNT, mais je ne veux pas que le joueur soit obligé de poser la tête à un endroit précis mais qu'il puisse la poser où il veut.
Je pense savoir que cela est possible avec les scoreboards et les stats mais mes connaissances en scoreboards s'arrête justement au stats ^^. Si vous connaissez le système à réaliser pouvez vous m'indiquer les commandes, pour la redstone je sais comment faire :)
Merci de votre aide !!!
 
Bonjour !

Créer un objectif au départ :
scoreboard objectives add SKULL3TNT dummy

Boucle :
execute @p ~ ~ ~ fill ~-6 ~-6 ~-6 ~6 ~6 ~6 air 0 replace skull
scoreboard players set @e[type=Item] SKULL3TNT 1 {Item:{id:minecraft:skull}}
execute @e[type=Item,score_SKULL3TNT_min=1] ~ ~ ~ give @p tnt 3
kill @e[type=Item,score_SKULL3TNT_min=1]

Mais le problème (si c'en est un) est que l'item s'il est drop et pas forcément posé ça fonctionnera aussi.
Tu peux corriger ce problème par un comparateur qui détecte le /fill et qui envoie un courant aux autres commandes :

Boucle :
execute @p ~ ~ ~ fill ~-6 ~-6 ~-6 ~6 ~6 ~6 air 0 replace skull
Comparateur :
scoreboard players set @e[type=Item] SKULL3TNT 1 {Item:{id:minecraft:skull}}
execute @e[type=Item,score_SKULL3TNT_min=1] ~ ~ ~ give @p tnt 3
kill @e[type=Item,score_SKULL3TNT_min=1]

Voilà :D

Mais pour la 2ème méthode il peut y avoir des "bugs" si on pause plusieurs têtes en même temps rapidement, dans ce cas il faudra donc ramasser par terre les têtes avant d'en poser une autre sinon les autres seront perdues.
Voilà, après y a peut-être d'autre moyen... :)

PS: c'est embêtant je n'ai pas réussi à mettre les commandes en bleu et ce qu'on pouvait y changer en vert, ça rentre en conflit avec le texte...
 
BlueFuSion348 c'est pas trop de que pierre08 demande :D

voici la solution :

/scoreboard objectives add skullowner dummy
/scoreboard objectives add 3TNT stat.useItem.minecraft.skull

sur une clock (dans cet ordre) :

/scoreboard players set @a skullowner 1 {SelectedItem:{id:minecraft:skull,Damage:4s}}
/give @a[score_skullowner_min=1,score_3TNT_min=1] minecraft:tnt 3 0
/execute @a[score_skullowner_min=1,score_3TNT_min=1] ~ ~ ~ /fill ~15 ~-2 ~15 ~-15 ~5 ~-15 air 0 replace skull
/scoreboard players set @a[score_skullowner_min=1] skullowner 0
/scoreboard players set @a[score_3TNT_min=1] 3TNT 0

explication :
dès qu'un joueur a une tête de creeper dans la main, il a un score de 1 pour l'objectif "skullowner"
dès qu'il place une tête, nimporte la quelle, il à un score de 1 pour l'objectif "3TNT"
ensuite il give 3 tnt au joueur ayant ces 2 événements confondu
puis, le système remets à 0 les objectifs "3TNT" et "skullowner"
enfin, il remplace les tête par de l'air

/!\ /!\ /!\ lors du /fill , les têtes dropent /!\ /!\ /!\
 
Haaa GG kn4cki, on en apprend des choses.
C’est donc ça les fameux stat, et celui-ci compte quand on pose un bloc précis.

Et il n’y a aucun bug en plus :D

/give @a[score_skullowner_min=1,score_3TNT_min=1] minecraft:tnt 3 0
Le give se fait si ces 2 conditions sont remplies ? C’est bien ça ? C’est merveilleux !!!
Et ça marche avec toutes les autres commandes ?
Peut-on mettre plus de 2 conditions ?
Moi j’étais super content quand j’ai trouvé par moi-même que l’on pouvait "indéfiniment" enchainer les /execute detect, ça m’a permis en 1 seul command_block de faire instantanément une énorme porte NOR pour voir si 10 blocs étaient bien présent à tel endroit, et si oui, ça envoie une commande, le tout dans 1 seul command_block :D

Je croyais qu’il y allait avoir un bug avec la remise à 0 mais en fait non :
J’aurais peut-être pu faire inutilement ça :
/scoreboard players set @a[score_skullowner_min=1,score_3TNT_min=1] skullowner 0
/scoreboard players set @a[score_3TNT_min=1] 3TNT 0
Car quand on l’a en main l’objectif est à 1, puis le reset le rend à 0, mais comme on l’a encore en main il est aussi tôt à 1, etc...
Je croyais que si on le posait dans le laps de temps où skullowner était à 0 à cause du reset ça allait buger, mais non… :D
Comment ça se fait que ça n’arrive pas ? Ça n’a pas le temps d’être pris en compte ?

Et au passage je ne comprends pas pourquoi tu as changé les coordonnées relatives du /fill ?
Car 6 est la longueur maximum que le bras peut atteindre.
(Au passage je me suis bien amusé avec ceci dans une boucle : execute @p ~ ~ ~ fill ~-6 ~-6 ~-6 ~6 ~6 ~6 air XD)

Et tu m’as appris une autre chose : on n’est pas obligé de faire 9 fois une détection SelectedItemSlot !
En fait depuis peu de temps j’essaie de ne plus utiliser les comparateurs, et je me demandais si il y avait moyen de s’en passer totalement avec d’autres méthodes plus réactive ou si pour certains cas on est obligé de les utiliser ?

Oui, quand on /fill le skull il se drope. Est-ce une bonne méthode pour le /kill comme ceci ?
/scoreboard players set @e[type=Item] 3TNT 1 {Item:{id:minecraft:skull}}
/kill @e[type=Item,score_3TNT_min=1]
Mais comment faire pour ne pas qu’il soit /kill quand on le drope nous-même ?
Désolé de poser des questions, ça dépend ce que souhaite pierre08 :D

Merci kn4cki, tu m’as aidé aussi :)
 
Re !
alors il me semble que l'on peut détécté lorsque l'item est drop du joueur ou d'un block par apport a son temps de vie ou je sais pas trop quoi. Mais il faut que je retrouve sa sur reddit parce que le post date ducoup c'est chaud de le retrouvé :D
 
Re ! Ah d'accord je me renseignerais.

Mais le problème est que si c'est en fonction de sa naissance, que se soit le joueur qui drope ou le bloc, ils naitront en même temps donc y a aucun moyen de différencier à ce niveau là, peut être autrement... A moins que l'on puisse différencier si c'est une naissance issue d'un drop de joueur ou d'un drop de bloc, là oui.

Et au fait j'y pense ! Il ne sert à rien le /scoreboard skullowner ?!
Je l'ai enlevé et ça marche !
 
Re ! Ah d'accord je me renseignerais.
Et au fait j'y pense ! Il ne sert à rien le /scoreboard skullowner ?!
Je l'ai enlevé et ça marche !

/scoreboard objectives add skullowner dummy
/scoreboard objectives add 3TNT stat.useItem.minecraft.skull

ces deux commandes son juste pour ajouter le scoreboard donc il faut juste le marquer dans le chat ;)
 
Oui je sais, mais j'ai testé comme ceci :

/scoreboard objectives add 3TNT stat.useItem.minecraft.skull

/give @a[score_3TNT_min=1] minecraft:tnt 3 0
/execute @a[score_3TNT_min=1] ~ ~ ~ /fill ~15 ~-2 ~15 ~-15 ~5 ~-15 air 0 replace skull
/scoreboard players set @a[score_3TNT_min=1] 3TNT 0

Et ça marche.
Comment ça se fait ?
Il n'y a pas besoin de savoir qu'on l'a sur soit, ce qui compte c'est de le poser, c'est donc qu'on l'avait sur soit si on réussi à le poser :D
Me trompé-je ? :D
 
Oui je sais, mais j'ai testé comme ceci :

/scoreboard objectives add 3TNT stat.useItem.minecraft.skull

/give @a[score_3TNT_min=1] minecraft:tnt 3 0
/execute @a[score_3TNT_min=1] ~ ~ ~ /fill ~15 ~-2 ~15 ~-15 ~5 ~-15 air 0 replace skull
/scoreboard players set @a[score_3TNT_min=1] 3TNT 0

Et ça marche.
Comment ça se fait ?
Il n'y a pas besoin de savoir qu'on l'a sur soit, ce qui compte c'est de le poser, c'est donc qu'on l'avait sur soit si on réussi à le poser :D
Me trompé-je ? :D

Utilise les autres tête tu verras que sa fonctionnent avec alors qu'avec la commande et bah sa sécurise que sur la tête de creeper. Cordialement (le mec qui fait trop le serieux :rofl: )