Detecter bloc au dessus d'un autre, péremption d'un aliment et autres questions...

  • Auteur de la discussion Auteur de la discussion Yazzup
  • Date de début Date de début

Yazzup

Architecte en herbe
19 Novembre 2011
104
2
125
27
Bonjour les amis,
Comme vous le savez bien, je ne suis pas très doué avec les commands blocks donc un nouveau dilemne s'offre à moi :
J'aimerais repérer sur une map entière tous les blocs (de terre par exemple) qui ne sont pas sous quelque chose, ça doit avoir l'air d'être simple mais malgré les tutos que j'ai regardé aucun ne m'a aidé (étant donné que le testforblock test seulement à un endroit donné.
Voili voilou merci pour vos prochaines aides et bonne nuit !! :)
Yazzup
 
Il va falloir aller vers le /blockdata ou le /execute @p[] testforblock
Du coup, va aussi falloir nous expliquer ce que tu veux faire plus en détail ^^, parceque tester 80% des blocks présent ne va pas mener à grand chose ! ;)
 
Je compte faire une map faite essentiellement en terre où on pourra ramasser des buissons (feuilles) situé sur de la terre stérile (pour différencier de la terre normale) qui donne de la pastèque lorsqu'il est détruit. Au bout de 5min les buissons reparaissent au même endroit, sur la terre stérile. Pendant la partie le joueur pourra ramasser la terre stérile et la placer près de sa base pour qu'il y est des buissons près de chez lui.
J'espère avoir été clair :/ et merci beaucoup pour ta réponse, je désespérais !
 
Si tu met des armor stand au dessus de la terre stérile, tu peut facilement faire apparaitre les pastèques et faire réapparaitre les buissons (j'y est pas grandement réfléchie mais c'est je pense la bonne manière) Par contre je vois pas comment faire pour les buissons proche de la base, le faire proprement je parle car il y a toujours moyen de faire une zone de détection autour du joueur qui ferait au minimum 5x5x5 en taille, mai c'est petit et assez long a faire.
 
Lorsque j'ai dit des pastèques ce n'était qu'un exemple, mais ca doit être quelque chose qui se mange mais merci tout de même de ta réponse
 
Tel que tu le décris, je penche vers un système de détection mono-cible pour être précis. C'est à dire, qu'il faudra copier/coller un petit système sous chaque bloc de terre stérile, la GA-LERE.

Mais le plus réalisable reste la détection de Ryuma avec les armorstand invisible. Vu que c'est une entité on peu lui donner un scoreboard individuel et donc avoir un minuteur individuel efficace. Rien n’empêche de mettre un buisson en déco :). Il faudra juste que le système de minuterie soit dans les chunks chargés!
 
Il y'a une détection possible. Mais c'est assez difficile à expliquer.

Tu summon sous tout les joueurs une rangée d'armorstands sur chaques blocks du nord au sud et à environs 10 blocks de par et d'autres du joueurs à 5 blocks sous le joueurs. Ces armorstands , qu'on va appeler "monter" , vont être tp en relatif de 0.1 en boucle et vont être tuer quand elles seront à 5 blocks au dessus du joueurs.

Sur ces armorstands , il faut analyser chaques blocks de l'ouest à l'est et y summon une ArmorStand "Dirt" pour capter l'endroit. Donc ça seras des commandes du style
/execute @e[type=ArmorStand,name=Monter] ~ ~ ~ detect ~3 ~ ~ dirt 2 /execute @e[c=1] ~ ~ ~ detect ~3 ~1 ~ air 0 /summon ArmorStand ~3 ~ ~ {CustomName:"Dirt"}


Donc , il faut bien analyser chaques blocks de par et d'autres de chaques armorstands avec 10 blocks de distance.

Du coups , tu te retrouves avec une armorstand "Dirt" sur chaques blocks de dirt avec de l'air au dessus. Il faut encore faire un petit système. Il faut tuer tout les nouvelles armorstand nommé "dirt" qui vont se stacker sur l'ArmorStand déjà posé.


Si tu veux , j'ai déjà utilisé ce procédé sur un système perso , que tu peux récupérer pour l'utiliser.





J'espère que ça t'a mis sur une voie :)
 
Je pense avoir trouvé une solution à mon problème, merci beaucoup ! (gg pour les feuilles qui tombent de l'arbre j'aime vraiment bien)
J'aurai une autre question à poser mais qui n'a aucun rapport mais je préfère continuer dans cette discution pour ne pas en créer plein : est il possible d'identifier grâce à une commande ou au scoreboard l'aliment que l'on mange ? Ça serait par exemple lorsqu'on mange un pain notre objectif "pain" augmente. :)
 
A sa par contre je ne crois pas c'est possible, simplement du moins.
En effet c'est surement possible, les commandes offre des quantités astronomiques de possibilité, mais je ne vois pas trop comment faire. Il n'y a pas de scoreboard de détection de mangage de pain, mais on peut détecter qu'un joueur tient du pain dans sa main, peut être avec un timer?
C'est compliqué mais pas impossible je pense.
 
Tu peux tester quand il a un pain en main , et que dans le même slot il disparait , sans que le joueur ai touché aux score drop , ou que le joueur ai ouvert son inventaire. Mais c'est pas très fiable :/

Ou alors , tu fais en sortes d'utiliser un detecteur de ClickDroit via une ArmorStand ou un pnj , et tu fais toi même manger le joueur avec l'effet saturation. Problème , le "mangement" (J'invente des mots) sera instantanées.