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
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.
0 votes
@GiantTree J'ai vu cela sur des serveurs et j'ai pensé que ce serait amusant à faire. Je suis sûr que ça existe, mais je ne sais pas comment le faire.
1 votes
Ces serveurs utilisent généralement des plugins. Votre client envoie toujours un événement au serveur chaque fois que vous frappez avec eux ou que vous les utilisez. C'est comme ça que ça marche.