- Баллы
- 173
Значит скоро выйдет оптимизированная версия?Сейчас сделал стресс-тест для WorldGuard (10000 BlockBreakEvent в тик). Результаты очень удивили (на эти методы я бы подумал в последнюю очередь): https://yadi.sk/i/qsbwrPJbkbyfD
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Значит скоро выйдет оптимизированная версия?Сейчас сделал стресс-тест для WorldGuard (10000 BlockBreakEvent в тик). Результаты очень удивили (на эти методы я бы подумал в последнюю очередь): https://yadi.sk/i/qsbwrPJbkbyfD
Я постараюсь найти способ оптимизации ядра (судя по результатам, дело именно в нём, зря я плохо думал про WG), но ничего не обещаю.Значит скоро выйдет оптимизированная версия?
Проверьте наличие краша на последней версии ивентов.Сервер крашнулся, когда один из игроков стал ломать свои плоскости формирования и истребления ваджрой
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)
А если проверять приваты, минуя WG, считывая файл приватов? Или будет только хуже?Проверьте наличие краша на последней версии ивентов.
Посмотрел я ядро и WorldGuard. Боюсь, что оптимизировать почти нечего. Большинство лагов вполне естественно. Разве что, можно слегка ускорить сравнение приватов и закэшировать некоторые данные, но это даст мизерный прирост производительности.
А если проверять приваты, минуя WG, считывая файл приватов? Или будет только хуже?
1. Но ведь WG читает этот файл и обрабывает кучу всего, что с этим связано, в том числе просто перемещение игрока. Ничего не лагает. Не знаю, как это там реализовано, но скорее всего, файл сначала грузится в память. Так вот почему бы не сделать так?
- Это будет в разы медленнее.
- Если просто проверять наличие приватов, игнорируя флаги, настройки WG и прочее, то производительность повысится, но качество работы будет отвратительное.
- Как вариант - можно поискать более быструю альтернативу WorldGuard.
Есть система "Быстрых ивентов" там проверяется только наличие привата и флаг пвп.1. Но ведь WG читает этот файл и обрабывает кучу всего, что с этим связано, в том числе просто перемещение игрока. Ничего не лагает. Не знаю, как это там реализовано, но скорее всего, файл сначала грузится в память. Так вот почему бы не сделать так?
2. Из флагов нужен только флаг на бессмертие и пвп, всё остальное - проверка, вписан ли владелец в приват. И всё это можно взять опять же из файла. И настройки WG, кстати тоже
3. Я думаю, очень многих такой вариант не устроит да и сам по себе это не выход, если уж дело в ядре в том числе
И насколько они быстрые? Я пока что не тестилЕсть система "Быстрых ивентов" там проверяется только наличие привата и флаг пвп.
Здесь уже не помочь.Расскажите дураку...
Я их не тестировал и никогда не буду тестировать, так что не рекомендую их применять.И насколько они быстрые? Я пока что не тестил
Тестировал, часто сервер падал и были проблемы с тем же RailCraft, когда ивенты на жидкости "клали" (ложили) сервер на лопатки, но и билдкрафт это чудным образом делал.И насколько они быстрые? Я пока что не тестил
Тогда остаётся только это:Тестировал, часто сервер падал и были проблемы с тем же RailCraft, когда ивенты на жидкости "клали" (ложили) сервер на лопатки, но и билдкрафт это чудным образом делал.
1. Но ведь WG читает этот файл и обрабывает кучу всего, что с этим связано, в том числе просто перемещение игрока. Ничего не лагает. Не знаю, как это там реализовано, но скорее всего, файл сначала грузится в память. Так вот почему бы не сделать так?
2. Из флагов нужен только флаг на бессмертие и пвп, всё остальное - проверка, вписан ли владелец в приват. И всё это можно взять опять же из файла. И настройки WG, кстати тоже
Тут уж вы сами ищите исполнителя. Я такими костылями заниматься не буду.Тогда остаётся только это:
Поставь тогда вообще чистые моды, без ивентов. Лол.Хм. Вся эта радость ругается на Blockbreakevent. То есть, я так понимаю. WG проверяет право данных механизмов вообще ломать что-то на территории привата.
Возможно ли просто обойти проверку blockbreakevent, чтобы данный эвент вообще не вызывался при работе всяких мультиферм и помп (всего, что умеет ломать блоки)?. Я понимаю, что в таком случае механизмы игроков начнут игнорить приваты, но на конкретно моем сервере я готов на это пойти.
Если на субботу не будет заказов, то обновлю.gamerforEA
а Вы не планируете обновить версию RC до 9.8.0.0 ?
у них сделана попытка профиксить
" FIX: Fixed IFluidContainer dupe bugs (I hope). "
Надеюсь они убрали этим самым крайне неприятный дюп.