[Java] Créons un Minecraft Mod 1.14.4 [5. Ajouter une armure]

(Cet article fait partie d'une série d'articles de commentaires)

Premier article: Introduction Article précédent: 4. Ajouter des outils Article suivant: 6. Ajouter des recettes

Ajouter une armure

Dans 4. Ajout d'outils, des outils comprenant des épées ont été ajoutés. La prochaine chose que je veux après avoir obtenu une arme est une armure! Ajoutons une armure cette fois.

ItemList.java


//...
public class ItemList {
    public static Item ExampleHelmet = new ArmorItem(ArmorMaterial.IRON, EquipmentSlotType.HEAD, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_helmet"));
    public static Item ExampleChestplate = new ArmorItem(ArmorMaterial.IRON, EquipmentSlotType.CHEST, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_chestplate"));
    public static Item ExampleLeggings = new ArmorItem(ArmorMaterial.IRON, EquipmentSlotType.LEGS, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_leggings"));
    public static Item ExampleBoots = new ArmorItem(ArmorMaterial.IRON, EquipmentSlotType.FEET, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_boots"));

    @SubscribeEvent
    public static void registerItems(RegistryEvent.Register<Item> event) {
        event.getRegistry().registerAll(
                ExampleHelmet,
                ExampleChestplate,
                ExampleLeggings,
                ExampleBoots
        );
    }
}

Cette fois, au lieu de créer une classe séparée, déclarez la classe ʻArmorItem directement dans ʻItemList. Les arguments sont, dans l'ordre, le matériau, l'emplacement de l'emplacement et les propriétés de l'élément.


Je vais faire des réglages détaillés.

\src\main\resources\assets\example_mod
   ├ blockstates
   ├ lang
   │  └ en_us.json
   │  └ ja_jp.json
   ├ models
   │  ├ block
   │  └ item
   │     ├ example_helmet.json
   │     ├ example_chestplate.json
   │     ├ example_leggings.json
   │     └ example_boots.json
   └ textures
      ├ blocks
      └ items
         ├ example_helmet.png
         ├ example_chestplate.png
         ├ example_leggings.png
         └ example_boots.png

en_us.json


{
  "item.example_mod.example_helmet": "Example Helmet",
  "item.example_mod.example_chestplate": "Example Chestplate",
  "item.example_mod.example_leggings": "Example Leggings",
  "item.example_mod.example_boots": "Example Boots"
}

ja_jp.json


{
  "item.example_mod.example_helmet": "Exemple de casque",
  "item.example_mod.example_chestplate": "Exemple de plaque thoracique",
  "item.example_mod.example_leggings": "Exemple de leggings",
  "item.example_mod.example_boots": "Exemple de bottes"
}

example_helmet.json


{
  "parent": "item/generated",
  "textures": {
    "layer0": "example_mod:items/example_helmet"
  }
}

example_chestplate.json


{
  "parent": "item/generated",
  "textures": {
    "layer0": "example_mod:items/example_chestplate"
  }
}

example_leggings.json


{
  "parent": "item/generated",
  "textures": {
    "layer0": "example_mod:items/example_leggings"
  }
}

example_boots.json


{
  "parent": "item/generated",
  "textures": {
    "layer0": "example_mod:items/example_boots"
  }
}

Commençons le jeu. キャプチャ.PNG キャプチャ2.PNG ** Je ne peux pas ajouter d'armure ... Je ne peux pas! !! ** ** Quand je l'ai mis, cela ressemblait à une armure de fer (en plus de cela, le statut et les matériaux de réparation sont en fait comme une armure de fer). C'est parce que ʻArmorMaterial.IRON est passé comme matériau de ʻArmorItem.


Définissons un matériau nouveau et unique, comme nous l'avons fait avec l'outil.

\src\main\java\jp\koteko\example_mod\
   ├ items
   │   └ ExampleArmorMaterial.java
   ├ lists
   ├ ExampleItemGroup.java
   └ ExampleMod.java

ExampleArmorMaterial.java


package jp.koteko.example_mod.items;

import jp.koteko.example_mod.ExampleMod;
import jp.koteko.example_mod.lists.ItemList;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.IArmorMaterial;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.LazyLoadBase;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.SoundEvents;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

import java.util.function.Supplier;

public enum ExampleArmorMaterial implements IArmorMaterial {
    EXAMPLE("example", 66, new int[]{3, 6, 8, 3}, 30, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 3.0F, () -> {
        return Ingredient.fromItems(ItemList.ExampleIngot);
    });

    private static final int[] MAX_DAMAGE_ARRAY = new int[]{13, 15, 16, 11};
    private final String name;
    private final int maxDamageFactor;
    private final int[] damageReductionAmountArray;
    private final int enchantability;
    private final SoundEvent soundEvent;
    private final float toughness;
    private final LazyLoadBase<Ingredient> repairMaterial;

    private ExampleArmorMaterial(String nameIn, int maxDamageFactorIn, int[] damageReductionAmountsIn, int enchantabilityIn, SoundEvent equipSoundIn, float toughnessIn, Supplier<Ingredient> repairMaterialSupplier) {
        this.name = nameIn;
        this.maxDamageFactor = maxDamageFactorIn;
        this.damageReductionAmountArray = damageReductionAmountsIn;
        this.enchantability = enchantabilityIn;
        this.soundEvent = equipSoundIn;
        this.toughness = toughnessIn;
        this.repairMaterial = new LazyLoadBase<>(repairMaterialSupplier);
    }

    public int getDurability(EquipmentSlotType slotIn) {
        return MAX_DAMAGE_ARRAY[slotIn.getIndex()] * this.maxDamageFactor;
    }

    public int getDamageReductionAmount(EquipmentSlotType slotIn) {
        return this.damageReductionAmountArray[slotIn.getIndex()];
    }

    public int getEnchantability() {
        return this.enchantability;
    }

    public SoundEvent getSoundEvent() {
        return this.soundEvent;
    }

    public Ingredient getRepairMaterial() {
        return this.repairMaterial.getValue();
    }

    @OnlyIn(Dist.CLIENT)
    public String getName() {
        return ExampleMod.MOD_ID + ":" + this.name;
    }

    public float getToughness() {
        return this.toughness;
    }
}

name: nom interne maxDamageFactor: coefficient de durabilité de base MAX_DAMAGE_ARRAY: valeur de durabilité pour chaque pièce damageReductionAmountArray: puissance défensive pour chaque partie ʻEnchantability: Efficacité d'enchantement soundEvent: son lorsqu'il est connecté ténacité: force d'armure [^ 1] repairMaterial`: Matériel de réparation

** [Valeur de durabilité de chaque pièce] = [maxDamageFactor] × [MAX_DAMAGE_ARRAY [part]] **

J'ai essayé de le rendre plus fort que le diamant. Remplacez le matériau d'armure par celui-ci.

ItemList.java


//...
public class ItemList {
    public static Item ExampleHelmet = new ArmorItem(ExampleArmorMaterial.EXAMPLE, EquipmentSlotType.HEAD, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_helmet"));
    public static Item ExampleChestplate = new ArmorItem(ExampleArmorMaterial.EXAMPLE, EquipmentSlotType.CHEST, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_chestplate"));
    public static Item ExampleLeggings = new ArmorItem(ExampleArmorMaterial.EXAMPLE, EquipmentSlotType.LEGS, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_leggings"));
    public static Item ExampleBoots = new ArmorItem(ExampleArmorMaterial.EXAMPLE, EquipmentSlotType.FEET, new Item.Properties().group(ExampleItemGroup.DEFAULT))
            .setRegistryName(new ResourceLocation(ExampleMod.MOD_ID, "example_boots"));
//...
}

Lancer le jeu. キャプチャ.PNG ** Un monstre est né. ** La texture n'est pas définie.

\src\main\resources\assets\example_mod
   ├ blockstates
   ├ lang
   ├ models
   └ textures
      ├ blocks
      ├ items
      └ models
         └ armor
            ├ example_layer_1.png
            └ example_layer_2.png

Créez un dossier appelé \ assets \ example_mod \ textures \ models \ armor et placez [nom interne du matériau] _layer_1.png et [nom interne du matériau] _layer_2.png. Faisons référence à la texture de l'armure vanille. キャプチャ.PNG C'est un peu difficile à comprendre à cause de la couleur de diamant, mais la texture est correctement reflétée. Vous pouvez également voir que la valeur de durabilité est 66 * 13 = 858.

Cette fois ** nous avons ajouté une armure! ** **

référence

Création de Minecraft 1.14.4 Forge Mod, partie 7 [Ajout d'une armure]

Article suivant

6. Ajouter une recette

[^ 1]: Valeur liée à la réduction des dégâts. Référence

Recommended Posts

[Java] Créons un Minecraft Mod 1.14.4 [5. Ajouter une armure]
[Java] Créons un Minecraft Mod 1.14.4 [7. Add progress]
[Java] Créons un Minecraft Mod 1.14.4 [6. Ajouter une recette]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un élément]
[Java] Créons un Minecraft Mod 1.14.4 [1. Ajouter un élément]
[Java] Créons un Minecraft Mod 1.14.4 [2. Ajouter un bloc]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un bloc]
[Java] Créons un Minecraft Mod 1.14.4 [3. Ajouter un onglet de création]
[Java] Créons un Minecraft Mod 1.14.4 [Introduction]
[Java] Créons un Minecraft Mod 1.16.1 [Introduction]
[Java] Créons un Minecraft Mod 1.14.4 [99. Mod output]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter et générer des arbres]
[Java] Créons un Minecraft Mod 1.14.4 [9. Ajouter et générer des arbres]
[Java] Créons un Minecraft Mod 1.14.4 [8. Ajouter et générer du minerai]
[Java] Créons un Minecraft Mod 1.14.4 [édition supplémentaire]
[Java] Créons un Minecraft Mod 1.16.1 [Fichier de base]
Créons un environnement de développement Java (mise à jour)
Créons un processus chronométré avec la minuterie de Java! !!
Créons un framework Web ultra-simple avec Java
[Java] Créer un filtre
[Bases de Java] Créons un triangle avec une instruction for
Créer une méthode java [Memo] [java11]
[Java] Créer un fichier temporaire
Comment créer une image de conteneur légère pour les applications Java
[Java twig] Créer un combinateur d'analyseur pour l'analyse syntaxique de descente récursive
Création d'un MOB à l'aide du plug-in Minecraft Java Mythicmobs | Préparation 1
Créons une application TODO en Java 4 Implémentation de la fonction de publication
Comment signer Minecraft MOD
Créons une application TODO en Java 6 Implémentation de la fonction de recherche
Créons une application TODO en Java 8 Implémentation des fonctions d'édition
Créer un projet Java à l'aide d'Eclipse
Créons une application TODO avec Java 1 Brève explication de MVC
Créons une application TODO en Java 5 Changer l'affichage de TODO
Créer un serveur fluentd pour les tests
Installons Docker sur Windows 10 et créons un environnement de vérification pour CentOS 8!
[Java twig] Créer un combinateur d'analyseur pour une analyse de syntaxe descendante récursive (également prendre des notes)
Allons-y avec Watson Assistant (anciennement Conversation) ⑤ Créez un chatbot avec Watson + Java + Slack
Créer un environnement de développement d'applications Web Java avec Docker pour Mac Part2
[Java] Créer et appliquer un masque des diapositives
Comment créer un référentiel Maven pour 2020
Créer une application TODO dans Java 7 Créer un en-tête
[Java] Créons une bibliothèque d'accès à la base de données!
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Java (add2)
Java (ajouter)
Créons une bibliothèque d'opérations de stockage de fichiers polyvalente (?) En faisant abstraction du stockage / acquisition de fichiers avec Java
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
Comment créer une base de données H2 n'importe où
Une histoire sur la prise en charge de Java 11 pour les services Web
Créer un CSR avec des informations étendues en Java
Créez un tableau d'affichage simple avec Java + MySQL
Créons une API REST à l'aide de WildFly Swarm.
[Java] Créez quelque chose comme une API de recherche de produits
Essayez de créer un babillard en Java
Comment créer des pages pour le tableau "kaminari"
Créer un onglet personnalisé avec SwiftUI 2.0
[Java] Créer une collection avec un seul élément