Käfigzone (Befehle)

Aus Technik Wiki
Wechseln zu: Navigation, Suche
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
Verfügbar in:
Wiki Redstone-Welt.png Redstone-Welt
Wiki Redstone-Welt.png
Diese neue oder überarbeitete Technik ist noch nicht in der aktuellen Redstone-Welt vorhanden.
In einem der nächsten Updates wird sie dort hinzugefügt werden.

Die Käfigzone sorgt dafür, dass Spieler in dieser für eine gewisse Zeit bleiben müssen, wenn sie dort hinein gelaufen sind. Da nur formen wie Kugeln oder Kuben möglich sind, lassen sich mit Freizonen, welche die gleichen Formen aufweisen wie Käfigzonen, vielschichtigere Formen realisieren. Meist sind die Zonen von ihrer Größe fest vorgegeben, es gibt aber auch Käfigzonen die sich dynamisch von ihrer Größe her einstellen lassen.

Variante 1[Bearbeiten | Quelltext bearbeiten]

Käfigzone (Befehle) Animation 1.1.1.png Käfigzone (Befehle) Animation 1.1.2.png

Diese Käfigzone ermöglicht es, per Rüstungsständer, Kugel- oder Kubus-Käfigzonen aufzustellen. Dabei sind die Zonen von ihrer Größe fest vorgegeben. Betritt man eine solche Zone muss man für eine bestimmte Zeit dort drinnen bleiben, bevor man wieder herauskommt.

Einschalten
  • Befehl 1.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion kaefigzone:v1start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 1: Start-Funktion
Die Start-Funktion gibt den Spielern die vier Rüstungsständer für die Käfigzonen.

Editor Icon.png kaefigzone:v1start.mcfunction
# Ein Punkte-Ziel für die Zeit der Gefangenschaft wird erstellt.
scoreboard objectives add PZKaefZ.1Zeit dummy ["Käfigzone.1: ",{"text":"Zeit der Gefangenschaft"}]

# Es wird Spielern im Umkreis von 15 Blöcken jeweils ein Rüstungsständer für Kugel- und Kubus-Zonen gegeben.
give @a[distance=..15] minecraft:armor_stand{EigKaefZ.1Alle:true,display:{Name:'{"text":"Kugel-Käfigzone","color":"red","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Käfigzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kugel","color":"red","bold":true}',Tags:["EtiKaefZ.1Alle","EtiKaefZ.1Zone","EtiKaefZ.1Kugel"]} }
give @a[distance=..15] minecraft:armor_stand{EigKaefZ.1Alle:true,display:{Name:'{"text":"Kubus-Käfigzone","color":"red","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Käfigzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kubus","color":"red","bold":true}',Tags:["EtiKaefZ.1Alle","EtiKaefZ.1Zone","EtiKaefZ.1Kubus"],Rotation:[0.0f,0.0f]} }

Variante 1: Zyklus-Funktion
Die Zyklus-Funktion sorgt dafür, dass die Zonen angezeigt werden und dafür, dass die Spieler erst nach abgelaufener Gefangenschafts-Zeit die Zone verlassen können.

Editor Icon.png kaefigzone:v1zyklus.mcfunction
# Kugel- und Kubus-Rüstungsständer werden entsprechenden gedreht und an deren Positionen werden Partikel erzeugt, die die Zone erkennbar machen.
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Kugel] at @s run teleport @s ~ ~ ~ ~5 0
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Kugel] run particle minecraft:campfire_cosy_smoke ^ ^0.5 ^5 0 0 0 0 10 force @a[distance=..25]
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Kubus] at @s run teleport @s ~ ~ ~ ~90 0
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Kubus,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] at @s run particle minecraft:campfire_cosy_smoke ^5.5 ^0.5 ^ 0 0 2 0 10 force @a[distance=..25]
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Kubus,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] at @s run particle minecraft:campfire_cosy_smoke ^ ^0.5 ^5.5 2 0 0 0 10 force @a[distance=..25]

# Spieler die sich innerhalb einer Kugel- oder Kubus-Zone befinden, erhalten ein entsprechendes Etikett.
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Kugel] run tag @a[distance=..5,gamemode=!spectator] add EtiKaefZ.1InZone
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Kubus] positioned ~-5 ~ ~-5 run tag @a[dx=10,dy=10,dz=10,gamemode=!spectator,tag=!EtiKaefZ.1InZone] add EtiKaefZ.1InZone

# Spieler die in eine Käfigzone hinein gelaufen sind, erhaöten eine Nachricht und bekommen eine Zeit festgelegt, wie lange sie der Zone nicht entkommen können.
tellraw @a[tag=EtiKaefZ.1InZone,tag=!EtiKaefZ.1Gefangen] ["Käfigzone.1:\n",{"text":"Du hast dich der Käfigzone zu stark genähert, dafür musst du nun eine Zeit lang hier bleiben!","color":"red","bold":true} ]
scoreboard players add @a[tag=EtiKaefZ.1InZone,tag=!EtiKaefZ.1Gefangen] PZKaefZ.1Zeit 200
tag @a[tag=EtiKaefZ.1InZone,tag=!EtiKaefZ.1Gefangen] add EtiKaefZ.1Gefangen

# Damit die gefangenen Spieler wissen wie lange sie in Gefangenschaft verweilen müssen, wird ihnen über der Schnellleiste die Zeit in Ticks angezeigt.
execute as @a[tag=EtiKaefZ.1Gefangen,scores={PZKaefZ.1Zeit=0..}] run title @s actionbar ["",{"text":"Frei in ","color":"red","bold":true},{"score":{"name":"@s","objective":"PZKaefZ.1Zeit"},"color":"dark_purple","bold":true},{"text":" Ticks","color":"red","bold":true}]

# Spieler die aus der Zone ausbrechen wollen, werden wieder in Richtung Zonen-Zentrum teleportiert.
execute as @a[gamemode=!spectator,tag=EtiKaefZ.1Gefangen,tag=!EtiKaefZ.1InZone,scores={PZKaefZ.1Zeit=1..}] at @s facing entity @e[type=minecraft:armor_stand,tag=EtiKaefZ.1Zone,sort=nearest,limit=1] eyes run teleport @s ^ ^ ^0.4

# Wenn die Verweildauer erreicht ist und der Spieler sich befreit hat, wird ihm eine Nachricht angezeigt.
tellraw @a[tag=EtiKaefZ.1Gefangen,tag=!EtiKaefZ.1InZone,scores={PZKaefZ.1Zeit=..0}] ["Käfigzone.1:\n",{"text":"Du bist nun frei, kehre nicht zur Zone zurück!","color":"green","bold":true} ]
tag @a[tag=EtiKaefZ.1Gefangen,tag=!EtiKaefZ.1InZone,scores={PZKaefZ.1Zeit=..0}] remove EtiKaefZ.1Gefangen

# Solange der gefangene Spieler innerhalb einer Zone sitzt, wird seine Zeit reduziert.
scoreboard players remove @a[tag=EtiKaefZ.1Gefangen,tag=EtiKaefZ.1InZone,scores={PZKaefZ.1Zeit=1..}] PZKaefZ.1Zeit 1

# Damit erkannt werden kann ob der Spieler in der Zone ist, wird das Etikett jedesmal entfernt um es erneut geben zu können wenn er noch ditzt.
tag @a[tag=EtiKaefZ.1InZone] remove EtiKaefZ.1InZone

Variante 1: Stopp-Funktion
Die Stopp-Funktion löscht die Rüstungsständer aus dem Inventar und in der Welt.

Editor Icon.png kaefigzone:v1stopp.mcfunction
# Das Punkte-Ziel wird gelöscht.
scoreboard objectives remove PZKaefZ.1Zeit

# Alle Etiketten, die die Spieler eventuell noch besitzen werden entfernt.
tag @a[tag=EtiKaefZ.1InZone] remove EtiKaefZ.1InZone
tag @a[tag=EtiKaefZ.1Gefangen] remove EtiKaefZ.1Gefangen

# Alle Rüstungsständer mit entsprechender Eigenschaft, im Inventar werden entfernt.
clear @a minecraft:armor_stand{EigKaefZ.1Alle:true}

# Die Zonen sowie Rüstungsständer die auf den Boden geworfen wurden, werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigKaefZ.1Alle:true} } }] add EtiKaefZ.1Alle
kill @e[tag=EtiKaefZ.1Alle]

Variante 2[Bearbeiten | Quelltext bearbeiten]

Käfigzone (Befehle) Bild 2.1.png Käfigzone (Befehle) Bild 2.2.png

Mit dieser Käfigzone lassen sich Kugel- und Kubus-Zonen mit Hilfe von Rüstungsständern errichten. Hierbei kann man Freizonen platzieren, die mit den Käfigzonen überlappen können. In solchen Bereichen gilt kein Einflussbereich einer Käfigzone, sodass man dort problemlos laufen kann, ohne eingesperrt zu werden.

Einschalten
  • Befehl 2.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion kaefigzone:v2start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 2: Start-Funktion
Die Start-Funktion gibt den Spielern die vier Rüstungsständer für Käfig- und Freizonen.

Editor Icon.png kaefigzone:v2start.mcfunction
# Ein Punkte-Ziel für die Zeit der Gefangenschaft wird erstellt.
scoreboard objectives add PZKaefZ.2Zeit dummy ["Käfigzone.2: ",{"text":"Zeit der Gefangenschaft"}]

# Spielern im Umkreis von 15 Blöcken werden vier Rüstungsständer gegeben. Zwei Sperrzonen und zwei Freizonen können damit platziert werden.
give @a[distance=..15] minecraft:armor_stand{EigKaefZ.2Alle:true,display:{Name:'{"text":"Kugel-Käfigzone","color":"red","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Käfigzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kugel","color":"red","bold":true}',Tags:["EtiKaefZ.2Alle","EtiKaefZ.2Zone","EtiKaefZ.2Kugel"]} }
give @a[distance=..15] minecraft:armor_stand{EigKaefZ.2Alle:true,display:{Name:'{"text":"Kubus-Käfigzone","color":"red","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Käfigzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kubus","color":"red","bold":true}',Tags:["EtiKaefZ.2Alle","EtiKaefZ.2Zone","EtiKaefZ.2Kubus"],Rotation:[0.0f,0.0f]} }

give @a[distance=..15] minecraft:armor_stand{EigKaefZ.2Alle:true,display:{Name:'{"text":"Kugel-Zone","color":"green","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Käfigzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kugel","color":"green","bold":true}',Tags:["EtiKaefZ.2Alle","EtiKaefZ.2Freizone","EtiKaefZ.2Kugel"]} }
give @a[distance=..15] minecraft:armor_stand{EigKaefZ.2Alle:true,display:{Name:'{"text":"Kubus-Zone","color":"green","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Käfigzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,CustomNameVisible:true,CustomName:'{"text":"Kubus","color":"green","bold":true}',Tags:["EtiKaefZ.2Alle","EtiKaefZ.2Freizone","EtiKaefZ.2Kubus"],Rotation:[0.0f,0.0f]} }

Variante 2: Zyklus-Funktion
Die Zyklus-Funktion sorgt dafür, dass die Zonen angezeigt werden und dafür, dass die Spieler in der Zone bleiben müssen.

Editor Icon.png kaefigzone:v2zyklus.mcfunction
# Der Kugel-Rüstungsständer wird um fünf Grad gedreht und dabei werden in Blickrichtung Partikel erzeugt, die die Zone markieren.
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kugel] at @s run teleport @s ~ ~ ~ ~5 0
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kugel,tag=EtiKaefZ.2Zone] run particle minecraft:campfire_cosy_smoke ^ ^0.5 ^10 0 0 0 0 10 force @a[distance=..25]
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kugel,tag=EtiKaefZ.2Freizone] run particle minecraft:totem_of_undying ^ ^0.5 ^5 0 0 0 0.1 10 force @a[distance=..25]

# Kubus-Rüstungsständer werden um 90° gedreht und es wird immer überprüft in welche Richtung er gerade schaut und nur dann erscheinen in der richtigen Ausdehnung die Partikel, sodass eine gute Markierung entsteht.
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus] at @s run teleport @s ~ ~ ~ ~90 0
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,y_rotation=135..45] unless entity @s[y_rotation=-135..-45] run tag @s add EtiKaefZ.2Pole
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Zone,tag=EtiKaefZ.2Pole] run particle minecraft:campfire_cosy_smoke ^10.5 ^0.5 ^ 0 0 4 0 10 force @a[distance=..25]
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Freizone,tag=EtiKaefZ.2Pole] run particle minecraft:totem_of_undying ^ ^0.5 ^5.5 2 0 0 0.1 10 force @a[distance=..25]
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Zone,tag=EtiKaefZ.2Pole] run particle minecraft:campfire_cosy_smoke ^ ^0.5 ^10.5 4 0 0 0 10 force @a[distance=..25]
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Freizone,tag=EtiKaefZ.2Pole] run particle minecraft:totem_of_undying ^5.5 ^0.5 ^ 0 0 2 0.1 10 force @a[distance=..25]
tag @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Pole] remove EtiKaefZ.2Pole

# An der Position von Kugel- und Kubus-Rüstungsständern wird geprüft ob sich dort Spieler aufhalten und falls das der Fall ist, bekommen sie ein Etikett. Es wird allerdings nur vergeben, wenn die Spieler dabei nicht in einer Freizone sind.
execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kugel,tag=EtiKaefZ.2Zone] as @a[distance=..10,gamemode=!spectator] at @s unless entity @e[distance=..5,type=minecraft:armor_stand,tag=EtiKaefZ.2Kugel,tag=EtiKaefZ.2Freizone] positioned ~-5 ~-10 ~-5 unless entity @e[dx=10,dy=10,dz=10,type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Freizone] run tag @s add EtiKaefZ.2InZone

execute at @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Zone] positioned ~-10 ~ ~-10 as @a[dx=20,dy=10,dz=20,gamemode=!spectator,tag=!EtiKaefZ.2InZone] at @s unless entity @e[distance=..5,type=minecraft:armor_stand,tag=EtiKaefZ.2Kugel,tag=EtiKaefZ.2Freizone] positioned ~-5 ~-10 ~-5 unless entity @e[dx=10,dy=10,dz=10,type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Freizone] run tag @s add EtiKaefZ.2InZone

# Spieler die in die Käfigzone hinein gegangen sind, erhalten eine Nachricht und bekommen eine Zeit aufgedrückt, wie lange sie dort verweilen müssen.
tellraw @a[tag=EtiKaefZ.2InZone,tag=!EtiKaefZ.2Gefangen] ["Käfigzone.2:\n",{"text":"Du hast dich der Käfigzone zu stark genähert, dafür musst du nun eine Zeit lang hier bleiben!","color":"red","bold":true} ]
scoreboard players add @a[tag=EtiKaefZ.2InZone,tag=!EtiKaefZ.2Gefangen] PZKaefZ.2Zeit 200
tag @a[tag=EtiKaefZ.2InZone,tag=!EtiKaefZ.2Gefangen] add EtiKaefZ.2Gefangen

# Damit die Gefangenen wissen wie lange sie fest sitzen, erhalten sie über der Schnellleiste eine Zeitangabe.
execute as @a[tag=EtiKaefZ.2Gefangen,scores={PZKaefZ.2Zeit=0..}] run title @s actionbar ["",{"text":"Frei in ","color":"red","bold":true},{"score":{"name":"@s","objective":"PZKaefZ.2Zeit"},"color":"dark_purple","bold":true},{"text":" Ticks","color":"red","bold":true}]

# Wenn Gefangene in Freizonen flüchten wollen, erhalten sie ein Etikett, damit man sie von dem normalen Fliehen unterscheiden kann.
execute as @a[gamemode=!spectator,tag=EtiKaefZ.2Gefangen,tag=!EtiKaefZ.2InZone,scores={PZKaefZ.2Zeit=1..}] at @s if entity @e[distance=..5,type=minecraft:armor_stand,tag=EtiKaefZ.2Kugel,tag=EtiKaefZ.2Freizone] run tag @s add EtiKaefZ.2InFreizone

execute as @a[gamemode=!spectator,tag=EtiKaefZ.2Gefangen,tag=!EtiKaefZ.2InZone,scores={PZKaefZ.2Zeit=1..}] at @s positioned ~-5 ~-10 ~-5 if entity @e[dx=10,dy=10,dz=10,type=minecraft:armor_stand,tag=EtiKaefZ.2Kubus,tag=EtiKaefZ.2Freizone] run tag @s add EtiKaefZ.2InFreizone

# Gefangene Spieler die flüchten, werden in Richtung des Zonen-Zentrums teleportiert.
execute as @a[gamemode=!spectator,tag=EtiKaefZ.2Gefangen,tag=!EtiKaefZ.2InZone,tag=!EtiKaefZ.2InFreizone,scores={PZKaefZ.2Zeit=1..}] at @s facing entity @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Zone,sort=nearest,limit=1] eyes run teleport @s ^ ^ ^0.4

# Gefangene die in Richtung Freizone flüchten, werden aus der Freizone befördert.
execute as @a[gamemode=!spectator,tag=EtiKaefZ.2Gefangen,tag=!EtiKaefZ.2InZone,tag=EtiKaefZ.2InFreizone,scores={PZKaefZ.2Zeit=1..}] at @s facing entity @e[type=minecraft:armor_stand,tag=EtiKaefZ.2Freizone,sort=nearest,limit=1] eyes run teleport @s ^ ^ ^-0.4

# Das Etikett wird wieder entfernt, damit es nur vorhanden ist, wenn man noch in der Freizone steckt.
tag @a[tag=EtiKaefZ.2InFreizone] remove EtiKaefZ.2InFreizone

# Wenn die Zeit abgelaufen ist, kann man über die Zonengrenze laufen und erhält eine Nachricht. Das Etikett für die Gefangenschaft wird dabei ebenfalls entfernt.
tellraw @a[tag=EtiKaefZ.2Gefangen,tag=!EtiKaefZ.2InZone,scores={PZKaefZ.2Zeit=..0}] ["Käfigzone.2:\n",{"text":"Du bist nun frei, kehre nicht zur Zone zurück!","color":"green","bold":true} ]
tag @a[tag=EtiKaefZ.2Gefangen,tag=!EtiKaefZ.2InZone,scores={PZKaefZ.2Zeit=..0}] remove EtiKaefZ.2Gefangen

# Wenn man sich innerhalb der Käfigzone aufhält, wird einem die Zeit runtergezählt.
scoreboard players remove @a[tag=EtiKaefZ.2Gefangen,tag=EtiKaefZ.2InZone,scores={PZKaefZ.2Zeit=0..}] PZKaefZ.2Zeit 1

# Das Etikett wird wieder entfernt.
tag @a[tag=EtiKaefZ.2InZone] remove EtiKaefZ.2InZone

Variante 2: Stopp-Funktion
Die Stopp-Funktion löscht die Rüstungsständer aus dem Inventar und in der Welt.

Editor Icon.png kaefigzone:v2stopp.mcfunction
# Das Punkte-Ziel wird wieder entfernt.
scoreboard objectives remove PZKaefZ.2Zeit

# Die eventuell noch vorhandenen Etiketten werden entfernt.
tag @a[tag=EtiKaefZ.2InZone] remove EtiKaefZ.2InZone
tag @a[tag=EtiKaefZ.2Gefangen] remove EtiKaefZ.2Gefangen

# Die Rüstungsständer im Inventar werden entfernt.
clear @a minecraft:armor_stand{EigKaefZ.2Alle:true}

# Die Zonen und die auf den Boden geworfenen Rüstungsständer werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigKaefZ.2Alle:true} } }] add EtiKaefZ.2Alle
kill @e[tag=EtiKaefZ.2Alle]

Variante 3[Bearbeiten | Quelltext bearbeiten]

Käfigzone (Befehle) Bild 3.1.png Käfigzone (Befehle) Bild 3.2.png

Diese Käfigzone ermöglicht es, mit Rüstungsständern Kugel-Zonen zu platzieren. Wählt man den Rüstungsständer aus, erhält man im Chat die Möglichkeit die Größe der Zone festzulegen. Hierbei lässt sich auch die Zeit der Gefangenschaft einstellen. Die platzierte Zone erhält die Größe die zu dieser Zeit eingestellt wurde.

Einschalten
  • Befehl 3.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion kaefigzone:v3start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 3: Start-Funktion
Die Start-Funktion erstellt die Punkte-Ziele und gibt den Spielern den Rüstungsständer für die Käfigzone.

Editor Icon.png kaefigzone:v3start.mcfunction
# Drei Punkte-Ziele werden erstellt.
scoreboard objectives add PZKaefZ.3Ausl trigger ["Käfigzone.3: ",{"text":"Auslöser für Nachrichten","bold":true}]
scoreboard objectives add PZKaefZ.3Groes dummy ["Käfigzone.3: ",{"text":"Zonen-Größe","bold":true}]
scoreboard objectives add PZKaefZ.3Zeit dummy ["Käfigzone.3: ",{"text":"Zeit der Gefangenschaft"}]

# Allen Spielern wird im Umkreis von 15 Blöcken der Wert für die Größe auf fünf gesetzt und die Variable für die Gefangeschaft definiert.
scoreboard players set @a[distance=..15] PZKaefZ.3Groes 5
scoreboard players set VarKaefZ.3Gefangen PZKaefZ.3Zeit 200

# Spielern im Umkreis von 15 Blöcken wird ein Rüstungsständer ins Inventar gelegt, mit dem man Kugel-Zonen platzieren kann.
give @a[distance=..15] minecraft:armor_stand{EigKaefZ.3Alle:true,display:{Name:'{"text":"Kugel-Zone","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Käfigzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Kugel-Zone","color":"gold","bold":true}',Tags:["EtiKaefZ.3Alle","EtiKaefZ.3Zone","EtiKaefZ.3Kugel","EtiKaefZ.3Erstellen"] } }

Variante 3: Zyklus-Funktion
Die Zyklus-Funktion prüft ob der Spieler den Rüstungsständer ausgewählt hat und ruft dann die Auslöser-Funktion auf, ebenfalls wird die Positions-Zonen-Funktion von platzierten Rüstungsständern geladen.

Editor Icon.png kaefigzone:v3zyklus.mcfunction
# Wenn der Spieler den Rüstungsständer ausgewählt hat, erhält er ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigKaefZ.3Alle:true} } }] add EtiKaefZ.3Zone

# Wenn der Spieler gerade den Rüstungsständer ausgewählt hat, wird sein Auslöser-Wert gesetzt, damit er die Funktion lädt.
scoreboard players set @a[tag=EtiKaefZ.3Zone,tag=!EtiKaefZ.3Auswahl] PZKaefZ.3Ausl -99

# Wenn der Spieler gerade erst die Auswahl getroffen hat, erhält er ein Etikett. Es wird entfernt sobald er den Rüstungsständer nicht mehr ausgewählt hat.
tag @a[tag=EtiKaefZ.3Zone,tag=!EtiKaefZ.3Auswahl] add EtiKaefZ.3Auswahl
tag @a[tag=!EtiKaefZ.3Zone,tag=EtiKaefZ.3Auswahl] remove EtiKaefZ.3Auswahl

# Wenn der Spieler den Rüstungsständer ausgewählt hat und einen Auslöser-Wert besitzt, der nicht null ist, so wird die Auslöser-Funktion geladen.
execute as @a[tag=EtiKaefZ.3Zone] unless entity @s[scores={PZKaefZ.3Ausl=0}] run function kaefigzone:v3ausloeser

# Das Etikett wird entfernt.
tag @a[tag=EtiKaefZ.3Zone] remove EtiKaefZ.3Zone

# Jeder Zonen-Rüstungsständer lädt die Positions-Zonen-Funktion.
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.3Zone] at @s run function kaefigzone:v3position_zone

# Spieler die gefangen sind, wird über der Schnellleiste angezeigt, wie lange sie noch dort verweilen müssen.
execute as @a[tag=EtiKaefZ.3Gefangen,scores={PZKaefZ.3Zeit=0..}] run title @s actionbar ["",{"text":"Frei in ","color":"red","bold":true},{"score":{"name":"@s","objective":"PZKaefZ.3Zeit"},"color":"dark_purple","bold":true},{"text":" Ticks","color":"red","bold":true}]

# Spieler die flüchten wollen, werden in Richtung des Zonen-Zentrums teleportiert.
execute as @a[tag=EtiKaefZ.3Gefangen,tag=!EtiKaefZ.3InZone,scores={PZKaefZ.3Zeit=1..}] positioned as @s facing entity @e[type=minecraft:armor_stand,tag=EtiKaefZ.3Zone,sort=nearest,limit=1] eyes run teleport @s ^ ^ ^0.4

# Spieler die ihre Zeit abgesessen haben, erhalten, sobald sie die Zone verlassen eine Nachricht und das Etikett für die gefangenschaft wird entfernt.
tellraw @a[tag=EtiKaefZ.3Gefangen,tag=!EtiKaefZ.3InZone,scores={PZKaefZ.3Zeit=..0}] ["Käfigzone.3:\n",{"text":"Du bist nun frei, kehre nicht zur Zone zurück!","color":"green","bold":true} ]
tag @a[tag=EtiKaefZ.3Gefangen,tag=!EtiKaefZ.3InZone,scores={PZKaefZ.3Zeit=..0}] remove EtiKaefZ.3Gefangen

# Spieler die sich innerhalb der Zone aufhalten, bekommen den Wert um eins reduziert.
scoreboard players remove @a[tag=EtiKaefZ.3Gefangen,tag=EtiKaefZ.3InZone,scores={PZKaefZ.3Zeit=1..}] PZKaefZ.3Zeit 1

# Spielern wird das Etikett entfernt, sodass es nur solange vorhanden ist, wie sie auch innerhalb der Zone sind.
tag @a[tag=EtiKaefZ.3InZone] remove EtiKaefZ.3InZone

Variante 3: Auslöser-Funktion
Die Auslöser-Funktion zeigt im Chat die Optionen an, wie groß oder klein die Käfigzone sein soll. Man kann dabei auf die Schaltfläche klicken um die Größe zu variieren. Ebenfalls lässt sich die Zeit der Gefangenschaft einstellen.

Editor Icon.png kaefigzone:v3ausloeser.mcfunction
# Wenn der Spieler auf eine der beiden Optionen im Chat geklickt hat, wird sein Wert um eins erhöht oder erniedrigt.
scoreboard players add @s[scores={PZKaefZ.3Ausl=1,PZKaefZ.3Groes=..63}] PZKaefZ.3Groes 1
scoreboard players remove @s[scores={PZKaefZ.3Ausl=-1,PZKaefZ.3Groes=6..}] PZKaefZ.3Groes 1

# Wenn der Spieler auf die Gefangenen-Zeit geklickt hat, wird die Zeit der Gefangenschaft entsprechend hoch oder runter gesetzt.
execute if entity @s[scores={PZKaefZ.3Ausl=2}] run scoreboard players add VarKaefZ.3Gefangen PZKaefZ.3Zeit 50
execute if entity @s[scores={PZKaefZ.3Ausl=-2}] if score VarKaefZ.3Gefangen PZKaefZ.3Zeit matches 150.. run scoreboard players remove VarKaefZ.3Gefangen PZKaefZ.3Zeit 50

# Der Spieler erhält im Chat die Möglichkeit, den Radius der Zone einzustellen, sowie die Zeit der Gefangenschaft.
tellraw @s ["Käfigzone.3: ",{"text":"\nradius = ","bold":true},{"text":"radius + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Radius + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.3Ausl set 1"} },{"text":"\nradius = ","bold":true},{"text":"radius - 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Radius - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.3Ausl set -1"} },{"text":"\nradius == ","bold":true},{"score":{"name":"@s","objective":"PZKaefZ.3Groes"},"color":"dark_purple","bold":true},{"text":"\ngefangen = ","bold":true},{"text":"gefangen + 50","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Gefangen + 50"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.3Ausl set 2"} },{"text":"\ngefangen = ","bold":true},{"text":"gefangen - 50","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Gefangen - 50"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.3Ausl set -2"} },{"text":"\ngefangen == ","bold":true},{"score":{"name":"VarKaefZ.3Gefangen","objective":"PZKaefZ.3Zeit"},"color":"dark_purple","bold":true}]

# Der Spieler erhält die Berechtigung den Auslöser wieder zu betätigen und sein Wert wird wieder auf null gesetzt.
scoreboard players enable @s PZKaefZ.3Ausl
scoreboard players set @s PZKaefZ.3Ausl 0

Variante 3: Positions-Zonen-Funktion
Die Positions-Zonen-Funktion gibt der Zone den Wert der Größe und ließt die Koordinaten des Zonen-Zentrums aus. Zusätzlich wird für jeden Spieler die Positions-Spieler-Funktion geladen. Die Zonen-Funktion wird für die Visualisierung der Zone geladen.

Editor Icon.png kaefigzone:v3position_zone.mcfunction
# Wenn der Rüstungsständer noch keinen Wert besitzt, erhält er den, der zuletzt vom Spieler eingestellt wurde. Ebenfalls wird im gleichen Augenblick der Wert für die Größe quadriert, um diesen für das Berechnen der Raum-Diagonale zu verwenden zu können.
execute unless score @s PZKaefZ.3Ausl matches 0.. store result score @s PZKaefZ.3Groes run scoreboard players operation @s PZKaefZ.3Ausl = @p[scores={PZKaefZ.3Groes=5..}] PZKaefZ.3Groes
execute if score @s PZKaefZ.3Groes = @s PZKaefZ.3Ausl run scoreboard players operation @s PZKaefZ.3Groes *= @s PZKaefZ.3Groes

# Die Koordinaten werden ausgelesen und werden in Variablen gespeichert.
execute store result score VarKaefZ.3X PZKaefZ.3Groes run data get entity @s Pos[0]
execute store result score VarKaefZ.3Y PZKaefZ.3Groes run data get entity @s Pos[1]
execute store result score VarKaefZ.3Z PZKaefZ.3Groes run data get entity @s Pos[2]

# Alle Spieler im Umkreis von 100 Metern, laden von ihrer Position die Positions-Spieler-Funktion.
execute at @a[distance=..100,tag=!EtiKaefZ.3InZone] run function kaefigzone:v3position_spieler

# Um die Zone sichtbar zu machen wird die Zonen-Funktion geladen.
scoreboard players set VarKaefZ.3Zahl PZKaefZ.3Groes 0
function kaefigzone:v3zone

Variante 3: Positions-Spieler-Funktion
Die Positions-Spieler-Funktion speichert die Koordinaten des Spielers ab und vergleicht mit Hilfe der Raum-Diagonale den Abstand zwischen Spieler und dem Zonen-Zentrum. Wenn die Summe der Spieler-Quadrate kleiner ist, als das Quadrat des Radius, so befindet sich der Spieler innerhalb der Kugel. Dann wird er mit einer Warnmeldung und muss eine Weile dort bleiben.

Editor Icon.png kaefigzone:v3position_spieler.mcfunction
# Die Koordinaten des Spielers werden ausgelesen und in Variablen gespeichert.
execute store result score VarKaefZ.3SpielerX PZKaefZ.3Groes run data get entity @p Pos[0]
execute store result score VarKaefZ.3SpielerY PZKaefZ.3Groes run data get entity @p Pos[1]
execute store result score VarKaefZ.3SpielerZ PZKaefZ.3Groes run data get entity @p Pos[2]

# Um die drei Katheten zu erhalten, wird von der Spieler-Koordinate die Zonen-Koordinate abgezogen und gespeichert.
scoreboard players operation VarKaefZ.3SpielerX PZKaefZ.3Groes -= VarKaefZ.3X PZKaefZ.3Groes
scoreboard players operation VarKaefZ.3SpielerY PZKaefZ.3Groes -= VarKaefZ.3Y PZKaefZ.3Groes
scoreboard players operation VarKaefZ.3SpielerZ PZKaefZ.3Groes -= VarKaefZ.3Z PZKaefZ.3Groes

# Nach Pythagoras (a^2 + b^2 = c^2) werden die Katheten quadriert.
scoreboard players operation VarKaefZ.3SpielerX PZKaefZ.3Groes *= VarKaefZ.3SpielerX PZKaefZ.3Groes
scoreboard players operation VarKaefZ.3SpielerY PZKaefZ.3Groes *= VarKaefZ.3SpielerY PZKaefZ.3Groes
scoreboard players operation VarKaefZ.3SpielerZ PZKaefZ.3Groes *= VarKaefZ.3SpielerZ PZKaefZ.3Groes

# Nach der Quadrierung werden alle Quadrate aufsummiert und in den Punktestand des Spielers gespeichert.
scoreboard players operation @p PZKaefZ.3Ausl = VarKaefZ.3SpielerX PZKaefZ.3Groes
scoreboard players operation @p PZKaefZ.3Ausl += VarKaefZ.3SpielerY PZKaefZ.3Groes
scoreboard players operation @p PZKaefZ.3Ausl += VarKaefZ.3SpielerZ PZKaefZ.3Groes

# Bei der Distanz müsste die Wurzel gezogen werden, stattdessen wurde der Wert für die Distanz der Zone quadriert und nun verglichen. Wenn die Distanz kleiner ist, wird der Spieler in der Zone sein und erhält ein Etikett.
execute if score @p PZKaefZ.3Ausl <= @s PZKaefZ.3Groes run tag @p add EtiKaefZ.3InZone
scoreboard players set @p PZKaefZ.3Ausl 0

# Spieler die sich in der Zone befinden, erhalten eine Nachricht und die Zeit für die Gefangenschaft. Ebenfalls erhalten sie ein Etikett zur Markierung.
tellraw @p[distance=..0.1,tag=EtiKaefZ.3InZone,tag=!EtiKaefZ.3Gefangen] ["Käfigzone.3:\n",{"text":"Du hast dich der Käfigzone zu stark genähert, dafür musst du ","color":"red","bold":true},{"score":{"name":"VarKaefZ.3Gefangen","objective":"PZKaefZ.3Zeit"},"color":"dark_purple","bold":true},{"text":" Ticks lang hier bleiben!","color":"red","bold":true}]
scoreboard players operation @p[distance=..0.1,tag=EtiKaefZ.3InZone,tag=!EtiKaefZ.3Gefangen] PZKaefZ.3Zeit += VarKaefZ.3Gefangen PZKaefZ.3Zeit
tag @p[distance=..0.1,tag=EtiKaefZ.3InZone,tag=!EtiKaefZ.3Gefangen] add EtiKaefZ.3Gefangen

Variante 3: Zonen-Funktion
Die Zonen-Funktion ruft jeweils um 180° versetzt die Zonen-Partikel-Funktion auf um an beiden Seiten die Partikel entstehen zu lassen. Damit der Kreis als solches sichtbar wird, wird der Rüstungsständer um drei Grad gedreht.

Editor Icon.png kaefigzone:v3zone.mcfunction
# Die Variable für die Meter wie weit die Partikel-Funktion gehen soll, wird auf null gesetzt und im Anschluss wird die Funktion geladen.
scoreboard players set VarKaefZ.3Meter PZKaefZ.3Ausl 0
execute positioned ^ ^ ^1 run function kaefigzone:v3zone_partikel

scoreboard players set VarKaefZ.3Meter PZKaefZ.3Ausl 0
execute rotated ~180 0 positioned ^ ^ ^1 run function kaefigzone:v3zone_partikel

# Der Rüstungsständer wird um drei Grad im Uhrzeigersinn rotiert.
teleport @s ~ ~ ~ ~3 0

Variante 3: Zonen-Partikel-Funktion
Die Zonen-Partikel-Funktion ruft sich selbst solange erneut auf, bis sie den eingestellten Radius der Zone erreicht hat. Dort angekommen werden dann die Partikel erzeugt.

Editor Icon.png kaefigzone:v3zone_partikel.mcfunction
# Die Variable wird hochgezählt und anschließend wird geprüft ob sie gleich dem Wert der Reichweite entspricht, sodass Partikel entstehen, ansonsten wird die Partikel-Funktion in Blickrichtung um einen Meter nach vorne erneut aufgerufen.
scoreboard players add VarKaefZ.3Meter PZKaefZ.3Ausl 1
execute if score VarKaefZ.3Meter PZKaefZ.3Ausl = @s PZKaefZ.3Ausl run particle minecraft:campfire_cosy_smoke ~ ~ ~ 0 0 0 0 1 force @a[distance=..50]
execute if score VarKaefZ.3Meter PZKaefZ.3Ausl <= @s PZKaefZ.3Ausl positioned ^ ^ ^1 run function kaefigzone:v3zone_partikel


Variante 3: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele wieder und löscht die Rüstungsständer aus dem Inventar und als Drop in der Welt, ebenfalls werden die Zonen-Rüstungsständer gelöscht.

Editor Icon.png kaefigzone:v3stopp.mcfunction
# Die Punkte-Ziele werden entfernt.
scoreboard objectives remove PZKaefZ.3Ausl
scoreboard objectives remove PZKaefZ.3Groes
scoreboard objectives remove PZKaefZ.3Zeit

# Die Rüstungsständer werden aus dem Inventar entfernt.
clear @a minecraft:armor_stand{EigKaefZ.3Alle:true}

# Die eventuell vorhandenen Etiketten werden entfernt.
tag @a[tag=EtiKaefZ.3Nachricht] remove EtiKaefZ.3Nachricht
tag @a[tag=EtiKaefZ.3Auswahl] remove EtiKaefZ.3Auswahl
tag @a[tag=EtiKaefZ.3Gefangen] remove EtiKaefZ.3Gefangen

# Die Rüstungsständer die platziert wurden oder auf den Boden geworfen wurden, werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigKaefZ.3Alle:true} } }] add EtiKaefZ.3Alle
kill @e[tag=EtiKaefZ.3Alle]

Variante 4[Bearbeiten | Quelltext bearbeiten]

Käfigzone (Befehle) Bild 4.1.png Käfigzone (Befehle) Bild 4.2.png

Diese Käfigzone ermöglicht das Platzieren von Kubus-Zonen mit Hilfe von Rüstungsständern. Wählt man den Rüstungsständer in der Schnellleiste aus, so wird einem im Chat die Möglichkeit angezeigt, die Größe und die Verweildauer einzustellen. Platziert man einen Rüstungsständer, so erhält er die Größe, die aktuell eingestellt ist.

Einschalten
  • Befehl 4.1 Auf dem Wiederhol-Befehlsblock befindet sich ein Hebel. Legt man ihn um, wird zuerst der Befehlsblock mit der Start-Funktion kaefigzone:v4start aktiviert.
Wiederholen
Ausschalten

Befehlsblöcke mit Befehlen:



Variante 4: Start-Funktion
Die Start-Funktion erstellt Punkte-Ziele, Variablen und gibt den Spielern den Rüstungsständer.

Editor Icon.png kaefigzone:v4start.mcfunction
# Drei Punkte-Ziele werden erstellt.
scoreboard objectives add PZKaefZ.4Ausl trigger ["Sperrzone.4: ",{"text":"Auslöser für Nachrichten","bold":true}]
scoreboard objectives add PZKaefZ.4Groes dummy ["Sperrzone.4: ",{"text":"Zonen-Größe","bold":true}]
scoreboard objectives add PZKaefZ.4Zeit dummy ["Käfigzone.4: ",{"text":"Gefangenschaft","bold":true}]

# Eine Konstante mit dem Wert minus eins wird erstellt und alle Spieler im Umkreis von 15 Blöcken erhalten den Wert fünf für die Größe.
scoreboard players set KonstKaefZ.4MINUSEINS PZKaefZ.4Ausl -1
scoreboard players set @a[distance=..15] PZKaefZ.4Groes 5
scoreboard players set VarKaefZ.4Gefangen PZKaefZ.4Zeit 200

# Spieler im Umkreis von 15 Blöcken erhalten einen Rüstungsständer, zum Platzieren der Zonen.
give @a[distance=..15] minecraft:armor_stand{EigKaefZ.4Alle:true,display:{Name:'{"text":"Kubus-Zone","color":"gold","bold":true}',Lore:['"Platziere den Rüstungsständer"','"um die Sperrzone zu erzeugen"']},EntityTag:{Small:true,Marker:true,Invisible:true,NoGravity:true,CustomNameVisible:true,CustomName:'{"text":"Kubus-Zone","color":"gold","bold":true}',Tags:["EtiKaefZ.4Alle","EtiKaefZ.4Zone","EtiKaefZ.4Kubus","EtiKaefZ.4Erstellen"] } }

Variante 4: Zyklus-Funktion
Die Zyklus-Funktion prüft, ob der Spieler den Rüstungsständer ausgewählt hat und ruft dann die Auslöser-Funktion auf. Ebenfalls wird durch die Zonen-Rüstungsständer die Positions-Zonen-Funktion aufgerufen.

Editor Icon.png kaefigzone:v4zyklus.mcfunction
# Wenn der Spieler den Rüstungsständer ausgewählt hat, erhält er ein Etikett.
tag @a[nbt={SelectedItem:{tag:{EigKaefZ.4Alle:true} } }] add EtiKaefZ.4Zone

# Wenn der Spieler gerade den Rüstungsständer ausgewählt hat, wird sein Auslöser-Wert gesetzt, damit er die Funktion lädt.
scoreboard players set @a[tag=EtiKaefZ.4Zone,tag=!EtiKaefZ.4Auswahl] PZKaefZ.4Ausl -99

# Wenn der Spieler gerade erst die Auswahl getroffen hat, erhält er ein Etikett. Es wird entfernt sobald er den Rüstungsständer nicht mehr ausgewählt hat.
tag @a[tag=EtiKaefZ.4Zone,tag=!EtiKaefZ.4Auswahl] add EtiKaefZ.4Auswahl
tag @a[tag=!EtiKaefZ.4Zone,tag=EtiKaefZ.4Auswahl] remove EtiKaefZ.4Auswahl

# Wenn der Spieler den Rüstungsständer ausgewählt hat und einen Auslöser-Wert besitzt, der nicht null ist, so wird die Auslöser-Funktion geladen.
execute as @a[tag=EtiKaefZ.4Zone] unless entity @s[scores={PZKaefZ.4Ausl=0}] run function kaefigzone:v4ausloeser

# Das Etikett wird entfernt.
tag @a[tag=EtiKaefZ.4Zone] remove EtiKaefZ.4Zone

# Jeder Zonen-Rüstungsständer lädt die Positions-Zonen-Funktion.
execute as @e[type=minecraft:armor_stand,tag=EtiKaefZ.4Zone] at @s run function kaefigzone:v4position_zone

# Gefangene erhalten über der Schnelleiste die Zeit eingeblendet wie lange sie noch sitzen müssen.
execute as @a[tag=EtiKaefZ.4Gefangen,scores={PZKaefZ.4Zeit=0..}] run title @s actionbar ["",{"text":"Frei in ","color":"red","bold":true},{"score":{"name":"@s","objective":"PZKaefZ.4Zeit"},"color":"dark_purple","bold":true},{"text":" Ticks","color":"red","bold":true}]

# Versucht ein Gefangener zu flüchten, so wird dieser in Richtung des Zonen-Zentrums teleportiert.
execute as @a[tag=EtiKaefZ.4Gefangen,tag=!EtiKaefZ.4InZone,scores={PZKaefZ.4Zeit=1..}] positioned as @s facing entity @e[type=minecraft:armor_stand,tag=EtiKaefZ.4Zone,sort=nearest,limit=1] eyes run teleport @s ^ ^ ^0.4

# Spieler die ihre Zeitabgesessen haben, erhalten nach dem verlassen der Zone eine Nachricht und das Etikett der Gefangenschaft wird entfernt.
tellraw @a[tag=EtiKaefZ.4Gefangen,tag=!EtiKaefZ.4InZone,scores={PZKaefZ.4Zeit=..0}] ["Käfigzone.4:\n",{"text":"Du bist nun frei, kehre nicht zur Zone zurück!","color":"green","bold":true} ]
tag @a[tag=EtiKaefZ.4Gefangen,tag=!EtiKaefZ.4InZone,scores={PZKaefZ.4Zeit=..0}] remove EtiKaefZ.4Gefangen

# Solange Gefangene innerhalb der Zone sind, wird ihre Zeit runtergezählt.
scoreboard players remove @a[tag=EtiKaefZ.4Gefangen,tag=EtiKaefZ.4InZone,scores={PZKaefZ.4Zeit=1..}] PZKaefZ.4Zeit 1

# Das Etikett wird entfernt, sodass nur die Spieler es pro Tick besitzen, die noch in der Zone sind.
tag @a[tag=EtiKaefZ.4InZone] remove EtiKaefZ.4InZone


Variante 4: Auslöser-Funktion
Die Auslöser-Funktion gibt dem Spieler im Chat die Möglichkeit die Größe der Zone einzustellen und welche Verweildauer ein Gefangener hat.

Editor Icon.png kaefigzone:v4ausloeser.mcfunction
# Wenn der Spieler auf eine der beiden Optionen im Chat geklickt hat, wird sein Wert um eins erhöht oder erniedrigt.
scoreboard players add @s[scores={PZKaefZ.4Ausl=1,PZKaefZ.4Groes=..63}] PZKaefZ.4Groes 1
scoreboard players remove @s[scores={PZKaefZ.4Ausl=-1,PZKaefZ.4Groes=6..}] PZKaefZ.4Groes 1

# Der Spieler hat die Möglichkeit die Zeit der Gefangeschaft zu erhöhen oder zu erniedrigen.
execute if entity @s[scores={PZKaefZ.4Ausl=2}] run scoreboard players add VarKaefZ.4Gefangen PZKaefZ.4Zeit 50
execute if entity @s[scores={PZKaefZ.4Ausl=-2}] if score VarKaefZ.4Gefangen PZKaefZ.4Zeit matches 150.. run scoreboard players remove VarKaefZ.4Gefangen PZKaefZ.4Zeit 50

# Der Spieler erhält im Chat die Möglichkeit, die Größe der Zone einzustellen, sowie die Zeit der Gefangenschaft.
tellraw @s ["Käfigzone.4: ",{"text":"\nkubus = ","bold":true},{"text":"kubus + 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Kubus + 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.4Ausl set 1"} },{"text":"\nkubus = ","bold":true},{"text":"kubus - 1","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Kubus - 1"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.4Ausl set -1"} },{"text":"\nkubus == ","bold":true},{"score":{"name":"@s","objective":"PZKaefZ.4Groes"},"color":"dark_purple","bold":true},{"text":"\ngefangen = ","bold":true},{"text":"gefangen + 50","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Gefangen + 50"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.4Ausl set 2"} },{"text":"\ngefangen = ","bold":true},{"text":"gefangen - 50","color":"gray","underlined":true,"bold":true,"hoverEvent":{"action":"show_text","value":{"text":"Tippe für den Gefangen - 50"} },"clickEvent":{"action":"run_command","value":"/trigger PZKaefZ.4Ausl set -2"} },{"text":"\ngefangen == ","bold":true},{"score":{"name":"VarKaefZ.4Gefangen","objective":"PZKaefZ.4Zeit"},"color":"dark_purple","bold":true}]

# Der Spieler erhält die Berechtigung den Auslöser zu betätigen und sein Wert wird wieder auf null gesetzt.
scoreboard players enable @s PZKaefZ.4Ausl
scoreboard players set @s PZKaefZ.4Ausl 0

Variante 4: Positions-Zonen-Funktion
Die Positions-Zonen-Funktion überträgt den Wert der Größe vom Spieler auf die gerade platzierte Zone und speichert die Koordinaten der Zone, um durch das Aufrufen der Positions-Spieler-Funktion, zu testen ob die Spieler innerhalb der Zone sind.

Editor Icon.png kaefigzone:v4position_zone.mcfunction
# Wenn der Rüstungsständer noch keinen Wert besitzt, erhält er den, der zuletzt vom Spieler eingestellt wurde.
execute unless score @s PZKaefZ.4Ausl matches 0.. store result score @s PZKaefZ.4Groes run scoreboard players operation @s PZKaefZ.4Ausl = @p[scores={PZKaefZ.4Groes=5..}] PZKaefZ.4Groes

# Die Koordinaten der Zone werden ausgelsen und in jeweils zwei Variablen gespeichert.
execute store result score VarKaefZ.4XUrsprung PZKaefZ.4Groes store result score VarKaefZ.4XDelta PZKaefZ.4Groes run data get entity @s Pos[0]
execute store result score VarKaefZ.4YUrsprung PZKaefZ.4Groes store result score VarKaefZ.4YDelta PZKaefZ.4Groes run data get entity @s Pos[1]
execute store result score VarKaefZ.4ZUrsprung PZKaefZ.4Groes store result score VarKaefZ.4ZDelta PZKaefZ.4Groes run data get entity @s Pos[2]

# Um die komplette Zone abzudecken, werden Variablen für den Ursprung um die Größe der Zone reduziert.
scoreboard players operation VarKaefZ.4XUrsprung PZKaefZ.4Groes -= @s PZKaefZ.4Groes
scoreboard players operation VarKaefZ.4YUrsprung PZKaefZ.4Groes -= @s PZKaefZ.4Groes
scoreboard players operation VarKaefZ.4ZUrsprung PZKaefZ.4Groes -= @s PZKaefZ.4Groes

# Ebenfalls werden die Variablen für das Delta der Zone um die Größe addiert.
scoreboard players operation VarKaefZ.4XDelta PZKaefZ.4Groes += @s PZKaefZ.4Groes
scoreboard players operation VarKaefZ.4YDelta PZKaefZ.4Groes += @s PZKaefZ.4Groes
scoreboard players operation VarKaefZ.4ZDelta PZKaefZ.4Groes += @s PZKaefZ.4Groes

# Von allen Spielern im Umkreis von 100 Blöcken wird die Positions-Spieler-Funktion an deren Position geladen.
execute at @a[distance=..100] run function kaefigzone:v4position_spieler

# Um die Zone auch visuell anzuzeigen, wird die Zonen-Funktion geladen.
scoreboard players set VarKaefZ.4Zahl PZKaefZ.4Groes 0
function kaefigzone:v4zone

Variante 4: Positions-Spieler-Funktion
Die Positions-Spieler-Funktion speichert die Koordinaten des jeweiligen Spieler in Variablen und vergleicht diese mit der Quader-Zone. Wenn sich der Spieler innerhalb der Zone aufhält wird er mit einer Warnmeldung eingedeckt und muss eine Zeit lang dort bleiben.

Editor Icon.png kaefigzone:v4position_spieler.mcfunction
# Die Koordinaten des Spielers werden ausgelesen und jeweils in eine Variable gespeichert.
execute store result score VarKaefZ.4SpielerX PZKaefZ.4Groes run data get entity @p Pos[0]
execute store result score VarKaefZ.4SpielerY PZKaefZ.4Groes run data get entity @p Pos[1]
execute store result score VarKaefZ.4SpielerZ PZKaefZ.4Groes run data get entity @p Pos[2]

# Wenn die Spieler-Koordinate größer als der Ursprung und kleiner als das Delta sind, wird dem Spieler der Wert um eins erhöht.
execute if score VarKaefZ.4SpielerX PZKaefZ.4Groes >= VarKaefZ.4XUrsprung PZKaefZ.4Groes if score VarKaefZ.4SpielerX PZKaefZ.4Groes <= VarKaefZ.4XDelta PZKaefZ.4Groes run scoreboard players add @p PZKaefZ.4Ausl 1
execute if score VarKaefZ.4SpielerY PZKaefZ.4Groes >= VarKaefZ.4YUrsprung PZKaefZ.4Groes if score VarKaefZ.4SpielerY PZKaefZ.4Groes <= VarKaefZ.4YDelta PZKaefZ.4Groes run scoreboard players add @p PZKaefZ.4Ausl 1
execute if score VarKaefZ.4SpielerZ PZKaefZ.4Groes >= VarKaefZ.4ZUrsprung PZKaefZ.4Groes if score VarKaefZ.4SpielerZ PZKaefZ.4Groes <= VarKaefZ.4ZDelta PZKaefZ.4Groes run scoreboard players add @p PZKaefZ.4Ausl 1

# Nur wenn der Spieler den Wert drei besitzt, befindet er sich in der Zone und erhält ein Etikett dafür.
tag @p[distance=..0.1,scores={PZKaefZ.4Ausl=3}] add EtiKaefZ.4InZone
scoreboard players set @p PZKaefZ.4Ausl 0

# Spieler die sich in der Zone befinden, erhalten eine Nachricht und die Zeit für die Gefangenschaft. Ebenfalls erhalten sie ein Etikett zur Markierung.
tellraw @p[distance=..0.1,tag=EtiKaefZ.4InZone,tag=!EtiKaefZ.4Gefangen] ["Käfigzone.4:\n",{"text":"Du hast dich der Käfigzone zu stark genähert, dafür musst du ","color":"red","bold":true},{"score":{"name":"VarKaefZ.4Gefangen","objective":"PZKaefZ.4Zeit"},"color":"dark_purple","bold":true},{"text":" Ticks lang hier bleiben!","color":"red","bold":true}]
scoreboard players operation @p[distance=..0.1,tag=EtiKaefZ.4InZone,tag=!EtiKaefZ.4Gefangen] PZKaefZ.4Zeit += VarKaefZ.4Gefangen PZKaefZ.4Zeit
tag @p[distance=..0.1,tag=EtiKaefZ.4InZone,tag=!EtiKaefZ.4Gefangen] add EtiKaefZ.4Gefangen

Variante 4: Zonen-Funktion
Die Zonen-Funktion ruft sich dreimal selbst auf, jedoch jedesmal um 90° gedreht. Damit in jede Richtung die Zonen-Abstands-Funktion geladen werden kann.

Editor Icon.png kaefigzone:v4zone.mcfunction
# Die Variable für den Selbstaufruf wird um eins erhöht.
scoreboard players add VarKaefZ.4Zahl PZKaefZ.4Groes 1

# Bevor die Zonen-Abstands-Funktion geladen wird, werden die Variablen dafür vorbereitet.
scoreboard players set VarKaefZ.4Abstand PZKaefZ.4Ausl 0
scoreboard players operation VarKaefZ.4Laenge PZKaefZ.4Ausl = @s PZKaefZ.4Ausl
scoreboard players operation VarKaefZ.4Laenge PZKaefZ.4Ausl *= KonstKaefZ.4MINUSEINS PZKaefZ.4Ausl
execute positioned ^1 ^ ^-1 run function kaefigzone:v4zone_abstand

# Diese Funktion wird dreimal sich selbst aufrufen und dabei die Rotion jeweils um 90° drehen.
execute if score VarKaefZ.4Zahl PZKaefZ.4Groes matches 1..3 rotated ~90 0 run function kaefigzone:v4zone

Variante 4: Zonen-Abstands-Funktion
Die Zonen-Abstands-Funktion ruft sich so oft selbst auf, bis sie die Ecken des Kubuses erreicht hat. Dort angekommen, wird die Zonen-Partikel-Funktion aufgerufen.

Editor Icon.png kaefigzone:v4zone_abstand.mcfunction
# Die Abstands-Variable wird um eins erhöht.
scoreboard players add VarKaefZ.4Abstand PZKaefZ.4Ausl 1

# Sobald die Variable gleich dem Wert der Einstellung entspricht, wird die Partikel-Funktion geladen, ansonsten wird die Abstands-Funktion erneut geladen, sofern der Wert kleiner ist.
execute if score VarKaefZ.4Abstand PZKaefZ.4Ausl = @s PZKaefZ.4Ausl run function kaefigzone:v4zone_partikel
execute if score VarKaefZ.4Abstand PZKaefZ.4Ausl < @s PZKaefZ.4Ausl positioned ^1 ^ ^-1 run function kaefigzone:v4zone_abstand

Variante 4: Zonen-Partikel-Funktion
Die Zonen-Partikel-Funktion ruft sich erneut selbst auf, bis sie die gesamte Kante der Kubus-Zone entlang gelaufen ist und erzeugt dabei jedesmal Partikel-Effekte.

Editor Icon.png kaefigzone:v4zone_partikel.mcfunction
# Die Partikel werden erzeugt.
particle minecraft:campfire_cosy_smoke ~ ~0.5 ~ 0 0 0 0 1 force @a[distance=..50]

# Die Längen-Variable wird um eins erhöht und anschließend wird geprüft ob diese kleiner als die maximale Länge ist. Solange das der Fall ist, wird die Partikel-Funktion erneut um einen Meter in Blickrichtung versetzt selbst aufgerufen.
scoreboard players add VarKaefZ.4Laenge PZKaefZ.4Ausl 1
execute if score VarKaefZ.4Laenge PZKaefZ.4Ausl < @s PZKaefZ.4Ausl positioned ^ ^ ^1 run function kaefigzone:v4zone_partikel


Variante 4: Stopp-Funktion
Die Stopp-Funktion löscht die Punkte-Ziele wieder und auch die Rüstungsständer im Inventar oder auf dem Boden. Die Zonen werden ebenfalls gelöscht.

Editor Icon.png kaefigzone:v4stopp.mcfunction
# Die Punkte-Ziele werden entfernt.
scoreboard objectives remove PZKaefZ.4Ausl
scoreboard objectives remove PZKaefZ.4Groes
scoreboard objectives remove PZKaefZ.4Zeit

# Der Rüstungsständer wird aus dem Inventar gelöscht.
clear @a minecraft:armor_stand{EigKaefZ.4Alle:true}

# Die eventuell vorhandenen Etiketten werden entfernt.
tag @a[tag=EtiKaefZ.4Nachricht] remove EtiKaefZ.4Nachricht
tag @a[tag=EtiKaefZ.4Auswahl] remove EtiKaefZ.4Auswahl
tag @a[tag=EtiKaefZ.4Gefangen] remove EtiKaefZ.4Gefangen

# Rüstungsständer auf dem Boden oder platzierte Rüstungsständer werden entfernt.
tag @e[type=minecraft:item,nbt={Item:{tag:{EigKaefZ.4Alle:true} } }] add EtiKaefZ.4Alle
kill @e[tag=EtiKaefZ.4Alle]


Disambig color.svg