Доброго времени суток, уважаемые читатели! Сегодня я научу вас созданию блоков с помощью модификаций!
.
Для начала создаём ТРИ папки, одна в главной директории - blocks, другая в ней - block и blocks в /никнейм\./мод\.client.render./тут!\. В папке blocks создаём класс Blocks и пишем что-то вроде этого:
package /никнейм\./мод\.blocks;
import /никнейм\./мод\.blocks.block.BaseBlock;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraftforge.fml.common.registry.GameRegistry;
public final class Blocks {
public static Block baseBlock;
public static void createBlocks() {
GameRegistry.registerBlock(baseBlock = new BaseBlock("base_block", Material.iron, 3, 15, "pickaxe", 1), "base_block");
}
}
Разборка:
public static Block baseBlock; - переменная типа Block.
GameRegistry.registerBlock(
baseBlock = new
BaseBlock("base_block",
Material.iron, 3, 15, "pickaxe", 1), "base_block"); - регистрирует блок.
baseBlock - наша переменная.
BaseBlock - наш класс, который мы создадим.
Material.iron - материал нашего блока это железо(через точку можно выбрать свой). Далее это скорость добычи и взрывоустойчивость, 3 - это скорость добычи 3 секунды. Далее идёт инструмент добычи. Может быть "pickaxe || shovel || axe" и название.[/spoiler]
Теперь там где подчёркнуто красным - BaseBlock, задерживаем курсор и выбираем create class там пишем вот это:
package /никнейм\./мод\.blocks.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
public class BaseBlock extends Block{
public BaseBlock(String unlocalizedName, Material material, float hardness, float resistance, String harvestT, int harvestL) {
super(material);
this.setUnlocalizedName(unlocalizedName);
this.setCreativeTab(CreativeTabs.tabBlock);
this.setHardness(hardness);
this.setResistance(resistance);
this.setHarvestLevel(harvestT, harvestL);
}
}
Заходим в CommonProxy и в методе preInit пишем вот это - HEBlocks.createBlocks();
Теперь в оставшейся папке - render.blocks создаём класс с названием registerBlockRenderer. Там вписываем примерно это:
package /никнейм\./мод\.client.render.blocks;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import /никнейм\./мод\./Мод\;
import /никнейм\./мод\.blocks.Blocks;
public final class BlockRenderRegister {
public static void registerBlockRenderer() {
reg(Blocks.baseBlock);
}
public static String modid = /Мод\.modid;
public static void reg(Block block) {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher()
.register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(modid + ":" + block.getUnlocalizedName().substring(5), "inventory"));
}
}
И последнее с самим блоком - в ClientProxy в методе Init добавляем это - BlockRenderRegister.registerBlockRenderer();
Всё! Вуаля! Блок создан! Такой фиолетово-чёрный
Осталось сделать для него модель и текстуру. Текстуру мы пихаем в новую папку - blocks которая находится в папке под названием textures.
А что делать с моделями? У блока 3 модели, как поставленный блок, как предмет и как блок.
В нашей директории(assets./modid\) создаём папку blockstates и файл base_block.json:
{
"variants": {
"normal": { "model": "/modid\:base_block" }
}
}
Далее в папке models создаём папку block а в ней файл base_block.json:
[spoiler]
{
"parent": "block/cube_all",
"textures": {
"all": "/modid\:blocks/base_block[.png]"// без .пнг
}
}
И как предмет создаём в папке item файл base_block.json
{
"parent": "/modid\:block/base_block"
}
Теперь заходим в игру, и смотрим вкладку блоков, там появился наш! Если были какие-то проблемы сложности спрашивайте! Я не кусаюсь
Вам писал CheshirX, до скорого!