PERSEPHONEROLEPLAY · 1.21.1

Гайд

Свой аватар в Figura

Figura показывает вместо обычного скина модель, которую вы нарисовали сами: детальный скин, шляпу, уши, волосы, полы плаща. Здесь всё, что нужно, чтобы сделать такой аватар для Persephone, даже если вы раньше не открывали Blockbench.

Общая планка

Чтобы детальные и простые аватары смотрелись рядом, у нас одна планка для всех:

  • Ванильные пропорции. Тело, голова, руки и ноги того же размера, что у обычного игрока. Рост персонажа задаёт не модель, а команда /character size в пределах вашей расы: аватар уменьшается и увеличивается вместе с персонажем сам.
  • Текстура в 8 раз подробнее ванильной. Один пиксель обычного скина — это квадрат 8×8, вся развёртка — 512×512. Можно и меньше, но не больше: так рисунки разных игроков одного масштаба.
  • Детали небольшие: шляпы, капюшоны, уши, волосы, хвосты, полы плаща, сумки. Ничего, что закрывает обзор другим, меняет силуэт до неузнаваемости или выдаёт себя за чужой аватар.
  • До 2 МБ на сервере аватаров. Шаблон весит около 20 КБ, так что места с запасом.

Аватары других игроков у всех по умолчанию на уровне доверия High: детали, анимации и скрипты видны. Если чей-то аватар мешает, понизьте ему доверие в меню Figura, во вкладке Permissions, и напишите мастерам.

Что понадобится

  • Figura уже есть в сборке, ставить ничего не нужно.
  • Blockbench — бесплатный редактор моделей (программа для Windows, macOS и Linux или версия в браузере).
  • Плагин Figura Model Format для Blockbench (по желанию, но удобно): File → Plugins, поиск «Figura», Install. Он добавляет формат модели под Figura, копирование пути к части модели для скриптов и инструменты для уменьшения размера.
  • Любой редактор картинок для текстуры: встроенные кисти Blockbench, Aseprite, Krita, Photoshop. Подойдёт любой, который сохраняет PNG с прозрачностью.
  • Для скриптов — любой текстовый редактор; удобнее всего VS Code.

Шаблон

Начните с готового шаблона: модель игрока в ванильных пропорциях с текстурой 512×512 и пример съёмной детали — шляпы, которую можно снять и надеть в игре.

Скачать шаблон (ZIP)

В архиве две папки: persephone_classic (обычные руки, 4 пикселя) и persephone_slim (тонкие руки, 3 пикселя). Возьмите одну. В каждой:

ФайлЧто это
avatar.jsonНазвание, авторы и описание аватара. Поменяйте на свои.
avatar.pngЗначок аватара в гардеробе Figura.
model.bbmodelМодель для Blockbench: голова, тело, руки, ноги, внешний слой и шляпа.
skin.pngТекстура тела 512×512, её вы и рисуете.
hat.pngТекстура шляпы: у детали может быть своя картинка.
script.luaПрячет обычного игрока и вешает шляпу на колесо действий.

Распакуйте папку в figura\avatars внутри папки игры. У лаунчера Persephone это %APPDATA%\.persephone-rp\figura\avatars; проще открыть её из игры: меню Figura → вкладка Wardrobe → кнопка с папкой (Open avatars root folder). Можно и просто перетащить папку аватара в окно гардероба.

Шаблон в игре: разноцветная модель игрока с буквами на гранях и широкополой шляпой, рядом стойка для брони
Шаблон в игре, до раскраски. Буквы показывают, какая грань где: F — перед, R — правый бок.

Рисуем текстуру

skin.png устроена как обычный скин Minecraft, только в 8 раз крупнее: каждая часть тела лежит там же, где на скине 64×64. Тёмная линия сетки идёт каждые 8 пикселей и отмечает один пиксель ванильного скина. Буквы на гранях — подсказки, их вы закрасите.

Развёртка текстуры: где на картинке 512×512 голова, тело, руки и ноги и их внешний слой, с буквами граней
Развёртка (для классических рук; у тонких рук грани рук на пиксель уже). Нажмите, чтобы открыть крупно.
  • Быстрый старт: увеличьте свой обычный скин в 8 раз без сглаживания (в редакторе «по соседним пикселям», Nearest Neighbor) и вставьте поверх шаблона. Дальше дорисовывайте детали: складки ткани, швы, волосы, лицо.
  • Внешний слой (куртка, рукава, штанины, «шапка» головы) в шаблоне прозрачный. Рисуйте на нём то, что должно чуть выступать над телом: воротник, пряди волос, края одежды. Прозрачные места не видны.
  • Держите одну палитру и одно направление света (сверху) на всех гранях — так модель выглядит цельной.
  • Сохраняйте PNG с прозрачностью под тем же именем skin.png.

Модель в Blockbench

Откройте model.bbmodel в Blockbench (File → Open Model). Справа в списке (Outliner) — группы частей тела. Текстуры подхватятся из папки аватара; если вы перерисовали skin.png снаружи, нажмите у текстуры в Blockbench «обновить».

Группы и их имена

Figura узнаёт, за какой частью тела следует группа, по началу её имени, с учётом регистра:

Имя группы начинается сДвигается как
Headголова
Bodyтело
RightArm, LeftArmправая и левая рука (видны и от первого лица)
RightLeg, LeftLegправая и левая нога
Capeплащ (развевается, даже если плаща у вас нет)

Поэтому head с маленькой буквы — не голова, а HeadPhones — голова. Новые детали кладите внутрь нужной группы: уши и шляпа — в Head, сумка и полы плаща — в Body. Тогда они двигаются вместе с этой частью. Не называйте свои группы с этих слов, если не хотите, чтобы они двигались сами по себе.

Как добавить деталь

  1. Выделите группу (например, Head), добавьте внутрь новую группу (Add Group) с понятным именем латиницей, скажем Ears.
  2. Внутри неё добавьте кубы (Add Cube) и подвиньте их на место. Размеры — в «пикселях» ванильной модели: голова 8×8×8.
  3. Для детали удобно завести свою текстуру, как hat.png у шляпы: Textures → Create Texture, размер в 8 раз больше нужного, и раскладка граней Per-face UV, если хотите расставить грани вручную.
  4. Сохраните (Ctrl+S). Figura перезагружает аватар сама, как только файл изменился.

Если делаете модель с нуля, а не из шаблона, выберите формат Generic Model (или формат из плагина): другие форматы Figura не загрузит. Сменить формат готовой модели: File → Convert Project. Blockbench-анимации Figura тоже понимает: назовите анимацию коротко и запускайте из скрипта, например animations.model.wave:play().

Съёмные шляпы, одежда и другие детали

Да, их можно снимать и надевать прямо в игре. Зажмите B: откроется колесо действий Figura. В шаблоне там уже есть кнопка «Шляпа: снять / надеть». Её видят все игроки, а выбор запоминается до следующего входа.

Вот как это сделано в script.lua. Чтобы добавить, скажем, капюшон, допишите в конец скрипта такой блок, поменяв путь к группе, имена и предмет на кнопке (имя файла настроек, config:setName, в шаблоне уже задано выше):

local hood = models.model.Head.Hood      -- группа Hood внутри Head в model.bbmodel
local hoodOn = config:load("hood")
if hoodOn == nil then hoodOn = false end
hood:setVisible(hoodOn)

function pings.setHood(state)            -- пинг выполняется у всех игроков
  hoodOn = state
  hood:setVisible(state)
end

action_wheel:getCurrentPage():newAction()
  :title("Капюшон: надеть")
  :toggleTitle("Капюшон: снять")
  :item("minecraft:leather_helmet")
  :toggled(hoodOn)
  :onToggle(function(state)
    config:save("hood", state)
    pings.setHood(state)
  end)
  • models.model.Head.Hood — путь к группе: model — имя файла model.bbmodel, дальше группы по порядку. Плагин Figura Model Format копирует такой путь из контекстного меню (Copy ModelPart Path).
  • Имя пинга (pings.setHood) у каждой кнопки своё.
  • Кто подошёл к вам позже, узнаёт, надета ли деталь, из повторного пинга: в шаблоне он раз в 10 секунд, добавьте туда pings.setHood(hoodOn).

Надеть и показать другим

  1. В игре нажмите Esc и кнопку с треугольником Figura (Δ) справа.
  2. Во вкладке Wardrobe выберите свой аватар в списке слева. Теперь он на вас, но видите его только вы.
  3. Нажмите кнопку загрузки (Upload avatar to the Cloud). Аватар уйдёт на сервер аватаров Persephone, и его увидят все. Аватар с ошибками в скрипте Figura не загрузит, пока их не исправить.
  4. После правок загрузите снова: другие игроки видят последнюю загруженную версию.
Тот же аватар при росте 0,6: он заметно ниже стойки для брони
Рост 0,6 (как у дворфа): аватар уменьшился вместе с персонажем. Рисовать отдельную маленькую модель не нужно.

Если не работает

Аватара нет в гардеробе
В папке аватара должен лежать avatar.json (пусть даже пустой), а сама папка — прямо в figura\avatars, не вложенной ещё в одну папку.
Модель не грузится, ошибка о формате
Модель не в формате Generic Model: File → Convert Project.
Красный текст в чате про скрипт
В сообщении номер строки script.lua. Частая ошибка — путь к группе не совпадает с её именем в Blockbench (регистр важен).
Failed to parse file name
Имя файла настроек берётся из названия аватара, а в нём кириллица или знаки. Поставьте в начало скрипта config:setName("my_avatar"), как в шаблоне.
Другие не видят деталь, которую я надел
Видимость меняйте через пинг (pings.…), а не напрямую: иначе изменение видно только вам.
Аватар слишком большой
Лимит 2 МБ. Чаще всего место съедают текстуры: не делайте их крупнее, чем 8× от ванили, и уберите неиспользуемые. В плагине Figura Model Format есть Tools → Optimize Model.

Подробная документация Figura (на английском): docs.figuramc.org. Если что-то не выходит, спросите мастеров.