Перейти к содержимому


Фотография

[Tutorial] [Forge] Основы программирования Minecraft 1.4.6


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 345

#1 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 16.10.2012 - 21:37

Как видно из названия, я хотел бы продолжить линейку гайдов по моддингу для Minecraft, но использовать я буду Forge ModLoader, далее FML.
Что нам понадобится?
1. (7.25 для 1.4.6 версии);
3.
;

Туториалы:


Глава 0 - Установка Eclipse, MCP, FML
Скрытый текст


Глава 1 - Основной файл мода, создание нового блока, свой terrain.png.
Скрытый текст

Глава 2 - Создание своего предмета, два вида крафтов, генерация чего-либо в данже.
Скрытый текст

Глава 3 - Создание config файла.
Скрытый текст

#2 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 16.10.2012 - 21:39

Опередил... И не важно, что на 4 часа, я долго писал. х\Хорошо, у меня вопрос. Где в дефолтном коде можно встретить применение функции takenFromCrafting?UPD: Раз уж темы слили, пусть этот пост будет резервом.
Скрытый текст

#3 mistaqur

mistaqur

    Алхимик

  • Главные модераторы
  • Сообщений: 4230
  • Откуда: Санкт-Петербург

Написал 17.10.2012 - 02:13

Где в дефолтном коде можно встретить применение функции takenFromCrafting?

K:\local\Java\mcp\src\common>findstr /s /i /c:"takenFromCrafting" *[paste][/paste]javacpw\mods\fml\common\modloader\BaseModProxy[paste][/paste]java:    void takenFromCrafting(EntityPlayer player, ItemStack item, IInventory craftMatrix);cpw\mods\fml\common\modloader\ModLoaderCraftingHelper[paste][/paste]java:        mod[paste][/paste]takenFromCrafting(player, item, craftMatrix);
Или я не правильно понял, что за default код? И по поводу гайда - первым делом рекомендую описать чтение и запись в конфиг файл. Т.к. основная фишка Forge - огромная совместимость между модами, то возможность менять ID блоков должна быть реализована в первую очередь.

#4 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 17.10.2012 - 08:13

Я на иностранном туторе, видел файлы proxy. Че за файлы, насколько нужны и если нужны, то добавьте в туториал.P.S а в terrain.png не может начинаться отсчет с 1, или с 48 обязательно?
Скрытый текст

#5 mistaqur

mistaqur

    Алхимик

  • Главные модераторы
  • Сообщений: 4230
  • Откуда: Санкт-Петербург

Написал 17.10.2012 - 13:25

Proxy - обычная практика для того, чтобы минимизировать отличия между клиентской стороной и серверной, а так же спрятать вызовы некоторых функций (например использование FML).

#6 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 17.10.2012 - 17:04

У CreativeTabs не tabBlocks, а tabBlock. Там где modid и version должны быть кавычки
@Mod(modid = "newmod", name = "Our New Mod", version = "1[paste][/paste]0")

Скрытый текст

#7 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 17.10.2012 - 21:37

Спасибо, поправлю. Немного неудобно писать в таком редакторе. Если будут еще оплошности, поправьте.Реквест на конфиг файл принят, будет идти после главы с предметами.==============Обновлено. Кстати, как вернуть нормальный шрифт на форуме?
Скрытый текст

#8 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 18.10.2012 - 08:26

Спасибо, поправлю. Немного неудобно писать в таком редакторе. Если будут еще оплошности, поправьте. Реквест на конфиг файл принят, будет идти после главы с предметами. ============== Обновлено. Кстати, как вернуть нормальный шрифт на форуме?

Качать оперу. Я уже привык, но маленькие буквы все равно удобнее. После конфига сможешь добавить создание еды, мобов, генерацию блока в мире? Как сделать блок, моба, предмет с нестандартной моделью?
Скрытый текст

#9 EnderBoy57

EnderBoy57

    Странник

  • Пользователи
  • Сообщений: 42
  • Откуда: The End

Написал 18.10.2012 - 10:48

TheApKoT, а ты сделаешь как создать новое измерение и блок с моделью а то ты так понятно обьесняешь

#10 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 18.10.2012 - 14:27

Создание еды, генерацию блока в мире, моба - будет точно. Насчет нестандартных моделей не уверен, но, скорее всего, будет. Новое измерение тоже, но там уже будет нужен Dimension API.

ты так понятно обьесняешь

Надеюсь, это не был сарказм.
Скрытый текст

#11 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 18.10.2012 - 15:06

Надеюсь, это не был сарказм.

Вряд ли это сарказм, первый туториал на русском, где я все понял. И спасибо за это.
Скрытый текст

#12 dmenik

dmenik

    Алхимик

  • Главные модераторы
  • Сообщений: 4284
  • Откуда: Из Мрачных Земель

Написал 18.10.2012 - 15:12

Неплохая статья, но на мой взгляд не хватает скриншотов непосредственно из процесса. Это вовсе не обязательно, но если будет время добавь. Новичкам будет гораздо проще ориентироваться.

fullcatwalk.gif Цитатник:

Скрытый текст

#13 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 18.10.2012 - 16:09

Что такое boolean, private, par (par3EntityPlayer), double и var (var1, var2)? А еще void.
Скрытый текст

#14 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 18.10.2012 - 16:24

Надеюсь, это не был сарказм.

Вряд ли это сарказм, первый туториал на русском, где я все понял. И спасибо за это.

Вау, я польщен. Ради такого и стоит стараться.

Что такое boolean, private, par (par3EntityPlayer), double и var (var1, var2)?

boolean - тип данных, может быть только да или нет - true или false. Например, прозрачен блок или нет, является ли он правильным кубом, и тому подобное.
private - модификатор, запрещающий использование переменной в других классах.
par - просто порядковое обозначение локальных переменных разработчиками. Например, то, что ты привел - переменная, обозначающая игрока в какой-либо функции, по порядку идущая третьей. Локальная - значит, что она используется только в одном процессе, и при следующем процессе под тем же именем может быть объявлена абсолютно другая переменная.
double - число, но не целочисленное - в отличие от int, оно может быть дробным. Как и float.
var - сокращение от variable(переменная). То же, что и par, только обычно объявляется в теле процесса, насколько я заметил.
void - тип функции, ничего не возвращающий(она же процедура в паскале). То есть, int возвращает целочисленное значение, double - числовое, char - символьное, и void ничего не возвращает. Конечно, могут быть не только такие функции, я просто привел пару примеров.
================
Насчет скриншотов - хорошо, учту, со следующих уроков будут вам скриншоты.
Скрытый текст

#15 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 18.10.2012 - 16:32

TheApKoT, спасибо.
У меня в главном файле мода getOrCreateIntProperty зачеркнуто, это нормально или что-то не так?
Скрытый текст

#16 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 18.10.2012 - 19:16

Это нормально. Насколько я понял, это из-за работы с внешними файлами, хотя я могу ошибаться.Кстати, блоки еще можно регистрировать с помощью getOrCreateBlockIdProperty(), тогда раздел не надо прописывать. Но так как getOrCreateItemIdProperty не существует, то я предпочитаю через Int.Обновлено. Кстати, подскажите, так и оформлять скриншотами или лучше скриншот+код внизу?
Скрытый текст

#17 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 19.10.2012 - 19:54

Я бы предпочел скриншот + код, т.к. новички в основном копируют.
Скрытый текст

#18 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 19.10.2012 - 20:24

Хорошо. Но лучше перепечатывать - так работает механическая память.
Скрытый текст

#19 NitroBoy2

NitroBoy2

    Опечаленный гастами

  • Главные модераторы
  • Сообщений: 2671
  • Ник в Minecraft:
    NitroToxin2
  • Откуда: Екатеринбург -> Москва

Написал 20.10.2012 - 09:09

компилятор MCP все равно почему-то на них ругается.

Вроде коменты должны быть только латинскими буквами. Можно ли как-то сделать шанс выпадения дропа из блока? К примеру 25%.

P.S. Чтобы блок генерировался с 90 по 80 блок надо писать int posY1 = 80+random.nextInt(10);?
У меня при такой строке ничего не генерируется.

Поставил int posY1 = random.nextInt(76)+10;
блок генерируется, но с самого бедрока.
Скрытый текст

#20 TheApKoT

TheApKoT

    Добытчик угля

  • Пользователи
  • Сообщений: 363
  • Откуда: The Earth Core

Написал 20.10.2012 - 17:24

С самого бедрока - то есть, генерируется и в самом бедроке, или только рядом с ним? У тебя отступ небольшой, возможно, большие жилы, начавшие генерацию выше, просто сгенерировались "по направлению вниз".Про шанс - просто объявляй в колич-ве дропа левую переменную, объявляй ей рандомное значение от 0 до 3, и если она равна, допустим, единице - то выполняй то, что тебе нужно. Иначе возвращай 0.
Скрытый текст


Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных