Плагин RPG/MMO ⚔ Heroes Premium ⚔ [1.10.9 Alpha]

  • Это исправит загрузку Heroes, когда не используется MM, извините и спасибо за отчеты!
Автор: bobobo

==-- | 1.10.3 PREMIUM | --==​

Это небольшое обновление, которое исправляет ряд ошибок, включая давние проблемы с CombatEffect, в частности. Как всегда, если вы столкнетесь с какими-либо другими проблемами, пожалуйста, не забудьте сообщить об этом в дискорд.

-- Поддерживаемые версии Minecraft...​

1.13.X, 1.14.X, 1.15.X, 1.16.X, 1.17.X, 1.18.X, 1.19.X, 1.20.X

-- Исправления ошибок --​

  • Исправлено исключение NullPointerException, вызывавшее спам в консоли при нажатии правой кнопки мыши
  • Исправлено несколько мелких проблем, связанных с устаревшим API
  • Исправлена проблема с экипировкой предметов.
  • Исправлен ряд проблем с различными навыками, из-за которых они не загружались. Пожалуйста, обновите свои навыки с помощью нового пакета навыков!

-- Изменения --​

  • Добавлены дополнительные вкладки-дополнения для ряда команд. Большинство команд, использующих такие классы, как admin class, prof или choose, теперь имеют предложения по завершению вкладок.
  • Материалы в переводах теперь должны использовать локализованное название предмета, а не переводиться напрямую с английского.
  • Атрибуты теперь имеют переводимые имена, а не только название. Поэтому была добавлена новая опция 'attributes.title', которая позволяет указать этот формат. Это должно обновляться автоматически.
  • Команда /hero статистика теперь полностью переводима
  • Полностью переработан способ обработки таймера боя в Героях. Теперь он отслеживает врагов по каждому противнику, что позволяет с большей точностью определить, когда игрок действительно вышел из боя. Кроме того, эти проверки выполняются асинхронно, что дает небольшой прирост производительности.

Добавлены следующие плейсхолдеры: %heroes_primary_exp%,%heroes_primary_exp%,%heroes_primary_max_exp%,%heroes_secondary_exp%,%heroes_secondary_max_exp%,%heroes_race_exp%,%heroes_race_max_exp%. Также добавлен плейсхолдер для каждого атрибута, который задается параметром heroes_<attribute>.​

Автор: bobobo
Дополнительный увеличитель силы на основе процентов
исправления в бою
различные другие улучшения качества жизни
Автор: bobobo
==-- | 1.10.2 PREMIUM | --==
Это небольшое обновление, исправляющее некоторые ошибки и реализующее некоторые функции, предложенные сообществом.

-- Поддерживаемые версии Minecraft.
1.13.X, 1.14.X, 1.15.X, 1.16.X, 1.17.X, 1.18.X, 1.19.X, 1.20.X

-- Изменения --
Добавлена новая функция, предназначенная для борьбы со спавн-кемперами и общим плохим поведением в PvP. Эта функция называется "бонус за смерть". Если игрок терпит поражение заданное количество раз, то он получает специальный эффект, увеличивающий его скорость и урон против всех игроков, которые участвовали в "насилии" над ним. Аналогичным образом игрок также получает уменьшенный урон от убийц. Конфигурация создается в файле config.yml, но вы можете посмотреть и здесь.
Автор: bobobo
  • Объединение ветви '1.10.1' в 'dev'
  • Исправлена случайная ошибка, из-за которой текст трансляции не отображался
  • Исправлены ошибки в работе менеджера конфигураций.
Автор: bobobo

1.10.0 HOTFIX 1 + PETS​

Автор: bobobo

==-- | 1.10 PREMIUM | --==​

Это обновление - большой шаг вперед для Heroes и будущего плагина! В этом обновлении присутствует значительное количество переработок, оптимизаций и новых функций, так как мы наконец-то перешли на новую версию 1.10. Как всегда, пожалуйста, сообщите нам, если у вас возникнут какие-либо проблемы с этим обновлением.

Вы ДОЛЖНЫ обновить все свои навыки до последней версии, иначе навыки не загрузятся!

Также рекомендуется сделать резервную копию старого damages.yml, а затем сгенерировать новый! Так как появились новые опции конфигурации!.

Поддерживаемые версии Minecraft​

1.13.X, 1.14.X, 1.15.X, 1.16.X, 1.17.X, 1.18.X, 1.19.X, 1.20.X.

Новые возможности​

  • - damages.yml теперь содержит опцию use-pvx-damage-multipliers. Ранее это всегда было верно, так как при расчете урона учитывались пвп и пве модификаторы класса. Если вы не используете эту функцию, то просто установите значение false, что может незначительно улучшить производительность.
  • - damages.yml теперь содержит параметр item-damage-priority. Она имеет 5 режимов и определяет, что влияет на наносимый Героем урон. Ранее выбиралось наибольшее значение из всех классов (основного, дополнительного и расы). Рекомендуется выбрать вариант, который лучше всего подходит для ваших нужд, например, если вы используете только основной класс для нанесения урона, то выбирайте его, так как это значительно сокращает количество необходимых вычислений, что повышает производительность.

Доступны следующие варианты;​

  • - highest (проверяет, какое значение является самым высоким из трех классов)
  • - primary (использует только первичный класс, если значение не существует, используйте глобальный урон, если глобальный урон не существует, используйте ваниль)
  • - вторичный (используется только вторичный класс, если нет значения, используйте глобальный урон, если нет глобального урона, используйте ваниль)
  • - race (используется только класс race, если нет значения, используйте глобальный урон, если нет значения, используйте ваниль)
  • - none (не использовать масштабирование классов, вместо этого использовать глобальный урон, если он существует - а если не существует, то использовать ванильные значения).
  • Атрибуты героя теперь доступны как переменные через MythicMobs! Это означает, что используя скриптовые навыки, вы можете использовать увеличение атрибутов для различных переменных навыков. Вы можете получить доступ к атрибуту героя, используя такой формат, как <caster.var.hero_strength> или <caster.var.hero_charisma>.
  • Расширение для Placeholder API теперь реализовано непосредственно в Героях! Теперь нет необходимости использовать отдельный файл расширения!
  • Добавлен новый скриптовый тип умения для пассивок! Это умение по сути будет вызывать умение MythicMob, когда пассивка применяется и когда она снимается. Поскольку существует более двух типов, в конфигурации была добавлена новая опция. Пожалуйста, перегенерируйте ваш script-skills.yml, чтобы увидеть новый формат и обновить навыки соответствующим образом.

Пример пассивного навыка;​

Код:
- name: FieryPresence
on-apply-mythic-skill-id: FieryPresence-Apply
on-remove-mythic-skill-id: FieryPresence-Remove
type: PASSIVE
skill-types: BUFFING,ABILITY_PROPERTY_FIRE

Рекомендуется, чтобы эти мифические умения Apply и Remove по сути применяли и снимали ауру с мифических мобов. Это позволит вам еще больше настроить умения onTick, onApply и onRemove.
Функция requires-target теперь использует опцию 'type'. Если значение параметра "requires-target" было истинным, то используется новый тип умения TARGETED, а если ложным, то ACTIVE.

Изменения и оптимизация​

  • Смягчение больше не может быть настроено для каждого класса, просто из-за экспоненциального увеличения вычислений, которые требовались для этого.
  • Теперь учитываются ТОЛЬКО значения смягчения от зачарований в файле damages.yml.
  • Вызванные мобы теперь должны иметь улучшенное поведение ИИ
  • Повышение опыта больше не применяется к игрокам, которые "оппонируют". Это означает, что даже если игрока притесняют и у него есть разрешение на прибавку к опыту, он не будет получать персональную прибавку к опыту независимо от этого.

Переработка обработчика урона​

Обработка урона в Героях была полностью переписана! Это была основная проблема Героев, так как предыдущий обработчик повреждений DamageEvent превратился в кучу спагетти-кода с 11-летней историей. Это вызывало множество проблем, таких как ошибки и огромные потери производительности.
Поэтому старый код был полностью отброшен, а новый код и API написаны для обработки множества сложных аспектов повреждений в Героях. Например, определенные проверки, такие как, скажем, пользовательское смягчение, теперь выполняются при запуске, а не при каждом вызове события повреждения - поскольку не все пользователи используют пользовательское смягчение.
Для справки: в версии 1.9.30 прогон профилировщика в течение 15 минут (с двумя игроками) дал вклад более 100 мс процессорного времени. В аналогичном тесте в версии 1.10 это число снизилось до менее чем 5 мс, а в некоторых случаях затраченное время было настолько мало, что даже не отображалось в профилировщике. Это значительное улучшение и огромная работа по всестороннему сканированию и пониманию беспорядка, который представлял собой старый спагетти-код, и созданию чего-то нового, оптимизированного и эффективного.
Кроме того, кажется, что повреждения обрабатываются более последовательно и точно с этой переработкой. Но это все, пожалуйста, дайте нам знать, если вы встретите какие-либо ошибки!

Перезапись SkillConfigManager​

SkillConfigManager был переписан, чтобы теперь кэшировать значения, считанные из конфигурации умений. В дополнение к другим изменениям, упомянутым в разделе API этого обновления, теперь вы можете указать ЛЮБОЕ увеличение на атрибут или на уровень для ЛЮБОГО числового параметра навыка для ЛЮБОГО навыка. Например, вы можете указать урон за ловкость или увеличение продолжительности за интеллект для любого навыка. Для примера рассмотрим удар. Раньше вы могли увеличивать урон только на силу, как показано на рисунке;
Код:
Kick:
damage: 5
damage-increase-per-strength: 1
duration: 2500

Но теперь вы можете настроить что-то вроде этого, где вы можете использовать любой атрибут и даже per-level, чтобы навыки динамически масштабировались с атрибутами героя.
Код:
Kick:
damage: 5
damage-per-intellect: 0.5
duration: 2500
duration-increase-per-charisma: 500
Это изменение позволяет не только больше настраивать, но и повышает эффективность, уменьшая задержку плагина.

С помощью этого изменения вы теперь можете изменить приоритет SkillSetting в зависимости от класса и предпочтений. В config.yml вы можете найти этот раздел.
Код:
classes:
# При получении настройки для навыка, здесь вы можете указать тип приоритета. Возможные типы: "по умолчанию", "наивысший" или "основной".
skill-setting-priority: HIGHEST

Доступные настройки​

DEFAULT -> Возвращает первый доступный набор навыков в порядке Primary, Secondary, Race, Global, Skills.yml. Например, если и вторичный класс, и расовый класс героя имеют настройки навыка для урона. Независимо от того, какой из них выше. Всегда будет возвращено значение из вторичного класса.

HIGHEST -> Возвращает наибольшее значение для параметра навыка, основанного на каждом из классов героя. Например, если у героя параметр "урон" равен 8 для его основного класса и 12 для его расы. Тогда используется значение 12. Это значение 12 будет использоваться, даже если в файле skills.yml указано более высокое значение, скажем, 24. В этом режиме только если ни первичный, ни вторичный, ни расовый класс, ни глобальный набор навыков не имеют указанных настроек, используется значение skills.yml.

PRIMARY -> Проверяет только первичный, глобальный и Skills.yml наборы навыков игрока. Аналогично стандартному в том, что предпочтение отдается первичному, а не глобальному. Если ни в первичном, ни в глобальном файле не задана настройка, то будет использоваться значение из файла skills.yml.

Переработка работы с монстрами​

Объекты монстров теперь инициализируются сразу после появления монстра, а не по мере необходимости. Это снижает необходимую нагрузку на выполнение, запрашивающее объект монстра, поскольку они почти всегда загружаются в любом случае.
Удалено устаревшее использование хранения пользовательских атрибутов в сущности монстра. Это приводило к значительным задержкам сервера и больше не служило реальной цели, поэтому оно было удалено.

Устранение ошибок​

  • - Исправлена серьезная оплошность, связанная с тем, как обрабатывается смягчение брони и других характеристик. Ранее было сделано предположение, что ванильное смягчение не применяется после всех наших действий; однако я ошибался. Это означало, что при ношении брони, особенно с зачарованиями. Применяемое Героями смягчение будет применяться В ДОПОЛНЕНИЕ к ванильному смягчению. Вот почему защитные зачарования всегда были так сильны при использовании Героев. Теперь же Heroes автоматически корректирует пользовательское смягчение, обеспечивая правильное нанесение урона.
  • - Побочным эффектом вышесказанного является то, что смягчение от пользовательских энчантов теперь применяется ТОЛЬКО при включенном пользовательском смягчении! Кроме того, значения, считанные в damages.yml для защиты, читаются как десятичные числа, например, 0.04 означает 4% на уровень энчанта || если пользовательское смягчение отключено, то применяются ванильные значения смягчения энчанта.
  • - Исправлена проблема, из-за которой умения не исцеляли в бою
  • - Эффекты, накладывающие дебафф "не спринтовать", теперь должны работать корректно. В частности, эффект SlowEffect и кастование теперь не позволят игроку ни спринтовать, ни джупить.
  • - Исправлена проблема с SkillBaseSphere, которая приводила к исключению.
  • - Исправлена проблема с SkillBaseMarkedTeleport, из-за которой частицы отображались некорректно.
  • - Исправлена ошибка, из-за которой некоторые умения не передавали свое сообщение, а вместо этого выдавали предупреждение в консоли.
  • - Прочность брони теперь учитывается правильно.
  • - Исправлена ошибка, из-за которой броня могла быть экипирована при обстоятельствах, когда этого не должно быть.
  • - Удален старый код, из-за которого здоровье по умолчанию устанавливалось неверно.
  • - Исправлено значительное количество других различных ошибок и проблем.

Изменения API​

  • - Мифические мобы теперь имеют свой собственный подкласс CharacterTemplate под названием MythicMonster. Таким образом, герои НЕ БУДУТ переопределять статы мифического моба, независимо от любых настроенных значений. Кроме того, если мифический моб использует умение кастовать, прерывание героя теперь действительно применяется и к мифическому мобу.
  • - SkillSetting теперь является абстрактным классом, который хранит статические объекты. Новый интерфейс Setting<T> теперь представляет SkillSetting, который возвращает определенную переменную параметра типа.
  • - Все методы, связанные с SkillConfigManager.getUseSetting(), были устаревшими, в пользу метода SkillConfigManager.getCachedUseSetting(), который учитывает параметр типа SkillSetting.
  • - Ряд методов в CharacterDamageManager был обновлен, удален или устарел. Если вы хотите получить количество урона, наносимого героем, рекомендуется использовать getMeleeDamage(Hero, Material) или getProjectileDamage(Hero, ProjectileType). Помните, что эти значения не учитывают множители PvX и не включают бонусный урон от зачарований.
  • - HDamageListener теперь полностью устарел и больше не используется, вместо него основным обработчиком повреждений является класс DamageHandler.

Репозиторий nexus был обновлен. Обратите внимание, что URL репозитория был обновлен, но, как обычно, вы можете использовать Heroes API со следующим артефактом;

Код:
<repository>
<id>heroes-repo</id>
<url>https://nexus.hc.to/content/repositories/pub_snapshots/</url>
</repository>

<dependency>
<groupId>com.herocraftonline.heroes</groupId>
<artifactId>Heroes</artifactId>
<version>1.10-SNAPSHOT</version>
<scope>provided</scope>
</dependency>

Заметки разработчика​

В связи с многочисленными масштабными переделками, если используются какие-либо пользовательские навыки, они необходимо должны быть перекомпилированы в 1.10-SNAPSHOT, иначе они не будут загружаться. Это происходит потому, что мы изменили класс перечисления SkillSetting на интерфейс. Это изменение было сделано для оптимизации, более чистого кода и возможности кэширования значений.

Теперь существует несколько предустановленных реализаций SkillSetting, таких как SkillSettingInt, SkillSettingString, SkillSettingDouble и так далее. Вы даже можете создать свой собственный SkillSetting, который может, например, считывать конфигурацию, а затем возвращать пользовательский объект для использования в навыке.

Такие параметры SkillSetting, как damage-increase-per-dexterity, duration-per-level и т.д., теперь устарели. Это связано с тем, что SkillSettingInt и SkillSettingDouble автоматически учитывают все увеличения атрибутов и увеличения за уровень в каждой настройке навыка, как уже упоминалось. Поэтому эти устаревшие SkillSettings всегда будут возвращать 0. Следовательно, больше нет необходимости включать их в код.

Например, больше нет необходимости использовать такой код, как;
Код:
double damage = SkillConfigManager.getUseSetting(hero, this, SkillSetting.DAMAGE, 50, false);
final double damageIncrease = SkillConfigManager.getUseSetting(hero, this, SkillSetting.DAMAGE_INCREASE_PER_STRENGTH, 1.0, false);
damage += damageIncrease * hero.getAttributeValue(AttributeType.STRENGTH);

Теперь, это единственный код, необходимый для достижения того же эффекта;
Код:
double damage = SkillConfigManager.getCachedUseSetting(hero, this, SkillSetting.DAMAGE, 50.0)
Пожалуйста, не стесняйтесь сообщить нам, если у вас возникли какие-либо проблемы с новыми изменениями или вам требуется помощь с API.
*Это обновление было тщательно протестировано, но в связи с тем, что оно было полностью переписано, возможно, есть некоторые вещи, которые мы упустили.
Спасибо за поддержку Heroes на протяжении всех этих лет!
Автор: bobobo

--== | ОБНОВЛЕНИЕ 1.9.30 | ==--​

В эту версию добавлено МНОГО основных изменений и НОВЫХ функций. Пожалуйста, сообщите нам, если у вас возникнут какие-либо проблемы с этим обновлением.

Поддерживаемые версии Minecraft...​

1.13.X, 1.14.X, 1.15.X, 1.16.X, 1.17.X, 1.18.X, 1.19.X

Большая поддержка версий...​

Некоторое время назад мы обновили Heroes до Java 16, что на самом деле было излишним. Теперь мы вернулись к компиляции Героев на Java 8. Это означает, что теперь ВСЕ версии, начиная с 1.13 и выше, поддерживаются Героями! В связи с огромным количеством изменений в Героях также ОБЯЗАТЕЛЬНО скачайте заново ЛЮБЫЕ и ВСЕ пакеты навыков, так как предыдущие версии навыков могут вызвать серьезные ошибки. Более подробная информация об обновлениях навыков приведена ниже.

Полная поддержка перевода.​

Внимание всем, барабанная дробь - в Героях теперь есть Полная поддержка перевода. Практически каждое сообщение в Героях теперь можно перевести через файл, созданный плагином под названием translations.yml! Единственным исключением является то, что некоторые команды не переводимы, но большинство наиболее используемых команд переводимы! Мы будем дорабатывать остальные команды в будущих обновлениях! Это была большая работа, файл перевода содержит буквально более 400 сообщений, которые раньше были жестко закодированы в Heroes, поэтому вполне понятно, что могут быть небольшие опечатки или ошибки - пожалуйста, дайте нам знать, если вы их встретите!

При настройке переводов. Есть несколько маленьких хитростей, которые вы можете сделать для дальнейшей настройки Героев;
- Для многих переводов, в основном тех, которые отправляются игроку в виде сообщения, если вы настроите перевод так, чтобы some-translation: ''` (чтобы он был пустым), это будет означать, что сообщение просто не будет отправлено! Это означает, что, например, для тех из вас, кто не использует гонки или не использует вторичные классы, вы можете просто установить эти параметры в пустую строку, и тогда эти сообщения не будут отправлены. Например, смотрите следующие переводы, которые используются в основном для команды /hero info.

По умолчанию

Код:
commands:
player-summary: '{level} {primary}&r, {level} {secondary}&r, {race}'
class-summary: '&aClass {primary}$mastered-primary$ &7| &aProfession {secondary}$mastered-secondary$'
race-summary: '&aRace &7- {race}'

Модифицировано
Код:
commands:
player-summary: '{level} {primary}&r'
class-summary: '&aClass {primary}$mastered-primary$ &7'
race-summary: ''
Код:
Таким образом, удаление сообщений для рас и вторичных классов будет означать, что сообщение не будет отправлено игроку.

- Еще одна вещь, которую вы могли заметить, это использование {level}. Фигурные скобки указывают Героям, что нужно искать другой перевод в том же разделе, где он используется. В приведенном выше примере player-summary находится в разделе commands, использование {level} будет искать перевод с путем commands.level и автоматически заполнит его этим значением. По умолчанию он будет заполнен значением 'Lv. &6$lvl$'. Кроме того, вы можете указать перевод из другого раздела, просто сделав, например, {section.message}.

- Во многих переводах мы используем значения-заполнители, такие как $lvl$, $1, $2 и т.д. В некоторых случаях эти значения будут заменены уровнями, именем героя или чем-либо другим, относящимся к конкретному переводу. Если вы не хотите использовать эти значения, вы не обязаны это делать, однако вы не можете добавлять свои собственные заполнители (если только не через Placeholder API) в эти сообщения.

- Как вы и ожидали, мы также поддерживаем использование цветов чата, любой символ & будет интерпретироваться как цвет чата, так что имейте это в виду.

- Если вы хотите, чтобы все было отформатировано правильно, рекомендуется стараться сохранять пробелы в переводах в том виде, в котором они написаны, если вы хотите, чтобы все отображалось правильно.
Оптимизации...
В течение многих лет Heroes полагался на внешнюю библиотеку/плагин под названием EffectLib. В прошлом было необходимо, чтобы этот плагин был установлен для работы многих навыков Heroes. Однако теперь мы встроили эту библиотеку в сам Heroes, поэтому вам больше не придется устанавливать этот плагин отдельно! Кроме того, EffectLib's EffectManager раньше создавался практически каждый раз, когда применялось умение, что приводило к лишним затратам памяти и было невероятно неэффективным. Теперь в Героях есть один EffectManager, который используется всеми навыками. Это еще одна причина, по которой вы ОБЯЗАНЫ обновить все свои навыки из доступных пакетов навыков.

--- Прочее ---
  • Исправлена ошибка в MMOItemHandler
  • Добавлена опция для масштабирования урона, при которой мобы будут масштабироваться только в том случае, если игрок выше их уровня.
  • ВСЕ КОМАНДЫ в Героях теперь должны иметь автоматическое завершение вкладок. Это было сделано в некоторой степени автоматически, поэтому могут быть небольшие ошибки. Помните, если вы когда-нибудь запутаетесь в команде героя, просто введите команду со знаком вопроса после нее.
  • Герой игрока больше не выгружается дважды, когда он покидает сервер.
  • Добавлена опция в атрибуты, позволяющая задать начальное количество очков распределения, когда игрок находится на 1 уровне.
  • Большинство сообщений журнала, таких как ("Class does not have pvp-item-multiplier set") и т.п., сделаны ТОЛЬКО отладочными. Поэтому, если вы хотите увидеть эти сообщения, просто включите режим отладки. Это сделало последовательность загрузки Heroes намного чище :)
  • Включение режима отладки в config.yml больше не будет отключать обычные сообщения журнала
  • Добавлено состояние маны и выносливости для введения с помощью MythicMobs
  • Мобы теперь могут бить сами себя (это вызывало проблемы с плагинами, такими как MythicMobs)
  • Если экипированный предмет сломан, то значение его брони не будет учитываться при пользовательском смягчении.
  • Обновление списка того, что считается прозрачным блоком, для версий 1.16-1.19.
  • В опции MythicMob item roll теперь есть опциональная настройка роли по умолчанию.
  • Исправлена серьезная ошибка, из-за которой умения не исцеляли в бою.
  • Исправлена потенциально серьезная проблема, вызывавшая бесконечный цикл при выходе членов партии.
  • Сообщения о входе и выходе из боя были перенесены в translations.yml. Это должно быть сделано автоматически.
-- Обновления разработчиков...
  • Когда используется Heroes.getCharacterManager().getHero(), это было изменено таким образом, что он больше НЕ будет загружать Героя, если Герой не загружен. Это было сделано для предотвращения странных ситуаций, когда герой загружался даже после того, как он был вне игры. Если вы попытаетесь вызвать getHero(), когда Герой не загружен, то возникнет исключение. Чтобы избежать этого, в основном НЕ вызывайте getHero() из PlayerJoinEvent практически никогда, всегда запускайте отложенную задачу или найдите другой способ выполнить то, что вы хотите сделать.
  • Класс Messaging, который уже давно устарел, был удален. Если вы используете его, просто не используйте. Используйте ChatComponents, если вам это действительно необходимо.
  • При использовании объекта Hero, используя .getHeroClass(), .getSecondaryClass() или .getRaceClass() теперь НИКОГДА не будет null. Так было всегда, но по какой-то причине эти методы были помечены как Nullable.
  • Для разработчиков навыков, если вы хотите использовать библиотеку затененных эффектов, вы можете использовать защищенную статическую конечную переменную 'effectLib', или получить экземпляр плагина и вызвать .getEffectLibManager(). Пожалуйста, НИКОГДА не избавляйтесь от этого менеджера, так как он используется всеми навыками и не утилизируется.
  • Последняя доступная публичная версия репозитория - 1.9.30-RELEASE. Пример Maven приведен ниже;
Код:
<repository>
<id>heroes-repo</id>
<url>https://nexus.hc.to/content/repositories/pub_releases/</url>
</repository>

<dependency>
<groupId>com.herocraftonline.heroes</groupId>
<artifactId>Heroes</artifactId>
<version>1.9.30-RELEASE</version>
<scope>provided</scope>
</dependency>
Будущее Героев...
Наш следующий крупный план для Героев, как мы уже говорили, заключается в том, чтобы переписать весь обработчик повреждений. За многие годы жизни Героев этот обработчик повреждений превратился в переплетение спагетти-кода. Проблема в том, что события урона вызываются постоянно, несколько раз в секунду, и поэтому, поскольку этот код невероятно неэффективен, он, скорее всего, является основной причиной любых "лагов", возникающих в Heroes. Моя цель - переписать код с нуля, переработав его так, чтобы различные проверки выполнялись, например, только если эти опции включены. Это повысит эффективность и, надеюсь, исправит множество ошибок, порожденных обработчиком повреждений со спагетти-кодом. В настоящее время я знаю о проблемах, связанных с уроном и защитой от зачарований, где оба значения имеют тенденцию вообще не масштабироваться корректно. Например, прямо сейчас - очевидно, что эффекты повреждения со временем, такие как кровотечение, стекируются с остротой. Для исправления подобных проблем потребуется полная переработка обработчика урона.
Улучшив обработчик повреждений, вы можете ожидать значительного повышения производительности по всем направлениям.
Автор: bobobo
ВерхНиз