Technik Wiki
Registrieren
Advertisement
Gruppe: Grid Klebriger Kolben
Anlagen

Grid Roter Sand blass mit Mechaniken

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

Benutzeroberflächen (engl. GUI) ermöglichen dem Spieler über anklickbare Gegenstände eine Steuerung von Techniken. Im Spiel wird dies meist über ein Inventar gelöst, das Gegenstände an bestimmten Slots angeordnet hat und wenn Gegenstände entfernt werden ist das ein Signal für eine Ausführung von etwas.

Variante 1[]

Benutzeroberfläche (Befehle) Bild 1.1 Benutzeroberfläche (Befehle) Bild 1.2

Diese Benutzeroberfläche wird durch eine schwebende Güterlore realisiert. Es wird hierbei geprüft ob Gegenstände angeklickt wurden und darauf folgt dann eine Text-Nachricht im Chat. Diese Nachricht könnte auch ein anderes Ereignis sein, das gestartet wird, wenn man einen der Gegenstände anklickt.

Einschalten
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 1: Start-Funktion
Die Start-Funktion erstellt das Punkte-Ziel für das Zählen der Gegenstände und die Güterlore die die Benutzeroberfläche darstellt, wird erstellt.

Editor Icon benutzeroberflaeche:v1start.mcfunction
# Ein Punkte-Ziel für Werte wird erstellt.
scoreboard objectives add PZBeOFl.1Wert dummy ["Benutzeroberfläche.1: ",{"text":"Werte","bold":true}]

# Eine Güterlore, die für die Benutzeroberfläche verwendet wird und die auf einem Rüstungsständer reitet, wird erstellt.
summon minecraft:armor_stand ~ ~1 ~ {NoGravity:true,Small:true,Invisible:true,Marker:true,Tags:["EtiBeOFl.1Alle"],Passengers:[{id:"minecraft:chest_minecart",NoGravity:true,Invulnerable:true,CustomName:'{"text":"Benutzeroberfläche","color":"dark_purple","bold":true}',Tags:["EtiBeOFl.1Alle","EtiBeOFl.1GUI"]},{id:"minecraft:armor_stand",NoGravity:true,Small:true,Invisible:true,Tags:["EtiBeOFl.1Alle"],CustomNameVisible:true,CustomName:'{"text":"Benutzeroberfläche","color":"dark_purple","bold":true}'}]}

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion liest jeden Tick aus, wie viele Slots in der Güterlore belegt sind, weicht dieser Wert von der Vorgabe ab, so wird die Menü-Funktion aufgerufen.

Editor Icon benutzeroberflaeche:v1zyklus.mcfunction
# Die Anzahl der belegten Slots, in der schwebende Güterlore, wird ausgelesen und nur wenn sie nicht übereinstimmt, wird die Funktion geladen.
execute as @e[type=minecraft:chest_minecart,tag=EtiBeOFl.1GUI,sort=nearest,limit=1] store result score @s PZBeOFl.1Wert run data get entity @s Items
execute as @e[type=minecraft:chest_minecart,tag=EtiBeOFl.1GUI,sort=nearest,limit=1] unless entity @s[scores={PZBeOFl.1Wert=11}] at @s run function benutzeroberflaeche:v1menu

Variante 1: Menü-Funktion
Die Menü-Funktion ermittelt zuerst, welcher Spieler die Gegenstände angeklickt hat und sendet danach eine Chat-Nachricht, in der der Gegenstand angegeben wird, der angeklickt wurde. Zuletzt wird die Güterlore wieder auf den Ursprungszustand gesetzt.

Editor Icon benutzeroberflaeche:v1menu.mcfunction
# Spieler die in dem Menü auf einen der Gegenstände geklickt haben, besitzen diese im eigenen Inventar. Genau diese werden aus dem Inventar gelöscht und so erhalten diese Spieler um die Güterlore einen Wert von eins. Falls man stattdessen mit Q den Gegenstand aus der Güterlore geworfen hat, wird der Drop gelöscht und der Spieler erhält ebenfalls den Wert eins, sofern er noch nichts anderes angeklickt hat.
execute as @a[distance=..5] store success score @s PZBeOFl.1Wert run clear @s #benutzeroberflaeche:v1menu{EigBeOFl.1Alle:true}
execute as @a[distance=..5,scores={PZBeOFl.1Wert=0}] store success score @s PZBeOFl.1Wert run kill @e[distance=..5,type=minecraft:item,nbt={Item:{tag:{EigBeOFl.1Alle:true} } }]

# Alle Spieler, die irgendwas angeklickt haben, erhalten eine Nachricht.
tellraw @a[distance=..5,scores={PZBeOFl.1Wert=1}] ["Benutzeroberfläche.1:"]

# Je nach dem welchen Gegenstand angeklickt hat, wird dies erkannt, in dem geprüft ob der Slot noch belegt ist und sich auch genau eine Einheit des Gegenstands dort befindet. In jeden Fall wo das nicht zutrifft, wird den Spielern die etwas angeklickt haben, eine zum Gegenstand passende Nachricht ausgegeben.
execute if entity @s[nbt=!{Items:[{Slot:11b,Count:1b}]}] run tellraw @a[distance=..5,scores={PZBeOFl.1Wert=1}] ["",{"text":"Bücherregal","color":"dark_aqua","bold":true},{"text":" angeklickt","bold":true}]

execute if entity @s[nbt=!{Items:[{Slot:12b,Count:1b}]}] run tellraw @a[distance=..5,scores={PZBeOFl.1Wert=1}] ["",{"text":"Truhe","color":"gold","bold":true},{"text":" angeklickt","bold":true}]

execute if entity @s[nbt=!{Items:[{Slot:13b,Count:1b}]}] run tellraw @a[distance=..5,scores={PZBeOFl.1Wert=1}] ["",{"text":"Shulkerkiste","color":"green","bold":true},{"text":" angeklickt","bold":true}]

execute if entity @s[nbt=!{Items:[{Slot:14b,Count:1b}]}] run tellraw @a[distance=..5,scores={PZBeOFl.1Wert=1}] ["",{"text":"Bett","color":"red","bold":true},{"text":" angeklickt","bold":true}]

execute if entity @s[nbt=!{Items:[{Slot:15b,Count:1b}]}] run tellraw @a[distance=..5,scores={PZBeOFl.1Wert=1}] ["",{"text":"Rakete","color":"dark_purple","bold":true},{"text":" angeklickt","bold":true}]

# Damit die Güterlore ihr Menü wieder erhält, werden alle Gegenstände wieder hinzugefügt.
data merge entity @s {Items:[{Slot:11b,id:"minecraft:bookshelf",Count:1b,tag:{EigBeOFl.1Alle:true,display:{Name:'{"text":"Bücherregal","color":"dark_aqua","bold":true}'} } },{Slot:12b,id:"minecraft:chest",Count:1b,tag:{EigBeOFl.1Alle:true,display:{Name:'{"text":"Truhe","color":"gold","bold":true}'} } },{Slot:13b,id:"minecraft:lime_shulker_box",Count:1b,tag:{EigBeOFl.1Alle:true,display:{Name:'{"text":"Shulkerkiste","color":"green","bold":true}'} } },{Slot:14b,id:"minecraft:red_bed",Count:1b,tag:{EigBeOFl.1Alle:true,display:{Name:'{"text":"Bett","color":"red","bold":true}'} } },{Slot:15b,id:"minecraft:firework_rocket",Count:1b,tag:{EigBeOFl.1Alle:true,display:{Name:'{"text":"Rakete","color":"dark_purple","bold":true}'} } }]}
JSON Icon benutzeroberflaeche:v1menu.json
{
  "values": [
    "minecraft:bookshelf",
    "minecraft:chest",
    "minecraft:lime_shulker_box",
    "minecraft:red_bed",
    "minecraft:firework_rocket"
  ]
}

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht das Punkte-Ziel wieder und Gegenstände und die Güterlore werden entfernt.

Editor Icon benutzeroberflaeche:v1stopp.mcfunction
# Das Punkte-Ziel wird wieder entfernt.
scoreboard objectives remove PZBeOFl.1Wert

# Falls Spieler einen der Menü-Gegenstände noch besitzen, werden diese entfernt.
clear @a #benutzeroberflaeche:v1menu{EigBeOFl.1Alle:true}

# Damit die Güterlore beim späteren Entfernen nichts droppt, werden alle Gegenstände entfernt.
data remove entity @e[type=minecraft:chest_minecart,tag=EtiBeOFl.1GUI,sort=nearest,limit=1] Items

# Gegenstände als Drop und die Güterlore werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigBeOFl.1Alle:true} } }] add EtiBeOFl.1Alle
kill @e[tag=EtiBeOFl.1Alle]


Disambig color
Advertisement