Une armure
-
ici, return “modtutoriel:models/armor/tutorial_layer_1.png”; c’est return “modtutoriel:textures/models/armor/tutorial_layer_1.png”;
que tu dois mettre. -
Ça faisait partie des nombreux tests que j’ai fait, et que je n’ai pas remis.
Le premier devrait néanmoins fonctionner -
Essaye avec public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) et met un @Override au dessus de la fonction pour voir si ça change quelque chose. (garde le même return)
-
Il bloque sur la signature si je mets @Override et que je mets cette signature. Il ne détecte pas d’implémentation dans la classe Item ou ItemArmor, alors que j’ai vérifié, j’ai bien cette fonction dans Item.
Rajouter @Override au dessus de la signature de la fonction que j’ai actuellement donne exactement le même problème
J’ai l’impression que je vais réinstaller forge demain…. -
Non, inutile de réinstaller Forge, je viens de trouver le problème. Le @Override ne marche pas, car
getArmorTexture(net.minecraft.item.ItemStack stack, javax.swing.text.html.parser.Entity entity, int slot, int layer) != getArmorTexture(net.minecraft.item.ItemStack stack, net.minecraft.entity.Entity entity, int slot, int layer)
Faite attention à vos importation !
import javax.swing.text.html.parser.Entity; -> import net.minecraft.entity.Entity;
-
Effectivement, je venais de le trouver au même moment… Désormais, cela fonctionne
Je ferais plus attention désormais.
Merci pour vos tutos -
Bonjour,
J’ai suivi ton tuto, mais quand je mets mon armure, le layer est celui de base (un truc tout moche noir et rose ;))
En regardant dans le code d’erreur j’ai remarqué qu’il ne trouve pas la texture :2013-11-23 15:47:48 [Avertissement] [Minecraft-Client] Failed to load texture: newores:rubis_layer_1 java.io.FileNotFoundException: newores:rubis_layer_1 at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:64) at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:63) at net.minecraft.client.renderer.texture.SimpleTexture.loadTexture(SimpleTexture.java:31) at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:84) at net.minecraft.client.renderer.texture.TextureManager.bindTexture(TextureManager.java:41) at net.minecraft.client.renderer.entity.Render.bindTexture(Render.java:53) at net.minecraft.client.renderer.entity.RenderPlayer.setArmorModel(RenderPlayer.java:72) at net.minecraft.client.renderer.entity.RenderPlayer.shouldRenderPass(RenderPlayer.java:514) at net.minecraft.client.renderer.entity.RendererLivingEntity.doRenderLiving(RendererLivingEntity.java:164) at net.minecraft.client.renderer.entity.RenderPlayer.func_130009_a(RenderPlayer.java:166) at net.minecraft.client.renderer.entity.RenderPlayer.doRender(RenderPlayer.java:556) at net.minecraft.client.renderer.entity.RenderManager.renderEntityWithPosYaw(RenderManager.java:312) at net.minecraft.client.gui.inventory.GuiInventory.func_110423_a(GuiInventory.java:121) at net.minecraft.client.gui.inventory.GuiContainerCreative.drawGuiContainerBackgroundLayer(GuiContainerCreative.java:849) at net.minecraft.client.gui.inventory.GuiContainer.drawScreen(GuiContainer.java:111) at net.minecraft.client.renderer.InventoryEffectRenderer.drawScreen(InventoryEffectRenderer.java:43) at net.minecraft.client.gui.inventory.GuiContainerCreative.drawScreen(GuiContainerCreative.java:683) at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1036) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:946) at net.minecraft.client.Minecraft.run(Minecraft.java:838) at net.minecraft.client.main.Main.main(Main.java:93) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.minecraft.launchwrapper.Launch.launch(Launch.java:131) at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
Mais j’ai beau vérifier et revérifier, le chemin d’accès est le bon.
Pouvez-vous m’aider ?Classe Principale :
package fr.MrBlockTNT.NewOres; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.Item; import net.minecraftforge.common.EnumHelper; 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.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import fr.MrBlockTNT.proxy.CommonProxy; @Mod(modid = "NewOres", name = "New Ores", version = "1.0.0") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class NewOres { @SidedProxy(clientSide = "fr.MrBlockTNT.proxy.ClientProxy", serverSide = "fr.MrBlockTNT.proxy.CommonProxy") public static CommonProxy proxy; @Instance("NewOres") public static NewOres instance; public static Block rubisOre, saphirOre, onyxOre, enchantiteOre, rubisBlock, saphirBlock, onyxBlock, enchantiteBlock; public static Item enchantiteDust, rubis, saphir, onyx; public static Item rubyBar, saphirBar, onyxBar, enchantiteBar; public static Item rubyHelmet, rubyPlate, rubyLegs, rubyBoots; static EnumArmorMaterial rubyMaterial = EnumHelper.addArmorMaterial("Ruby", 20, new int[]{2, 4, 3, 1}, 10); public static CreativeTabs NewOresTab = new NewOresTab("NewOres"); @EventHandler public void PreInit(FMLPreInitializationEvent event) { // Blocks rubisOre = new BlockNewOre(2000).setHardness(3.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("Rubis Ore").setTextureName("newores:rubis_ore"); saphirOre = new BlockNewOre(2001).setHardness(3.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("Saphirre Ore").setTextureName("newores:saphir_ore"); onyxOre = new BlockNewOre(2002).setHardness(3.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("Onyx Ore").setTextureName("newores:onyx_ore"); enchantiteOre = new BlockNewOre(2003).setHardness(3.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("Enchantite Ore").setTextureName("newores:enchantite_ore_end"); //onyxNether = new BlockNewOre(2004).setHardness(3.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("Onyx Ore Nether").setTextureName("newores:onyx_ore_nether"); //enchantiteEnd = new BlockNewOre(2005).setHardness(3.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("Enchantite Ore End").setTextureName("newores:enchantite_ore"); rubisBlock = new BlockNewOre(2006).setHardness(3.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("Rubis Block").setTextureName("newores:rubis_block"); saphirBlock = new BlockNewOre(2007).setHardness(3.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("Saphirre Block").setTextureName("newores:saphir_block"); onyxBlock = new BlockNewOre(2008).setHardness(3.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("Onyx Block").setTextureName("newores:onyx_block"); enchantiteBlock = new BlockNewOre(2009).setHardness(3.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("Enchantite Block").setTextureName("newores:enchantite_block"); GameRegistry.registerBlock(rubisOre, "Minerai de Rubis"); GameRegistry.registerBlock(saphirOre, "Minerai de Saphir"); GameRegistry.registerBlock(onyxOre, "Minerai d'Onyx"); GameRegistry.registerBlock(enchantiteOre, "Minerai d'Enchantite"); //GameRegistry.registerBlock(onyxNether, "Minerai d'Onyx Nether"); //GameRegistry.registerBlock(enchantiteEnd, "Minerai d'Enchantite End"); GameRegistry.registerBlock(rubisBlock, "Bloc de Rubis"); GameRegistry.registerBlock(saphirBlock, "Bloc de Saphir"); GameRegistry.registerBlock(onyxBlock, "Bloc d'Onyx"); GameRegistry.registerBlock(enchantiteBlock, "Bloc d'Enchantite"); //Items enchantiteDust = new ItemNewOres(12000).setUnlocalizedName("Enchantite Dust").setTextureName("newores:enchantite_dust"); rubis = new ItemNewOres(12001).setUnlocalizedName("Rubis Gem").setTextureName("newores:rubis"); saphir = new ItemNewOres(12002).setUnlocalizedName("Saphir Gem").setTextureName("newores:saphir"); onyx = new ItemNewOres(12003).setUnlocalizedName("Onyx Gem").setTextureName("newores:onyx"); enchantiteBar = new ItemNewOres(12004).setUnlocalizedName("Enchantite Bar").setTextureName("newores:enchantite_dust"); rubyBar = new ItemNewOres(12005).setUnlocalizedName("Rubis Bar").setTextureName("newores:rubis"); saphirBar = new ItemNewOres(12006).setUnlocalizedName("Saphir Bar").setTextureName("newores:saphir"); onyxBar = new ItemNewOres(12007).setUnlocalizedName("Onyx Bar").setTextureName("newores:onyx"); GameRegistry.registerItem(enchantiteDust, "EnchantiteDust", "NewOres"); GameRegistry.registerItem(rubis, "Rubis", "NewOres"); GameRegistry.registerItem(saphir, "Saphir", "NewOres"); GameRegistry.registerItem(onyx, "Onyx", "NewOres"); GameRegistry.registerItem(enchantiteBar, "Enchantite Bar", "NewOres"); GameRegistry.registerItem(rubyBar, "Rubis Bar", "NewOres"); GameRegistry.registerItem(saphirBar, "Saphir Bar", "NewOres"); GameRegistry.registerItem(onyxBar, "Onyx Bar", "NewOres"); // Armures & Outils rubyHelmet = new RubyArmor(12100, rubyMaterial, 0,0).setUnlocalizedName("RubyHelmet").setTextureName("newores:rubis_helmet"); rubyPlate = new RubyArmor(12101, rubyMaterial, 0, 1).setUnlocalizedName("RubyPlate").setTextureName("newores:rubis_chestplate"); rubyLegs = new RubyArmor(12102, rubyMaterial, 0, 2).setUnlocalizedName("RubyLegs").setTextureName("newores:rubis_leggings"); rubyBoots = new RubyArmor(12103, rubyMaterial, 0, 3).setUnlocalizedName("RubyBoots").setTextureName("newores:rubis_boots"); GameRegistry.registerItem(rubyHelmet, "RubyHelmet", "NewOres"); GameRegistry.registerItem(rubyPlate, "RubyPlate", "NewOres"); GameRegistry.registerItem(rubyLegs, "RubyLegs", "NewOres"); GameRegistry.registerItem(rubyBoots, "RubyBoots", "NewOres"); //Generation GameRegistry.registerWorldGenerator(new NewOresGenerator()); } @EventHandler public void Init(FMLInitializationEvent event) { proxy.registerRender(); } @EventHandler public void PostInit(FMLPostInitializationEvent event) { } }
RubyArmor :
package fr.MrBlockTNT.NewOres; import net.minecraft.entity.Entity; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; public class RubyArmor extends ItemArmor { public RubyArmor(int id, EnumArmorMaterial armorMaterial, int type, int layer) { super(id, armorMaterial, type, layer); } public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer) { if(stack.itemID == NewOres.rubyLegs.itemID) { return "newores:rubis_layer_2"; } else { return "newores:rubis_layer_1"; } } public boolean getIsRepairable(ItemStack stack, ItemStack repairItem) { if(stack.getItem().equals(this) && repairItem.getItem().itemID == NewOres.rubyBar.itemID) return true; return false; } }
-
C’est le chemin qui pose problème.
Imaginons que ta texture se trouve dans “assets/newores/textures/armure/rubis_layer_1.png”.
Alors ton chemin dans ton code est :return "newores:textures/armure/rubis_layer_1.png";
-
Merci, j’essaie ça tout de suite
EDIT : ça marche toujours pas
-
Il faut mettre le .png à la fin
-
Je viens de m’en rendre compte, et j’allais faire un édit
-
Y a t-il moyen de rendre l’armure incassable s’il vous plait ? Comme la bedrock par exemple.
-
Essaye de mettre la résistance sur -1 ?
-
Je pense que cela doit être possible, les armures quantums d’IC² ont cette fonctionnalité.
-
Bonjour, merci pour ce tutoriel.
Cependant, je pense qu’il manque une chose: Comment définit-on le matériel avec lequel l’armure se craft ? Il suffit d’utiliser GameRegistry.addRecipe ?
Merci d’avance -
Oui, il faut faire des recettes comme les autres.
-
Merci beaucoup (Je pense qu’il faudrait le mentionner dans le tutoriel, après, c’est toi qui vois ^^")
-
J’ai une erreur dans la classe de l’armure sur
public String “getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)”
-
Quoi comme erreur ?
-
quand je clique sur l’erreur
sa me met
add return statement
change return type to ‘void’