• Faire un nouveau four

    1.6.x
    70
    0 Votes
    70 Messages
    26k Vues
    BrokenSwingB
    Merci de rechercher la prochaine fois : https://www.minecraftforgefrance.fr/showthread.php?tid=2017
  • Rendu complexe de bloc via ISBRH

    1.6.x
    40
    0 Votes
    40 Messages
    17k Vues
    robin4002R
    Les textures des ISBRH fonctionnent comme les textures des blocs normaux, c’est un iicon qui représente une texture de 16x16. Tu as donc les mêmes possibilités (changer l’icon en fonction du side, ou de IBlockAccess + x + y + z) et les mêmes limitations.
  • Rendre son bloc orientable

    1.7.x
    16
    0 Votes
    16 Messages
    13k Vues
    robin4002R
    Oui c’est pour les importations, tu n’avais pas importé ForgeDirection donc forcement il ne le reconnaissait pas.
  • Les BlockStates

    1.8
    3
    0 Votes
    3 Messages
    5k Vues
    MapperM
    Merci pour ce tuto. À première vue, il fait très peur de par sa taille, mais au final vu que ça détaille toutes les possibilités, ce n’est pas étonnant Il y a juste une chose qui est à corriger, lors des proxys (en tout cas en 1.8.9, Forge 1.8.9-11.15.1.1722): ModelBakery.addVariantName(Item.getItemFromBlock(Tuto.tutoStateEnum), "tuto:tuto_block_enum_variant_1", "tuto:tuto_block_enum_variant_2"); addVariantName est devenu obsolète et a été remplacé par registerItemVariants, et on doit utiliser new ResourceLocation(“nom”) pour les noms. Ce qu donne, si je n’ai pas fait de bêtise: ModelBakery.registerItemVariants(Item.getItemFromBlock(Tuto.tutoStateEnum), new ResourceLocation("tuto:tuto_block_enum_variant_1"), new ResourceLocation("tuto:tuto_block_enum_variant_2")); Chez moi, ça marche!
  • Animer un rendu TESR

    1.7.x
    1
    0 Votes
    1 Messages
    3k Vues
    Personne n'a répondu
  • Rajouter des effets à des blocs

    1.7.x
    24
    0 Votes
    24 Messages
    12k Vues
    SCAREXS
    Je crois pas qu’ils aient un nom non-obfusqué. Mais c’est possible que l’anvil n’utilise pas de tileEntity.
  • Les entités de bloc (TileEntity)

    1.6.x
    17
    0 Votes
    17 Messages
    11k Vues
    YorwanY
    çà doit etre tout bete , mais y a t’il moyen de détecter un click droit directemetn dans le tile entity , sans passer par la class du block ?
  • Les escaliers

    1.6.x
    33
    0 Votes
    33 Messages
    13k Vues
    D
    D’accord merci
  • Créer un bloc avec des metadatas

    1.7.x
    44
    0 Votes
    44 Messages
    24k Vues
    bin4r1sB
    Pour une raison inconnue, du jour au lendemain, ça a marché (robin4002 avait peut-être raison au final parce que entre temps, j’ai remplacé “Copper Crusher” par “Crusher” mais je n’avais pas testé…)
  • Bloc avec texture animée

    1.7.x
    22
    0 Votes
    22 Messages
    9k Vues
    pulganP
    Je vais rajouter la vidéo et changer l’image gif et le tuto /astuce sera fini
  • Créer une nouvelle vitre

    1.6.x
    17
    0 Votes
    17 Messages
    8k Vues
    A
    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 !
  • Animer vos rendus TESR.

    1.6.4
    35
    0 Votes
    35 Messages
    11k Vues
    robin4002R
    J’ai seulement fait le tutoriel sur les TESR, et la version en texte est ici : http://minecraftforgefrance.fr/showthread.php?tid=1509 Mais je pense que ce tutoriel fonctionne aussi en 1.7.10, et si il y a des erreurs il ne devrait pas en avoir beaucoup.
  • Rendu complexe de bloc via TESR

    1.6.x
    215
    0 Votes
    215 Messages
    75k Vues
    Bowser338B
    Ok super merci pour l’info
  • Un bloc basique

    1.6.x
    70
    0 Votes
    70 Messages
    32k Vues
    A
    aaah mince autant pour moi xD suis en 1.7.2 de mon coté peut être pour cela ^^
  • Trapdoor et clé

    1.6.x
    9
    0 Votes
    9 Messages
    5k Vues
    pulganP
    peut tu montrer comment faire avec une porte? j’ai fait le test par moi meme mais je me suis un peu perdu alors …
  • Les metadata de bloc

    1.6.x
    56
    0 Votes
    56 Messages
    20k Vues
    Infectiion21I
    Alors ? Quelqu’un saurait m’aider :s ??
  • Direction de bloc

    1.6.x
    44
    0 Votes
    44 Messages
    16k Vues
    isadorI
    cela ne fait strictement rien… mon rendu: package Portal; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import org.lwjgl.opengl.GL11; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; public class RenderTable implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); // cree un "etage" pour le rendu de l'inventaire this.renderInInventory(tessellator, renderer, block, metadata); // sauvegarde "l'etage" pour le rendu de l'inventaire //etc etc } private void renderInInventory(Tessellator tessellator, RenderBlocks renderer, Block block, int metadata) { tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1F, 1.0F); renderer.renderFaceYNeg(block, 1.0D, 1.0D, 1.0D, block.getIcon(0, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1.0F); renderer.renderFaceYPos(block, 1.0D, 1.0D, 1.0D, block.getIcon(1, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1F); renderer.renderFaceZNeg(block, 1.0D, 1.0D, 1.0D, block.getIcon(2, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1.0F); renderer.renderFaceZPos(block, 1.0D, 1.0D, 1.0D, block.getIcon(3, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1F, 1.0F, 1.0F); renderer.renderFaceXNeg(block, 1.0D, 1.0D, 1.0D, block.getIcon(4, metadata)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 1.0F, 1.0F); renderer.renderFaceXPos(block, 1.0D, 1.0D, 1.0D, block.getIcon(5, metadata)); tessellator.draw(); GL11.glTranslatef(1F, 1F, 1F); } 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); } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { GL11.glPushMatrix(); GL11.glRotatef(90 * world.getBlockMetadata(x, y, z), 0.0F, 1.0F, 0.0F); GL11.glPopMatrix(); renderer.setRenderBounds( 0.0F, 0.0F, 0.0F, 3.0F, 3.0F, 1.0F); // cree un "etage" pour le rendu en jeu //renderer.setRenderBounds(minX, minY, minZ, maxX, maxY, maxZ); renderer.renderStandardBlock(block, x, y, z); //sauvegarde "l'etage" pour le rendu en jeu //etc etc return true; } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { // TODO Auto-generated method stub return ClientProxy.renderTableId; } } mon bloc: package Portal.Blocks; import java.util.Iterator; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import Portal.ClientProxy; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class portalwowe extends Block { public portalwowe(int id) { super(id, Material.portal); this.setCreativeTab(CreativeTabs.tabBlock); } /** * 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 int isProvidingWeakPower(IBlockAccess par1IBlockAccess, int x, int y, int z, int par5) { return this.getPowerSupply(par1IBlockAccess.getBlockMetadata(x, y, z)); } public void breakBlock(World world, int x, int y, int z, int par5, int par6) { if(this.getPowerSupply(par6) > 0) { this.notifyChange(world, x, y, z); } super.breakBlock(world, x, y, z, par5, par6); } protected void notifyChange(World world, int x, int y, int z) { world.notifyBlocksOfNeighborChange(x, y, z, this.blockID); world.notifyBlocksOfNeighborChange(x, y - 1, z, this.blockID); } public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { if(!world.isRemote) { int l = this.getPowerSupply(world.getBlockMetadata(x, y, z)); if(l == 0) { this.setStateIfMobInteractsWithPlate(world, x, y, z, l); } } } protected void setStateIfMobInteractsWithPlate(World world, int x, int y, int z, int par5) { int i1 = this.getPlateState(world, x, y, z); boolean flag = par5 > 0; boolean flag1 = i1 > 0; if(par5 != i1) { world.setBlockMetadataWithNotify(x, y, z, this.getMetaFromWeight(i1), 2); this.notifyChange(world, x, y, z); world.markBlockRangeForRenderUpdate(x, y, z, x, y, z); } if(!flag1 && flag) { world.playSoundEffect((double)x + 0.5D, (double)y + 0.1D, (double)z + 0.5D, "random.click", 0.3F, 0.5F); } else if(flag1 && !flag) { world.playSoundEffect((double)x + 0.5D, (double)y + 0.1D, (double)z + 0.5D, "random.click", 0.3F, 0.6F); } if(flag1) { world.scheduleBlockUpdate(x, y, z, this.blockID, this.tickRate(world)); } } public void updateTick(World world, int x, int y, int z, Random rand) { if(!world.isRemote) { int l = this.getPowerSupply(world.getBlockMetadata(x, y, z)); if(l > 0) { this.setStateIfMobInteractsWithPlate(world, x, y, z, l); } } } public int tickRate(World world) { return 20; } public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; } protected int getPowerSupply(int metadata) { return metadata == 1 ? 15 : 0; } protected int getMetaFromWeight(int metadata) { return metadata > 0 ? 1 : 0; } protected int getPlateState(World world, int x, int y, int z) { List list = world.getEntitiesWithinAABBExcludingEntity((Entity)null, this.getSensitiveAABB(x, y, z)); //List list = world.getEntitiesWithinAABB(EntityLivingBase.class, this.getSensitiveAABB(x, y, z)); //List list = world.getEntitiesWithinAABB(EntityPlayer.class, this.getSensitiveAABB(x, y, z)); if(list != null && !list.isEmpty()) { Iterator iterator = list.iterator(); while(iterator.hasNext()) { Entity entity = (Entity)iterator.next(); if(!entity.doesEntityNotTriggerPressurePlate()) { return 15; } } } return 0; } protected AxisAlignedBB getSensitiveAABB(int x, int y, int z) { float f = 0.125F; return AxisAlignedBB.getAABBPool().getAABB((double)((float)x + f), (double)y, (double)((float)z + f), (double)((float)(x + 1) - f), (double)y + 0.25D, (double)((float)(z + 1) - f)); } public int isProvidingStrongPower(IBlockAccess blockAccess, int x, int y, int z, int side) { return side == 1 ? this.getPowerSupply(blockAccess.getBlockMetadata(x, y, z)) : 0; } @SideOnly(Side.CLIENT) public int getRenderType() { return ClientProxy.renderTableId; } @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess blockAccess, int x, int y, int z, int side) { return true; } }
  • Faire tourner un block Techne

    1.6.x
    7
    0 Votes
    7 Messages
    3k Vues
    J
    Ok merci beaucoup
  • Une nouvelle barrière et un nouveau mur

    1.6.x
    1
    1
    0 Votes
    1 Messages
    2k Vues
    Personne n'a répondu
  • Créer un gâteau

    1.6.x
    10
    0 Votes
    10 Messages
    6k Vues
    robin4002R
    https://github.com/FFMT/ModTutoriel/commit/29281f3993cb5ce03c3ff8fedb9a4b097bc61abe J’ai corrigé quelques petits problèmes de noms (il y avait le mauvais modid dans l’enregistrement d’un item, ça faisait crash), j’ai renommé les variables en anglais, et j’ai ajouté un son lors du placement du bloc. Si tu pouvais adapter le tutoriel, ça serait cool (sinon je le ferai moi).