Mausklick-Sensor (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
Gruppe: Grid Ketten-Befehlsblock.png
Systeme

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen
Die vorgestellte Technik kann in der Mechanik-Welt angesehen werden.
Roter Sand.png
Alle Techniken auf dieser Seite sind noch nicht in der aktuellen Mechanik-Welt vorhanden.
In einem der nächsten Updates werden sie dort hinzugefügt werden.

Für den Mausklick-Sensor in Minecraft gibt es keine API, wie es beispielsweise eine für Java gibt, für die man alle Maustasten-Belegungen abfragen kann. Es gibt daher andere verschiedene Wege um das zu realisieren. Beispielsweise kann man, mit einer Karottenrute den Rechtsklick abfragen. Ebenfalls kann man auch abfragen ob man einen Dorfbewohner rechtsgeklickt hat. Rechtsklicks sind auch abfragbar, in dem man Rüstungsständer mit Armen vor dem Spieler teleportiert und schaut ob er vom Spieler Gegenstände hält, die durch einen Rechtsklick dort hingelegt wurden. Linksklicks lassen sich indirekt messen, in dem man prüft ob eine Kreatur direkt vor dem Spieler Schaden erlitten hat.

Variante 1[Bearbeiten | Quelltext bearbeiten]

Mausklick-Sensor (Befehle) Bild 1.1.png

Dieser Mausklick-Sensor erkennt das Rechtsklicken auf einer Karottenrute. Die Karottenrute ist normalerweise gedacht um Schweine zu steuern, aber das Punkte-Ziel erfasst auch dann einen Rechtsklick, wenn man nicht auf einem Schwein reitet. Wenn man die Karottenrute in der Hand hält und rechtsklickt, so wird eine Titel-Nachricht in der Schnellleiste angezeigt und man bekommt ein Geräusch zu hören.

Einschalten
  • Befehl 1.1 Es wird ein Punkte-Ziel erstellt, das erfasst, ob man mit einer Karottenrute rechtsklickt.
  • Befehl 1.2 Allen Spielern im Umkreis von 15 Blöcken wird eine Karottenrute mit einer bestimmten Eigenschaft gegeben und diese besitzt eine Beschreibung, wenn man im Inventar mit der Maus über sie fährt.
Wiederholen
  • Befehl 1.3 Bei allen Spielern die einen Rechtsklick auf die Karottenrute gemacht haben, wird eine Titeln-Nachricht angezeigt, um zu signalisieren, dass der Rechtsklick erfasst wurde.
  • Befehl 1.4 Damit der Rechtsklick auch vertont ist, wird bei allen Spielern vor Ort ein Amboss-Geräusch abgespielt.
  • Befehl 1.5 Damit der Rechtsklick nur in dem Zeitpunkt erkannt wird, wo er getätigt wurde, wird der Punkte-Wert auf null gesetzt.
Ausschalten
  • Befehl 1.6 Das Punkte-Ziel wird wieder entfernt, somit auch alle Werte die die Spieler besessen haben.
  • Befehl 1.7 Die Karottenruten die an die Spieler gegeben wurden werden wieder entfernt. Die werden durch die spezielle Eigenschaft erkannt.
  • Befehl 1.8 Ebenfalls werden die Karottenruten entfernt, falls man sie auf den Boden geworfen hatte.



Befehlsblöcke mit Befehlen:
scoreboard objectives add PZMausKS.1Klick minecraft.used:minecraft.carrot_on_a_stick ["Mausklick-Sensor.1: ",{"text":"Mausklick mit einer Karottenrute","bold":true}]
give @a[distance=..15] minecraft:carrot_on_a_stick{EigMausKS.1Alle:true,display:{Lore:['"Klicke Rechtsklick auf die Rute"'] } }


title @a[scores={PZMausKS.1Klick=1..}] actionbar ["",{"text":"[ ","color":"gray","bold":true},{"text":"Rechtsklick","color":"dark_green","bold":true},{"text":" ]","color":"gray","bold":true} ]
execute as @a[scores={PZMausKS.1Klick=1..}] at @s run playsound minecraft:block.anvil.place master @s ~ ~ ~ 1 2 0
scoreboard players set @a[scores={PZMausKS.1Klick=1..}] PZMausKS.1Klick 0


scoreboard objectives remove PZMausKS.1Klick
clear @a minecraft:carrot_on_a_stick{EigMausKS.1Alle:true}
kill @e[type=minecraft:item,nbt={Item:{tag:{EigMausKS.1Alle:true} } }]

Variante 2[Bearbeiten | Quelltext bearbeiten]

Mausklick-Sensor (Befehle) Bild 2.1.png

Mit diesem Mausklick-Sensor lassen sich ein Rechtsklick wie auch ein Linksklick erfassen. Dazu wird ein unsichtbarer Dorfbewohner permanent vor dem Spieler teleportiert. Ein Rechtsklick wird durch das Reden mit dem Dorfbewohner erfasst, während der Linksklick durch den Schaden, den der Dorfbewohner erlitten hat, erkannt werden kann.

Einschalten
  • Befehl 2.1 Es wird ein Punkte-Ziel erstellt, das erfasst, ob man rechtsklick auf einen Dorfbewohner getätigt hat.
  • Befehl 2.2 Es wird ein Team erstellt, in das alle Spieler in einem Umkreis von 25 Blöcken kommen[B2.3], dass keine Kollsionen zwischen Objekten ermöglicht[B2.4] und alle unsichtbaren Objekt auch für Teammitspieler unsichtbar macht[B2.5].
  • Befehl 2.6 Ein Dorfbewohner der keine KI besitzt, leise, schwerelose und unsichtbar ist, wird erzeugt. Er besitzt auch keine Handelsangebote, damit man bei einem Rechtsklick nicht ins Handelsmenü gelangt.
Wiederholen
  • Befehl 2.7 Der Dorfbewohner wird zum nächstgelegenen Spieler in einem Umkreis von drei bis 25 Blöcken teleportiert. Er wird so teleportiert, dass er direkt vor dem Spieler in Blickrichtung zeigt.
  • Befehl 2.8 Wenn der Dorfbewohner nicht seine vollen Herzen besitzt, dann wurde er vom Spieler mit einem Linksklick geschlagen. Dann bekommt der nächstgelegene Spieler eine Titel-Nachricht.
  • Befehl 2.9 Der Dorfbewohner wird nach dem Schlag wieder geheilt, in dem seine Herzen wieder auf maximal gesetzt werden.
  • Befehl 2.10 Wenn der Spieler den Dorfbewohner rechtsgeklickt hat, so ist sein Wert mindestens bei eins. Dann erhält er eine Titelnachricht für den Rechtsklick.
  • Befehl 2.11 Damit man den Rechtsklick auch hört, wird ein Amboss-Geräusch abgespielt.
  • Befehl 2.12 Damit der Rechtsklick nur immer dann erfasst wird, wenn er gerade stattgefunden hat, wird er wieder auf null gesetzt.
Ausschalten
  • Befehl 2.13 Das Punkte-Ziel wird wieder entfernt und damit auch alle abhängigen Werte die der Spieler besaß.
  • Befehl 2.14 Das Team wird wieder entfernt.
  • Befehl 2.15 Der Dorfbewohner wird beseitigt.

Befehlsblöcke mit Befehlen:
scoreboard objectives add PZMausKS.2Klick minecraft.custom:minecraft.talked_to_villager ["Mausklick-Sensor.2: ",{"text":"Rechtsklick auf den Dorfbewohner","bold":true}]
team add TMMausKS.2Klick ["Mausklick-Sensor.2: ",{"text":"Team für die Kollisionsfreie Interaktion","bold":true}]
team join TMMausKS.2Klick @a[distance=..25]
team modify TMMausKS.2Klick collisionRule never
team modify TMMausKS.2Klick seeFriendlyInvisibles false
summon minecraft:villager ~ ~1 ~ {NoAI:true,Silent:true,NoGravity:true,Offers:{Recipes:[]},Rotation:[270.0f,0.0f],Tags:["EtiMausKS.2Alle"],Team:"TMMausKS.2Klick",ActiveEffects:[{Id:14b,Amplifier:0b,Ambient:false,ShowParticles:false,Duration:2147483647} ] }


execute at @p[distance=3..25,team=TMMausKS.2Klick] run teleport @e[type=minecraft:villager,tag=EtiMausKS.2Alle] ^ ^1 ^0.5
execute at @e[type=minecraft:villager,tag=EtiMausKS.2Alle,nbt=!{Health:20.0f}] run title @p[distance=..5,team=TMMausKS.2Klick] actionbar ["",{"text":"[ ","color":"gray","bold":true},{"text":"Linksklick","color":"dark_red","bold":true},{"text":" ]","color":"gray","bold":true} ]
data merge entity @e[type=minecraft:villager,tag=EtiMausKS.2Alle,nbt=!{Health:20.0f},sort=nearest,limit=1] {Health:20.0f}
title @a[team=TMMausKS.2Klick,scores={PZMausKS.2Klick=1..}] actionbar ["",{"text":"[ ","color":"gray","bold":true},{"text":"Rechtsklick","color":"dark_green","bold":true},{"text":" ]","color":"gray","bold":true} ]
execute as @a[scores={PZMausKS.2Klick=1..}] at @s run playsound minecraft:block.anvil.place master @s ~ ~ ~ 1 2 0
scoreboard players set @a[team=TMMausKS.2Klick,scores={PZMausKS.2Klick=1..}] PZMausKS.2Klick 0


scoreboard objectives remove PZMausKS.2Klick
team remove TMMausKS.2Klick
kill @e[type=minecraft:villager,tag=EtiMausKS.2Alle]

Variante 3[Bearbeiten | Quelltext bearbeiten]

Mausklick-Sensor (Befehle) Bild 3.1.png

Bei diesem Mausklick-Sensor wird ein Rechtsklick mit verschiedenen Farbstoffen erfasst. Je nach Farbstoff, wird ein anderes Ereignis in Form einer Titel-Nachricht ausgegeben. Der Mausklick-Sensor teleportiert dazu einen unsichtbaren Rüstungsständer mit Armen vor den Spieler und fragt ab ob, der Rüstungsständer in seiner Hand einen der Farbstoffe hält. wenn er das tut, so hat der spieler ihm diese per Rechtsklick gegeben. Dann erfolgt die Nachricht und der Vorgang ist abgeschlossen um erneut einen Rechtsklick abzufragen.

Einschalten
  • Befehl 3.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion mausklick-sensor:v3start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 3: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel für die drei möglichen Rechtsklicks in Form der drei Farbstoffe, welche ebenfalls den Spielern gegeben wird.

Editor Icon.png mausklick-sensor:v3start.mcfunction
# Das Punkte-Ziel wird erstellt.
scoreboard objectives add PZMausKS.3Klick dummy ["Mausklick-Sensor.3: ",{"text":"Mausklick auf den Rüstungsständer","bold":true}]

# Spielern im Umkreis von 15 Blöcken werden drei verschiedene Farbstoffe mit bestimmten Eigenschaften gegeben.
give @a[distance=..15] minecraft:lime_dye{EigMausKS.3Alle:true,display:{Lore:['"Mausklick-Gegenstand"']} }
give @a[distance=..15] minecraft:orange_dye{EigMausKS.3Alle:true,display:{Lore:['"Mausklick-Gegenstand"']} }
give @a[distance=..15] minecraft:red_dye{EigMausKS.3Alle:true,display:{Lore:['"Mausklick-Gegenstand"']} }


Variante 3: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler einen Farbstoff in der Schnellleiste ausgewählt hat und damit auf den unsichtbaren Rüstungsständer geklickt hat. Hat der Spieler das getan, so wird ihm eine Titel-Nachricht ausgegeben.

Editor Icon.png mausklick-sensor:v3zyklus.mcfunction
# Wenn der Spieler keinen der Farbstoffe in der Hand hält, bekommt er den Wert null, ansonsten einen von drei weiteren Werten.
scoreboard players set @a[distance=..25,nbt=!{SelectedItem:{tag:{EigMausKS.3Alle:true} } }] PZMausKS.3Klick 0
scoreboard players set @a[distance=..25,nbt={SelectedItem:{id:"minecraft:lime_dye",tag:{EigMausKS.3Alle:true} } }] PZMausKS.3Klick 1
scoreboard players set @a[distance=..25,nbt={SelectedItem:{id:"minecraft:orange_dye",tag:{EigMausKS.3Alle:true} } }] PZMausKS.3Klick 2
scoreboard players set @a[distance=..25,nbt={SelectedItem:{id:"minecraft:red_dye",tag:{EigMausKS.3Alle:true} } }] PZMausKS.3Klick 3

# Wenn der spieler keinen Farbstoff in der Hand hält, wird der Rüstungsständer entfernt, ansonsten wird er erzeugt und vor dem Spieler teleportiert.
execute at @a[distance=..25,scores={PZMausKS.3Klick=0}] run kill @e[distance=..2,type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,sort=nearest,limit=1]
execute at @a[distance=..25,scores={PZMausKS.3Klick=1..}] run teleport @e[distance=..2,type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,sort=nearest,limit=1] ^ ^1 ^0.5
execute at @a[distance=..25,scores={PZMausKS.3Klick=1..}] unless entity @e[distance=..2,type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,sort=nearest,limit=1] run summon minecraft:armor_stand ^ ^1 ^0.5 {NoGravity:true,ShowArms:true,Invisible:true,Tags:["EtiMausKS.3Alle","EtiMausKS.3Sensor"]}

# Je nach dem welchen der drei Farbstoffe der Rüstungsständer in die Hand bekommen hat, wird ihm der entsprechende Wert zugewiesen.
scoreboard players set @e[type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,nbt={HandItems:[{id:"minecraft:lime_dye"}]}] PZMausKS.3Klick 1
scoreboard players set @e[type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,nbt={HandItems:[{id:"minecraft:orange_dye"}]}] PZMausKS.3Klick 2
scoreboard players set @e[type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,nbt={HandItems:[{id:"minecraft:red_dye"}]}] PZMausKS.3Klick 3

# Je nach dem welchen Wert der rüstungsständer besitzt, wird dem nächstgelegenen Spieler eine entsprechende Titel-Nachricht ausgegeben.
execute at @e[type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,scores={PZMausKS.3Klick=1}] run title @p[distance=..2,scores={PZMausKS.3Klick=1}] actionbar ["",{"text":"[ ","color":"gray","bold":true},{"text":"Klick 1","color":"green","bold":true},{"text":" ]","color":"gray","bold":true} ]
execute at @e[type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,scores={PZMausKS.3Klick=2}] run title @p[distance=..2,scores={PZMausKS.3Klick=2}] actionbar ["",{"text":"[ ","color":"gray","bold":true},{"text":"Klick 2","color":"gold","bold":true},{"text":" ]","color":"gray","bold":true} ]
execute at @e[type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,scores={PZMausKS.3Klick=3}] run title @p[distance=..2,scores={PZMausKS.3Klick=3}] actionbar ["",{"text":"[ ","color":"gray","bold":true},{"text":"Klick 3","color":"red","bold":true},{"text":" ]","color":"gray","bold":true} ]

# Wenn der Rüstungsständer einen Farbstoff in der Hand gehalten hat, wird dieser entfernt und sein Wert wird auf null gesetzt.
execute as @e[type=minecraft:armor_stand,tag=EtiMausKS.3Sensor,scores={PZMausKS.3Klick=1..}] run data remove entity @s HandItems[0]
scoreboard players set @e[type=minecraft:armor_stand,tag=EtiMausKS.3Alle,scores={PZMausKS.3Klick=1..}] PZMausKS.3Klick 0


Variante 3: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder und entfernt die Farbstoffe im Inventar wie auch in der Welt. Der eventuell noch existierende Rüstungsständer wird ebenfalls entfernt.

Editor Icon.png mausklick-sensor:v3stopp.mcfunction
# Das Punkte-Ziel wird entfernt.
scoreboard objectives remove PZMausKS.3Klick

# Die Farbstoffe mit den speziellen Eigenschaften werden entfernt.
clear @a minecraft:lime_dye{EigMausKS.3Alle:true}
clear @a minecraft:orange_dye{EigMausKS.3Alle:true}
clear @a minecraft:red_dye{EigMausKS.3Alle:true}

# Falls die Farbstoffe auf den Boden geworfen wurden, erhalten sie ein Etikett und alle Objekte mit diesem, werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigMausKS.3Alle:true} } }] add EtiMausKS.3Alle
kill @e[tag=EtiMausKS.3Alle]


Disambig color.svg