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

Значит скоро выйдет оптимизированная версия?
Я постараюсь найти способ оптимизации ядра (судя по результатам, дело именно в нём, зря я плохо думал про WG), но ничего не обещаю.
UPD. Провёл тест без прав оператора. Результаты стали более подробными.
 
Последнее редактирование:
Если нужна информация с живого сервера со средним онлайном в 40 человек - обращайтесь.
Данная проблема с лагами сильно портит мне и игрокам жизнь.
 
Сервер крашнулся, когда один из игроков стал ломать свои плоскости формирования и истребления ваджрой
Time: 11/21/15 2:39 PM
Description: Colliding entity with block

java.lang.NullPointerException: Colliding entity with block
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:53)
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:41)
at appeng.util.Platform.isWrench(Platform.java:1008)
at appeng.parts.PartPlacement.place(PartPlacement.java:85)
at appeng.core.api.ApiPart.placeBus(ApiPart.java:343)
at appeng.items.parts.ItemMultiPart.func_77648_a(ItemMultiPart.java:188)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:486)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:86)
at appeng.me.storage.MEPassThrough.injectItems(MEPassThrough.java:57)
at appeng.me.storage.MEInventoryHandler.injectItems(MEInventoryHandler.java:113)
at appeng.me.storage.NetworkInventoryHandler.injectItems(NetworkInventoryHandler.java:120)
at appeng.api.storage.MEMonitorHandler.injectItems(MEMonitorHandler.java:86)
at appeng.util.Platform.poweredInsert(Platform.java:1515)
at appeng.parts.automation.PartAnnihilationPlane.storeItemStack(PartAnnihilationPlane.java:303)
at appeng.parts.automation.PartAnnihilationPlane.storeEntityItem(PartAnnihilationPlane.java:286)
at appeng.parts.automation.PartAnnihilationPlane.onEntityCollision(PartAnnihilationPlane.java:266)
at appeng.parts.CableBusContainer.onEntityCollision(CableBusContainer.java:792)
at appeng.block.networking.BlockCableBus.func_149670_a(BlockCableBus.java:149)
at net.minecraft.entity.Entity.func_145775_I(Entity.java:1062)
at net.minecraft.entity.Entity.func_70091_d(Entity.java:618)
at net.minecraft.entity.item.EntityItem.func_70071_h_(EntityItem.java:125)
at net.minecraft.world.World.func_72866_a(World.java:2643)
at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:832)
at net.minecraft.world.World.func_72870_g(World.java:2596)
at net.minecraft.world.World.func_72939_s(World.java:2409)
at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:664)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:943)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
at java.lang.Thread.run(Thread.java:745)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:53)
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:41)
at appeng.util.Platform.isWrench(Platform.java:1008)
at appeng.parts.PartPlacement.place(PartPlacement.java:85)
at appeng.core.api.ApiPart.placeBus(ApiPart.java:343)
at appeng.items.parts.ItemMultiPart.func_77648_a(ItemMultiPart.java:188)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:486)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:86)
at appeng.me.storage.MEPassThrough.injectItems(MEPassThrough.java:57)
at appeng.me.storage.MEInventoryHandler.injectItems(MEInventoryHandler.java:113)
at appeng.me.storage.NetworkInventoryHandler.injectItems(NetworkInventoryHandler.java:120)
at appeng.api.storage.MEMonitorHandler.injectItems(MEMonitorHandler.java:86)
at appeng.util.Platform.poweredInsert(Platform.java:1515)
at appeng.parts.automation.PartAnnihilationPlane.storeItemStack(PartAnnihilationPlane.java:303)
at appeng.parts.automation.PartAnnihilationPlane.storeEntityItem(PartAnnihilationPlane.java:286)
at appeng.parts.automation.PartAnnihilationPlane.onEntityCollision(PartAnnihilationPlane.java:266)
at appeng.parts.CableBusContainer.onEntityCollision(CableBusContainer.java:792)
at appeng.block.networking.BlockCableBus.func_149670_a(BlockCableBus.java:149)

-- Block being collided with --
Details:
Block type: ID #253 (tile.appliedenergistics2.BlockCableBus // appeng.block.networking.BlockCableBus)
Block data value: 0 / 0x0 / 0b0000
Block location: World: (-2327,52,-704), Chunk: (at 9,3,0 in -146,-44; contains blocks -2336,0,-704 to -2321,255,-689), Region: (-5,-2; contains chunks -160,-64 to -129,-33, blocks -2560,0,-1024 to -2049,255,-513)
Stacktrace:
at net.minecraft.entity.Entity.func_145775_I(Entity.java:1062)

-- Entity being checked for collision --
Details:
Entity Type: Item (net.minecraft.entity.item.EntityItem)
Entity ID: 327395
Entity Name: item.item.appliedenergistics2.ItemPart.CableGlass
Entity's Exact location: -2326.90, 53.12, -703.49
Entity's Block location: World: (-2327,53,-704), Chunk: (at 9,3,0 in -146,-44; contains blocks -2336,0,-704 to -2321,255,-689), Region: (-5,-2; contains chunks -160,-64 to -129,-33, blocks -2560,0,-1024 to -2049,255,-513)
Entity's Momentum: -0.01, -0.04, 0.01
Stacktrace:
at net.minecraft.entity.Entity.func_70091_d(Entity.java:618)
at net.minecraft.entity.item.EntityItem.func_70071_h_(EntityItem.java:125)
at net.minecraft.world.World.func_72866_a(World.java:2643)
at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:832)
at net.minecraft.world.World.func_72870_g(World.java:2596)

-- Entity being ticked --
Details:
Entity Type: Item (net.minecraft.entity.item.EntityItem)
Entity ID: 327395
Entity Name: item.item.appliedenergistics2.ItemPart.CableGlass
Entity's Exact location: -2326.90, 53.12, -703.49
Entity's Block location: World: (-2327,53,-704), Chunk: (at 9,3,0 in -146,-44; contains blocks -2336,0,-704 to -2321,255,-689), Region: (-5,-2; contains chunks -160,-64 to -129,-33, blocks -2560,0,-1024 to -2049,255,-513)
Entity's Momentum: -0.01, -0.04, 0.01
Stacktrace:
at net.minecraft.world.World.func_72939_s(World.java:2409)
at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:664)
 
Сервер крашнулся, когда один из игроков стал ломать свои плоскости формирования и истребления ваджрой
Time: 11/21/15 2:39 PM
Description: Colliding entity with block

java.lang.NullPointerException: Colliding entity with block
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:53)
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:41)
at appeng.util.Platform.isWrench(Platform.java:1008)
at appeng.parts.PartPlacement.place(PartPlacement.java:85)
at appeng.core.api.ApiPart.placeBus(ApiPart.java:343)
at appeng.items.parts.ItemMultiPart.func_77648_a(ItemMultiPart.java:188)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:486)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:86)
at appeng.me.storage.MEPassThrough.injectItems(MEPassThrough.java:57)
at appeng.me.storage.MEInventoryHandler.injectItems(MEInventoryHandler.java:113)
at appeng.me.storage.NetworkInventoryHandler.injectItems(NetworkInventoryHandler.java:120)
at appeng.api.storage.MEMonitorHandler.injectItems(MEMonitorHandler.java:86)
at appeng.util.Platform.poweredInsert(Platform.java:1515)
at appeng.parts.automation.PartAnnihilationPlane.storeItemStack(PartAnnihilationPlane.java:303)
at appeng.parts.automation.PartAnnihilationPlane.storeEntityItem(PartAnnihilationPlane.java:286)
at appeng.parts.automation.PartAnnihilationPlane.onEntityCollision(PartAnnihilationPlane.java:266)
at appeng.parts.CableBusContainer.onEntityCollision(CableBusContainer.java:792)
at appeng.block.networking.BlockCableBus.func_149670_a(BlockCableBus.java:149)
at net.minecraft.entity.Entity.func_145775_I(Entity.java:1062)
at net.minecraft.entity.Entity.func_70091_d(Entity.java:618)
at net.minecraft.entity.item.EntityItem.func_70071_h_(EntityItem.java:125)
at net.minecraft.world.World.func_72866_a(World.java:2643)
at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:832)
at net.minecraft.world.World.func_72870_g(World.java:2596)
at net.minecraft.world.World.func_72939_s(World.java:2409)
at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:664)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:943)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:430)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658)
at java.lang.Thread.run(Thread.java:745)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:53)
at com.gamerforea.ae.FakePlayerUtils.cantBreak(FakePlayerUtils.java:41)
at appeng.util.Platform.isWrench(Platform.java:1008)
at appeng.parts.PartPlacement.place(PartPlacement.java:85)
at appeng.core.api.ApiPart.placeBus(ApiPart.java:343)
at appeng.items.parts.ItemMultiPart.func_77648_a(ItemMultiPart.java:188)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:486)
at appeng.parts.automation.PartFormationPlane.injectItems(PartFormationPlane.java:86)
at appeng.me.storage.MEPassThrough.injectItems(MEPassThrough.java:57)
at appeng.me.storage.MEInventoryHandler.injectItems(MEInventoryHandler.java:113)
at appeng.me.storage.NetworkInventoryHandler.injectItems(NetworkInventoryHandler.java:120)
at appeng.api.storage.MEMonitorHandler.injectItems(MEMonitorHandler.java:86)
at appeng.util.Platform.poweredInsert(Platform.java:1515)
at appeng.parts.automation.PartAnnihilationPlane.storeItemStack(PartAnnihilationPlane.java:303)
at appeng.parts.automation.PartAnnihilationPlane.storeEntityItem(PartAnnihilationPlane.java:286)
at appeng.parts.automation.PartAnnihilationPlane.onEntityCollision(PartAnnihilationPlane.java:266)
at appeng.parts.CableBusContainer.onEntityCollision(CableBusContainer.java:792)
at appeng.block.networking.BlockCableBus.func_149670_a(BlockCableBus.java:149)

-- Block being collided with --
Details:
Block type: ID #253 (tile.appliedenergistics2.BlockCableBus // appeng.block.networking.BlockCableBus)
Block data value: 0 / 0x0 / 0b0000
Block location: World: (-2327,52,-704), Chunk: (at 9,3,0 in -146,-44; contains blocks -2336,0,-704 to -2321,255,-689), Region: (-5,-2; contains chunks -160,-64 to -129,-33, blocks -2560,0,-1024 to -2049,255,-513)
Stacktrace:
at net.minecraft.entity.Entity.func_145775_I(Entity.java:1062)

-- Entity being checked for collision --
Details:
Entity Type: Item (net.minecraft.entity.item.EntityItem)
Entity ID: 327395
Entity Name: item.item.appliedenergistics2.ItemPart.CableGlass
Entity's Exact location: -2326.90, 53.12, -703.49
Entity's Block location: World: (-2327,53,-704), Chunk: (at 9,3,0 in -146,-44; contains blocks -2336,0,-704 to -2321,255,-689), Region: (-5,-2; contains chunks -160,-64 to -129,-33, blocks -2560,0,-1024 to -2049,255,-513)
Entity's Momentum: -0.01, -0.04, 0.01
Stacktrace:
at net.minecraft.entity.Entity.func_70091_d(Entity.java:618)
at net.minecraft.entity.item.EntityItem.func_70071_h_(EntityItem.java:125)
at net.minecraft.world.World.func_72866_a(World.java:2643)
at net.minecraft.world.WorldServer.func_72866_a(WorldServer.java:832)
at net.minecraft.world.World.func_72870_g(World.java:2596)

-- Entity being ticked --
Details:
Entity Type: Item (net.minecraft.entity.item.EntityItem)
Entity ID: 327395
Entity Name: item.item.appliedenergistics2.ItemPart.CableGlass
Entity's Exact location: -2326.90, 53.12, -703.49
Entity's Block location: World: (-2327,53,-704), Chunk: (at 9,3,0 in -146,-44; contains blocks -2336,0,-704 to -2321,255,-689), Region: (-5,-2; contains chunks -160,-64 to -129,-33, blocks -2560,0,-1024 to -2049,255,-513)
Entity's Momentum: -0.01, -0.04, 0.01
Stacktrace:
at net.minecraft.world.World.func_72939_s(World.java:2409)
at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:664)
Проверьте наличие краша на последней версии ивентов.
Посмотрел я ядро и WorldGuard. Боюсь, что оптимизировать почти нечего. Большинство лагов вполне естественно. Разве что, можно слегка ускорить сравнение приватов и закэшировать некоторые данные, но это даст мизерный прирост производительности.
 
Проверьте наличие краша на последней версии ивентов.
Посмотрел я ядро и WorldGuard. Боюсь, что оптимизировать почти нечего. Большинство лагов вполне естественно. Разве что, можно слегка ускорить сравнение приватов и закэшировать некоторые данные, но это даст мизерный прирост производительности.
А если проверять приваты, минуя WG, считывая файл приватов? Или будет только хуже?
 
А если проверять приваты, минуя WG, считывая файл приватов? Или будет только хуже?
  1. Это будет в разы медленнее.
  2. Если просто проверять наличие приватов, игнорируя флаги, настройки WG и прочее, то производительность повысится, но качество работы будет отвратительное.
  3. Как вариант - можно поискать более быструю альтернативу WorldGuard.
 
Здрасте. Честно читал страницы до 20-ой, но никто не задает подобных вопросов. Все понимают о чем речь.))) Вумные все)))

Как применять эти ивенты? Скачал и что дальше? Куда то положить? Прописать какие то команды? Что делать то?

Расскажите дураку...
 
  1. Это будет в разы медленнее.
  2. Если просто проверять наличие приватов, игнорируя флаги, настройки WG и прочее, то производительность повысится, но качество работы будет отвратительное.
  3. Как вариант - можно поискать более быструю альтернативу WorldGuard.
1. Но ведь WG читает этот файл и обрабывает кучу всего, что с этим связано, в том числе просто перемещение игрока. Ничего не лагает. Не знаю, как это там реализовано, но скорее всего, файл сначала грузится в память. Так вот почему бы не сделать так?

2. Из флагов нужен только флаг на бессмертие и пвп, всё остальное - проверка, вписан ли владелец в приват. И всё это можно взять опять же из файла. И настройки WG, кстати тоже

3. Я думаю, очень многих такой вариант не устроит да и сам по себе это не выход, если уж дело в ядре в том числе
 
1. Но ведь WG читает этот файл и обрабывает кучу всего, что с этим связано, в том числе просто перемещение игрока. Ничего не лагает. Не знаю, как это там реализовано, но скорее всего, файл сначала грузится в память. Так вот почему бы не сделать так?

2. Из флагов нужен только флаг на бессмертие и пвп, всё остальное - проверка, вписан ли владелец в приват. И всё это можно взять опять же из файла. И настройки WG, кстати тоже

3. Я думаю, очень многих такой вариант не устроит да и сам по себе это не выход, если уж дело в ядре в том числе
Есть система "Быстрых ивентов" там проверяется только наличие привата и флаг пвп.
 
Расскажите дураку...
Здесь уже не помочь.
Дурак - это диагноз. Смирись и живи.
Для всех остальных, все написано в первом сообщении под спойлером "ВНИМАНИЕ" в пункте №4.
 
И насколько они быстрые? Я пока что не тестил
Тестировал, часто сервер падал и были проблемы с тем же RailCraft, когда ивенты на жидкости "клали" (ложили) сервер на лопатки, но и билдкрафт это чудным образом делал.
 
Тестировал, часто сервер падал и были проблемы с тем же RailCraft, когда ивенты на жидкости "клали" (ложили) сервер на лопатки, но и билдкрафт это чудным образом делал.
Тогда остаётся только это:
1. Но ведь WG читает этот файл и обрабывает кучу всего, что с этим связано, в том числе просто перемещение игрока. Ничего не лагает. Не знаю, как это там реализовано, но скорее всего, файл сначала грузится в память. Так вот почему бы не сделать так?

2. Из флагов нужен только флаг на бессмертие и пвп, всё остальное - проверка, вписан ли владелец в приват. И всё это можно взять опять же из файла. И настройки WG, кстати тоже
 
Хм. Вся эта радость ругается на Blockbreakevent. То есть, я так понимаю. WG проверяет право данных механизмов вообще ломать что-то на территории привата.
Возможно ли просто обойти проверку blockbreakevent, чтобы данный эвент вообще не вызывался при работе всяких мультиферм и помп (всего, что умеет ломать блоки)?. Я понимаю, что в таком случае механизмы игроков начнут игнорить приваты, но на конкретно моем сервере я готов на это пойти.
 
Хм. Вся эта радость ругается на Blockbreakevent. То есть, я так понимаю. WG проверяет право данных механизмов вообще ломать что-то на территории привата.
Возможно ли просто обойти проверку blockbreakevent, чтобы данный эвент вообще не вызывался при работе всяких мультиферм и помп (всего, что умеет ломать блоки)?. Я понимаю, что в таком случае механизмы игроков начнут игнорить приваты, но на конкретно моем сервере я готов на это пойти.
Поставь тогда вообще чистые моды, без ивентов. Лол.
 
gamerforEA
а Вы не планируете обновить версию RC до 9.8.0.0 ?
у них сделана попытка профиксить
" FIX: Fixed IFluidContainer dupe bugs (I hope). "
Надеюсь они убрали этим самым крайне неприятный дюп.
 
gamerforEA
а Вы не планируете обновить версию RC до 9.8.0.0 ?
у них сделана попытка профиксить
" FIX: Fixed IFluidContainer dupe bugs (I hope). "
Надеюсь они убрали этим самым крайне неприятный дюп.
Если на субботу не будет заказов, то обновлю.
 
Назад
Верх Низ