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

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 anschließend sich anmelden. Verlässt der Spieler das Spiel und tritt irgendwann wieder bei, muss er das Passwort erneut eintippen, um auf dem Server spielen zu können.

Inhaltsverzeichnis

Variante 1[]

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

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

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 dem Datenbereich von Markierern gespeichert. Damit die Zugehörigkeit der Markierer klar ersichtlich ist, wird den Spielern und den Markiereren die jeweils gleiche Nummer vergeben. Tritt ein Spieler erneut dem Spiel bei, muss er ebenfalls das Passwort eintippen. Das eingetippte Passwort kann aus allen möglichen Zeichen und Sprachen stammen. Die Länge des Passworts muss mindestens acht Zeichen lang sein und kann so lang sein wie die Buchseite es zulässt.

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 NBT-Speicher. Die Punkte-Ziele werden für das Nummerieren und das Erfassen des Spielbeitritts verwendet, während der NBT-Speicher für die Passwort-Setzung benutzt wird.

Editor Icon.png 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}]

# Ein NBT-Speicher für das Überprüfen des Passwortes wird erstellt.
data merge storage passwort-system:v1daten {EigPasswS.1Passwort:""}


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.png 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 das richtige Passwort eingetragen 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.","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.png 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"','"um im Chat die"','"Passwort-Eingabe"','"zu tätigen."'] } }
tellraw @s ["Passwort-System.1:\n",{"text":"Wähle das Buch in der Schnellleiste aus um das Passwort 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 ruft nur bei Erfolg die Passwort-Funktion auf.

Editor Icon.png 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..7 run tellraw @s ["Passwort-System.1:\n",{"text":"Bitte tippe ein Passwort mit mindestens 8 Zeichen ein. Das eingetippte Passwort bestand nur aus ","color":"red","bold":true},{"score":{"name":"VarPasswS.1Laenge","objective":"PZPasswS.1Nr"},"color":"dark_purple","bold":true},{"text":" Zeichen und lautete: ","color":"red","bold":true},{"entity":"@s","nbt":"SelectedItem.tag.pages[0]","bold":true}]

# Ist das Passwort lang genug, wird die Passwort-Funktion geladen.
execute if score VarPasswS.1Laenge PZPasswS.1Nr matches 8.. at @s run function passwort-system:v1passwort

# Das Buch mit dem eingetippten Passwort wird entfernt.
clear @s minecraft:writable_book{EigPasswS.1Buch:true}

# Damit der Spieler wieder ein Buch erhält, muss das Buch vollständig ersetzt werden.
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: 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.png passwort-system:v1passwort.mcfunction
# Der JSON-Text von der Buchseite wird in den NBT-Speicher 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 NBT-Speicher im Namen 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 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 gesetzt, 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.png passwort-system:v1stopp.mcfunction
# Die Punkte-Ziele werden wieder gelöscht.
scoreboard objectives remove PZPasswS.1Bei
scoreboard objectives remove PZPasswS.1Nr

# Der NBT-Speicher wird geleert.
data remove storage passwort-system:v1daten "EigPasswS.1Passwort"

# 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]
Advertisement