Всем привет. Меня просили сделать учебники по моддингу на 1.6.4.
Вот вам.
1.0.2
-Блок
-Изменения
-Текстура
1.0.1
-Дополнил урок 0.3
-Итем (Предмет)
-Некоторые изменения
1.0
-Релиз.
Main класс - это основной класс, в котором будут содержаться все переменные и регистрации.
Пакет - механизм, позволяющий организовать Java классы, могут содержаться в сжатом виде в JAR файлах. Обычно в пакеты объединяют классы одной и той же категории.
Класс - Файл, в котором будет содержать код чего-либо.
Переменные - это основной элемент хранения информации в нашем "Моде".
Что собственно нужно?
-Java и JDK
-MCP
-Eclipse
-Желание делать.
-Руки.
Для начала нужно установить Minecraft Coder Pack, Eclipse, JDK т.к. без них никуда.
=========================
Установим Java Development Kit
1)Скачиваем тут
2)Устанавливаем.
=========================
Установим Minecraft Coder Pack
1)Скачиваем отсюда src. Ищите подходящую для вас версию, но я советую вам Latest, это последняя версия.
2)Теперь как скачали, создаем папку на диске С или какая-то другая.
3)Распаковываем содержимое.
4)Нажимаем Install
5)Должно занять минут 10-15.
=========================
Теперь установим нашу среду разработки - Eclipse.
Можно и не её, например NetBeans, тоже как и Еклипс, но со своими причудностями.
1)Здесь выбираем какую хотим и под какую винду.
2)Скачиваем и устанавливаем.
Все готово!
=========================
Теперь настроим Eclipse
Вместо Modding - Переименуйте на вашу.
====================================
#1
Комбинации клавиш, которые нам помогут.
CTRL + Shift + O - Импорт всех недостающих классов и пакетов.
CTRL + Z - Отмена предыдущего действия
CTRL + C - Копировать
CTRL + V - Вставить
Примечание: Первая комбинация работает только в Eclipse!
#2
Также, дополнение для предметов и блоков.
setCreativeTab(CreativeTabs.TabMaterials) - это в какой вкладке в креативе будет Итем\Блок.
/**Не совсем помню, если ошибка исправлю.**/
setMaxStackSize(1) - Максимальный "стаксайз". (Сайз - размер)
Это нужно писать в
public Ваш блок или итем(int id, String name)
{
super(id);
setUnlocalizedName(name); - Под этой!
Текстура
Это блок
Текстура /assets/tutorial/textures/blocks/new_block.png
Это Итем
Текстура /assets/tutorial/textures/items/new_item.png
Создадим пакет в папке src, давайте назовем mymod.tutorial. Теперь в этом пакете класс, назовем Main, и пишем вот это:package mymod.tutorial;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.event.FMLInitializationEvent;
@Mod(modid = "Test", name = "Test", version = "0.0.0.0")
public class Main
{
@Instance("Test")
public static Base instance;
@EventHandler
public void init(FMLInitializationEvent FinchEvent) {
}
}
Нам очень понадобится прокси. Он нужен для того, что бы наш мод работал на клиенте и на сервере.
Создадим отдельный пакет mymod.tutorial.proxy
Добавим в МаинКласс
/** Снизу @Mod(...) **/
@NetworkMod(clientSideRequired = true, serverSideRequired = true, versionBounds = "0.0.1")
/** В основной класс **/
@SidedProxy(clientSide = "mymod.tutorial.proxy.ClientProxy", serverSide = "mymod.tutorial.proxy.ServerProxy")
public static ClientProxy TestProxy;
Регистрируем TestProxy
TestProxy.registerRenderThings();
И создадим классы: ClientProxy и ServerProxy
ServerProxy:
package mymod.tutorial;
public class ServerProxy
{
public void registerRenderThings()
{
}
}
}
ClientProxy:
package mymod.tutorial.proxy;
public class ClientProxy extends ServerProxy
{
@Override
public void registerRenderThings()
{
super.registerRenderThings();
/**Сюда будем писать рендеры**/
}
}
}
Что же, начнем?
В Main - классе, в init(FMLInitializationEvent FinchEvent) { /**Тут**/
}
Добавим строку
public Item MyItemPony = new ItemPony(800, "MyItemPony");
Создадим отдельный файл предмета
package ВАШ ПАКЕТ;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.Item;
public class ItemPony extends Item
{
public ItemPony(int id, String name)
{
super(id);
setUnlocalizedName(name);
}
/**
* Текстура /assets/mymodl/textures/items/ItemPony.png
*/
public void registerIcons(IconRegister par1IconRegister)
{
itemIcon = par1IconRegister.registerIcon("ВАШМОД:" + getUnlocalizedName().replace("tile.", ""));
}
}
Для начала в Маин класс напишем:
public Block new_block = new NewBlock(800, "new_block");
И новый класс.
package ВАШ ПАКЕТ
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
public class NewBlock extends Block
{
public NewBlock(int par1, String name)
{
super(par1, Material.rock);
setUnlocalizedName(name);
GameRegistry.registerBlock(this);
}
public void registerIcons(IconRegister par1IconRegister)
{
blockIcon = par1IconRegister.registerIcon("ВАШМОД:" + getUnlocalizedName().replace("tile.", ""));
}
}
Я буду дополнять этот учебник как только смогу! У меня не так уж и много свободного времени. Могут быть ошибки в тексте. Пишите в ЛС, где нашли.
Все вопросы писать в комментарии или Сюда По возможности, пожалуйста, закрепите тему.
Опять сломалась , нравится это сообщение.
Сообщение отредактировал 3 ноября 2013 - 07:15