Item changeant de texture



  • Bonjour. J'aimerai que si il se passe une certaine action (Joueur qui sneak, joueur avec effet d'invisibilité) un item que j'ai créé avec un mod puisse changer de texture. Par exemple il a une texture 1 et 2. Par défaut, l'item aura la texture 1 mais si il est invisible, l'item passe à la texture 2. Bien sûr, si le joueur n'est plus invisible, l'item repasse à la texture 1. Donc voilà si vous pouvez m'aider svp 🙂


  • Rédacteurs

    Il faut voir avec la fonction getIcon il me semble, je ne sais plus quels sont ces arguments



  • @'BrokenSwing':

    Il faut voir avec la fonction getIcon il me semble, je ne sais plus quels sont ces arguments

    Bah je ne m'y connais pas du tout là dedans 😞



  • Avec la fonction getIcon de l'item (que tu peux ajouter en commençant à taper son nom puis en faisant CTRL+space dans eclipse), tu retournes une IIcon différente selon la valeur de Minecraft.getMinecraft(). thePlayer.isInvisible();



  • Merci mais … On fait comment ? (Oui je sais suis pas doué en code et alors ? xD)



  • Le problème est pas d'être doué ou pas vu que j'ai presque tout expliqué et qu'il y a ce qu'il manque sur le forum ^^

    private IIcon iconInvisible;
    @Override
    public void registerIcons(IIconRegister p_94581_1_)
    {
    super.registerIcons(p_94581_1_); //Enregistre l'icone du "setTextureName()"
    iconInvisible = p_94581_1_.registerIcon("icone_invisible");
    }
    @Override
    @SideOnly(Side.CLIENT)
    public IIcon getIconFromDamage(int p_77617_1_)
    {
    return Minecraft.getMinecraft(). thePlayer.isInvisible() ? iconInvisible : itemIcon;
    }
    

    Le seul truc que j'avais pas donné était "registerIcons(…)".



  • @'AymericRed':

    Le problème est pas d'être doué ou pas vu que j'ai presque tout expliqué et qu'il y a ce qu'il manque sur le forum ^^

    private IIcon iconInvisible;
    @Override
    public void registerIcons(IIconRegister p_94581_1_)
    {
    super.registerIcons(p_94581_1_); //Enregistre l'icone du "setTextureName()"
    iconInvisible = p_94581_1_.registerIcon("icone_invisible");
    }
    @Override
    @SideOnly(Side.CLIENT)
    public IIcon getIconFromDamage(int p_77617_1_)
    {
    return Minecraft.getMinecraft(). thePlayer.isInvisible() ? iconInvisible : itemIcon;
    }
    

    Le seul truc que j'avais pas donné était "registerIcons(…)".

    Merci de ta réponse et tout marche SAUF la texture qui est buguéd : je l'enregistre bien dans src/main/resources/assets/invisiblearmor/textures/items mais ça ne marche pas : en erreur il me dit qu'il ne le trouve pas textures/items/InvisibleIcon (oui j'ai modifié un peu le code) alors que je l'ai bien mis où il fallait. Mais chose curieuse : il me dit que le domaine est minecraft et non invisiblearmor. Je crée donc un dossier minecraft dans assets et je crée dedans textures/items et je mets la texture dedans. Cette fois-ci minecraft ne démarre plus et crash …


  • Administrateurs

    p_94581_1_.registerIcon("modid:icone_invisible");
    en adaptant modid par ce qu'il faut.



  • @'robin4002':

    p_94581_1_.registerIcon("modid:icone_invisible");
    en adaptant modid par ce qu'il faut.

    ça ne marche pas, le jeu se crash au démarrage …


  • Administrateurs

    Il faudrait le rapport de crash.



  • @'robin4002':

    Il faudrait le rapport de crash.

    Le voici mon cher : ```java
    –-- Minecraft Crash Report ----
    // Who set us up the TNT?

    Time: 28/05/17 19:45
    Description: Registering texture

    java.lang.NullPointerException: Registering texture
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:213)
    at com.google.common.collect.StandardTable.put(StandardTable.java:139)
    at com.google.common.collect.HashBasedTable.put(HashBasedTable.java:55)
    at cpw.mods.fml.client.FMLClientHandler.trackBrokenTexture(FMLClientHandler.java:924)
    at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:184)
    at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:98)
    at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89)
    at net.minecraft.client.renderer.texture.TextureManager.onResourceManagerReload(TextureManager.java:172)
    at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:143)
    at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:121)
    at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:662)
    at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:327)
    at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)
    at net.minecraft.client.Minecraft.run(Minecraft.java:942)
    at net.minecraft.client.main.Main.main(Main.java:164)
    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:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)

    A detailed walkthrough of the error, its code path and all known details is as follows:

    -- Head --
    Stacktrace:
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:213)
    at com.google.common.collect.StandardTable.put(StandardTable.java:139)
    at com.google.common.collect.HashBasedTable.put(HashBasedTable.java:55)
    at cpw.mods.fml.client.FMLClientHandler.trackBrokenTexture(FMLClientHandler.java:924)
    at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:184)
    at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:98)

    -- Resource location being registered --
    Details:
    Resource location: minecraft:textures/atlas/items.png
    Texture object class: net.minecraft.client.renderer.texture.TextureMap
    Stacktrace:
    at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89)
    at net.minecraft.client.renderer.texture.TextureManager.onResourceManagerReload(TextureManager.java:172)
    at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:143)
    at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:121)
    at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:662)
    at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:327)
    at net.minecraft.client.Minecraft.startGame(Minecraft.java:597)

    -- Initialization --
    Details:
    Stacktrace:
    at net.minecraft.client.Minecraft.run(Minecraft.java:942)
    at net.minecraft.client.main.Main.main(Main.java:164)
    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:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)

    -- System Details --
    Details:
    Minecraft Version: 1.7.10
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_131, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 712892712 bytes (679 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1614 4 mods loaded, 4 mods active
    States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    UCHIJA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) 
    UCHIJA FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
    UCHIJA Forge{10.13.4.1614} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1614-1.7.10.jar) 
    UCHIJA InvisibleArmor{1.0.0} [InvisibleArmor] (bin) 
    GL info: ' Vendor: 'Intel' Version: '4.4.0 - Build 20.19.15.4549' Renderer: 'Intel(R) HD Graphics'
    Launched Version: 1.7.10
    LWJGL: 2.9.1
    OpenGL: Intel(R) HD Graphics GL version 4.4.0 - Build 20.19.15.4549, Intel
    GL Caps: Using GL 1.3 multitexturing.
    Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
    Anisotropic filtering is supported and maximum anisotropy is 16.
    Shaders are available because OpenGL 2.1 is supported.

    Is Modded: Definitely; Client brand changed to 'fml,forge'
    Type: Client (map_client.txt)
    Resource Packs: []
    Current Language: Français (France)
    Profiler Position: N/A (disabled)
    Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
    Anisotropic Filtering: Off (1)


  • Administrateurs

    Renvoies ton code ?



  • @'robin4002':

    Renvoies ton code ?

    Le voici : ```java
    package fr.the_pumpkin_man.InvisibleArmor.common;

    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemStack;
    import net.minecraft.item.ItemSword;
    import net.minecraft.potion.Potion;
    import net.minecraft.util.IIcon;
    import net.minecraft.world.World;
    import net.minecraftforge.event.entity.player.PlayerEvent;

    public class InvisibleSword extends ItemSword 
    {
    public InvisibleSword(ToolMaterial material) 
    {
    super(material);
    this.setUnlocalizedName("InvisibleSword");
    this.setTextureName(InvisibleArmor.MODID + ":InvisibleSword");
    }
    public boolean getIsRepairable(ItemStack input, ItemStack repair)
    {
    if(repair.getItem() == InvisibleArmor.InvisibleItem)
    {
    return true;
    }
    return false;
    }
    private IIcon iconInvisible;
    @Override
    public void registerIcons(IIconRegister icon) 
    {
    super.registerIcons(icon);
    iconInvisible = icon.registerIcon("InvisibleArmor:InvisibleIcon");
    }
    @Override
    @SideOnly(Side.CLIENT)
    public IIcon getIconFromDamage(int invisible)
    {
    return Minecraft.getMinecraft(). thePlayer.isInvisible() ? iconInvisible : itemIcon;
    }
    }

    Je tiens à préciser que j'ai essayé de mettre le MODID en minuscule et avec les majuscules dans le registerIcon.

  • Administrateurs

    Le modid doit forcement être en minuscule.
    Si en maj ça crash aussi je ne sais pas trop d'où ça peut venir 😕