Skip to content

Commit 9944530

Browse files
l10n: 26w12a (FabricMC#533)
Co-authored-by: Fabric Bot <159731069+FabricMCBot@users.noreply.github.com>
1 parent e48d48f commit 9944530

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+522
-138
lines changed

translated/de_de/develop/blocks/block-containers.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,7 @@ Außerdem sollten wir die Methode `useItemOn` von `DuplicatorBlock` ändern, um
8484
Wenn wir nun versuchen, Items von der Seite statt von oben einzufügen, funktioniert das nicht!
8585

8686
<VideoPlayer src="/assets/develop/blocks/container_3.webm">Der Duplizierer wird nur aktiviert, wenn man mit seiner Oberseite interagiert.</VideoPlayer>
87+
88+
## Menüs {#menus}
89+
90+
Um über ein Menü auf den neuen Containerblock zuzugreifen, so wie du es bei einer Truhe tust, lies bitte den Leitfaden [Containermenüs](./container-menus).
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
---
2+
title: Containermenüs
3+
description: Ein Leitfaden, in der erklärt wird, wie man ein einfaches Menü für einen Containerblock erstellt.
4+
authors:
5+
- Tenneb22
6+
---
7+
8+
<!---->
9+
10+
:::info VORAUSSETZUNGEN
11+
12+
Du solltest zunächst den Abschnitt [Blockcontainer](./block-containers) lesen, um dich mit der Erstellung einer Containerblock-Entität vertraut zu machen.
13+
14+
:::
15+
16+
Wenn man einen Container, wie zum Beispiel eine Truhe, öffnet, sind hauptsächlich zwei Dinge erforderlich, um dessen Inhalt anzuzeigen:
17+
18+
- ein `Screen`, der für das Rendering des Inhalts und des Hintergrunds auf dem Bildschirm zuständig ist.
19+
- ein `Menu`, das die Shift-Klick-Logik und die Synchronisation zwischen Server und Client handhabt.
20+
21+
In diesem Leitfaden erstellen wir eine Erdkiste mit einem 3x3-Container, auf den man durch einen Rechtsklick und das Öffnen einer Oberfläche zugreifen kann.
22+
23+
## Den Block erstellen {#creating-the-block}
24+
25+
Zunächst möchten wir einen Block und eine Block-Entität erstellen; weitere Informationen findest du im Leitfaden [Blockcontainer](./block-containers#creating-the-block).
26+
27+
@[code transcludeWith=:::block](@/reference/latest/src/main/java/com/example/docs/block/custom/DirtChestBlock.java)
28+
29+
@[code transcludeWith=:::be](@/reference/latest/src/main/java/com/example/docs/block/entity/custom/DirtChestBlockEntity.java)
30+
31+
::: info
32+
33+
Da wir einen 3x3-Container wollen, müssen wir die Größe der Elemente auf 9 festlegen.
34+
35+
:::
36+
37+
### Das Menü öffnen {#opening-the-screen}
38+
39+
Wir möchten das Menü irgendwie öffnen können, daher werden wir das innerhalb der Methode `useWithoutItem` umsetzen:
40+
41+
@[code transcludeWith=:::use](@/reference/latest/src/main/java/com/example/docs/block/custom/DirtChestBlock.java)
42+
43+
### Den MenuProvider implementieren {#implementing-menuprovider}
44+
45+
Um die Menü-Funktionalität hinzuzufügen, müssen wir nun `MenuProvider` in der Block-Entität implementieren:
46+
47+
@[code transcludeWith=:::menu](@/reference/latest/src/main/java/com/example/docs/block/entity/custom/DirtChestBlockEntity.java)
48+
49+
Die Methode `getDisplayName` gibt den Namen des Blocks zurück, der oben auf der Oberfläche angezeigt wird.
50+
51+
## Das Menü erstellen {#creating-the-menu}
52+
53+
`createMenu` erwartet, dass wir ein Menü zurückgeben, aber wir haben noch keines für unseren Block erstellt. Um dies zu tun, werden wir eine Klasse `DirtChestMenu` erstellen, welche von `AbstractContainerMenu` erbt:
54+
55+
@[code transcludeWith=:::menu](@/reference/latest/src/main/java/com/example/docs/menu/custom/DirtChestMenu.java)
56+
57+
Der clientseitige Konstruktor wird auf dem Client aufgerufen, wenn der Server möchte, dass dort ein Menü geöffnet wird. Es erstellt einen leeren Container, der dann automatisch mit dem tatsächlichen Container auf dem Server synchronisiert wird.
58+
59+
Der serverseitige Konstruktor wird auf dem Server aufgerufen, und da er den Inhalt des Containers kennt, kann er diesen direkt als Argument übergeben.
60+
61+
`quickMoveStack` übernimmt den Shift-Klick auf Items innerhalb des Menüs. Dieses Beispiel bildet das Verhalten von Vanilla Menüs wie Truhen und Spendern nach.
62+
63+
Zuerst müssen wir das Menü in einer neuen Klasse `ModMenuType` registrieren:
64+
65+
@[code transcludeWith=:::registerMenu](@/reference/latest/src/main/java/com/example/docs/menu/ModMenuType.java)
66+
67+
Wir können jetzt den Rückgabewert von `createMenu` in der Block-Entität setzen, um unser Menü zu verwenden:
68+
69+
@[code transcludeWith=:::providerImplemented](@/reference/latest/src/main/java/com/example/docs/block/entity/custom/DirtChestBlockEntity.java)
70+
71+
::: info
72+
73+
Die Methode `createMenu` wird nur auf dem Server aufgerufen, daher rufen wir den serverseitigen Konstruktor auf und übergeben `this` (die Block-Entität) als Container-Parameter.
74+
75+
:::
76+
77+
## Die Oberfläche erstellen {#creating-the-screen}
78+
79+
Um tatsächlich den Inhalt des Containers auf dem Client anzuzeigen, müssen wir außerdem eine Oberfläche für unser Menü erstellen.
80+
Wir werden eine neue Klasse erstellen, welche von `AbstractContainerScreen` erbt:
81+
82+
@[code transcludeWith=:::screen](@/reference/latest/src/client/java/com/example/docs/rendering/screens/inventory/DirtChestScreen.java)
83+
84+
Als Hintergrund für diese Oberfläche verwenden wir einfach die Standardtextur der Werfer-Oberfläche, da unsere Erdkiste dasselbe Slot-Layout verwendet. Du könntest alternativ deine eigene Textur für `CONTAINER_TEXTURE` bereitstellen.
85+
86+
Da es sich hierbei um eine Oberfläche für ein Menü handelt, müssen wir es außerdem auf dem Client mit der Methode `MenuScreens#register()` registrieren:
87+
88+
@[code transcludeWith=:::registerScreens](@/reference/latest/src/client/java/com/example/docs/ExampleModScreens.java)
89+
90+
Wenn du dein Spiel geladen hast, solltest du nun eine Erdkiste haben, die du mit einem Rechtsklick öffnen kannst, um ein Menü aufzurufen und Items darin zu verstauen.
91+
92+
![Menü einer Erdkiste im Spiel](/assets/develop/blocks/container_menus_0.png)

translated/de_de/develop/data-generation/translations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Um die Einrichtung abzuschließen, füge den Provider zu deinem `DataGeneratorEn
3939

4040
## Erstellen von Übersetzungen {#creating-translations}
4141

42-
Neben der Erstellung von Rohübersetzungen, Übersetzungen aus einem `Identifier` und dem Kopieren aus einer bereits existierenden Datei (durch die Übergabe eines `Path`), gibt es Hilfsmethoden für die Übersetzung von Items, Blöcken, Tags, Statistiken, Entitäten, Statuseffekten, Kreativtabs, Entitätsattributen und Verzauberungen. Rufe einfach `add` beim `translationBuilder` auf und gebe an, was du übersetzen willst und in zu was es übersetzt werden soll:
42+
Neben der Erstellung von Rohübersetzungen, Übersetzungen aus einem `Identifier`en und dem Kopieren aus einer bereits existierenden Datei (durch die Übergabe eines `Path`), gibt es Hilfsmethoden für die Übersetzung von Items, Blöcken, Tags, Statistiken, Entitäten, Mobeffekten, Kreativtabs, Entitätsattributen und Verzauberungen. Rufe einfach `add` beim `translationBuilder` auf und gebe an, was du übersetzen willst und in zu was es übersetzt werden soll:
4343

4444
@[code lang=java transcludeWith=:::datagen-translations:build](@/reference/latest/src/client/java/com/example/docs/datagen/ExampleModEnglishLangProvider.java)
4545

translated/de_de/develop/entities/effects.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ effect give @p example-mod:tater
6767

6868
:::
6969

70-
Um einen Effekt intern anzuwenden, sollte man die Methode `LivingEntity#addEffect` verwenden, die eine
71-
eine `MobEffectInstance` entgegennimmt und einen boolean zurückgibt, der angibt, ob der Effekt erfolgreich angewendet wurde.
70+
Um einen Effekt intern anzuwenden, solltest du die Methode `LivingEntity#addEffect` verwenden, die eine `MobEffectInstance` entgegennimmt und einen boolean zurückgibt, der angibt, ob der Effekt erfolgreich angewendet wurde.
7271

7372
@[code lang=java transcludeWith=:::1](@/reference/latest/src/main/java/com/example/docs/ReferenceMethods.java)
7473

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
title: Spielregeln
3+
description: Ein Leitfaden zum Hinzufügen benutzerdefinierter Spielregeln.
4+
authors:
5+
- cassiancc
6+
- Jummit
7+
- modmuss50
8+
- Wind292
9+
authors-nogithub:
10+
- mysterious_dev
11+
- solacekairos
12+
---
13+
14+
<!---->
15+
16+
:::info VORAUSSETZUNGEN
17+
18+
Möglicherweise möchtest du zunächst die [Generierung von Übersetzungen](./data-generation/translations) abschließen, dies ist jedoch nicht erforderlich.
19+
20+
:::
21+
22+
Spielregeln verhalten sich wie weltenspezifische Konfigurationsoptionen, die der Spieler während des Spiels mit einem Befehl ändern kann. Diese Variablen steuern in der Regel bestimmte Funktionen der Welt, zum Beispiel steuern `pvp`, `spawn_monsters` und `advance_time`, ob PvP aktiviert ist, Monster erscheinen und ob die Zeit verstreicht.
23+
24+
## Eine Spielregel erstellen {#creating-a-game-rule}
25+
26+
Um eine benutzerdefinierte Spielregel zu erstellen, erstelle zunächst eine Klasse `GameRules`; dort werden wir unsere Spielregeln definieren. In dieser Klasse, deklariere zwei Konstanten: Eine Bezeichnung für die Spielregel und die Regel selbst.
27+
28+
@[code lang=java transcludeWith=:::gameruleClass](@/reference/latest/src/main/java/com/example/docs/gamerule/ExampleModGameRules.java)
29+
30+
Das Argument der Kategorie (`.category(GameRuleCategory.MISC)`) legt fest, unter welche Kategorie die Spielregel in der Oberfläche zur Welterstellung fällt. Dieses Beispiel verwendet die durch Vanilla bereitgestellte Kategorie Verschiedenes, aber zusätzliche Kategorien können über `GameRuleCategory.register` hinzugefügt werden. In diesem Beispiel haben wir eine boolsche Spielregel mit dem Standardwert `false` und der ID `bad_vision` erstellt. Die in Spielregeln gespeicherten Werte sind nicht auf boolesche Werte beschränkt; weitere zulässige Typen sind `Double`s, `Integer`s und `Enum`s.
31+
32+
Beispiel einer Spielregel, die einen double speichert:
33+
34+
@[code lang=java transcludeWith=:::double](@/reference/latest/src/main/java/com/example/docs/gamerule/ExampleModGameRules.java)
35+
36+
## Auf eine Spielregel zugreifen {#accessing-a-game-rule}
37+
38+
Da wir jetzt eine Spielregel und deren `Identifier` haben, kannst du überall mit der Methode `serverLevel.getGameRules().get(GAMERULE)` darauf zugreifen, wobei das Argument für `.get()` deine Spielregelkonstante ist und nicht die ID der Spielregel.
39+
40+
@[code lang=java transclude={44-44}](@/reference/latest/src/main/java/com/example/docs/gamerule/ExampleModGameRules.java)
41+
42+
Du kannst dies auch verwenden, um auf die Werte von Vanilla Spielregeln zuzugreifen:
43+
44+
@[code lang=java transcludeWith=:::vanilla](@/reference/latest/src/main/java/com/example/docs/gamerule/ExampleModGameRules.java)
45+
46+
Beispielsweise würde die Implementierung für eine Regel, die bei dem Wert true allen Spielern Blindheit gibt, wie folgt aussehen:
47+
48+
@[code lang=java transcludeWith=:::badvision](@/reference/latest/src/main/java/com/example/docs/gamerule/ExampleModGameRules.java)
49+
50+
## Übersetzungen {#translations}
51+
52+
Jetzt müssen wir unserer Spielregel einen Anzeigenamen geben, damit sie in der Oberfläche für Spielregeln leicht verständlich ist. Um dies über die Datengenerierung zu erledigen, füge die folgenden Zeilen zu deinem Sprach-Provider hinzu:
53+
54+
@[code lang=java transcludeWith=:::gamerule-name](@/reference/latest/src/client/java/com/example/docs/datagen/ExampleModEnglishLangProvider.java)
55+
56+
Zuletzt müssen wir unserer Spielregel eine Beschreibung hinzufügen. Um dies über die Datengenerierung zu erledigen, füge die folgenden Zeilen zu deinem Sprach-Provider hinzu:
57+
58+
@[code lang=java transcludeWith=:::gamerule-description](@/reference/latest/src/client/java/com/example/docs/datagen/ExampleModEnglishLangProvider.java)
59+
60+
::: info
61+
62+
Diese Übersetzungsschlüssel werden bei der Anzeige von Text in der Oberfläche für Spielregeln verwendet. Wenn du die automatische Datengenerierung nicht verwendest, kannst du diese auch manuell in deiner Datei `assets/example-mod/lang/en_us.json` eintragen.
63+
64+
```json
65+
"example-mod.bad_vision": "Bad Vision",
66+
"gamerule.example-mod.bad_vision": "Gives every player the blindness effect",
67+
```
68+
69+
:::
70+
71+
## Spielregeln im Spiel ändern {#changing-game-rules-in-game}
72+
73+
Jetzt solltest du in der Lage sein, den Wert deiner Regel im Spiel mit dem Befehl `/gamerule` wie folgt zu ändern:
74+
75+
```mcfunction
76+
/gamerule example-mod:bad_vision true
77+
```
78+
79+
Die Spielregel wird nun auch in der Kategorie Verschiedenes in der Oberfläche Spielregeln bearbeiten angezeigt.
80+
81+
![Die Oberfläche zur Welterstellung mit der Spielregel Bad Vision](/assets/develop/game-rules/world-creation.png)

translated/de_de/develop/getting-started/vscode/tips-and-tricks.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ prev:
99
next: false
1010
---
1111

12-
Es ist wichtig zu lernen, wie man die Generierung des Quellcodes durchläuft, damit du debuggen und ein Verständnis für die inneren Abläufe von Minecraft entwickeln kannst. Hier beschreiben wir einige gängige Anwendungen der Entwicklungsumgebung.
12+
Es ist wichtig zu lernen, wie man die generierten Quellen durchläuft, damit man Debuggen und ein Verständnis für die inneren Abläufe von Minecraft entwickeln kann. Hier beschreiben wir einige gängige Anwendungen der Entwicklungsumgebung.
1313

1414
## Nach einer Minecraft-Klasse suchen {#searching-for-a-minecraft-class}
1515

translated/de_de/develop/items/food.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Die Klasse `FoodProperties.Builder` hat einige Methoden, mit denen du ändern ka
3333

3434
Wenn du den Builder nach deinen Wünschen verändert hast, kannst du die Methode `build()` aufrufen, um den `FoodProperties` zu erhalten.
3535

36-
Wenn du dem Spieler Statuseffekte hinzufügen möchtest, wenn er dein Essen isst, musst du die Klasse `Consumable` neben der Klasse `FoodProperties` verwenden, wie im folgenden Beispiel zu sehen ist:
36+
Wenn du dem Spieler Mobeffekte hinzufügen möchtest, wenn er dein Essen isst, musst du die Komponente `Consumable` neben der Komponente `FoodProperties` hinzufügen, wie im folgenden Beispiel zu sehen ist:
3737

3838
@[code transcludeWith=:::5](@/reference/latest/src/main/java/com/example/docs/item/ModItems.java)
3939

translated/de_de/develop/loom/tasks.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ tasks.register("enigma", net.fabricmc.loom.task.tool.ModEnigmaTask) {
6363
Der `net.fabricmc.loom.task.ValidateMixinNameTask` ist eine Aufgabe, die verwendet werden kann, um zu überprüfen, ob der Name der Mixin-Klasse mit dem Namen der Zielklasse übereinstimmt.
6464

6565
```groovy
66-
tasks.register('validateMixinNames', net.fabricmc.loom.task.ValidateMixinNameTask) {
67-
source(sourceSets.main.output)
68-
}
66+
tasks.register('validateMixinNames', net.fabricmc.loom.task.ValidateMixinNameTask) {
67+
source(sourceSets.main.output)
68+
}
6969
70-
check.dependsOn "validateMixinNames"
70+
check.dependsOn "validateMixinNames"
7171
```

translated/de_de/develop/networking.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ Eine ähnliche Methode existiert, um Client-to-Server Payloads zu registrieren:
8989

9090
### Senden eines Pakets an den Client {#sending-a-packet-to-the-client}
9191

92-
Um ein Paket mit unserem benutzerdefinierten Payload zu senden, können wir `ServerPlayNetworking.send` verwenden, das eine `ServerPlayerEntity` und einen `CustomPayload` entgegennimmt.
92+
Um ein Paket mit unserem benutzerdefinierten Payload zu senden, können wir `ServerPlayNetworking.send` verwenden, das einen `ServerPlayer` und einen `CustomPayload` entgegennimmt.
9393

9494
Beginnen wir mit der Erstellung unseres Blitz-Kartoffel-Item. Du kannst `use` überschreiben, um eine Aktion auszulösen, wenn das Item verwendet wird.
9595
In diesem Fall, lasst uns Pakete an die Spieler in den Serverlevel senden.

translated/de_de/sidebar_translations.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"develop.blocks.block_entities": "Block Entitäten",
2929
"develop.blocks.block_entity_renderer": "Block Entität Renderer",
3030
"develop.blocks.block_containers": "Blockcontainer",
31+
"develop.blocks.container_menus": "Containermenüs",
3132
"develop.blocks.transparency_and_tinting": "Transparenz und Färbung",
3233
"develop.entities": "Entitäten",
3334
"develop.entities.effects": "Mobeffekte",
@@ -71,6 +72,7 @@
7172
"develop.misc.codecs": "Codecs",
7273
"develop.misc.data_attachments": "Datenanhänge",
7374
"develop.misc.events": "Events",
75+
"develop.misc.game_rules": "Spielregeln",
7476
"develop.misc.networking": "Networking",
7577
"develop.misc.key_mappings": "Tastenbelegung",
7678
"develop.misc.saved_data": "Gespeicherte Daten",

0 commit comments

Comments
 (0)