Учебник по MCP без использования модлоадера

BeerOk

Игрок
Данный туториал пишется для клиента версии 1.3.1 Все коды рабочие

1. Добавление своего блока в игру + добавление в креатив:


1. Вам нужно создать новый файл под именем BlockNew.java в папке src.

2. Вот пример:
Код:
package net.minecraft.src;
import java.util.Random;
 
public class BlockOre extends Block
{
        public BlockOre(int par1, int par2)
        {
                super(par1, par2, Material.rock);
                this.setCreativeTab(CreativeTabs.tabBlock);
        }
        /**
        * Returns the ID of the items to drop on destruction.
        */
        public int idDropped(int par1, Random par2Random, int par3)
        {
                return Block.new.blockID;
        }
}
Список категорий для "креатива" (для добавления нашего блока в определённую закладку)
Код:
this.setCreativeTab(CreativeTabs.tabAllSearch); //Добавляет наш Block в категорию "Поиск" как и все предметы, блоки.
 
this.setCreativeTab(CreativeTabs.tabBlock);  //Добавляет наш Block в категорию "Блоки" как Стекло, Земля, и т.д.
 
this.setCreativeTab(CreativeTabs.tabBrewing); //Добавляет наш Block в категорию "Зелья" как Зелья, Ингредиенты и т.д.
 
this.setCreativeTab(CreativeTabs.tabCombat); //Добавляет наш Block в категорию "Амуниция" как Броня, Мечи, и т.д.
 
this.setCreativeTab(CreativeTabs.tabDeco); //Добавляет наш Block в категорию "Декорации" как Цветки, Сундук, и т.д.
 
this.setCreativeTab(CreativeTabs.tabFood); //Добавляет наш Block в категорию "Еда" как Печеньки, Хлеб и т.д.
 
this.setCreativeTab(CreativeTabs.tabInventory); //Сюда не надо ничего не добавлять, если добавили Block, Item то они будут в иконке "Destroy Item".
 
this.setCreativeTab(CreativeTabs.tabMaterials); //Добавляет наш Block в категорию "Материалы" как Уголь, Сундук, и т.д.
 
this.setCreativeTab(CreativeTabs.tabMisc);  //Добавляет наш Block в категорию "Разное" как Яйца мобов, Музыкальные диски, и т.д.
 
this.setCreativeTab(CreativeTabs.tabRedstone); //Добавляет наш Block в категорию "Редстоун" как Поршень, ТНТ, и т.д.
 
this.setCreativeTab(CreativeTabs.tabTools); //Добавляет наш Block в категорию "Инструменты" как Кирки, Компасс и т.д.
 
this.setCreativeTab(CreativeTabs.tabTransport); //Добавляет наш Block в категорию "Транспорт" как Вагонетка, Рельсы, и т.д.

3. Теперь нужно добавить ваш блок непосредственно в Block.java

Идём в конец файла и ищем
Код:
 /**
        * The index of the texture to be displayed for this block. May vary based on graphics settings. Mostly seems to
        * come from terrain.png, and the index is 0-based (grass is 0).
        */
Над ним вставляем:
Код:
        public static final Block new = (new BlockNew(137, 8)).setHardness(3.0F).setResistance(5.0F).setStepSound(soundStoneFootstep).setBlockName("new").setRequiresSelfNotify();

Где:
137 - ID блока (свободные номера начинаются с 137)
8 - номер текстуры в terrain.png
setHardness(2.0F) - прочность ()
.setResistance(4F) - сопротивление
.setStepSound(soundGlassFootstep) - звук при разбиении
.setBlockName("new") - имя блока (для перевода через lang-файл)
.setLightValue(1.0F) - свечение блока


2. Создание нового рецепта крафтинга

1. Откройте CraftingManager.java

Ищем что-то похожее на:
Код:
this.addRecipe(new ItemStack(Block.enchantmentTable, 1), new Object[] {" B ", "D#D", "###", '#', Block.obsidian, 'B', Item.book, 'D', Item.diamond});

Добавляем после него рецепт для нашего только что созданного блока
Код:
this.addRecipe(new ItemStack(Block.new, 1), new Object[] {" ### ", "###", "###", '#', Block.dirt});
Где 1 - кол-во получаемого блока после крафта
# - в данном случае, все ячейки крафта заполняем землёй


3. Добавление блока в лист креативного режима
Открываем файл ContainerCreative.java
В самом верху видим:
Код:
                itemList = new ArrayList();
                Block ablock[] =
                {
                        Block.cobblestone, Block.stone, Block.oreDiamond, Block.oreGold, Block.oreIron, Block.oreCoal, Block.oreLapis, Block.oreRedstone, Block.stoneBrick, Block.stoneBrick,
                        Block.stoneBrick, Block.stoneBrick, Block.blockClay, Block.blockDiamond, Block.blockGold, Block.blockSteel, Block.bedrock, Block.blockLapis, Block.brick, Block.cobblestoneMossy,
                        Block.stairSingle, Block.stairSingle, Block.stairSingle, Block.stairSingle, Block.stairSingle, Block.stairSingle, Block.obsidian, Block.netherrack, Block.slowSand, Block.glowStone,
                        Block.wood, Block.wood, Block.wood, Block.wood, Block.leaves, Block.leaves, Block.leaves, Block.leaves, Block.dirt, Block.grass,
                        Block.sand, Block.sandStone, Block.sandStone, Block.sandStone, Block.gravel, Block.web, Block.planks, Block.planks, Block.planks, Block.planks,
                        Block.sapling, Block.sapling, Block.sapling, Block.sapling, Block.deadBush, Block.sponge, Block.ice, Block.blockSnow, Block.plantYellow, Block.plantRed,
                        Block.mushroomBrown, Block.mushroomRed, Block.cactus, Block.melon, Block.pumpkin, Block.pumpkinLantern, Block.vine, Block.fenceIron, Block.thinGlass, Block.netherBrick,
                        Block.netherFence, Block.stairsNetherBrick, Block.whiteStone, Block.mycelium, Block.waterlily, Block.tallGrass, Block.tallGrass, Block.chest, Block.workbench, Block.glass,
                        Block.tnt, Block.bookShelf, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth,
                        Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.cloth, Block.dispenser, Block.stoneOvenIdle,
                        Block.music, Block.jukebox, Block.pistonStickyBase, Block.pistonBase, Block.fence, Block.fenceGate, Block.ladder, Block.rail, Block.railPowered, Block.railDetector,
                        Block.torchWood, Block.stairCompactPlanks, Block.stairCompactCobblestone, Block.stairsBrick, Block.stairsStoneBrickSmooth, Block.lever, Block.pressurePlateStone, Block.pressurePlatePlanks, Block.torchRedstoneActive, Block.button,
                        Block.trapdoor, Block.enchantmentTable, Block.redstoneLampIdle
                };
И добавляем в этот список наш блок (или предмет)
Код:
, Block.new


4. Добавление блока в генерацию мира
1. Открываем файл BiomeDecorator.java
Ищем
Код:
protected WorldGenerator dirtGen;

Добавляем после
Код:
newGen = new WorldGenMinable(Block.new.blockID, 2); //Кол-во блоков в одном месторождении

Идём в самый конец файла и ищем
Код:
this.genStandardOre1(20, this.dirtGen, 0, 128);

Вставляем после:
Код:
this.genStandardOre1(20, this.newGen, 0, 128);

Где 0 минимальная высота, а 128 - максимальная, до куда будет генерироваться блок. Т.е с нулевой высоты по 128 будет генерироваться наш блок


5. Добавление имени блоку
Открываем minecraft.jar, папку lang и нужный файл языка. К примеру ru_RU.lang
Листаем ниже и находим такой код:
Код:
tile.waterlily.name=Кувшинка
tile.dragonEgg.name=Яйцо дракона
tile.redstoneLight.name=Лампа

И добавляем по аналогии наше название блока! В title.*** пишутся имена блоков!

Код:
tile.new.name=Новый блок

tile.new.name - имя блока, которое мы использовали тут (когда создавами сам блок):
 
как скачать сборку
подскажыте плиз а то сервер даёт по 5 алм блока
 
Сверху