1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Фикс Ивенты для модов [Механизмы работают от имени владельца]

Тема в разделе "Управление сервером Bukkit", создана пользователем gamerforEA, 30 дек 2014.

  1. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    [​IMG]
    Над чужим приватом 1 буровая и сервер улетает в небытие. Перед падением успел прогнать профайлером.
     
  2. Bartolomeo Rokka

    Bartolomeo Rokka Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Bartolomeo
    я выложил небольшую подсказку, может поможет ...

     
  3. Автор темы
    gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Спойлер "ВНИМАНИЕ" добавлен не просто так. Если бы вы его прочитали, то поняли бы, что на клиент нужно ставить только чистый мод (без ивентов). Не хотите искать чистый мод - в последнее время я стал прикладывать к модам с ивентами клиентские чистые моды (ищите суффикс "client").
     
  4. Evgeny3121

    Evgeny3121 Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Evgeny3121
    Обрати внимание на то, что там используется не EventHelper, а плагин-мост.
    Смени PermissionsEX на версию без UUID и проблем не будет.
     
  5. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    И как потом ники менять?
     
  6. Linkinkov

    Linkinkov Старожил Пользователь

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    Ники, не такая большая проблема, а вот то что многие плагины уже не поддерживают старый WG более актуально
     
  7. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    Глупость! Там видно что только lowercase ника даёт минимум 5% нагрузку.
    От 1 буровой! А если поставят десяток буровых?
    Вы не внимательно смотрели мой скриншот.

    Ладно бы, если буровая работала от имени оффлайн игрока но тут другая проблема.
    Нагрузка идет не от PermissionsEX! Очень большая часть нагрузки оседает на самом WG.
     
  8. oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    WG обращается к игроку который находится оффлайн, этот запрос принимает PermissionsEX, преобразует ник игрока в uuid. И так на каждый запрос, а это не быстрый процесс. Особенно, если Пекс обращается к дефолт айпи моджанга, а если там еще и ника такого нет.. Вот и нагрузка. То что показывает нагрузку от WG, это именно от запроса. Сама проблема в Пексе, и то давно уже выяснено.

    Вообще, можете попробовать прикрепить мой переделанный скрипт от alexandrage uuidskull, привязав его к плагину. Если пекс будет обращатся к вашей базе, то появления проблемы будет снижено, у меня например она вообще пока не появлялась.
    https://yadi.sk/d/yXckuXt3rWeZk
     
  9. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    Еще раз повторяю! Игрок не оффлайн, запросы к pex даже не идут, вся нагрузка оседает в WG. Остальные ивенты ic2, Buildcraft работают нормально. Проблема только в 1 блоке из мода QuarryPlus.
    Внимательно посмотрите где оседает нагрузка: https://yadi.sk/d/z3s_KXx0riZiF
     
  10. oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Ну так то на WorldGuardEventWrapperPlugin, перепили его на EventHelper. С WGWrapper были проблемы, в том числе из-за алгоритмов самого карьера.
     
  11. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    Проблема с оффлайн игроками у меня закостылена на уровне WG.
    Имхо, бред делать проверку из wg на pex "worldguard.region.bypass" если игрок оффлайн.
    Тот перм вообще для модеров\админов, как по мне.
     
  12. Evgeny3121

    Evgeny3121 Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Evgeny3121
    Пробуй
    https://yadi.sk/d/0rlaP0SLriac8
     
  13. oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    А никто этим и не предлогал, я лишь предложил WG использовать твою базу с uuid.
    Ибо он обращается к моджанг айпи, с которого и идет несходон, получает другой uuid, если вообще его получает и игрок ломать не может, отсюда и нагрузка.
    Что изменено?
     
  14. Evgeny3121

    Evgeny3121 Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Evgeny3121
    Переделан под EventHelper
     
  15. oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    А, вижу, да.
     
  16. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    Проблема осталась: https://yadi.sk/d/3Bb9yhaHribZ8
    Мне кажется что оно просто слишком часто долбит проверками.
    Каждый тик долбит по 100-254 блоков проверки, только от 1 буровой.
    ахахах, мне кажется там вечно будет выполняться.
    Зациклено намертво.
    Код:
            while (!S_checkTarget(depth))
            {
                // TODO gamerforEA code start
                if (FakePlayerUtils.callBlockBreakEvent(this.xCoord, depth, this.zCoord, this.getFakePlayer()).isCancelled()) continue;
                // TODO gamerforEA code end
                if (this.working) this.worldObj.setBlock(this.xCoord, depth, this.zCoord, QuarryPlusI.blockPlainPipe);
                depth--;
            }
     
    Последнее редактирование: 15 май 2016
  17. Evgeny3121

    Evgeny3121 Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Evgeny3121
    Я думал у тебя проблемы из-за карьера, попутал с буровой)
    В буровой установки если даже прерывать цикл, внизу будет выполняться строка и ломать блок.
    if (this.working) S_breakBlock(this.xCoord, depth, this.zCoord);
    И в нижем методе зачем-то сделана проверка. Вообщем надо либо прерывать цикл и делать вторую проверку, либо сделать одну проверку ломания блока, но тогда труба будет появляться в привате, выбирай.
     
  18. itskun

    itskun Активный участник Пользователь

    Баллы:
    68
    Skype:
    itskun
    Имя в Minecraft:
    santrope
    Разраб закрыл issue так как у него не получается воспроизвести.
     
  19. oleg57zls

    oleg57zls Старожил Пользователь

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Возможно косяк KCauldron
     
  20. Artmoneyse

    Artmoneyse Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Artmoneyse
    Поставил прерывание цикла, проблема решена.
    Код:
        public void updateEntity()
        {
            super.updateEntity();
            if (this.worldObj.isRemote) return;
            int depth = this.yCoord - 1;
            while (!S_checkTarget(depth))
            {
                // TODO gamerforEA code start
                if (FakePlayerUtils.callBlockBreakEvent(this.xCoord, depth, this.zCoord, this.getFakePlayer()).isCancelled() == true) break;
                // TODO gamerforEA code end
                if (this.working) this.worldObj.setBlock(this.xCoord, depth, this.zCoord, QuarryPlusI.blockPlainPipe);
                depth--;
            }
            if (this.working) S_breakBlock(this.xCoord, depth, this.zCoord);
            S_pollItems();
        }
    gamerforEA исправляй косяк.
     

Поделиться этой страницей