1.12.2 Recettes 1.12.2



  • Bonjour, j'ai créé un minerai grâce à un tutoriel : (partie 1 ) https://www.youtube.com/watch?v=DcUSKLmtU58&list=PLiDUvCGH5WEUEV9nc0Ll2pzUFmSFc21uR&index=7 (partie 2) https://www.youtube.com/watch?v=tjlhLQ78lOk&list=PLiDUvCGH5WEUEV9nc0Ll2pzUFmSFc21uR&index=8.

    Je veux, avec ce bloc, faire une recette (four ou table).

    Mon code :

    Classe du 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");
            }
        }
        
    }
    
    

    Classe ItemBlock

    public class ItemBlockVariants extends ItemBlock
    {
    
        public ItemBlockVariants(Block block)
        {
            super(block);
            setHasSubtypes(true);
            setMaxDamage(0);
        }
        
        @Override
        public int getMetadata(int damage)
        {
            return damage;
        }
        
        @Override
        public String getUnlocalizedName(ItemStack stack)
        {
            return super.getUnlocalizedName() + "_" + ((IMetaName)this.block).getSpeciaName(stack);
        }
    
    }
    
    

    IMetaName

    public interface IMetaName
    {
        public String getSpeciaName(ItemStack stack);
    }
    
    

    EnumHandler

    public class EnumHandler
    {
        public static enum EnumType implements IStringSerializable
        {
            TNT(0, "tnt_ore");
            
            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;
                }
            }
        }
    }
    
    


  • Salut! La personne qui fait les tutoriels dont tu t'es inspiré pour ton minerai à également fait un tutoriel pour faire des recettes tu peux aller y jeter un coup d'oeil^^ (je n'ai pas encore fais de crafts perso donc j'ai pas d'exemple concret mais c'est avec du .json de mémoire)



  • @BlueZikSè oui mais il n'a pas précisé comment faire avec le minerai (je l'ai créé de facon spéciale)



  • Voici le ficher de mon craft.

    {
        "type": "minecraft:crafting_shaped",
        "pattern": [
            "#"
        ],
        "key": {
            "#": {
                "variant=tnt_ore": {"item": "gbmod:ore_overworld"}
            }
        },
        "result": {
            "item": "gbmod:tnt_shard",
            "count": 9
        }
    }
    


  • Finalement, j'avais mal compris le tuto et il fallait juste utiliser la métadata.

    {
        "type": "minecraft:crafting_shaped",
        "pattern": [
            "#"
        ],
        "key": {
            "#": {
              "item": "gbmod:ore_overworld",
              "data": 0
                 }
        },
        "result": {
            "item": "gbmod:tnt_shard",
            "count": 9
        
    

Log in to reply