Gold Плагин МиниИгры Marcely's Bedwars [5.5.1]

1705387608239

Мы (я и @MetallicGoat) рады объявить об этом колоссальном обновлении, которое мы использовали, чтобы выжать максимум возможностей! И вы не ослышались, мы улучшили производительность более чем на 170% - и это при том, что MBedwars уже считается, вероятно, самым эффективным плагином для Bedwars из всех существующих. Впечатляет, не правда ли?​
Мы взяли spark до и после этого обновления.
Игроки1: 170
MSPT1: 74
Игроки2: 260
MSPT2: 42
-> ((74/170)/(42/261)-1)*100 = 170.5%
До: spark
После: spark
Важное замечание: для добавления новых функций нам пришлось сломать некоторые API. Мы также воспользовались этой возможностью, чтобы полностью удалить большинство устаревших методов. Это означает, что вам, вероятно, придется обновить большинство ваших аддонов, проверьте наличие обновлений! Сообщите их разработчикам, если вы столкнулись с новыми ошибками, вызванными их аддоном!

Добавлена поддержка:​

  • 1.20.3 - 1.20.4 (спасибо @MetallicGoat)

Добавлен звук:​

  • FIREBALL_OUT_OF_BOUNDS

Изменения в конфигурации:​

  • Улучшения шаблона по умолчанию "Hypixel" (Спасибо @MetallicGoat)
  • Добавлены:
    • tntsheep-damage-multiplier: Возможность изменять урон, наносимый TNT-овцами (Спасибо @MetallicGoat)
    • respect-event-cancellations: Полезно для улучшения совместимости с анти-читом

Улучшения производительности:​

  • Улучшена производительность за счет устранения утечек памяти на аренах i.a.
  • Немного улучшена производительность логики обработки перемещений игроков
  • Добавлен асинхронный рендеринг пользовательского интерфейса для:
    • Магазин
    • Обновление магазина
    • Достижения
    • Предмет "Просмотр игроков" для зрителей
    • Предмет "Выбрать команду" в лобби
  • Переписана логика получения и кэширования скинов для большей эффективности
  • Улучшена производительность перехода с устаревшего блока (1.8-1.12) на современный блок (1.13+) при регенерации арен, которые в последний раз обновлялись на устаревшей версии шпингалета
  • Повышена эффективность рендеринга табло за счет обновления только строк с плейсхолдерами
  • Теперь различные частицы и звуки воспроизводятся асинхронно
  • Улучшение производительности за счет кэширования часто используемых методов
  • Более эффективная система удаления падений блоков для 1.12+
  • Повышена эффективность регенератора регионов за счет разгрузки парсинга NBT в поток чтения
  • Повышение производительности за счет отказа от ручной пересылки чанков во время регенерации и от постоянной проверки спавна предметов (используются альтернативные, более эффективные решения, которые были добавлены в прошлом)

Улучшения:​

  • Уменьшено использование NMS, чтобы облегчить поддержку новых версий MC (спасибо @MetallicGoat).
  • Папка "/MBedwars/data/skincache" больше не используется. Скины NPC теперь также хранятся в базе данных
  • Уменьшено количество потенциальных мерцаний при использовании магазина (т.е. при покупке предметов), вызванных лагами на стороне клиента
  • Добавлена динамическая загрузка данных о мире на случай, если в кастомном форке (смотрим на тебя, ASWM) есть ошибка, из-за которой существующие миры не получают должного отчета
  • Граница арены стала более красивой, а ее рендеринг - более эффективным
  • Скрытие результатов на табло с 1.20.3+
  • Предпочтение одинаковых игроков в команде для арен, которые выбираются с помощью предмета "следующий раунд" для зрителей
  • Огненный шар теперь спаунится с небольшим смещением вперед, так что теперь не кажется, что есть задержка при его использовании
  • Улучшен баланс команды: Направлен на более справедливый баланс игроков на команду
  • Добавлена новая система, позволяющая избежать повреждений файлов, вызванных неожиданной остановкой сервера (например, из-за падения), для информации о мире, аренах и локально хранящихся данных игроков
  • Добавлено больше предупреждений в config.yml, если что-то сделано неправильно
  • BlockBreakEvent больше не отменяется при успешном разрушении кровати, чтобы улучшить поддержку анти-читов
  • В случае добавления поврежденного .jar в файл дополнения: Заменено NPE (присутствует только в новых версиях бумаги) на соответствующее предупреждение (Спасибо @MetallicGoat)
  • Проблема с ареной, если тип арены - WORLD, а ее мир - главный мир (Спасибо @MetallicGoat)
  • Переход на java.time API, убедились, что время хранится корректно и правильно разбирается, даже если часовые пояса меняются в любой момент

Изменения в API:​

  • Добавлено:
    • GUI#hasOpen(player)
    • ScoreboardUpdateCause.PAPI_PLACEHOLDERS
    • ChestGUI#mergeFrom(gui, forceRecreate)
    • VarParticle#getOffsetX(), #getOffsetY(), #getOffsetZ()
    • VarParticle#setOffset(x, y, z)
    • VarParticle#getCount()
    • VarParticle#setCount(count)
    • VarParticle#clone()
    • VarParticle.PARTICLE_EXPLOSION_HUGE
    • GameAPI#drawBorder(min, max, player)
    • RemoteServer#getArenaByExactRealName(name)
    • XYZ#equalsBlockCoords(XYZ)
    • XYZ#equalsBlockCoords(Location)
    • XYZ#equalsBlockCoords(Block)
    • Класс PlayerDamageInfo
    • GameAPI#getLastPlayerCausedDamage(damaged)
    • PlayerKillPlayerEvent#getDamageInfo()
    • Сообщение#getInputString()
    • Сообщение#getDefaultString()
    • RemotePlayerPreJoinLocalArenaEvent
    • Arena#getBedDestructionTime(Team)
    • ArenaIssuesCheckEvent.IssueType.GAME_WORLD_IS_MAIN_WORLD
    • Arena#getRoundStopTime()
    • AddPlayerIssue#getDefaults()
    • Arena#placeBedBlocks(Team)
    • Arena#destroyBedBlocks(Team)
    • ArenaIssueCheckEvent#removeIssue(issue)
    • Arena#broadcastCustomPropertyChange()
    • ArenaPropertyChangeEvent.Property#API_CUSTOM
    • RemoteArenaPropertiesChangeEvent.Property#API_CUSTOM
    • Arena#destroyBedNaturally(info)
    • Новый Async API: (Спасибо @MetallicGoat)
      • Helper#getBlockAsync(location, callback)
      • Helper#getBlockAsync(world, xyz, callback)
      • Helper#getBlockAsync(world, x, y, z, callback)
      • Helper#getChunkAsync(world, x, y, callback)
      • Helper#teleportAsync(entity, location, callback)
    • Новый ConfigurationAPI (спасибо @MetallicGoat)
  • Убрано:
    • GUI#onClose(player)
  • Исправлены неработающие методы:
    • ShopPage#isClone()
    • BuyGroup#isClone()
    • ShopItem#isClone()
    • Исправлен ArenaCloningManager#getClonePurposeWorlds(), не возвращающий все миры
    • Исправлено игнорирование PlayerUseSpecialItemEvent#isNaturalInteractionCancelled(), если оно было отменено с помощью #setCancelled()
    • Исправлено PlayerPickupDropEvent#isFromSpawner(), возвращающее false, если событие было отменено в предыдущий раз (Спасибо @MetallicGoat)
  • Разное:
    • Arena#setStatus(status) теперь выбрасывает IllegalStateException при попытке установить его на RUNNING, но нет игроков или текущее состояние не LOBBY
    • Класс Message теперь наследует от Cloneable
    • Превратили AddPlayerIssue из Enum в класс, который теперь позволяет передавать пользовательское сообщение с помощью конструктора
    • Обновлены неправильные javadocs для различных методов, связанных с кроватью, в классе Arena
  • Сломан API:
    • AddPlayerIssue теперь класс, а не перечисление! Методы перечисления не были переимплементированы. Также может потребоваться перекомпиляция из-за возможных ошибок JRE
    • Обновлен QuitPlayerMemory: Теперь используется API java.time вместо long
    • Arena#getRoundStartTime() теперь возвращает Instand вместо long. Теперь оно может быть и null, а также теперь работает, если состояние не RUNNING
    • Arena#getRunningTime() теперь возвращает Duration вместо long. Теперь она также может быть равна null, а также теперь работает, если состояние не RUNNING.
    • Удалены AddPlayerIssue#PLUGIN и AddPlayerIssue#ARENA_ISSUE_MISSING_WORLD
    • Удалены устаревшие методы из PlayerDataAPI (только для получения кэшированных экземпляров, которые были заменены новыми)
    • Удален устаревший хук API из класса BedwarsAPI, так как он был заменен новым
    • Удален устаревший GameAPI#getArenasByPickerCondition(string), так как он был заменен новым
    • Удалены устаревшие методы из класса Arena: #getQueuedUpgradeTraps(team), #getQueuedUpgradeTraps(team, level, force), #getRemainingTeams(), #save()
    • Удалены устаревшие методы из класса Team: #getChatColor(), #setChatColor(color), так как они были заменены новым API для поддержки hex
    • Удалены устаревшие методы из ArenaBedBreakEvent: #isBroadcasted(), setBroadcasted(broadcast), так как они были заменены новыми методами
    • Удален устаревший метод ArenaIssueCheckEvent.Issue#getMessage(sender)
    • Удалено поле ScoreboardUpdateCause#FREQUENT_TICK, так как оно больше не используется
    • Удален устаревший метод PlayerOpenShopEvent#getPage(), так как он был заменен на новый
    • Удалены устаревшие классы SpecialItemAdapter и SpecialItemListener, а также все методы, связанные с ними. Вместо этого слушайте PlayerUseSpecialItemEvent
    • PlayerAchievements: Заменен устаревший API времени (Date) на java.time (OffsetDateTime) для методов #getEarnDate(achievement) и #setEarnDate(achievement, date).
    • Различные методы Arena#destroyBedNaturally( ... ) были удалены и заменены новым методом, содержащим объект данных, чтобы избежать беспорядка

Исправлены ошибки:​

  • Исправлена потенциальная утечка памяти при использовании сторожевых собак и овец tnt
  • Исправлена потенциальная утечка памяти при телепортации игроков
  • Исправлены различные проблемы с макетом магазина BergwerkLabs
  • Исправлена поломка музыки при открытии банка в виде окна
  • Исправлена потенциальная утечка памяти при сборе скинов, так как не было таймаута
  • Исправлена ошибка "regeneration-region-efficient-beta": Не генерировался последний чанк
  • Исправлена возможность огненных шаров улетать в бесконечность
    • Приводило к бесконечной загрузке и генерации чанков
    • Вызывало утечку памяти из-за того, что она никогда не выгружалась
    • Теперь мгновенно воспламеняется (со звуком и частицами), если покидает игровую зону
  • Исправлен конфиг "forcestart-ignoreminplayers", не работающий как положено
  • Исправлен спам в чате, когда в лобби было достаточно игроков для автоматического сокращения времени
  • Исправлены неработающие достижения
    • WRITE_GG_IN_ENDLOBBY
    • KILL_WITH_BOW
  • Исправлены проблемы с отображением быстрой покупки в ShopItems с ограничениями (спасибо @MetallicGoat)
  • Исправлена неработающая конфигурация "placeableblock-whitelist"
  • Исправлено, что перерождающиеся игроки могли видеть все сообщения зрителей, даже если была включена опция "customchatmessage-spectator-public" (Спасибо @MetallicGoat)
  • Исправлена иконка пустой арены в gui арены при использовании "set-amount: {players}"
  • Исправлена ошибка с "/bw arena saveblocks", из-за которой не сохранялись сущности из выгруженных чанков
  • Исправлена ошибка сохранения ASWM (с версией 2.8.0) (Спасибо @MetallicGoat)
  • Исправлена ошибка, из-за которой магазин обновлений мог постоянно открываться заново
  • Исправлено отсутствие эффекта "fireball-fly-speed" для 1.17+
  • Исправлена ошибка, из-за которой иногда не удавалось правильно очистить миры автоклонов
Очень приятно, что вы прокрутили эту страницу - Возможно, вы также захотите проверить наше новое обновление Cosmetics&Coins 1.2: Cosmetics & Coins - Marcely's Bedwars (mbedwars.com).
1

Добавлена функция:​

  • Листья больше не разлагаются на аренах
Новые конфигурации:
  • prevent-leaves-decay

Улучшения производительности:​

  • Добавлена поддержка асинхронной генерации чанков в пустотных мирах на 1.14+ (= повышение производительности)
  • Снижение нагрузки на сервер во время регенерации регионов на 1.13+
  • Сохранение загрузки определенных чанков внутри матча для снижения нагрузки

Улучшения:​

  • Улучшена логика работы SkinFetcher
  • Длительность респауна спектра смерти теперь не зависит от частоты тиков. Ранее при задержках на сервере игрокам требовалось больше времени для респауна.
  • Теперь скорость игрока также сбрасывается при сбросе его полного состояния (это должно исправить ситуацию, когда игроки застревают в блоках при перерождении)
  • Убийства теперь правильно подсчитываются, когда компаньон (железный голем, сторожевой пес...) убивает игрока. Ранее статистика убийств увеличивалась для последнего игрока, который нанес урон жертве, а не для владельца компаньона
  • Добавлена балансировка нагрузки на сервер при выборе "лучшего" сборщика арен: Теперь предпочтение отдается серверу с наименьшим количеством игроков
  • Предмет "принудительный старт" больше не ломается, если "forcestart-time" установлен на 0 или меньше
  • Координаты арен автоклонируемого региона теперь не выходят за границы издания bedrock
  • Арены автоклонируемого региона теперь используют ось z (больше арен помещается в одном мире), а также несколько миров
  • Добавлена более подробная информация о том, когда регенерация не удалась из-за невозможности телепортировать игроков в основной мир
  • При попытке телепортировать игроков из мира, который пытается регенерировать, теперь сначала будет сделана попытка использовать определенный мир-хаб, а затем основной мир
  • Новая проблема с ареной, если местоположение хаба находится внутри арены (не позволяет игрокам телепортироваться в конце)
  • Улучшена логика работы очереди отправки сообщений, теперь она лучше работает с мультипрокси

Изменения в API:​

  • Добавлено:
    • RemotePlayer#getLoginTime()
    • AddPlayerIssue.LEFT_SERVER
    • KickReason.SPECTATE
    • KickReason#isApplyingStoredInventory()
    • KickReason#isTeleportingToHub()
    • RemotePlayer#sendMessage(BaseComponent...)
    • Класс AttributeChangeCause
    • PlayerPropertyChangeEvent#isFromRemoteServer()
    • PlayerStatChangeEvent#isFromRemoteServer()
    • RemoteAPI#flushQueuedPlayerData()
    • GameAPI#forceLobbyHotbarRefresh(Player)
    • GameAPI#getCompanionOwner(entity)
    • GameAPI#setCompanionOwner(entity, owner)
    • RejoinPlayerIssue#getMessage()
    • ArenaBedBreakEvent#isSendingChatMessage()
    • ArenaBedBreakEvent#setSendingChatMessage(boolean)
    • ArenaBedBreakEvent#isSendingTitle()
    • ArenaBedBreakEvent#setSendingTitle(boolean)
    • ArenaBedBreakEvent#getChatMessageFunction()
    • ArenaBedBreakEvent#setChatMessageFunction(Function<Player, Message>)
    • ArenaBedBreakEvent#setChatMessage(Message)
    • Message.build(lines...)
    • Message#getPlaceholder(key)
    • PlayerOpenUIEvent
    • ShopItem#buy(player, isShiftClick)
    • ShopOpenCause#API_ITEM_BUY
    • XYZ#isZero()
    • IssueType#getMessage()
    • IssueType#construct(sender)
    • IssueType#construct(sender, detail)
  • Исключено:
    • ArenaBedBreakEvent#isBroadcasted()
    • ArenaBedBreakEvent#setBroadcasted(boolean)
  • Для всех контейнеров атрибутов игрока: Заменено 'set(key, value, dispatchAPIEvent, cacheOnly)' на 'set(key, value, AttributeChangeCause)'.
  • Исправлено возвращение PlayerProperties#remove после повторной загрузки с SQL в качестве типа хранения
  • Исправлен бесконечный цикл в ShopPrice#take(player, multiplier)
  • Исправлена опечатка "REGION_lESS_THAN_WORLD_MIN_HEIGHT" (буква L в слове LESS была написана строчными буквами)

Исправлены ошибки:​

  • Исправлена редкая ошибка "Игрок не в сети", когда участник следовал за лидером партии
  • Исправлен фаербол, не разрушающий блоки в старых версиях
  • Исправлено, что игроки и зрители считались участниками арены, даже если они были отброшены в процессе присоединения (т.е. если плагин отбрасывал их во время PlayerJoinArenaEvent)
  • Исправлено неправильное вращение голограмм (дилеров и т.д.) на 1.20+
  • Исправлена редкая ситуация, когда сервер падал при выходе игрока с сервера
  • Исправлена ошибка, при которой игрок не отправлялся на хаб-сервер, когда он вновь подключался к пустому серверу в прокси-сети
  • Исправлен некорректный разбор устаревших материалов яйца спавна (monster_egg:<entity>) в 1.13+
  • Исправлено, что spell_mob и spell_mob_ambient всегда отображались как черные на 1.13+
  • Исправлена атака сторожевого пса на неигровых врагов (например, защитника снов)
  • Исправлена потенциальная ошибка при использовании команды "/bw arena rename".
  • Исправлен NPE при нахождении в отряде без лидера
  • Исправлены ошибки с голограммами в версии 1.20.2
  • Исправлена ошибка, из-за которой NPC не появлялись в 1.20.2
  • Исправлена ошибка, когда для параметра death-spectate-at-death-location установлено значение false, а точка зрителей отсутствует
  • Исправлена ошибка, при которой не учитывалась статистика потери кроватей, если кровать была сломана неигроком
Добавлена поддержка для:
  • MC 1.20.2
Улучшения:
  • Autojoin: игроки теперь появляются в нужном месте, когда они переключают серверы без каких-либо задержек
  • Улучшенный анализ устаревших чар во всех конфигурациях: теперь он поддерживает устаревшие числовые идентификаторы на 1.13 + и добавляет недостающие
  • Улучшенная совместимость между 1.13 + и ниже 1.12: теги Enchantments NBT внутри элементов теперь анализируются должным образом, даже если они отличаются из-за переименования Mojang между обновлениями
Исправлены ошибки:
  • Фиксированные потери потенциально учитываются дважды
  • Фиксированные "notbuildableradius-дилеры" не имеют никакого эффекта для мировых арен
  • Исправлено, что мир лобби не меняется должным образом для клонированных арен типа WORLD
  • Исправлена неправильная конфигурация gen-tiers в Hypixel макете ( с использованием %% вместо { } )

Улучшения:​

  • Заменено предупреждение "SWM plugin is missing" на новое "SWM enabled config is disabled", если на самом деле конфиг просто отключен.
  • Условия сборщика арен теперь анализируются, когда они действительно нужны в первый раз, чтобы аддоны, регистрирующие пользовательские условия, успели зарегистрировать свои.

Исправлены ошибки:​

  • Исправлены ошибки с API FetchLeaderboard
  • Исправлены проблемы с таблицей лидеров на локальном хранилище: Пропавшие игроки, игроки, занявшие два места
  • Исправлена ошибка, при которой не работал элемент выхода из лобби, если был активен параметр "lobby-leaveitem-time"
  • Исправлена ошибка при использовании %mbedwars_playerarena-countdown%, когда обратный отсчет не был запущен
  • Исправлено, что различные PAPI-заместители арены игрока переставали работать
  • Исправлено потенциальное зависание потоков ввода-вывода при загрузке мира SWM

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

  • Новая система табло:
    • Исправлены проблемы с мерцанием при "принудительном обновлении" табло
    • Добавлены табло для каждого условия
    • Добавлены табло для конечной игры и зрителей (новая папка scoreboard-layouts)
    • Полная поддержка гексов
    • Увеличен лимит персонажей (ваша версия Spigot/Minecraft должна их поддерживать)
  • Добавлена группировка для коллекций арен в графическом интерфейсе арен:
    • Новый конфиг: group-by-displayname
    • Новый плейсхолдер: {grouped-arenas}
  • Функция отображения спаунеров
    • Теперь спавнеры в одной позиции суммируются.
    • Это означает, что отображается количество нерестилищ, находящихся на данной позиции, а также складываются нерестилища разных типов на разных y-уровнях

Добавлена поддержка:​

  • AdvancedSlimeWorldManager 1.19+ (он же AdvancedSlimePaper)

Добавлены конфигурации:​

  • explosion-entities-blacklist (черный список сущностей, которые могут быть повреждены взрывчаткой)
  • group-by-displayname (графический интерфейс арены)
  • Добавлена возможность настройки названий/лора в меню достижений
    • gui-achievements-text-unearned
    • gui-achievements-text-earned
  • Новые настройки для собак-охранников
    • guarddog-damage-multiplier
    • guarddog-alive-duration
    • guarddog-display-name

Новые заполнители PlaceholderAPI:​

  • %mbedwars_playerarena-countdown% - Отображает время, оставшееся (в формате чч:сс) до окончания матча (если арена запущена), или время, оставшееся (в формате чч:сс) до начала матча (в состоянии лобби)
  • %mbedwars_playerarena-running-time% - Отображает время (в формате чч:сс), в течение которого матч уже запущен.

Улучшена производительность:​

  • Добавлены индексы игроков для локального хранения
    • Значительно снижено использование памяти
    • Автоматически обрабатывает повреждения
    • Позволяет получать статистику от игроков, которые никогда не присоединялись к серверу. Например, при переносе статистики на другой сервер, где еще нет зарегистрированных игроков (API)
    • Открывает новые возможности, например, новый API, позволяющий получить таблицу лидеров по любому набору статистики
  • Значительно уменьшено использование памяти конфигурацией "regeneration-region-efficient-beta"
  • Немного повышена производительность за счет асинхронного размещения блоков кровати (если поддерживается; 1.15+ paper)
  • Повышение производительности за счет использования более оптимизированных типов данных во всем коде

Улучшения:​

  • Добавлено волшебное молоко в шаблон HyPixel
  • "/bw spawn joinarenasign" теперь поддерживает удаленные арены (из аддона ProxySync)
  • Добавлены новые переменные состояния арены: server_playing_arenas_count и cloned_arena_name
  • На странице конфигурации арен для голосования теперь отображается реальное имя арен в пуле, а не их отображаемое имя
  • Теперь можно взаимодействовать с сущностями в конечном лобби, если отключен конфиг "endlobby-tptolobby" (Устранен конфликт с победным танцем Yeehaw из аддона Cosmetics&Coins)
  • Уменьшен размер jar за счет отказа от включения неиспользуемых классов из сторонних библиотек
  • Макет магазина HyPixelV2: Строка страниц больше не центрируется
  • HyPixelV2 макет магазина: Зеленая подсказка в разделителе страниц/элементов теперь правильно адаптируется к форс-слоту страницы
  • Графический интерфейс достижений теперь также отображает дату получения каждого достижения
  • Хотфикс GeyserMC (вызванный им): Постоянный зум после перерождения в качестве зрителя
  • Теперь можно присоединиться к арене, будучи зрителем. Ранее отображалось сообщение "Вы уже находитесь на арене!".
  • Сообщения Spectator_Join и Spectator_Leave теперь не отображаются, если вы наблюдаете смерть
  • Добавлен заполнитель табло {plugin:version}

API:​

  • Дополнения:
    • PlayerInteractSpecialBlockEvent
    • PlayerInteractHologramEntityEvent
    • VarParticle.NONE
    • Класс PersistentStorage
    • Класс PersistentStorage.Holder
    • SpecialBlock теперь реализует PersistentStorage.Holder и Metadatable
    • PacketHologram теперь реализует PersistentStorage.Holder и Metadatable
    • KickReason#SPECTATE_ITEM_NEXT_ROUND
    • KickSpectatorReason#JOIN_ARENA
    • KickSpectatorReason#isTeleportingToHub()
    • KickSpectatorReason#isApplyingStoredInventory()
    • KickSpectatorReason#isDisplayingLeaveMessage()
    • SpectateReason#isDisplayingJoinMessage()
    • SpectateReason#isBackingUpInventory()
    • Добавлена функция Message#send(sender, freeInstance)
    • Исправлена опечатка: VarParticle#isnnternallyParticle должно быть isInternallyParticle
    • PlayerDataAPI#fetchLeaderboard(statSet, minRank, maxRank, callback)
    • PlayerDataAPI#fetchLeaderboardPosition(playerUUID, statSet, callback)
    • PlayerDataAPI#fetchLeaderboardPosition(player, statSet, callback)
    • Добавлена обёртка CommandSenderWrapper#isConsole()
    • Добавлена обёртка CommandSenderWrapper#isPlayer()
    • Добавлено CommandSenderWrapper#isLocal()
    • Добавлено CommandSenderWrapper#isRemote()
    • Добавлено RemoteServer#executeBedwarsCommandAsConsole(label, args)
    • Добавлено CommandSenderWrapper#wrapConsole(server)
  • Изменения в TeamEliminateEvent:
    • Улучшена JavaDocs
    • Исправлена ошибка #getRemainingPlayer(), возвращающая игрока, сломавшего кровать (должен возвращаться null)
    • Добавлен новый параметр для получения игрока-инициатора: #getCausingPlayer()
    • Сделано более понятным, что делает PlayerIngameDeathEvent
  • Наблюдающие экземпляры, которые получают кик из-за того, что экземпляр игрока получает кик, теперь используют соответствующую причину
    • Добавлена функция KickReason#getMatchingSpectatorKickReason()

Исправлены ошибки:​

  • Исправлена потенциальная ошибка при выборе команды в графическом интерфейсе селектора https://pastebin.com/3eSsGqm8.
  • Исправлены различные ошибки при конвертации из v4
  • Исправлена ошибка "IllegalArgumentException" при попытке получить доступ к удаленным аренам с помощью консольных команд (требуется Enhanced ProxySync)
  • Исправлены различные проблемы с автоматическим клонированием (например, голо [дилеры и т.д.] не появлялись на мировых аренах)
  • Исправлена ситуация, когда вода выбрасывала предметы, которые она разбила
  • Исправлен глюк дублирования в макетах магазинов, использующих графические интерфейсы сельских жителей
  • Исправлена пропажа поддержки гексов в различных местах (config.yml, название арен, различные сообщения и название GUI статуи арены)
  • Исправлена ошибка "IllegalArgumentException" при использовании команды "/bw tools openshop", когда вы не находитесь на арене и открываете страницу с предметами, использующими конфиг "restriction".
  • Исправлены неработающие эффекты свечения на предметах при присоединении с версией 1.11+ (ViaVersion) на сервере 1.8-1.10
  • Исправлено возгорание от взрывов, вызванное специальным предметом "Огненный шар
  • Исправлено потенциальное очищение инвентаря при использовании предмета "следующий раунд" в качестве зрителя
  • Звук "spectator-change-arena" (воспроизводится при использовании предмета "next-round" в качестве зрителя) теперь воспроизводится и при смене арены по сети, а не только локально
  • Исправлено отсутствие названия команды в чате шаблона HyPixel по умолчанию
  • Исправлены различные ошибки, возникавшие при удалении различных конфигов или передаче неверного синтаксиса
  • Исправлена ошибка, при которой в некоторых случаях не учитывался язык клиента игрока, даже если была включена многоязычность
1
  • Добавлена конфигурация:
    • notbuildableradius-permit-block-liquidflow (Запрещает протекание воды в запрещенную зону, например, в места спавна команд)
  • Улучшения:
    • Крики в чате: Теперь сообщение не будет отправляться, если оно пустое
    • Вода больше не вытекает из арены
    • GUI "Выбор команды" в лобби закрывается после нажатия и переключения команды
    • Переписана очередь регенерации арены.
      • Теперь она работает гораздо стабильнее и эффективнее
    • Добавлены улучшенные сообщения о сбоях для "/bw arena regenerate"
    • Переписана система загрузки сообщений
      • Значительно уменьшено использование памяти для сообщений (теперь все загруженные сообщения занимают ~57 кб ОЗУ) + теперь все работает намного быстрее и стабильнее
    • Сообщения теперь автоматически переводятся на язык игрока при первом включении плагина, чтобы было проще разобраться с настройками
  • Исправлены ошибки:
    • Исправлена ошибка NoSuchMethod на 1.20+ (API setCollidesWithEntities был удален спиготом)
    • Исправлена ошибка при пробивании NPC магазина в 1.20+
    • Исправлена ошибка https://pastebin.com/UduXH3MT
    • Исправлена ошибка, при которой очередь регенерации арен застревала на многих аренах
    • Исправлены проблемы с системой загрузки сообщений (бывали случаи, когда она стирала все изменения)
    • Исправлен конфиг "bed-block", который не влиял на кровать, установленную на арене
    • Исправлена возможная ошибка при настройке плагина https://pastebin.com/N6B8Q0Wz
    • Исправлена ошибка https://pastebin.com/HkgwEB8b (возникала только для 1.15 - 1.18)
    • Исправлено, что регенератор проходил мимо углов и таким образом сохранял, очищал и регенерировал больше блоков, чем должен
  • Изменения в API:
    • Исправлена ошибка, указывающая, что единицей времени в Arena#setIngameTimeRemaining(int) и Arena#getIngameTimeRemaining() являются тики, а не секунды [! Функциональность осталась прежней!]
    • Новый HookAPI
      • Утративший силу BedwarsAPI#getHookedPlugins()
      • Deprecated BedwarsAPI#getHookablePluginNames()
      • Deprecated BedwarsAPI#createPluginHook(Plugin)
      • Исправлено BedwarsAPI#removePluginHook(Plugin)
      • Добавлено BedwarsAPI#getHookAPI()
      • Теперь можно легко подключить к MBedwars пользовательские системы party&nicknaming и тем самым заставить MBedwars автоматически управлять ими за вас.
      • Кроме того, вы можете получить доступ к хукам &зарегистрированных партий& и информации о партии игрока.
E9a38010b0307aef17237f9790873442a2c9736e

2
  • Добавлена поддержка:
    • MC1.20 (также включает 1.20.1) (Спасибо @MetallicGoat)
  • Добавлены функции:
    • Добавлена поддержка биомов для региональных арен на 1.15+ (биомы восстанавливаются после окончания арены + правильные биомы при использовании функции клонирования) (только 1.15+)
    • Добавлена возможность изменять статистику игрока с помощью команд: (Спасибо @MetallicGoat)
      • /bw tools playerdata stats set/add/subtract
      • /bw tools playerdata stats reset
      • /bw tools playerdata stats resetall
  • Улучшения:
    • Улучшена точность времени регенерации в "/bw arena info" (Теперь он пытается использовать среднее значение за прошедшее время, а не угадывает его все время)
    • Заменена ошибка https://pastebin.com/aUA650EJ на соответствующее предупреждение
    • Немного уменьшено использование памяти за счет меньшего количества загруженных строк сообщений
    • Немного улучшена производительность для всех клонированных миров за счет отключения автосохранения для них
  • Дополнения к API:
    • Добавлены вспомогательные классы ThrowingConsumer и ThrowingSupplier
    • Добавлена новая функция PlayerDataAPI:
      • getCachedAchievements()
      • getCachedStats()
      • getCachedProperties()
      • void purgePlayerData(UUID uuid, boolean stats, boolean achievements, boolean properties, boolean cacheOnly, @Nullable Runnable callback)
      • void purgeAllPlayerData(boolean stats, boolean achievements, boolean properties, boolean cacheOnly, @Nullable Runnable callback)
    • PlayerDataPurgeEvent (Спасибо @MetallicGoat)
  • Исправлены ошибки:
    • Исправлено, что предметы зрителей не работали, если к ним не были прикреплены обработчик и команда (Спасибо @MetallicGoat)
    • Исправлено сообщение Bed Destroy, отправляемое после сообщения о победе при соло-переподключении + различные другие проблемы с соло-переподключением в нише (Спасибо @MetallicGoat)
    • Исправлено, что изменения длительности падения спаунера во время игры не применялись сразу, а только после того, как он что-то сбросил
    • Исправлена ошибка https://pastebin.com/vv1M8ivn на 1.19.3+
    • Исправлено, что элемент area-deco в ArenasGUI ожидал, что x1/x1 будет меньше, чем x2/y2
    • Исправлено вмешательство в работу SkinsRestorer (игроки, находящиеся в матче, видели новых игроков, присоединившихся к серверу, на TAB)
    • Исправлена ошибка https://pastebin.com/L5Ah2f4p
    • Исправлено, что игроки могли застрять в лобби, если позиция лобби была размещена ниже минимальной высоты на 1.17+
    • Исправлено отсутствие копирования различных свойств мира в клонированные миры (только для арен типа WORLD). К ним относятся: граница, правила игры, сложность, погода, время, PVP, флаги спавна, место спавна и ограничения спавна мобов.
Как всегда, я благодарен @MetallicGoat'у (и, конечно, всем остальным, кто сообщил об ошибках в нашем Discord) за вклад в это обновление. Если вы оцените наши усилия, мы будем очень признательны за пожертвование. Большое спасибо!
Cloudnet Kopie

(Предварительный просмотр новой поддержки CloudNetV4)​

Добавлена функция:​

  • Игроки, выбывшие из игры во время одиночного матча, могут иметь возможность возобновить игру в течение определенного времени (настраивается с помощью параметра "solo-rejoin-time"), вместо того, чтобы быть уничтоженными сразу (Спасибо @MetallicGoat)
Улучшена поддержка сторонних разработчиков:
  • Обновление OldCombatMechanics до 1.12.0+ (Старые версии больше не поддерживаются. Плагин предупредит вас, если обнаружит это) (Спасибо @MetallicGoat)
  • Добавлен CloudNetV4
  • Улучшена поддержка Microsoft SQL:
    • Добавлен драйвер последней версии
    • Добавлены конфигурации: sql-mssql-encrypt и sql-mssql-integrated-security
    • Также добавлены новые конфигурации в веб-настройку

Изменения в конфигурации:​

  • Добавлено:
    • auto-cloning-excluded-arenas: для исключения определенных арен из автоматического клонирования
    • sql-mssql-encrypt
    • sql-mssql-integrated-security
  • customchatmessage-spectator-message:
    • Добавлена поддержка PlaceholderAPI
    • Добавлены новые заполнители:
      • {essentialsgroupmanager}
      • {имя}
      • {сообщение}
  • "customchatmessage-message" теперь также применяется во время фаз лобби
  • "hex-support" теперь по умолчанию имеет значение true

Разное:​

  • Значительно уменьшено потребление памяти аренами, вызванное их системой регенерации
  • Добавлена версия API в /bw info

Изменения API:​

  • Некоторые изменения для новой функции solo-rejoin:
    • Утратил силу:
      • Arena#getRemainingTeams()
      • Arena#getRemainingTeams(Player...)
    • И в связи с этим добавлены:
      • Arena#getAliveTeams()
      • Arena#getAliveTeams(Player...)
      • Arena#getTeamsWithPlayers()
      • Arena#getTeamsWithPlayers(Player...)
  • Некоторые улучшения API голограмм:
    • Добавлена возможность модифицировать снаряжение:
      • Добавлены классы EquippableSkin и HologramEquipment.
    • Добавлена возможность модифицировать здоровье:
      • Добавлен класс DamageableSkin
    • Добавлена возможность модифицировать ArmorStands:
      • Добавлен класс ArmorStandHologramSkin
    • Утратил актуальность HologramSkinType#VILLAGER
    • Добавлено Spawner#getHologram()
    • Добавлена арена#getBedHologram(Team)
  • Добавлен API для обмена сообщениями/пакетами между серверами (RemoteAPI):
    • RemoteCustomMessageReceiveEvent
    • RemoteAPI#broadcastCustomMessage(String, byte[])
    • RemoteServer#sendCustomMessage(String, byte[])
  • Разное:
    • Добавлено:
      • ShopItem#removePrice(ShopPrice)
      • ShopItem#removeProduct(ShopPrice)
      • ItemShopPrice#setItemStack(ItemStack)
      • ItemShopProduct#setItemStack(ItemStack)
    • CommandSenderWrapper#wrap(RemotePlayer) теперь автоматически оборачивает его в формат Bukkit в случае, если он играет на локальном сервере
    • Исправлена ошибка CommandSenderWrapper#getReference(), возвращающая null в случае, если отправитель находился на удаленном сервере
    • Конструктор QuitPlayerMemory получил новый параметр, что потенциально может сломать API, использующий его

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

  • Исправлено предупреждение 'missing handler warning', отправляемое игрокам при использовании предмета зрителя только с командой (Спасибо @MetallicGoat)
  • Исправлено странное форматирование описаний конфигов (Спасибо @MetallicGoat)
  • Исправлены голограммы спавнера, которые не вращались (Спасибо @MetallicGoat)
  • Исправлен NPE при открытии макета HypixelV1 (Спасибо @MetallicGoat)
  • Исправлена очередь регенерации арены, которая застревала при принудительной отмене
  • Исправлен параметр игрока для /bw join, всегда использовался игрок, который ввел команду
  • Исправлена ошибка при вводе команды "/bw tools openupgradeshop" не внутри арены https://cdn.discordapp.com/attachments/355078539793530900/1105848704050659338/image.png
  • Исправлено, что тела NPC не поворачивались в определенных ситуациях при использовании вместе с автоповоротом головы в Tweaks
  • Исправлено, что тела NPC не поворачивались в определенных ситуациях при использовании вместе с автоповоротом головы Tweaks
Примечание: Из-за того, что этот плагин очень маленький, версия плагина остается на уровне 5.2.4

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

  • Исправлены проблемы с командой /bw join
Как всегда, я благодарен MetallicGoat'у (и, конечно, всем остальным, кто сообщал об ошибках в Discord) за вклад в это обновление. Если вы оцените наши усилия, мы будем очень признательны за пожертвование. Большое спасибо!

Изменения в командах:​

  • Консоль теперь может получить доступ к командам "/bw stats" и "/bw debug".
  • Добавлен необязательный параметр [player] в команду /bw join для администраторов (Спасибо MetallicGoat )

Изменения в конфигурации:​

  • Удален "log-ranking-recalculations".
  • Удален "recalculate-ranking-auto-delay".

Разное:​

  • Увеличен максимальный лимит SQL соединений до 20. Полезно для плагинов, которые обращаются к пулу соединений с помощью API.
  • Уменьшено количество простаивающих SQL-соединений с 4 до 1. MBedwars не нуждается в большем количестве соединений большую часть времени, и это также немного снижает нагрузку на ваш SQL сервер
  • Добавлена поддержка блокировки игроков для MongoDB
  • Улучшена синхронизация данных игроков при наличии нескольких серверов
  • Добавлена информация, когда плагин обнаруживает, что вы используете прокси-сеть
  • Полностью удалено уведомление о подсчете рейтинга
  • Уменьшен размер и эффективность базы данных за счет хранения меньшего количества информации
  • Добавлена специальная благодарность для /bw info
  • Теперь можно взаимодействовать с дилерами (и другими голограммами), "пробивая" их. Это упрощает взаимодействие для игроков в bedrock и тем самым улучшает поддержку GeyserMC

Изменения API:​

Добавлено:​

  • RemoteAPI#isInstantPlayerDataSyncingActive()
  • PersistentBlockData#matches(Block)
  • CommandHandler#getOverridingUsage(CommandSenderWrapper senderWrapper)
  • SubCommand#getUsage(CommandSenderWrapper senderWrapper)
Добавлен API ArenaPersistentStorage и добавлены помощники PlayerProperties:
  • Добавлен интерфейс StringMapSerializationHelper (содержит кучу геттеров и сеттеров, например, getInt(String)).
  • PlayerProperties теперь наследует StringMapSerializationHelper, что облегчает работу с ним
  • Добавлен класс ArenaPersistentStorage
  • Добавлен метод Arena#getPersistentStorage()
  • Добавлен метод RemoteArena#getPersistentStorage()
Исправлен PlayerDataAPI#getXNow(X) и заменен на PlayerDataAPI#getXCached(X), так как название раздражало

Исправлены ошибки:​

  • Исправлено, что другие серверы могли вмешиваться в базу данных, даже если они не должны были этого делать
  • Исправлена рассинхронизация между таблицами лидеров и статистикой /bw
  • Исправлена редкая ошибка, из-за которой игроки не могли заново присоединиться к серверу, когда сервер только начался
  • Исправлен скилл/статуя/знак рейтинга, не работающий должным образом в течение первой минуты после запуска сервера
  • Исправлена ошибка, из-за которой спасательная платформа могла сбрасывать дубликаты предметов при взрыве
  • Хотфикс (на самом деле ошибка ViaVersion) анимация ранения голограммы заменена на анимацию смерти для голограмм (например, дилеров)
  • Исправлено насыщение едой на 20, а не на 5 при перерождении
  • Исправлено отсутствие загрузки/сохранения конфигов в формате UTF8, если ваш сервер не настроен на его использование по умолчанию
  • Исправлена ошибка "Команда не поддерживается" при использовании драйвера MariaDB
ВерхНиз