Так сударь! Все коротко и НЕясно! Чтобы что-то понять прийдётся идти в эту кашу: тыкай уже!
Для начала много папок:
№ 1) в главной директории(blocks).
№ 2) в blocks(block).
№ 3) в client.render(block).
№ 4)в папке models(block).
№ 5) в директории resources(blockstates).
№ 6) в папке textures(blocks).
Теперь в папке № 2 создаём основу для всех будующих блоков(BaseBlock):
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);//скорость ломания блока 1 - 1 сек, 2 - 2 сек.
this.setResistance(resistance);//сопротивление взрывам
this.setHarvestLevel(harvestT, harvestL); // инструмент добычи.
}
}
Далее в папке № 1 создаём финальный класс 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 copBlock;
public static void createBlocks() {
GameRegistry.registerBlock(copBlock = new BaseBlock("cop_block", Material.iron, 3, 15, "pickaxe", 1), "cop_block");
}
}
BaseBlock - класс, "cop_block" - имя в машине, Material.iron -материал определяется через точку, далее прочность и взрывоустойчивость, "pickaxe", 1 - может быть pickaxe|shovel|axe , 1 - это уровень 0 - дерево, 1 - камень, 2 - железо, 3 - алмазый.
Потом в директории № 3 создаём финальный класс BlockRenderRegister:
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.copBlock);
}
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();
Далее в CommonProxy метод preInit - HEBlocks.createBlocks();
Всё... Блок есть в игре... Но чёрно-фиоловый
Чтобы сделать его фиолово-чёрным нужно сделать ему модель отвечающую за блок, за предмет как блок и за текстуру. Ну и саму текстуру. Наши порисульки переименовываем в cop_block и кидаем в папку № 6.
Теперь во всех папках моделей(№ 4, 5 и папке item(models)) создаём по cop_block.json
Тот что в папке blockstates:
{
"variants": {
"normal": { "model": "......:cop_block" } //вместо точек модид.
}
}
Тот что в block:
{
"parent": "block/cube_all",
"textures": {
"all": ".......:blocks/cop_block" //modid in ........
}
}
И последний в item:
{
"parent": ".....:block/cop_block" // банальщина.
}
Всё заходим в игру и ищем наш блок в вкладке блоков. Правда он теперь красивее? Имено за это и нужно поставить 5 мем!
Вам писал CheshirX, до скорых встреч!
Информация | |
Для написания комментария зарегистрируйся на сайте, это займет всего пару минут, голосуй за новости, зарабатывай репутацию. |