Créer une armure
-
Évite les null-check, c’est inutile sur NonNullList comme t’indique eclipse.
-
@‘Plaigon’:
Évite les null-check, c’est inutile sur NonNullList comme t’indique eclipse.
Désolé de te déranger mais je ne comprend pas la marche à suivre pour que cette fonction marche j’ai essayé de ne pas mettre le selecteur et je n’ai plus d’erreur c même eclipse qui me propose via l’ampoule d’ajouter un nulle check puis ensuite ça me dit de l’enlever je ne comprend pas le fonctionnement de cette fonction
-
En fait, en 1.11, les ItemStack[] ont été remplacé par des NonNullList<itemstack>, qui ont plusieurs différences : on ne peut pas utiliser les crochets pour sélectionner un objet, mais on doit utiliser la fonction get. De plus, comme son nom l’indique, les ItemStack ne peuvent plus être null. Il faut donc remplacer
if(player.inventory.armorInventory[0] != null)
par
if(!player.inventory.armorInventory.get(0).isEmpty()) ```</itemstack>
-
Un grand merci à toi @Plaigon pour ta patience et à toi @LeBossMax2 pour ta réponse je n’étais pas au courant de ce changement !
EDIT: l’erreur persiste je vais essayer de voir si je trouve une solution c’est le .get(0) qui cause le problème -
@‘LeBossMax2’:
En fait, en 1.11, les ItemStack[] ont été remplacé par des NonNullList<itemstack>, qui ont plusieurs différences : on ne peut pas utiliser les crochets pour sélectionner un objet, mais on doit utiliser la fonction get. De plus, comme son nom l’indique, les ItemStack ne peuvent plus être null. Il faut donc remplacer
if(player.inventory.armorInventory[0] != null)
par
if(!player.inventory.armorInventory.get(0).isEmpty()) ```</itemstack>
Je viens d’essayer ta méthode mais elle ne fonctionne pas non plus j’ai toujours des erreurs… je vais essayer d’autre chose pour essayer de faire marcher cette fonction
-
Salut
Sur mon mod 1.7.10 j’ai essayer de mettre les models plusieurs fois mais ça ne marche pas y pas d’erreur mais dans le jeu ça ma affiche pas les models et il y la texture du cuir blanc voila le code de la classpackage com.Project.Iriduim.Items; import com.Project.Iriduim.Reference; import com.Project.Iriduim.init.ItemMod; import com.sun.xml.internal.stream.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; public class IriduimArmor extends ItemArmor { public IriduimArmor(ArmorMaterial Material, int type) { super(Material, 0, type); } public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { if(stack.getItem() == ItemMod.IriduimLeggings) { return Reference.MOD_ID + ":textures/models/Armor/test_layer_2.png"; } return Reference.MOD_ID + ":textures/models/Armor/test_layer_1.png"; } public boolean getIsRepairable(ItemStack input, ItemStack repair) { if(repair.getItem() == ItemMod.IriduimIngot_) { return true; } return false; } public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 220, 0)); player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 220, 0)); } }
merci de me répondre
-
Salut,
Retires la ligne “import com.sun.xml.internal.stream.Entity;” et importes le bon Entity (celui dans net.minecraft.entity). -
Bonjour j’ai un problème :
J’ai créé 3 armures j’ai vérifié trois fois le code mais lorsque je vais en jeu je vois bien le nom modifié, la texture de l’item, mais je ne vois pas la texture sur le joueurVoici mon fichier Armor.java
package com.hypala.hypalacore.common; import com.sun.xml.internal.stream.Entity; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; public class Armor extends ItemArmor { public Armor(ArmorMaterial material, int type) { super(material, 0, type); } //Armures Textures public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { if(stack.getItem() == HypalaCore.leggingsLirium) { return HypalaCore.MODID + ":textures/models/armor/lirium_layer_2.png"; } if(stack.getItem() == HypalaCore.chestPlateLirium || stack.getItem() == HypalaCore.helmetLirium || stack.getItem() == HypalaCore.bootsLirium) { return HypalaCore.MODID + ":textures/models/armor/lirium_layer_1.png"; } if(stack.getItem() == HypalaCore.leggingsAithia) { return HypalaCore.MODID + ":textures/models/armor/aithia_layer_2.png"; } if(stack.getItem() == HypalaCore.chestPlateAithia || stack.getItem() == HypalaCore.helmetAithia || stack.getItem() == HypalaCore.bootsAithia) { return HypalaCore.MODID + ":textures/models/armor/aithia_layer_1.png"; } if(stack.getItem() == HypalaCore.leggingsIrist) { return HypalaCore.MODID + ":textures/models/armor/irist_layer_2.png"; } else if(stack.getItem() == HypalaCore.chestPlateIrist || stack.getItem() == HypalaCore.helmetIrist || stack.getItem() == HypalaCore.bootsIrist) { return HypalaCore.MODID + ":textures/models/armor/irist_layer_1.png"; } return ""; } }
Et voici ma classe principale :
package com.hypala.hypalacore.common; import com.hypala.hypalacore.proxy.CommonProxy; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraftforge.common.util.EnumHelper; @Mod(modid = "hypalacore", name = "HypalaCore", version = "1.0.0") public class HypalaCore { public static final String MODID = "hypalacore"; @Instance("hypalacore") public static HypalaCore instance; @SidedProxy(clientSide = "com.hypala.hypalacore.proxy.ClientProxy", serverSide = "com.hypala.hypalacore.proxy.CommonProxy") public static CommonProxy proxy; public static CreativeTabs tabHypalaCore; public static Item aithiaIngot, liriumIngot, iristIngot, mythicIngot, mythicFragment, helmetAithia, chestPlateAithia, leggingsAithia, bootsAithia; public static Item helmetLirium, chestPlateLirium, leggingsLirium, bootsLirium, helmetIrist, chestPlateIrist, leggingsIrist, bootsIrist; public static ArmorMaterial armorAithia = EnumHelper.addArmorMaterial("AITHIA", 30, new int[]{4, 9, 7, 4}, 20); public static ArmorMaterial armorLirium = EnumHelper.addArmorMaterial("LIRIUM", 40, new int[]{5, 10, 7, 5}, 25); public static ArmorMaterial armorIrist = EnumHelper.addArmorMaterial("IRIST", 50, new int[]{7, 10, 8, 7}, 15); @EventHandler public void preInit(FMLPreInitializationEvent event) { tabHypalaCore= new TabHypalaCore("HypalaCore").setBackgroundImageName("Menu"); //Armure Aithia helmetAithia = new Armor(armorAithia, 0).setUnlocalizedName("Aithia Helmet").setTextureName("hypalacore:aithia_helmet").setCreativeTab(tabHypalaCore); chestPlateAithia = new Armor(armorAithia, 1).setUnlocalizedName("Aithia Chestplate").setTextureName("hypalacore:aithia_chestplate").setCreativeTab(tabHypalaCore); leggingsAithia = new Armor(armorAithia, 2).setUnlocalizedName("Aithia Leggings").setTextureName("hypalacore:aithia_leggings").setCreativeTab(tabHypalaCore); bootsAithia = new Armor(armorAithia, 3).setUnlocalizedName("Aithia Boots").setTextureName("hypalacore:aithia_boots").setCreativeTab(tabHypalaCore); GameRegistry.registerItem(helmetAithia, "aithia_helmet"); GameRegistry.registerItem(chestPlateAithia, "aithia_chestplate"); GameRegistry.registerItem(leggingsAithia, "aithia_legging"); GameRegistry.registerItem(bootsAithia, "aithia_boots"); //Armure Lirium helmetLirium = new Armor(armorLirium, 0).setUnlocalizedName("Lirium Helmet").setTextureName("hypalacore:lirium_helmet").setCreativeTab(tabHypalaCore); chestPlateLirium = new Armor(armorLirium, 1).setUnlocalizedName("Lirium Chestplate").setTextureName("hypalacore:lirium_chestplate").setCreativeTab(tabHypalaCore); leggingsLirium = new Armor(armorLirium, 2).setUnlocalizedName("Lirium Leggings").setTextureName("hypalacore:lirium_leggings").setCreativeTab(tabHypalaCore); bootsLirium = new Armor(armorLirium, 3).setUnlocalizedName("Lirium Boots").setTextureName("hypalacore:lirium_boots").setCreativeTab(tabHypalaCore); GameRegistry.registerItem(helmetLirium, "lirium_helmet"); GameRegistry.registerItem(chestPlateLirium, "lirium_chestplate"); GameRegistry.registerItem(leggingsLirium, "lirium_legging"); GameRegistry.registerItem(bootsLirium, "lirium_boots"); //Armure Irist helmetIrist = new Armor(armorIrist, 0).setUnlocalizedName("Irist Helmet").setTextureName("hypalacore:irist_helmet").setCreativeTab(tabHypalaCore); chestPlateIrist = new Armor(armorIrist, 1).setUnlocalizedName("Irist Chestplate").setTextureName("hypalacore:irist_chestplate").setCreativeTab(tabHypalaCore); leggingsIrist = new Armor(armorIrist, 2).setUnlocalizedName("Irist Leggings").setTextureName("hypalacore:irist_leggings").setCreativeTab(tabHypalaCore); bootsIrist = new Armor(armorIrist, 3).setUnlocalizedName("Irist Boots").setTextureName("hypalacore:irist_boots").setCreativeTab(tabHypalaCore); GameRegistry.registerItem(helmetIrist, "irist_helmet"); GameRegistry.registerItem(chestPlateIrist, "irist_chestplate"); GameRegistry.registerItem(leggingsIrist, "irist_legging"); GameRegistry.registerItem(bootsIrist, "irist_boots"); //Lingots aithiaIngot = new Ingot().setUnlocalizedName("Aithia Ingot").setTextureName("hypalacore:aithia_ingot").setCreativeTab(tabHypalaCore); liriumIngot = new Ingot().setUnlocalizedName("Lirium Ingot").setTextureName("hypalacore:lirium_ingot").setCreativeTab(tabHypalaCore); iristIngot = new Ingot().setUnlocalizedName("Irist Ingot").setTextureName("hypalacore:irist_ingot").setCreativeTab(tabHypalaCore); mythicIngot = new Ingot().setUnlocalizedName("Mythic Ingot").setTextureName("hypalacore:mythic_ingot").setCreativeTab(tabHypalaCore); mythicFragment = new Ingot().setUnlocalizedName("Mythic Fragment").setTextureName("hypalacore:mythic_fragment").setCreativeTab(tabHypalaCore); GameRegistry.registerItem(aithiaIngot, "aithia_ingot"); GameRegistry.registerItem(liriumIngot, "lirium_ingot"); GameRegistry.registerItem(iristIngot, "irist_ingot"); GameRegistry.registerItem(mythicIngot, "mythic_ingot"); GameRegistry.registerItem(mythicFragment, "mythic_fragment"); } @EventHandler public void init(FMLInitializationEvent event) { } @EventHandler public void postInit(FMLPostInitializationEvent event) { } }
Merci d’avance pour votre aide !
-
Exactement le même problème que précédemment, tu as importé le mauvais
Entity
-
Ah merci je n’avais pas fait attention sur le coup car j’ai regardé le tuto plusieurs fois pour voir le problème. Merci de m’avoir aidé !
-
Ce message a été supprimé ! -
Ce message a été supprimé ! -
J’aurais juste une question sur ou mettre les effets car j’ai 3 armures mais je voudrais mettre des effets et je ne sais pas où il faut placer la fonction.
package com.hypala.hypalacore.common; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.init.Items; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; public class Armor extends ItemArmor { public Armor(ArmorMaterial material, int type) { super(material, 0, type); } //Armures Textures public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { //Lirium if(stack.getItem() == HypalaCore.leggingsLirium) { return HypalaCore.MODID + ":textures/models/armor/lirium_layer_2.png"; } else if(stack.getItem() == HypalaCore.chestPlateLirium || stack.getItem() == HypalaCore.helmetLirium || stack.getItem() == HypalaCore.bootsLirium) { return HypalaCore.MODID + ":textures/models/armor/lirium_layer_1.png"; } //Aithia if(stack.getItem() == HypalaCore.leggingsAithia) { return HypalaCore.MODID + ":textures/models/armor/aithia_layer_2.png"; } else if(stack.getItem() == HypalaCore.chestPlateAithia || stack.getItem() == HypalaCore.helmetAithia || stack.getItem() == HypalaCore.bootsAithia) { return HypalaCore.MODID + ":textures/models/armor/aithia_layer_1.png"; } //Irist if(stack.getItem() == HypalaCore.leggingsIrist) { return HypalaCore.MODID + ":textures/models/armor/irist_layer_2.png"; } return HypalaCore.MODID + ":textures/models/armor/irist_layer_1.png"; } public boolean getIsRepairable(ItemStack input, ItemStack repairItem) { return false; } public boolean hasEffect(ItemStack par1ItemStack, int pass) { return true; } }
PS: J’aimerai mettre des effets sur une seule armure mais les rendre toutes réparables
Merci pour votre aide !
-
Tu peux créer une classe différente pour ton armure ayant des effets.
-
D’accord mais quelle nom doit elle avoir ? Je ne comprend pas ou mettre le code pour les fonctions que je souhaite ajouter. J’aimerais mettre des effest sur la dernière armure celle en Irist et sur les autres j’aimerais juste qu’elle soit réparables.
Merci de ton aide -
Si c’est l’armure en Irist, nommes la classe IristArmor.
Il faudra juste dans ta classe principale penser à changer le new Armor par new IristArmor. -
D’accord et dans la classe IristArmor je dois mettre la fonction des effets ? Peut on combiner plusieurs effets mais sur des parties d’armure différentes ?
Et par rapport à la fonction Repair j’ai juste à supprimer le code sur l’armure en irist (et la mettre dans la classe IristArmor) et mettre à la suite du code la fonction repair (dans la classe principale) ? La fonction repair sera appliquée à toutes les armures en faisant cette technique ?
J’avoue avoir du mal à comprendre sur ce que je dois faire exactement
-
Si tu veux que la réparation soit possible pour toutes les armures, il faut mettre la fonction dans la classe
Armor
et dansIristArmor
Pour les effets, ça dépend ce que tu veux comme effet. Il y a différente façon de faire en fonction du résultat que tu veux (voir la partie bonus).
-
Ce message a été supprimé ! -
Ok merci j’aurais juste une dernière question, dans ma classe principale j’ai testé de créer une creativetabs et dans mon jeu une deuxième page apparaît bien le problème c’est que lorsque je clique dessus ça crash