🇩🇪 Deutsch (German)
🇩🇪 Deutsch (German)
Erscheinungsbild
🇩🇪 Deutsch (German)
🇩🇪 Deutsch (German)
Erscheinungsbild
This page is written for:
1.21
This page is written for:
1.21
Schadensarten definieren die Arten von Schaden, die Entitäten erleiden können. Seit Minecraft 1.19.4 ist die Erstellung neuer Schadensarten datengesteuert, das heißt sie werden mithilfe von JSON-Dateien erstellt.
Lass uns eine benutzerdefinierte Schadensart mit dem Namen Tater erstellen. Wir beginnen mit der Erstellung einer JSON-Datei für deinen benutzerdefinierten Schaden. Diese Datei wird im data
-Verzeichnis deines Mods in einem Unterverzeichnis mit dem Namen damage_type
abgelegt.
resources/data/fabric-docs-reference/damage_type/tater.json
Sie hat folgende Struktur:
{
"exhaustion": 0.1,
"message_id": "tater",
"scaling": "when_caused_by_living_non_player"
}
Diese benutzerdefinierte Schadensart verursacht jedes Mal, wenn ein Spieler Schaden erleidet, einen Anstieg von 0,1 an Erschöpfung, wenn der Schaden von einer lebenden Nicht-Spieler-Quelle (z.B. Weiterhin skaliert sich die Höhe des verursachten Schadens mit dem Schwierigkeitsgrad der Welt.
INFO
Im Minecraft Wiki findest du alle möglichen Schlüssel und Werte.
Wenn wir über den Code auf unsere benutzerdefinierte Schadensart zugreifen müssen, verwenden wir seinen RegistryKey
, um eine Instanz von DamageSource
zu erstellen.
Der RegistryKey
kann wie folgt ermittelt werden:
public static final RegistryKey<DamageType> TATER_DAMAGE = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Identifier.of("fabric-docs-reference", "tater"));
Um die Verwendung von benutzerdefinierten Schadensarten zu demonstrieren, werden wir einen benutzerdefinierten Block mit dem Namen Tater-Block verwenden. Wenn eine lebende Entität auf einen Tater-Block tritt, verursacht er Tater Schaden.
Du kannst onSteppedOn
überschreiben, um diesen Schaden zu zuzufügen.
Wir beginnen mit der Erstellung einer DamageSource
unserer benutzerdefinierten Schadensart.
DamageSource damageSource = new DamageSource(
world.getRegistryManager()
.get(RegistryKeys.DAMAGE_TYPE)
.entryOf(FabricDocsReferenceDamageTypes.TATER_DAMAGE));
Dann rufen wir entity.damage()
mit unserer DamageSource
und einem Betrag auf.
entity.damage(damageSource, 5.0f);
Die vollständige Implementierung des Blocks:
public class TaterBlock extends Block {
public TaterBlock(Settings settings) {
super(settings);
}
@Override
public void onSteppedOn(World world, BlockPos pos, BlockState state, Entity entity) {
if (entity instanceof LivingEntity) {
DamageSource damageSource = new DamageSource(
world.getRegistryManager()
.get(RegistryKeys.DAMAGE_TYPE)
.entryOf(FabricDocsReferenceDamageTypes.TATER_DAMAGE));
entity.damage(damageSource, 5.0f);
}
}
}
Wenn nun eine lebende Entität auf unseren benutzerdefinierten Block tritt, erleidet sie mit unserer benutzerdefinierten Schadensart 5 Schaden (2,5 Herzen).
Du kannst eine Todesnachricht für die Schadensart im Format death.attack.<message_id>
in der Datei en_us.json
unseres Mods definieren.
"item.minecraft.potion.effect.tater": "Tater Potion",
Beim Tod durch unsere Schadensart wirst du die folgende Todesnachricht sehen:
Einige Schadensarten können Rüstung, Statuseffekte usw. Tags werden verwendet, um diese Art von Eigenschaften von Schadensarten zu kontrollieren.
Vorhandene Schadensarten-Tags kannst du in data/minecraft/tags/damage_type
finden.
INFO
Im Minecraft Wiki kannst du eine umfassende Liste der Schadensarten-Tags finden.
Fügen wir unsere Tater-Schadensart dem Schadensart-Tag bypasses_armor
hinzu.
Um unsere Schadensart zu einem dieser Tags hinzuzufügen, erstellen wir eine JSON-Datei im Namespace minecraft
.
data/minecraft/tags/damage_type/bypasses_armor.json
Mit folgendem Inhalt:
{
"replace": false,
"values": [
"fabric-docs-reference:tater"
]
}
Stelle sicher, dass dein Tag das bestehende Tag nicht ersetzt, indem du den Schlüssel replace
auf false
setzt.