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

Спасибо. Фикс готов. Опубликую вместе с остальными обновлениями 1 марта.
 
Industrial Craft 2, багрепорт для gamerforEA:

Суть:
Если перегретый ядерный реактор находится рядом с приватом, то он может разрушать блоки внутри этого привата. Блоки разрушаются в области 5*5*5 с реактором в центре, реактор заменяет их на блоки огня и лавы. Гриферы наловчились с помощью этого бага дырявить стены в чужих домах и грабить сундуки, которые стоят слишком близко к краю региона.

Инструкция по воспроизведению бага:
1. Поставить реактор.
2. Положить в реактор счетверённый урановый топливный стержень.
3. Включить реактор, подав на него редстоун-сигнал.
4. Дождаться, когда ядро реактора нагреется до 90%
5. Вынуть топливный стержень из реактора, чтобы он не взорвался.

Как исправить:
Проблема в файле TileEntityNuclearReactorElectric.java в функции calculateHeatEffects().
В ней без всяких проверок вызываются функции this.worldObj.setBlock(), заменяющие блоки в мире на блоки огня и лавы. Нужно добавить ивенты к функциям this.worldObj.setBlock()
Схожую проблему нашел и в Forestry, вчера поправил. Скоро тоже скину описание, но там обычный взрыв цеплялся к wg и циклично выполнялся, нагрузка на сервере была 92% только от этой функции.
 
Заметил, что трубы BuildCraft (особенно жидкостные) сильно нагружают сеть. Если их на карте много, то аж выкидывает с сервера. Хочу отключить анимацию трубам.

Какую бы строчку кода мне закомментировать, чтобы сервер не слал клиентам информацию об изменении внешнего вида трубы? Чтобы трубы работали как положено, но жидкостей и предметов, которые по трубам текут видно не было. Может быть знающие люди подскажут...

Сижу, перебираю на GitHub-е код BuildCraft, но пока не нашел...
 
Схожую проблему нашел и в Forestry, вчера поправил. Скоро тоже скину описание, но там обычный взрыв цеплялся к wg и циклично выполнялся, нагрузка на сервере была 92% только от этой функции.
Можно подробней?
Я просто нашел что какой то иверт уходит в цикл а какой не могу найти ... Понял это по pex toggle debug.
 
Заметил, что трубы BuildCraft (особенно жидкостные) сильно нагружают сеть. Если их на карте много, то аж выкидывает с сервера. Хочу отключить анимацию трубам.

Какую бы строчку кода мне закомментировать, чтобы сервер не слал клиентам информацию об изменении внешнего вида трубы? Чтобы трубы работали как положено, но жидкостей и предметов, которые по трубам текут видно не было. Может быть знающие люди подскажут...

Сижу, перебираю на GitHub-е код BuildCraft, но пока не нашел...
используйте профайлер чтобы найти тот участок кода который создаёт нагрузку.
P.S. buildcraft.transport.render.PipeItemRenderer
Можно подробней?
Я просто нашел что какой то иверт уходит в цикл а какой не могу найти ... Понял это по pex toggle debug.
У меня была похожая проблема, снес Essentials antibuild и проблем нет больше года.
 
используйте профайлер чтобы найти тот участок кода который создаёт нагрузку.
P.S. buildcraft.transport.render.PipeItemRenderer

У меня была похожая проблема, снес Essentials antibuild и проблем нет больше года.
нету подобного плагина
 
Можно подробней?
Я просто нашел что какой то иверт уходит в цикл а какой не могу найти ... Понял это по pex toggle debug.
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)
 
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. Дюп эссенции с Проклятым лезвием духа и Пьедесталом некроманта.
 
Последнее редактирование:
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.10.Х будут моды?
IC2 уже завезли, хотя бы его
 
Пока не вижу в этом необходимости. Серверов с модами на 1.10.2 слишком мало.
 
BuildCraft. Багрепорт для gamerforEA.

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

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

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

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

2017-03-05_19.23.17.png

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

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

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

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

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

Посмотреть вложение 45419

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

Как фиксить?
Я даже не знаю. Есть идея: запускать этот тройной цикл только один раз при установке карьера. Вряд ли найдутся глупцы, которые будут создавать приват внутри рамки чужого карьера. Поэтому нет острой необходимости постоянно проверять блоки, которые находятся внутри рамки.
По таким причинам у шевчика были кастомные ивенты, а не бакитовские. А так каждый плагин что слушает ивент реагирует, не только wg но и такие как есс антибуилд ncp модифеворлд и тп.
 
По таким причинам у шевчика были кастомные ивенты, а не бакитовские. А так каждый плагин что слушает ивент реагирует, не только wg но и такие как есс антибуилд ncp модифеворлд и тп.
EventHelper позволяет отсылать ивенты не всем плагинам, а только необходимым (по-умолчанию он работает только с WG).
 
BuildCraft. Багрепорт для gamerforEA.

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

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

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

Посмотреть вложение 45419

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

Как фиксить?
Я даже не знаю. Есть идея: запускать этот тройной цикл только один раз при установке карьера. Вряд ли найдутся глупцы, которые будут создавать приват внутри рамки чужого карьера. Поэтому нет острой необходимости постоянно проверять блоки, которые находятся внутри рамки.
Фиксится кешированием в WorldGuard
 
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 решит данную проблему (и вообще сильно повысит производительность ивентов).
 
Назад
Верх