Permalink
Browse files

Fixed up random shit

  • Loading branch information...
Epsilon02 committed Jan 12, 2018
1 parent 89d2b7e commit 951f42335f5317211e5e1e2ecb2b50268c140610
Showing with 106 additions and 60 deletions.
  1. +106 −60 README.md
View
166 README.md
@@ -20,28 +20,36 @@
Der Grundaufbau der Rezepte sind folgende:
* Shapeless:<br>
`recipes.addShapeless(<Output> * Anzahl, [<Input>, <Input2>, ...]);`
```
recipes.addShapeless(<Output> * Anzahl, [<Input>, <Input2>, ...]);
```
* Shaped:<br>
`recipes.addShaped(<Output> * Anzahl, [[<Input>, <Input>, <Input>], [<Input>, <Input>, <Input>], [<Input>, <Input>, <Input>]]);`<br>
* Shaped:
```
recipes.addShaped(<Output> * Anzahl, [[<Input>, <Input>, <Input>], [<Input>, <Input>, <Input>], [<Input>, <Input>, <Input>]]);
```
Bei Shaped-Rezepten kann man bei Input null verwenden um einen freien Platz anzdeuten (siehe Minecrafthosenrezept in der Mitte).
* Processing am Beispiel des Ofens:<br>
`furnace.addRecipe(<Output>, <Input>);`<br>
falls man durch das Braten XP bekommen soll: `furnace.addRecipe(<Output>, <Input>, XP);` ersetze XP z.B. durch 0.5 um 0,5 XP zu bekommen.<br>
```
furnace.addRecipe(<Output>, <Input>);
```
falls man durch das Braten XP bekommen soll: ```
furnace.addRecipe(<Output>, <Input>, XP);
``` ersetze XP z.B. durch 0.5 um 0,5 XP zu bekommen.<br>
Man kann kann auch ein Item "brennbar" machen: furnace.setFuel(<ItemDasBrennenSoll>, Zeit); ersetze Zeit durch eine Zahl z.B. 100.
`Output` ist das Item dass man nach dem Craften erhält.<br>
`Anzahl` ist wie viele man erhalten soll (kann bei 1 weggelassen werden).<br>
`Input` sind die Items die man zum Craften braucht (Keine Mengenangabe!!!).
Um Rezepte zu entferen gibt es folgendes:<br>
* `recipes.remove(<ItemDasEntferntWerdenSoll>);`<br>
* `furnace.remove(<ItemDasEntferntWerdenSoll>);`<br>
* ```recipes.remove(<ItemDasEntferntWerdenSoll>);```
* ```furnace.remove(<ItemDasEntferntWerdenSoll>);```
* Man kann auch bestimmte Rezepte mit:<br>
+ `recipes.removeShaped(<minecraft:stick>);` für alle Shaped-Rezepte
+ `recipes.removeShaped(<Output>, [[<Input>], [<Input>]]);` für ein ganz bestimmtes Rezept
+ `recipes.removeShapeless(<minecraft:stick>);` für alle Shapeless entfernen.
+ ```recipes.removeShaped(<minecraft:stick>);``` für alle Shaped-Rezepte
+ ```recipes.removeShaped(<Output>, [[<Input>], [<Input>]]);``` für ein ganz bestimmtes Rezept
+ ```recipes.removeShapeless(<minecraft:stick>);``` für alle Shapeless entfernen.
#### Ore Dictionary (Dictionary = Wörterbuch, in diesem Fall eher Lexikon)
@@ -58,72 +66,102 @@ Aber bitte folgende Dinge bei Verwendung von Variablen beachten:
* Nur Variablen verwenden wenn man sie wirklich braucht es macht nicht viel Sinn wenn man eine Variable nur ein oder zweimal verwendet und es würde den Code unnötig aufblähen.
Nun wie man Variablen schreibt: Man kann `val` oder `var` verwenden um eine Variable zu definieren.
* Mit `val`: <br> `val stick = <minecraft:stick>;`<br>
`val planks = <minecraft:planks:*>;`<br>
`recipes.remove(stick);`<br>
`recipes.addShaped(stick * 4, [[planks, null], [null, planks]]);`
* Mit `var`: <br> `var stick = <minecraft:stick>;`<br>
`var planks = <minecraft:planks:*>;`<br>
`recipes.remove(stick);`<br>
`recipes.addShaped(stick * 4, [[planks, null], [null, planks]]);`
* Mit `val`:
```
val stick = <minecraft:stick>;`
val planks = <minecraft:planks:*>;
recipes.remove(stick);
recipes.addShaped(stick * 4, [[planks, null], [null, planks]]);
```
* Mit `var`:
```
var stick = <minecraft:stick>;
var planks = <minecraft:planks:*>;
recipes.remove(stick);
recipes.addShaped(stick * 4, [[planks, null], [null, planks]]);
```
Nochmal kurz zurück zur Ore Dictionary: Man kann auch Ore Dictionary Einträge als Variablen verwenden und damit das Dictionary modifizieren (Bitte Vorsichtig damit sein!).
Dieses Beispiel ergibt wenig Sinn ist aber für Demonstrationszwecke sehr gut geeignet:<br>
`val iron = <ore:ingotIron>;`<br>
`iron.add(<minecraft:coal>);`<br>
`iron.remove(<minecraft:iron_ingot>);`<br>
```
val iron = <ore:ingotIron>;
iron.add(<minecraft:coal>);
iron.remove(<minecraft:iron_ingot>);
```
Folgendes passiert im oberen Code: es wird die Variable iron erstellt, die den Ore Dictionary Eintrag `ingotIron` also den standardmäßig nur den Eisenbarren enthält.
Dann wird dieser Dictionary das Item Kohle (`<minecraft:coal>`) hinzugefügt, nun wird zwischen den Items Kohle und Eisenbarren in der Rezeptanzeige gewechselt.
In der dritten Zeile wird der Eisenbarren entferent und enthält nun nur noch die Kohle.
Es ist auch möglich eigene Ore Dictionary Einträge anzulegen. Folgendes Beispiel zeigt wie.<br>
`val myEntry = <ore:myOwnEntry>;`<br>
`myEntry.add(<minecraft:coal>);`<br>
`myEntry.add(<minecraft:iron_ingot>);`
Es ist auch möglich eigene Ore Dictionary Einträge anzulegen. Folgendes Beispiel zeigt wie.
```
val myEntry = <ore:myOwnEntry>;
myEntry.add(<minecraft:coal>);
myEntry.add(<minecraft:iron_ingot>);
```
>Entry = Eintrag
#### Zurück zu den Craftingrezepten
Falls man zum Beispiel mit einer Axt und Holzbretter mehr Sticks bekommen soll kann man folgendes versuchen:<br>
`recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>, <ore:woodPlanks>]);`<br>
Nun hat man aber das Problem dass die Axt auch verschwindet dass kann man aber mit `.reuse()` verhindern.<br>
`recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.reuse(), <ore:woodPlanks>]);`
Falls man zum Beispiel mit einer Axt und Holzbretter mehr Sticks bekommen soll kann man folgendes versuchen:
```
recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>, <ore:woodPlanks>]);
```
Nun hat man aber das Problem dass die Axt auch verschwindet dass kann man aber mit `.reuse()` verhindern.
```
recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.reuse(), <ore:woodPlanks>]);
```
> reuse (sprich: ri juus) = wiederverwendbar
Falls aber noch Haltbarkeit der Axt verbraucht werden soll verwendet man statt `reuse()` einfach `.transformDamage()`:<br>
`recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.transformDamage(), <ore:plankWood>]);`<br>
Man kann auch eine genauere angabe der Haltbarkeit machen die man beim craften verlieren soll. Zum Beispiel einen Verlust von 4:<br>
`recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.transformDamage(4), <ore:plankWood>]);`
Falls aber noch Haltbarkeit der Axt verbraucht werden soll verwendet man statt `reuse()` einfach `.transformDamage()`:
```
recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.transformDamage(), <ore:plankWood>]);
```
Man kann auch eine genauere angabe der Haltbarkeit machen die man beim craften verlieren soll. Zum Beispiel einen Verlust von 4:
```
recipes.addShapeless(<minecraft:stick> * 3, [<minecraft:stone_axe>.transformDamage(4), <ore:plankWood>]);
```
Der folgende Teil ist meiner Erfahrung nach, zumindest bei Eimern, nur noch notwendig wenn man eine Minecraftversion __1.7.10 oder drunter__ verwendet:<br>
Falls man einen Wassereimer zum Craften verwenden muss, will man ja auch wieder den leeren Eimer wieder bekommen.
Mit folgendem Beispiel wird gezeigt wie:<br>
`recipes.addShaped(<minecraft:grass>, [[<minecraft:dirt>, <minecraft:water_bucket>.transformReplace(<minecraft:bucket>),<minecraft:wheat>]]);`
Mit folgendem Beispiel wird gezeigt wie:
```
recipes.addShaped(<minecraft:grass>, [[<minecraft:dirt>, <minecraft:water_bucket>.transformReplace(<minecraft:bucket>),<minecraft:wheat>]]);
```
Falls man keinen Eimer zurückbekommen soll und man sicher gehen will dann kann man wie in dem Beispiel folgendes verwenden:<br>
`recipes.addShaped(<minecraft:grass>, [[<minecraft:dirt>, <minecraft:water_bucket>.noReturn(), <minecraft:wheat>]]);`
Falls man keinen Eimer zurückbekommen soll und man sicher gehen will dann kann man wie in dem Beispiel folgendes verwenden:
```
recipes.addShaped(<minecraft:grass>, [[<minecraft:dirt>, <minecraft:water_bucket>.noReturn(), <minecraft:wheat>]]);
```
Oder wenn man Statt dem Eimer drei Eisenerze zurückbekommen soll (wieso auch immer):<br>
`recipes.addShaped(<minecraft:grass>, [[<minecraft:dirt>, <minecraft:water_bucket>.giveBack(<minecraft:iron_ore> * 3), <minecraft:wheat>]]);`
Oder wenn man Statt dem Eimer drei Eisenerze zurückbekommen soll (wieso auch immer):
```
recipes.addShaped(<minecraft:grass>, [[<minecraft:dirt>, <minecraft:water_bucket>.giveBack(<minecraft:iron_ore> * 3), <minecraft:wheat>]]);
```
#### Items umbenennen
`<minecraft:chest>.displayName = "Storage Box";`<br>
```<minecraft:chest>.displayName = "Storage Box";```
Das wars mit dem Umbenennen mehr benötigt man nicht.
#### Tooltips
Tooltips sind die kleinen Beschreibungen wenn man mit der Maus über einem Item schwebt (Nicht jedes Item hat ein Tolltip).<br>
`<ore:plankWood>.addTooltip("These are wood planks");`<br>
`<minecraft:stick>.addTooltip("These are sticks");`
Falls man Shift drücken muss um ein Tooltip anzuzeigen dann verwende wie in folgendem Beispiel:<br>
`<minecraft:stick>.addShiftTooltip("Only appears with shift");`
Man kann auch noch die Schrift farbig machen mit folgendem Beispiel wird gezeigt wie:<br>
`<minecraft:stick>.addTooltip(format.green("This is green text"));`
Tooltips sind die kleinen Beschreibungen wenn man mit der Maus über einem Item schwebt (Nicht jedes Item hat ein Tolltip).
```
<ore:plankWood>.addTooltip("These are wood planks");
<minecraft:stick>.addTooltip("These are sticks");
```
Falls man Shift drücken muss um ein Tooltip anzuzeigen dann verwende wie in folgendem Beispiel:
```
<minecraft:stick>.addShiftTooltip("Only appears with shift");
```
Man kann auch noch die Schrift farbig machen mit folgendem Beispiel wird gezeigt wie:
```
<minecraft:stick>.addTooltip(format.green("This is green text"));
```
Falls man andere farben haben will dann schau dir diese [Liste](http://minetweaker3.powerofbytes.com/wiki/Tutorial:Tooltips#Markup) an.<br>
Am ender der Liste gibt es noch andere Formatierungsoptionen einfach mal ausprobieren was die machen viel kaputt machen kann man nicht.
@@ -132,25 +170,33 @@ Am ender der Liste gibt es noch andere Formatierungsoptionen einfach mal ausprob
Damit der Code schön schlank bleibt kann man Schleifen verwenden, dass heißt eine Schleife geht solang den Code mit verschiedenen vorgegebenen Elementen durch bis es keine mehr gibt.<br>
Falls man Schleifen(in englisch Loops{sprich luups}) in einem Code verwendet dann muss am anfangen des Codes `import minetweaker.item.IItemStack;` stehen, sonst bekommt man ein Error von Minetweaker.<br>
Nun baut man eine Liste der Elemente, zum Beispiel folgendes:<br>
`var myItems = [<minecraft:stick>, <minecraft:stone>] as IItemStack[];`
Nun baut man eine Liste der Elemente, zum Beispiel folgendes:
```
var myItems = [<minecraft:stick>, <minecraft:stone>] as IItemStack[];
```
Nun sind die Stöcke(sticks) und der Stein(stone) in der Variable myItems eingespeichert.<br>
Ein anderes Beispiel sind Zahnräder von der Mod Thermal Foundation:
`var gears=[<thermalfoundation:material:24>, <thermalfoundation:material:25>, <thermalfoundation:material:26>, <thermalfoundation:material:27>, <thermalfoundation:material:28>, <thermalfoundation:material:29>, <thermalfoundation:material:30>] as IItemStack[]`<br>
```
var gears=[<thermalfoundation:material:24>, <thermalfoundation:material:25>, <thermalfoundation:material:26>, <thermalfoundation:material:27>, <thermalfoundation:material:28>, <thermalfoundation:material:29>, <thermalfoundation:material:30>] as IItemStack[]
```
Jetzt sind drei verschiedene Zahnräder in `gears` eingespeichert.
Nun kann man eine Schleife bauen um zum Beispiel die Rezept davon zu entfernen:<br>
`for g in gears {`<br>
` recipes.remove(g);`<br>
`}`
```
for g in gears {
recipes.remove(g);
}
```
Nun hat man 7 Rezepte von Items innerhalb von 4 Zeilen gelöscht. Sobald man mehr als zwei Rezepte in einem Script löscht sollte man Schleien/Loops verwenden damit der Code übersichtlich bleibt. Natürlich funktioniert das auch beim hinzufügen von Rezepten. Das `g` im oberen Beispiel ist die Variable die in der Schleife verwendet wird die bei jedem Schleifendurchgang das nächste Item aus der `gears`-Liste nimmt bis die Liste fertig ist.
Nun hat man 7 Rezepte von Items innerhalb von 4 Zeilen gelöscht. Sobald man mehr als zwei Rezepte in einem Script löscht sollte man Schleien/Loops verwenden damit der Code übersichtlich bleibt. Natürlich funktioniert das auch beim hinzufügen von Rezepten. Das `g` im oberen Beispiel ist die Variable die in der Schleife verwendet wird die bei jedem Schleifendurchgang das nächste Item aus der `gears`-Liste nimmt bis die Liste fertig ist.
Bleiben wir noch ein wenig bei den Zahnrädern/Gears. Wie vermutlich auffällt haben die Itembezeichnungen im oberen Code genau den gleichen Namen bis auf die Zahl hinten.
Um schreibarbeit bei solchen Fällen zu sparen kann man auch<br>
`var ids = [24, 25, 26, 27, 28, 29, 30] as int[];`<br>
`for i in ids {`<br>
` recipes.remove((<thermalfoundation:material>.definition.makeStack(i)));`<br>
`}`
```
var ids = [24, 25, 26, 27, 28, 29, 30] as int[];
for i in ids {
recipes.remove((<thermalfoundation:material>.definition.makeStack(i)));
}
```
> Falls alle IDs von einem Item entfernt werden sollen dann kann man auch einfach `recipes.remove(<thermalfoundation:material:*);` verwenden. (Bitte mit Vorsicht benutzen und genau schauen ob nicht noch ein Item dafür verwendet wird!

0 comments on commit 951f423

Please sign in to comment.