Technik Wiki
Advertisement
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
Verfügbar in:
Wiki Mechanik-Welt.png Mechanik-Welt

Mit einem Wahl-System lassen sich Entscheidungen von mehreren Spielern sammeln und zu einer Abstimmung zusammenzuführen. Das gewählte mit den meisten Stimmen gewinnt die Abstimmung. In manchen Fällen kann es aber auch vorkommen, dass mehrere die gleiche Anzahl an Stimmen bekommen haben, dann entscheidet der Zufall darüber wer letztlich gewonnen hat. Die Abstimmung selbst kann auch als eine Art Bewertung abgehandelt werden, sodass man nicht nur für oder gegen etwas stimmt sondern eine Punktzahl vergibt.

Inhaltsverzeichnis

Variante 1[]

Wahl-System (Befehle) Bild 1.1.png Wahl-System (Befehle) Bild 1.2.png Wahl-System (Befehle) Bild 1.3.png

Mit diesem Wahl-System kann man über das Auswählen eines Buches, die Wahl-Optionen anzeigen lassen. Dort werden fünf Namen angezeigt, bei dem man seine Stimme für einen der fünf vergeben kann. Klickt man auf den Namen wird die Schaltfläche aktiviert und vergibt dem entsprechenden Rüstungsständer, dessen Namen dort angezeigt wird, die Stimme. Hat mindestens ein Spieler abgestimmt, läuft ein Countdown runter, bis er null erreicht. Bei null angekommen, wird die Abstimmung beendet und der Sieger festgelegt. Danach kann eine neue Wahl stattfinden.

Einschalten
  • Befehl 1.1 Wenn der Hebel umgelegt wird, wird die Start-Funktion gestartet.
Wiederholen
  • Befehl 1.2 Beim Einschalten wird auch der Wiederhol-Befehlsblock gestartet, der jeden Tick die Zyklus-Funktion lädt.
Ausschalten
  • Befehl 1.3 Wenn der Hebel wieder in Ausgangsstellung zurück gelegt wird, wird die Stopp-Funktion ausgelöst und schaltet alles wieder ab.

Befehlsblöcke mit Befehlen:


Variante 1: Start-Funktion
Die Start-Funktion erstellt die Punkte-Ziele für das Auslösen der Chat-Schaltfläche und für die Wahl-Stimmen, ebenfalls wird den Spielern ein Buch gegeben und die fünf Rüstungsständer werden erstellt.

Editor Icon.png wahl-system:v1start.mcfunction
# Es werden zwei Punkte-Ziele erstellt, welche für den Auslöser und das Wahl-Ergebnis genutzt werden.
scoreboard objectives add PZWahlS.1Ausl trigger ["Wahl-System.1: ",{"text":"Auslöser für Nachrichten","bold":true}]
scoreboard objectives add PZWahlS.1Wahl dummy ["Wahl-System.1: ",{"text":"Wahl abgestimmt","bold":true}]

# Die Variable für das Anzeigen von Sekunden wird auf 15 gesetzt.
scoreboard players set VarWahlS.1Sekunde PZWahlS.1Wahl 15

# Spieler im Umkreis von 15 Blöcken erhalten ein Buch mit Verzauberungsschimmer.
give @a[distance=..15] minecraft:book{EigWahlS.1Alle:true,EigWahlS.1Wahl:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Wahl","color":"dark_purple","bold":true}',Lore:['"Wähle das Buch aus"','"um die Stimme"','"für die Wahl zu vergeben."'] } }

# Es werden fünf Rüstungsständer ezeugt die die zu wählenden Objekte darstellen. Hierbei bekommen alle einen Wert aufsteigend von eins bis fünf.
summon minecraft:armor_stand ~ ~1 ~ {Small:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Buch","color":"gray","bold":true}',Tags:["EtiWahlS.1Alle","EtiWahlS.1Wahl"]}
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] PZWahlS.1Ausl 1

summon minecraft:armor_stand ~ ~2 ~ {Small:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Schwert","color":"aqua","bold":true}',Tags:["EtiWahlS.1Alle","EtiWahlS.1Wahl"]}
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] PZWahlS.1Ausl 1

summon minecraft:armor_stand ~ ~3 ~ {Small:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Trank","color":"red","bold":true}',Tags:["EtiWahlS.1Alle","EtiWahlS.1Wahl"]}
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] PZWahlS.1Ausl 1

summon minecraft:armor_stand ~ ~4 ~ {Small:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Rüstung","color":"light_purple","bold":true}',Tags:["EtiWahlS.1Alle","EtiWahlS.1Wahl"]}
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] PZWahlS.1Ausl 1

summon minecraft:armor_stand ~ ~5 ~ {Small:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Truhe","color":"gold","bold":true}',Tags:["EtiWahlS.1Alle","EtiWahlS.1Wahl"]}
scoreboard players add @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] PZWahlS.1Ausl 1

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion ruft die Gewählt-Funktion auf, wenn mindestens einer gewählt hat. Ebenfalls wird damit festgestellt ob der Spieler das Buch für die Wahl ausgewählt hat.

Editor Icon.png wahl-system:v1zyklus.mcfunction
# Wenn mindestens ein Spieler eine Wahlentscheidung getroffen hat, wird die Gewählt-Funktion ausgelöst.
execute if entity @p[scores={PZWahlS.1Wahl=1..5}] run function wahl-system:v1gewaehlt

# Wenn Spieler das Buch ausgewählt haben, bekommen sie das entsprechende Etikett.
tag @a[nbt={SelectedItem:{tag:{EigWahlS.1Wahl:true} } }] add EtiWahlS.1Ausgewaehlt

# Spieler schalten die Auslöser-Funktion frei, in dem sie das Buch auswählen oder wenn sie eine Option vom Auslöser angeklickt haben.
scoreboard players set @a[tag=EtiWahlS.1Ausgewaehlt,tag=!EtiWahlS.1Auswahl] PZWahlS.1Ausl -99
execute as @a[tag=EtiWahlS.1Ausgewaehlt] unless entity @s[scores={PZWahlS.1Ausl=0}] at @s run function wahl-system:v1ausloeser

# Wenn Spieler gerade erst zum Buch wechseln oder es abwählen wird das Etikett vergeben oder entfernt.
tag @a[tag=EtiWahlS.1Ausgewaehlt,tag=!EtiWahlS.1Auswahl] add EtiWahlS.1Auswahl
tag @a[tag=!EtiWahlS.1Ausgewaehlt,tag=EtiWahlS.1Auswahl] remove EtiWahlS.1Auswahl

# Das Etikett wird wieder entfernt, sodass es nur aktiv bei der Auswahl des Buches vorhanden ist.
tag @a[tag=EtiWahlS.1Ausgewaehlt] remove EtiWahlS.1Ausgewaehlt

Variante 1: Gewählt-Funktion
Die Gewählt-Funktion lässt einen Countdown laufen und zeigt im Chat an, wer die Wahl gewonnen hat.

Editor Icon.png wahl-system:v1gewaehlt.mcfunction
# Die Tick-Variable wird um eins erhöht und wenn sie den Wert 20 erreicht, wird die Sekunden-Variable um eins reduziert.
scoreboard players add VarWahlS.1Tick PZWahlS.1Wahl 1
execute if score VarWahlS.1Tick PZWahlS.1Wahl matches 20.. run scoreboard players remove VarWahlS.1Sekunde PZWahlS.1Wahl 1

# Wenn währenddessen ein Spieler einen Auslöser betätigt hat, somit einen anderen Wert als null besitzt, wird die Tick-Variable auf eins gesetzt und die Sekunden-Variable auf 15.
execute unless entity @p[scores={PZWahlS.1Ausl=0}] store success score VarWahlS.1Tick PZWahlS.1Wahl run scoreboard players set VarWahlS.1Sekunde PZWahlS.1Wahl 15

# Wenn die Tick-Variable die 20 erreicht hat, wird sie wieder auf null gesetzt, um von vorne zu beginnen.
execute if score VarWahlS.1Tick PZWahlS.1Wahl matches 20.. run scoreboard players set VarWahlS.1Tick PZWahlS.1Wahl 0

# Solange die Sekunden-Variable nicht null erreicht hat, wird den Spielern, die bei der Wahl teilnehmen ein Countdown angezeigt, bis die Wahl entschieden ist.
execute if score VarWahlS.1Sekunde PZWahlS.1Wahl matches 1.. run title @a[scores={PZWahlS.1Wahl=1..5}] actionbar ["",{"text":"Wahl endet == ","bold":true},{"score":{"name":"VarWahlS.1Sekunde","objective":"PZWahlS.1Wahl"},"color":"dark_purple","bold":true}]

# Erreicht die Sekunden-Variable den Wert null, wird im Chat der Gewinner der Abstimmung bei allen Spielern die an der Wahl teilgenommen haben angezeigt.
execute if score VarWahlS.1Sekunde PZWahlS.1Wahl matches ..0 as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] if score @s PZWahlS.1Ausl = VarWahlS.1Gewinner PZWahlS.1Wahl run tellraw @a[scores={PZWahlS.1Wahl=1..5}] ["Wahl-System.1:\n",{"text":"Gewonnen hat ","bold":true},{"entity":"@s","nbt":"CustomName","interpret":true},{"text":" mit ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Wahl"},"color":"dark_purple","bold":true},{"text":" Punkt(en)","bold":true}]

# Wenn die Sekunden-Variable den Wert null erreicht hat, werden die Wahlentscheidungen der Spieler zurückgesetzt und die Sekunden-Variable wird wieder auf 15 gesetzt.
execute if score VarWahlS.1Sekunde PZWahlS.1Wahl matches ..0 run scoreboard players set @a[scores={PZWahlS.1Wahl=1..5}] PZWahlS.1Wahl 0
execute if score VarWahlS.1Sekunde PZWahlS.1Wahl matches ..0 run scoreboard players set VarWahlS.1Sekunde PZWahlS.1Wahl 15

Variante 1: Auslöser-Funktion
Die Auslöser-Funktion sorgt dafür, dass die Stimmen pro Rüstungsständer ausgezählt werden und somit der Gewinner festgestellt werden kann und zeigt dem Spieler im Chat die Wahl-Möglichkeiten an.

Editor Icon.png wahl-system:v1ausloeser.mcfunction
# Wenn ein Spieler eine der fünf möglichen Wahl-Objekte angeklickt hat, wird sein Auslöser-Wert in den Wahl-Wert geschrieben.
scoreboard players operation @s[scores={PZWahlS.1Ausl=1..5}] PZWahlS.1Wahl = @s PZWahlS.1Ausl

# Zuerst werden alle Wahl-Objekte auf den Wert null gesetzt und anschließend wird für jedes der Objekte geschaut welche Spieler für sie abgestimmt haben und diese Spieler sorgen dafür, dass das Wahl-Objekt eine Stimme mehr erhält. Die Stimmen werden aufsummiert.
scoreboard players set @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] PZWahlS.1Wahl 0
execute as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] at @a if score @s PZWahlS.1Ausl = @p PZWahlS.1Wahl run scoreboard players add @s PZWahlS.1Wahl 1

# Die Gewinner-Variable wird auf null gesetzt und anschließend wird sie den größten Wert beinhalten die eines der Wahl-Objekte besitzt.
scoreboard players set VarWahlS.1Gewinner PZWahlS.1Wahl 0
scoreboard players operation VarWahlS.1Gewinner PZWahlS.1Wahl > @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] PZWahlS.1Wahl

# Anschließend werden die Gewinner hreausgesucht in dem deren Punktestand mit der Gewinner-Variable verglichen wird. Damit am Ende nur ein Gewinner vorhanden ist, auch wenn für mehrere Wahl-Objekte gleich abgestimmt wurde, überschreibt jeder Gewinner die Gewinner-Variable, sodass am Ende nur ein Wert dort stehen kann.
execute as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl] if score @s PZWahlS.1Wahl = VarWahlS.1Gewinner PZWahlS.1Wahl run scoreboard players operation VarWahlS.1Gewinner PZWahlS.1Wahl = @s PZWahlS.1Ausl

# Damit das Einbinden der Nummer, des Namens und die Anzahl der Stimmen einfacher zu handhaben ist, wird von dem entsprechenden Wahl-Objekt aus die Wahl-Benachrichtigung an den Spieler ausgegeben.
execute as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl,scores={PZWahlS.1Ausl=1},sort=nearest,limit=1] run tellraw @p ["Wahl-System.1:\n",{"text":"Nr. ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Ausl"},"color":"dark_purple","bold":true}," ",{"extra":[{"entity":"@s","nbt":"CustomName","interpret":true},{"text":"]","color":"gray"}],"text":"[","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Buch"} },"clickEvent":{"action":"run_command","value":"/trigger PZWahlS.1Ausl set 1"} },{"text":" == ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Wahl"},"color":"dark_purple","bold":true}]

execute as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl,scores={PZWahlS.1Ausl=2},sort=nearest,limit=1] run tellraw @p ["",{"text":"Nr. ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Ausl"},"color":"dark_purple","bold":true}," ",{"extra":[{"entity":"@s","nbt":"CustomName","interpret":true},{"text":"]","color":"gray"}],"text":"[","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Buch"} },"clickEvent":{"action":"run_command","value":"/trigger PZWahlS.1Ausl set 2"} },{"text":" == ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Wahl"},"color":"dark_purple","bold":true}]

execute as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl,scores={PZWahlS.1Ausl=3},sort=nearest,limit=1] run tellraw @p ["",{"text":"Nr. ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Ausl"},"color":"dark_purple","bold":true}," ",{"extra":[{"entity":"@s","nbt":"CustomName","interpret":true},{"text":"]","color":"gray"}],"text":"[","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Buch"} },"clickEvent":{"action":"run_command","value":"/trigger PZWahlS.1Ausl set 3"} },{"text":" == ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Wahl"},"color":"dark_purple","bold":true}]

execute as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl,scores={PZWahlS.1Ausl=4},sort=nearest,limit=1] run tellraw @p ["",{"text":"Nr. ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Ausl"},"color":"dark_purple","bold":true}," ",{"extra":[{"entity":"@s","nbt":"CustomName","interpret":true},{"text":"]","color":"gray"}],"text":"[","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Buch"} },"clickEvent":{"action":"run_command","value":"/trigger PZWahlS.1Ausl set 4"} },{"text":" == ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Wahl"},"color":"dark_purple","bold":true}]

execute as @e[type=minecraft:armor_stand,tag=EtiWahlS.1Wahl,scores={PZWahlS.1Ausl=5},sort=nearest,limit=1] run tellraw @p ["",{"text":"Nr. ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Ausl"},"color":"dark_purple","bold":true}," ",{"extra":[{"entity":"@s","nbt":"CustomName","interpret":true},{"text":"]","color":"gray"}],"text":"[","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für Buch"} },"clickEvent":{"action":"run_command","value":"/trigger PZWahlS.1Ausl set 5"} },{"text":" == ","bold":true},{"score":{"name":"@s","objective":"PZWahlS.1Wahl"},"color":"dark_purple","bold":true}]

# Damit der Spieler nach dem anklicken der Wahl-Möglichkeiten erneut die Berechtigung erhält um nochmals eine Option aktivieren zu können.
scoreboard players enable @s PZWahlS.1Ausl
scoreboard players set @s PZWahlS.1Ausl 0

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele, die Etiketten und Gegenstände aus den Inventaren.

Editor Icon.png wahl-system:v1stopp.mcfunction
# Die zwei Punkte-Ziele werden entfernt.
scoreboard objectives remove PZWahlS.1Ausl
scoreboard objectives remove PZWahlS.1Wahl

# Das Buch wird aus den Inventaren gelöscht.
clear @a minecraft:book{EigWahlS.1Alle:true}

# Falls das Etikett noch vorhanden sein sollte, wird es entfernt.
tag @a[tag=EtiWahlS.1Auswahl] remove EtiWahlS.1Auswahl

# Gedroppte Gegenstände bekommen ein Etikett und anschließend werden alle Drops und Rüstungsständer gelöscht.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigWahlS.1Alle:true} } }] add EtiWahlS.1Alle
kill @e[tag=EtiWahlS.1Alle]
Advertisement