Technik Wiki
Technik Wiki
(Neu erstellt: Variante 1 hinzugefügt)
Markierung: Neuanlage
 
(In Downloadwelt enthalten: Mechanik-Welt 1.16a)
 
Zeile 1: Zeile 1:
 
{{Unterseite|gruppe=Systeme|
 
{{Unterseite|gruppe=Systeme|
{{Seitenkopf}}
+
{{Seitenkopf|dw=m}}
{{Neue Technik|m}}
 
 
}}
 
}}
 
Das '''Passwort-System''' ist für {{mcw|Minecraft-Server|Server}} gedacht, bei denen die beitretenden Spieler, erst ein Passwort eintippen müssen, bevor sie auf dem Server frei rumlaufen 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.
 
Das '''Passwort-System''' ist für {{mcw|Minecraft-Server|Server}} gedacht, bei denen die beitretenden Spieler, erst ein Passwort eintippen müssen, bevor sie auf dem Server frei rumlaufen 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.
Zeile 21: Zeile 20:
 
{{Bilderfolge|#1#2#3|Passwort-System (Befehle) Bild 1.|400px|list=1}}
 
{{Bilderfolge|#1#2#3|Passwort-System (Befehle) Bild 1.|400px|list=1}}
   
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 Rüstungsständern gespeichert. Damit die Zugehörigkeit der Rüstungsständer klar ist, wird den Spielern und den Rüstungsständern 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 zulässt.
+
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 Rüstungsständern gespeichert. Damit die Zugehörigkeit der Rüstungsständer klar ist, wird den Spielern und den Rüstungsständern 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
 
;Einschalten

Aktuelle Version vom 17. Mai 2021, 17:55 Uhr

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 rumlaufen 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[]

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 Rüstungsständern gespeichert. Damit die Zugehörigkeit der Rüstungsständer klar ist, wird den Spielern und den Rüstungsständern 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:


Variante 1: Start-Funktion
Die Start-Funktion erstellt die Punkte-Ziele, den NBT-Speicher und einen Rüstungsständer, der für das Positionieren und Finden des Schildes 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:""}

# Ein Rüstungsständer, an dem ein Schild gesetzt wird, wird erzeugt.
summon minecraft:armor_stand ~ ~1 ~ {Small:true,Invisible:true,Tags:["EtiPasswS.1Alle","EtiPasswS.1Schild"]}
execute at @e[type=minecraft:armor_stand,tag=EtiPasswS.1Schild] run setblock ~ ~ ~ minecraft:oak_sign replace


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 entity @e[type=minecraft:armor_stand,tag=EtiPasswS.1Schild,limit=1] 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 Rüstungsständer 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.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 Rüstungsständer erzeugt.
execute if entity @s[tag=!EtiPasswS.1Nummer] run summon minecraft:armor_stand ~ ~ ~ {Small:true,Invisible:true,Marker:true,Tags:["EtiPasswS.1Alle","EtiPasswS.1Passwort","EtiPasswS.1Nummer"]}

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

# Dem Rüstungsständer wird das Etikett entfernt, da er die Nummer nun besitzt.
execute if entity @s[tag=!EtiPasswS.1Nummer] run tag @e[type=minecraft:armor_stand,tag=EtiPasswS.1Nummer,sort=nearest,limit=1] remove EtiPasswS.1Nummer

# 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 ..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.. run function passwort-system:v1passwort

# Damit der Text im Buch geleert wird, muss das Buch vollständig ersetzt werden.
replaceitem entity @s weapon.mainhand 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
# Da der Selektor im Schild kein @s unterstützt wird dem Spieler ein Etikett gegeben.
tag @s add EtiPasswS.1Selbst

# Der Text des Buches wird in das Schild übertragen, welches den normalen Text in einen JSON-Text umwandelt.
execute at @e[type=minecraft:armor_stand,tag=EtiPasswS.1Schild,sort=nearest,limit=1] run data merge block ~ ~ ~ {Text1:'{"entity":"@p[tag=EtiPasswS.1Selbst]","nbt":"SelectedItem.tag.pages[0]"}'}

# Der JSON-Text vom Schild wird in den NBT-Speicher kopiert, da dort der Vergleich stattfinden kann.
execute at @e[type=minecraft:armor_stand,tag=EtiPasswS.1Schild,sort=nearest,limit=1] run data modify storage passwort-system:v1daten "EigPasswS.1Passwort" set from block ~ ~ ~ Text1

# 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 sein, ansonsten auf eins.
execute if entity @s[tag=EtiPasswS.1Passwort] as @e[type=minecraft:armor_stand,tag=EtiPasswS.1Passwort] if score @s PZPasswS.1Nr = @p[tag=EtiPasswS.1Selbst] PZPasswS.1Nr store success score VarPasswS.1PasswortUngleich PZPasswS.1Nr run data modify storage passwort-system:v1daten "EigPasswS.1Passwort" set from entity @s CustomName

# Wenn das Passwort noch nicht gesetzt wurde, wird in dem Rüstungsständer 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:armor_stand,tag=EtiPasswS.1Passwort] if score @s PZPasswS.1Nr = @p[tag=EtiPasswS.1Selbst] PZPasswS.1Nr run data modify entity @s CustomName set from storage passwort-system:v1daten "EigPasswS.1Passwort"

# Das Etikett wird nicht mehr gebraucht und entfernt.
tag @s[tag=EtiPasswS.1Selbst] remove EtiPasswS.1Selbst

# 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. Das Buch wird nicht mehr gebraucht und somit entfernt.
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 clear @s[tag=EtiPasswS.1Passwort,tag=!EtiPasswS.1Angemeldet] minecraft:writable_book{EigPasswS.1Buch: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

# Das Schild an der Position des Rüstungsständer wird entfernt.
execute at @e[type=minecraft:armor_stand,tag=EtiPasswS.1Schild] run setblock ~ ~ ~ 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.1Alle:true} } }] add EtiPasswS.1Alle
kill @e[tag=EtiPasswS.1Alle]