Block sans metadata qui ne s'oriente pas



  • Salut tout le monde
    Je cherche à faire orienter mon block, j'ai vu le tuto présent sur le site mais mon block lui n'a aucune metadata et pour l'instant j'ai fais un petit test, voici le code mais rien que ça, ça ne marche même pas pourtant le message s'affiche bien dans la console:

    
    package mrplaigon.zombarcraftserver.zombarcraftmod.common.handler;
    
    import net.minecraft.block.material.Material;
    import net.minecraft.world.World;
    import net.minecraftforge.common.util.ForgeDirection;
    import mrplaigon.zombarcraftserver.zombarcraftmod.common.block.BlockZB;
    
    public class BlockBitumeWhite extends BlockZB
    {
    
    public BlockBitumeWhite(Material material) 
    {
    super(material);
    }
    public void onBlockAdded(World world, int x, int y, int z)
    {
    System.out.println("blockadded");
    this.rotateBlock(world, x ,y, z, ForgeDirection.EAST);
    }
    }
    

    Merci d'avance ^^
    Si quelqu'un a un meilleur code pour une rotation adapté à mon block, je ne dis pas non 😃



  • moi j'ai ceci si je me souviens bien il n'y a pas de metadata pour le bloc

    public class BlockEcran extends Block 
    
    {
    private IIcon sud;
    
    protected BlockEcran(Material material) 
    {
    super(material);
    this.setCreativeTab(CreativeTabs.tabTools);
    
    }
    public void registerBlockIcons(IIconRegister iiconRegister)
        {
    
        this.sud = iiconRegister.registerIcon(ModTutoriel.MODID + ":texture");
        }
      @SideOnly(Side.CLIENT)
       public IIcon getIcon(int side, int metadata)
       {
           return side == 3 && metadata == 0 ? this.sud : (side == 4 && metadata == 1 ? this.sud: (side == 2 && metadata == 2 ? this.sud : (side == 5 && metadata == 3 ? this.sud : this.sud)));
       }
     public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
       {
           int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
           world.setBlockMetadataWithNotify(x, y, z, direction, 2);
       }
    }
    
    


  • Je comprends pas vraiment ce que tu veux dire.



  • Je souhaiterai en fait faire que mon block qui a juste une seule texture pas plusieurs soit orientable.  Ce que j avais fais ne marche même pas car dans la suite j aurai mis des conditions



  • j'édite mon ancien message pour

    cela devrait marcher j'ai pas tester



  • @'pulganr':

    j'édite mon ancien message pour

    cela devrait marcher j'ai pas tester

    Sa ne marche mas, c'est toujours comme avant.


  • Moddeurs confirmés Rédacteurs Administrateurs



  • @'robin4002':

    http://www.minecraftforgefrance.fr/showthread.php?tid=1304#partie2

    Le tuto me demande d'avoir au moins 2 textures or moi je n'en veux que une donc là est le soucis


  • Moddeurs confirmés Rédacteurs Administrateurs

    ? Il n'y a aucun intérêt a rendre orientable ton bloc dans ce cas x)



  • Je ne comprends pas tout mon block ne tourne pas et je ne souhaite pas passer par un item qui le ferait tourner. Je veux juste comme de nombreux blocks de minecraft qu'il soit déjà dans la bonne direction une fois posée.
    Voici la class de mon block :

    
    package mrplaigon.zombarcraftserver.zombarcraftmod.common.block;
    
    import mrplaigon.zombarcraftserver.zombarcraftmod.common.ZombarCraftMod;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.World;
    import net.minecraftforge.common.util.ForgeDirection;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public class BlockBitumeWhite extends BlockZB
    {
    
    private IIcon top;
    
    public BlockBitumeWhite(Material material) 
    {
    super(material);
    }
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
       {
           int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
           world.setBlockMetadataWithNotify(x, y, z, direction, 2);
       }
    @SideOnly(Side.CLIENT)
       public IIcon getIcon(int side, int metadata)
       {
           if(side == 1)
           {
               return this.top;
           }
           return this.blockIcon;
       }
    public void registerBlockIcons(IIconRegister iiconRegister)
       {
        this.blockIcon = iiconRegister.registerIcon(ZombarCraftMod.MODID + ":bitume");
        this.top = iiconRegister.registerIcon(ZombarCraftMod.MODID + ":bitumeWhite");
       }
    }
    
    

  • Moddeurs confirmés Rédacteurs Administrateurs

    Franchement je ne comprends toujours pas ce que tu veux faire. Explique de façon plus clair, donne des exemples, etc …



  • @'robin4002':

    Franchement je ne comprends toujours pas ce que tu veux faire. Explique de façon plus clair, donne des exemples, etc …

    D'accord.
    J'ai créer un block bitume avec la ligne blanche sur la face du dessus, mon block marche bien il a bien les 2 bonnes textures au 2 bon endroits, je souhaite juste désormais l'orienter comme le coffre, le four, la table de craft…de minecraft mais dans ton tuto tu parles d'un item qui orienterait le block, je souhaite m'en passer. En gros je veux juste avoir un block qui s'oriente en fonction du sens du joueur qui le pose.
    Merci d'avance


  • Moddeurs confirmés Rédacteurs Administrateurs

    C'est déjà plus clair. Tu peux envoyer un screenshot du bloc ?
    Par contre, l'item pour faire tourner les blocs n'est absolument pas nécessaire, le code que j'ai donné dans le tuto permet bien de changer le metadata en fonction de la direction dans lequel il est posé, et ça tu en a aussi besoin.
    Et à mon avis tu vas aussi avoir besoin des flipedIcon (regarde BlockDoor).



  • Le code que j'ai doner a des textures sur certaines face et peut s'orrienter normalement mais j'ai des problèmes avec mon éclipse donc je peut pas vérifier 😢



  • @'robin4002':

    C'est déjà plus clair. Tu peux envoyer un screenshot du bloc ?
    Par contre, l'item pour faire tourner les blocs n'est absolument pas nécessaire, le code que j'ai donné dans le tuto permet bien de changer le metadata en fonction de la direction dans lequel il est posé, et ça tu en a aussi besoin.
    Et à mon avis tu vas aussi avoir besoin des flipedIcon (regarde BlockDoor).

    voici le screen :
    http://hpics.li/1feb1f1

    Mais je pensais, la porte c'est composé de 2 blocks, le code ne risque-t-il donc pas de me porter à confusion ?

    @'pulganr':

    Le code que j'ai doner a des textures sur certaines face et peut s'orrienter normalement mais j'ai des problèmes avec mon éclipse donc je peut pas vérifier 😢

    C'est le même code que le mien et cela ne marche pas


  • Moddeurs confirmés Rédacteurs Administrateurs

    Maintenant j'ai compris.

    ​package fr.minecraftforgefrance.tutoriel.common;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.IconFlipped;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.World;
    import net.minecraftforge.common.util.ForgeDirection;
    import net.minecraftforge.common.util.RotationHelper;
    import cpw.mods.fml.client.FMLClientHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public class BlockTutoriel extends Block
    {
        private IIcon blockIcon2, rotateIcon;
    
        protected BlockTutoriel(Material material)
        {
            super(material);
        }
    
        public void registerBlockIcons(IIconRegister iiconRegister)
        {
            this.blockIcon = iiconRegister.registerIcon(ModTutoriel.MODID + ":yellow_black");
            this.rotateIcon = iiconRegister.registerIcon(ModTutoriel.MODID + ":yellow_black_rotate");
            this.blockIcon2 = iiconRegister.registerIcon(ModTutoriel.MODID + ":yellow");
        }
    
        public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
        {
            int direction = (MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3) % 2;
            world.setBlockMetadataWithNotify(x, y, z, direction, 2);
        }
    
        @SideOnly(Side.CLIENT)
        public IIcon getIcon(int side, int metadata)
        {
            if(side == 1)
            {
                return metadata == 0 ? blockIcon : rotateIcon;
            }
            return this.blockIcon2;
        }
    }
    

    yellow_black = texture du haut, yellow_black_rotate = même texture mais tourné de 90 °
    J'ai pas réussi à utiliser les IconFlipped



  • Merci beaucoup de votre aide à tous


Log in to reply