(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
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.
** 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. ** 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.
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! ** **
Création de Minecraft 1.14.4 Forge Mod, partie 7 [Ajout d'une armure]
[^ 1]: Valeur liée à la réduction des dégâts. Référence
Recommended Posts