Créer une nouvelle vitre



  • Salut !
    Voici un nouveau tuto sur comment créer de nouvelles vitres !

    Difficulté : Facile, Moyenne, Difficile

    Le bloc

    Créez un bloc basique avec comme constructeur :

    BlockVitreTuto = new BlockVitre (ID, texture, Material, CBC)
    

    ID (int): L'id ;),

    Material (material): La matière du bloc (Material.glass/rock/sand etc),

    CBC (boolean): Une abréviation de "Chargement Bloc Côté", important de mettre sur false, sinon les côtés des blocs de vitre autour seront chargés, donc il y aura des problèmes pour voir comme une vitre normale,

    texture (string) : Correspond à la texture (oui, on l'indique ici :O).

    La classe du bloc

    Créez donc une nouvelle classe "BlockVitre" ou bien ce que vous voulez, et ajoutez les codes suivants (explication au passage) :

    public int quantityDropped(Random par1Random)
    {
        return 0;
    }
    

    Changez le "0" par le nombre de blocs et/ou items qui seront droppés quand vous casserez ce bloc,


    @SideOnly(Side.CLIENT)
    public int getRenderBlockPass()
    {
        return 0;
    }
    

    0 pour les blocs solides, et 1 pour les alpha, j'avoue que je ne comprend pas bien "alpha", ce que je peux vous dire c'est que quand il y a "1", des blocs de vitre à côté formeront comme un "enclos"


    public boolean isOpaqueCube()
    {
        return false;
    }
    

    Cette méthode sert à savoir si le bloc est normal ou anormal (logique :D), si vous mettez sur "true" donc vous estimez que le bloc est normal, il y aura des soucis de texture sur les faces des blocs qui colle votre vitre !


    public boolean renderAsNormalBlock()
    {
        return false;
    }
    

    Ce code sert pour la render, si vous mettez sur "true", vous aurez des problèmes de lumière le plus souvent.


    protected boolean canSilkHarvest()
    {
        return true;
    }
    

    Mettez false si vous ne voulez pas qu'on puisse récupérer ce bloc avec l'enchantement "Silk Touch" (Touché de soie).

    C'est fini !
    Ce petit tuto est simple, mais pratique !



  • Au lieu de donner du code a copier ( TRÈS TRÈS mauvaise idée ), donne les méthodes qui donne les propriétés similaires a celles de la vitre, et explique les, c'est comme ça que les gens apprendront. Si tu donne un code tout prêt, ils n'apprendront rien de plus que de savoir copier / coller.

    Niveau orthographe, je ne vois pas de fautes flagrantes.



  • OK, je change dès maintenant :)___
    Voila, j'ai changé, et maintenant on peut plus copié collé comme un kikoolol 🙂


  • Administrateurs

    Je pense que tu devras sauvegarder ton tutoriel en local, car le forum a été sauvegardé sur l'ordinateur de robin, et malgré cela, les membres continuent de poster les tutoriels.



  • Je ferais une sauvegarde tout les jours à partir du 9/08



  • Je up mon tuto qui coule…



  • Up :).



  • Je ne sais pas si je dois valider ou pas.

    En attente de robin4002 [–-]


  • Administrateurs

    Je valide, j'ai juste supprimé le lien laisse-moi chercher ça, un tutoriel est sensé être sérieux et précis.



  • Yep :).
    Tu pourra faire un tuto sur des vitre aussi ? "pas des bloque de verre, mais bien des vitre (glass pane)"
    Et si possible, s'est la dessus que je bloque, ajoutait la transparence "50% transparent" mais sens que la texture se superpose sur elle même et a l’envers x).

    Merci d’avance :).


  • Administrateurs

    @'sevenno07':

    ajoutait la transparence "50% transparent"

    C'est simple, tu règle l'opacité de la texture avec Photoshop… ^^



  • c'est pas si simple x).
    Au pire je te passe mais codes en MP pour que tu voie XD.
    Il ne suffi pas que la texture sois que transparente a 50% x).



  • Je regarderais 🙂



  • Merci 😉



  • Bonjour,

    Merci pour ce tuto, néanmoins je débute en terme de programmation et je ne comprends pas comment ne plus avoir tes codes pour qu'ils fonctionnent 😞

    Pour la classe principale

    
    public static Block verre1blanc, verre1bleuclair;
    
    @EventHandler
    public void preinit(FMLPreInitializationEvent event)
    {
    verre1blanc = new BlockVerre(Material.glass).setBlockName("verre1blanc").setBlockTextureName(MODID + ":verre1blanc").setCreativeTab(CreativeTabs.tabBlock);
    verre1bleuclair = new BlockVerre(Material.glass).setBlockName("verre1bleuclair").setBlockTextureName(MODID + ":verre1bleuclair").setCreativeTab(CreativeTabs.tabBlock);
    
    GameRegistry.registerBlock(verre1blanc, ItemBlock.class, "verre1blanc");
    GameRegistry.registerBlock(verre1bleuclair, ItemBlock.class, "verre1bleuclair");
    
    }
    

    Pour ma classe

    package fr.simelya.verrier.common;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    
    public class BlockVerre extends Block {
    
    protected BlockVerre(Material material) {
    super(material);
    
    // TODO Auto-generated constructor stub
    
       public int quantityDropped(Random par1Random)
       {
           return 0;
       }
    
       @SideOnly(Side.CLIENT)
       public int getRenderBlockPass()
       {
           return 0;
       }
    
       public boolean isOpaqueCube()
       {
           return false;
       }
    
       public boolean renderAsNormalBlock()
       {
           return false;
       }
    
       protected boolean canSilkHarvest()
       {
           return true;
       }
    
    }
    
    }
    
    

    Je suis en version 1.7.2 avec un forge 1.7.2-10.12.2.1121

    Les variables int et boolean, le @SideOnly, quantityDropped(Random…) et les return sont en rouge.

    Désolé, j'ai réussi à coder quelques mods mais là je bloque 😞


  • Administrateurs

    Car tes accolades sont au mauvais endroit.
    À la fin tu ne devrais que avoir deux fermetures d'accolades.
    Et au début dans le constructeur il te manque une fermeture d'accolade.

    En fait tu as juste une fermeture d'accolade qui est mal placé, et ça fait tout planté.



  • En effet le code a l'air mieux, je fais des test et je vous tiens au courant.

    Robin, merci pour ton travail et ta réactivité, toi et on équipe faites du super travail !