- Регистрация
- 4 Апр 2025
- Сообщения
- 24
- Реакции
- 0
- Баллы
- 1
- Город
- Санкт-Петербург
- Веб-сайт
- paxgame.ru
- Discord
- nicolayka
Что нам требуется:
1) MCP (Minecraft Coder Pack)
2) JDK
3) Чистый клиент minecraft
4) Notepad++ иди другой удобный вам редактор
5) Прямые руки
Установка:
1. Создаем папку в любом удобном для вас месте (желательно на жестком диске, а не на рабочем столе).
2. Копируем файлы архива MCP в эту папку.
3. Кладем из клиента Minecraft папку bin в папку jars, которая непосредственно находится в вашей папке которую вы подготовили ранее.
4. Запускаем decompile.bat
5. Как только вы пройдете уроки ниже, просто напросто запускайте recompile.bat, а после чего startclient.bat и тестируйте.
6. Ну, а когда вы точно решили что мод готов - запускайте reobf.bat, проходите в папочку reobf и все содержимое кидайте в файл minecraft.jar специально подготовленной для этого игры.
Запомните!
В пути \src\minecraft\net\minecraft\src находится весь декомпилированный код игры и туда мы будет складывать наши .java файлы.
1. Добавление своего предмета
2. Добавляем свой блок
3. Добавляем рецепт крафта
4. Добавление своей брони
1) MCP (Minecraft Coder Pack)
2) JDK
3) Чистый клиент minecraft
4) Notepad++ иди другой удобный вам редактор
5) Прямые руки
Установка:
1. Создаем папку в любом удобном для вас месте (желательно на жестком диске, а не на рабочем столе).
2. Копируем файлы архива MCP в эту папку.
3. Кладем из клиента Minecraft папку bin в папку jars, которая непосредственно находится в вашей папке которую вы подготовили ранее.
4. Запускаем decompile.bat
5. Как только вы пройдете уроки ниже, просто напросто запускайте recompile.bat, а после чего startclient.bat и тестируйте.
6. Ну, а когда вы точно решили что мод готов - запускайте reobf.bat, проходите в папочку reobf и все содержимое кидайте в файл minecraft.jar специально подготовленной для этого игры.
Запомните!
В пути \src\minecraft\net\minecraft\src находится весь декомпилированный код игры и туда мы будет складывать наши .java файлы.
1. Добавление своего предмета
Открываем файл Item.java и ищем 117 строку, после неё добавляем
public static Item coin = (new Item(2012)).setUnlocalizedName("coin").setCreativeTab(CreativeTabs.tabMisc);
Разберем код предмета
Item coin - Техническое название предмета.
(new Item(2012)) - Уникальное id предмета.
setUnlocalizedName("coin") - Уникальное имя предмета.
setCreativeTab(CreativeTabs.tabMisc) - Раздел в креативе
public static Item coin = (new Item(2012)).setUnlocalizedName("coin").setCreativeTab(CreativeTabs.tabMisc);
Разберем код предмета
Item coin - Техническое название предмета.
(new Item(2012)) - Уникальное id предмета.
setUnlocalizedName("coin") - Уникальное имя предмета.
setCreativeTab(CreativeTabs.tabMisc) - Раздел в креативе
2. Добавляем свой блок
Открываем файл Block.java и ищем 55 строку, после неё добавляем?
public static final Block java = (new BlockJava(159)).setStepSound(soundStoneFootstep).setLightValue(0.125F).setHardness(0.5F).getIndirectPowerOutput("java").setResistance(10.0F).setCreativeTab(CreativeTabs.tabDecorations);
Разберем код блока
Block java - Техническое название блока.
(new BlockJava(159)) - Уникальный id блока, так же Java изменить на свой блок.
setStepSound(soundStoneFootstep) - Звук который издает блок.
setLightValue(0.125F) - Свечение предмета, изменяем только цифры.
setHardness(0.5F) - Тут у нас указана крепость. На сколько силен блок, так сказать. Вполне реально хватит и 0.5F если это блок похожий на землю (по скорости разрушения)
getIndirectPowerOutput("java") - Уникальное имя предмета
setResistance(10.0F) - Устойчивость от взрыва
setCreativeTab(CreativeTabs.tabDecorations) - Раздел в креативе
Далее создайте файл BlockJava.java, в исходниках майна , со следующим содержимым:
package net.minecraft.src;
import java.util.Random;
public class BlockStonePlus extends Block
{
public BlockStonePlus(int var1)
{
super(var1, Material.rock);
this.setCreativeTab(CreativeTabs.tabBlock);
}
/**
* Returns the ID of the items to drop on destruction.
*/
public int idDropped(int var1, Random var2, int var3)
{
return Block.stone.blockID;
}
/**
* Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two
* adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
*/
public boolean isOpaqueCube()
{
return false;
}
}
public static final Block java = (new BlockJava(159)).setStepSound(soundStoneFootstep).setLightValue(0.125F).setHardness(0.5F).getIndirectPowerOutput("java").setResistance(10.0F).setCreativeTab(CreativeTabs.tabDecorations);
Разберем код блока
Block java - Техническое название блока.
(new BlockJava(159)) - Уникальный id блока, так же Java изменить на свой блок.
setStepSound(soundStoneFootstep) - Звук который издает блок.
setLightValue(0.125F) - Свечение предмета, изменяем только цифры.
setHardness(0.5F) - Тут у нас указана крепость. На сколько силен блок, так сказать. Вполне реально хватит и 0.5F если это блок похожий на землю (по скорости разрушения)
getIndirectPowerOutput("java") - Уникальное имя предмета
setResistance(10.0F) - Устойчивость от взрыва
setCreativeTab(CreativeTabs.tabDecorations) - Раздел в креативе
Далее создайте файл BlockJava.java, в исходниках майна , со следующим содержимым:
package net.minecraft.src;
import java.util.Random;
public class BlockStonePlus extends Block
{
public BlockStonePlus(int var1)
{
super(var1, Material.rock);
this.setCreativeTab(CreativeTabs.tabBlock);
}
/**
* Returns the ID of the items to drop on destruction.
*/
public int idDropped(int var1, Random var2, int var3)
{
return Block.stone.blockID;
}
/**
* Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two
* adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
*/
public boolean isOpaqueCube()
{
return false;
}
}
3. Добавляем рецепт крафта
Открываем файл CraftingManager.java и ищем 142 строку, после неё добавляем?
this.addRecipe(new ItemStack(Item.coin, 3), new Object[] {"##", "##", '#', Block.dirt});
Разберем код крафта
(Item.coin, 3) - При крафте появляется coin в количестве 3 (изменяйте как душе угодно до 64).
new Object[] {"##", "##", '#', Block.dirt} - Одна решетка обозначает одну ячейку сверху вниз (это может быть и верстак, если решеток более 3 в одной строке).
Т.е. в нашем случае мы заполняем обычной землей (Block.dirt) все крафт-ячейки в инвентаре (их 4).
Для примера, если например ваш объект крафтится не только из земли, поступать нужно так:
new Object[] {"#", "I", '#', Item.ingotGold, 'I', Item.ingotIron});
this.addRecipe(new ItemStack(Item.coin, 3), new Object[] {"##", "##", '#', Block.dirt});
Разберем код крафта
(Item.coin, 3) - При крафте появляется coin в количестве 3 (изменяйте как душе угодно до 64).
new Object[] {"##", "##", '#', Block.dirt} - Одна решетка обозначает одну ячейку сверху вниз (это может быть и верстак, если решеток более 3 в одной строке).
Т.е. в нашем случае мы заполняем обычной землей (Block.dirt) все крафт-ячейки в инвентаре (их 4).
Для примера, если например ваш объект крафтится не только из земли, поступать нужно так:
new Object[] {"#", "I", '#', Item.ingotGold, 'I', Item.ingotIron});
4. Добавление своей брони
Открываем файл EnumArmorMaterial.java и ищем 5 строку, после неё добавляем
WOOD(5, new int[]{1, 3, 2, 1}, 15),
Далее в этом же файле ищем 66 строку и заменяем на это
return this == CLOTH ? Item.leather.itemID : (this == CHAIN ? Item.ingotIron.itemID : (this == GOLD ? Item.ingotGold.itemID : (this == IRON ? Item.ingotIron.itemID : (this == WOOD ? Block.wood.blockID : (this == DIAMOND ? Item.diamond.itemID : 0))))));
Открываем файл RecipesArmor.java
Item.ingotGold
ставим запятую и пишем
Block.planks
Далее ищем это
{Item.helmetLeather, Item.helmetChain, Item.helmetSteel, Item.helmetDiamond, Item.helmetGold}, {Item.plateLeather, Item.plateChain, Item.plateSteel, Item.plateDiamond, Item.plateGold}, {Item.legsLeather, Item.legsChain, Item.legsSteel, Item.legsDiamond, Item.legsGold}, {Item.bootsLeather, Item.bootsChain, Item.bootsSteel, Item.bootsDiamond, Item.bootsGold}};
Заменяем на это
{Item.helmetLeather, Item.helmetChain, Item.helmetSteel, Item.helmetDiamond, Item.helmetGold, Item.helmetWood}, {Item.plateLeather, Item.plateChain, Item.plateSteel, Item.plateDiamond, Item.plateGold, Item.plateWood}, {Item.legsLeather, Item.legsChain, Item.legsSteel, Item.legsDiamond, Item.legsGold, Item.legsWood}, {Item.bootsLeather, Item.bootsChain, Item.bootsSteel, Item.bootsDiamond, Item.bootsGold, Item.bootsWood}};
Открываем файл Item.java и добавляем предметы
130 - id(рекомендую использовать с 130).
WOOD - материал.
5 - порядковый номер (0 - кожа, 1 - кольчуга, 2 - железо, 3 - алмаз, 4 - золото).
0 - шлем, 1 - нагрудник, 2 - штаны, 3 - носки).
setUnlocalizedName - название брони.
Открываем файл RenderPlayer.java, ищем 10 строку и в конец добавляем
, "wood"
WOOD(5, new int[]{1, 3, 2, 1}, 15),
Далее в этом же файле ищем 66 строку и заменяем на это
return this == CLOTH ? Item.leather.itemID : (this == CHAIN ? Item.ingotIron.itemID : (this == GOLD ? Item.ingotGold.itemID : (this == IRON ? Item.ingotIron.itemID : (this == WOOD ? Block.wood.blockID : (this == DIAMOND ? Item.diamond.itemID : 0))))));
Открываем файл RecipesArmor.java
Item.ingotGold
ставим запятую и пишем
Block.planks
Далее ищем это
{Item.helmetLeather, Item.helmetChain, Item.helmetSteel, Item.helmetDiamond, Item.helmetGold}, {Item.plateLeather, Item.plateChain, Item.plateSteel, Item.plateDiamond, Item.plateGold}, {Item.legsLeather, Item.legsChain, Item.legsSteel, Item.legsDiamond, Item.legsGold}, {Item.bootsLeather, Item.bootsChain, Item.bootsSteel, Item.bootsDiamond, Item.bootsGold}};
Заменяем на это
{Item.helmetLeather, Item.helmetChain, Item.helmetSteel, Item.helmetDiamond, Item.helmetGold, Item.helmetWood}, {Item.plateLeather, Item.plateChain, Item.plateSteel, Item.plateDiamond, Item.plateGold, Item.plateWood}, {Item.legsLeather, Item.legsChain, Item.legsSteel, Item.legsDiamond, Item.legsGold, Item.legsWood}, {Item.bootsLeather, Item.bootsChain, Item.bootsSteel, Item.bootsDiamond, Item.bootsGold, Item.bootsWood}};
Открываем файл Item.java и добавляем предметы
Код:
public static ItemArmor helmetWood = (ItemArmor)(new ItemArmor(2017, EnumArmorMaterial.WOOD, 6, 0)).setUnlocalizedName("helmetWood");
public static ItemArmor plateWood = (ItemArmor)(new ItemArmor(2018, EnumArmorMaterial.WOOD, 6, 1)).setUnlocalizedName("chestplateWood");
public static ItemArmor legsWood = (ItemArmor)(new ItemArmor(2019, EnumArmorMaterial.WOOD, 6, 2)).setUnlocalizedName("leggingsWood");
public static ItemArmor bootsWood = (ItemArmor)(new ItemArmor(2020, EnumArmorMaterial.WOOD, 6, 3)).setUnlocalizedName("bootsWood");
WOOD - материал.
5 - порядковый номер (0 - кожа, 1 - кольчуга, 2 - железо, 3 - алмаз, 4 - золото).
0 - шлем, 1 - нагрудник, 2 - штаны, 3 - носки).
setUnlocalizedName - название брони.
Открываем файл RenderPlayer.java, ищем 10 строку и в конец добавляем
, "wood"