Résolu J'ai trois problèmes avec la 1.7…
-
Salut à vous,
Depuis l’arrivée de Forge en 1.7… J’ai quelques petits problèmes avec mon mod…
Version de Forge: 1.7.2-10.12.0.1024
Ma classe principale:package fr.mrsamhalo.taherservmod; import io.netty.handler.codec.http.HttpHeaders.Names; import org.apache.logging.log4j.message.MapMessage.MapFormat; import net.minecraft.client.Minecraft; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemAxe; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemSpade; import net.minecraft.item.ItemSword; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.util.EnumHelper; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.relauncher.Side; @Mod(modid = TaherServMod.MODID, version = TaherServMod.VERSION) public class TaherServMod { public static final String MODID = "TaherServMod"; public static final String VERSION = "1.0"; public static ToolMaterial ObsidianI = EnumHelper.addToolMaterial("ObsidianI", 3, 4683, 11.0F, 6.0F, 10); public static Item swordObsi; public static Item pickObsi; public static Item axeObsi; public static Item shovelObsi; public static Item hoeObsi; @EventHandler public void init(FMLInitializationEvent event) { swordObsi = new ItemSword(ObsidianI).setUnlocalizedName("swordObsi").setTextureName(TaherServMod.MODID + ":swordObsi"); GameRegistry.registerItem(swordObsi, swordObsi.getUnlocalizedName().substring(5)); pickObsi = new ItemPickaxe(ObsidianI).setUnlocalizedName("pickObsi").setTextureName(TaherServMod.MODID + ":" + "pickObsi.png"); GameRegistry.registerItem(pickObsi, pickObsi.getUnlocalizedName().substring(5)); axeObsi = new ItemAxe(ObsidianI).setUnlocalizedName("axeObsi").setTextureName(TaherServMod.MODID + ":" + "axeObsi.png"); GameRegistry.registerItem(axeObsi, axeObsi.getUnlocalizedName().substring(5)); shovelObsi = new ItemSpade(ObsidianI).setUnlocalizedName("shovelObsi").setTextureName(TaherServMod.MODID + ":shovelObsi.png"); GameRegistry.registerItem(shovelObsi, shovelObsi.getUnlocalizedName().substring(5)); hoeObsi = new ItemHoe(ObsidianI).setUnlocalizedName("hoeObsi").setTextureName(TaherServMod.MODID + ":hoeObsi.png"); GameRegistry.registerItem(hoeObsi, hoeObsi.getUnlocalizedName().substring(5)); FMLCommonHandler.instance().bus().register(new RenderTickHandler(Minecraft.getMinecraft())); } }
Problème #1: Quand j’essai de créer une nouvelle pioche et une nouvelle hache, ça me dit:
"The constructor ItemPickaxe(Item.ToolMaterial) is not visible "
et
"The constructor ItemAxe(Item.ToolMaterial) is not visible "
Code: ```javapickObsi = new ItemPickaxe(ObsidianI).setUnlocalizedName(“pickObsi”).setTextureName(TaherServMod.MODID + “:” + “pickObsi.png”);
GameRegistry.registerItem(pickObsi, pickObsi.getUnlocalizedName().substring(5));axeObsi = new ItemAxe(ObsidianI).setUnlocalizedName(“axeObsi”).setTextureName(TaherServMod.MODID + “:” + “axeObsi.png”);
GameRegistry.registerItem(axeObsi, axeObsi.getUnlocalizedName().substring(5));Problème #2: En jeu, les Items ne chargent pas les textures... J'aimerais savoir où les placer pour que ça fonctionne... En occurence, je les place dans "\ForgeModding1.7.2\src\main\resources\assets\TaherServMod\textures\items" Problème #3: En 1.6.4, pour remplacer le menu principal, j'utilisais un TickRegistry... (Voici les codes que j'utilisais) Dans la méthode load de la classe principale: ```java TickRegistry.registerTickHandler(new TickHandler(), Side.CLIENT);
Dans la classe TickHandler:
package samhalo007.aperixx.gui; import java.util.EnumSet; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiIngame; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiOptions; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.GuiScreenTemporaryResourcePackSelect; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; public class TickHandler implements ITickHandler { protected Minecraft mc; @Override public void tickStart(EnumSet <ticktype>type, Object... tickData) { if (type.equals(EnumSet.of(TickType.CLIENT))) { Minecraft mc = Minecraft.getMinecraft(); GuiScreen guiscreen = mc.currentScreen; GuiAperixxMenu monMenu = new GuiAperixxMenu(); if (guiscreen instanceof GuiMainMenu && guiscreen != monMenu) { mc.displayGuiScreen(monMenu); } } } @Override public void tickEnd(EnumSet <ticktype>type, Object... tickData) { } @Override public EnumSet <ticktype>ticks() { return EnumSet.of(TickType.CLIENT); } @Override public String getLabel() { return getLabel(); } }
Mais dans la 1.7, ça ne fonctionne pas, j’aimerais savoir si il y a une alternative.
Voilà, j’espère avoir bien fait mon topic d’aide… Merci d’avance !</ticktype></ticktype></ticktype>
-
Problème #1 il faut créer une classe extends ItemPickage, une extends ItemAxe, etc …
Problème #2 presque bon, sauf que le modid doit être tout en minuscule.
Problème #3 je te renvoie ici : http://www.minecraftforgefrance.fr/showthread.php?tid=555&pid=6034#pid6034Et sinon, [java] pas
pour les codes, il y a même un petit logo java pour la balise.
-
Wow ! Merci pour la réponse rapide !
- Problème réglé !
- Les textures ne chargent toujours pas…
- Il n’y aurait pas une façon de récupérer les sources du GuiMainMenu.java ?
-
Oui : tu va dans l’onglet “Referrenced Libraries” sur eclipse, et tu déroule le forgeSrcxxx-xxxx-xxx, jusqu’à trouver le fichier !
-
#2 Mets tes items dans le preInit, en 1.7 les textures ne fonctionne que si les items et blocs sont preInit.
#3 Voir la réponse d’AlphaSwittleTeam -
Je m’excuse pour la réponse en retard, j’était occupé toute la journée et c’est le seul moment donc je trouve pour répondre…
2) Tout est réglé merci !
3) Ça ne donne qu’un fichier class incompréhensible… -
Tu as fait un setupDevWorkspace toi … Il faut suivre nos tutoriels
Vas dans le dossier de forge, fait un shift gauche + clic droit, Ouvrir une fenêtre de commande ici, et tape :
gradlew setupDecompWorkspace
une fois fini :
gradlew eclipse
Tes sources seront toujours là et tu pourra ouvrir GuiMainMenu.class sans problème. -
J’avais suivi le tutoriel de LexManos…
Bon, tous les problèmes cités ici ont été règlés !
Reste plus que ce prob’ qui s’est ajouté…
Le code de l’armure dans le fichier principal…obsidianHelmet = new ArmorObsidian(ObsidianA, 0, 0).setUnlocalizedName("obsidianHelmet").setTextureName(TaherServMod.MODID + ":HelmetObsi"); GameRegistry.registerItem(obsidianHelmet, "obsidian_helmet", TaherServMod.MODID); obsidianChestPlate = new ArmorObsidian(ObsidianA, 0, 1).setUnlocalizedName("obsidianChestPlate").setTextureName(TaherServMod.MODID + ":ChestPlateObsi"); GameRegistry.registerItem(obsidianChestPlate, "obsidian_chestplate", TaherServMod.MODID); obsidianLeggings = new ArmorObsidian(ObsidianA, 0, 2).setUnlocalizedName("obsidianLeggings").setTextureName(TaherServMod.MODID + ":LeggingsObsi"); GameRegistry.registerItem(obsidianLeggings, "obsidian_leggings", TaherServMod.MODID); obsidianBoots = new ArmorObsidian(ObsidianA, 0, 3).setUnlocalizedName("obsidianBoots").setTextureName(TaherServMod.MODID + ":BootsObsi"); GameRegistry.registerItem(obsidianBoots, "obsidian_boots", TaherServMod.MODID);
Le code de ArmorObsidian.java
package fr.mrsamhalo.taherservmod; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; public class ArmorObsidian extends ItemArmor { public ArmorObsidian(ArmorMaterial armorMaterial, int type, int layer) { super(armorMaterial, type, layer); setCreativeTab(CreativeTabs.tabCombat); } public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer) { if(stack.getItem() == TaherServMod.obsidianLeggings) { return TaherServMod.MODID + "textures/models/armor/obsidian_layer_2.png"; //armure 1, } else if(stack.getItem() == TaherServMod.obsidianHelmet || stack.getItem() == TaherServMod.obsidianChestPlate || stack.getItem() == TaherServMod.obsidianBoots) { return TaherServMod.MODID + "textures/models/armor/obsidian_layer_1.png"; //armure 1, casque + plastron + bottes } else if(stack.getItem() == TaherServMod.obsidianLeggings) { return TaherServMod.MODID + "textures/models/armor/obsidian_layer_2.png"; //armure 2, } return TaherServMod.MODID + ":textures/models/armor/obsidian_layer_1.png"; } }
-
Tiens, le code d’une armure qui marche parfaitement : http://pastebin.com/YkK6FKDm
-
La méthode public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
est devenu : public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) -
Ooh ! Ça marche ! Merci pour l’aide rapide !
-
De rien