1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Моддинг minecraft 1.5.1 без Forge и ModLoader

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем tiger'ok, 24 апр 2013.

  1. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    Всем привет, с этого дня я начинаю писать уроки о том как изменять minecraft в техническом плане, и так начнем.
    Что нам требуется:
    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 файлы.

    Как добавить свой предмет
    Открываем файл 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)
    Раздел в креативе.
    Код:
    setCreativeTab(CreativeTabs.tabAllSearch); //Добавляет наш Block в категорию "Поиск" как и все предметы, блоки.
    setCreativeTab(CreativeTabs.tabBlock);  //Добавляет наш Block в категорию "Блоки" как Стекло, Земля, и т.д.
    setCreativeTab(CreativeTabs.tabBrewing); //Добавляет наш Block в категорию "Зелья" как Зелья, Ингредиенты и т.д.
    setCreativeTab(CreativeTabs.tabCombat); //Добавляет наш Block в категорию "Амуниция" как Броня, Мечи, и т.д.
    setCreativeTab(CreativeTabs.tabDeco); //Добавляет наш Block в категорию "Декорации" как Цветки, Сундук, и т.д.
    setCreativeTab(CreativeTabs.tabFood); //Добавляет наш Block в категорию "Еда" как Печеньки, Хлеб и т.д.
    setCreativeTab(CreativeTabs.tabInventory); //Сюда не надо ничего не добавлять, если добавили Block, Item то они будут в иконке "Destroy Item".
    setCreativeTab(CreativeTabs.tabMaterials); //Добавляет наш Block в категорию "Материалы" как Уголь, Золото, и т.д.
    setCreativeTab(CreativeTabs.tabMisc);  //Добавляет наш Block в категорию "Разное" как Яйца мобов, Музыкальные диски, и т.д.
    setCreativeTab(CreativeTabs.tabRedstone); //Добавляет наш Block в категорию "Редстоун" как Поршень, ТНТ, и т.д.
    setCreativeTab(CreativeTabs.tabTools); //Добавляет наш Block в категорию "Инструменты" как Кирки, Компасс и т.д.
    setCreativeTab(CreativeTabs.tabTransport); //Добавляет наш Block в категорию "Транспорт" как Вагонетка, Рельсы, и т.д.
    Теперь у нас есть есть свой предмет, но как же добавить текстуру и перевод предмету?
    Да очень легко! Идем в google, ищем нужную вам текстуру. Открываете свой minecraft.jar удаляете папку META-INF, находите папку textures, а в ней папку items и закидываете свой файл например coin.png, файл должен быть обязательно 16х16.
    А теперь добавим перевод предмету, опять же открываете свой minecraft.jar идёте в папку lang и находите файл en_US.lang. В нем ищете 510 строку и после неё добавляем вот эту строку.
    Код:
    item.coin.name=Coin
    2013-04-24_13.53.15.png 2013-04-24_13.53.24.png
    ------------------------------------------------------------------------------------------------------------------------------------
    Как добавить свой блок

    Открываем файл 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;
        }
    }
    
    Теперь у нас есть есть свой блок, но как же добавить текстуру и перевод блоку?
    Да очень легко! Идем в google, ищем нужную вам текстуру. Открываете свой minecraft.jar удаляете папку META-INF, находите папку textures, а в ней папку blocks и закидываете свой файл например java.png, файл должен быть обязательно 16х16.
    А теперь добавим перевод блоку, опять же открываете свой minecraft.jar идёте в папку lang и находите файл en_US.lang. В нем ищете 304 строку и после неё добавляем вот эту строку.
    Код:
    tile.java.name=Java Block
    2013-04-24_15.34.48.png 2013-04-24_15.34.56.png
    ------------------------------------------------------------------------------------------------------------------------------------
    Как добавить рецепт крафта

    Открываем файл 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});
    На данном примере мы ставим золотой слиток сверху в верхней строке, ставим железный слиток в нижней строке.
    Если какой-то символ (в нашем случае решетка) не указана - то значит дефолтно ячейки должны быть пусты (указаны, например символом # или любой другой буквой).

    2013-04-24_17.47.03.png 2013-04-24_17.47.51.png
    ------------------------------------------------------------------------------------------------------------------------------------
    Добавление блока в генерацию мира
    Открываем файл BiomeDecorator.java и ищем 35 строку, после неё добавляем​
    Код:
    protected WorldGenerator newGen;
    Дальше ищем 138 строку и после неё добавляем​
    Код:
    this.stoneplusGen = new WorldGenMinable(Block.diamond.blockID, 15); //Кол-во блоков в одном месторождении
    Дальше ищем 423 строку и после неё добавляем​
    Код:
    this.genStandardOre1(1, this.stoneplusGen, 0, 25);
    Где 0 минимальная высота, а 128 - максимальная, до куда будет генерироваться блок. Т.е с нулевой высоты по 128 будет генерироваться наш блок​
    ------------------------------------------------------------------------------------------------------------------------------------
    Добавление в торговлю с жителем свой предмет
    Открываем файл EntityVillager.java, дальше смотрите скриншот :)
    Замена.jpg
    2013-04-29_10.39.09.png
    ------------------------------------------------------------------------------------------------------------------------------------
    Добавление своей брони
    Открываем файл 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 и добавляем предметы
    Код:
    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");
    130 - id(рекомендую использовать с 130).
    WOOD - материал.
    5 - порядковый номер (0 - кожа, 1 - кольчуга, 2 - железо, 3 - алмаз, 4 - золото).
    0 - шлем, 1 - нагрудник, 2 - штаны, 3 - носки).
    setUnlocalizedName - название брони.
    Открываем файл RenderPlayer.java, ищем 10 строку и в конец добавляем
    Код:
    , "wood"
    2013-05-03_14.48.54.png 2013-05-03_14.49.07.png
     
    Сникерсни, Hugefort, iProger и 16 другим нравится это.
  2. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    UP! Дописал туториал, ждите новых уроков.
     
    REZAYS нравится это.
  3. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    UP! Добавил еще 1 туториал, жду ваших комментариев.
     
    Lemz0 и REZAYS нравится это.
  4. rescr1pt

    rescr1pt Старожил Пользователь

    Баллы:
    103
    Для серверной части будет?(Bukkit)
     
  5. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    Возможно будет.
     
  6. Bluer

    Bluer Старожил Пользователь

    Баллы:
    153
    С нетерпением жду продолжение
     
  7. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    UP! Добавил еще 1 туториал.
     
    AxmeD и Bluer нравится это.
  8. AxmeD

    AxmeD Старожил Пользователь

    Баллы:
    103
    Большое спасибо. Ждем новых туториалов(хочу научится делать мобов)
     
  9. Raptor2108

    Raptor2108 Старожил Пользователь

    Баллы:
    173
    На данный момент копипаст с других ресурсов и везде одно и тоже..... эх. Хоть бы что нибудь новенькое рассказали. Кстати под forge работать намного удобнее, ну это так к слову, не удержался.:rolleyes:
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    @tiger'ok, Кому это нужно мод без модлоадра? Патом же з*** его перепиливать для mcpc+.
    И патом админские плагины не будут видеть id этих предметов.
    Уже проходил это на пластинках :).
    Пиши гайды для Forge модов вот реально полезно будет.
    http://minecraft.su/forum/topic/7736-151forgemoddingсоздание-модов-для-minecraft-allguide/
     
    Lemz0, Jack11398, AZoN и ещё 1-му нравится это.
  11. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    Это не копипаст с других ресурсов, все писалось само.
     
  12. Raptor2108

    Raptor2108 Старожил Пользователь

    Баллы:
    173
    Писалось может и само, а текст один и тот же везде. Везде идет Создание блока, создание итема, добавление в генератор. С нетерпением ждем наконец чего нить нового. Советую почитать тут, уже 2 года висит.:eek:.
     
  13. Attelis

    Attelis Старожил Переводчик Пользователь

    Баллы:
    173
    ЗАЧЕМ?!
    Ведь forge и сделали для упрощения создания мода. По нему много туториалов, он удобнее и легче.
     
    Lemz0 нравится это.
  14. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    Добавил туториал.
     
    zuma2 и Bluer нравится это.
  15. KriBetko

    KriBetko Старожил Пользователь

    Баллы:
    153
    Skype:
    kribetko
    Очень интересно , надо будет попробовать. Только я не понял с крафтом , про шарпы (#). А по Forge туториал будет?
     
  16. MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    Вот бы для форге туториал :rolleyes:
     
  17. Raptor2108

    Raptor2108 Старожил Пользователь

    Баллы:
    173
    Чуть выше alexandrage дал ссылку.
     
  18. Автор темы
    tiger'ok

    tiger'ok Старожил

    Баллы:
    123
    Для forge туториала не будет т.к. я на нем ничего не могу написать.
     
    ВремяПриключений и KriBetko нравится это.
  19. KriBetko

    KriBetko Старожил Пользователь

    Баллы:
    153
    Skype:
    kribetko
    Извиняюсь , не заметил
    Жаль:(
     
  20. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173

Поделиться этой страницей