Résolu Détecter un four allumé dans un rayon autour d'un joueur

FunkyToc

Map Baker
26 Mars 2013
511
112
155
33
France, Paris
funkytoc.fr
Bonjour,

J'ai une épine dans le pieds, et je compte sur vous pour m'en débarrasser ! :mobpig:

Je souhaite détecter si un block est présent dans un rayon autour du joueur.

Vu la demande, je pense qu'il n'y a qu'un /execute pour gérer cela, mais le rayon est problématique. Une idée ?
Code:
 /execute @a ~ ~ ~ detect ~ ~ ~ minecraft:furnace 0 say hi
Peut-on caler un rayon quelques part pour la détection ? Le but est de me débarrasser des coordonnées x y z restrictives.
 

Gaël Erhlich

Installateur de radiateurs
21 Décembre 2014
1 544
382
217
Ici-même
C'est impossible, la carte Kiwi ne te sauvera pas. Tu peux seulement faire plein d'executes.
Après, y'a des moyens de tricher, explique ce que tu veux faire exactement.
 

FunkyToc

Map Baker
26 Mars 2013
511
112
155
33
France, Paris
funkytoc.fr
La finalité de mon code est de modifier un scoreboards seulement si le joueur est a proximité (dans un rayon) d'un block. Idéalement, j'aurai demandé au four de bien vouloir gérer le scorebord, mais il veut pas :fou:
Code:
 /execute @a ~ ~ ~ detect 0 60 0 minecraft:furnace -1 scoreboards add @a[x=0,y=60,z=0,r=5] SCORE 1
Le problème de cette ligne, c'est qu'elle impose d'avoir les coordonnées xyz...
 

Lycoon

Fondateur de la map Minemios
29 Septembre 2012
65
11
85
25
Reims
www.minemios.com
Mets une armor stand invisible sur tes fours :
/summon ArmorStand ~ ~ ~ {CustomName:four,Invisible:1b}
Donne-leur un custom name comme ici pour ne pas mélanger tes armor stands avec d'autres que tu utilises peut-être dans ta map.

Puis avec un command block en repeat tu mets :
execute @e[type=ArmorStand,name=four] ~ ~ ~ testfor @a[r=10]

Pour finir, tu places un comparateur en sortie qui s'activera au passage d'une personne dans la zone. J'ai testé et ça fonctionne.
 

FunkyToc

Map Baker
26 Mars 2013
511
112
155
33
France, Paris
funkytoc.fr
Ton four, il peut donc être n'importe où sur la carte ?
Exactement !


/summon ArmorStand ~ ~ ~ {CustomName:four,Invisible:1b}
execute @e[type=ArmorStand,name=four] ~ ~ ~ testfor @a[r=10]
J'avais pas du tout pensé à ça, ça pourrai marcher ! Mais si je précise un peu plus mon problème : je dois détecter quand le four est en marche (donc passe en minecraft:lit_furnace). Et seulement quand le four est allumé, incrémenter le scoreboard des joueur présent dans le rayon du four.

Mon four est une cheminée qui réchauffe les joueurs présent dans un rayon, seulement si le four est allumé !