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

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

Нет прав для скачивания
Версия(и) Minecraft
1.7.10
unofical_logo.png


Ограничение переносимого игроком веса - одна из старейших игровых механик, особо широко использующая в РПГ и в некоторых других жанрах. Она позволяет сделать игру более правдоподобной и открывает много возможностей для прокачки.

И хотя сделать мод на переносимый вес может каждый, но подружить его с другими модами, так или иначе причастные к весу - совсем не простая задача. При наличии двух и более модов на вес запросто может сложится ситуация, что игрок будет одновременно перегружен и не перегружен. Остается лишь одно - оставлять в сборке лишь один мод, отказываясь от контента из другого. Но WeightAPI меняет дело...

WeightAPI поможет вам:
  1. Обеспечить бесконфликтную работу модов, связанных с переносимым весом
  2. Отслеживать изменение веса в инвентарях игроков и уведомлять об этом заинтересованные стороны
  3. Синхронизировать системы веса с клиентами игроков
  4. С легкостью расширять сторонние системы веса
  5. Активировать и отключать системы веса прямо в рантайме игры
С WeightAPI вам не нужно задумываться об архитектурных вопросах при работе с весом. Вы можете реализовать какой угодно способ расчета веса предметов, грузоподъемность игроков и эффекты при перегрузе.

FAQ
Вы найдете исчерпывающую инструкцию в нашей замечательной вики
Все что вам нужно - выбрасывать WeightChangedEvent при изменении содержимого вашего инвентаря. Вот так просто. Однако не выбрасывайте его, если контейнер с вашим инвентарем в настоящее время открыт т.к. стандартный трекер инвентаря отслежвает все слоты в открытых контейнерах.
Реализуйте интерфейс IWeightProvider и зарегистрируйте ваш класс в WeightRegistry. Теперь все остальные моды, использующие WeightAPI будут обращаться к вашему классу. Но не забудьте посылать соответствующие евенты (вы найдете их в пакете ru.rarescrap.weightapi.event)
Подпишитесь на евент WeightChangedEvent и реализуйте добавление эффекта замедления:
Java:
@SubscribeEvent
public void onOverload(WeightChangedEvent event) {
    // Накладываем эффект только на сервере и только для игроков
    if (event.entity.worldObj.isRemote || !(event.entity instanceof EntityPlayer)) return;
    EntityPlayer player = (EntityPlayer) event.entity;
    // Определяем, был ли игрок уже замедлен
    boolean isSlowdown = ((EntityPlayer) event.entity).isPotionActive(Potion.moveSlowdown);
    if (event.isOverloaded) { // Определяем, перегружен ли игрок
        if (!isSlowdown) player.addPotionEffect(new EndlessPotionEffect(Potion.moveSlowdown.id, 2));
    } else if (isSlowdown && player.getActivePotionEffect(Potion.moveSlowdown) instanceof EndlessPotionEffect) {
        player.removePotionEffect(Potion.moveSlowdown.id); // Удаляем эффект при снятии перегрузки
    }
}
TODO
TODO
TODO

DISCLAMER:
Этот API еще разрабатывается. Сейчас я занят написанием документации, тестированием, портированием на новый версии и т.д. Так что до v1.0.0 прошу тапками не кидаться. Если у вас есть вопрос/пожелание - напишите его тут. Если же вы нашли ошибку или плохое архитектурное решение - прошу, немедленно дайте об это знать. Всяческий анализ кода категорически приветствуется!
Автор
RareScrap
Скачивания
20
Просмотры
1,244
Первый выпуск
Обновление
Оценка
4.00 звёзд 2 оценок

Другие ресурсы пользователя RareScrap

Последние обновления

  1. WeightAPI v0.5.0

    Что нового? Добавлена команда clearweightprovider для отключения активной системы веса...
  2. WeightAPI v0.4.0 - апдейт, который чуть не склонил меня к алкоголизму

    5 месяцев неоплачиваемой работы (3 из которых - возня с градлом) Несчетное количество сожженных...

Последние рецензии

ЛЮДИ, ОДУМАЙТЕСЬ! Перестаньте писать "I" перед интерфейсами в джаве...
RareScrap
RareScrap
А ну держите его! Он общественный строй подрывает! Нехристь
Хорошая работа! Только вот регистрацию лучше сделать через новомодные события
RareScrap
RareScrap
А вот почему это лучше?
Сверху