Создание предмета#
Основа#
Чтобы написать свой первый предмет, вам необходимо создать класс и наследоваться от Item.
package ru.mcmodding.tutorial.common.item;
import net.minecraft.item.Item;
public class RingItem extends Item {
public RingItem() {
setUnlocalizedName("ring");
setTextureName(McModding.MOD_ID + ":ring");
setMaxStackSize(1);
}
}
Вот так просто пишется собственный предмет. Давайте разберёмся, что у нас в конструкторе написано.
setUnlocalizedName(String)
— задаёт нелокализованное название предмета(см. статью Локализация)setTextureName(String)
— задаёт текстуру. Необходимо указывать ModId, чтобы текстура бралась не из ресурсов Minecraft, а из ресурсов нашего мода. Пример:modId:textureName
, можно также указывать путь: ‘modId:folder/textureName’setMaxStackSize(Integer)
— задаёт максимальное количество предметов
Остальные сеттеры вы можете самостоятельно просмотреть в классе Item, ко многим из них прилагаются комментарии от MCP и MinecraftForge.
Теперь приступим к регистрации нашего предмета. Чтобы зарегистрировать наше кольцо, необходимо использовать GameRegistry#registerItem
в который передаётся экземпляр класса Item
и регистрируемое имя предмета. Создадим для большего удобства класс ModItems
в котором будут храниться объекты наших предметов и будет происходить регистрация.
package ru.mcmodding.tutorial.common.handler;
import cpw.mods.fml.common.registry.GameRegistry;
import ru.mcmodding.tutorial.common.item.RingItem;
public class ModItems {
public static final RingItem RING = new RingItem();
public static void register() {
GameRegistry.registerItem(RING, "ring");
}
}
Осталось добавить вызов метода ModItems#register
в CommonProxy#preInit
public class CommonProxy {
public void preInit(FMLPreInitializationEvent event) {
ModItems.register();
}
}
Запускаем игру и заходим в мир. Чтобы получить только что написанный предмет, введите такую команду:
/give @p mcmodding:ring
.
Где mcmodding:ring
:
mcmodding
— это ModId модаring
— регистрируемое имя предмета
Текстура#
В прошлой разделе мы рассмотрели базовый принцип создания предмета и указали текстуру с помощью метода Item#setTextureName
,
но мы получили отсутствующую текстуру. Для того чтобы это исправить, необходимо поместить свою текстуру предмета в папку с ресурсами(resources) по пути
assets/modId/textures/items
(вместо modId
должен быть ваш идентификатор мода! В нашем случае это mcmodding
).
Возьмём такую текстуру кольца:
Внимание!
Соотношение сторон должно быть 1:1, т.е если ваша текстура шириной 32 пикселя, то и высота должна быть 32 пикселя, иначе текстура не будет загружена!
Исключением являются текстуры с KeyFrame анимацией.
Если всё было сделано, как написано в статье, то в результате наш предмет получит текстуру:
Текстура с анимацией#
Вы можете добавить текстуру с KeyFrame анимацией, выглядят такие текстуры примерно так:
Для работы таких текстур необходимо создавать отдельный файл названиеТекстуры.png.mcmeta
, который содержит такую информацию:
{
"animation": {
"frametime": 5,
"width": 12,
"height": 12,
"frames": [
0, 1, 2, 3, 2, 1, 0
]
}
}
frametime
— длительность одного кадра в тиках. К примеру, если указать 40, то один кадр будет отображаться две секундыwidth
— ширина кадра. Необходимо применять, если кадры имеют нестандартный ширинуheight
— высота кадра. Необходимо применять, если кадры имеют нестандартную высотуframes
— массив кадров. ПринимаетInteger
, а также объектframe
(см. ниже). Кадры начинаются от 0 и до N кадра(зависит от того сколько их в текстуре). Индексы можно менять местами, чтобы изменить порядок отображения кадров
Дополнение к frames
#
{
"animation": {
"frames": [
{
"index": 0,
"time": 25
},
{
"index": 1,
"time": 10
},
{
"index": 2,
"time": 50
}
]
}
}
Вы можете также указать для конкретного кадра(по его индексу) время его воспроизведения.
Работает аналогично прошлому примеру, только достаточно менять параметр index
для изменения порядка отображения.
Наложение текстур#
Важно!
Данный раздел рассчитан на разработчиков, прочитавших статью «Подтипы»!
Возможно вы задумаетесь о том, как добавить не одну, а две и более текстур с наложением слоя или сменой от определённых условий,
как например это сделано у кожаной брони или у лука при натягивании тетивы.
Создадим предмет Банка с краской
, имеющий основную текстуру и текстуру слоя, которую в дальнейшем мы окрасим в стандартные цвета Minecraft.
package ru.mcmodding.tutorial.common.item;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemDye;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import ru.mcmodding.tutorial.McModding;
import java.util.List;
public class PaintCanItem extends Item {
@SideOnly(Side.CLIENT)
private IIcon colorMask;
public PaintCanItem() {
setUnlocalizedName("paint_can");
setTextureName(McModding.MOD_ID + ":paint_can");
setMaxStackSize(1);
setHasSubtypes(true);
}
@Override
@SideOnly(Side.CLIENT)
public boolean requiresMultipleRenderPasses() {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamageForRenderPass(int meta, int renderPass) {
return pass == 1 ? colorMask : super.getIconFromDamageForRenderPass(meta, renderPass);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {
super.registerIcons(register);
colorMask = register.registerIcon(McModding.MOD_ID + ":paint_can_color");
}
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack stack, int renderPass) {
return renderPass == 0 ? 0xFFFFFF : ItemDye.field_150922_c[stack.getItemDamage() % ItemDye.field_150922_c.length];
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs tab, List items) {
for (int damage = 0, size = ItemDye.field_150922_c.length; damage < size; damage++) {
items.add(new ItemStack(item, 1, damage));
}
}
}
requiresMultipleRenderPasses
— требует от игры несколько проходов для отрисовки предмета(см. примечание ниже)
Minecraft для большинства предметов использует один проход, но при включении
requiresMultipleRenderPasses
== true,
кол-во проходов становится два. Чтобы изменить кол-во проходов для отрисовки предмета,
вы можете посмотреть методItem#getRenderPasses(Integer)
getIconFromDamageForRenderPass(Integer, Iteger)
— возвращает иконку предмета в зависимости от меты предмета и текущего прохода рендера.
Так как наш предмет имеет два прохода для отрисовки банки с краской, то нам необходимо указать, что во втором проходе нужно рисовать маску цвета банки.
Почему мы начинаем не от 0, а от 1? Это связано с тем, что на 0 проходе находится основная текстура предмета, а уже от
1 до N(см.Item#getRenderPasses(Integer)
) дополнительные.
registerIcons(IIconRegister)
— в данном методе проходит регистрация иконок предметовgetColorFromItemStack(ItemStack, Integer)
— возвращает цвет предмета. Стандартный цвет предмета: 0xFFFFFF(16777215)
В
getColorFromItemStack(ItemStack, Integer)
мы проверяем, если текущий проход равен 0, то цвет будет стандартный.
Если же проход 1 до N(наша маска цвета), то окрашивать маску в цвет красителя по мете предмета.
Нам осталось добавить текстуры и зарегистрировать предмет.
Если вы всё сделали правильно, то в игре вы получите такой результат:
Модель#
Важно!
Данный раздел рассчитан на более опытных разработчиков!
Текстуру вы научились добавлять к своему предмету, но вы скорее всего захотите добавить модель к своему предмету.
Для это необходимо реализовать интерфейс IItemRenderer
.
package ru.mcmodding.tutorial.client.render.item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.IItemRenderer;
public class RingItemRender implements IItemRenderer {
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return false;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return false;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
}
}
-
handleRenderType(ItemStack, ItemRenderType)
— обрабатывает текущий тип рендера, а именно: -
ItemRenderType#ENTITY
— предмет лежит на земле или вставлен в рамку ItemRenderType#EQUIPPED
— предмет находится в рукеItemRenderType#EQUIPPED_FIRST_PERSON
— предмет находится в руке от первого лицаItemRenderType#INVENTORY
— предмет находится в инвентаре-
ItemRenderType#FIRST_PERSON_MAP
— предмет рисуется как карта в обеих руках -
shouldUseRenderHelper(ItemRenderType, ItemStack, ItemRendererHelper)
— нужно ли использовать вспомогательные обработки рендера(см. пояснение)
Дополнение к shouldUseRenderHelper
#
Если вернуть true, то к нашему рендеру предмету будет применена вспомогательная обработка:
ItemRendererHelper#ENTITY_ROTATION
— предмет будучи на земле вращается на 360ItemRendererHelper#ENTITY_BOBBING
— предмет будет двигать при ходьбе вверх-внизItemRendererHelper#EQUIPPED_BLOCK
— предмет будет отрисовываться 3D моделью, либо 2D текстуройItemRendererHelper#BLOCK_3D
— приравнивает предмет к блоку имеющий RenderBlocks#renderItemIn3d-
ItemRendererHelper#INVENTORY_BLOCK
— предмет будет отрисовываться 3D модель, либо 2D текстурой в инвентаре -
renderItem(ItemRenderType, ItemStack, Object[])
— в данном методе происходит сама отрисовка нашего предмета. Параметрdata
принимает особые данные, которые передаются в зависимости от типа отрисовки. Подробнее смотритеItemRenderType
для получения подобной информации о данных передаваемых на каждый тип!
Помимо реализации IItemRenderer
, необходимо загрузить модель. Можно использовать любую модель, главное чтобы её загрузку
поддерживал MinecraftForge, иначе вам придётся реализовывать загрузку нужной вам модели самостоятельно! В данном случае
мы воспользуемся готовым решением и будет использовать Wavefront(.obj) формат с дополнительной обёрткой от Dahaka
Совет
Если вы будете использовать Wavefront как основной формат моделей, то не забудьте сделать триангуляцию модели, чтобы не получить исключение при загрузке!
package ru.mcmodding.tutorial.client.render.item;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.client.model.obj.WavefrontObject;
import ru.mcmodding.tutorial.McModding;
import ru.mcmodding.tutorial.client.render.ModelWrapperDisplayList;
import static org.lwjgl.opengl.GL11.*;
@SideOnly(Side.CLIENT)
public class RingItemRender implements IItemRenderer {
private final ResourceLocation modelPath = new ResourceLocation(McModding.MOD_ID, "models/ring.obj");
private final IModelCustom ringModel = new ModelWrapperDisplayList((WavefrontObject) AdvancedModelLoader.loadModel(modelPath));
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return type == ItemRenderType.EQUIPPED_FIRST_PERSON;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
glPushMatrix();
glDisable(GL_TEXTURE_2D);// Отключаем текстурирование, так как у нас её нет для данной модели
glTranslatef(2F, 0F, 0F);// Смещаем по X модель, чтобы было хорошо видно модель
ringModel.renderAll();
glEnable(GL_TEXTURE_2D);// Включаем текстурирование
glPopMatrix();
}
}
Совет
Если вы хотите использовать текстуру, то вам необходимо сделать перед отрисовкой привязку текстуры
Пример привязки текстуры к модели:
public class RingItemRender implements IItemRenderer {
private final ResourceLocation ringTexturePath = new ResourceLocation(McModding.MOD_ID, "textures/models/ring.png");
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
Minecraft.getMinecraft().renderEngine.bindTexture(ringTexturePath);
glPushMatrix();
glTranslatef(2F, 0F, 0F);
ringModel.renderAll();
glPopMatrix();
}
}
Нам необходимо зарегистрировать рендер для кольца, чтобы это сделать, создадим в ModItems
метод registerRender
.
public class ModItems {
@SideOnly(Side.CLIENT)
public static void registerRender() {
}
}
В методе необходимо вызывать MinecraftForgeClient#registerItemRenderer(Item, IItemRenderer)
.
Первый параметр метода отвечает за предмет к которому будет привязан новый рендер. Второй параметр отвечает за
получение объекта класса рендера предмета.
public class ModItems {
@SideOnly(Side.CLIENT)
public static void registerRender() {
MinecraftForgeClient.registerItemRenderer(RING, new RingItemRender());
}
}
Осталось добавить вызов метода ModItems#registerRender
в ClientProxy#init
public class ClientProxy {
public void init(FMLInitializationEvent event) {
super.init(event);
ModItems.registerRender();
}
}
Загружаем модель по указанному нами пути в ресурсах нашего мода и запускаем игру!
Ссылка на модель
Загрузить PDF
Загрузить PDF
В этой статье мы расскажем вам, как редактировать текстуры Minecraft и использовать их в игре на компьютерах под управлением Windows и macOS.
-
1
Установите архиватор WinRAR на компьютере. Он понадобится, чтобы открыть JAR-файл.
- Когда будете устанавливать WinRAR, убедитесь, что на странице со списком типов поддерживаемых файлов возле «JAR» есть флажок. Также разрешите (если будет предложено) WinRAR добавить ярлыки в контекстное меню.
-
2
Откройте лаунчер Minecraft. Для этого дважды щелкните по значку Minecraft.
-
3
Щелкните по Launch options (Параметры запуска). Эта опция находится в верхней правой части окна лаунчера.
-
4
Нажмите Last release (Последний выпуск). Вы найдете эту опцию в верхней части окна лаунчера.
-
5
Откройте папку с игрой Minecraft. Для этого нажмите на зеленую стрелку в правой части поля «Game directory» (Папка с игрой). Откроется папка «.minecraft», в которой хранятся все файлы Minecraft.
-
6
Дважды щелкните по папке «versions». Вы найдете ее посередине папки «.minecraft».
-
7
Дважды щелкните по папке с самой последней версией игры. По состоянию на февраль 2019 года самой последней версией Minecraft является версия 1.13.2, то есть дважды щелкните по папке «1.13.2».
- Если вы сомневаетесь, ищите папку, в названии которой есть наибольшее число.
-
8
Скопируйте файл JAR. Щелкните по файлу JAR, значок которого похож на значок Java, а затем нажмите Ctrl+C.
-
9
Щелкните по папке «.minecraft». Вы найдете ее в левой части окна. Вы вернетесь в основную папку с игрой.
-
10
Создайте новую папку для текстур пака. Для этого:
- Нажмите на вкладку «Главная».
- Нажмите «Новая папка».
- Введите имя папки.
- Нажмите ↵ Enter.
-
11
Откройте созданную папку. Для этого дважды щелкните по ней.
-
12
Вставьте в папку скопированный файл JAR. Для этого нажмите Ctrl+V.
-
13
Распакуйте файл JAR с помощью WinRAR. Щелкните правой кнопкой мыши по файлу JAR, а затем в меню выберите «Извлечь в [имя JAR-файла]».
- Например, если JAR-файл называется «1.13.1», нажмите «Извлечь в 1.13.1».
- Если у мыши или трекпада нет правой и левой кнопок, щелкните по правой стороне кнопки или коснитесь трекпада двумя пальцами (или нажмите на его кнопку).
-
14
Откройте папку JAR. Дважды щелкните по папке «1.13.1» (или папке с последней версией Minecraft).
-
15
Дважды щелкните по папке «assets». Она находится в верхней части папки JAR.
- На самом деле понадобится только папка «assets», поэтому другое содержимое папки JAR можно удалить.
-
16
Дважды щелкните по папке «minecraft». Вы найдете ее посередине папки «assets».
-
17
Дважды щелкните по папке «textures». Она находится посередине папки «Minecraft».
-
18
Найдите категорию текстуры, которую хотите редактировать, и откройте ее папку. Например, чтобы отредактировать текстуру блока, дважды щелкните по папке «blocks».
-
19
Откройте текстуру в Paint. Найдите текстуру, которую хотите отредактировать, щелкните по ней правой кнопкой мыши и в меню выберите «Открыть с помощью» > «Paint».
-
20
Отредактируйте текстуру. В Paint измените цвета текстуры. Ваши действия будут зависеть от того, как вы хотите изменить текстуру.
-
21
Сохраните внесенные изменения и закройте Paint. Нажмите Ctrl+S или щелкните по значку в виде дискеты в верхнем левом углу экрана, а затем закройте Paint.
-
22
Измените другие текстуры. Когда закончите, добавьте текстур пак в Minecraft.
-
23
Вернитесь в папку JAR. Для этого нажмите на имя папки JAR (например, «1.13.1») в левой части окна.
-
24
Создайте и откройте новый текстовый файл. Для этого:
- Нажмите «Главная».
- Щелкните по «Новый элемент».
- Нажмите «Текстовый документ».
- Нажмите ↵ Enter, а затем дважды щелкните по созданному файлу.
-
25
Введите код ресурс пака. В созданном текстовом документе введите следующий код — каждая строка кода должна находится на отдельной строке:
{
"pack":{
"pack_format":4,
"description":"Template Resource Pack"
}
}
-
26
Сохраните текстовый файл с расширением «.mcmeta». Для этого:
- Нажмите «Файл».
- Нажмите «Сохранить как».
- Введите pack.mcmeta в текстовом поле «Имя файла».
- Откройте меню «Тип файла».
- Нажмите «Все файлы».
- Нажмите «Сохранить».
-
27
Создайте ресурс пак. Откройте папку JAR, найдите файл с расширением «.mcmeta», щелкните по нему правой кнопкой мыши и в меню выберите «Отправить» > «Сжатая ZIP-папка».
-
28
Скопируйте ZIP-файл текстур пака. Щелкните по нему, а затем нажмите Ctrl+C.
-
29
Добавьте текстур пак в Minecraft. Щелкните по папке «.minecraft», дважды щелкните по папке «resourcepacks» и нажмите Ctrl+V, чтобы вставить ZIP-файл текстур пака в папку. Теперь активируйте текстур пак в Minecraft.
Реклама
-
1
Установите архиватор Unarchiver. Он позволит распаковать архив, чтобы скопировать текстуры. Для этого:
- Откройте App Store.
- Нажмите на строку поиска в верхнем правом углу окна.
- Введите «unarchiver» в строке поиска и нажмите ⏎ Return.
- Нажмите «Установить» на странице приложения «Unarchiver».
-
2
Откройте лаунчер Minecraft. Для этого дважды щелкните по значку Minecraft.
-
3
Щелкните по Launch options (Параметры запуска). Эта опция находится в верхней правой части окна лаунчера.
-
4
Нажмите Last release (Последний выпуск). Вы найдете эту опцию в верхней части окна лаунчера.
-
5
Откройте папку с игрой Minecraft. Для этого нажмите на зеленую стрелку в правой части поля «Game directory» (Папка с игрой). Откроется папка «.minecraft», в которой хранятся все файлы Minecraft.
-
6
Откройте папку «resourcepacks». Прокрутите вниз, чтобы найти эту папку, а затем дважды щелкните по ней.
-
7
Создайте новую папку. Откройте меню «Файл», выберите в нем «Новая папка», введите имя папки и нажмите ⏎ Return.
-
8
Откройте созданную папку. Для этого дважды щелкните по ней.
-
9
Запустите TextEdit. Нажмите «Spotlight»
, введите textedit и нажмите «TextEdit» под строкой поиска. Откроется окно TextEdit.
-
10
Введите код ресурс пака. В созданном текстовом документе введите следующий код — каждая строка кода должна находится на отдельной строке:
{
"pack":{
"pack_format":4,
"description":"Template Resource Pack"
}
}
-
11
Конвертируйте документ в простой текст. Откройте меню «Формат» в верхней части экрана, выберите в нем «Конвертировать в простой текст», а затем нажмите «OK».
-
12
Сохраните документ в формате «mcmeta». Для этого:
- Нажмите ⌘ Command+S, чтобы открыть окно «Сохранить».
- Снимите флажки у «Скрывать расширение» и «Если расширение недоступно, использовать .txt».
- Щелкните по «Кодировка простого текста» и в меню выберите «Западная (Windows Latin 1)».
- Введите pack.mcmeta в текстовом поле «Сохранить как».
- Нажмите «Сохранить».
-
13
Переместите документ TextEdit в созданную папку. Либо перетащите файл «pack.mcmeta» в папку, либо щелкните по файлу «pack.mcmeta», нажмите ⌘ Command+C, щелкните в окне папки и нажмите ⌘ Command+V.
-
14
Вернитесь в папку «Minecraft». Дважды нажмите кнопку «Назад», которая выглядит как направленная влево стрелка и находится в левой верхней части окна Finder. Вы перейдете из созданной папки в папку «resourcepacks», а оттуда в папку «minecraft».
-
15
Откройте папку «versions». Найдите эту папку и дважды щелкните по ней.
-
16
Дважды щелкните по папке с текущей версией Minecraft. Если вы сомневаетесь, найдите папку, в имени которой есть наибольшее число.
-
17
Откройте файл JAR. Щелкните по нему, чтобы выбрать, нажмите «Файл» > «Открыть с помощью» > «The Unarchiver», дождитесь, когда файл откроется, а затем дважды щелкните по папке с номером версии Minecraft.
-
18
Найти папку «assets». Либо прокрутите папки и файлы Minecraft (их более 4000), либо введите assets в строке поиска в верхней правой части окна.
-
19
Скопируйте папку «assets». Щелкните по ней, а затем нажмите ⌘ Command+C.
-
20
Вернитесь в папку с текстурами. Нажимайте кнопку «Назад», пока не вернетесь в папку «minecraft», а затем дважды щелкните по папке «resourcepacks» и дважды щелкните по папке с текстур паком.
-
21
Вставьте папку «assets». Для этого нажмите ⌘ Command+V.
-
22
Найдите текстуру, которую хотите отредактировать. Для этого:
- Дважды щелкните по папке «assets».
- Дважды щелкните по папке «minecraft».
- Дважды щелкните по папке «textures».
- Дважды щелкните по папке с категорией текстуры.
- Найдите текстуру, которую нужно изменить.
-
23
Отредактируйте текстуру. Выберите текстуру, нажмите «Файл», выберите «Открыть с помощью», выберите нужный графический редактор (например, Photoshop) и измените текстуру.
-
24
Сохраните внесенные изменения. Нажмите ⌘ Command+S, а затем закройте графический редактор.
-
25
Измените любые другие текстуры. Когда вы закончите, активируйте текстур пак в Minecraft.
Реклама
-
1
Запустите Minecraft. Откройте лаунчер и нажмите «Play» (Играть).
- Если вы не закрыли лаунчер, перейдите на вкладку «News» (Новости), а затем нажмите «Play».
-
2
Щелкните по Настройки. Эта опция находится в нижнем левом углу экрана.
-
3
Нажмите Пакеты ресурсов. Вы найдете эту опцию в левом нижнем углу страницы.
-
4
Нажмите на изображение пакета ресурсов. Оно переместится из левого столбца в правый.
-
5
Щелкните по Готово. Эта опция находится внизу страницы. Текстур пак будет активирован — теперь загрузите игровой мир, чтобы протестировать обновленные текстуры.
Реклама
Об этой статье
Эту страницу просматривали 48 208 раз.
Была ли эта статья полезной?
Привет всем! Увидел ресурс пак изменяющий модель Ифрита (Всполох, Blaze):
И подумал, а я тоже так хочу. Скачал этот пак, посмотрел внутрь, а потом ещё и посмотрел более подробно в сети.
И теперь хочу поделиться своими находками с вами! Погнали.
Что нужно знать до?
Что такое ресурс пак для Minecraft знают все, я думаю. Это могут быть модели, текстуры, шейдеры. Короче, какие-то дополнительные или альтернативные ресурсы. Есть ещё датапаки, но они созданы, чтобы вносить более глобальные изменения в то, как игра работает. Их используют, чтобы редактировать достижения, рецепты, биомы, дроп и т.д. Но в этот раз нас интересуют только модели и Optifine.
Если честно, то в этом паке была ещё папка со скриншотами, но они нам ни к чему там. Необязательно для создания своего пака брать чей-то, всё необходимое можно создать буквально по ходу дела. Я просто начал с этого для наглядности. Итак, разберём, что же тут у нас есть.
pack.mcmeta это JSON объект, который содержит описание и версию игры. Создать и открыть его можно обычным блокнотом, только следите, чтобы в имени файла не осталось всяких .txt!
{ «pack»: { «pack_format»: 6, «description»: «A Recource Pack by Someone» } } |
Цифра 6 для pack_format соответствует версиям 1.16.2 — 1.16.5. Для других версий:
- 4 для версий 1.13 – 1.14.4
- 5 для версий 1.15 – 1.16.1
- 6 для версий 1.16.2 – 1.16.5
- 7 для версии 1.17+
Описание (description) может быть практически любым. Не забывайте, что для JSON важно положение кавычек, запятых и скоб. Не оставляйте открытыми блоки. Если надо поставить именно кавычки, то используем ».
pack.png — изображение, которое игрок увидит в игре. В примере мы будем использовать png изображение 560х560.
Теперь более интересное. Папка assets. Именно тут и будут наши ресурсы. Чтобы не грузить лишней инфой, просто создайте такие папки: assetsminecraftoptifinecem. В последней и будут сохранены новые модели.
Формат моделей будет .jem и именно их мы сейчас будем создавать.
Модели тоже можно открыть блокнотом и там снова будет JSON код. Но руками это писать — дикое извращение. На помощь нам приходит достаточно удобное решение в виде Blockbench. Я его уже когда-то использовал для гайда по созданию нового моба на Forge.
Запускаем редактор и видим такое окошко:
Получаем пустой проект. Предлагаю изменить курочку, поэтому используем chicken в имени модели:
И теперь можно начинать творить 😊. Хотя, куда проще было бы редактировать существующие, чем делать с нуля, да? Для этого существует очень неплохой плагин CEM Template Loader.
И выбираем курицу запустив плагин из вкладки Filter:
Результат:
Окей, ноги странные, но это потому, что модель пока без текстуры. Добавляем текстуру (временно):
Но есть весомое НО. У моделей для optifine есть свои требования для имён частей тела. Курице нужны такие части:
# chicken head, body, right_leg, left_leg, right_wing, left_wing, bill, chin.
У нас всё совпало, это хорошо.
Список имён для других мобов.
Соблюдать имена обязательно для правильной работы модели. И для адекватной анимации.
Завершение и создание ресурс пака для Minecraft Optifine
Можно создавать практически любые модели, но в рамках возможностей редактора, конечно же. К примеру… сделать курицу размером с гиганта или переделать вообще всё полностью с нуля. Для результата главное чтобы совпадали имена групп (то, что с иконкой папки в редакторе). Я решил просто сделать курицу более курицей.
Теперь обсудим текстуру. Вы можете оставить так, но тогда модель будет искать текстуру в той же папке, что и она сама. Т.е. для использования своих текстур их можно просто закинуть в assetsminecraftoptifinecem. Но тогда ваша текстура не будет реагировать на текстурпаки. Нам это не нужно, так что удаляем текстуру из проекта и через File -> Export -> Export OptiFine Jem делаем экспорт модели в свою cem папку.
Теперь нужно выделить pack.mcmeta, pack.png, папку assets и запаковать в zip архив.
Кидаем это чудо в resourcepacks и активируем в игре. Для примера я использовал вместо иконки своё старое лого, так как под руку попалось именно оно. Но это мелочи, главное чтобы работало.
Результаты
В плоском мире создаём курицу и смотрим, получилось ли:
На этом вроде и всё. Вы только что создали свой ресурс пак для Minecraft на OptiFine, который меняет модель моба! Возможно и я ещё допилю свою подборку мобов, ведь процесс не сложный и достаточно занятный. А вам удачи и творческих успехов!
ПС. Не баг, а фича, или просто неудачный эксперимент: