Technik Wiki
Advertisement
Gruppe: Grid Klebriger Kolben.png
Anlagen

Grid Roter Sand blass.png mit Mechaniken

Grid Redstone blass.png mit Redstone
                Hier:
Grid Befehlsblock.png mit Befehlen
Noch in keiner
Download-Welt enthalten.
Wiki Redstone-Welt.png
Alle neuen oder überarbeiteten Techniken auf dieser Seite sind noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates werden sie dort hinzugefügt werden.

Der Mannschaftsverteiler wird dazu verwendet um Spieler die an Minispielen teilnehmen wollen, diese in Mannschaften (mit dem Befehl /team) zu stecken und anschließend auf der Spielfläche aufzuteilen. Um eine gerechte Aufteilung zu gewährleisten muss die Anzahl der Spieler ermittelt werden. Bei einer geraden Anzahl teilt man die Spieler auf die Mannschaften einfach auf. Ist die Anzahl dagegen ungerade oder gibt es mehr als zwei Mannschaften, werden die restlichen Spieler die nicht verteilt werden können per Zufallsgenerator an die Mannschaften verteilt.

Inhaltsverzeichnis

Variante 1[]

Mannschaftsverteiler (Befehle) Bild 1.1.png Mannschaftsverteiler (Befehle) Bild 1.2.png Mannschaftsverteiler (Befehle) Bild 1.3.png

Dieser Mannschaftsverteiler erzeugt beim Einschalten eine Plattform auf die man sich stellen kann. Sobald man dort steht, läuft ein Zähler herunter. Ist er auf null angekommen, werden alle Spieler die auf der Plattform stehen zufällig in die zwei Mannschaften aufgeteilt. Damit man die Mannschaft auch physisch sehen kann, erhalten die Spieler jeweils von der Mannschaft abhängig einen roten oder blauen Helm. Sie werden auf der Plattform Mannschaftsabhängig zusammen aufgeteilt, sodasss die beiden Mannschaften sich gegenüberstehen.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Datenpaket


Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel, die Mannschaften und den Markierer der die Plattform bereithält.

Editor Icon.png mannschaftsverteiler:v1start.mcfunction
# Ein Punkte-Ziel wird erstellt.
scoreboard objectives add PZManSV.1Wert dummy ["Mannschaftsverteiler.1: ",{"text":"Wert","bold":true}]
scoreboard players set KonstManSV.1ZWEI PZManSV.1Wert 2

# Zwei Mannschaften werden erstellt.
team add TMManSV.1Team1 ["Mannschaftsverteiler.1: ",{"text":"Mannschaft1","color":"red","bold":true}]
team add TMManSV.1Team2 ["Mannschaftsverteiler.1: ",{"text":"Mannschaft2","color":"blue","bold":true}]

team modify TMManSV.1Team1 color red
team modify TMManSV.1Team2 color blue

team modify TMManSV.1Team1 friendlyFire false
team modify TMManSV.1Team2 friendlyFire false

# Es wird ein Markierer erzeugt, an dessen Stelle ein grauer Betonboden gesetzt wird.
summon minecraft:marker ~-10 ~ ~ {Tags:["EtiManSV.1Alle","EtiManSV.1Plattform"]}
execute at @e[type=minecraft:marker,tag=EtiManSV.1Plattform] run fill ~-5 ~ ~-5 ~5 ~ ~5 minecraft:gray_concrete replace

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion prüft ständig wie viele Spieler auf der Plattform stehen und davon abhängig wird der Zähler eingeschaltet, der letztlich die Mannschafts-Funktion lädt.

Editor Icon.png mannschaftsverteiler:v1zyklus.mcfunction
# Auf der Position des Markierers wird die Anzahl der Spieler auf der Plattform gezählt und in seinen Punktestand gespeichert. Ebenso erhalten alle Spieler ein Etikett.
execute as @e[type=minecraft:marker,tag=EtiManSV.1Plattform] at @s store result score @s PZManSV.1Wert positioned ~-5 ~ ~-5 run tag @a[dx=9,dy=9,dz=9] add EtiManSV.1AufPlattform

# Die Tick-Variable wird jeden Tick um eins erhöht und bei 20 wieder auf null gesetzt. Beim Zurücksetzen wird der Wert des Markierers für den Zähler entweder auf 15 gesetzt oder um eins reduziert, wenn Spieler vorhanden sind.
scoreboard players add VarManSV.1Tick PZManSV.1Wert 1
execute if score VarManSV.1Tick PZManSV.1Wert matches 20.. if entity @e[type=minecraft:marker,tag=EtiManSV.1Plattform,scores={PZManSV.1Wert=0}] run scoreboard players set VarManSV.1Zaehler PZManSV.1Wert 15
execute if score VarManSV.1Tick PZManSV.1Wert matches 20.. if entity @e[type=minecraft:marker,tag=EtiManSV.1Plattform,scores={PZManSV.1Wert=1..}] run scoreboard players remove VarManSV.1Zaehler PZManSV.1Wert 1
execute if score VarManSV.1Tick PZManSV.1Wert matches 20.. run scoreboard players set VarManSV.1Tick PZManSV.1Wert 0

# Die Spieler auf der Plattform erhalten eine Nachricht über der Schnellleiste.
title @a[tag=EtiManSV.1AufPlattform] actionbar ["",{"score":{"name":"VarManSV.1Zaehler","objective":"PZManSV.1Wert"},"color":"dark_purple","bold":true}]

# Wenn der Zähler null erreicht hat, wird vom Markierer aus, die Mannschafts-Funktion ausgelöst.
execute if score VarManSV.1Zaehler PZManSV.1Wert matches ..0 as @e[type=minecraft:marker,tag=EtiManSV.1Plattform,scores={PZManSV.1Wert=1..}] at @s run function mannschaftsverteiler:v1mannschaft

# Wenn Spieler nicht mehr auf der Plattform sind, wird ihnen der Kopfslot geleert und sie fliegen aus der Mannschaft. Ebenso wird das Etikett entfernt.
execute as @a[tag=!EtiManSV.1AufPlattform,scores={PZManSV.1Wert=1..}] store success score @s PZManSV.1Wert run item replace entity @s[nbt={Inventory:[{Slot:103b,tag:{EigManSV.1Alle:true} } ] }] armor.head with minecraft:air
team leave @a[tag=!EtiManSV.1AufPlattform,team=!]
tag @a[tag=EtiManSV.1AufPlattform] remove EtiManSV.1AufPlattform

Variante 1: Mannschaft-Funktion

  1. Die Mannschafts-Funktion verteilt die Spieler auf die beiden Mannschaften. Falls die Anzahl ungerade sein sollte, wird die Übrig-Funktion geladen.
Editor Icon.png mannschaftsverteiler:v1mannschaft.mcfunction
# Der Wert des Zählers wird auf 15 gesetzt.
scoreboard players set VarManSV.1Zaehler PZManSV.1Wert 15

# Die Anzahl der Spieler wird in zwei Variablen gespeichert und dann verrechnet.
execute store result score VarManSV.1Uebrig PZManSV.1Wert run scoreboard players operation VarManSV.1Aufteilung PZManSV.1Wert = @s PZManSV.1Wert
scoreboard players operation VarManSV.1Aufteilung PZManSV.1Wert /= KonstManSV.1ZWEI PZManSV.1Wert
scoreboard players operation VarManSV.1Uebrig PZManSV.1Wert %= KonstManSV.1ZWEI PZManSV.1Wert

# Alle Spieler auf der Plattform bekommen eine Nummer für eine zufällige Reihenfolge.
scoreboard players set VarManSV.1Reihenfolge PZManSV.1Wert 0
execute as @a[tag=EtiManSV.1AufPlattform,sort=random] store result score @s PZManSV.1Wert run scoreboard players add VarManSV.1Reihenfolge PZManSV.1Wert 1

# Grundsätzlich werden alle Spieler in die erste Mannschaft gesteckt um anschließend die Hälfte davon in die zweite Mannschaft zu verschieben.
team join TMManSV.1Team1 @a[tag=EtiManSV.1AufPlattform]
execute as @a[team=TMManSV.1Team1] if score @s PZManSV.1Wert > VarManSV.1Aufteilung PZManSV.1Wert run team join TMManSV.1Team2 @s

# Falls die Anzahl der Spieler ungerade ist, wird die Übrig-Funktion geladen.
execute if score VarManSV.1Uebrig PZManSV.1Wert matches 1 run function mannschaftsverteiler:v1uebrig

# Spieler in den beiden Teams erhalten im Kopfslot einen farbenen Helm mit der Mannschaftsfarbe.
item replace entity @a[team=TMManSV.1Team1] armor.head with minecraft:leather_helmet{EigManSV.1Alle:true,display:{color:16711680},Enchantments:[{id:"binding_curse",lvl:1s}]}
item replace entity @a[team=TMManSV.1Team2] armor.head with minecraft:leather_helmet{EigManSV.1Alle:true,display:{color:255},Enchantments:[{id:"binding_curse",lvl:1s}]}

# Die Spieler erhalten in ihrer Farbe eine Titelnachricht.
title @a[team=TMManSV.1Team1] title ["",{"text":"Mannschaft 1!","color":"red","bold":true}]
title @a[team=TMManSV.1Team2] title ["",{"text":"Mannschaft 2!","color":"blue","bold":true}]

# Alle Spieler werden auf der Plattform verteilt.
spreadplayers ~ ~ 2 4 true @a[tag=EtiManSV.1AufPlattform]

Variante 1: Übrig-Funktion
Die Übrig-Funktion verteilt den ungeraden Spieler zufällig an eine der beiden Mannschaften, mit Hilfe eines Zufallsgenerators.

Editor Icon.png mannschaftsverteiler:v1uebrig.mcfunction
# Es wird eine Partikelwolke erzeugt die nur einen Tick lang existiert, sie wird dazu genutzt um aus ihrerer UUID eine Zufallszahl zu entnehmen. Dieser Wert liegt bei null oder eins.
summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiManSV.1Alle","EtiManSV.1Zufall"]}
execute store result score VarManSV.1Zufallszahl PZManSV.1Wert run data get entity @e[type=minecraft:area_effect_cloud,tag=EtiManSV.1Zufall,sort=nearest,limit=1] UUID[0]
scoreboard players operation VarManSV.1Zufallszahl PZManSV.1Wert %= KonstManSV.1ZWEI PZManSV.1Wert

# Falls der Zufallswert eins ist, wird ein zufälliger Spieler von der zweiten Mannschaft in die erste gesteckt.
execute if score VarManSV.1Zufallszahl PZManSV.1Wert matches 1 run team join TMManSV.1Team1 @r[team=TMManSV.1Team2]

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel, die Mannschaften und die Plattform, sowie die Helme und andere Objekte.

Editor Icon.png mannschaftsverteiler:v1stopp.mcfunction
# Das Punkte-Ziel wird wieder entfernt.
scoreboard objectives remove PZManSV.1Wert

# Die beiden Mannschaften werden entfernt.
team remove TMManSV.1Team1
team remove TMManSV.1Team2

# Der Lederhelm wird aus dem Inventar entfernt.
clear @a minecraft:leather_helmet{EigManSV.1Alle:true}

# Der graue Betonboden wird an der Position des Markierers wieder entfernt.
execute at @e[type=minecraft:marker,tag=EtiManSV.1Plattform] run fill ~-5 ~ ~-5 ~5 ~ ~5 minecraft:air replace minecraft:gray_concrete

# Alle Objekte mit dem Etikett werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigManSV.1Alle:true} } }] add EtiManSV.1Alle
kill @e[tag=EtiManSV.1Alle]

Variante 2[]

Mannschaftsverteiler (Befehle) Bild 2.1.png Mannschaftsverteiler (Befehle) Bild 2.2.png Mannschaftsverteiler (Befehle) Bild 2.3.png

Dieser Mannschaftsverteiler ermöglicht es, dass man zwei bis vier Mannschaften festlegen kann, in die man hineingesteckt werden kann. Dazu wählt man einen Stock mit Verzauberungs aus und klickt auf die Schaltflächen im Chat. Wenn sich mindestens ein Spieler auf die Plattform stellt, beginnt der Zähler herunter zu zählen. Wenn der Zähler null erreicht, werden alle Spieler auf die eingestellten Mannschaften verteilt. Hierbei wird bei einer unpassenden Spieleranzahl dafür gesorgt, dass die restlichen Spieler auf die vorhandenen Mannschaften zufällig verteilt werden, sodass bei weiteren Mannschaftsverteilungen stehts ein ausgewogenes Verhältnis.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:


Datenpaket


Variante 2: Start-Funktion
Die Start-Funktion erstellt zwei Punkte-Ziele, vier Mannschaften, gibt den Spielern den Stock und erzeugt die Plattform.

Editor Icon.png mannschaftsverteiler:v2start.mcfunction
# Es werden zwei Punkte-Ziele erstellt.
scoreboard objectives add PZManSV.2Ausl trigger ["Mannschaftsverteiler.2: ",{"text":"Auslöser","bold":true}]
scoreboard objectives add PZManSV.2Wert dummy ["Mannschaftsverteiler.2: ",{"text":"Wert","bold":true}]

# Eine Konstante mit dem Wert zwei und eine Variable für die Anzahl der Mannschaften.
scoreboard players set KonstManSV.2ZWEI PZManSV.2Wert 2
scoreboard players set VarManSV.2Mannschaften PZManSV.2Ausl 4

# Es werden vier Mannschaften erstellt.
team add TMManSV.2Team1 ["Mannschaftsverteiler.2: ",{"text":"Mannschaft1","color":"red","bold":true}]
team add TMManSV.2Team2 ["Mannschaftsverteiler.2: ",{"text":"Mannschaft2","color":"blue","bold":true}]
team add TMManSV.2Team3 ["Mannschaftsverteiler.2: ",{"text":"Mannschaft3","color":"green","bold":true}]
team add TMManSV.2Team4 ["Mannschaftsverteiler.2: ",{"text":"Mannschaft4","color":"yellow","bold":true}]

team modify TMManSV.2Team1 color red
team modify TMManSV.2Team2 color blue
team modify TMManSV.2Team3 color green
team modify TMManSV.2Team4 color yellow

team modify TMManSV.2Team1 friendlyFire false
team modify TMManSV.2Team2 friendlyFire false
team modify TMManSV.2Team3 friendlyFire false
team modify TMManSV.2Team4 friendlyFire false

# Alle Spieler im Umkreis von 15 Blöcken erhalten einen Stock, mit dem man den Mannschaftsverteiler einstellen kann.
give @a[distance=..15] minecraft:stick{EigManSV.2Alle:true,EigManSV.2Stock:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Mannschaftsoptionen","color":"dark_purple","bold":true}',Lore:['"Wähle den Stock aus"','"um die Mannschafts-"','"Optionen anzeigen zu lassen."'] } }

# Es wird ein Markierer erzeugt, der die Position der Plattform vorgibt.
summon minecraft:marker ~-10 ~ ~ {Small:true,Invisible:true,NoGravity:true,Tags:["EtiManSV.2Alle","EtiManSV.2Plattform"]}
execute at @e[type=minecraft:marker,tag=EtiManSV.2Plattform] run fill ~-5 ~ ~-5 ~5 ~ ~5 minecraft:gray_concrete replace

Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft die Anzahl der Spieler auf der Plattform und ruft davon abhängig die Mannschafts-Funktion auf und sorgt dafür, dass wenn man den Stock ausgewählt hat, die Auslöser-Funktion geladen wird.

Editor Icon.png mannschaftsverteiler:v2zyklus.mcfunction
# Von der Position des Markierers aus, werden alle Spieler die sich auf der Plattform befinden gezählt und die Spieler bekommen ein Etikett.
execute as @e[type=minecraft:marker,tag=EtiManSV.2Plattform] at @s store result score @s PZManSV.2Wert positioned ~-5 ~ ~-5 run tag @a[dx=9,dy=9,dz=9] add EtiManSV.2AufPlattform

# Die Tick-Variable wird jeden Tick um eins erhöht und bei 20 wird sie wieder auf null gesetzt. Befinden sich keine Spieler auf der Plattform, so wird der Zähler auf 15 gesetzt, befinden sich stattdessen welche auf der Platform, wird der Zähler um eins heruntergezählt.
scoreboard players add VarManSV.2Tick PZManSV.2Wert 1
execute if score VarManSV.2Tick PZManSV.2Wert matches 20.. if entity @e[type=minecraft:marker,tag=EtiManSV.2Plattform,scores={PZManSV.2Wert=0}] run scoreboard players set VarManSV.2Zaehler PZManSV.2Wert 15
execute if score VarManSV.2Tick PZManSV.2Wert matches 20.. if entity @e[type=minecraft:marker,tag=EtiManSV.2Plattform,scores={PZManSV.2Wert=1..}] run scoreboard players remove VarManSV.2Zaehler PZManSV.2Wert 1
execute if score VarManSV.2Tick PZManSV.2Wert matches 20.. run scoreboard players set VarManSV.2Tick PZManSV.2Wert 0

# Alle Spieler auf der Plattform bekommen den Zählerstand in der Nachricht angezeigt.
title @a[tag=EtiManSV.2AufPlattform] actionbar ["",{"score":{"name":"VarManSV.2Zaehler","objective":"PZManSV.2Wert"},"color":"dark_purple","bold":true}]

# Wenn der bei null angekommen ist, wird vom Markierer aus die Mannschafts-Funktion geladen.
execute if score VarManSV.2Zaehler PZManSV.2Wert matches ..0 as @e[type=minecraft:marker,tag=EtiManSV.2Plattform,scores={PZManSV.2Wert=1..}] at @s run function mannschaftsverteiler:v2mannschaft

# Alle Spieler die nicht mehr auf der Plattform sind, bekommen ihren Helm entfernt und werden aus der Mannschaft geworfen.
execute as @a[tag=!EtiManSV.2AufPlattform,scores={PZManSV.2Wert=1..}] store success score @s PZManSV.2Wert run item replace entity @s[nbt={Inventory:[{Slot:103b,tag:{EigManSV.2Alle:true} } ] }] armor.head with minecraft:air
team leave @a[tag=!EtiManSV.2AufPlattform,team=!]
tag @a[tag=EtiManSV.2AufPlattform] remove EtiManSV.2AufPlattform

# Wenn Spieler den Stock ausgewählt haben, wird ihnen das Etikett gegeben.
tag @a[nbt={SelectedItem:{tag:{EigManSV.2Stock:true} } }] add EtiManSV.2Ausgewaehlt

# Wenn sie den stock gerade erst ausgewählt haben, wird ihnen der Wert auf -99 gesetzt.
scoreboard players set @a[tag=EtiManSV.2Ausgewaehlt,tag=!EtiManSV.2Auswahl] PZManSV.2Ausl -99

# Wenn Spieler den Stock gerade auswählen, wird ihnen noch eine Nachricht geschickt.
execute as @a[tag=EtiManSV.2Ausgewaehlt] unless entity @s[scores={PZManSV.2Ausl=0}] run function mannschaftsverteiler:v2ausloeser

# Es wird ein Etikett gegeben oder genommen, je nach dem ob man gerade den Stock ausgewählt hat, oder nicht.
tag @a[tag=EtiManSV.2Ausgewaehlt,tag=!EtiManSV.2Auswahl] add EtiManSV.2Auswahl
tag @a[tag=!EtiManSV.2Ausgewaehlt,tag=EtiManSV.2Auswahl] remove EtiManSV.2Auswahl

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiManSV.2Ausgewaehlt] remove EtiManSV.2Ausgewaehlt

Variante 2: Auslöser-Funktion
Die Auslöser-Funktion gibt dem Spieler die Möglichkeit im Chat auf die Schaltflächen zu klicken um die Anzahl der Mannschaften festzulegen.

Editor Icon.png mannschaftsverteiler:v2ausloeser.mcfunction
# Wenn der Spieler auf die Variablen-Option geklickt hat, wird die Variable entweder um eins erhöht oder verringert.
execute if entity @s[scores={PZManSV.2Ausl=1}] if score VarManSV.2Mannschaften PZManSV.2Ausl matches ..3 run scoreboard players add VarManSV.2Mannschaften PZManSV.2Ausl 1
execute if entity @s[scores={PZManSV.2Ausl=-1}] if score VarManSV.2Mannschaften PZManSV.2Ausl matches 3.. run scoreboard players remove VarManSV.2Mannschaften PZManSV.2Ausl 1

# Dem Spieler wird im Chat die Einstellungsmöglichkeit gezeigt, um die Anzahl der Teams zu bestimmen.
tellraw @s ["Mannschaftsverteiler.2:\n",{"text":"mannschaften = ","bold":true},{"text":"mannschaften + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Mannschaften + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZManSV.2Ausl set 1"} },"\n",{"text":"mannschaften = ","bold":true},{"text":"mannschaften - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Mannschaften - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZManSV.2Ausl set -1"} },"\n",{"text":"mannschaften == ","bold":true},{"score":{"name":"VarManSV.2Mannschaften","objective":"PZManSV.2Ausl"},"color":"dark_purple","bold":true} ]

# Damit der Spieler nach dem anklicken der Optionen erneut die Berechtigung erhält um nochmals eine Option aktivieren zu können.
scoreboard players enable @s PZManSV.2Ausl
scoreboard players set @s PZManSV.2Ausl 0

Variante 2: Mannschaft-Funktion
Die Mannschafts-Funktion berechnet die Größe der jeweiligen Mannschaften und verteilt die Spieler über den Aufruf der Verteilungs-Funktion. Bleiben Spieler übrig, wird die Übrig-Funktion geladen um die restlichen Spieler zufällig auf die Mannschaften zu verteilen.

Editor Icon.png mannschaftsverteiler:v2mannschaft.mcfunction
# Die Zähler-Variable wird auf 15 gesetzt.
scoreboard players set VarManSV.2Zaehler PZManSV.2Wert 15

# Die Anzahl der Spieler wird in zwei Variablen gespeichert und anschließend verechnet.
execute store result score VarManSV.2Uebrig PZManSV.2Wert run scoreboard players operation VarManSV.2Aufteilung PZManSV.2Wert = @s PZManSV.2Wert
scoreboard players operation VarManSV.2Aufteilung PZManSV.2Wert /= VarManSV.2Mannschaften PZManSV.2Ausl
scoreboard players operation VarManSV.2Uebrig PZManSV.2Wert %= VarManSV.2Mannschaften PZManSV.2Ausl

# Alle Spieler auf der Plattform bekommen eine Nummer für eine zufällige Reihenfolge.
scoreboard players set VarManSV.2Reihenfolge PZManSV.2Wert 0
scoreboard players set @a[tag=EtiManSV.2AufPlattform] PZManSV.2Ausl 0
execute as @a[tag=EtiManSV.2AufPlattform,sort=random] store result score @s PZManSV.2Wert run scoreboard players add VarManSV.2Reihenfolge PZManSV.2Wert 1

# Wenn es mehr Spieler als Mannschaften gibt, müssen alle Spieler auf die Mannschaften verteilt werden, dazu werden zwei Variablen vorher festgelegt, damit sie dann in der Verteilungs-Funktion angewendet werden können.
scoreboard players set VarManSV.2Verteilung PZManSV.2Wert 0
scoreboard players operation VarManSV.2Schleife PZManSV.2Wert = VarManSV.2Mannschaften PZManSV.2Ausl
execute if score @s PZManSV.2Wert >= VarManSV.2Mannschaften PZManSV.2Ausl run function mannschaftsverteiler:v2verteilung

# Falls die Anzahl der Spieler nicht auf geht, werden die übrig gebliebenen Spieler auf die Mannschaften zufällig verteilt.
scoreboard players operation VarManSV.2Schleife PZManSV.2Wert = VarManSV.2Mannschaften PZManSV.2Ausl
execute if score VarManSV.2Uebrig PZManSV.2Wert matches 1.. run function mannschaftsverteiler:v2uebrig

# Wenn Spieler übrig geblieben sind, wird den Partikelwolken die nach einer zufälligen Reihenfolge ausgewählt wurden, eine Nummer vergeben.
scoreboard players set VarManSV.2Reihenfolge PZManSV.2Wert 0
execute as @e[type=minecraft:area_effect_cloud,tag=EtiManSV.2Reihenfolge,sort=random] store result score @s PZManSV.2Ausl run scoreboard players add VarManSV.2Reihenfolge PZManSV.2Wert 1

# Die Partikelwolken vergeben den übrig gebliebenen Spielern ihre Nummer, sodass diese in zufälligen Mannschaften verteilt werden können.
execute as @e[type=minecraft:area_effect_cloud,tag=EtiManSV.2Reihenfolge] at @a[scores={PZManSV.2Ausl=0}] if score @s PZManSV.2Wert = @p PZManSV.2Wert run scoreboard players operation @p PZManSV.2Ausl = @s PZManSV.2Ausl

# Der Auslöse-Wert bestimmt die Mannschaft, in die die Spieler hinein gesetzt werden.
team join TMManSV.2Team1 @a[scores={PZManSV.2Ausl=1}]
team join TMManSV.2Team2 @a[scores={PZManSV.2Ausl=2}]
team join TMManSV.2Team3 @a[scores={PZManSV.2Ausl=3}]
team join TMManSV.2Team4 @a[scores={PZManSV.2Ausl=4}]

# Die Spieler erhalten abhängig von ihrer Mannschaft eine Titel-Nachricht in dessen Farbe.
title @a[team=TMManSV.2Team1] title ["",{"text":"Mannschaft 1!","color":"red","bold":true}]
title @a[team=TMManSV.2Team2] title ["",{"text":"Mannschaft 2!","color":"blue","bold":true}]
title @a[team=TMManSV.2Team3] title ["",{"text":"Mannschaft 3!","color":"green","bold":true}]
title @a[team=TMManSV.2Team4] title ["",{"text":"Mannschaft 4!","color":"yellow","bold":true}]

# Alle Spieler erhalten abhängig von der Mannschaft einen Helm in der entsprechenden Farbe.
item replace entity @a[team=TMManSV.2Team1] armor.head with minecraft:leather_helmet{EigManSV.2Alle:true,display:{color:16711680},Enchantments:[{id:"binding_curse",lvl:1s}]}
item replace entity @a[team=TMManSV.2Team2] armor.head with minecraft:leather_helmet{EigManSV.2Alle:true,display:{color:255},Enchantments:[{id:"binding_curse",lvl:1s}]}
item replace entity @a[team=TMManSV.2Team3] armor.head with minecraft:leather_helmet{EigManSV.2Alle:true,display:{color:6192150},Enchantments:[{id:"binding_curse",lvl:1s}]}
item replace entity @a[team=TMManSV.2Team4] armor.head with minecraft:leather_helmet{EigManSV.2Alle:true,display:{color:16701501},Enchantments:[{id:"binding_curse",lvl:1s}]}

# Der Wert wird wieder auf null gesetzt und alle Spieler werden auf der Plattform verteilt.
scoreboard players set @a[tag=EtiManSV.2AufPlattform] PZManSV.2Ausl 0
spreadplayers ~ ~ 2 4 true @a[tag=EtiManSV.2AufPlattform]

Variante 2: Verteilungs-Funktion
Die Verteilungs-Funktion ruft sich so oft selbst auf, wie es Mannschaften gibt und dabei verteilt sie bei jedem Aufruf die errechnete Anzahl an Spielern an die Mannschaft.

Editor Icon.png mannschaftsverteiler:v2verteilung.mcfunction
# Am Anfang besitzen die Spieler den Auslöser-Wert null und dadurch werden alle erfasst. Bei jedem Durchlauf dieser Funktion, werden Spieler der nächsten Mannschaft per Punktestand zugewiesen.
scoreboard players operation VarManSV.2Verteilung PZManSV.2Wert += VarManSV.2Aufteilung PZManSV.2Wert
execute as @a[tag=EtiManSV.2AufPlattform,scores={PZManSV.2Ausl=0}] if score @s PZManSV.2Wert <= VarManSV.2Verteilung PZManSV.2Wert run scoreboard players operation @s PZManSV.2Ausl = VarManSV.2Schleife PZManSV.2Wert

# Die Schleifen-Variable wird um eins reduziert und die Funktion wird nur solange selbst erneut aufgerufen, bis der Wert bei null liegt.
scoreboard players remove VarManSV.2Schleife PZManSV.2Wert 1
execute if score VarManSV.2Schleife PZManSV.2Wert matches 1.. run function mannschaftsverteiler:v2verteilung

Variante 2: Übrig-Funktion
Die Übrig-Funktion wird nur geladen wenn die Anzahl der Spieler für die Mannschaften nicht auf geht. Dann wird die Übrig-Funktion so oft sich selbst aufrufen, wie es Mannschaften gibt und erzeugt dafür eine Partikelwolke die repräsentativ für eine Mannschaft steht. Mit diesen werden dann die Spieler zufällig verteilt.

Editor Icon.png mannschaftsverteiler:v2uebrig.mcfunction
# Es wird eine Partikelwolke erzeugt, die nur für einen Tick existiert.
summon minecraft:area_effect_cloud ~ ~ ~ {Duration:1,Tags:["EtiManSV.2Alle","EtiManSV.2Reihenfolge","EtiManSV.2Wert"]}

# In die Partikelwolke wird der Schleifen-Wert gespeichert, der einem der Mannschaften entspricht.
execute as @e[type=minecraft:area_effect_cloud,tag=EtiManSV.2Wert,sort=nearest,limit=1] store result score @s PZManSV.2Wert run scoreboard players get VarManSV.2Schleife PZManSV.2Wert
tag @e[type=minecraft:area_effect_cloud,tag=EtiManSV.2Wert,sort=nearest,limit=1] remove EtiManSV.2Wert

# Die Übrig-Funktion ruft sich olange erneut auf, bis der Variablen-Wert null erreicht.
scoreboard players remove VarManSV.2Schleife PZManSV.2Wert 1
execute if score VarManSV.2Schleife PZManSV.2Wert matches 1.. run function mannschaftsverteiler:v2uebrig

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele, die Mannschaften, die Etiketten und die Plattform.

Editor Icon.png mannschaftsverteiler:v2stopp.mcfunction
# Die zwei Punkte-Ziele werden entfernt.
scoreboard objectives remove PZManSV.2Ausl
scoreboard objectives remove PZManSV.2Wert

# die vier Mannschaften werden entfernt.
team remove TMManSV.2Team1
team remove TMManSV.2Team2
team remove TMManSV.2Team3
team remove TMManSV.2Team4

# Aus den Inventaren der Spieler werden die Stöcke und Helme entfernt.
clear @a minecraft:stick{EigManSV.2Alle:true}
clear @a minecraft:leather_helmet{EigManSV.2Alle:true}

# Das eventuell vorhandene Etikett wird entfernt.
tag @a[tag=EtiManSV.2Auswahl] remove EtiManSV.2Auswahl

# Die Plattform an der Position des Markierers wird entfernt.
execute at @e[type=minecraft:marker,tag=EtiManSV.2Plattform] run fill ~-5 ~ ~-5 ~5 ~ ~5 minecraft:air replace minecraft:gray_concrete

# Drops die auf den Boden geworfen wurden, erhalten ein Etikett und alle Objekte mit dem Etikett werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigManSV.2Alle:true} } }] add EtiManSV.2Alle
kill @e[tag=EtiManSV.2Alle]
Advertisement