SOLVED Bloc qui change de texture en fonction du Gamemode


  • Pour créer des blocs de trigger ( Collision, lumière, etc etc … )

    J’ai pensé a un truc du genre

    public void registerIcons(IconRegister iconRegister)
    {
    GM1 = iconRegister.registerIcon("city01:collision");
    GM2 = iconRegister.registerIcon("city01:Transp");
    }
    
    @SideOnly(Side.CLIENT)
    public Icon getIcon(int side, int metadata)
    {
    if (gamemode == 1)
         {
             return GM1;
         }
    else
         {
           return GM2;
        }
    }
    

    Mais c’est pas ça. Merci d’avance de vos réponses.

  • Administrateurs Rédacteurs Moddeurs confirmés

    Impossible le gamemode est une variable dans le joueur, il faudrait une fonction avec le joueur en paramètre, et je sais pas où trouver ça.


  • Pourtant c’est présent dans adventureCraft ?

  • Administrateurs Rédacteurs Moddeurs confirmés

    Heu oublie ma première réponse, les rendus c’est en Client, donc on peut faire ça :

    @SideOnly(Side.CLIENT)
    public Icon getIcon(int side, int metadata)
    {
    if (FMLClientHandler.instance().getClient().thePlayer.capabilities.isCreativeMode)
    {
    return GM1;
    }
    else
    {
    return GM2;
    }
    }
    


  • Parfait, merci 🙂

  • Moddeurs confirmés Modérateurs

    question: c’est dans la classe du bloc ou dans la classe du rendu qu’il faut mettre ce code?

  • Modérateurs

    Dans la class du bloc.

  • Moddeurs confirmés Modérateurs

    cela ne fait rien:

    
    package Portal.Blocks;
    
    import cpw.mods.fml.client.FMLClientHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IconRegister;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.util.Icon;
    
    public class blockinvi extends Block
    {
    
    private Icon GM1;
    private Icon GM2;
    
    public blockinvi(int id)
    {
    super(id, Material.rock);
    this.setCreativeTab(CreativeTabs.tabBlock);
    }
    public int getRenderBlockPass()
    {
    return 0;
    }
    
    /**
    * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two
    * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
    */
    public boolean isOpaqueCube()
    {
    return false;
    }
    
    /**
    * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc)
    */
    public boolean renderAsNormalBlock()
    {
    return false;
    }
    
    public void registerIcons(IconRegister iconRegister)
    {
    GM1 = iconRegister.registerIcon("city01:collision");
    GM2 = iconRegister.registerIcon("city01:Transp");
    
    }
    @SideOnly(Side.CLIENT)
    public Icon getIcon(int side, int metadata)
    {
    if (FMLClientHandler.instance().getClient().thePlayer.capabilities.isCreativeMode)
    {
    return GM1;
    }
    else
    {
    return GM2;
    }
    }
    
    }
    
    

  • Il faut actualiser le block … genre en mettant un autre a coté

  • Moddeurs confirmés Modérateurs

    srx? on peut pas faire en sorte qu’il s’actualisa tout seul?


  • 😮 Intéressent tout sa :D, et moi qui voulais ajouté a un de mais mod un bloc invisible et incassable “sauf en mod créatif, comme la bedrock”, Je pourrai reprendre se code stp ?.

    Cordialement.

  • Moddeurs confirmés Modérateurs

    par contre on peut pas faire un système d’update dans le mod pour que le rendu se fasse en auto?

  • Administrateurs Rédacteurs Moddeurs confirmés

    Je pense pas, il faudrait faire update les chunks autour du joueur lors du changement de gamemode, je vois pas comment faire ça.
    De toute façon, une déco reco, un changement de dimension, un tp et c’est bon.

  • Moddeurs confirmés Modérateurs

    sinon j’ai trouvé, moi c’est bloc me serve juste a bloqué la sortie d’une zone (pour le spawn tutoriel par exemple) sa chaque parois est connecté a une autre par un autre bloc barrière, une impulsion redstone dans un de c’est bloc et le tour est joué.