Block direction 1 seul texture



  • Bonjour,

    Je cherche a refaire la Terracotta de la nouvelle snapshot. En gros je voudrai créer un block qui s'oriente avec 1 seul texture. J'ai essayé de regardé tous les block orientable (Four, Bois, Citrouille…) sauf que rient de tous sa na fonctionné. Donc la je suis revenu au code normal sans bien avancé.

    package fr.darkvince.ultrav2.snapshot;
    
    import javax.swing.Icon;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockBush;
    import net.minecraft.block.BlockContainer;
    import net.minecraft.block.BlockDirectional;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IIconRegister;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.init.Blocks;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.tileentity.TileEntityFurnace;
    import net.minecraft.util.Facing;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.IBlockAccess;
    import net.minecraft.world.World;
    import net.minecraftforge.common.util.ForgeDirection;
    
    public class BlockTerracotta extends BlockDirectional
    {
    
    public BlockTerracotta(Material p_i45401_1_) {
    super(p_i45401_1_);
    // TODO Auto-generated constructor stub
    }
    
    public void onBlockPlacedBy(World par1World, int x, int y, int z, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
       {
           int whichDirectionFacing = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
           par1World.setBlockMetadataWithNotify(x, y, z, whichDirectionFacing, 2);
       }
    
    }
    

  • Administrateurs

    Salut,
    Il faire comme la porte, générer d'autres textures mais avec une rotation à partir du même fichier avec les IconFlipped



  • @'robin4002':

    Salut,
    Il faire comme la porte, générer d'autres textures mais avec une rotation à partir du même fichier avec les IconFlipped

    Merci voilà se que j'ai trouvé est ce que c'est sa avant que je continu

    package fr.darkvince.ultrav2.snapshot;
    
    import javax.swing.Icon;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockBush;
    import net.minecraft.block.BlockContainer;
    import net.minecraft.block.BlockDirectional;
    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.init.Blocks;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.tileentity.TileEntityFurnace;
    import net.minecraft.util.Facing;
    import net.minecraft.util.IIcon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.IBlockAccess;
    import net.minecraft.world.World;
    import net.minecraftforge.common.util.ForgeDirection;
    
    public class BlockTerracotta extends BlockDirectional
    {
    public IIcon topDoorIcon;
    public IIcon[] flippedIcons = new IIcon[2];
    
    public BlockTerracotta(Material p_i45401_1_) {
    super(p_i45401_1_);
    // TODO Auto-generated constructor stub
    }
    
    public IIcon getBlockTexture(IBlockAccess par1IBlockAccess, int par2,
    int par3, int par4, int par5) {
    if (par5 == 1 || par5 == 0) {
    return this.blockIcon;
    }
    int meta = func_150012_g(par1IBlockAccess, par2, par3, par4);
    boolean flag = (meta & 4) != 0;
    int halfMeta = meta & 3;
    boolean flipped = false;
    
    if (flag) {
    if (halfMeta == 0 && par5 == 2)
    flipped = !flipped;
    else if (halfMeta == 1 && par5 == 5)
    flipped = !flipped;
    else if (halfMeta == 2 && par5 == 3)
    flipped = !flipped;
    else if (halfMeta == 3 && par5 == 4)
    flipped = !flipped;
    } else {
    if (halfMeta == 0 && par5 == 5)
    flipped = !flipped;
    else if (halfMeta == 1 && par5 == 3)
    flipped = !flipped;
    else if (halfMeta == 2 && par5 == 4)
    flipped = !flipped;
    else if (halfMeta == 3 && par5 == 2)
    flipped = !flipped;
    if ((meta & 16) != 0)
    flipped = !flipped;
    }
    
    if (flipped)
    return flippedIcons[(meta & 8) != 0 ? 1 : 0];
    else
    return (meta & 8) != 0 ? this.topDoorIcon : this.blockIcon;
    }
    
    private int func_150012_g(IBlockAccess par1iBlockAccess, int par2, int par3, int par4) {
    // TODO Auto-generated method stub
    return 0;
    }
    
    public IIcon getIcon(int par1, int par2) {
    return this.blockIcon;
    }
    
    public void registerIcons(IIconRegister iconRegister) {
    this.blockIcon = iconRegister.registerIcon(":ultrav2:glazed_terracotta_black");
    this.topDoorIcon = iconRegister.registerIcon("ultrav2:glazed_terracotta_black");
    this.flippedIcons[0] = new IconFlipped(blockIcon, true, false);
    this.flippedIcons[1] = new IconFlipped(topDoorIcon, true, false);
    }
    
    }
    

  • Administrateurs

    Alors j'ai parlé du code de la porte juste pour que tu vois le IconFlipped, pour le reste faut pas tout reprendre bêtement, il faut adapter à la situation.