WeightAPI - единый апи для весовых инвентарей

WeightAPI - единый апи для весовых инвентарей 0.5.0

Нет прав для скачивания
Что нового?
  1. Добавлена команда clearweightprovider для отключения активной системы веса
  2. PlayerWeightTracker из мода ConfigurableWeightSystem стал стандартным механизмом апи для отслеживания изменения в инвентарях. Отныне моддерам более не нужно определять свой трекер инвентаря и обеспечивать его совместимость с другими системами веса.
  3. Багфикс: Личный вывод команд getweightproviders и getactiveweightprovider теперь не отправляется другим администраторам
  4. Удалена возможность отключения провайдера на клиенте без использования worldObj. При подключении игрока к миру сервер сам установит на клиент нужный провайдер
  1. 5 месяцев неоплачиваемой работы (3 из которых - возня с градлом)
  2. Несчетное количество сожженных нервных клеток
  3. Упадок сил и период отчаяния
  4. ~70 кружек кофе
  5. Период сомнения в себе как специалиста
  6. Сказочное терпение при работе с градлом
  7. Спаленный по неосторожности бинтрей-кей
  8. Ненависть к gradle-сообществу
  9. И доля удачи
Именно столько потребовалось времени, сил и жертв чтобы выкатить этот апдейт. Поэтому я с гордостью представляю вам версию v0.4.0. 🎉🎉🎉

Что нового?
  1. Многие обитатели форума высказали свое недоумение из-за недостающих кейсов применения WeightAPI. Я рад представить вам целых 2 новых примера (далее "Кейсы"):
    • Case1 - Пример полностью самостоятельной системы веса со своим собственным рендером и эффектом перегруза. Вес каждого предмета равен 1, над голодом отображается шкала переносимого веса, а при перегрузе игрок теряет возможность двигаться.​
    • Case2 - Система веса, расширяющая уже существующую систему ConfigurableWeightProvider. Представленная в этом примере система будет использовать тот рендер и поведение при перегрузе, которое указано для ConfigurableWeightProvider. Цель кейса - продемонстрировать механизм расширяемости сторонних систем веса.​
  2. Кейсы доступны в виде градл-сабпроджектов, которые при запуске клиента WeightAPI из IDE автоматически скомпилятся и подключатся к игре как отдельные моды. Такой подход в разы упростит дальнейшее тестирование и разработку апи, а значит и повысит время выхода новых апдейтов. Стоит упомянуть что реализовано это не тупым билдом кейсов и копированем их бинарников в mods, а через classpath. Ведь именно так Forge и загружает моды.
  3. Кейсы доступны на Bintray. Вы можете подключить кейсы в свой проект, используя механизм управления зависимостями Gradle. Это позволит вам самостоятельно протестировать вашу систему веса на совместимость с другими. И при этом без лишней мороки с вашей стороны.
  4. Добавлен метод WeightRegistry#applyToClient(), позволяющий включать системы веса на клиенте без потребности в предварительной регистрации.
  5. Было уделено огромное вниманию чистоте билдскрипта. Хоть это и не является плюсом для юзера, однако это может стать хорошей отправной точкой, если и вы вдруг решите прокачать собственную логику сборку вашего мода. Да еще и с мультипроджектом.
    Код писался опираясь на следующую мысль: "Если меня сегодня собьет машина - я помру писав хороший код" :)
  6. У проекта появился прикольный README на гитхабе.
  7. Начиная с v0.3.0 (посчита эту версию достаточно сырой, а потому не релизнул открыто) системы веса теперь являются заменяемыми. Это значит что администратор сервера может в рантайме переключаться между системами веса по своему усмотрению при помощи команд /getactiveweightprovider, /getweightproviders и /setweightprovider. Посему КАТЕГОРИЧЕСКИ не рекомендуется включать системы веса кодом. Допустимо такое только в приватных проектах, где вы царь и бог. При перезапуске сервера прыдыдущая активная система веса будет восстановлена.
  8. Начиная с v0.3.0 механизм синхронизации систем веса теперь встроен в сам апи. Для того чтобы синхронизировать вашу систему веса с клиентом, вам всего лишь нужно имплементить IWeightProvider#sync(). WeightAPI сам вызовет этот метод, когда посчитает нужным отослать на клиенты вашу систему веса.
  9. Начиная с v0.3.0 добавлен эвент WeightProviderChangedEvent, выбрасывающийся при изменении активной системы веса.
8.png
7.png
6.png
5.png
4.png
3.png
2.png
1.png

Хочу искренне поблагодарить всех, кто принимал участие в обсуждении WeightAPI. Спасибо вам за вашу критику и советы. И хотя сейчас апи далек от совершенства, шаг за шагом я его допилю, как когда-то обещал.

Иструкции по установке и использованию в посте форума и в доках на гитхабе, а так же код в мастер-ветке будут обновлены чуть позже, т.к. мне придется хорошенько занятся тестированием как самого апи, так и его билдскриптом.
  • Like
Реакции: CMTV и hohserg
Сверху