Как отправить ItemStack в чат?

Snowmaze

Участник
Пользователь
Баллы
36
У меня есть ItemStack и мне надо отправить его после текста. Как это сделать?
Я пытался найти код в инете и нашёл, но почему-то не импорит CraftItemStack. Версия 1.12.2
upload_2019-6-15_1-4-11.png
upload_2019-6-15_1-6-32.png
 
Тут нет смысла в рефлекии, обфнутый метод меняется от версии к версии. Все равно пойдете переписывать. Да и прямой вызов быстрее.
 
Ну так челик не сделает этого, он сделает все по тутору без кеширования и с этим уе*ищным юзлесс классом RefletionUtil, который почему-то все дауны везде суют. Надо делать по-нормальному, кэшируя и через MethodHandle, он намного быстрее.
Несколько наносекунд прироста производительности не имеют смысла никакого.
 
Несколько наносекунд прироста производительности не имеют смысла никакого.
Ну бред себе внушил про неск наносекунд) Каждый раз доставать Method/Field это тебе не неск наносекунд, + каждый вызов будет делать проверку доступа + каждый метод через N вызовов будет генерировать класс в рантайме для прямого вызова, а генерация класса в рантайме оч затратная операция по сравнению с вызовами метода рефлексией, так что если методов много, то это довольно не оч. В любом случае MethodHandle удобней и быстрее старой рефлексии.

Тут нет смысла в рефлекии, обфнутый метод меняется от версии к версии. Все равно пойдете переписывать. Да и прямой вызов быстрее.
По поводу меняющихся методов - можно делать вызов разных методов в зависимости от версии.
 
Ну бред себе внушил про неск наносекунд) Каждый раз доставать Method/Field это тебе не неск наносекунд
Конечно же имеется ввиду, что доставаться они будут только один раз, использоваться - множество.
И здесь рефлекция проигрывает не меньше чем в 5 раз в среднем (судя по бенчмаркам из разных сурсов).

Если один вызов из рефлекции будет занимать 10 наносекунд, а вызов из хендла - 3 наносекунды, при этом учитывай сколько здесь будет будет событий чтобы отображать в чат вещь? Допустим 100 раз в секунду. Вместо 1000 наносекунд мы потратим 300 за секунду, а это 0.0007 ms. Ну что? Не будет теперь лагать сервер? Здесь только обработка события будет в разы больше занимать.

Потому как бы сама идея говорить что юзай 100500 директ NMS классов для разных версий вместо одной рефлекции бредовая, когда не идет речи о сильно интенсивных вызовах и конечно же не инициализации Method / Field etc каждый раз.

Офк я не осуждаю чтобы кто то юзал MethodHandle вместо рефлекции, а лишь хочу показать суть необъективной оценки прироста производительности.
 
Последнее редактирование:
Конечно же имеется ввиду, что доставаться они будут только один раз, использоваться - множество.
И здесь рефлекция проигрывает не меньше чем в 5 раз в среднем (судя по бенчмаркам из разных сурсов).

Если один вызов из рефлекции будет занимать 10 наносекунд, а вызов из хендла - 3 наносекунды, при этом учитывай сколько здесь будет будет событий чтобы отображать в чат вещь? Допустим 100 раз в секунду. Вместо 1000 наносекунд мы потратим 300 за секунду, а это 0.0007 ms. Ну что? Не будет теперь лагать сервер? Здесь только обработка события будет в разы больше занимать.

Потому как бы сама идея говорить что юзай 100500 директ NMS классов для разных версий вместо одной рефлекции бредовая, когда не идет речи о сильно интенсивных вызовах и конечно же не инициализации Method / Field etc каждый раз.

Офк я не осуждаю чтобы кто то юзал MethodHandle вместо рефлекции, а лишь хочу показать суть необъективной оценки прироста производительности.
Ну так рефлексия сосет и по удобности и по произволительности. Дальше ищи опровдания тому, что застрял на java 6. Удачи вручную переопределять accessible и вручную снимать final с полей.
 
Последнее редактирование:
С таким же успехом меняется импорт под новую версию, если уже в сурсы залез.
Есть кейсы где нужна мультиверсионная поддержка, а писать реализации для каждой версии не оч хочеца, а так для своего прямые вызовы из нмс дергать и збс.
 
Последнее редактирование:
Последнее редактирование:
Не страдаю таким. Да и это все делается генерацией прокси классов на асме, по нормальному. Так скорость не теряется.
Рефлексия сама генерирует классы если вызовы частые, но операция генерации класса в рантайме оч затратная, как я уже писал. Прокси классы собсна лучший выход да.
 
Рефлексия сама генерирует классы если вызовы частые, но операция генерации класса в рантайме оч затратная, как я уже писал. Прокси классы собсна лучший выход да.
Как не пытайся, не добиться скорости как у прямого вызова.
 
Назад
Верх