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

Бросание одного эвента занимает примерно 100мс. Всегда. Так что никакой разницы что один, что два бросить. И бросить эвент в конкретный плагин кстати будет быстрее чем всем.
Смотря где, в некоторых местах, где с блоком ничего не происходит блокбрейк бросать вообще не резонно, могут быть проблемы, вспоминаем дюпы с джобсом и ключами из ик2.
Единственное где может быть проблема - в getBukkitEntity, рефлексия штука достаточно медленная.
Рефлексию можно и не использовать, достаточно вместе с котлом собрать класс-мост, который будет напрямую обращаться к getBukkitEntity() или вообще к CraftEventFactory для нужного эвента.
 
@gamerforEA остальные моды на EventHelper будешь переводить? А то ставить и эвент хелпер и враппер не хочется.
 
Смотря где, в некоторых местах, где с блоком ничего не происходит блокбрейк бросать вообще не резонно, могут быть проблемы, вспоминаем дюпы с джобсом и ключами из ик2.

Рефлексию можно и не использовать, достаточно вместе с котлом собрать класс-мост, который будет напрямую обращаться к getBukkitEntity() или вообще к CraftEventFactory для нужного эвента.
Собрать напрямую класс мост с котлом та ещё задача, проще нагенерить немного байткода.
 
Собрать напрямую класс мост с котлом та ещё задача, проще нагенерить немного байткода.
Так же просто, как и собрать форг, ибо котел сейчас тоже самое. Если уж хочется выпендрится - можно вообще переделать среду разработки форга для котла, дабы все методы были изначально доступны.
 
Будет ли быстрее, если метод искать всего один раз, а потом только его вызывать, подставив нужные параметры?
Да, конечно.
Собрать напрямую класс мост с котлом та ещё задача, проще нагенерить немного байткода.
Идея с генерацией неплоха. Если не забуду, потом реализую.
Сейчас прогнал пару бенчмарков. После прогрева даже 300000 Reflection вызовов выполняются менее миллисекунды, так что прямой доступ к методу getBukkitEntity() бесполезен.
EventHelper обновлён до 1.3. Эта версия потребуется для ThaumCraft.
https://github.com/gamerforEA/EventHelper/releases/tag/1.3
 
Да, конечно.

Идея с генерацией неплоха. Если не забуду, потом реализую.
Сейчас прогнал пару бенчмарков. После прогрева даже 300000 Reflection вызовов выполняются менее миллисекунды, так что прямой доступ к методу getBukkitEntity() бесполезен.
EventHelper обновлён до 1.3. Эта версия потребуется для ThaumCraft.
https://github.com/gamerforEA/EventHelper/releases/tag/1.3
А ничего, что помимо этой рефлексии есть еще тысячи действий в один такт?) Опять пошла синтетика)
 
@gamerforEA обновите пожалуйста BuildCraft, очень много важных фиксов, особенно защита от json хакка выброса вещей
 
С обновлениями придётся подождать. У меня сейчас пара крупных заказов, так что времени нет.
 
[11:06:42] [Server thread/ERROR]: Could not load 'plugins/EventHelper.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:188) ~[JavaPluginLoader.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:133) [SimplePluginManager.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.java:320) [CraftServer.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
at net.minecraft.world.storage.SaveHandler.initBukkitData(SaveHandler.java:461) [ayq.class:?]
at net.minecraft.world.storage.SaveHandler.func_75757_d(SaveHandler.java:137) [ayq.class:?]
at net.minecraft.world.World.<init>(World.java:349) [ahb.class:?]
at net.minecraft.world.WorldServer.<init>(WorldServer.java:153) [mt.class:?]
at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:356) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:335) [lt.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:620) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.7.0_80]
Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml
... 11 more

Что может быть?
 
[11:06:42] [Server thread/ERROR]: Could not load 'plugins/EventHelper.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:188) ~[JavaPluginLoader.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:133) [SimplePluginManager.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.java:320) [CraftServer.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
at net.minecraft.world.storage.SaveHandler.initBukkitData(SaveHandler.java:461) [ayq.class:?]
at net.minecraft.world.storage.SaveHandler.func_75757_d(SaveHandler.java:137) [ayq.class:?]
at net.minecraft.world.World.<init>(World.java:349) [ahb.class:?]
at net.minecraft.world.WorldServer.<init>(WorldServer.java:153) [mt.class:?]
at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:356) [MinecraftServer.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:335) [lt.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:620) [MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.7.0_80]
Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml
... 11 more

Что может быть?

EventHelper.jar - надо поместить в папку Mods, а не в plugins!
 
@gamerforEA Манипулятор Энтропии из AppEnerg: если в привате юзать его по дереву, будет писать что его нельзя юзать в привате, но уголь будет даваться бесконечно пока кликать по блоку - дюп с ивентами
 
К сожалению, при установке гейтов на трубы BC они так и продолжают визуально превращаться в линзы. И отсутствует меню гейта при открытии.
http://i.imgur.com/NfcUbjN.png
При замене на сервере мода БС на официальный - проблема пропадает. Кто придумал как бороться?
 
@gamerforEA Манипулятор Энтропии из AppEnerg: если в привате юзать его по дереву, будет писать что его нельзя юзать в привате, но уголь будет даваться бесконечно пока кликать по блоку - дюп с ивентами
Данный дюп и без ивентов есть. Помагает его пофиксить MGR.
 
К сожалению, при установке гейтов на трубы BC они так и продолжают визуально превращаться в линзы. И отсутствует меню гейта при открытии.
http://i.imgur.com/NfcUbjN.png
При замене на сервере мода БС на официальный - проблема пропадает. Кто придумал как бороться?
Проблема во время сборки мода. Лечится просто: берём только изменённые классы и кидаем в чистый мод.
 
При работе заполнителя из BC в режиме заполнения (то есть устанавливает блоки) TPS дико проседает, при установке каждого блока задержка. Тайминги показывают, что виноват WG. Но при разрушении блоков такого нет (карьер, заполнитель в режиме очистки и т.д.)

В коде и при разрушении, и установке блока отправляется BlockBreakEvent. Думаю, дело в этом. Можете для установки блока отправлять BlockPlace? Это будет и корректнее, и, возможно, исправит проблему с лагами

Мне кажется, WG зависает, когда видит, что заполнитель пытается разрушить блок воздуха (или само ядро сервера впадает в ступор, хз)
А если владельца нет на сервере, то сервер сразу падает, как только какой-то прибор пытается сломать или поставить блок. Это с модом EventHelper. С плагином TPS просто падал до нуля, а сейчас вообще все игроки вылетают с надписью "Превышено время ожидания"
Версия Cauldron-MCPC-Plus version git-Cauldron-Reloaded-1.7.10-1.1343.01.0 (MC: 1.7.10)
 
Назад
Верх Низ