BeerOk
Игрок
Данный туториал пишется для клиента версии 1.3.1 Все коды рабочие
1. Добавление своего блока в игру + добавление в креатив:
1. Вам нужно создать новый файл под именем BlockNew.java в папке src.
2. Вот пример:
Список категорий для "креатива" (для добавления нашего блока в определённую закладку)
3. Теперь нужно добавить ваш блок непосредственно в Block.java
Идём в конец файла и ищем
Над ним вставляем:
Где:
137 - ID блока (свободные номера начинаются с 137)
8 - номер текстуры в terrain.png
setHardness(2.0F) - прочность ()
.setResistance(4F) - сопротивление
.setStepSound(soundGlassFootstep) - звук при разбиении
.setBlockName("new") - имя блока (для перевода через lang-файл)
.setLightValue(1.0F) - свечение блока
2. Создание нового рецепта крафтинга
1. Откройте CraftingManager.java
Ищем что-то похожее на:
Добавляем после него рецепт для нашего только что созданного блока
Где 1 - кол-во получаемого блока после крафта
# - в данном случае, все ячейки крафта заполняем землёй
3. Добавление блока в лист креативного режима
Открываем файл ContainerCreative.java
В самом верху видим:
И добавляем в этот список наш блок (или предмет)
4. Добавление блока в генерацию мира
1. Открываем файл BiomeDecorator.java
Ищем
Добавляем после
Идём в самый конец файла и ищем
Вставляем после:
Где 0 минимальная высота, а 128 - максимальная, до куда будет генерироваться блок. Т.е с нулевой высоты по 128 будет генерироваться наш блок
5. Добавление имени блоку
Открываем minecraft.jar, папку lang и нужный файл языка. К примеру ru_RU.lang
Листаем ниже и находим такой код:
И добавляем по аналогии наше название блока! В title.*** пишутся имена блоков!
tile.new.name - имя блока, которое мы использовали тут (когда создавами сам блок):
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});
# - в данном случае, все ячейки крафта заполняем землёй
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 - имя блока, которое мы использовали тут (когда создавами сам блок):
.setBlockName("new").