sCabins - плагин на ПВП-кабинки

sCabins - плагин на ПВП-кабинки 1.2

Создайте и подтвердите аккаунт для скачивания

shaaarmdev

Пользователь
Сообщения
6
Веб-сайт
t.me
shaaarmdev добавил(а) новый ресурс:

You must be logged in to see this link. - Есть ошибки или идеи? Заходи -> [сюда](https://t.me/shaaarmdev)

sCabins — плагин для создания дуэльных 1v1 кабинок прямо в вашем мире. Вы просто обводите постройку жезлом и сохраняете зону — кабинка готова. Как только два игрока заходят внутрь, бой стартует автоматически: двери запираются, на входе появляются барьерные блоки, выйти нельзя до победы. После смерти одного игрока кабинка сбрасывается и готова к следующей дуэли.

Возможности​

  • Создание любого количества кабинок
  • Поддержка hex-цветов (&#RRGGBB) в сообщениях...

You must be logged in to see this link.
 
Нет исходников :(

Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Получение в рантайме. Сохраняйте значения в переменные, позже получайте.
Почитай это: You must be logged in to see this link.

Вам необходимо зарегистрироваться для просмотра изображений-вложений

Это можно обойти в 2 шага.

Решение:
Я просто оставлю ссылку:
You must be registered for see medias
 
Последнее редактирование:
shaaarmdev обновил(а) ресурс You must be logged in to see this link. новой записью:

You must be logged in to see this link.

  • Кэширование конфига: все значения из config.yml загружаются в память при старте и при /scabins reload. Больше нет обращений к файлу в рантайме.
  • Упрощён config.yml: добавлены секционные комментарии, hex-цвета заменены на стандартные &-коды.

You must be logged in to see this link.
 
Учитывая размеры этих кабинок и их количество на серверах, наилучший способ - не отслеживать движения игроков, а переодически смотреть кто находится внутри и проводить манипуляции с этими данными

Java:
data class Cuboid(
    val world: World,
    val center : Location,
    val radiusX, val radiusY, val radiusZ
) {
    fun getPlayersIn(): Collection<Player> =
        world.getNearbyEntitiesByType(Player::class.java, center, radiusX, radiusY, radiusZ)
}

data class Cabin(
    val tickInterval: Long,
    val cuboid: Cuboid
) {
    fun tick() {
        val playersIn = cuboid.getPlayersIn()
        // Твоя логика
    }
}

Таким макаром мы избавляемся от тонны аллокаций, вся логика выполняется за o(1) а не o(n
 
shaaarmdev обновил(а) ресурс You must be logged in to see this link. новой записью:

You must be logged in to see this link.

Polling вместо событий: PlayerMoveEvent заменён на периодический опрос через You must be logged in to see this link.. Вся логика выполняется за O(кабинки) вместо O(все игроки на сервере).
Настраиваемый интервал: добавлен параметр...

You must be logged in to see this link.
 
Лучше для каждой кабинки свою задачу создавать, и запускать по очереди через 1 тик, чтобы размазать нагрузку на несколько тиков
Объединено

И GreatCombat поддержку надо!
 
И поддержку Minimessage лучше сделать, чтобы нативно и удобно может было делать кликабельные сообщения, градиенты и так далее.
 
Назад
Сверху Снизу