Hay varias formas de detectar que un jugador hace clic derecho en un cabeza, pues ésta puede localizarse como bloque en el suelo o como equipamiento de una entidad invisible. De cualquier manera, el sistema que se suele utilizar para, estrictamente, el clic derecho se basa en el incremento que hace el scoreboard de
stat.talkedToVillager con los aldeanos que carecen de tradeos.
Lo principal es ubicar un aldeano invisible sin tradeos en la localización de la cabeza que de la que quieres detectar la interacción con el jugador. Esto se hace mediante el siguiente comando:
/summon minecraft:villager ~ ~ ~ {Tags:["Clic"],Profession:0,Offers:{},Invulnerable:1b,NoAI:1b,Silent:1b,PersistenceRequired:1b,ActiveEffects:[{Id:14b,Amplifier:1b,Duration:2147483647,ShowParticles:0b}],Team:"click",NoGravity:1b}
Cualquier scoreboard con el criterio
stat.talkedToVillager añadirá un punto al jugador cada vez que éste haga clic derecho en un aldeano. Colocando el aldeano donde esté la cabeza simularemos que la cabeza es la que detecta el clic derecho. Dicho esto, comienzo a explicarte cómo preparar el sistema de scoreboard y los comandos necesarios:
- Antes de nada se crea el scoreboard con el criterio apropiado:
/scoreboard objectives add clickVillager stat.talkedToVillager
- Luego se crea un equipo. Yo le he llamado "click":
/scoreboard teams add click
- Hace falta quitar la opción de collisionRule para que el aldeano no interfiera con el jugador:
/scoreboard teams option click collisionRule never
- Al igual que la opción de seeFriendlyInvisibles para que el aldeano quede totalmente invisible:
/scoreboard teams option click seeFriendlyInvisibles false
- Por último, para que tenga efecto la configuración de los scoreboards, añade a todos los jugadores que vayan a emplear la detección de clic al equipo en el que ya está el aldeano:
/scoreboard teams join click @a
El siguiente paso es crear el aldeano sin tradeos utilizando el comando que te puse más arriba (escoge el de la versión que estés utilizando). Lo vuelvo a escribir para seguir el orden de colocación de comandos (por el momento todos estos han sido de activar una sola vez al crear el sistema en el mapa):
/summon Villager <x.> <y.> <z.> {Tags:["Click"],Profession:0,Offers:{},Invulnerable:1b,NoAI:1b,Silent:1b,PersistenceRequired:1b,ActiveEffects:[{Id:14b,Amplifier:1b,Duration:2147483647,ShowParticles:0b}],Team:"click",NoGravity:1b}
/summon minecraft:villager <x.> <y.> <z.> {Tags:["Click"],Profession:0,Offers:{},Invulnerable:1b,NoAI:1b,Silent:1b,PersistenceRequired:1b,ActiveEffects:[{Id:14b,Amplifier:1b,Duration:2147483647,ShowParticles:0b}],Team:"click",NoGravity:1b}
Es importante que resetees el scoreboard con el criterio
stat.talkedToVillager. Hazlo utilizando este comando:
/scoreboard players set @a clickVillager 0
Aquí comienza la cadena de comandos principal que servirá para ejecutar una acción cuando el jugador haya hecho clic derecho "en la cabeza":
- En un bloque de comandos de repetición, de ejecución por redstone, pones el siguiente comando. Detecta a los jugadores, en un radio de 10 bloques de los aldeanos que detectan el click derecho, que han hecho click derecho en uno de ellos y ejecuta un comando (en tu caso será de añadir un punto)
/execute @e[type=Villager,tag=Click] ~ ~ ~ /scoreboard players add @a[score_clickVillager_min=1,r=10] <scoreboard_de_puntos> 1
- En un bloque de cadena, siempre activo y condicional con respecto al bloque de comandos anterior, pones el comando para eliminar al aldeano, con el fin de que no dé más puntos:
/execute @a[score_clickVillager_min=1] ~ ~ ~ /kill @e[type=Villager,tag=Click,c=1,r=10]
- En el siguiente bloque de comandos, de cadena, siempre activo y no condicional, habrá que poner el comando para preparar la siguiente detección de clic derecho, es decir:
/scoreboard players set @a[score_clickVillager_min=1] clickVillager 0
Te dejo la imagen con todos los comandos para que los organices con facilidad así como una descarga del mecanismo en formato
schematic para que lo importes mediante McEdit:
Schematic para la versión 1.10:
github.com/KaliNuska/Minecraft/blob/master/Mapas/[CMD] Right click detection on static object [1.10].schematic.
Schematic para la versión 1.11:
github.com/KaliNuska/Minecraft/blob/master/Mapas/[CMD] Right click detection on static object [1.11].schematic.
Esto es todo.
Si tienes alguna pregunta, no dudes en añadirla para buscarle una respuesta.