Позиция курсора сбрасывается при предварительном закрытии инвентаря перед открытием нового, ну или иногда при смене типа инвентаря. Тут вопрос стоит в том, что открытие нового инвентаря подразумевает обработку данных в целом обьеме для установки конкретной информации конкретному элементу + сразу вырастает нагрузка на сеть. Такой подход для аукциона можно считать крайне не эффективным.
итого:
В каком месте нужно использовать создание нового инвентаря? При смене шаблона, например при переходе из страницы лотов на страницу "мои лоты"
в каком месте это крайне херовая затея? при скролле страниц лотов, при смене категорий
Я несколько лет как создавал меню с помощью InvUI, в том числе и очень высоконагруженные, на серверах с онлайном несколько сотен игроков и выше. Туда входили и аукционы.
InvUI по своей натуре создаёт новый инвентарь баккит каждый раз, когда игрок открывает гуи (там есть разделение между гуи и окном, окно это и есть инвентарь):
Авторизуйтесь для просмотра ссылок.
Авторизуйтесь для просмотра ссылок.
И ни разу я даже не увидел строчек о создании инвентаря в репортах профайлера типа спарк. Нагрузку может создавать процесс заполнения самого меню (например, если в нём много кнопок, каждая кнопка рендерится заново, и у каждой сложные вычисления), но сам по себе Bukkit.createInventory абсолютно безвреден
Так что точно можно не париться по поводу создания нового инвентаря при взаимодействии (у меня они создаются при переходе в другое меню или обновлении страницы по какой-то причине, но не при переключении страниц - там остаётся исходный Window)
Нужно париться о том, что ты делаешь после между созданием инвентаря и показом его игроку
Скажем, если у тебя в меню по бокам есть стеклянные панели, они находятся в конфиге, и ты для каждого слота достаёшь секцию из конфига, создаёшь ItemStack, добавляешь цвета лору - вот это проблема. Тут лучше 1 раз создать ItemStack при запуске и просто ставить его везде
в каком месте это крайне херовая затея? (...) при смене категорий
Смена категорий это дорогая операция, если аукцион хоть сколько-нибудь большой. Предметы надо отфильтровать, например, из БД, и только потом показать. При такой схеме переусложнять свой код ради экономии пары наносекунд нет смысла, всё равно процесс небыстрый
Вот при переключении страниц есть смысл экономить - переключение дёргают быстро, да и предметы уже наверняка загружены в память, можно быстренько сменить страничку
--------
Но вообще, нет смысла особо копаться в таких низкоуровневых вопросах - это ничего не даст. Логичнее просто использовать нормальную библиотеку для гуи, где ты описываешь меню, а не копаешься с ванильными инвентарями. Я советую
Авторизуйтесь для просмотра ссылок.
, остальные библиотеки либо требуют очень много бойлерплейта, либо недостаточно функциональны