1.7.x 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: ```java

    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));

    
    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>


  • Moddeurs confirmés Rédacteurs Administrateurs

    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#pid6034

    Et 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 !

    1. Problème réglé !
    2. Les textures ne chargent toujours pas…
    3. 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 !


  • Moddeurs confirmés Rédacteurs Administrateurs

    #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...


  • Moddeurs confirmés Rédacteurs Administrateurs

    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


  • Moddeurs confirmés Rédacteurs Administrateurs

    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 😉


Log in to reply