Technik Wiki
Advertisement
Gruppe: Grid Ketten-Befehlsblock
Systeme

Grid Roter Sand blass mit Mechaniken

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

Das Passwort-System ist für Server gedacht, bei denen die beitretenden Spieler, erst ein Passwort eintippen müssen, bevor sie auf dem Server frei herumlaufen können. Hierzu müssen sich die Spieler ein Passwort anlegen und sich von nun an bei jedem Betritt des Servers anmelden, in dem sie das Passwort eintippen. Damit das Passwort gesetzt werden kann, müssen mehrere Kriterien erfüllt sein, so muss es mindestens die Länge von zwölf Zeichen haben und muss mindestens eine Ziffer, Buchstaben und Sonderzeichen besitzen. Ebenso gibt es auch einen Passwort-Generator der nach bestimmten Einstellungen ein gewünschtes Passwort erzeugen kann.

Variante 1[]

Passwort-System (Befehle) Bild 1.1 Passwort-System (Befehle) Bild 1.2 Passwort-System (Befehle) Bild 1.3

Dieses Passwort-System unterbindet jegliches herumlaufen, wenn der Spieler noch nicht sein Passwort eingetippt hat. Besitzt er noch keins, so kann er eins festlegen. Dazu bekommt der Spieler ein Buch, in das er das Passwort eintragen kann. Die Passwörter der Spieler werden in der data-Eigenschaft von Markierern gespeichert. Damit die Zugehörigkeit der Markierer klar ersichtlich ist, wird den Spielern und den Markierern die jeweils gleiche Nummer vergeben. Tritt ein Spieler erneut dem Spiel bei, muss er ebenfalls das Passwort eintippen. Die Länge des eingetippten Passworts muss mindestens zwölf Zeichen lang sein und kann so lang sein wie die Buchseite es zulässt. In dem Passwort müssen mindestens eine Ziffer, ein Klein- und Groß-Buchstabe und ein Sonderzeichen sein.

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:


Datenpaket


Variante 1: Start-Funktion
Die Start-Funktion erstellt die Punkte-Ziele, den Datenspeicher. Die Punkte-Ziele werden für das Nummerieren und das Erfassen des Spielbeitritts verwendet, während der Datenspeicher für die Passwort-Überprüfung benutzt wird.

Editor Icon passwort-system:v1start.mcfunction
# Die Punkte-Ziele für die Nummerierung und für das Verlassen des Spiels werden angelegt.
scoreboard objectives add PZPasswS.1Nr dummy ["Passwort-System.1: ",{"text":"Nummer","bold":true}]
scoreboard objectives add PZPasswS.1Bei minecraft.custom:minecraft.leave_game ["Passwort-System.1: ",{"text":"Spiel verlassen","bold":true}]

# Der Datenspeicher für das Überprüfen des Passwortes wird erstellt.
data merge storage passwort-system:v1daten {EigPasswS.1Passwort:"",EigPasswS.1Kennzeichen:"",EigPasswS.1Zeichen:"",EigPasswS.1Zeichenliste:[],EigPasswS.1Ziffern:["0","1","2","3","4","5","6","7","8","9"],EigPasswS.1Kleinbuchstaben:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],EigPasswS.1Grossbuchstaben:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],EigPasswS.1Sonderzeichen:["!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","?","@","[","\\","]","^","_","´","{","}","~","€","°"]}


Variante 1: Zyklus-Funktion
Die Zyklus-Funktion ruft die Beitritt-Funktion für alle beitretenden Spieler auf, sorgt dafür, dass nicht angemeldete Spieler feststecken und ruft für anmeldente Spieler die Längen-Funktion auf.

Editor Icon passwort-system:v1zyklus.mcfunction
# Wenn man dem Spiel beigetreten ist, wird einem das Etikett entfernt. Allgemein wird die Beitritt-Funktion aufgerufen, wenn man noch nicht das Etikett besitzt.
tag @a[tag=EtiPasswS.1Beitritt,scores={PZPasswS.1Bei=1..}] remove EtiPasswS.1Beitritt
execute if data storage passwort-system:v1daten "EigPasswS.1Passwort" as @a[tag=!EtiPasswS.1Beitritt] run function passwort-system:v1beitritt

# Solange man nicht angemeldet ist, wird man stehts zum festen Punkt teleportiert, falls man versucht zu entkommen.
execute positioned ~ ~-0.5 ~3 run tellraw @a[distance=1..,tag=!EtiPasswS.1Angemeldet] ["Passwort-System.1:\n",{"text":"Du kommst erst frei, nach dem du dich mit dem richtigen Passwort angemeldet hast!","color":"red","bold":true}]
execute positioned ~ ~-0.5 ~3 run teleport @a[distance=1..,tag=!EtiPasswS.1Angemeldet] ~ ~ ~

# Wenn Spieler das Buch ausgewählt haben, erhalten sie ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigPasswS.1Buch:true} } }] add EtiPasswS.1Ausgewaehlt

# Wenn das Buch ausgewählt ist und sie ins Buch etwas geschrieben haben, wird die Längen-Funktion aufgerufen.
execute as @a[tag=EtiPasswS.1Ausgewaehlt] if data entity @s SelectedItem.tag.pages run function passwort-system:v1laenge

# Wenn Spieler das Buch gerade auswählen, wird ihnen noch eine Nachricht geschickt.
tellraw @a[tag=EtiPasswS.1Ausgewaehlt,tag=!EtiPasswS.1Auswahl] ["Passwort-System.1:\n",{"text":"Öffne das Buch und tippe in ihm das Passwort ein. Achte darauf dass sowohl Ziffern, Kleinbuchstaben, Großsbuchstaben und Sonderzeichen enthalten sind. Ebenso muss es mindestens 12 Zeichen lang sein.","color":"yellow","bold":true}]

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

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiPasswS.1Ausgewaehlt] remove EtiPasswS.1Ausgewaehlt


Variante 1: Beitritt-Funktion
Die Beitritt-Funktion gibt den Spielern das Buch für die Passwort-Eingabe und erzeugt ggf. einen Markierer für den jeweiligen Spieler mit Nummer um das Passwort zu speichern.

Editor Icon passwort-system:v1beitritt.mcfunction
# Wenn der Spieler wieder beigetreten ist, werden ihm die Etiketten entfernt und der Wert auf null gesetzt.
tag @s[tag=EtiPasswS.1Auswahl] remove EtiPasswS.1Auswahl
tag @s[tag=EtiPasswS.1Passwort,tag=!EtiPasswS.1Angemeldet] remove EtiPasswS.1Passwort
tag @s[tag=EtiPasswS.1Angemeldet] remove EtiPasswS.1Angemeldet
scoreboard players set @s PZPasswS.1Bei 0

# Der Spieler bekommt, sofern er noch kein Buch besitzt, dass Passwort-Buch ausgehändigt. Ebenfalls bekommt er eine Benachrichtigung wie er es benutzen kann.
give @s[nbt=!{Inventory:[{tag:{EigPasswS.1Buch:true} } ] }] minecraft:writable_book{EigPasswS.1Alle:true,EigPasswS.1Buch:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Passwort-Buch","color":"dark_purple","bold":true}',Lore:['"Wähle das Buch aus"','"und öffne es"','"um in diesem die"','"Passwort-Eingabe"','"zu tätigen."'] } }
tellraw @s ["Passwort-System.1:\n",{"text":"Wähle das Buch in der Schnellleiste aus und tätige einen Rechtsklick um das Passwort dort einzutippen.","color":"gray","bold":true}]

# Das Etikett für den Beitritt wird vergeben.
tag @s add EtiPasswS.1Beitritt

# Falls der Spieler noch keine Nummer besitzt, wird ein Markierer erzeugt.
execute if entity @s[tag=!EtiPasswS.1Nummer] run summon minecraft:marker ~ ~ ~ {Tags:["EtiPasswS.1Alle","EtiPasswS.1Passwort","EtiPasswS.1NummerFehlt"]}

# Der Spieler und sein dazugehöriger Markierer bekommen die gleiche Nummer zugewiesen.
execute store result score @s[tag=!EtiPasswS.1Nummer] PZPasswS.1Nr store result score @e[type=minecraft:marker,tag=EtiPasswS.1NummerFehlt,sort=nearest,limit=1] PZPasswS.1Nr run scoreboard players add VarPasswS.1Nummer PZPasswS.1Nr 1

# Dem Markierer wird das Etikett entfernt, da er die Nummer nun besitzt.
execute if entity @s[tag=!EtiPasswS.1Nummer] run tag @e[type=minecraft:marker,tag=EtiPasswS.1NummerFehlt,sort=nearest,limit=1] remove EtiPasswS.1NummerFehlt

# Dem Spieler wird das Etikett gegeben.
tag @s[tag=!EtiPasswS.1Nummer] add EtiPasswS.1Nummer


Variante 1: Längen-Funktion
Die Längen-Funktion überprüft ob die Passwort-Länge stimmt und nur dann wird an die Zeichen-Funktion übergeben. Falls die Überprüfung erfolgreich war, so wird danach die Passwort-Funktion aufgerufen.

Editor Icon passwort-system:v1laenge.mcfunction
# Die Länge des Passwortes wird ausgelesen und in eine Variable gespeichert.
execute store result score VarPasswS.1Laenge PZPasswS.1Nr run data get entity @s SelectedItem.tag.pages[0]

# Ist die Länge zu kurz, wird eine Fehlermeldung ausgegeben.
execute if score VarPasswS.1Laenge PZPasswS.1Nr matches 1..11 run tellraw @s ["Passwort-System.1:\n",{"text":"Bitte tippe das Passwort mit mindestens 12 Zeichen ein. Das eingetippte Passwort besteht nur aus ","color":"red","bold":true},{"score":{"name":"VarPasswS.1Laenge","objective":"PZPasswS.1Nr"},"color":"dark_purple","bold":true},{"text":" Zeichen und sieht aktuell so aus: ","color":"red","bold":true},{"entity":"@s","nbt":"SelectedItem.tag.pages[0]","bold":true}]

# Vier Variablen für die vier Zeichentypen.
scoreboard players set VarPasswS.1Ziffer PZPasswS.1Nr 0
scoreboard players set VarPasswS.1Kleinbuchstabe PZPasswS.1Nr 0
scoreboard players set VarPasswS.1Grossbuchstabe PZPasswS.1Nr 0
scoreboard players set VarPasswS.1Sonderzeichen PZPasswS.1Nr 0

# Wenn die Länge stimmt wird das mögliche Passwort in den Datenspeicher gespeichert um es anschließend in der Zeichen-Funktion weiter zu prüfen.
execute if score VarPasswS.1Laenge PZPasswS.1Nr matches 12.. run tag @s add EtiPasswS.1LaengeStimmt
execute if score VarPasswS.1Laenge PZPasswS.1Nr matches 12.. run data modify storage passwort-system:v1daten "EigPasswS.1Passwort" set from entity @s SelectedItem.tag.pages[0]
execute if score VarPasswS.1Laenge PZPasswS.1Nr matches 12.. if entity @s[tag=!EtiPasswS.1Passwort] run function passwort-system:v1zeichen

# Enthält das Passwort von allen vier Zeichen mindestens eins, so erhälkt der Spieler ein Etikett.
execute if score VarPasswS.1Ziffer PZPasswS.1Nr matches 1.. if score VarPasswS.1Kleinbuchstabe PZPasswS.1Nr matches 1.. if score VarPasswS.1Grossbuchstabe PZPasswS.1Nr matches 1.. if score VarPasswS.1Sonderzeichen PZPasswS.1Nr matches 1.. run tag @s[tag=EtiPasswS.1LaengeStimmt] add EtiPasswS.1AlleZeichenVorhanden

# Falls der Spieler bereits ein Passwort erfolgreich gesetzt hat, so muss keine erneute Prüfung stattfinden.
tag @s[tag=EtiPasswS.1Passwort] add EtiPasswS.1AlleZeichenVorhanden

# Falls von den vier Zeichen mindestens eins nicht enthalten ist, so wird dem Spieler eine Fehlermeldung ausgegeben, bei der die fehlenden Zeichen aufgelistet werden.
tellraw @s[tag=EtiPasswS.1LaengeStimmt,tag=!EtiPasswS.1AlleZeichenVorhanden] ["Passwort-System.1:\n",{"text":"Bitte tippe ein Passwort ein, mit mindestens","color":"red","bold":true}]

execute if score VarPasswS.1Ziffer PZPasswS.1Nr matches 0 run tellraw @s[tag=EtiPasswS.1LaengeStimmt,tag=!EtiPasswS.1AlleZeichenVorhanden] ["",{"text":"einer Ziffer:","color":"red","bold":true},"\n",{"text":"[","color":"gray","bold":true},{"storage":"passwort-system:v1daten","nbt":"\"EigPasswS.1Ziffern\"[]","separator":{"text":",","color":"gray","bold":true},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true}]

execute if score VarPasswS.1Kleinbuchstabe PZPasswS.1Nr matches 0 run tellraw @s[tag=EtiPasswS.1LaengeStimmt,tag=!EtiPasswS.1AlleZeichenVorhanden] ["",{"text":"einem Kleinbuchstaben:","color":"red","bold":true},"\n",{"text":"[","color":"gray","bold":true},{"storage":"passwort-system:v1daten","nbt":"\"EigPasswS.1Kleinbuchstaben\"[]","separator":{"text":",","color":"gray","bold":true},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true}]

execute if score VarPasswS.1Grossbuchstabe PZPasswS.1Nr matches 0 run tellraw @s[tag=EtiPasswS.1LaengeStimmt,tag=!EtiPasswS.1AlleZeichenVorhanden] ["",{"text":"einem Großbuchstaben:","color":"red","bold":true},"\n",{"text":"[","color":"gray","bold":true},{"storage":"passwort-system:v1daten","nbt":"\"EigPasswS.1Grossbuchstaben\"[]","separator":{"text":",","color":"gray","bold":true},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true}]

execute if score VarPasswS.1Sonderzeichen PZPasswS.1Nr matches 0 run tellraw @s[tag=EtiPasswS.1LaengeStimmt,tag=!EtiPasswS.1AlleZeichenVorhanden] ["",{"text":"einem Sonderzeichen:","color":"red","bold":true},"\n",{"text":"[","color":"gray","bold":true},{"storage":"passwort-system:v1daten","nbt":"\"EigPasswS.1Sonderzeichen\"[]","separator":{"text":",","color":"gray","bold":true},"color":"dark_purple","bold":true},{"text":"]","color":"gray","bold":true}]

tellraw @s[tag=EtiPasswS.1LaengeStimmt,tag=!EtiPasswS.1AlleZeichenVorhanden] ["",{"text":"Es sieht aber aktuell so aus: ","color":"red","bold":true},{"entity":"@s","nbt":"SelectedItem.tag.pages[0]","bold":true}]

# Erfüllt das Passwort alle Kriterien, so wird die Passwort-Funktion geladen.
execute at @s[tag=EtiPasswS.1LaengeStimmt,tag=EtiPasswS.1AlleZeichenVorhanden] run function passwort-system:v1passwort
tag @s[tag=EtiPasswS.1AlleZeichenVorhanden] remove EtiPasswS.1AlleZeichenVorhanden
tag @s[tag=EtiPasswS.1LaengeStimmt] remove EtiPasswS.1LaengeStimmt

# Das eingetippten Passwort wird entfernt, in dem das Buch vollständig ersetzt wird.
clear @s minecraft:writable_book{EigPasswS.1Buch:true}
item replace entity @s[tag=!EtiPasswS.1Angemeldet] weapon.mainhand with minecraft:writable_book{EigPasswS.1Alle:true,EigPasswS.1Buch:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Passwort-Buch","color":"dark_purple","bold":true}',Lore:['"Wähle das Buch aus"','"um im Chat die"','"Passwort-Eingabe"','"zu tätigen."'] } }


Variante 1: Zeichen-Funktion
Die Zeichen-Funktion läuft Zeichen für Zeichen durch das Passwort und prüft dabei ob die vier Zeichen enthalten sind. Die Überprüfung an sich wird mit der aufgerufenen Zeichenlisten-Funktion durchgeführt.

Editor Icon passwort-system:v1zeichen.mcfunction
# Das erste Zeichen vom möglichen Passwort wird geholt.
data modify storage passwort-system:v1daten "EigPasswS.1Kennzeichen" set string storage passwort-system:v1daten "EigPasswS.1Passwort" 0 1
data modify storage passwort-system:v1daten "EigPasswS.1Passwort" set string storage passwort-system:v1daten "EigPasswS.1Passwort" 1

# Die Zeichenlisten-Funktion wird mit allen vier Zeichenlisten geladen um zu überprüfen ob das jeweilige Zeichen im Passwort enthalten ist.
scoreboard players set VarPasswS.1Zeichen PZPasswS.1Nr 0
data modify storage passwort-system:v1daten "EigPasswS.1Zeichenliste" set from storage passwort-system:v1daten "EigPasswS.1Ziffern"
execute store result score VarPasswS.1Liste PZPasswS.1Nr run data get storage passwort-system:v1daten "EigPasswS.1Zeichenliste"
function passwort-system:v1zeichenliste
execute if score VarPasswS.1Zeichen PZPasswS.1Nr matches 1 run scoreboard players add VarPasswS.1Ziffer PZPasswS.1Nr 1

scoreboard players set VarPasswS.1Zeichen PZPasswS.1Nr 0
data modify storage passwort-system:v1daten "EigPasswS.1Zeichenliste" set from storage passwort-system:v1daten "EigPasswS.1Kleinbuchstaben"
execute store result score VarPasswS.1Liste PZPasswS.1Nr run data get storage passwort-system:v1daten "EigPasswS.1Zeichenliste"
function passwort-system:v1zeichenliste
execute if score VarPasswS.1Zeichen PZPasswS.1Nr matches 1 run scoreboard players add VarPasswS.1Kleinbuchstabe PZPasswS.1Nr 1

scoreboard players set VarPasswS.1Zeichen PZPasswS.1Nr 0
data modify storage passwort-system:v1daten "EigPasswS.1Zeichenliste" set from storage passwort-system:v1daten "EigPasswS.1Grossbuchstaben"
execute store result score VarPasswS.1Liste PZPasswS.1Nr run data get storage passwort-system:v1daten "EigPasswS.1Zeichenliste"
function passwort-system:v1zeichenliste
execute if score VarPasswS.1Zeichen PZPasswS.1Nr matches 1 run scoreboard players add VarPasswS.1Grossbuchstabe PZPasswS.1Nr 1

scoreboard players set VarPasswS.1Zeichen PZPasswS.1Nr 0
data modify storage passwort-system:v1daten "EigPasswS.1Zeichenliste" set from storage passwort-system:v1daten "EigPasswS.1Sonderzeichen"
execute store result score VarPasswS.1Liste PZPasswS.1Nr run data get storage passwort-system:v1daten "EigPasswS.1Zeichenliste"
function passwort-system:v1zeichenliste
execute if score VarPasswS.1Zeichen PZPasswS.1Nr matches 1 run scoreboard players add VarPasswS.1Sonderzeichen PZPasswS.1Nr 1

# Diese Funktion wird erneut aufgerufen, bis alle Zeichen des Passworts durchgegangen sind.
scoreboard players remove VarPasswS.1Laenge PZPasswS.1Nr 1
execute if score VarPasswS.1Laenge PZPasswS.1Nr matches 1.. run function passwort-system:v1zeichen


Variante 1: Zeichenlisten-Funktion
Die Zeichenlisten-Funktion läuft durch die Zeichenliste und vergleich davon jedes Zeichen mit dem des Passwortes. Enthalt das Passwort das Zeichen so wird eine Variable entsprechend gesetzt.

Editor Icon passwort-system:v1zeichenliste.mcfunction
# Das einzelne Zeichen wird in eine separate Eigenschaft kopiert, um nicht das Original beim Vergleichen zu verlieren.
data modify storage passwort-system:v1daten "EigPasswS.1Zeichen" set from storage passwort-system:v1daten "EigPasswS.1Kennzeichen"

# Beim Prüfen, ob das Zeichen im Passwort enthalten ist, wird dieses durch ein Zeichen aus der Zeichenliste ersetzt. Falls es das gleiche Zeichen war, schlägt dieser Vorgang fehl.
execute store success score VarPasswS.1ZeichenUngleich PZPasswS.1Nr run data modify storage passwort-system:v1daten "EigPasswS.1Zeichen" set from storage passwort-system:v1daten "EigPasswS.1Zeichenliste"[0]
data remove storage passwort-system:v1daten "EigPasswS.1Zeichenliste"[0]

# Wenn das Zeichen enthalten ist, dann wird die Variable auf eins gesetzt.
execute if score VarPasswS.1ZeichenUngleich PZPasswS.1Nr matches 0 run scoreboard players set VarPasswS.1Zeichen PZPasswS.1Nr 1

# Wenn das Zeichen noch nicht gefunden wurde und die Funktion noch nicht ans Ende angekommen ist, wird die Funktion erneut aufgerufen.
scoreboard players remove VarPasswS.1Liste PZPasswS.1Nr 1
execute if score VarPasswS.1ZeichenUngleich PZPasswS.1Nr matches 1 if score VarPasswS.1Liste PZPasswS.1Nr matches 1.. run function passwort-system:v1zeichenliste


Variante 1: Passwort-Funktion
Die Passwort-Funktion setzt und prüft das Passwort. Nur wenn es übereinstimmt, wird dem Spieler das Etikett vergeben, dass fürs Anmelden wichtig ist.

Editor Icon passwort-system:v1passwort.mcfunction
# Der JSON-Text von der Buchseite wird in den Datenspeicher kopiert, da dort der Vergleich stattfinden kann.
data modify storage passwort-system:v1daten "EigPasswS.1Passwort" set from entity @s SelectedItem.tag.pages[0]

# Wenn das Passwort noch nicht gesetzt wurde, wird in dem Markierer mit der gleichen Nummer wie der Spieler das Passwort vom Datenspeicher im Datenbereich des Markierers gespeichert.
execute if entity @s[tag=!EtiPasswS.1Passwort] as @e[type=minecraft:marker,tag=EtiPasswS.1Passwort] if score @s PZPasswS.1Nr = @p PZPasswS.1Nr run data modify entity @s data."EigPasswS.1Passwort" set from storage passwort-system:v1daten "EigPasswS.1Passwort"

# Falls der Spieler sein Passwort bereits festgelegt hat, wird nun geprüft ob sein eingegebenes Passwort mit diesem übereinstimmt. Wenn es übereinstimmt, wird der Wert der Erfolgs-Variable auf null gesetzt, ansonsten auf eins.
execute if entity @s[tag=EtiPasswS.1Passwort] as @e[type=minecraft:marker,tag=EtiPasswS.1Passwort] if score @s PZPasswS.1Nr = @p PZPasswS.1Nr store success score VarPasswS.1PasswortUngleich PZPasswS.1Nr run data modify storage passwort-system:v1daten "EigPasswS.1Passwort" set from entity @s data."EigPasswS.1Passwort"

# Falls das Passwort nicht gestimmt hat, wird eine Fehlermeldung ausgegeben.
execute if score VarPasswS.1PasswortUngleich PZPasswS.1Nr matches 1 run tellraw @s[tag=EtiPasswS.1Passwort,tag=!EtiPasswS.1Angemeldet] ["Passwort-System.1:\n",{"text":"Dein eingetipptes Passwort stimmt nicht mit dem festgelegten Passwort überein!","color":"red","bold":true}]

# Wenn das Passwort richtig war, bekommt der Spieler eine Erfolgsmeldung und ein Etikett.
execute if score VarPasswS.1PasswortUngleich PZPasswS.1Nr matches 0 run tellraw @s[tag=EtiPasswS.1Passwort,tag=!EtiPasswS.1Angemeldet] ["Passwort-System.1:\n",{"text":"Du hast dich erfolgreich angemeldet. Du kannst dich nun frei bewegen.","color":"green","bold":true}]
execute if score VarPasswS.1PasswortUngleich PZPasswS.1Nr matches 0 run tag @s[tag=EtiPasswS.1Passwort,tag=!EtiPasswS.1Angemeldet] add EtiPasswS.1Angemeldet

# Wenn das Passwort noch nicht gesetzt wurde, wird nun eine Erfolgsmeldung ausgegeben, dass es gesetzt wurde und der Spieler bekommt das Etikett.
tellraw @s[tag=!EtiPasswS.1Passwort] ["Passwort-System.1:\n",{"text":"Dein Passwort wurde festgelegt, bestätige es um dich anzumelden. Es lautet: ","color":"yellow","bold":true},{"entity":"@s","nbt":"SelectedItem.tag.pages[0]","bold":true}]
tag @s[tag=!EtiPasswS.1Passwort] add EtiPasswS.1Passwort


Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele, die Etiketten und Gegenstände aus den Inventaren. Objekte mit Etikett werden ebenfalls gelöscht.

Editor Icon passwort-system:v1stopp.mcfunction
# Die Punkte-Ziele werden wieder gelöscht.
scoreboard objectives remove PZPasswS.1Bei
scoreboard objectives remove PZPasswS.1Nr

# Der Datenspeicher wird geleert.
data remove storage passwort-system:v1daten "EigPasswS.1Passwort"
data remove storage passwort-system:v1daten "EigPasswS.1Kennzeichen"
data remove storage passwort-system:v1daten "EigPasswS.1Zeichen"
data remove storage passwort-system:v1daten "EigPasswS.1Zeichenliste"
data remove storage passwort-system:v1daten "EigPasswS.1Ziffern"
data remove storage passwort-system:v1daten "EigPasswS.1Kleinbuchstaben"
data remove storage passwort-system:v1daten "EigPasswS.1Grossbuchstaben"
data remove storage passwort-system:v1daten "EigPasswS.1Sonderzeichen"

# Das Buch zum Schreiben des Passwortes wird entfernt.
clear @a minecraft:writable_book{EigPasswS.1Alle:true}

# Die Etiketten, die im Verlauf der Passwort-Eingabe vergeben wurden, werden entfernt.
tag @a[tag=EtiPasswS.1Nummer] remove EtiPasswS.1Nummer
tag @a[tag=EtiPasswS.1Auswahl] remove EtiPasswS.1Auswahl
tag @a[tag=EtiPasswS.1Beitritt] remove EtiPasswS.1Beitritt
tag @a[tag=EtiPasswS.1Passwort] remove EtiPasswS.1Passwort
tag @a[tag=EtiPasswS.1Angemeldet] remove EtiPasswS.1Angemeldet

# Falls das Buch auf den Boden geworfen wurde, erhält es ein Etikett und alle Objekte damit werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigPasswS.1Alle:true} } }] add EtiPasswS.1Alle
kill @e[tag=EtiPasswS.1Alle]

Variante 2[]

Passwort-System (Befehle) Bild 2.1 Passwort-System (Befehle) Bild 2.2 Passwort-System (Befehle) Bild 2.3

Mit diesem Passwort-Generator lassen sich Passwörter mit beliebigen Kriterien erstellen. Wird der Hebel fürs Einschalten umgelegt, so erhält man ein Namensschild, welches man in der Schnellleiste auswählen kann. Hat man das getan, so erhält man ein Menü mit Schaltflächen im Chat. Dort kann man entsprechende Einstellungen vornehmen, welche Zeichen das Passwort enthalten und wie lang es sein soll. Hat man auf die Schaltfläche fürs Generieren getippt, so erhält die Namens-Eigenschaft des Namensschild das Passwort. Wenn man nun dieses Namensschild in einen Amboss legt, kann man das Passwort mit Hilfe von Strg + C kopieren.

Einschalten
  • Befehl 2.1 Wenn der Hebel umgelegt wird, wird die Start-Funktion gestartet.
Wiederholen
  • Befehl 2.2 Beim Einschalten wird auch der Wiederhol-Befehlsblock gestartet, der jeden Tick die Zyklus-Funktion lädt.
Ausschalten
  • Befehl 2.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:


Datenpaket


Variante 2: Start-Funktion
Die Start-Funktion erstellt die Punkte-Ziele und belegt den Datenspeicher mit allen Zeichenlisten. Spieler erhalten das magische Namensschild und ein Amboss und das Schild werden platziert.

Editor Icon passwort-system:v2start.mcfunction
# Die Punkte-Ziele für die Nummerierung und für das Verlassen des Spiels werden angelegt.
scoreboard objectives add PZPasswS.2Ausl trigger ["Passwort-System.2: ",{"text":"Auslöser","bold":true}]
scoreboard objectives add PZPasswS.2Laenge dummy ["Passwort-System.2: ",{"text":"Länge und Wert der Variablen","bold":true}]

# Der Datenspeicher für das Generieren des Passwortes wird erstellt.
data merge storage passwort-system:v2daten {EigPasswS.2Bool:'{"text":"wahr","color":"green","bold":true}',EigPasswS.2Passwort:["null"],EigPasswS.2Zeichenliste:[],EigPasswS.2Ziffern:["0","1","2","3","4","5","6","7","8","9"],EigPasswS.2Kleinbuchstaben:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],EigPasswS.2Grossbuchstaben:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],EigPasswS.2Sonderzeichen:["!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","?","@","[","\\","]","^","_","´","{","}","~","€","°"]}

# An der Position des Markierers wird ein Amboss und ein Schild aufgestellt.
summon minecraft:marker ~ ~1 ~2 {Tags:["EtiPasswS.2Alle","EtiPasswS.2Schild"]}
execute at @e[type=minecraft:marker,tag=EtiPasswS.2Schild,sort=nearest,limit=1] run setblock ~ ~-1 ~ minecraft:anvil replace
execute at @e[type=minecraft:marker,tag=EtiPasswS.2Schild,sort=nearest,limit=1] run setblock ~ ~ ~ minecraft:oak_sign replace

# Alle Spieler im Umkreis erhalten ein Namensschild dass das generierte Passwort im Namen tragen wird.
give @a[distance=..15] minecraft:name_tag{EigPasswS.2Alle:true,EigPasswS.2Generator:true,Enchantments:[{id:-1}],display:{Name:'{"text":"Passwort-Generator","color":"dark_purple","bold":true}',Lore:['"Wähle das Namensschild aus"','"um im Chat das"','"Passwort zu generieren."','"Ist es generiert, so"','"lege das Namensschild in"','"den Amboss um es mit"','"STRG und C zu kopieren."'] } }


Variante 2: Zyklus-Funktion
Die Zyklus-Funktion prüft ob die Spieler das Namensschild ausgewählt haben und nur dann wird die Auslöser-Funktion aufgerufen.

Editor Icon passwort-system:v2zyklus.mcfunction
# Wenn Spieler das Namensschild ausgewählt haben, erhalten sie ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigPasswS.2Generator:true} } }] add EtiPasswS.2Ausgewaehlt

# Spieler die das Namenschild gerade ausgewählt haben, erhalten einen Wert, der dafür sorgt, dass die Auslöser-Funktion aufgerufen wird und Spieler die noch nicht ihre Passwort-Länge eingestellt haben, erhalten den Wert 12.
scoreboard players set @a[tag=EtiPasswS.2Ausgewaehlt,tag=!EtiPasswS.2Auswahl] PZPasswS.2Ausl -99
execute as @a[tag=EtiPasswS.2Ausgewaehlt,tag=!EtiPasswS.2Auswahl] unless score @s PZPasswS.2Laenge matches 0.. run scoreboard players set @s PZPasswS.2Laenge 12

# Wenn das Namensschild ausgewählt, wird die Längen-Funktion aufgerufen.
execute as @a[tag=EtiPasswS.2Ausgewaehlt] unless entity @s[scores={PZPasswS.2Ausl=0}] run function passwort-system:v2ausloeser

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

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


Variante 2: Auslöser-Funktion
Die Auslöser-Funktion stellt im Chat alle Schaltflächen dar um das Passwort nach Wunsch zu gestalten und ruft die Längen-Funktion auf, wenn das Passwort generiert werden soll.

Editor Icon passwort-system:v2ausloeser.mcfunction
# Es wird die Anzahl der angeklickten Zeichenlisten ermittelt.
execute store success score VarPasswS.2Ausgewaehlt PZPasswS.2Ausl if entity @s[tag=!EtiPasswS.2Ziffern]
execute if entity @s[tag=!EtiPasswS.2Kleinbuchstaben] run scoreboard players add VarPasswS.2Ausgewaehlt PZPasswS.2Ausl 1
execute if entity @s[tag=!EtiPasswS.2Grossbuchstaben] run scoreboard players add VarPasswS.2Ausgewaehlt PZPasswS.2Ausl 1
execute if entity @s[tag=!EtiPasswS.2Sonderzeichen] run scoreboard players add VarPasswS.2Ausgewaehlt PZPasswS.2Ausl 1

# Falls der Spieler nur eine Zeichenliste aktiv hat und nun diese auch ausschalten will, so wird ihm eine Fehlermeldung ausgegeben.
execute if score VarPasswS.2Ausgewaehlt PZPasswS.2Ausl matches 1 run tellraw @s[scores={PZPasswS.2Ausl=-4..-1}] ["Passwort-System.2:\n",{"text":"Eine Option muss mindestens wahr sein!","color":"red","bold":true}]

# Der Spieler kann durch einen Klick auf die Schaltfläche die jeweilige Zeichenliste aktivieren oder deaktivieren.
execute if score VarPasswS.2Ausgewaehlt PZPasswS.2Ausl matches 2.. run tag @s[scores={PZPasswS.2Ausl=-1}] add EtiPasswS.2Ziffern
tag @s[scores={PZPasswS.2Ausl=1}] remove EtiPasswS.2Ziffern

execute if score VarPasswS.2Ausgewaehlt PZPasswS.2Ausl matches 2.. run tag @s[scores={PZPasswS.2Ausl=-2}] add EtiPasswS.2Kleinbuchstaben
tag @s[scores={PZPasswS.2Ausl=2}] remove EtiPasswS.2Kleinbuchstaben

execute if score VarPasswS.2Ausgewaehlt PZPasswS.2Ausl matches 2.. run tag @s[scores={PZPasswS.2Ausl=-3}] add EtiPasswS.2Grossbuchstaben
tag @s[scores={PZPasswS.2Ausl=3}] remove EtiPasswS.2Grossbuchstaben

execute if score VarPasswS.2Ausgewaehlt PZPasswS.2Ausl matches 2.. run tag @s[scores={PZPasswS.2Ausl=-4}] add EtiPasswS.2Sonderzeichen
tag @s[scores={PZPasswS.2Ausl=4}] remove EtiPasswS.2Sonderzeichen

# Der Spieler kann die Länge des Passwortes frei festlegen, von zwei bis zum maximalen Zahlenbereich.
scoreboard players add @s[scores={PZPasswS.2Ausl=5,PZPasswS.2Laenge=..63}] PZPasswS.2Laenge 1
scoreboard players remove @s[scores={PZPasswS.2Ausl=-5,PZPasswS.2Laenge=2..}] PZPasswS.2Laenge 1

# Wenn der Spieler auf Passwort generieren getippt hat, wird ein Rahmen an der Position des Spielers erzeugt der die Längen-Funktion aufruft.
execute at @s[scores={PZPasswS.2Ausl=10}] summon minecraft:item_frame run function passwort-system:v2laenge

# Wahrheitswert für entsprechende Zeichenliste, dieser erscheint im tellraw-Befehl.
execute if entity @s[tag=!EtiPasswS.2Ziffern] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"wahr","color":"green","bold":true}'
execute if entity @s[tag=EtiPasswS.2Ziffern] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"falsch","color":"red","bold":true}'

# Dem Spieler wird im Chat die Auswahl für die vier Zeichenlisten und der Länge engezeit. Er kann dabei auf die Schaltflächen klicken um die Einstellungen zu ändern.
tellraw @s ["Passwort-System.2:\n",{"text":"ziffern (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set 1"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set -1"} },{"text":") == ","bold":true},{"storage":"passwort-system:v2daten","nbt":"\"EigPasswS.2Bool\"","interpret":true}]

execute if entity @s[tag=!EtiPasswS.2Kleinbuchstaben] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"wahr","color":"green","bold":true}'
execute if entity @s[tag=EtiPasswS.2Kleinbuchstaben] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"falsch","color":"red","bold":true}'

tellraw @s ["",{"text":"kleinbuchstaben (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set 2"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set -2"} },{"text":") == ","bold":true},{"storage":"passwort-system:v2daten","nbt":"\"EigPasswS.2Bool\"","interpret":true}]

execute if entity @s[tag=!EtiPasswS.2Grossbuchstaben] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"wahr","color":"green","bold":true}'
execute if entity @s[tag=EtiPasswS.2Grossbuchstaben] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"falsch","color":"red","bold":true}'

tellraw @s ["",{"text":"grossbuchstaben (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set 3"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set -3"} },{"text":") == ","bold":true},{"storage":"passwort-system:v2daten","nbt":"\"EigPasswS.2Bool\"","interpret":true}]

execute if entity @s[tag=!EtiPasswS.2Sonderzeichen] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"wahr","color":"green","bold":true}'
execute if entity @s[tag=EtiPasswS.2Sonderzeichen] run data modify storage passwort-system:v2daten "EigPasswS.2Bool" set value '{"text":"falsch","color":"red","bold":true}'

tellraw @s ["",{"text":"sonderzeichen (","bold":true},{"text":"=wahr","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für wahr"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set 4"} },{"text":",","bold":true},{"text":"=falsch","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für falsch"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set -4"} },{"text":") == ","bold":true},{"storage":"passwort-system:v2daten","nbt":"\"EigPasswS.2Bool\"","interpret":true},"\n",{"text":"laenge (","bold":true},{"text":"=laenge + 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set 5"} },{"text":",","bold":true},{"text":"=laenge - 1","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe für Länge - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set -5"} },{"text":") == ","bold":true},{"score":{"name":"@s","objective":"PZPasswS.2Laenge"},"color":"dark_purple","bold":true},"\n",{"text":"passwort = ","color":"gold","bold":true},{"text":"erstellen()","color":"gray","bold":true,"underlined":true,"hoverEvent":{"action":"show_text","contents":{"text":"Tippe um das Passwort zu erstellen"} },"clickEvent":{"action":"run_command","value":"/trigger PZPasswS.2Ausl set 10"} },"\n",{"text":"passwort == ","color":"gold","bold":true},{"storage":"passwort-system:v2daten","nbt":"\"EigPasswS.2Passwort\"[]","separator":"","color":"dark_purple","bold":true}]

# Damit der Spieler nach dem Anklicken der Schaltflächen erneut die Berechtigung erhält um nochmals eine Schaltfläche aktivieren zu können.
scoreboard players enable @s PZPasswS.2Ausl
scoreboard players set @s PZPasswS.2Ausl 0


Variante 2: Längen-Funktion
Die Längen-Funktion ruft die Zeichen-Funktion auf um das Passwort zu generieren und wenn der Schritt erledigt ist, sorgt sie dafür, dass das Passwort in die Namens-Eigenschaft des Namensschilds kopiert wird, damit der Spieler das Passwort mit Hilfe des Ambosses kopieren kann.

Editor Icon passwort-system:v2laenge.mcfunction
# Das Passwort wird geleert.
data merge storage passwort-system:v2daten {EigPasswS.2Passwort:[]}

# Die Passwort-Länge wird in eine separate Variable gespeichert, um diese ändern zu können.
scoreboard players operation VarPasswS.2Laenge PZPasswS.2Laenge = @p PZPasswS.2Laenge
execute summon minecraft:marker run function passwort-system:v2zeichen

# Das Passwort wird vom Datenspeicher in den Text des Schildes kopiert, sodass die Zeichenkette in einen JSON-Text umgewandelt wird.
execute at @e[type=minecraft:marker,tag=EtiPasswS.2Schild,sort=nearest,limit=1] run data modify block ~ ~ ~ Text1 set value '{"storage":"passwort-system:v2daten","nbt":"\\"EigPasswS.2Passwort\\"[]","separator":""}'

# Der Rahmen erhalt ein Namensschild und die Eigenschaften vom gehaltenen Namensschild des Spielers werden in die des Rahmens kopiert.
item replace entity @s container.0 with minecraft:name_tag{EigPasswS.2Alle:true}
data modify entity @s Item.tag set from entity @p SelectedItem.tag

# Der JSON-Text (Passwort) vom Schild wird in die Namens-Eigenschaft des Namensschild kopiert.
execute at @e[type=minecraft:marker,tag=EtiPasswS.2Schild,sort=nearest,limit=1] run data modify entity @s Item.tag.display.Name set from block ~ ~ ~ Text1

# Anschließend wird das Namensschild vom Spieler durch das Namensschild vom Rahmen ersetzt.
item replace entity @p weapon.mainhand from entity @s container.0

# Der Rahmen wird wieder entfernt.
kill @s


Variante 2: Zeichen-Funktion
Die Zeichen-Funktion schaut danach welche Zeichen das Passwort enthalten soll und wählt davon eine Liste zufällig aus und ruft drauf aufbauend die Zeichenlisten-Funktion auf.

Editor Icon passwort-system:v2zeichen.mcfunction
# Für die vereinfachte Selektor-Auswahl werden einfach alle Etiketten des Spielers in den Markierer kopiert.
data modify entity @s Tags set from entity @p Tags

# Die Eigenschaft im Datenspeicher wird geleert und anschließend wieder befüllt. Abhängig davon welche Zeichen im Passwort enthalten sein sollen. Dabei steht jede Zahl für eine der vier Zeichenlisten.
data merge storage passwort-system:v2daten {EigPasswS.2Zeichenliste:[]}
execute if entity @s[tag=!EtiPasswS.2Ziffern] run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" append value 0
execute if entity @s[tag=!EtiPasswS.2Kleinbuchstaben] run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" append value 1
execute if entity @s[tag=!EtiPasswS.2Grossbuchstaben] run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" append value 2
execute if entity @s[tag=!EtiPasswS.2Sonderzeichen] run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" append value 3

# Von dem Markierer wird die UUID verwendet um eine Zufallszahl zu erhalten, anschließend wird diese Zahl mit Hilfe von Modulo auf den Zahlenbreich der Zeichenliste reduziert.
execute store result score VarPasswS.2Zufallswert PZPasswS.2Laenge run data get entity @s UUID[0]
execute store result score VarPasswS.2Auswahl PZPasswS.2Laenge run data get storage passwort-system:v2daten "EigPasswS.2Zeichenliste"
scoreboard players operation VarPasswS.2Zufallswert PZPasswS.2Laenge %= VarPasswS.2Auswahl PZPasswS.2Laenge

# In die Auswahl-Variable wird mit einer zufälligen Zahl bestückt, die in der Liste ist.
execute if score VarPasswS.2Zufallswert PZPasswS.2Laenge matches 0 store result score VarPasswS.2Auswahl PZPasswS.2Laenge run data get storage passwort-system:v2daten "EigPasswS.2Zeichenliste"[0]
execute if score VarPasswS.2Zufallswert PZPasswS.2Laenge matches 1 store result score VarPasswS.2Auswahl PZPasswS.2Laenge run data get storage passwort-system:v2daten "EigPasswS.2Zeichenliste"[1]
execute if score VarPasswS.2Zufallswert PZPasswS.2Laenge matches 2 store result score VarPasswS.2Auswahl PZPasswS.2Laenge run data get storage passwort-system:v2daten "EigPasswS.2Zeichenliste"[2]
execute if score VarPasswS.2Zufallswert PZPasswS.2Laenge matches 3 store result score VarPasswS.2Auswahl PZPasswS.2Laenge run data get storage passwort-system:v2daten "EigPasswS.2Zeichenliste"[3]

# Je nach dem welchen Wert die Auswahl-Variable hat, wird die entsprechende Zeichenliste herangezogen.
execute if score VarPasswS.2Auswahl PZPasswS.2Laenge matches 0 run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" set from storage passwort-system:v2daten "EigPasswS.2Ziffern"
execute if score VarPasswS.2Auswahl PZPasswS.2Laenge matches 1 run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" set from storage passwort-system:v2daten "EigPasswS.2Kleinbuchstaben"
execute if score VarPasswS.2Auswahl PZPasswS.2Laenge matches 2 run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" set from storage passwort-system:v2daten "EigPasswS.2Grossbuchstaben"
execute if score VarPasswS.2Auswahl PZPasswS.2Laenge matches 3 run data modify storage passwort-system:v2daten "EigPasswS.2Zeichenliste" set from storage passwort-system:v2daten "EigPasswS.2Sonderzeichen"

# Vom Markierer wird erneut die UUID verwendet um einen weiteren Zufallswert zu erhalten, dieser wird auch wieder auf die Länge der Zeichenliste reduziert. Anschließend wird die Zeichenlisten-Funktion geladen. Der Markierer wird danach nicht mehr gebraucht und entfernt.
execute store result score VarPasswS.2Zufallswert PZPasswS.2Laenge run data get entity @s UUID[1]
execute store result score VarPasswS.2Liste PZPasswS.2Laenge run data get storage passwort-system:v2daten "EigPasswS.2Zeichenliste"
scoreboard players operation VarPasswS.2Zufallswert PZPasswS.2Laenge %= VarPasswS.2Liste PZPasswS.2Laenge
kill @s
function passwort-system:v2zeichenliste

# Solange das Passwort noch nicht in seiner vollen Länge generiert wurde, wird die Funktion erneut aufgerufen, dabei immer mit einem weiteren Markierer.
scoreboard players remove VarPasswS.2Laenge PZPasswS.2Laenge 1
execute if score VarPasswS.2Laenge PZPasswS.2Laenge matches 1.. summon minecraft:marker run function passwort-system:v2zeichen


Variante 2: Zeichenlisten-Funktion
Die Zeichenlisten-Funktion läuft an die Stelle der Zeichenliste, wo das gewünschte Zeichen ist und kopiert dieses in das Passwort.

Editor Icon passwort-system:v2zeichenliste.mcfunction
# Die Listen-Längen-Variable wird um eins reduziert.
scoreboard players remove VarPasswS.2Liste PZPasswS.2Laenge 1

# Wenn die Funktion an der richtigen Position in der Liste angekommen ist, wird das Zeichen aus der Zeichenliste in das Passwort übertragen.
execute if score VarPasswS.2Zufallswert PZPasswS.2Laenge = VarPasswS.2Liste PZPasswS.2Laenge run data modify storage passwort-system:v2daten "EigPasswS.2Passwort" append from storage passwort-system:v2daten "EigPasswS.2Zeichenliste"[-1]
data remove storage passwort-system:v2daten "EigPasswS.2Zeichenliste"[-1]

# Solange die Listen-Längen-Variable größer oder gleich dem Zufallswert ist, wird diese Funktion erneut aufgerufen.
execute if score VarPasswS.2Liste PZPasswS.2Laenge >= VarPasswS.2Zufallswert PZPasswS.2Laenge run function passwort-system:v2zeichenliste


Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele, der Datenspeicher wird geleert, das Namensschild wird entfernt sowie alle Etiketten die der Spieler im Laufe der Passwort-Generierung erhalten hatte.

Editor Icon passwort-system:v2stopp.mcfunction
# Das Punkte-Ziel wird wieder gelöscht.
scoreboard objectives remove PZPasswS.2Ausl
scoreboard objectives remove PZPasswS.2Laenge

# Der Datenspeicher wird geleert.
data remove storage passwort-system:v2daten "EigPasswS.2Bool"
data remove storage passwort-system:v2daten "EigPasswS.2Passwort"
data remove storage passwort-system:v2daten "EigPasswS.2Zeichenliste"
data remove storage passwort-system:v2daten "EigPasswS.2Ziffern"
data remove storage passwort-system:v2daten "EigPasswS.2Kleinbuchstaben"
data remove storage passwort-system:v2daten "EigPasswS.2Grossbuchstaben"
data remove storage passwort-system:v2daten "EigPasswS.2Sonderzeichen"

# Das Buch zum Schreiben des Passwortes wird entfernt.
clear @a minecraft:name_tag{EigPasswS.2Alle:true}

# Die Etiketten, die im Verlauf der Passwort-Eingabe vergeben wurden, werden entfernt.
tag @a[tag=EtiPasswS.2Auswahl] remove EtiPasswS.2Auswahl
tag @a[tag=EtiPasswS.2Ziffern] remove EtiPasswS.2Ziffern
tag @a[tag=EtiPasswS.2Kleinbuchstaben] remove EtiPasswS.2Kleinbuchstaben
tag @a[tag=EtiPasswS.2Grossbuchstaben] remove EtiPasswS.2Grossbuchstaben
tag @a[tag=EtiPasswS.2Sonderzeichen] remove EtiPasswS.2Sonderzeichen

# Der Amboss und das Schild werden entfernt.
execute at @e[type=minecraft:marker,tag=EtiPasswS.2Schild,sort=nearest,limit=1] run setblock ~ ~ ~ minecraft:air replace
execute at @e[type=minecraft:marker,tag=EtiPasswS.2Schild,sort=nearest,limit=1] run setblock ~ ~-1 ~ minecraft:air replace

# Falls das Buch auf den Boden geworfen wurde, erhält es ein Etikett und alle Objekte damit werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigPasswS.2Alle:true} } }] add EtiPasswS.2Alle
kill @e[tag=EtiPasswS.2Alle]
Advertisement