5 votes

Comment puis-je appliquer un effet lorsqu'un joueur fait un clic gauche/clic droit avec un objet en main ?

Existe-t-il un moyen de faire en sorte qu'un effet soit appliqué lorsque je fais un clic gauche/clic droit sur un certain élément ? Je sais que vous pouvez appliquer des attributs au port d'une armure et à d'autres choses, mais je veux que lorsque vous utilisez l'objet, il applique un effet sur votre joueur.

Par exemple, disons que je veux que lorsque je clique avec le bouton droit de la souris sur un certain objet (disons un lingot de fer qui m'a été donné), je bénéficie d'une accélération du saut pendant 10 secondes. C'est un peu comme une potion, d'une certaine façon.

Est-ce possible avec les blocs de commande/commandes/toutes les mods ?

0 votes

Je ne comprends pas bien ce que vous essayez de faire, désolé. Vous voulez dire comme dans les mods où lorsque vous faites un clic droit sur une épée dans votre main, elle tire une boule de feu ou quelque chose comme ça.

0 votes

@Skye Je vais modifier ma question pour donner un exemple

0 votes

Avec les mods/plugins, c'est certainement possible, mais dans la version vanilla de Minecraft, vous n'obtenez pas un événement appelé si l'objet ne fait rien de lui-même.

4voto

MrLemon Points 17073

Il y a est un moyen de faire ça dans Vanilla en utilisant des commandes. L'idée générale vient de betathedata sur reddit mais les commandes ci-dessous sont ma propre implémentation de la technique.

Cette méthode s'appuie sur le fait qu'un villageois sans commerce offre n'a pas d'interface commerciale mais un clic droit sur l'objet comptera quand même comme une "conversation" avec lui. Par conséquent, il suffit d'avoir un villageois invisible à votre emplacement tout en tenant un objet spécifique pour faire l'affaire.

Objectifs du tableau d'affichage

Pour que cela fonctionne, nous devons mettre en place trois objectifs.

scoreboard objectives add holdingItem dummy
scoreboard objectives add holdTime stat.playOneMinute
scoreboard objectives add rightClick stat.talkedToVillager

Les deux premiers permettent de savoir quand un joueur vient de sélectionner un élément spécifique, le troisième est celui que nous voulons mettre discrètement à 1.

Commandes d'horloge

Tout d'abord, mettez en place une horloge de remplissage suffisamment grande pour exécuter au moins 8 commandes. Commencez par

scoreboard players set @a holdingItem 0
scoreboard players set @a holdingItem 1 {SelectedItem:{id:minecraft:iron_ingot}}
scoreboard players reset @a[score_holdingItem=0] holdTime

Remplacer le SelectedItem avec ce que vous voulez. Vous pouvez ajouter plusieurs de cette deuxième commande si vous voulez qu'elle fonctionne pour plusieurs éléments.

execute @a[score_holdTime=1] ~ ~ ~ summon Villager ~ ~ ~ {CustomName:"RightClicky",Offers:{Recipes:[]},NoAI:1,Silent:1,ActiveEffects:[{Id:14,Duration:9999,ShowParticles:0b},{Id:11,Amplifier:4,Duration:9999,ShowParticles:0b}]}
execute @a[score_holdTime_min=2] ~ ~ ~ tp @e[type=Villager,name=RightClicky,r=2,c=1] @a[c=1]
execute @a[score_holdingItem=0] ~ ~ ~ tp @e[type=Villager,name=RightClicky,r=2,c=1] ~ -100 ~

La première invoquera un villageois appelé RightClicky, qui ne bouge pas, ne parle pas et possède l'Invisibilité et la Résistance V (=Invulnérabilité), lorsque vous échangez avec le ou les objets que vous avez spécifiés ci-dessus.

Les deuxième et troisième commandes téléportent le villageois vers vous ou dans le vide (le tuant sans que les effets des particules ne soient visibles), selon que vous tenez toujours votre objet ou non. Cette téléportation fait que le villageois est un peu en retard par rapport à vous, et ne fonctionne donc pas toujours lorsque vous courez.

Après avoir introduit ces commandes, votre RightClick Le score augmentera chaque fois que vous ferez un clic droit en tenant votre objet. À ce stade, placez toutes les commandes qui sont censées être déclenchées par le clic droit. Utilisez @a[score_RightClick_min=1] pour le ciblage. Par exemple :

effect @a[score_RightClick_min=1] minecraft:jump_boost 10 5

À la toute fin de votre horloge, exécutez

scoreboard players set @a RightClick 0

pour réinitialiser le système afin de détecter un autre clic droit.


La détection d'un clic gauche devrait également être possible. Après avoir invoqué le villageois, vous pouvez détecter si un joueur frappe il, comme détaillé dans cette question . L'association de ces deux éléments est laissée au lecteur comme un exercice.

0 votes

J'ai décidé de déplacer ma réponse de cette question ici, parce que je préfère celle-ci, et parce que je doute fort que l'autre OP voie un jour la réponse. L'autre question devrait être fermée en tant que doublon dès que possible (c'est-à-dire lorsque la réponse ici aura reçu un vote positif).

0 votes

Je ne peux pas vérifier si cela fonctionne pour le moment mais je le ferai à mon retour de vacances. Je vais supposer que c'est correct et si ça ne l'est pas, je l'enlèverai comme réponse correcte. Merci pour la réponse complète ! J'espère pouvoir faire des choses sympas avec ça !

0 votes

Pour la commande d'invocation de villageois, j'obtiens l'erreur [11:05:19] Impossible d'exécuter 'tp @e[type=Villager,name=RightClicky,r=2,c=1] @p' en tant que Chickenator__ et les autres commandes d'exécution indiquent qu'il s'agit d'une commande inconnue.

0voto

Jann Points 101

Il y a un critère de tableau de bord qui teste si un joueur fait un clic droit et une balise de données /testfor pour tenir un objet. Si vous attachez une porte AND pour tester si un joueur tient un lingot de fer et fait un clic droit, cela devrait être possible.

0 votes

Pouvez-vous m'indiquer la commande testfor et scoreboard ? Je n'arrive pas à la trouver.

-4voto

timmyg Points 281

Je ne suis pas sûr de comprendre mais si vous êtes sur un serveur, vous pouvez utiliser le plugin appelé "Skript" ; il est vraiment utile et vous pouvez faire beaucoup de choses avec !

0 votes

Excellente réponse, si seulement c'était une option viable pour les cartes solo ou si cela pouvait donner une description à "beaucoup de choses" :P

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X