🇩🇪 Deutsch (German)
🇩🇪 Deutsch (German)
Erscheinungsbild
🇩🇪 Deutsch (German)
🇩🇪 Deutsch (German)
Erscheinungsbild
Diese Seite ist für folgende Version geschrieben:
1.21.4
Diese Seite ist für folgende Version geschrieben:
1.21.4
Die Rüstung bietet dem Spieler eine bessere Verteidigung gegen Angriffe von Mobs und anderen Spielern.
Technisch gesehen brauchst du keine eigene Klasse für dein Rüstungsmaterial, aber bei der Anzahl an statischen Felder, die du benötigst, ist es auf jeden Fall eine gute Praxis.
Für dieses Beispiel werden wir eine Klasse GuiditeArmorMaterial
erstellen, um unsere statischen Felder zu speichern.
Diese Konstante wird in der Methode Item.Settings#maxDamage(int damageValue)
verwendet, wenn wir unsere Rüstungsitems erstellen. Sie wird auch als Parameter im Konstruktor ArmorMaterial
benötigt, wenn wir später unser ArmorMaterial
-Objekt erstellen.
public static final int BASE_DURABILITY = 15;
Wenn du Schwierigkeiten hast, eine ausgewogene Grundhaltbarkeit zu bestimmen, kannst du dich an den Instanzen der Vanilla-Rüstungsmaterialien orientieren, die du in dem Interface ArmorMaterials
findest.
Obwohl wie unser ArmorMaterial
nirgendwo registrieren müssen, sollte man generell alle Registerschlüssel als Konstanten speichern, da das Spiel diese nutzen wird, um die relevanten Texturen für unsere Rüstung zu finden.
public static final RegistryKey<EquipmentAsset> GUIDITE_ARMOR_MATERIAL_KEY = RegistryKey.of(EquipmentAssetKeys.REGISTRY_KEY, Identifier.of(FabricDocsReference.MOD_ID, "guidite"));
Wir werden dies später an den Konstruktor ArmorMaterial
übergeben.
ArmorMaterial
Instanz Um unser Material zu erstellen, müssen wir eine neue Instanz des ArmorMaterial
-Record erstellen, wobei die Grundhaltbarkeit und die Konstanten der Material-Registrierungsschlüssel hier verwendet werden.
public static final ArmorMaterial INSTANCE = new ArmorMaterial(
BASE_DURABILITY,
Map.of(
EquipmentType.HELMET, 3,
EquipmentType.CHESTPLATE, 8,
EquipmentType.LEGGINGS, 6,
EquipmentType.BOOTS, 3
),
5,
SoundEvents.ITEM_ARMOR_EQUIP_IRON,
0.0F,
0.0F,
REPAIRS_GUIDITE_ARMOR,
GUIDITE_ARMOR_MATERIAL_KEY
);
Der ArmorMaterial
-Konstruktor akzeptiert die folgenden Parameter, in dieser spezifischen Reihenfolge:
Parameter | Beschreibung |
---|---|
durability | Sie wird bei der Berechnung der Gesamthaltbarkeit jedes einzelnen Rüstungsteils verwendet, das dieses Material verwendet. Dies sollte die Basis-Haltbarkeitskonstante sein, die Sie zuvor erstellt haben. |
defense | Eine Map von EquipmentType (eine Aufzählung, die jeden Rüstungsplatz darstellt) zu einem ganzzahligen Wert, der den Verteidigungswert des Materials angibt, wenn es im entsprechenden Rüstungsplatz verwendet wird. |
enchantmentValue | Die "Verzauberbarkeit" von Rüstungsitems, die dieses Material verwenden. |
equipSound | Ein Registrierungsschlüssel für ein Sound-Event, das abgespielt wird, wenn man eine Rüstung aus diesem Material anlegt. Weitere Informationen zu Sounds findest du auf der Seite Custom Sounds. |
toughness | Ein Float-Wert, der das Attribut "Häte" des Rüstungsmaterials darstellt - im Wesentlichen, wie gut die Rüstung Schaden absorbiert. |
knockbackResistance | Ein Float-Wert, der den Grad der Rückstoßfestigkeit angibt, den das Rüstungsmaterial dem Träger gewährt. |
repairIngredient | Ein Item-Tag, das alle Items repräsentiert, die zur Reparatur von Rüstungsteilen aus diesem Material in einem Amboss verwendet werden können. |
assetId | Ein EquipmentAsset -Registrierungsschlüssel; dies sollte die zuvor erstellte Registrierungsschlüsselkonstante Rüstungsasset sein. |
Wenn du Schwierigkeiten hast, die Werte für einen der Parameter zu bestimmen, kannst du die Vanilla-Instanzen von ArmorMaterial
zu Rate ziehen, die in dem Interface ArmorMaterials
zu finden sind.
Nachdem du das Material registriert hast, kannst du die Rüstungsitems in deiner Klasse ModItems
erstellen:
Natürlich muss ein Rüstungsset nicht jeden Typ abdecken, man kann auch ein Set mit nur Stiefeln oder Hosen etc. haben. - Der Vanille-Schildkrötenpanzerhelm ist ein gutes Beispiel für ein Rüstungsset mit fehlenden Slots.
Im Gegensatz zu ToolMaterial
speichert ArmorMaterial
keine Informationen über die Haltbarkeit von Items. Aus diesem Grund muss die Grundhaltbarkeit manuell zu den Item.Settings
der Rüstungsgegenstände hinzugefügt werden, wenn diese registriert werden.
Dies wird erreicht, indem die Konstante BASE_DURABILITY
, die wir zuvor erstellt haben, an die Methode maxDamage
in der Klasse Item.Settings
übergeben wird.
public static final RegistryKey<Item> GUIDITE_HELMET_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_helmet"));
public static final Item GUIDITE_HELMET = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.HELMET, new Item.Settings().registryKey(GUIDITE_HELMET_KEY).maxDamage(EquipmentType.HELMET.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_HELMET_KEY);
public static final RegistryKey<Item> GUIDITE_CHESTPLATE_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_chestplate"));
public static final Item GUIDITE_CHESTPLATE = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.CHESTPLATE, new Item.Settings().registryKey(GUIDITE_CHESTPLATE_KEY).maxDamage(EquipmentType.CHESTPLATE.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_CHESTPLATE_KEY);
public static final RegistryKey<Item> GUIDITE_LEGGINGS_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_leggings"));
public static final Item GUIDITE_LEGGINGS = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.LEGGINGS, new Item.Settings().registryKey(GUIDITE_LEGGINGS_KEY).maxDamage(EquipmentType.LEGGINGS.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_LEGGINGS_KEY);
public static final RegistryKey<Item> GUIDITE_BOOTS_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_boots"));
public static final Item GUIDITE_BOOTS = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.BOOTS, new Item.Settings().registryKey(GUIDITE_BOOTS_KEY).maxDamage(EquipmentType.BOOTS.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_BOOTS_KEY);
Außerdem musst du die Items einer Itemgruppe hinzufügen, wenn du möchtest, dass sie über das kreative Inventar zugänglich sind.
Wie bei allen Items solltest du auch für diese Übersetzungsschlüssel erstellen.
Benutzerdefinierte Rüstung
Diese Texturen unterscheiden sich nicht von anderen Items - Du musst die Texturen erstellen und ein generisches Itemmodell erstellen, was in der Anleitung Erstellen des ersten Items behandelt wurde.
Als Beispiel dient das folgende Textur- und Modell-JSON als Referenz.
INFO
Du benötigst JSON-Modelldateien für alle Gegenstände, nicht nur für den Helm. Es ist das gleiche Prinzip wie bei anderen Itemmodellen.
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "fabric-docs-reference:item/guidite_helmet"
}
}
Wie du sehen kannst, sollten die Rüstungsitems im Spiel geeignete Modelle haben:
Wenn eine Entität deine Rüstung trägt, wird nichts angezeigt. Das liegt daran, dass dir die Texturen und die Definitionen der Rüstungsmodelle fehlen.
Es gibt zwei Schichten für die Rüstungstextur, beide müssen vorhanden sein.
Zuvor haben wir eine Konstante RegistryKey<EquipmentAsset>
mit dem Namen GUIDITE_ARMOR_MATERIAL_KEY
erstellt, die wir an unseren ArmorMaterial
-Konstruktor übergeben haben. Es wird empfohlen, die Textur ähnlich zu benennen, in unserem Fall also guidite.png
assets/mod-id/textures/entity/equipment/humanoid/guidite.png
- Enthält Oberkörper- und Stiefeltexturen.assets/mod-id/textures/entity/equipment/humanoid_leggings/guidite.png
- Enthält Hosentexturen.TIP
Wenn du von einer älteren Version des Spiels auf 1.21.4 aktualisierst, ist der Ordner humanoid
der Ort, an dem deine Rüstungstextur layer0.png
liegt, und der Ordner humanoid_leggings
ist der Ort, an dem deine Rüstungstextur layer1.png
liegt.
Als Nächstes musst du eine Definition für ein zugehöriges Ausrüstungsmodell erstellen. Diese gehören in den Ordner /assets/mod-id/equipment/
.
Die Konstante RegistryKey<EquipmentAsset>
, die wir zuvor erstellt haben, bestimmt den Namen der JSON-Datei. In diesem Fall wird es guidite.json
sein.
Da wir nur "Humanoide" Rüstungsteile (Helm, Brustpanzer, Hose, Stiefel usw.) hinzufügen wollen , werden die Definitionen der Ausrüstungsmodelle wie folgt aussehen:
{
"layers": {
"humanoid": [
{
"texture": "fabric-docs-reference:guidite"
}
],
"humanoid_leggings": [
{
"texture": "fabric-docs-reference:guidite"
}
]
}
}
Wenn die Texturen und die Definition des Rüstungsmodell vorhanden sind, solltest du in der Lage sein, deine Rüstung auf den Entitäten zu sehen, die sie tragen: