Non résolu Recette de four avec metadata
-
Bonjour, je veux faire cuire mon block, qui a une métadata, pour qu’il donne un item mais ca ne fonctionne pas.
J’ai vérifié, avec un autre block (ou item), ca fonctionne bien.GameRegistry.addSmelting(new ItemStack(BlockInit.ORE_OVERWORLD, 1, 0), new ItemStack(ItemInit.tnt_ingot), 20.0F);
Comment faire ?
Merci. :beaming_face_with_smiling_eyes: -
Bonsoir,
Le deuxième argument d’itemstack c’est la quantité, le metadata c’est le troisième.Ici tu mets l’item ayant le metadata 0, donc ça revient à la même chose que s’il n’y a avait pas de metadata.
-
@robin4002 d’accord mais ca ne marche toujours pas meme si je met 1.
Pour meiux comprendre, voici la classe du block etc.Block
public class BlockOreMod extends Block implements IHasModel, IMetaName { public static final PropertyEnum<EnumHandler.EnumType> VARIANT = PropertyEnum.<EnumHandler.EnumType>create("variant", EnumHandler.EnumType.class); private String name, dimension; public BlockOreMod(String name, String dimension) { super(Material.ROCK); setUnlocalizedName(name); setRegistryName(name); setCreativeTab(Main.GbTab); setHardness(4.0F); setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, EnumHandler.EnumType.TNT)); this.name = name; this.dimension = dimension; BlockInit.BLOCKS.add(this); ItemInit.ITEMS.add(new ItemBlockVariants(this).setRegistryName(this.getRegistryName())); } @Override public int damageDropped(IBlockState state) { return ((EnumHandler.EnumType)state.getValue(VARIANT)).getMeta(); } @Override public int getMetaFromState(IBlockState state) { return ((EnumHandler.EnumType)state.getValue(VARIANT)).getMeta(); } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(VARIANT, EnumHandler.EnumType.byMetadata(meta)); } @Override public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { return new ItemStack(Item.getItemFromBlock(this), 1, getMetaFromState(world.getBlockState(pos))); } @Override public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items) { for(EnumHandler.EnumType variant : EnumHandler.EnumType.values()) { items.add(new ItemStack(this, 1, variant.getMeta())); } } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {VARIANT}); } @Override public String getSpeciaName(ItemStack stack) { return EnumHandler.EnumType.values() [stack.getItemDamage()].getName(); } @Override public void registerModels() { for(int i = 0; i < EnumHandler.EnumType.values().length; i++) { Main.proxy.registerVariantRenderer(Item.getItemFromBlock(this), i, "ore_" + this.dimension + "_" + EnumHandler.EnumType.values()[i].getName(), "inventory"); } } }
IHasModel
public interface IHasModel { public void registerModels(); }
IMetaName
public interface IMetaName { public String getSpeciaName(ItemStack stack); }
EnumHandler
public class EnumHandler { public static enum EnumType implements IStringSerializable { TNT(0, "tnt_ore"), URANIUM(1, "uranium"); private static final EnumType[] META_LOOKUP = new EnumType[values().length]; private final int meta; private final String name, unlocializedName; private EnumType(int meta,String name) { this(meta, name, name); } private EnumType(int meta,String name, String unlocializedName) { this.meta = meta; this.name = name; this.unlocializedName = unlocializedName; } @Override public String getName() { return this.name; } public int getMeta() { return this.meta; } public String getUnlocializedName() { return this.unlocializedName; } @Override public String toString() { return this.name; } public static EnumType byMetadata(int meta) { return META_LOOKUP[meta]; } static { for(EnumType enumtype : values()) { META_LOOKUP[enumtype.getMeta()] = enumtype; } } } }
-
up :anxious_face_with_sweat: