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étection clique droit

Discussion dans 'Mapping' créé par WarriorDemon, 28 Déc 2016.

  1. WarriorDemon

    WarriorDemon Explorateur

    Inscrit:
    26 Déc 2016
    Messages:
    69
    Points:
    11
    Sexe:
    Homme
    Salut !

    Je cherche une ou des commande(s) pour détecter les cliques droit sur un bloc.

    Je voudrai que quand on clique droit sur un portail de l'end (le bloc pour mettre les ender perl) avec un crochet, cela give un item au hasard parmi 5 items.

    Merci d'avance :lol:
     
  2. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    Je déplace dans Support>Mapping.

    La détection de clic droit vanilla est très très limitée.
    On peut détecter l'utilisation d'un objet (carrot on a stick, boule de neige, etc....) ou l'interaction avec un bloc ou une entité.
    Il y a peu d'autres libertés notamment concernant le regard du joueur.

    Ici il faudra interagir avec une entité sur le portail, la spécificité d'objet n'aidant absolument pas car elle empêche l'utilisation d'ArmorStand auxquels on donnerait l'item en main, vu que l'item ne sera pas récupéré par le joueur s'il est incorrect.

    Un recourt que je vois ici serait détecter simultanément si le joueur tiens en main un crochet et qu'il parle avec un villageois qu'on placera au niveau du portail et qu'on rendra invisible. Cependant cela n'aura pas la "hitbox" d'un bloc pour le clic droit, il faut limiter la zone de détection du joueur et s'assurer qu'aucun autre villageois ne soit présent dans cette zone.
     
  3. 6teme

    6teme Enter the World

    Inscrit:
    26 Déc 2015
    Messages:
    33
    Points:
    20
    Sexe:
    Homme
    Salut WarriorDemon !
    Pour faire ce clic droit, c'est légèrement compliqué car cela demande un système de clic droit, donc avec des commands blocks placés de manières bien précise pour qu'il n'y ai aucune erreur. Comme faire un tutoriel écrit la dessus est vraiment trop long, j'ai réalisé pour toi cette commande:
    Code (cpp):
    summon FallingSand ~ ~.6 ~ {Block:chain_command_block,TileEntityData:{Command:fill ~ ~ ~ ~ ~2 ~ air},Time:1,Passengers:[{id:FallingSand,Block:redstone_block,Time:1,Passengers:[{id:FallingSand,Block:activator_rail,Time:1,Passengers:[{id:MinecartCommandBlock,Command:setblock ~-1 ~-3 ~ repeating_command_block 1 replace {Command:/scoreboard objectives add CD stat.talkedToVillager,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-1 ~-2 ~ chain_command_block 1 replace {Command:/scoreboard objectives add Obj dummy,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-1 ~-1 ~ chain_command_block 1 replace {Command:/fill ~ ~ ~ ~ ~-2 ~ minecraft:air,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-1 ~ ~ air},{id:MinecartCommandBlock,Command:setblock ~-2 ~-3 ~ repeating_command_block 1 replace {Command:/scoreboard players tag @a add SL {SelectedItem:{id:"minecraft:tripwire_hook",tag:{display:{Name:"Le crochet"}}}},auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~-2 ~ chain_command_block 1 replace {Command:/scoreboard players add @a Obj 1,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~-1 ~ chain_command_block 1 replace {Command:/scoreboard players set @a[score_Obj_min=6] Obj 1,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~ ~ chain_command_block 1 replace {Command:/execute @e[name=5C] ~ ~ ~ /scoreboard players tag @a[r=3] add Ry,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~1 ~ chain_command_block 1 replace {Command:/execute @e[tag=SL] ~ ~ ~ /give @a[tag=SL,tag=Ry,score_CD_min=1,score_Obj_min=1,score_Obj=1] minecraft:diamond_sword,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~2 ~ chain_command_block 1 replace {Command:/execute @e[tag=SL] ~ ~ ~ /give @a[tag=SL,tag=Ry,score_CD_min=1,score_Obj_min=2,score_Obj=2] minecraft:golden_sword,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~3 ~ chain_command_block 1 replace {Command:/execute @e[tag=SL] ~ ~ ~ /give @a[tag=SL,tag=Ry,score_CD_min=1,score_Obj_min=3,score_Obj=3] minecraft:stone_sword,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~4 ~ chain_command_block 1 replace {Command:/execute @e[tag=SL] ~ ~ ~ /give @a[tag=SL,tag=Ry,score_CD_min=1,score_Obj_min=4,score_Obj=4] minecraft:wooden_sword,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~5 ~ chain_command_block 1 replace {Command:/execute @e[tag=SL] ~ ~ ~ /give @a[tag=SL,tag=Ry,score_CD_min=1,score_Obj_min=5,score_Obj=5] minecraft:iron_sword,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~6 ~ chain_command_block 1 replace {Command:/clear @a[tag=SL,tag=Ry,score_CD_min=1] minecraft:tripwire_hook 0 1 {display:{Name:"Le crochet"}},auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~7 ~ chain_command_block 1 replace {Command:/scoreboard players set @a[score_CD_min=1] CD 0,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-2 ~8 ~ air},{id:MinecartCommandBlock,Command:setblock ~-3 ~-3 ~ repeating_command_block 1 replace {Command:/testforblock ~1 ~ ~ minecraft:repeating_command_block 1 {SuccessCount:0},auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-3 ~-2 ~ chain_command_block 9 replace {Command:/scoreboard players tag @e[tag=SL] remove SL,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-3 ~-1 ~ air},{id:MinecartCommandBlock,Command:setblock ~-4 ~-3 ~ repeating_command_block 1 replace {Command:/execute @e[name=PC] ~ ~ ~ /setblock ~ ~ ~ minecraft:end_portal_frame,auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-4 ~-2 ~ chain_command_block 1 replace {Command:/execute @e[name=PC] ~ ~ ~ /summon Villager ~ ~ ~ {Invulnerable:1,Silent:1,NoAI:1,Offers:{},ActiveEffects:[{Id:14,Amplifier:1,Duration:9999,ShowParticles:0b}],CustomName:5C},auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-4 ~-1 ~ chain_command_block 1 replace {Command:/kill @e[name=PC],auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-4 ~ ~ air},{id:MinecartCommandBlock,Command:setblock ~-5 ~-3 ~ command_block 1 replace {Command:/give @p spawn_egg 1 0 {EntityTag:{id:"Silverfish",CustomName:PC,CustomNameVisible:1,Silent:1,Invulnerable:1,ActiveEffects:[{Id:14,Amplifier:0,Duration:2147483647}]}},auto:1,TrackOutput:0b}},{id:MinecartCommandBlock,Command:setblock ~-5 ~-2 ~ air},{id:MinecartCommandBlock,Command:setblock ~ ~-1 ~ command_block 0 1 {auto:1,Command:kill @e[type=MinecartCommandBlock,r=1]}}]}]}]}
    Grâce à elle, le système se créera automatiquement. Tu devras placer l’œuf où tu le souhaites, ce qui créera un portail de l'end avec un villageois dedans. Prends un crochet et renomme le "Le crochet" et fais un clic droit un peu au dessus du portail avec le crochet en main. Aussi tôt, tu recevras au hasard l'une des cinq épées du jeu, et tu perdras un crochet.

    Si tu souhaites modifier les items ou bien le nom du crochet, balade toi dans les commands blocks pour trouver les commandes en question.
    Attention, si tu change le nom du crochet, n'oublie pas de le changer aussi dans la commande de /clear, qui enlève un crochet lorsqu'on l'utilise. Le système est en 1.10.

    Voila j’espère t'avoir aidé, bonne journée ! ^^
     
  4. WarriorDemon

    WarriorDemon Explorateur

    Inscrit:
    26 Déc 2016
    Messages:
    69
    Points:
    11
    Sexe:
    Homme
    Merci pour ce tuto. Mais la commande marche aussi en 1.8 ?
     
  5. 6teme

    6teme Enter the World

    Inscrit:
    26 Déc 2015
    Messages:
    33
    Points:
    20
    Sexe:
    Homme
    Non cette commande ne marche pas en 1.8, car elle utilise les nouveaux commands blocks de la 1.9 et de la 1.10, ainsi que les tags des scoreboards qui n'existent pas en 1.8.
     
  6. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 595
    Points:
    229
    La méthode est fonctionnelle 1.8, c'est le système donné qui ne l'est pas (et avec raison, les systèmes sont bien mieux optimisés en 1.9+).
    En restant en 1.8 il est possible de faire la même chose avec des fill clocks et des scores.
     

Partager cette page