Je fabrique une armure personnalisée et, dans ma classe d'armure, j'obtiens cette erreur:
La méthode getArmorTexture (ItemStack, Entity, int, int) de type ArmorE doit remplacer ou implémenter une méthode de type supertype.
Pourquoi je reçois cette erreur?
Voici mon code:
Classe d'armure:
package com.domoq.EmeraldGear.armor;
import com.domoq.EmeraldGear.EmeraldGearMod;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
public class ArmorE extends ItemArmor {
public ArmorE(ArmorMaterial part2ArmorE, int part3, int part4) {
super(part2ArmorE, part3, part4);
this.setCreativeTab(CreativeTabs.tabCombat);
}
@Override
public String getArmorTexture(ItemStack stack, Entity entity, int slot, int type) {
if (stack.getItem() == EmeraldGearMod.EmeraldHelmet || stack.getItem() == EmeraldGearMod.EmeraldChest || stack.getIconIndex() == EmeraldGearMod.EmeraldBoots) {
return "emeraldgearmod:textures/models/armor/ArmorL1.png";
} else if (stack.getItem() == EmeraldGearMod.EmeraldLegs) {
return "emeraldgearmod:textures/models/armor/ArmorL2.png";
} else return null;
}
}
Partie de la classe principale:
//Armor Material
public static ArmorMaterial ArmorE = EnumHelper.addArmorMaterial("AEmerald", 29, new int[]{3, 7, 4, 2}, 25);
//Armor Items
public static Item EmeraldHelmet = new ArmorE(ArmorE, 2, 0).setUnlocalizedName("EmeraldHelmet").setTextureName("emeraldgearmod:emerald_helmet");
public static Item EmeraldChest = new ArmorE(ArmorE, 2, 1).setUnlocalizedName("EmeraldChest").setTextureName("emeraldgearmod:emerald_chestplate");
public static Item EmeraldLegs = new ArmorE(ArmorE, 2, 2).setUnlocalizedName("EmeraldLegs").setTextureName("emeraldgearmod:emerald_leggings");
public static Item EmeraldBoots = new ArmorE(ArmorE, 2, 3).setUnlocalizedName("EmeraldBoots").setTextureName("emeraldgearmod:emerald_boots");
Pour remplacer une méthode, la signature doit correspondre à celle de super class . Remplacer
public String getArmorTexture(ItemStack stack, Entity entity, int slot, int type) {
avec
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
Si vous utilisez Eclipse, essayez de le fermer et de le rouvrir. L'erreur disparaît.
Cela signifie que vous n'avez pas besoin de l'annotation de substitution, car vous n'effectuez aucune substitution ni aucune implémentation dans cette méthode. Par conséquent, vous devez simplement supprimer
@Override
Dans votre interface définie, ItemArmor supprime tout type générique entre crochets angulaires.
Si vous travaillez sur Java Spring Framework, vous devez alors utiliser les annotations en écrivant <context:annotation-config/>
dans votre fichier i.e config.xml
afin de pouvoir utiliser des annotations telles que @Override
, @Component
, @Value
, etc.
Cliquez avec le bouton droit de la souris sur votre package et créez un fichier .xml (i.e config.xml) à configurer s'il n'existe pas.
et Ajoutez le code suivant à l'intérieur.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- This allows annotations -->
<context:annotation-config />
</beans>