Releases: zentixua/advent-bombs
Releases · zentixua/advent-bombs
5.0 | Считаем вектор только когда требуется
- Теперь вектор обновляется только при смене
State
ракеты + при смене Y самой высокой локации на локации-цели. - Сократил код, где мы проверяем
State
ракеты (заменил на функцииIs...
для каждогоState
) - Переименовал
setTargetLocation(Location target_location)
наsetTargetLocation(Location targetLocation)
.
4.9 | + Параметр в конфиг
- Новый параметр -
alarm.sound_play_interval
. Обозначает задержку между проигрыванием звука сирены воздушной тревоги. Как обычно, в секундах. - Переменные типа Interger из
ConfigManager
заменил на типint
. Смысла отInterger
не вижу.
4.8 | Улучшение тревоги
- Теперь проверка на кол-во ракет в воздухе делается прямо в раннабле воздушной тревоги. На будущее так лучше. Если их стаёт 0 - тревога отменяется.
- Храню в списке теперь не экземпляр
RocketRunnable
, а саму ракету (Rocket
). Простое действие, а в будущем позволит глобально делать всякое со всеми ракетами в полёте. - Движение распределено по методам (с Y/без)
- Y целевой локации теперь обновляется в начале функции
move()
. В некоторых ситуациях сделает движение ракеты более предсказуемым и правильным. differenceX
иdifferenceZ
вRocketLogic
теперь тоже типаdouble
, как иFLYING_ROCKET_SPEED
. Добавляет точности.
4.7 | Реврайт типов ракет
- Теперь каждая ракета, как это и положено, имеет свой класс с её конкретной логикой. Но и есть класс, который обозначает дефолтную логику полёта, и на данный момент отличие есть только при взрывах. На будущее, если что, эти дефолтные функции полёта можно будет переназначать спокойно для ракеты, если потребуется.
- Переименовал класс и package, в связи с изменениями выше переместил некоторые классы в другой package.
- Все параметры ракеты теперь в классе
Rocket
, даже мощность взрыва. Логично.
На будущее так лучше!
4.6
4.5 | Несколько улучшений
- Мини-фикс аварийного снижения, если
DISTANCE_TO_MOVE_WITH_Y
не был достигнут (например, в конфиге стоит 0, ракета не смогла бы спуститься). И я это давно исправил проверкой на схожесть X и Z, но теперь сравнение происходит со значением скорости обычного полёта ракеты (FLYING_ROCKET_SPEED
), а не постоянным значением 3. - Фикс проигрывания звуков: теперь это не раннабла и проигрывание происходит немедленно, + это всё теперь в одном классе. Удобнее, зачем излишки в таком случае?
- Блоки else-if для движения ракет сделал компактнее (вместо двух "похожих" блоков
else-if
сделал один блокelse
). Логика полёта не изменилась. - Добавил необязательную в текущей реализации часть условия
!isFlying()
в блок, который поднимает ракету до высоты полёта. Так в любом случае правильнее.
4.4 | findPath() по-новому
- Фулл рефакторинг функции
findPath()
. Теперь с использованием API bukkit`а для работы с вектором. - В связи с первым изменением нашёл баг в старой реализации (таки просто установить нулевой Y вектору не есть корректно), потому теперь постройка вектора для ракеты БЕЗ состояния снижения происходит от локации ракеты до целевой локации, у которой Y == Y`ку ракеты.
- Создаю эффекты полёта ракеты теперь в любом случае (в начале функции).
- Фикс бесконечности распространения скалка (спавна невидимого моба) при нулевой мощности.
Ещё добавил такой комментарий в конфиг и вам сюда продублирую: "ВНИМАНИЕ! Устанавливать высокие значения в параметрах ракеты НЕ рекомендуется! Это может привести к проблемам. Ясно, окей? Спасибо."))0)
4.3 | Улучшения
- Переименовал класс логики ракеты.
- Переименовал функцию проверки, находится ли ракета в состоянии движения с учётом Y.
- Чуть улучшил логику на этапе взлёта ракеты (сделал одно условие отдельным, что бы оно не входило в if-else блок и ракета сразу же смещалась).
- Улучшил функцию
findPath()
, которая считает вектор полёта ракеты. Можно сказать, упростил немного! - Теперь условие дистанции до цели, при котором взрывается ракета прямо зависит от
move_with_y_speed
(от шага смещения позиции ракеты при каждом запуске её задачи). Таким образом, ракета 100% сдетонирует даже если запустить её в бездну. - Теперь ракета может взорваться на самом старте, если она находится в блоке или превысила максимальную длительность полёта (вдруг вы максимум 0 поставили). В текущей реализации эта проверка не нужна, а раньше была нужна.
4.2 | Снова новые параметры в конфиг!
- 4 новых параметра в конфиг -
flying_speed
move_up_speed
move_with_y_speed
max_fly_duration
- Фикс дефолтного сообщения о детонации скалковой бомбы (не совсем корректное содержание). Писало, что ракета достигла цели по дефолту, хотя она ведь могла просто врезаться в блок. Теперь, как и у ядерной - "произвела детонацию".
4.1 | Дополнение конфига
- Отсортировал переменные для улучшения читаемости кода в ConfigManager
- Добавлена конфигурация длительности блокировки
- Добавлена конфигурация длительности кулдауна на команды пуска ракет
- Некоторые улучшения касательно
/rocket reload
. - Исправление ConcurrentModificationException путём использования итератора в RadiationEffect.
- Фини-улучшение подгрузки кулдауна в коде