You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Minecraft Script ist eine Programmiersprache für Entwickler der mcfunctions, sowie für die Minecraft Map und Package Erschaffer. Die .mcscript Dateien werden dabei zu mcfunction compiled und generiert. Dies bietet dem Entwickler erweiterte Möglichkeiten, wie zum Beispiel Modals, Loops, Variablen, Konstanten und Command-Wrapping.
8
10
@@ -17,9 +19,11 @@ English documentation [here](https://github.com/Stevertus/mcscript/blob/master/R
17
19
-[mcscript new](#cli-new)
18
20
-[mcscript compile](#cli-compile)
19
21
-[mcscript watch](#cli-watch)
20
-
3)[Syntax](#syntax)
21
-
-[file setup](#files)
22
+
3)[file system](#files)
23
+
- [file setup](#files)
22
24
- [Dateien erweitern](#extend)
25
+
- [Globale Dateien](#global)
26
+
4)[Syntax](#syntax)
23
27
-[Command Grouping](#groups)
24
28
-[Variablen](#vars)
25
29
-[Boolean Variablen](#boolean)
@@ -34,7 +38,7 @@ English documentation [here](https://github.com/Stevertus/mcscript/blob/master/R
34
38
-[forEach-Loops](#foreach)
35
39
-[Modals](#modals)
36
40
-[System Modals](#systemModals)
37
-
4)[IDEs und Syntax Highlighting](#ide)
41
+
5)[IDEs und Syntax Highlighting](#ide)
38
42
<aid="install"></a>
39
43
## 1) Installation
40
44
@@ -92,20 +96,8 @@ Eine Liste aller McScript Extensions kann bekommen werden mit `mcscript add`
92
96
93
97
!!Dieser Command ist nur für Entwicker gedacht, die ihre Modals in den Compiler einbauen wollen.
94
98
Es muss eine Datei angegeben werden und die Modals aus dieser Datei werden dann in eine Konfigurationsdatei geschrieben.
95
-
<aid="syntax"></a>
96
-
## Minecraft Script Syntax
97
-
98
-
99
-
Der Code wird in Dateien mit der Endung .mcscript geschrieben. Es wird ein Code-Editor(IDE) empfohlen, um die Dateien zu verwalten und den Syntax farbig zu markieren. [Mehr hier](#ide)
100
-
101
-
Anders als bei mcfunction wird jeder Command mit einem "/" oder "run: " injektiert.
102
-
103
-
Kommentare werden mit "//" angekündigt, falls Kommentare auch in der neuen Datei auftauchen sollen mit "#"
104
-
105
-
Leerzeilen und Zeilensprünge werden nicht beachtet.
106
-
Falls eine Leerzeile aus Struktur in der mcfunction gewünscht ist, dies mit einem # ohne Kommentar ausdrücken.
107
-
Zwei Leerzeilen können mit "##" erreicht werden.
108
99
<aid="files"></a>
100
+
## 3) File system
109
101
### 3.1 File setup
110
102
In einem Minecraft Datapack können alle Datein in ein scripts Ordner gepackt werden, um dann in `/functions` den Output zu generieren.
111
103
Es werden immer Dateien mit gleichem Namen, wie ihr Root generiert.
@@ -143,8 +135,33 @@ Eine bereits bestehende Datei, vorher mit `#file:`, kann nun auch aus anderen Da
143
135
#extend: ./test
144
136
/commands kommen hier.
145
137
```
138
+
<aid="global"></a>
139
+
### 3.3 Globale Dateien
140
+
[Variablen](#vars), [Konstanten](#consts) und [Modals](#modals) werden für jede Datei seperat gespeichert.
141
+
Jetzt kann man eine globale Datei mit der Endung `.gl.mcscript` erstellen. Der Compiler erkennt diese automatisch und verwendet die deklarierten Objekte auch in anderen Dateien.
142
+
So kann man die Modals zum Beispiel in eine eigende Datei schreiben.
143
+
<aid="syntax"></a>
144
+
## Minecraft Script Syntax
145
+
146
+
147
+
Der Code wird in Dateien mit der Endung .mcscript geschrieben. Es wird ein Code-Editor(IDE) empfohlen, um die Dateien zu verwalten und den Syntax farbig zu markieren. [Mehr hier](#ide)
148
+
149
+
Anders als bei mcfunction wird jeder Command mit einem "/" oder "run: " injektiert.
150
+
151
+
Kommentare werden mit "//" angekündigt, falls Kommentare auch in der neuen Datei auftauchen sollen mit "#"
152
+
Ein Kommentar über mehrere Zeilen muss mit
153
+
```
154
+
*/
155
+
angegeben werden
156
+
/*
157
+
```
158
+
159
+
Leerzeilen und Zeilensprünge werden nicht beachtet.
160
+
Falls eine Leerzeile aus Struktur in der mcfunction gewünscht ist,drücke dies mit einem # ohne Kommentar aus.
"as, at, positioned,align,dimension,rotated,anchored" können zusammengefasst werden:
@@ -176,7 +193,7 @@ asat(@s){
176
193
}
177
194
==> /execute as @p at @s positioned ~ ~-1 ~ if entity @s[tag=mytag] run say command
178
195
<aid="vars"></a>
179
-
### 3.4 Variablen
196
+
### 4.2 Variablen
180
197
Wie jede Programmiersprache hat auch Minecraft Script Variablen. Sie müssen wiefolgt initialisiert werden:
181
198
`var test`
182
199
Der Variablen kann ein Wert hinzugewiesen werden:
@@ -226,8 +243,17 @@ test *= neu ==> 50
226
243
test /= neu ==> 2
227
244
test %= neu ==> 0
228
245
```
246
+
**Command Response in Variable speichern:**
247
+
```
248
+
var res = run: command
249
+
==> execute store result score res res run command
250
+
```
251
+
Das Ergebnis des command wird in die Variable res geschrieben.
252
+
Beispiel mit /data get:
253
+
`var varResult = run: data get entity @s Pos[0]`
254
+
229
255
<aid="boolean"></a>
230
-
### 3.5 Boolean Variablen (Tags)
256
+
### 4.3 Boolean Variablen (Tags)
231
257
> `bool [name] [selector](optional) = true|false`
232
258
233
259
So können Wahrheitswerte deklariert werden.
@@ -242,7 +268,7 @@ if(isCool){
242
268
}
243
269
```
244
270
<aid="consts"></a>
245
-
### 3.6 Konstanten
271
+
### 4.4 Konstanten
246
272
Eine andere Art Variable ist die Konstante, so deklariert:
247
273
> `const [name] = [value]`
248
274
@@ -255,8 +281,19 @@ const eineNum = 5
255
281
/say $(einString) ==> /say Hier könnte sehr viel Schrott stehen.
256
282
var test = $(eineNum) ==> var test = 5
257
283
```
284
+
**Replace Konstanten**
285
+
Der Wert einer Konstante kann bei der Verwendung noch umgeändert werden. Hierzu ein `.repl()` an die Verwendung anfügen:
286
+
> `$(const).repl([suchwert],[replacement])`
287
+
288
+
Bei unserem Beispiel wollen wir das viel replacen:
289
+
```
290
+
/say $(einString).repl("viel","sehr viel") ==> /say Hier könnte sehr sehr viel Schrott stehen.
291
+
```
292
+
Auch kann hier ein [RegEx](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp) eingefügt werden und auch auf diesen im Replacement zugegriffen werden:
293
+
`$(const).repl([/regex/],["$&"])`
294
+
258
295
<aid="if"></a>
259
-
### 3.7 If/Else Statements
296
+
### 4.5 If/Else Statements
260
297
261
298
If funktioniert ähnlich wie das Command Wrapping:
262
299
@@ -315,7 +352,7 @@ Hier werden beide ausgeführt!! Verbessert:
315
352
```
316
353
317
354
<aid="operators"></a>
318
-
### 3.8 Logische Operatoren
355
+
### 4.6 Logische Operatoren
319
356
320
357
In Kombination mit Command Gruppen und If-Else-Statements können zusätzlich logische Operatoren benutzt werden:
321
358
@@ -373,7 +410,7 @@ if(test @s > test2 @a){
373
410
}
374
411
```
375
412
<aid="switch"></a>
376
-
### 3.9 Switch-Cases
413
+
### 4.7 Switch-Cases
377
414
```
378
415
switch([var_name]){
379
416
case <=|<|==|>|>= [other_var]|[number] {
@@ -411,7 +448,7 @@ switch(test){
411
448
}
412
449
```
413
450
<aid="for"></a>
414
-
### 3.10 For-Loops
451
+
### 4.8 For-Loops
415
452
```
416
453
for([from],[to],[var_name](optional)){
417
454
[actions]
@@ -454,7 +491,7 @@ Das ist bei 2 dimensionalen Loops sinnvoll:
454
491
# es wird 10x say mit 1.1 - 5.2 ausgegeben
455
492
}
456
493
<aid="raycast"></a>
457
-
### 3.11 Raycasting
494
+
### 4.9 Raycasting
458
495
```
459
496
raycast([distance](optional), [block to travel through](optional),entity | block [target](optional) ){
Mcscript weiß nun, dass das Ziel eine Entity ist und führt den Command als diese aus, wenn sie getroffen wurde.
514
551
Also würde der Armor Stand test sagen.
515
552
<aid="while"></a>
516
-
### 3.12 while-Loops
553
+
### 4.10 while-Loops
517
554
Der while-Loop ist so zu definieren:
518
555
```
519
556
while([cond]){
@@ -549,7 +586,7 @@ while(test < 10){
549
586
}
550
587
```
551
588
<aid="dowhile"></a>
552
-
### 3.13 do-while-Loops
589
+
### 4.11 do-while-Loops
553
590
```
554
591
do {
555
592
/commands
@@ -558,7 +595,7 @@ do {
558
595
Der do-while-Loop funktioniert ähnlich, wie der while-Loop mit dem kleinen Unterschied, dass der Codeblock ausgeführt wird und danach erst die Bedingung geprüft wird.
Modals kann man wie functions oder Methoden verstehen, dass heißt man kann sie definieren:
593
630
594
631
@@ -637,9 +674,29 @@ Auch sind optionale und vordefinierte Argumente verfügbar:
637
674
638
675
say('test')
639
676
# => say test
677
+
**Modals überschreiben**
678
+
Bereits erstellte modals können innerhalb des Prozesses überschrieben werden:
679
+
> ```
680
+
> override modal [name]([arguments]){
681
+
> [actions]
682
+
>}
683
+
>```
684
+
685
+
Dabei werden Argumente und Actions komplett getauscht und für den fortlaufenden Prozess verwendet.
686
+
687
+
**Argumente ersetzen**
688
+
Der Wert eines Arguments kann bei der Verwendung noch umgeändert werden. Hierzu ein `.repl()` an die Verwendung anfügen:
689
+
> `$(argument).repl([suchwert],[replacement])`
690
+
691
+
Bei unserem Beispiel wollen wir ein eingegebenes test replacen:
692
+
```
693
+
/say $(argument).repl("test","no test") ==> /say no test
694
+
```
695
+
Auch kann hier ein [RegEx](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp) eingefügt werden und auch auf diesen im Replacement mit `$&` zugegriffen werden:
696
+
`$(argument).repl([/regex/],["$&"])`
640
697
641
698
<a id="systemModals"></a>
642
-
### 3.16 System Modals
699
+
### 4.14 System Modals
643
700
644
701
Es gibt schon einige vordefinierte Modals, die hilfreich sein könnten. Bitte schaue dir dafür die spezifischen Dokumentationen [hier](https://github.com/Stevertus/mcscript/blob/master/Core%20Modals.md) an.
0 commit comments