Skip to content

Commit 2fc8597

Browse files
committed
0.0.5
1 parent 8dca2f6 commit 2fc8597

File tree

8 files changed

+415
-100
lines changed

8 files changed

+415
-100
lines changed

README-DE.md

Lines changed: 126 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22

3-
## Minecraft Script Dokumentation
3+
4+
# Minecraft Script Dokumentation
45

56
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.
67

@@ -51,7 +52,7 @@ Hiermit wird dein Code automatisch compiled, wenn du irgendwelche Änderungen ma
5152

5253
Auch hier kann ein Pfad angegeben werden.
5354

54-
### <a name="ownmodal">2.4 Dev: mcscript modals </a>
55+
### 2.4 Dev: mcscript modals
5556

5657
!!Dieser Command ist nur für Entwicker gedacht, die ihre Modals in den Compiler einbauen wollen.
5758
Es muss eine Datei angegeben werden und die Modals aus dieser Datei werden dann in eine Konfigurationsdatei geschrieben.
@@ -99,9 +100,14 @@ Auch sehr gut mit [for-loops](#loops) kombinierbar:
99100
#file: test$(i)
100101
//Commands für jede Datei hier
101102
}
103+
### 3.2 Dateien erweitern
104+
Eine bereits bestehende Datei, vorher mit `#file:`, kann nun auch aus anderen Dateien erweitert werden und neuer Code einfach hinten drangehängt werden:
105+
```
106+
#extend: ./test
107+
/commands kommen hier.
108+
```
102109

103-
104-
### 3.2 Command Gruppen / Wrapping
110+
### 3.3 Command Gruppen / Wrapping
105111

106112
"as, at, positioned,align,dimension,rotated,anchored" können zusammengefasst werden:
107113

@@ -126,9 +132,55 @@ In den Klammern muss das jeweilige Argument als String, sprich " " oder ' ' steh
126132
/say command
127133
}
128134
==> /execute as @p at @s positioned ~ ~-1 ~ if entity @s[tag=mytag] run say command
135+
### 3.4 Variablen
136+
Wie jede Programmiersprache hat auch Minecraft Script Variablen. Sie müssen wiefolgt initialisiert werden:
137+
`var test`
138+
Der Variablen kann ein Wert hinzugewiesen werden:
139+
```
140+
var test = 5
141+
# oder
142+
var test
143+
test = 6
144+
```
145+
Dieser Wert kann beliebig oft wieder verändert werden.
129146

147+
```
148+
var test
149+
test @s = 10
150+
```
151+
So können Werte auch nur speziellen Minecraft Selektoren zugewiesen werden.
152+
Alle Werte werden in einem scoreboard mit dem Variablennamen gespeichert. Also können die Werte auch ganz standart mäßig verändert und ausgelesen werden:
153+
```
154+
var test
155+
test @s = 10
156+
/scoreboard players get @s test ==> 10
157+
/scoreboard players set @s test 5
158+
# etc
159+
```
130160

131-
### 3.3 If/Else Statements
161+
Variablen können auch mit anderen zusammen gerechnet und zusammengefügt werden:
162+
```
163+
var test = 10
164+
var neu = 5
165+
test += neu ==> 15
166+
test -= neu ==> 5
167+
test *= neu ==> 50
168+
test /= neu ==> 2
169+
test %= neu ==> 0
170+
```
171+
### 3.5 Konstanten
172+
Eine andere Art Variable ist die Konstante, so deklariert:
173+
`const test = [value]`
174+
Diese Art kann nicht verändert werden!
175+
Du kannst sie mit `$(var_name)` irgendwo in deinem Code benutzen um lange Strings und wiederholende Phrasen zu vermeiden:
176+
```
177+
const einString = "Hier könnte sehr viel Schrott stehen."
178+
const eineNum = 5
179+
180+
/say $(einString) ==> /say Hier könnte sehr viel Schrott stehen.
181+
var test = $(eineNum) ==> var test = 5
182+
```
183+
### 3.6 If/Else Statements
132184

133185
If funktioniert ähnlich wie das Command Wrapping:
134186

@@ -187,20 +239,21 @@ Hier werden beide ausgeführt!! Verbessert:
187239
```
188240

189241

190-
### 3.4 Logische Operatoren
242+
### 3.7 Logische Operatoren
191243

192244
In Kombination mit Command Gruppen und If-Else-Statements können zusätzlich logische Operatoren benutzt werden:
193245

194246
* Der Oder-Operator kann bei den Gruppierungen auf zwei Arten benutzt werden:
195247
```
196-
as('@s'||'@p'){
248+
as(@s||@p){
197249
/command
198250
}
199251
==> execute as @s run command
200252
execute at @p run command
201253
202254
# oder als Liste
203-
if('entity @s[tag=entity1]','entity @s[tag=entity2]'){
255+
if(@s[tag=entity1],'entity @s[tag=entity2]'){
256+
# hier gehen beide Varianten ^
204257
/command
205258
}
206259
==> execute if entity @s[tag=entity1] run command
@@ -214,9 +267,37 @@ In Kombination mit Command Gruppen und If-Else-Statements können zusätzlich lo
214267
}
215268
==> execute if entity @s if entity @p run command
216269
```
270+
* Überprüfung von Variablen:
271+
```
272+
var test = 5
273+
274+
# genau gleich
275+
if(test == 5){
276+
/commands
277+
}
278+
279+
# größer/kleiner gleich
280+
if(test >= 5){
281+
/commands
282+
}
283+
284+
# größer/kleiner
285+
if(test > 5){
286+
/commands
287+
}
288+
289+
# auch im Vergleich möglich
290+
if(test > test2){
291+
/commands
292+
}
217293
294+
# oder mit entity variablen
295+
if(test @s > test2 @a){
296+
/commands
297+
}
298+
```
218299

219-
### 3.5 For-Loops
300+
### 3.8 For-Loops
220301

221302
Einer der hilfreichsten Features ist der For-Loop. Als Argumente werden ganze Zahlen angenommen.
222303

@@ -254,9 +335,41 @@ Das ist bei 2 dimensionalen Loops sinnvoll:
254335
}
255336
# es wird 10x say mit 1.1 - 5.2 ausgegeben
256337
}
338+
### 3.9 while-Loops
339+
Der while-Loop ist so zu definieren:
340+
```
341+
while([cond]){
342+
/commands
343+
}
344+
```
345+
Die gruppierten Commands werden solange ausgeführt, wie die Bedingung[cond] war ist.
346+
Als Bedingung können hier alle Operatoren und Argumente der If-Bedingungen verwendet werden. z.B.
347+
```
348+
var test = 0
349+
while(test < 10){
350+
/commands hier
351+
test += 1
352+
}
353+
# ==> Die Commands werden innerhalb eines Ticks 10mal ausgeführt.
354+
```
355+
Bei while-Loops kann auch mit stop und continue gearbeitet werden:
356+
```
357+
var test = 0
358+
while(test < 10){
359+
test += 1
360+
if(test == 5){
361+
continue
362+
# Wenn test 5 ist werden die restlichen Commands übersprungen
363+
}
364+
/commands hier
365+
if(test >= 9){
366+
stop
367+
# Wenn test 9 oder über 9 ist wird die Schleife abgebrochen
368+
}
369+
}
370+
```
257371

258-
259-
### 3.6 Modals
372+
### 3.10 Modals
260373

261374
Modals kann man wie functions oder Methoden verstehen, dass heißt man kann sie definieren:
262375

@@ -308,11 +421,11 @@ Auch sind optionale und vordefinierte Argumente verfügbar:
308421
# => say test
309422

310423

311-
### 3.7 System Modals
424+
### 3.11 System Modals
312425

313426
Es gibt schon einige vordefinierte Modals, die hilfreich sein könnten. Bitte schaue dir dafür die spezifischen Dokumentationen [hier](#) an.
314427

315-
Du hast Ideen, welche Modals unbedingt als Standart-Modal aufgegriffen werden müssen? Sende mir einfach die [Konfigurationsdatei](#ownmodal) zur Überprüfung.
428+
Du hast Ideen, welche Modals unbedingt als Standart-Modal aufgegriffen werden müssen? Sende mir einfach die [Konfigurationsdatei](#24_Dev_mcscript_modals_54) zur Überprüfung.
316429

317430
## IDEs und Syntax Highlighting
318431

lib/forWeb.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@
415415
generate = function(exp) {
416416
return js(exp);
417417

418-
let modals = [{"type":"call","func":"log","args":[{"type":"var","value":"text"},{"type":"assign","operator":"=","left":{"type":"var","value":"sel"},"right":{"type":"str","value":"@a"}}],"after":"tellraw $(sel) [{\"text\":\"console => \",\"color\":\"aqua\"},{\"text\":\"$(text)\",\"color\":\"white\"}]"},{"type":"call","func":"newStand","args":[{"type":"assign","operator":"=","left":{"type":"var","value":"name"},"right":{"type":"str","value":""}},{"type":"assign","operator":"=","left":{"type":"var","value":"position"},"right":{"type":"str","value":"~ ~ ~"}},{"type":"assign","operator":"=","left":{"type":"var","value":"tags"},"right":{"type":"str","value":"[]"}},{"type":"assign","operator":"=","left":{"type":"var","value":"marker"},"right":{"type":"num","value":1}},{"type":"assign","operator":"=","left":{"type":"var","value":"invisible"},"right":{"type":"num","value":1}},{"type":"assign","operator":"=","left":{"type":"var","value":"noGravity"},"right":{"type":"num","value":1}}],"after":"summon armor_stand $(position) {CustomName:\"{\\\"text\\\":\\\"$(name)\\\"}\", Tags: $(tags),Invisible:$(invisible),Marker:$(marker),NoGravity:$(noGravity)}"}]
418+
var modals = [{"type":"call","func":"log","args":[{"type":"var","value":"text"},{"type":"assign","operator":"=","left":{"type":"var","value":"sel"},"right":{"type":"str","value":"@a"}}],"after":"tellraw $(sel) [{\"text\":\"console => \",\"color\":\"aqua\"},{\"text\":\"$(text)\",\"color\":\"white\"}]"},{"type":"call","func":"newStand","args":[{"type":"assign","operator":"=","left":{"type":"var","value":"name"},"right":{"type":"str","value":""}},{"type":"assign","operator":"=","left":{"type":"var","value":"position"},"right":{"type":"str","value":"~ ~ ~"}},{"type":"assign","operator":"=","left":{"type":"var","value":"tags"},"right":{"type":"str","value":"[]"}},{"type":"assign","operator":"=","left":{"type":"var","value":"marker"},"right":{"type":"num","value":1}},{"type":"assign","operator":"=","left":{"type":"var","value":"invisible"},"right":{"type":"num","value":1}},{"type":"assign","operator":"=","left":{"type":"var","value":"noGravity"},"right":{"type":"num","value":1}}],"after":"summon armor_stand $(position) {CustomName:\"{\\\"text\\\":\\\"$(name)\\\"}\", Tags: $(tags),Invisible:$(invisible),Marker:$(marker),NoGravity:$(noGravity)}"}]
419419

420420
function js(exp) {
421421
switch (exp.type) {

lib/gen_new.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,15 @@ genNew = function(name){
3232
// load.mcscript
3333
genFile('data/'+packid+'/functions/load.mcscript',`
3434
#file: ./load
35+
run: function `+ packid+`:mcscript/load
36+
# do not remove this line!!
37+
3538
// here goes your load content
39+
`)
40+
// load mcscript
41+
genFile('data/'+packid+'/functions/mcscript/load.mcfunction',`
42+
# please do not touch this file!
43+
# it is used by the compiler!
3644
`)
3745
// main.mcscript
3846
genFile('data/'+packid+'/functions/main.mcscript',`

0 commit comments

Comments
 (0)