1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Détecter lorsqu'un blocs et minée

Discussion dans 'Commands blocks & Redstone' créé par PalmierPale, 3 Mar 2019.

  1. PalmierPale

    PalmierPale Nouveau

    Inscrit:
    3 Mar 2019
    Messages:
    5
    Points:
    0
    Sexe:
    Homme
    Bonjour !

    Je souhaite pouvoir détectée lorsqu'un joueur mine un minerais d’émeraude, est donc remplacée ensuite l'émeraude minée par un certain nombre de diamant, sans que le joueur garde l'émeraude sur lui.

    Mais je ne peut pas utilisée la détection d'émeraude au sol vu que si un joueur obtient une émeraude (Par le biais d'échange avec pnj) est la jette au sol, il aura les diamants, et je veut pas sa.

    Donc la seule solution est de détectée lorsque dans l'immensité du monde Minecraft, un minerais d'émeraude est minée, puis ensuite tuée l'item avant qu'il soit obtenue, et le remplacée par du diamant.

    Si vous avez quelconque question, n'hésitez pas a me les posez.

    Merci pour votre aide.

    Bonne après-midi
     
  2. rexmine05

    rexmine05 Explorateur

    Inscrit:
    21 Fev 2017
    Messages:
    56
    Points:
    82
    Tu fait un /clear de l'émeraude dans un commande bloc à répétition puis tu met un commande bloc en chaine avec le conditionnel d'activé avec la commande /give pour les diamants
     
  3. C'est une idée impossible ce que tu dis là, à moins que tu veux faire un détecteur pour tous les minerais d'émeraude dans ton monde mc.
     
  4. PalmierPale

    PalmierPale Nouveau

    Inscrit:
    3 Mar 2019
    Messages:
    5
    Points:
    0
    Sexe:
    Homme
    Rexmine05: Merci pour la réponse, mais ce n'est pas possible dans mon cas, le joueur peut avoir de l’émeraude dans son inventaire, il ne peut juste pas en miner.

    LordDeadDemon: Oui c'est pour la totalité du monde mc

    Sinon merci pour vos réponses !

    Bonne soirée !
     
  5. Myuto

    Myuto Nouveau

    Inscrit:
    30 Juin 2017
    Messages:
    11
    Points:
    27
    Sexe:
    Homme
    Bonjour bonsoir ! Je sors de nul part pour vous donner une idée !

    Tu peux faire un scoreboard avec "minecraft.mined:minecraft.emerald_ore" et tu execute un remplacement de toutes les émeraudes à 6 block autour du joueur qui a 1 dans le scoreboard puis tu lui remets 0. Après à test si il n'y a pas de problème

    Au revoir !
     
  6. Oo

    Bon, on ne peut pas faire de monomot, c'est juste pour dire que tu m'as appris un truc.
     
  7. PalmierPale

    PalmierPale Nouveau

    Inscrit:
    3 Mar 2019
    Messages:
    5
    Points:
    0
    Sexe:
    Homme
    Merci pour la réponse, mais "minecraft.mined:minecraft.emerald_ore" n’existe pas.
    Sinon merci tout de même pour la réponse détailler et qui répond totalement à ma question.

    Bonne après midi
     
  8. Myuto

    Myuto Nouveau

    Inscrit:
    30 Juin 2017
    Messages:
    11
    Points:
    27
    Sexe:
    Homme
    Tu es en quelle version ?
    upload_2019-3-4_16-34-6.png

    car bon c'est pas comme si j'avais test mais en 1.13.2 ça marche :
    [​IMG]

    ici je remplace l'émeraude par deux diamant, j'ai miné avec une fortune pour te montrer que ça marche avec plus de condition, comme tu peux le voir dans le chat, la commande ne tourne pas en rond. J'aime pas trop donner des solutions toutes faites mais tien :
    Code (cpp):
    /execute at @a[scores={emerald=1}] run execute at @e[distance=..6,type=minecraft:item,nbt={Item:{id:"minecraft:emerald",Count:1b}}] run data merge entity @e[limit=1,type=minecraft:item,nbt={Item:{id:"minecraft:emerald",Count:1b}}] {Item:{id:"minecraft:diamond",Count:2b}}
    Dans un commande block repeat Unconditional Always active ou une function
    Code (cpp):
    scoreboard players set @a emerald 0
    Dans un commande block chain Conditional Always active ou à la suite de la function


    Le seul défaut c'est qu'il transformera toutes les émeraude en diamand à côté du joueur, pour la perfectionner il faudrait récup les coordonné du bloc cassé pour transormre que dedans, ou donné un tag à tout émeraude jeter
     
    • J'approuve J'approuve x 1
  9. PalmierPale

    PalmierPale Nouveau

    Inscrit:
    3 Mar 2019
    Messages:
    5
    Points:
    0
    Sexe:
    Homme
    Je suis en 1.12.2, sa doit être pour sa
     
  10. rexmine05

    rexmine05 Explorateur

    Inscrit:
    21 Fev 2017
    Messages:
    56
    Points:
    82
    Donc en 1.12.2 la commande c'est
    Code (cpp):
    /scoreboard objectives add emeraude stat.mineBlock.minecraft.emerald_ore
     
    • J'approuve J'approuve x 1
  11. Myuto

    Myuto Nouveau

    Inscrit:
    30 Juin 2017
    Messages:
    11
    Points:
    27
    Sexe:
    Homme
    Et le /execute sera encore plus compliqué à faire, est-ce que j'ai le courage ? Je ne pense pas
     
  12. PalmierPale

    PalmierPale Nouveau

    Inscrit:
    3 Mar 2019
    Messages:
    5
    Points:
    0
    Sexe:
    Homme
    Merci pour toutes vos réponses sa fait vraiment plaisir ! Un bon forum sa. Bonne fin de soirée ! :meuh:
     
  13. rexmine05

    rexmine05 Explorateur

    Inscrit:
    21 Fev 2017
    Messages:
    56
    Points:
    82
    le execute ca donne ca : (je ne sais pas faire un selecteur avec un nbt donc je passe par un tag)
    Code (cpp):
    /execute @a ~ ~ ~ /scoreboard players tag @e[r=6,type=Item] add emeraude {Item:{id:"minecraft:emerald"}}
    ensuite :
    Code (cpp):
    /entitydata @e[tag=emeraude] {Item:{id:"minecraft:diamond",Count:2b}}
    puis tu réinitialise le scoreboard emeraude

    de rien ;)
     
    • J'approuve J'approuve x 1
  14. Eglaios

    Eglaios Enter the World

    Inscrit:
    20 Mar 2019
    Messages:
    40
    Points:
    20
    Sexe:
    Homme
    le slash marche pour les commandes emmenées par le /execute? Je crois qu'en 1.13, ça n'est plus accepté...
    De toutes façon, ce /execute ne conviendrait pas vu que si une émeraude est droppée, elle se transformera aussi en diamant.

    En tout cas, j'ai trouvé comment faire ça en 1.13 : Je ne sais pas si c'est en 1.12 aussi, mais chaque item droppé par un joueur obtient le tag "Thrower:{UUID}"
    Le sélecteur pour cibler une émeraude minée sera donc :
    Code (cpp):
    @e[type=minecraft:item,nbt={Item:{id:"minecraft:emerald"}},nbt=!{Thrower:{}}]
    Traduction : un item d'émeraude qui n'a pas de tag "Thrower" (donc pas droppé)

    Le gros ennui : En 1.12, le tag "Thrower" apparaît aussi, mais il est juste entre guillements et désigne non pas l'UUID du joueur, mais bien son pseudo, ce qui signifie que si je tape [Thrower:""], ça cherchera la valeur "" pour le tag thrower de l'item, donc un nom de joueur inexistant... Je vais voir comment je peux faire...
     
    #14 Eglaios, 16 Avr 2019
    Dernière édition: 16 Avr 2019
  15. Eglaios

    Eglaios Enter the World

    Inscrit:
    20 Mar 2019
    Messages:
    40
    Points:
    20
    Sexe:
    Homme
    OK OK, tu peux mettre ce post en résolu : J'ai trouvé le parfait système 100% accurate! Composé de 4 blocs de commande, permet un drop de diamant uniquement par le minerai d'émeraude, également fonctionnel avec TNT,voici la merveille :
    2019-04-15_20.22.22.png
    Les paramètres : Tous inconditionnels et toujours actifs, le premier en mode répétition et le reste en chaîne


    Les commandes :

    De gauche à droite :
    Code (cpp):
    scoreboard players tag @e[type=xp_orb] add True {Age:0s}
    Code (cpp):
    /execute @e[type=xp_orb,tag=True] ~ ~ ~ scoreboard players tag @e[type=Item] add True {Item:{id:"minecraft:emerald"},Age:0s}
    Code (cpp):
    entitydata @e[type=Item,tag=True] {Item:{id:"minecraft:diamond"},Tags:[]}
    Code (cpp):
    scoreboard players tag @e[type=xp_orb] remove True {Age:1s}


    Ce système est EXTRÈMEMENT efficace! Basé sur le drop de xp ainsi que la durée de vie d'entité, voici le concept :

    Tout d'abord, quand un bloc d'émeraude est brisé, il l'ache de l'émeraude ainsi que du xp :
    1. Le système met le tag "True" à chaque orbe d'xp avec le tag "Age:0s" (Venant tout juste d'apparaître)
    2. Chaque orbe avec le tag "True" ajoute le tag "True" aux items d'émeraude dans un rayon de 1 bloc avec un "Age" de 0
    3. Tout item possédant le tag true est changé en diamant et se fait retirer son tag (Pour éviter le spam sur une entité)
    4. Les orbes d'xp avec le tag "Age:1s" se voient retirer leur tag "True", les empêchant de transformer d'autres items
    Si vous avez suivi, le processus dure précisément 1 tick. Simplement impossible à glitch ou usebug.


    Bref, pour pouvoir transformer des émeraudes en diamant sans miner, il faudrait arriver à faire apparaître précisément au même tick une orbe d'xp ainsi qu'une émeraude. J'ai essayé avec des dispensers et des répéteurs, c'est totalement irréalisable.

    D'ailleurs, le système en 1.13.2 de ma réponse précédente était trop risqué. Quand jeté par un dropper, un objet n'a pas de tag "Thrower", ce qui permettrait un usebug facile.
     
    • J'approuve J'approuve x 1
    • Utile Utile x 1
    #15 Eglaios, 16 Avr 2019
    Dernière édition: 16 Avr 2019

Partager cette page