1.7.2 Rotation rendu ISBRH



  • Salut, oui c'est encore moi toujours avec mon rendu ISBRH 🙂

    Après la résolution de mon ancien problème j'ai voulu m'attaque a une autre chose mais toujours sur le mêmé bloc. Je cherche a pouvoir faire tourné le bloc j'ai donc était voir les class de la bûche de bois mais rien de très concluent, j' ai aussi etait voir sur les tuto mais il y en a que pour TESR.

    Merci d avance pour vos réponce
    Cordialement Sidney


  • Moddeurs confirmés Modérateurs

    Ce ne fait pas partir tu isbrh mais juste de la direction de bloc. Va voir le tuto du forum



  • Oui mais la rotation sur le tuto fais juste changer les faces du bloc et non la forme. A moins que je me soit trompé de tuto.


  • Moddeurs confirmés

    Ce n'est pas possible, tu dois faire toutes les possibilités et mettre une condition, avec un metadata par exemple, comme les escaliers, ça doit ressemblé à ça (en moins long sans doute)
    https://github.com/FFMT/nanotech_mod/blob/1.7/common/fr/mcnanotech/kevin_68/nanotechmod/city/client/renderer/tileentity/TileEntityTrailRenderISBRH.java
    Ce code sert d'exemple, il est sous licence donc merci de la respecter.



  • Ok merci !

    Bon je crois savoir se que je vais faire se soir 😉



  • Salut !

    Cela fait quelque heurs que j'essaye de reglé se problème maintenant mais je n'est aucun resultat correct.

    J’utilise un Tile entity mais j ai toujours un résultat random. 😕

    Voic le code de mon bloc: ```java

    package modCrafttech.common;

    import modCrafttech.proxy.CraftechClientProxy;
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.client.renderer.texture.IconRegister;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.item.ItemStack;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.AxisAlignedBB;
    import net.minecraft.util.Icon;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.IBlockAccess;
    import net.minecraft.world.World;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;

    public class lamp1 extends Block {

    int test2 =0;

    public lamp1(int id)
    {
    super(id, Material.rock);

    this.setCreativeTab(ModCraftech.Craftech);
    }

    public boolean renderAsNormalBlock()
    {

    return false;
    }

    public boolean isOpaqueCube()
    {
    return false;
    }

    @SideOnly(Side.CLIENT)
    public boolean shouldSideBeRendered(IBlockAccess blockAccess, int x, int y, int z, int side)
    {
    return true;
    }
    public TileEntity createTileEntity(World world, int metadata)
    {
    if(metadata == 0)
    return new TileEntitylamp();

    else
    return null;

    }

    public boolean hasTileEntity(int metadata)
    {
    if(metadata == 0 || metadata == 2)
    return true;
    else
    return false;
    }
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
    {
    int direction1 = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
    TileEntity te = world.getBlockTileEntity(x, y, z);
    if(te instanceof TileEntitylamp)
    {
    ((TileEntitylamp)te).setDirection((byte)direction1);
    world.markBlockForUpdate(x, y, z);
    }
    }

    public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
    {
    TileEntity te = world.getBlockTileEntity(x, y, z);

    if(te instanceof TileEntitylamp)
    {
    int direction1 = ((TileEntitylamp)te).getDirection();
    test2 = direction1;
    if(direction1 == 0)
    {

    // direction 0
    return AxisAlignedBB.getAABBPool().getAABB((double)x +this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + (1.0F-(0.0625F*14)));

    }
    else if(direction1 == 1)
    {

    return AxisAlignedBB.getAABBPool().getAABB((double)x +(1.0F-(0.0625F2)), (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ);
    //direction 1 Correct
    //etc … jusqu'à 3
    }
    else if(direction1 == 2)
    {
    return AxisAlignedBB.getAABBPool().getAABB((double)x +this.minX, (double)y + this.minY, (double)z + (1.0F-(0.0625F
    2)), (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ);
    //direction 1
    //etc ... jusqu'à 3
    }
    else if(direction1 == 3)
    {
    return AxisAlignedBB.getAABBPool().getAABB((double)x +this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + (1.0F-(0.0625F*14)), (double)y + this.maxY, (double)z + this.maxZ);
    //direction 1
    //etc ... jusqu'à 3
    }
    }
    return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ);
    // tile entity invalide, pas de direction, donc valeur par défaut (ne devrait pas arriver en temps normal)
    }

    @SideOnly(Side.CLIENT)
    public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z)
    {
    TileEntity te = world.getBlockTileEntity(x, y, z);
    if(te instanceof TileEntitylamp)
    {
    int direction1 = ((TileEntitylamp)te).getDirection();
    if(direction1 == 0)
    {
    // direction 0
    return AxisAlignedBB.getAABBPool().getAABB((double)x +this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + (1.0F-(0.0625F*14)));

    }
    else if(direction1 == 1)
    {
    return AxisAlignedBB.getAABBPool().getAABB((double)x +(1.0F-(0.0625F*2)), (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ);
    //direction 1 Correct
    //etc ... jusqu'à 3
    }

    else if(direction1 == 2)
    {
    return AxisAlignedBB.getAABBPool().getAABB((double)x +this.minX, (double)y + this.minY, (double)z + (1.0F-(0.0625F2)), (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ);
    //direction 1
    //etc ... jusqu'à 3
    }
    else if(direction1 == 3)
    {
    return AxisAlignedBB.getAABBPool().getAABB((double)x +this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + (1.0F-(0.0625F
    14)), (double)y + this.maxY, (double)z + this.maxZ);
    //direction 1
    //etc ... jusqu'à 3
    }
    }
    return AxisAlignedBB.getAABBPool().getAABB((double)x + this.minX, (double)y + this.minY, (double)z + this.minZ, (double)x + this.maxX, (double)y + this.maxY, (double)z + this.maxZ);
    }
    @SideOnly(Side.CLIENT)

    public int getRenderType()
    {

    if(test2 == 0)
    {

    return CraftechClientProxy.lamp2;
    }
    else if(test2 == 1)
    {

    return CraftechClientProxy.lamp2;
    }
    else if(test2 == 2)
    {

    return CraftechClientProxy.lamp;
    }
    else if(test2 == 3)
    {

    return CraftechClientProxy.lamp;
    }
    return test2;
    }

    }

    
    Cordialement Sidney

  • Moddeurs confirmés Rédacteurs Administrateurs

    Tes conditions dans getRenderType ne servent à rien, ça ne fonctionnera pas comme ça.
    À mon avis le plus simple est de faire le rendu dans le sens voulu en fonction de la direction. Donc en gros, tu laisse la classe du bloc comme ça (enfin sans les conditions dans getRenderType) et dans la fonction renderWorldBlock du rendu, utilise :

    {
    TileEntity te = world.getBlockTileEntity(x, y, z);
    if(te instanceof TileEntitylamp)
    {
    int direction = ((TileEntitylamp)te).getDirection();
    if(direction == 0)
    {
    renderer.setRenderBounds(0F, 0F, 0F, 0.5F, 1F, 1F);
    }
    else if(direction == 1)
    {
    renderer.setRenderBounds(0F, 0F, 0F, 1F, 1F, 0.5F);
    // etc …
    }
    return true;
    }
    


  • Merci beaucoup !
    😄


Log in to reply