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

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

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

  1. Linkinkov

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

    Баллы:
    173
    Skype:
    linkinkov1
    Имя в Minecraft:
    linkinkov
    BlockForestryFluid.java
    Код:
            // explode if very flammable and near fire
            int flammability = getFlammability(world, x, y, z, ForgeDirection.UNKNOWN);
            if (flammability > 0) {
                // Explosion size is determined by flammability, up to size 4.
                float explosionSize = 4F * flammability / 300F;
                if (explosionSize > 1.0 && isNearFire(world, x, y, z)) {
                    //world.setBlock(x, y, z, Blocks.fire);
                    //world.newExplosion(null, x, y, z, explosionSize, true, true);
                }
            }
        }
    
    Собственно закоментировал две строки. Возможно у вас такого не случится, потому что лишь на одном сервере была такая проблема, но вот world.newExplosion цепляется к WG через ForgeEvents (Причина тому, немного "доработанные" таковые в Thermos)
     
  2. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    EventHelper обновлён до версии 1.7. Добавлена поддержка реальных игроков в FakePlayerContainer (например, снаряды, ивенты которых будут переделаны под новую версию, будут использовать не фейкового, а настоящего игрока, что позволит выводить сообщения о невозможности наносить урон в чужом привате). Эта версия будет использоваться в мартовском обновлении.
    https://github.com/gamerforEA/EventHelper/releases/tag/1.7
    ThaumCraft обновлён: https://yadi.sk/d/JUmcf3-t3ErcAd
    1. Исправлен дюп с големами и воронками;
    2. Пьедестал не дропает содержимое, если над ним стоит блок;
    3. EventHelper обновлён до версии 1.7.
    Остальное залью завтра.
    ThaumicTinkerer обновлён: https://github.com/gamerforEA/ThaumicTinkerer-FakePlayers/releases/tag/2.5-1.7.10-538_02.03.2017
    1. Различные мелкие фиксы;
    2. Новые опции в конфиге;
    3. Выключено распространение элементального огня;
    4. Зачарование Вампиризм;
    5. Дюп эссенции с Проклятым лезвием духа и Пьедесталом некроманта.
     
    Последнее редактирование: 1 мар 2017
  3. kirill20131

    kirill20131 Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    asdfrw
    Когда еще будут обновления?
     
  4. DrLeonardo

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

    Баллы:
    88
    Имя в Minecraft:
    DrLeonardo
    КТТС
     
  5. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
  6. Flubox

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

    Баллы:
    78
    Под 1.10.Х будут моды?
    IC2 уже завезли, хотя бы его
     
  7. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Пока не вижу в этом необходимости. Серверов с модами на 1.10.2 слишком мало.
     
  8. alexandrage

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

    Баллы:
    173
    Плюсую. Никому не нужен этот спонж.
     
  9. synthetic

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

    Баллы:
    76
    BuildCraft. Багрепорт для gamerforEA.

    Суть:
    Можно поставить карьер таким образом, что он будет посылать EventHelper-у тысячи ивентов в секунду сильно нагружая его. Сервер при этом виснет намертво.

    Инструкция по воспроизведению бага:
    Нужно поставить карьер и с метками таким образом, чтобы метки обозначали территорию, в которой карьер не может построить свою рамку для работы. Например если заставить карьер выкапывать середину горы. Перед тем, как построить рамку для работы карьер будет выбрасывать из себя красные частицы, которые будут разрушать блоки до тех пор, пока не появится пространство для постройки рамки. Именно в этот момент карьер лагает. Дельше уже построится рамка и будет работать "хобот" карьера.

    Во время лагов на сервер вообще невозможно зайти. Приходится править EventHelper.cfg отключая EventHelper и перезагружать сервер.

    UPD:
    лаги начинаются, когда игрок, установивший карьер выходит из игры.
    игрок, установивший карьер не должен быть оператором.

    2017-03-05_19.23.17.png

    Почему так происходит:
    Скорее всего виновата функция createColumnVisitList() в TileQuarry.java, в ней операция проверки блока находится внутри тройного цикла. Это ужасно. Есть подозрение, что createColumnVisitList() вызывается очень часто в то время, когда карьер расчищает место для своего хобота.

    Как фиксить?
    Я даже не знаю. Есть идея: запускать этот тройной цикл только один раз при установке карьера. Вряд ли найдутся глупцы, которые будут создавать приват внутри рамки чужого карьера. Поэтому нет острой необходимости постоянно проверять блоки, которые находятся внутри рамки.
     
    Последнее редактирование: 7 мар 2017
  10. alexandrage

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

    Баллы:
    173
    По таким причинам у шевчика были кастомные ивенты, а не бакитовские. А так каждый плагин что слушает ивент реагирует, не только wg но и такие как есс антибуилд ncp модифеворлд и тп.
     
  11. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    EventHelper позволяет отсылать ивенты не всем плагинам, а только необходимым (по-умолчанию он работает только с WG).
     
  12. oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Фиксится кешированием в WorldGuard
     
  13. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    BuildCraft обновлён до 7.1.20: https://github.com/gamerforEA/BuildCraft-FakePlayers/releases/tag/7.1.20
    1. EventHelper обновлён до 1.7.
    2. Чёрный список NBT тэгов для Строителя;
    3. Фикс дюпа с Автоверстаком;
    4. Труба Stripes.

    @synthetic во время лагов введите команду "/wg profile - p 1" и скиньте ссылку, которая появится спустя минуту после ввода команды. А вообще, Олег прав, если это то, о чём я думаю, то кэширование для WG решит данную проблему (и вообще сильно повысит производительность ивентов).
     
  14. synthetic

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

    Баллы:
    76
    Я использую WG 5.9 там нет такой команды.
     
  15. !Egorpom

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

    Баллы:
    61
    Имя в Minecraft:
    Egorpom
    Которое ТС продает.
    Кешированием решаются лаги с ВГ, а вот плагин логов, который подключен к этим ивентам, сходит с ума и сервер все равно просаживается.
     
  16. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Тогда используйте WarmRoast или ещё какой-нибудь профайлер. Я не оракул, чтобы без каких-либо данных понять, что именно лагает.
    BuildCraft перезалит. Фикс автоверстака дополнен.
     
  17. Raynax

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

    Баллы:
    61
    # Включить освещение территории Пылающими шароварами [default: false]
    Я так понимаю это сделали из за оставления источников света этими штанами, а нельзя как то сделать что бы можно было отключить только оставление источников света, а саму функцию освещения оставить?
     
  18. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Нельзя. Они сами по себе должны исчезать, но я не смог понять, почему эта функция не работает.
    IC2 обновлён: https://github.com/gamerforEA/IC2-FakePlayers/releases/tag/2.2.827_09.03.2017
    1. Новые опции в конфиге;
    2. EventHelper обновлён до версии 1.7;
    3. Различные мелкие фиксы.
     
  19. synthetic

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

    Баллы:
    76
    Код:
    # Возможность пользоваться Торговым аппаратом одновременно лишь одним человеком
    Спасибо тебе большое за эту опцию =) Я так удивился, когда увидел этот фикс. Дело в том, что я сам реализовывал на своём сервере точно то же самое для торговых аппаратов. И здорово, что ты взялся за латание таких очевидных недостатков в движке Industrial Craft 2.

    Предлагаю на твой суд и на суд общественности ещё несколько подобных анти-гриферских фиксов, которые можно добавить в конфиг IC2. Я реализовывал все эти фиксы и сейчас они работают у меня на сервере. То есть они проверены практикой на разумность.

    1. Во-первых, можно сделать аналогичный "персональный доступ" для энергообменного аппарата. Это не так критично, как для торгового аппарата, т.к. им редко пользуются. Но энергообменный аппарат точно так же разрешено открывать в чужом привате и с его помощью можно продавать энергию. После того, как игрок заплатил и заряжает свой аккумуляторный ранец или аккумулятор, другой игрок может открыть энергообменный аппарат и этот аккумулятор своровать.

    2. Добавить конфиг, запрещающий ставить на землю катушку Теслы. Она нужна для крафтов в модах Gravitation Suite и Combo Armors, но с её помощью постоянно создают ловушки для игроков, хотя правилами они часто запрещены. Раньше приходилось запрещать катушку Теслы, а предметы, которые из неё делаются, продавать в админшопе.

    3. Добавить конфиг, запрещающий использование шахтёрского лазера на поверхности земли (на высоте >= 63) и в Аду. Одних ивентов для лазера недостаточно, чтобы предотвратить массовую порчу свободной территории. А адский камень так легко разрушается с помощью лазера, что через неделю весь ад превращался в одну большую дыру. Я, например, разрешил использовать лазер на глубине 15 и ниже. Дело в том, что если из глубины ~16 стрелять лазером вверх в режиме максимальной дальности, то можно проделать дыру, до 63 блока, в которую будут сыпаться новички. Поэтому разрешённая глубина 15.

    4. Добавить конфиг, запрещающий ПКМ жидкостными капсулами и универсальными жидкостными капсулами на свободной территории. Гриферы делали пару стаков капсул с перегретым паром, а затем выливали его вокруг какого-нибудь привата. При этом образуется стена из пара до самого верха мира, пересекая которую получаешь урон. Таким образом можно было капитально засрать свободную территорию или закрыть подход к отдельному региону.

    5. Добавить конфиг, запрещающий ставить электролампу. Электролампа нужна для некоторых крафтов. Однако она дешёвая и несведущие игроки часто делают потолки или полы полностью из этих ламп. Всё бы хорошо, но для подачи электроэнергии к плоскости из ламп нужная другая плоскость - из проводов. Такая конструкция из проводов (с огромным количеством циклов) очень сильно нагружают сервер. Если на карте есть несколько таких домов, с потолком из проводов сервер начинает лагать. Сложные энергосети - большая проблема. Для поиска и устранения сложных энергосетей даже предусмотрена команда: /ic2 debug DumpLargeGrids . Если лампы нельзя будет ставить как блок, то и причина создавать сетки из проводов пропадёт.

    6. Добавить конфиг, ограничивающий максимальную длину провода (например, запрещающий ставить блок провода, если его длина будет >100 блоков). Причина такая же, как в пункте №5 - ограничить максимальную сложность энергосетей, чтобы обнаружив снижение TPS модераторам не приходилось писать /ic2 debug DumpLargeGrids , летать по миру и разрушать особо сложные энергосети. Такой фикс я сам не делал, поскольку это сложно: нужно будет программировать что-то вроде трёхмерного волнового алгоритма и запускать его при установке провода для проверки его длины. Однако профит очевиден: необходимость следить за энергосетями отпадёт.

    7. Исправить баг IC2: Чужой торговый аппарат, энергообменный аппарат и сейф невозможно сломать если они в твоём привате. Например, если два друга живут в одном привате, а потом один из них ушёл. Есть только один способ разрушить чужой торговый аппарат: снять его гравитулом из мода Gravitation Suite. Гаечные ключи из IC2 и никакие кирки снять такой механизм не могут. А сейф даже гравитулом не снимается. Я сделал такой фикс: если поставить блок красного камня над этими механизмами, то механизм под ним заменяется на воздух. Но лучше сделать более естественный фикс, просто разрешить ломать чужие механизмы в своём регионе (но не открывать сейф).

    8. Далее сомнительный конфиг, в его необходимости я сам сомневаюсь: Запретить взрывать динамитные шашки, липкие динамитные шашки, ванильный динамит, промышленный динамит, ядерную бомбу близко к спауну или над землёй (на высоте >= 63). Чтобы не портился ландшафт. У всех этих взрывалок (кроме ванильного динамита) есть ивенты, поэтому их можно разрешить (что я и сделал).

    9. Ещё сомнительный конфиг: Запретить ставить продвинутую буровую установку над землёй (на высоте >= 63). Чтобы не образовывалось огромных дыр, не портился ландшафт.

    10. Добавить фикс, запрещающий с помощью релокатора ставить точку телепортации в чужом привате. Было много прецедентов: гриферы ставили точку релокатора в чужих домах, выпивали зелье невидимости, а затем телепортировались в чужой дом и убивали игроков, забирая дроп. Поджидали именно момента, когда игрок что-то крафтит, тогда ценностей падало особенно много. Игроки не чувствовали себя в безопасности даже в своём доме, а это, имхо, недопустимо. А грифер, пройдясь таким образом по десятку домов, набирал себе большое количество ценных ресурсов, можно вообще в шахту не ходить. Однако нужно разрешить телепортацию ИЗ чужих приватов, чтобы можно было телепортироваться, например, со спауна. Релокатор - очень весёлая штука и игрокам желательно его оставить, но из-за гриферов раньше приходилось совсем запрещать его.

    11. Добавить фикс, запрещающий ставить релокатором Портал (в виде сияющего шара) в чужом привате и на свободной территории. Способ гриферства прост до безобразия: грифер забирался на высокий столб из земли, ставил на его вершину точку-приёмник (куда будут телепортироваться игроки) для портала, затем убирал столб. Далее сам портал оставалось поставить в каком-нибудь людном месте (например, прямо на спаун!). Игроки, коснувшиеся такого шара-портала телепортировались на большую высоту (где был столб), падали и разбивались. А грифер стоял внизу и собирал дроп. Такой фикс у меня сделать не получилось, у себя на сервере я совсем запретил режим "портал" для релокатора, хотя штука очень весёлая.

    12. Исправить баг с гравитационным нагрудником. Суть: можно летать без него. Инструкция по воспроизведению: 1. Одеть гравитационный нагрудник. 2. Взлететь, нажав кнопку "Gravi Fly Key". 3. Снять гравитационный нагрудник. Баг, по-сути, совсем безобидный, но всех жутко бесят летающие по миру игроки без брони. Новички постоянно жалуются на якобы читерство. Ну и меня тоже это напрягало, поэтому пришлось совсем запретить гравитационный нагрудник, а его жалко. Пофиксить сам не смог.

    Надеюсь, общественность поддержит.
     
    Последнее редактирование: 10 мар 2017
  20. xacx

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

    Баллы:
    66
    Имя в Minecraft:
    xacx
    А можно испытать? и + к этим фиксам другие есть?
     

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