Retirer le visuel en main Item



  • Bonjour savez-vous s'il est possible et si oui comment retirer le visuel en main d'un item ? Pour l'avoir uniquement dans la barre d'action.



  • Il y a surement un autre moyen mais tu peux passer par une IItemRenderer (tuto sur le forum) et ne rien rendre du tout si l'item est en main.



  • @'AymericRed':

    Il y a surement un autre moyen mais tu peux passer par une IItemRenderer (tuto sur le forum) et ne rien rendre du tout si l'item est en main.

    Je dois mal utiliser l'outil de recherche car ca ne donné rien avec ta réponse (dans la recherche de tutoriel)



  • C'est que c'est pas dans le titre. https://www.minecraftforgefrance.fr/showthread.php?tid=130 il est valable en 1.7 je l'ai utilisé, mais en 1.8 c'est les jsons.



  • @'AymericRed':

    C'est que c'est pas dans le titre. https://www.minecraftforgefrance.fr/showthread.php?tid=130 il est valable en 1.7 je l'ai utilisé, mais en 1.8 c'est les jsons.

    Je vais voir, merci 😛


  • Rédacteurs

    Oui, le plus simple et de passer par un json pour annuler le rendu en main, en fait ça reviens à ne pas l'annuler mais plutôt à ne rien rendre



  • @'BrokenSwing':

    Oui, le plus simple et de passer par un json pour annuler le rendu en main, en fait ça reviens à ne pas l'annuler mais plutôt à ne rien rendre

    En 1.7.10 je peux faire ca avec un json ? Un ami m'a dit que le fait de faire un rendu qui ne rend rien pourrait créer des lags inutiles.


  • Administrateurs

    Il n'y a pas de json pour les modèles d'item / bloc en 1.7.10.
    Il faudrait plutôt que tu changes d'amis.
    Un rendu vide, c'est un rendu qui fait rien, c'est mathématiquement impossible que ne rien faire utilise plus de cycle cpu / gpu que faire quelque chose.



  • @'robin4002':

    Il n'y a pas de json pour les modèles d'item / bloc en 1.7.10.
    Il faudrait plutôt que tu changes d'amis.
    Un rendu vide, c'est un rendu qui fait rien, c'est mathématiquement impossible que ne rien faire utilise plus de cycle cpu / gpu que faire quelque chose.

    Ahah, je vais y penser alors ! Merci

    J'ai suivi le tutoriel mais je bloque sur deux petites erreurs :

    package fr.shyfe.dcedo.common;
    
    import org.lwjgl.opengl.GL11;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.entity.Entity;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.IItemRenderer;
    
    public class ItemPressionTechneRenderer implements IItemRenderer{
    
    protected ItemPressionTechneModel model;
    protected static final ResourceLocation texture = new ResourceLocation("ModTutoriel:textures/items/itemTechne.png");
    
    public ItemPressionTechneRenderer ()
    {
    model = new ItemPressionTechneModel();
    }
    
    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type)
    {
    switch(type)
    {
    case EQUIPPED:
    return true;
    default:
    return false;
    }
    }
    
    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
    {
    return false;
    }
    
    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object… data)
    {
    switch(type)
    {
    case EQUIPPED_FIRST_PERSON:
    {
    GL11.glPushMatrix();
    Minecraft.getMinecraft().renderEngine.func_110577_a(texture);
    model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
    GL11.glPopMatrix();
    break;
    }
    default:
    break;
    }
    }
    }
    
    

    Dans la troisième méthode, "Minecraft.getMinecraft().renderEngine.func_110577_a(texture);" le func est en erreur.

    Et dans mon ClientProxy :

    package fr.shyfe.dcedo.proxy;
    
    import BlockPers.TileEntityGrassA;
    import BlockPers.TileEntityGrassB;
    import BlockPers.TileEntityGrassC;
    import BlockPers.TileEntityIncBox;
    import BlockPers.TileEntityTroncCim;
    import SortIop.Pression;
    import SortIop.SortsIop;
    import cpw.mods.fml.client.registry.ClientRegistry;
    import cpw.mods.fml.client.registry.RenderingRegistry;
    import fr.shyfe.dcedo.common.ItemPressionTechneRenderer;
    import fr.shyfe.dcedo.common.Main;
    import net.minecraft.client.model.ModelBiped;
    import net.minecraftforge.client.IItemRenderer;
    import net.minecraftforge.client.MinecraftForgeClient;
    
    public class ClientProxy extends CommonProxy {
    
    public static int tesrRenderId;
    
    @Override
    public void registerRender()
    {
    tesrRenderId = RenderingRegistry.getNextAvailableRenderId();
            RenderingRegistry.registerBlockHandler(new TESRInventoryRenderer());
    
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGrassA.class, new TileEntityGrassASpecialRenderer());
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGrassB.class, new TileEntityGrassBSpecialRenderer());
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGrassC.class, new TileEntityGrassCSpecialRenderer());
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityIncBox.class, new TileEntityIncBoxSpecialRenderer());
    ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTroncCim.class, new TileEntityTroncCimSpecialRenderer());
    
    MinecraftForgeClient.registerItemRenderer(SortsIop.Pression.itemID, (IItemRenderer)new ItemPressionTechneRenderer());
    }
    }
    
    

    Le ".itemID" me donne l’erreur suivant : "itemID cannot be resolved or is not a field"

    L'item auquel je souhaiterais donner un modèle particulier (rien) est déclaré dans SortsIop.java sous le nom de "Pression".

    Je précise aussi que je n'ai rien mis dans la classe du modèle étant donné que je ne veux rien :

    package fr.shyfe.dcedo.common;
    
    import net.minecraft.client.model.ModelBase;
    
    public class ItemPressionTechneModel extends ModelBase {
    
    }
    

  • Administrateurs

    Retire le .itemID.
    Et pour le func_110577_a, c'est surement bindTexture le remplaçant.

    Par contre avec ça tu aura bien un rendu, si tu veux rien faut laisser la classe vide.



  • @'robin4002':

    Retire le .itemID.
    Et pour le func_110577_a, c'est surement bindTexture le remplaçant.

    Par contre avec ça tu aura bien un rendu, si tu veux rien faut laisser la classe vide.

    Quelle classe je dois laisser vide ? Celle du modèle l'est déjà. Ici ca fonctionne en F5 (les joueurs ne voient plus le modèle mais je l'ai toujours en main).


  • Administrateurs

    La fonction renderItem, au lieu de mettre ce que tu as mis dedans laisse-là vide.
    Supprimes aussi ItemPressionTechneModel  ainsi que les trois lignes suivantes :
    protected ItemPressionTechneModel model;
    protected static final ResourceLocation texture = new ResourceLocation("ModTutoriel:textures/items/itemTechne.png");
    model = new ItemPressionTechneModel();
    Tu n'en as pas besoin, ça fait du code et des appelles de fonction pour rien.



  • Ca fonctionne, merci encore !

    Au passage si vous voulez comme moi retirer le modèle de votre main et non du joueur en F5, changez

    EQUIPPED de la première méthode en EQUIPPED_FIRST_PERSON