• Страница 1 из 1
  • 1
Модератор форума: KHz, mef_prog, Mo3RiN  
[Modloader]Основы Программирования Для Minecraft Часть 1
KHzДата: Пятница, 28.10.2011, 22:10 | Сообщение # 1
Группа: Администраторы
Сообщений: 29
Награды: 0
Репутация: 5
Статус: Offline
Глава 1. Подготовка рабочего места и настройка MCP.

Я отказываюсь писать статьи по старому стилю оформления как в прошлых уроках, т.к надоедает все время отписывать числа.
Надеюсь, вы меня поймете

Требования:

- Java Development Kit 6 (JDK 6).
- Minecraft Coder Pack 4.4.
- Notepad++ - обязательно, иначе вы не сможете пройти главы.
- ModLoader + Клиент (1.8.1) (качать обязательно).
- Руки, но не крюки.
- И желательно базовое знание английского языка.


Установка:

1. Создаем папку в любом удобном для вас месте.
2. Копируем файлы архива MCP в эту папку.
3. Прописываем путь к javac.exe (JDK) в системной переменной PATH.
Щелкните правой кнопкой мыши по ярлыку Мой компьютер и выберите категорию Дополнительно. Там же ниже будет кнопка Переменные среды.
В системных переменных найдите переменную Path (PATH) и допишите в ней строки:

Code
;C:\Program Files\Java\jdk1.6.0_25\bin


или

Code
;C:\Program Files\Java\jdk1.6.0_26\bin


В зависимости от версии.

Без пробела и с символом "точка с запятой". Путь укажите, конечно же, по вашему усмотрению системы.

4. Кладем из клиента Minecraft папки bin и resources в папку jars, которая непосредственно находится в вашей папке которую вы подготовили ранее (о как сказанул ).
5. Откройте папку bin и найдите minecraft.jar. Откройте (не разархивируйте), и удалите папку META-INF.
6. Запускаем decompile.bat.
7. Как только вы пройдете уроки ниже, просто напросто запускайте recompile.bat, а после чего startclient.bat и тестируйте.
8. Ну а когда вы точно решили что мод готов - запускайте reobf.bat, проходите в папочку reobf и все содержимое кидайте в файл minecraft.jar специально подготовленной для этого игры.

Глава 2. Создание блока.

Запоминайте сразу, в пути \src\minecraft\net\minecraft\src находится весь декомпилированный код игры.

Для начала давайте создадим новый файлик посредством нотепада. Называться он будет mod_gcc.java.
Он служит для складывания всей информации о блоках, рецептах, etc.

Впишем такую строчку (используйте Notepad++, детишки!).

Code
package net.minecraft.src;


Она включает магию которая даст возможность данному файлику работать с Кубокрафтом.
После чего добавим еще две строчечки, но сначала делаем пробел.

Code
public class mod_gcc extends BaseMod
{


Здесь мы создаем класс.

Code
public static Block newblock = new BlockNew(110, 0).setHardness(0.5F).setResistance(1.0F).setBlockName("newblock");


Пишем в 5 строке вот такие словечки про наш кубик, тут мы его регистрируем.
Давайте попробуем разобрать данную неразбериху.

Code
public static Block newblock


newblock - это название, точнее регистр блока (не путайте с обычным названием, или консоль ошибок покарает вас!).

Code
new BlockNew(110, 0)


Ну а вот тут у нас как раз и обычное название. Будет использоваться для обозначения в отдельном файлике для блока (доп. характеристики).
Число 110 - айди блока. Используйте с 110 по 250.
Число 0 - не трогайте, это индексация текстуры по terrain.png, оно вообще не понадобится. Пусть стоит в фазе нуля.

Code
setHardness(0.5F)


Тут у нас крепкость указана. На сколько силен блок, так сказать Вполне реально хватит и 0.5F если это блок похожий на землю (по скорости разрушения).

Code
setResistance(0.3F)


Устойчивость от взрыва. 0.3F отлично вписывается.

Code
setLightValue(1.0F)


Если хотите чтобы ваш блок был светящимся (для дополнительных команд вызова я выведу чуть позже целый спойлер ), просто укажите это через точку.
1.0F - светится как австралий.

Code
setBlockName("newblock")


Сделан специально чтобы полностью до конца объявить регистр.

Профиряем.



Теперь давайте создадим специальный файлик BlockNew.java (по названию блока) который определит наш кубик в игре.
Вписываем в первую строчку магические буковки, опять.
Code
package net.minecraft.src;


Затем импортируем еще одну магию которая даст нам возможность использовать переменную Random.
Code
import java.util.Random;


Потом создаем публичный класс (не забудьте название).

Code
public class BlockNew extends Block
{


После чего копипастим вот это.

Code
public BlockNew(int i, int j)
                      {
                          super(i, j, Material.ground);
                      }


Тут у нас получается что мы объявляем блок, делаем его настоящим (материальным) и задаем свойство (каждое свойство имеет ряд своих особенностей, типа звуков и т.п).

Дальше объявляем выбрасывание и его ID.

Code
public int idDropped(int i, int j)
                      {
                          return mod_gcc.newblock.blockID;
                      }
                      public int quantityDropped(Random random)
                      {
                    return 1;
                      }
}




Примечание: У меня там Rock написано в свойстве, пропустите это, ага.

Если все так же - переходим к следующей главе.

Глава 2.1. Рецепт для блока или как добыть кубик.

Добавим четыре строчки для определения версии вашего мода (или названия, не важно).

Code
public String Version()
                {
                        return "1.8.1 Tutorial";
                }


Ну а теперь перейдем непосредственно к написанию рецепта.
Запишем вот это:

Code
public mod_gcc()
                {


И начнем творить.
Регистрируем блок строкой:

Code
ModLoader.RegisterBlock(newblock);


Добавляем название блока в игре.

Code
ModLoader.AddName(newblock, "GCC");


И запюливаем сам рецептик.

Code
ModLoader.AddRecipe(new ItemStack(newblock, 1), new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt});


Разберем?

Code
(new ItemStack(newblock, 1)


При крафте появляется newblock в количестве 1 (изменяйте как душе угодно до 64).

Code
new Object[]{ "##", "##", Character.valueOf('#'), Block.dirt


Тут очень сложно объяснить для детей, взрослые может быть и поймут, но я все же попробую.

Одна решетка обозначает одну ячейку сверху вниз (это может быть и верстак, если решеток более 3 в одной строке).
Т.е. в нашем случае мы заполняем обычной землей (Block.dirt) все крафт-ячейки в инвентаре (их 4).

Для примера, если например ваш объект крафтится не только из земли, да еще и в верстаке, поступать нужно так.

Code
new Object[]{ "#X#", "#Z#", "#X#",  Character.valueOf('X'), Block.dirt, Character.valueOf('Z'), Block.sand


В данном примере мы ставим землю по середине в верхней строке, ставим песок по середке в средней строке, и опять землю по середине, но только в третьей строке.
Если какой-то символ (в нашем случае решетка) не указана в Character.valueOf - то значит дефолтно ячейки должны быть пусты (указаны, например символом #).

Проверяем.



Вот и все. Теперь ваш блок можно спокойно скрафтить.
Но мы забыли добавить текстуру, о нет! Об этом читайте в следующей главе.

Для того, чтобы добавить свой блок (или предмет) в крафт, используйте префикс mod_gcc.
Например:

ModLoader.AddRecipe(new ItemStack(newblock, 1), new Object[]{ "##", "##", Character.valueOf('#'), mod_gcc.smileItem});

Глава 2.2. Присваиваем текстуру.

Эта глава очень короткая и легкая, но все же я выделил ей особое место.
Берем вот такую текстуру:


(размеры не изменять!)

Заходим в папку bin, находим minecraft.jar, открываем ее посредством WinRar или 7-zip и создаем там папочку textures.
И в эту папочку кидаем нашу текстуру java.png.

Теперь открываем mod_gcc.java и добавляем строчки рядом с рецептом.

Code
newblock.blockIndexInTexture = ModLoader.addOverride("/terrain.png", "/textures/java.png");


Разбираем.

Code
newblock.blockIndexInTexture


Сразу предупреждаю, не забывайте изменять название регистра здесь (у меня частенько бывает такое).

Code
ModLoader.addOverride("/terrain.png"


Не знаю зачем оно, но вроде индексирует размеры блоков внутри terrain.png. Оставляем как есть.

Code
"/textures/java.png"


Ну а тут, непосредственно, указывается путь к текстуре. В нашем случае это java.png в папке textures.

Вот и все!

Проверяем.



Если вы уверены что все сделали правильно, запускайте recompile.bat, проверяйте на наличие ошибок (если есть, отписывайте с вопросами сюда), после чего включайте startclient.bat и наслаждайтесь вашим творением!

Скриншот из игры:



© FunnyAlien


[Skype][Steam][Portfolio][CodHacks.ru]
 
  • Страница 1 из 1
  • 1
Поиск:

 

Полная статистика форума

Ваш текст ну или чего хотите