Résolu Recette smelting custom.
-
Je me posais la question car mon blockEgg est un rendu TESR , donc il a un rendu dans l’inventaire dois utiliser celui la ou faire un nouveau j’ai bien fait l’itemBlockEgg je l’ai juste oublier
package mod.common.block; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; public class ItemBlockEgg extends ItemBlock { public ItemBlockEgg(Block block) { super(block); this.setMaxDamage(0); this.setHasSubtypes(true); } public int getMetadata(int metadata) { return metadata; } @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int metadata) { return this.field_150939_a.getIcon(2, metadata); } public String getUnlocalizedName(ItemStack stack) { int metadata = stack.getItemDamage(); if(metadata < 0 || metadata >= BlockEgg.subBlock.length) { metadata = 0; } return super.getUnlocalizedName() + "." + BlockEgg.subBlock[metadata]; } }
-
Il te manque la méthode getSubItems
-
Dans le tutoriel il n’y a pas de getSubItems il y a juste
public void getSubBlocks(Item item, CreativeTabs tabs, List list) { for(int i = 0; i < subBlock.length; i++) { list.add(new ItemStack(item, 1, i)); } }
Mais je ne veut pas qu’il soit dans la creativTabs
-
Tu veux quoi alors ?
-
Je veut qu’il ne soit accessible que par ma machine , donc il ne faut pas qu’il soit dans le menu minecraft ^^
, la pour l’instant j’ai l’impression qu’il n’y a pas de metadatas , quand je fais /give Legrandfifou modminecraft:block_egg 1 2 il me donne juste block_egg … -
Comment tu sais que le metadata est pas donné ? Il s’affiche pas avec F3 + h ? C’est normal. Affiche le metadata dans la fonction addInformation, tu veras que le metadata est bon.
-
Je suis obliger d’enregistrer le blockEgg ( le principal ) pour que les métadatas se créer car du coup avec
public void getSubBlocks(Item item, CreativeTabs tabs, List list) { for(int i = 0; i < subBlock.length; i++) { list.add(new ItemStack(item, 1, i)); } }
Il apparaisse ^^
Donc je n’enregistrais qu’un seul , mais est-ce normal que même si le metadata est différent il se stack ?
-
Non, ils peuvent pas se stacker, mais les metadatas ne s’enregistrent pas. La fonction getSubBlocks ne sert à rien si t’utilises un ItemBlock custom
-
J’utilise celui la ( celui du tutoriel )
package mod.common.block; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; public class ItemBlockEgg extends ItemBlock { public ItemBlockEgg(Block block) { super(block); this.setMaxDamage(0); this.setHasSubtypes(true); } public int getMetadata(int metadata) { return metadata; } @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int metadata) { return this.field_150939_a.getIcon(2, metadata); } public String getUnlocalizedName(ItemStack stack) { int metadata = stack.getItemDamage(); if(metadata < 0 || metadata >= BlockEgg.subBlock.length) { metadata = 0; } return super.getUnlocalizedName() + "." + BlockEgg.subBlock[metadata]; } }
EDIT : Olalala , bette erreur c’est sur que si j’enregistre pas dans le GameRegistry l’ItemBlockEgg ca va pas marcher xDD
-
Il faut l’enregistrer avec le block, GameRegistry.registerBlock(tonBlock, ItemBlockEgg.class, “tonNom”)
-
Oui je ne l’avais pas fait , voila pourquoi ca buggais , sinon les particules sont toujours rose/noir à cause des metdatas je dois gerer ca comment :s ?
-
Envoi la classe de ton block.
-
blockEgg
package mod.common.block; import java.util.List; import java.util.Random; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import mod.ModMinecraft; import mod.client.ClientProxy; import mod.common.block.entity.TileEntityAnalyzer; import mod.common.block.entity.TileEntityBarriere; import mod.common.block.entity.TileEntityEgg; import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockEgg extends Block { // METADATA public BlockEgg() { super(Material.dragonEgg); } public static String[] subBlock = new String[] {"egg1", "egg2", "egg3", "egg4"}; public IIcon[] iconArray = new IIcon[subBlock.length]; public void registerBlockIcons(IIconRegister iconRegister) { for(int i = 0; i < subBlock.length; i++) { this.iconArray[ i] = iconRegister.registerIcon(ModMinecraft.MODID + ":" + subBlock*); } } public IIcon getIcon(int side, int metadata) { return metadata >= 0 && metadata < subBlock.length ? this.iconArray[metadata] : this.iconArray[0]; } public int damageDropped(int metadata) { return metadata; } //AJOUT DU TILEENTITY public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } public int getRenderType() { return ClientProxy.tesrRenderId; } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityEgg(); } @Override public boolean hasTileEntity(int metadata) { return true; } }
Et dans le register
package mod.common.block; import cpw.mods.fml.common.registry.GameRegistry; import mod.ModMinecraft; import mod.common.block.entity.TileEntityAnalyzer; import mod.common.block.entity.TileEntityBarriere; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.world.biome.BiomeGenBase; public class BlockRegister { public static Block BlockBarriere; public static Block BlockTronc; public static Block BlockFeuille; public static Block BlockPousse; public static Block BlockAnalyzer; public static Block BlockAmbre; public static Block BlockEgg; public static Block BlockEggIndominus; public static Block BlockFossiliser; public static void register() { BlockBarriere = new BlockBarriere(Material.rock).setCreativeTab(CreativeTabs.tabBlock).setBlockTextureName(ModMinecraft.MODID + ":partBarriere"); BlockTronc = new BlockTronc().setBlockName("blockTronc").setCreativeTab(CreativeTabs.tabBlock).setHardness(2.0F); BlockFeuille = new BlockFeuille().setBlockName("blockFeuille").setCreativeTab(CreativeTabs.tabBlock).setHardness(0.1F).setBlockTextureName(ModMinecraft.MODID + ":blockFeuille"); BlockPousse = new BlockPousse().setBlockName("blockPousse").setHardness(0.5F).setBlockTextureName(ModMinecraft.MODID + ":blockPousse"); BlockAnalyzer = new BlockAnalyzer().setBlockName("blockAnalyzer").setCreativeTab(CreativeTabs.tabBlock); BlockAmbre = new BlockAmbre().setBlockName("blockAmbre").setCreativeTab(CreativeTabs.tabBlock); BlockEgg = new BlockEgg().setBlockName("blockEgg").setBlockTextureName(ModMinecraft.MODID + ":partEgg"); BlockEggIndominus = new BlockEggIndominus(Material.dragonEgg).setBlockName("blockEggIndominus").setBlockTextureName(ModMinecraft.MODID + ":partEgg");; BlockFossiliser = new BlockFossiliser(Material.rock).setBlockName("blockFossiliser").setBlockTextureName(ModMinecraft.MODID + ":blockFossiliser"); GameRegistry.registerBlock(BlockAnalyzer,"block_analyzer"); GameRegistry.registerBlock(BlockBarriere, "block_barriere"); GameRegistry.registerBlock(BlockTronc, "block_tronc"); GameRegistry.registerBlock(BlockFeuille, "block_feuille"); GameRegistry.registerBlock(BlockPousse, "block_pousse"); GameRegistry.registerBlock(BlockAmbre, "block_ambre"); GameRegistry.registerBlock(BlockEgg, ItemBlockEgg.class, "block_egg"); GameRegistry.registerBlock(BlockEggIndominus, "block_eggindominus"); GameRegistry.registerBlock(BlockFossiliser, "block_fossiliser"); } }
J’ai mis le ```java
.setBlockTextureName(ModMinecraft.MODID + “:partEgg”); -
Tu utilises un TESR ET les des icones ?
PS : pense à mettre le nom de ton block dans les icones.
PS2 : c’est une mauvaise idée d’appeler ta classe ModMinecraft (qui en plus est dans le package mod), çà peut prêter à confusion. -
J’ai un rendu avancé via TESR et j’y ai par la suite ajouté des metadatas , Je changerais ModMinecraft quand j’aurais fini la premières version car il est un peu utiliser par tout et faut que remplace tout ^^
-
Pour le nom : eclipse a ajouté le refactor, tu sélectionnes le nom de ta classe et tu fais Alt + shift + R et tu tapes le nouveau nom.
Alors pourquoi tu utilises les icones ? Les metadatas n’ont aucun rapport avec les icones.
-
J’ai suivi le tutoriel : http://minecraftforgefrance.fr/showthread.php?tid=743
Merci c’est fait
-
Tu peux retirer tout ce qui est en rapport avec les icones si t’utilises les TESR. Dans ton TESR, tu as accès à la variable de ta TileEntity et donc au metadata de ton block (tile.getBlockMetadata()), ensuite tu as juste à le mettre dans un bloc switch ou if.
-
D’accord merci ca marche nickel avec
else if(block == BlockRegister.BlockEgg) { if(metadata == 0) { GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityEggSpecialRenderer.texture); TileEntityEggSpecialRenderer.model.renderAll(); GL11.glPopMatrix(); } if(metadata == 1) { GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityEggSpecialRenderer.texture); TileEntityEggSpecialRenderer.model.renderAll(); GL11.glPopMatrix(); } if(metadata == 2) { GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityEggSpecialRenderer.texture); TileEntityEggSpecialRenderer.model.renderAll(); GL11.glPopMatrix(); } if(metadata == 3) { GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityEggSpecialRenderer.texture); TileEntityEggSpecialRenderer.model.renderAll(); GL11.glPopMatrix(); } if(metadata == 4) { GL11.glPushMatrix(); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(0.0F, -1.0F, 0.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(TileEntityEggSpecialRenderer.texture); TileEntityEggSpecialRenderer.model.renderAll(); GL11.glPopMatrix(); } }
J’aime même réussi a rajouter une recette différente ( tout seul Ta vu ca ? Je commence a piger )
Merci en tout cas
-
Balise résolu ?