- Баллы
- 76
- Имя в Minecraft
- SiRiuS_OSiRiuS
Оригинал
ЦЕЛЬ
Одна из самых классных вещей в 1.9 заключается в том, что предметы могут иметь различные модели в зависимости от их прочности. Предположительно, таким образом вы можете показать, что предметы изношены, но в то же время мы можем использовать это, чтобы добавить тысячи новых предметов в Minecraft!
Например, всё, что показано здесь, является деревянной мотыгой с разными значениями прочности:
КОД
Эта часть банально проста. Возьмите предмет с прочностью (например, инструмент) и создайте ItemStack для этого предмета с установленной прочностью. Давайте для примера используем прочность 1:
Этот код даст нам немного поломанную деревянную мотыгу. Как-то так:
Но, естественно, мы не хотим, чтобы показывалась полоска прочности предмета, и не хотим, чтобы прочность изменялась, когда предмет используется как инструмент. К счастью, для этого есть тег!
Этот код даёт нам следующий предмет:
Хорошо, больше нет полоски прочности! Но если мы создаём свой предмет, вероятно, мы не захотим всего этого "ванильного" описания. К счастью, и для этого есть API! Вы можете добавить флаг предмету на скрытие описания, как-то так:
Прекрасно, теперь у нас есть предмет с установленной прочностью, которая не будет меняться, и в описании нет ничего странного.
На этом часть кода заканчивается! Возможно, вы захотите установить название предмета или добавить описание, но я оставлю это вам.
Этот предмет готов стать собственным предметом вашей мечты... ему просто нужна новая текстура.
РЕСУРСПАК
Здесь всё немного сложнее. Если у вас нет опыта в создании ресурспака, это будет довольно сложно. Создайте новую пустую папку и положите в неё файл pack.mcmeta, он будет выглядеть как-то так:
!!! Для Minecraft 1.10 и ниже используйте pack_format: 2
Затем добавьте все подпапки, идущие вплоть до "assets/minecraft/models/item".
В папке предмета создайте новый файл под названием wooden_hoe.json. Он будет "хранилищем" для всех ваших собственных предметов. Он говорит клиенту, какие модели использовать при определённой прочности деревянной мотыги.
Этот файл будет выглядеть как-то так:
Хорошо, давайте на этом остановимся.
Мы перезаписываем деревянную мотыгу, но исходя из базовой версии. "parent" и "textures" указывают клиенту использовать мотыгу по умолчанию. Это значит, что мотыга без повреждений будет нормально смотреться.
Теперь для новой вещи - блок "overrides" позволяет вам указывать разные модели для использования в зависимости от определённых параметров предмета. Эти параметры называются "predicades", в нашем случае сфокусируемся на параметре "damage".
Модель предмета будет варьироваться в зависимости от повреждения в виде какого-то процента от 0 до 1. Таким образом, значение "0.016666" исходит из соотношения "1/60" - потому что я хочу применить свою модель для мотыги с повреждением 1, а максимальная прочность деревянной мотыги - 60.
Посетите Minecraft вики, чтобы увидеть список прочностей предметов: https://minecraft-ru.gamepedia.com/Мотыга
Вы можете добавлять сколько угодно моделей, вплоть до максимальной прочности предмета - просто для каждой делайте "x/60".
Также вы можете использовать этот сайт, чтобы автоматически сгенерировать шаблон указанного вида инструмента без математических рассчётов:
http://accidentalgames.com/media/durabilityModels.php
Сохранение "ванильных" предметов
Если вы хотите по-прежнему использовать "ванильные" предметы с работающей прочностью, это можно реализовать!
Добавьте ещё одну запись в ваш файл с моделью, чтобы конец этого файла в итоге выглядел примерно так:
Это заставит повреждённые версии предмета продолжить использовать основную модель. Обратите внимание, если вы использовали этот JSON-генератор, вам придётся изменить последнюю запись - она должна обращаться к названию модели, например, wooden_hoe вместо wood_hoe.
И, наконец, положите модель предмета в папку "item" в ресурспаке, в данном случае модель будет называться "my_cool_custom_item.json". (Создание собственных моделей предметов не является целью данного туториала, я думаю, в Интернете полно видеоуроков по этой теме. Или, в конце концов, можете использовать Cubik).
Заархивируйте ваш ресурспак в формате .zip в папку <minecraft>/resourcepacks. После этого вы сможете поставить этот ресурспак и увидеть ваш предмет!
Если что-то не получилось, посмотрите структуру ресурспака из этого туториала на GitHub:
https://github.com/elBukkit/MagicPlugin/tree/master/Magic/src/resource-pack/default
ФИНАЛЬНЫЕ АККОРДЫ
Когда у вас всё получилось, вы можете рассмотреть следующие вещи:
ЦЕЛЬ
Одна из самых классных вещей в 1.9 заключается в том, что предметы могут иметь различные модели в зависимости от их прочности. Предположительно, таким образом вы можете показать, что предметы изношены, но в то же время мы можем использовать это, чтобы добавить тысячи новых предметов в Minecraft!
Например, всё, что показано здесь, является деревянной мотыгой с разными значениями прочности:
КОД
Эта часть банально проста. Возьмите предмет с прочностью (например, инструмент) и создайте ItemStack для этого предмета с установленной прочностью. Давайте для примера используем прочность 1:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
Но, естественно, мы не хотим, чтобы показывалась полоска прочности предмета, и не хотим, чтобы прочность изменялась, когда предмет используется как инструмент. К счастью, для этого есть тег!
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true); // Для версий 1.11 и выше
customItem.setItemMeta(meta);
Хорошо, больше нет полоски прочности! Но если мы создаём свой предмет, вероятно, мы не захотим всего этого "ванильного" описания. К счастью, и для этого есть API! Вы можете добавить флаг предмету на скрытие описания, как-то так:
Java:
ItemStack customItem = new ItemStack(Material.WOOD_HOE, 1, (short)1);
ItemMeta meta = customItem.getItemMeta();
meta.setUnbreakable(true);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE);
customItem.setItemMeta(meta);
Прекрасно, теперь у нас есть предмет с установленной прочностью, которая не будет меняться, и в описании нет ничего странного.
На этом часть кода заканчивается! Возможно, вы захотите установить название предмета или добавить описание, но я оставлю это вам.
Этот предмет готов стать собственным предметом вашей мечты... ему просто нужна новая текстура.
РЕСУРСПАК
Здесь всё немного сложнее. Если у вас нет опыта в создании ресурспака, это будет довольно сложно. Создайте новую пустую папку и положите в неё файл pack.mcmeta, он будет выглядеть как-то так:
Код:
{
"pack": {
"pack_format": 3,
"description": "Официальный Магический Ресурспак от elMakers"
}
}
Затем добавьте все подпапки, идущие вплоть до "assets/minecraft/models/item".
В папке предмета создайте новый файл под названием wooden_hoe.json. Он будет "хранилищем" для всех ваших собственных предметов. Он говорит клиенту, какие модели использовать при определённой прочности деревянной мотыги.
Этот файл будет выглядеть как-то так:
Код:
{
"parent": "item/handheld",
"textures": {
"layer0": "items/wood_hoe"
},
"overrides": [
{"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"}
]
}
Мы перезаписываем деревянную мотыгу, но исходя из базовой версии. "parent" и "textures" указывают клиенту использовать мотыгу по умолчанию. Это значит, что мотыга без повреждений будет нормально смотреться.
Теперь для новой вещи - блок "overrides" позволяет вам указывать разные модели для использования в зависимости от определённых параметров предмета. Эти параметры называются "predicades", в нашем случае сфокусируемся на параметре "damage".
Модель предмета будет варьироваться в зависимости от повреждения в виде какого-то процента от 0 до 1. Таким образом, значение "0.016666" исходит из соотношения "1/60" - потому что я хочу применить свою модель для мотыги с повреждением 1, а максимальная прочность деревянной мотыги - 60.
Посетите Minecraft вики, чтобы увидеть список прочностей предметов: https://minecraft-ru.gamepedia.com/Мотыга
Вы можете добавлять сколько угодно моделей, вплоть до максимальной прочности предмета - просто для каждой делайте "x/60".
Также вы можете использовать этот сайт, чтобы автоматически сгенерировать шаблон указанного вида инструмента без математических рассчётов:
http://accidentalgames.com/media/durabilityModels.php
Сохранение "ванильных" предметов
Если вы хотите по-прежнему использовать "ванильные" предметы с работающей прочностью, это можно реализовать!
Добавьте ещё одну запись в ваш файл с моделью, чтобы конец этого файла в итоге выглядел примерно так:
Код:
{
"parent": "item/handheld",
"textures": {
"layer0": "items/wood_hoe"
},
"overrides": [
{"predicate": {"damaged": 0, "damage": 0.01666666666667}, "model": "item/my_cool_custom_item"},
{"predicate": {"damaged": 1, "damage": 0}, "model": "item/wooden_hoe"}
]
}
И, наконец, положите модель предмета в папку "item" в ресурспаке, в данном случае модель будет называться "my_cool_custom_item.json". (Создание собственных моделей предметов не является целью данного туториала, я думаю, в Интернете полно видеоуроков по этой теме. Или, в конце концов, можете использовать Cubik).
Заархивируйте ваш ресурспак в формате .zip в папку <minecraft>/resourcepacks. После этого вы сможете поставить этот ресурспак и увидеть ваш предмет!
Если что-то не получилось, посмотрите структуру ресурспака из этого туториала на GitHub:
https://github.com/elBukkit/MagicPlugin/tree/master/Magic/src/resource-pack/default
ФИНАЛЬНЫЕ АККОРДЫ
Когда у вас всё получилось, вы можете рассмотреть следующие вещи:
- Чем выше максимальная прочность предмета, тем больше моделей вы сможете сделать. У алмазной мотыги максимальная прочность - 1,562 (!)
- Когда настало время отправлять ресурспак игрокам, вам нужно будет где-то разместить его! Я думаю, Dropbox подойдёт, просто получите прямую ссылку и добавьте её в файл server.properties.
- Если вы собираетесь обновлять ресурспак, имейте в виду, что вам также придётся добавить хэш SHA1 в ваш server.properties. Или для каждого "обновления" переименовывать ресурспак. Иначе клиенты не станут заново загружать его.
- В 1.9 есть ещё одна крутая вещь - предметы можно носить как шапки, и они будут показываться в игре! Для этого нужно добавить блок отображения "head" в json-файл модели. Короче, https://github.com/elBukkit/MagicPl...ecraft/models/item/custom/magic_hat.json#L587
Последнее редактирование: