Technik Wiki
KKeine Bearbeitungszusammenfassung
(Seite überarbeitet)
Zeile 3: Zeile 3:
 
|
 
|
 
}}
 
}}
Ein '''Mausrad-Sensor''' kann das Scrollen des Mausrads feststellen und anzeigen ob man in die eine oder andere Richtung das Rad gedreht hat.
+
Ein '''Mausrad-Sensor''' kann das Drehen des Mausrades feststellen und anzeigen ob man in die eine oder andere Richtung das Rad gedreht hat.
   
 
== Variante 1 ==
 
== Variante 1 ==
  +
{{Neue Technik|r}}
 
{{Voraussetzung|
 
{{Voraussetzung|
 
*[[Schaltnetze/Vergleicher (Befehle)]]
 
*[[Schaltnetze/Vergleicher (Befehle)]]
 
*{{de|Anzeigetafel}}
 
*{{de|Anzeigetafel}}
*{{b|/scoreboard}}
 
*{{b|/execute}}
 
*{{b|/title}}
 
*{{b|/tellraw}}
 
 
|
 
|
 
*{{Gridbild|Hebel|link}}
 
*{{Gridbild|Hebel|link}}
Zeile 23: Zeile 20:
 
{{Bilderfolge|#1#2|Vorrichtungen Mausrad-Sensor (Befehle) Animation 1.1.|400px}}
 
{{Bilderfolge|#1#2|Vorrichtungen Mausrad-Sensor (Befehle) Animation 1.1.|400px}}
   
  +
Der Mausrad-Sensor erkennt die Richtung in die das Mausrad gedreht wurde. Das macht der Sensor in dem er sich die letzte Position des ausgewählten Slot in der aus neun Slots bestehenden Schnellzugriffsleiste merkt und diesen mit der aktuellen Slot-Position vergleicht. Ist die Differenz zwischen den beiden Slot-Positionen negativ, so muss das Mausrad nach rechts bewegt worden sein, ist die Differenz positiv muss das Mausrad nach links bewegt worden sein. Es gibt allerdings eine Ausnahme, wenn die letzte Slot-Position die erste (ganz linke) oder letzte (ganz rechte) Slot-Position war und nun zum jeweils anderen ersten oder letzen Slot wechselt, würde der Sensor die verkehrtherum liegende Richtung erfassen. Dies muss berücksichtigt werden um eine immer korrekte Erfassung zu erhalten.
Dieser Mausrad-Sensor erfasst für jeden einzelnen Slot des Spielers ob er einen davon ausgewählt hat und schließt dann daraus, in welche Richtung das Mausrad gedreht wurde. Dazu werden zwei Punktestand-Ziele benötigt{{bb|1|1}}{{bb|1|2}}, welche den aktuellen ausgewählten Slot und den zuletzt ausgewählten Slot als Wert auf den Spieler speichern. Dabei wird immer der aktuelle und letzte Slot miteinander vergleichen. Hierbei wird zuerst der Slotwert auf den Vergleichswert des selben Spielers übertragen{{bb|1|3}} und erst im Anschluss der aktuelle neue Slotwert zugeteilt{{bb|1|4}}{{bb|1|5}}{{bb|1|6}}{{bb|1|7}}{{bb|1|8}}{{bb|1|9}}{{bb|1|10}}{{bb|1|11}}{{bb|1|12}}. Das ganze funktioniert so, zuerst bekommt der Vergleichswert den Slotwert des letzten Durchlaufs der Kette und anschließend wird jeder einzelne Slot geprüft, ob er vom Spieler ausgewählt ist. Wenn er ein bestimmter Slot ausgewählt ist, so bekommt der Spieler dessen Wert. Nun wird vom Vergleichswert der aktuelle Slotwert abgezogen{{bb|1|13}}. Wenn der Spieler sein Mausrad nicht bewegt hat, entspricht der Vergleichswert dem Slotwert und bei der Rechenoperation kommt null raus. Dann wird dies nicht weiter beachtet, wenn jedoch der Spieler in der Zwischenzeit das Mausrad hoch oder runter gescrollt hat, unterscheidet sich der Vergleichswert vom Slotwert und je nach Ergebnis muss nun das Mausrad hoch oder runter gedreht worden sein, dies wird dann über der Schnellzugriffsleiste ausgegeben{{bb|1|14}}{{bb|1|15}}. Damit man den Pfeil besser erkennt, wurde ein Kohleblock als Hintergrund benutzt. Möchte man den Sensor wieder ausschalten, so legt man den Hebel am Wiederhol-Befehlsblock wieder in Ausgangsstellung um, dann werden die beiden Punktestand-Ziele gelöscht{{bb|1|16}}{{bb|1|17}}.
 
  +
  +
Wenn man den Mausrad-Sensor einschaltet, werden zwei Punktestand-Ziele erstellt. Das Slot-Ziel ist dazu gemacht immer die aktuelle Position des ausgewählten Slots zu speichern{{bb|1|1}} und das Vergleichs-Ziel immer die letzte Position{{bb|1|2}}. Gleichzeitig wird auch die Befehlsblock-Säule mit dem Wiederhol-Befehlsblock aktiv, dort beginnt die Speicherung der letzten Slot-Position, in dem der Punktestand von Slot-Ziel in den des Vergleichs-Ziel, vom Spieler der 25 Blöcke maximal entfernt sein darf, übertragen wird{{bb|1|3}}. Beim ersten Durchlauf besitzt natürlich das Slot-Ziel noch keinen Wert, daher wird beim Vergleichs-Ziel einfach der Wert null übertragen. Erst bei weiteren Durchläufen wird dann immer die letzte Position als Punktestand übertragen. Um die Slot-Position abzufragen und in einen Punktestand zu speichern, wird zuerst ein Spieler im Umkreis von 25 Blöcken als Ausführer ausgewählt und dann als Speicher-Ziel markiert. In dem Fall wird das Resultat des data-Befehls in das Slot-Ziel des Spielers gespeichert. Der data-Befehl fragt hierbei die aktuelle Slot-Position ab und übergibt es dem store-result-Unterbefehl{{bb|1|4}}. Um nun einen Vergleichswert zu erhalten, sodass man entweder einen positiven oder einen negativen Wert erhält, wird vom Vergleichs-Punktestand des Spielers der Slot-Punktestand abgezogen und im Vergleichs-Punktestand gespeichert{{bb|1|5}}. Mit diesem Wert kann nun geschlussfolgert werden in welche Richtung das Mausrad bewegt wurde. Der weiter oben genannte Ausnahmefall erfordert eine interessante Unterbefehlskonstruktion des execute-Befehls. Um sicherzustellen, dass nur Spieler angesprochen werden die von diesem Sensor erfasst werden sollen, wird zuerst der Radius von 25 Blöcken abgefragt, allerdings auch noch ob der Spieler einen Vergleichs-Punktestand besitzt, der zwischen den minimalen und maximalen Vergleichswerten liegt. Um nun abfragen zu können, ob der Spieler für das nach links bewegen des Mausrades, den Wert von eins bis sieben und den Wert minus acht besitzt, wurde das Ausschlussverfahren angewendet. Wenn der ausgewählte Spieler weder den Wert minus sieben bis null hat noch den Wert acht, dann muss er einen der Werte für das nach links bewegen besitzen{{bb|1|6}}. So wird anschließend mit dem title-Befehl die Richtung des Mausrades über der Schnellzugriffsleiste angezeigt. Das gleiche Verfahren wird dann auch für die rechte Bewegung verwendet, um diese dann anzeigen zu lassen{{bb|1|7}}. Wenn man den Sensor wieder ausschaltet, werden die beiden Punktestand-Ziele für die Slot-Position{{bb|1|8}} und der letzten Position{{bb|1|9}} gelöscht.
   
 
{{Ausklappmenü|offen=1|{{bb}}|
 
{{Ausklappmenü|offen=1|{{bb}}|
{{bb|1|1|i|4=/scoreboard objectives add PZMsRad:1Slot dummy}}
+
{{bb|1|1|i|4=scoreboard objectives add PZMsRad.1Slot dummy {"text":"Mausrad-Sensor.1: Slotnummer"} }}
{{bb|1|2|k|4=/scoreboard objectives add PZMsRad:1Vergl dummy}}
+
{{bb|1|2|k|4=scoreboard objectives add PZMsRad.1Vergl dummy {"text":"Mausrad-Sensor.1: Vergleichsnummer"} }}
   
   
{{bb|1|3|w|4=/execute @a ~ ~ ~ /scoreboard players operation @p PZMsRad:1Vergl = @p PZMsRad:1Slot}}
+
{{bb|1|3|w|4=execute as @a[distance=..25] run scoreboard players operation @s PZMsRad.1Vergl = @s PZMsRad.1Slot}}
{{bb|1|4|k|4=/scoreboard players set @a PZMsRad:1Slot 0 {SelectedItemSlot:0} }}
+
{{bb|1|4|k|4=execute as @a[distance=..25] store result score @s PZMsRad.1Slot run data get entity @s SelectedItemSlot}}
{{bb|1|5|k|4=/scoreboard players set @a PZMsRad:1Slot 1 {SelectedItemSlot:1} }}
+
{{bb|1|5|k|4=execute as @a[distance=..25] run scoreboard players operation @s PZMsRad.1Vergl -= @s PZMsRad.1Slot}}
 
{{bb|1|6|k|4=execute as @a[distance=..25,scores={PZMsRad.1Vergl=-8..8}] unless entity @s[scores={PZMsRad.1Vergl=-7..0}] unless entity @s[scores={PZMsRad.1Vergl=8}] run title @s actionbar ["",{"text":"[ ","color":"gold","bold":"true"},{"text":"","color":"dark_green","bold":"true"},{"text":" ]","color":"gold","bold":"true"} ] }}
{{bb|1|6|k|4=/scoreboard players set @a PZMsRad:1Slot 2 {SelectedItemSlot:2} }}
 
 
{{bb|1|7|k|4=execute as @a[distance=..25,scores={PZMsRad.1Vergl=-8..8}] unless entity @s[scores={PZMsRad.1Vergl=0..7}] unless entity @s[scores={PZMsRad.1Vergl=-8}] run title @s actionbar ["",{"text":"[ ","color":"gold","bold":"true"},{"text":"","color":"dark_red","bold":"true"},{"text":" ]","color":"gold","bold":"true"} ] }}
{{bb|1|7|k|4=/scoreboard players set @a PZMsRad:1Slot 3 {SelectedItemSlot:3} }}
 
{{bb|1|8|k|4=/scoreboard players set @a PZMsRad:1Slot 4 {SelectedItemSlot:4} }}
 
{{bb|1|9|k|4=/scoreboard players set @a PZMsRad:1Slot 5 {SelectedItemSlot:5} }}
 
{{bb|1|10|k|4=/scoreboard players set @a PZMsRad:1Slot 6 {SelectedItemSlot:6} }}
 
{{bb|1|11|k|4=/scoreboard players set @a PZMsRad:1Slot 7 {SelectedItemSlot:7} }}
 
{{bb|1|12|k|4=/scoreboard players set @a PZMsRad:1Slot 8 {SelectedItemSlot:8} }}
 
{{bb|1|13|k|4=/execute @a ~ ~ ~ /scoreboard players operation @p PZMsRad:1Vergl -= @p PZMsRad:1Slot}}
 
{{bb|1|14|k|4=/title @a[score_PZMsRad:1Vergl_min=1,score_PZMsRad:1Vergl=7] actionbar ["",{"text":"[ ","color":"gold"},{"text":"<--","color":"green","bold":"true"},{"text":" ]","color":"gold"} ] }}
 
{{bb|1|15|k|4=/title @a[score_PZMsRad:1Vergl_min=-7,score_PZMsRad:1Vergl=-1] actionbar ["",{"text":"[ ","color":"gold"},{"text":"-->","color":"red","bold":"true"},{"text":" ]","color":"gold"} ] }}
 
   
   
{{bb|1|16|i|4=/scoreboard objectives remove PZMsRad:1Slot}}
+
{{bb|1|8|i|4=scoreboard objectives remove PZMsRad.1Slot}}
{{bb|1|17|k|4=/scoreboard objectives remove PZMsRad:1Vergl}}
+
{{bb|1|9|k|4=scoreboard objectives remove PZMsRad.1Vergl}}
 
}}
 
}}
   
 
{{Unterseite|
 
{{Unterseite|
{{Technik-Familien|familie=eva}}
+
{{Technik-Familien|familie=eva|Inventar#Inventarslot-IDs}}
 
{{Navbox-Technik}}
 
{{Navbox-Technik}}
 
{{Navbox-Technik|Technik}}
 
{{Navbox-Technik|Technik}}

Version vom 14. September 2018, 15:34 Uhr

Gruppe: Unbekannter Gruppenname
[[]]

Grid Roter Sand blass mit Mechaniken

Grid Redstone blass mit Redstone
                Hier:
Grid Befehlsblock mit Befehlen
Verfügbar in:
Wiki Redstone-Welt Redstone-Welt

Ein Mausrad-Sensor kann das Drehen des Mausrades feststellen und anzeigen ob man in die eine oder andere Richtung das Rad gedreht hat.

Variante 1

Wiki Redstone-Welt
Diese neue oder überarbeitete Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

Datei:Vorrichtungen Mausrad-Sensor (Befehle) Bild 1.1.png Datei:Vorrichtungen Mausrad-Sensor (Befehle) Animation 1.1.1.png Datei:Vorrichtungen Mausrad-Sensor (Befehle) Animation 1.1.2.png

Der Mausrad-Sensor erkennt die Richtung in die das Mausrad gedreht wurde. Das macht der Sensor in dem er sich die letzte Position des ausgewählten Slot in der aus neun Slots bestehenden Schnellzugriffsleiste merkt und diesen mit der aktuellen Slot-Position vergleicht. Ist die Differenz zwischen den beiden Slot-Positionen negativ, so muss das Mausrad nach rechts bewegt worden sein, ist die Differenz positiv muss das Mausrad nach links bewegt worden sein. Es gibt allerdings eine Ausnahme, wenn die letzte Slot-Position die erste (ganz linke) oder letzte (ganz rechte) Slot-Position war und nun zum jeweils anderen ersten oder letzen Slot wechselt, würde der Sensor die verkehrtherum liegende Richtung erfassen. Dies muss berücksichtigt werden um eine immer korrekte Erfassung zu erhalten.

Wenn man den Mausrad-Sensor einschaltet, werden zwei Punktestand-Ziele erstellt. Das Slot-Ziel ist dazu gemacht immer die aktuelle Position des ausgewählten Slots zu speichernBefehl 1.1 und das Vergleichs-Ziel immer die letzte PositionBefehl 1.2. Gleichzeitig wird auch die Befehlsblock-Säule mit dem Wiederhol-Befehlsblock aktiv, dort beginnt die Speicherung der letzten Slot-Position, in dem der Punktestand von Slot-Ziel in den des Vergleichs-Ziel, vom Spieler der 25 Blöcke maximal entfernt sein darf, übertragen wirdBefehl 1.3. Beim ersten Durchlauf besitzt natürlich das Slot-Ziel noch keinen Wert, daher wird beim Vergleichs-Ziel einfach der Wert null übertragen. Erst bei weiteren Durchläufen wird dann immer die letzte Position als Punktestand übertragen. Um die Slot-Position abzufragen und in einen Punktestand zu speichern, wird zuerst ein Spieler im Umkreis von 25 Blöcken als Ausführer ausgewählt und dann als Speicher-Ziel markiert. In dem Fall wird das Resultat des data-Befehls in das Slot-Ziel des Spielers gespeichert. Der data-Befehl fragt hierbei die aktuelle Slot-Position ab und übergibt es dem store-result-UnterbefehlBefehl 1.4. Um nun einen Vergleichswert zu erhalten, sodass man entweder einen positiven oder einen negativen Wert erhält, wird vom Vergleichs-Punktestand des Spielers der Slot-Punktestand abgezogen und im Vergleichs-Punktestand gespeichertBefehl 1.5. Mit diesem Wert kann nun geschlussfolgert werden in welche Richtung das Mausrad bewegt wurde. Der weiter oben genannte Ausnahmefall erfordert eine interessante Unterbefehlskonstruktion des execute-Befehls. Um sicherzustellen, dass nur Spieler angesprochen werden die von diesem Sensor erfasst werden sollen, wird zuerst der Radius von 25 Blöcken abgefragt, allerdings auch noch ob der Spieler einen Vergleichs-Punktestand besitzt, der zwischen den minimalen und maximalen Vergleichswerten liegt. Um nun abfragen zu können, ob der Spieler für das nach links bewegen des Mausrades, den Wert von eins bis sieben und den Wert minus acht besitzt, wurde das Ausschlussverfahren angewendet. Wenn der ausgewählte Spieler weder den Wert minus sieben bis null hat noch den Wert acht, dann muss er einen der Werte für das nach links bewegen besitzenBefehl 1.6. So wird anschließend mit dem title-Befehl die Richtung des Mausrades über der Schnellzugriffsleiste angezeigt. Das gleiche Verfahren wird dann auch für die rechte Bewegung verwendet, um diese dann anzeigen zu lassenBefehl 1.7. Wenn man den Sensor wieder ausschaltet, werden die beiden Punktestand-Ziele für die Slot-PositionBefehl 1.8 und der letzten PositionBefehl 1.9 gelöscht.


Befehlsblöcke mit Befehlen:
scoreboard objectives add PZMsRad.1Slot dummy {"text":"Mausrad-Sensor.1: Slotnummer"}
scoreboard objectives add PZMsRad.1Vergl dummy {"text":"Mausrad-Sensor.1: Vergleichsnummer"}


execute as @a[distance=..25] run scoreboard players operation @s PZMsRad.1Vergl = @s PZMsRad.1Slot
execute as @a[distance=..25] store result score @s PZMsRad.1Slot run data get entity @s SelectedItemSlot
execute as @a[distance=..25] run scoreboard players operation @s PZMsRad.1Vergl -= @s PZMsRad.1Slot
execute as @a[distance=..25,scores={PZMsRad.1Vergl=-8..8}] unless entity @s[scores={PZMsRad.1Vergl=-7..0}] unless entity @s[scores={PZMsRad.1Vergl=8}] run title @s actionbar ["",{"text":"[ ","color":"gold","bold":"true"},{"text":"←","color":"dark_green","bold":"true"},{"text":" ]","color":"gold","bold":"true"} ]
execute as @a[distance=..25,scores={PZMsRad.1Vergl=-8..8}] unless entity @s[scores={PZMsRad.1Vergl=0..7}] unless entity @s[scores={PZMsRad.1Vergl=-8}] run title @s actionbar ["",{"text":"[ ","color":"gold","bold":"true"},{"text":"→","color":"dark_red","bold":"true"},{"text":" ]","color":"gold","bold":"true"} ]


scoreboard objectives remove PZMsRad.1Slot
scoreboard objectives remove PZMsRad.1Vergl


Disambig color
Grid Grasblock
Auch im Minecraft Wiki wird das Thema dieser Technik behandelt:
Inventar#Inventarslot-IDs