Résolu Materiau d'un outil
-
Bonjour, je me présente, Eryah, mais je vais surement arreter de me présenter, car je fait environ , un topic d’erreur toute les 2 heures, et j’ai l’impression de ‘spammer’ en quelques sorte le forum, et de bien faire chier le monde. Bref je réalise le mod UsefulThings, déja sujet de ~5 topics, (Progression ici , pour les interresés = http://forum.minecraft-france.fr/threads/usefulthings-project.28533/). Donc, là, c’est l’item Chainsaw qui me pose problème. J’ai suivis divers tutoriels textes et vidéos pour faire en sorte, que tout simplement, la chainsaw soit une ‘hache’.
Malgré des efforts intenses, je n’arrive pas a appliquer le matériau a la tronçonneuse.Voici la ligne de code du matériau ( Localisation : .java de base)
public static ToolMaterial chainsawMat = EnumHelper.addToolMaterial("chainsawMat", 1, 1000, 15.0F, 3.0F, 14);
Aucun problème sur cette ligne
Ligne de code qui ‘applique’ le matériau ( Localisation : .java de la chainsaw )
public Chainsaw(String unlocalizedName, ToolMaterial material) { super(material); this.isFull3D(); }
Pour une raison inconnue, une ligne similaire est juste en dessous
public Chainsaw(ToolMaterial material) { super(material); }
Donc, je vous demande votre aide, pour m’aider a appliquer le matériau.
-
peux-tu nous donner le code ? (tu ne fait chier personne si on te répond c’est que on le veut bien)
-
Le code de la Chainsaw je suppose ?
package eryah.usefulthings.init; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.registry.GameRegistry; import eryah.usefulthings.Reference; import eryah.usefulthings.UsefulthingsMod; import eryah.usefulthings.blocks.ResinLog; public class Chainsaw extends ItemAxe{ public static Item chainsaw; public Chainsaw(String unlocalizedName, ToolMaterial material) { super(material); this.isFull3D(); } public Chainsaw(ToolMaterial material) { super(material); } public static void init(){ chainsaw = new Item().setUnlocalizedName("chainsaw").setCreativeTab(UsefulthingsMod.UTTab); } public static void register() { GameRegistry.registerItem(chainsaw, chainsaw.getUnlocalizedName().substring(5)); } public static void registerRenders() { registerRender(chainsaw); } public static void registerRender(Item item) { Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory")); } }
-
Tu as 2 constructeurs, utilise celui que tu veux.
this.isFull3D();
Quelle est l’utilité de mettre un getter dans un constructeur ?
Je pense que tu voulais faire this.setFull3D().
-
Effectivement, c’est ce que je voulais faire.
Mais cela n’avance point le sujet -
Quel constructeur utilises-tu ?
-
public Chainsaw(String unlocalizedName, ToolMaterial material) { super(material); }
-
Heu je ne vois pas où est le problème dans ton code ?
-
Le premier paramètre est inutile puisque tu ne l’utilise pas.
-
bah moi non plus, c’est pour cela que je demande de l’aide, malgré cela, le materiau ne s’applique pas, et la chainsaw ne se comporte tjr pas comme une hache, mais toujours comme un item normal ( Main, bâton … )
-
Pourtant ton item est extends ItemAxe … Fait voir ta classe principale ?
-
package eryah.usefulthings; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import eryah.usefulthings.blocks.ResinLeaves; import eryah.usefulthings.init.Chainsaw; import eryah.usefulthings.init.Engine; import eryah.usefulthings.init.ResinTree; import eryah.usefulthings.init.UTResin; import eryah.usefulthings.proxy.CommonProxy; @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.VERSION) public class UsefulthingsMod { @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS) public static CommonProxy proxy; public static final CreativeTab UTTab = new CreativeTab("UTTab"); public static ToolMaterial chainsawMat = EnumHelper.addToolMaterial("chainsawMat", 1, 1000, 15.0F, 3.0F, 14); @EventHandler public void preInit(FMLPreInitializationEvent event) { ResinTree.init(); ResinTree.register(); UTResin.init(); UTResin.register(); Engine.init(); Engine.register(); ResinLeaves.init(); ResinLeaves.register(); Chainsaw.init(); Chainsaw.register(); } @EventHandler public void init(FMLInitializationEvent event) { proxy.registerRenders(); GameRegistry.addRecipe(new ItemStack(Engine.engine), new Object[]{" R ", "PRP","RRR", 'R',Items.redstone, 'P',Blocks.piston}); } @EventHandler public void PostInit(FMLPostInitializationEvent event) { } }
Excusez moi la réponse tardive, je n’avais pas vu la 2e page ^^’
-
Ah oui …
Si tu enregistre ton item comme un item normal :public static void init(){ chainsaw = new Item().setUnlocalizedName("chainsaw").setCreativeTab(UsefulthingsMod.UTTab); }
Faut pas s’étonner que ça ne fonctionne pas …
chainsaw = new Chainsaw().setUnlocalizedName("chainsaw").setCreativeTab(UsefulthingsMod.UTTab);
-
Dans les () de Chainsaw(), je doit mettre quoi ? Si je met chainsawMat, cela me demande de mettre juste chainsaw, et quand je le met, cela entraine un conflit dans :
new Chainsaw(chainsaw)
et il me demande de faire soit
- remplacer le constructeur Chainsaw(ToolMaterial) par Chainsaw(Item) dnas
public Chainsaw(ToolMaterial material) { super(material); }
- changer le type de chainsaw en ToolMaterial
- ou créer le constructeur Chainsaw(Item)
J’ai tâté a tout, et tout me donne au final une/des erreurs
- remplacer le constructeur Chainsaw(ToolMaterial) par Chainsaw(Item) dnas
-
new Chainsaw(chainsawMat)
-
Cela me donne une erreur me demandant de changer chainsawMat en chainsaw
- ou ‘create a local variable ‘chainsawMat’’
- ‘create a field ‘chainsawMat’’
- ‘create a parameter ‘chainsawMat’’
- ‘create a constant ‘chainsawMat’’
-
Parce que tu enregistres ton Item dans la classe de ton Item et non dans la classe où se trouve le Material, il faut faire new Chainsaw(UsefulthingsMod.chainsawMat)
-
Effectivement, je lance mon client et je te dit si cela fonctionne, en tout cas, il n’y a pas d’erreurs
Edit: Cela fonctionne, merci beaucoup ( j’ai compté, la Chainsaw prend environ 0,25sec a découper une bûche de bois