ХЗ куда кинуть информацию про гуи

will0376

Токсичная личность
2,072
55
584
Здрасте. я хз куда кинуть - кидаю сюды:
Давно(~ с прошлого года) мучался над тем, как открыть гуи по команде с сервера(либо пакетом на самом клиенте) - ибо при открытии пропадала мышь.
только что нашел выход - костыль тот еще, но выхода нет.
При помощи АТ снимаю приват с полей KeyBinding и через <классКнопки>.<поле кнопки> выставляю pressTime равным ~ 1000000.
Гуишка открывается теперь с мышью.
ЗЫ:
Майн 1.12.2 наковальня 2784 маппинги snapshot_20180814(хотя разницы не имеет. у меня на любых 1.12 майнах такая хрень была)
 
7,099
324
1,510
GuiHandler просто надо юзать
 
1,200
37
237
Так GuiScreen или что-то такое и возвращай на клиентСайд хандлера, ну а коли логики серверной нет, то на серверСайде нуль.
 
292
14
160
292
14
160
Нашёл адекватное решение проблемы. Анон написал, что Minecraft#displayGuiScreen() потоконебезопасный и должен вызываться из главного потока майна. Чтобы это произошло, можно воспользоваться майновыми тасками:
Код:
Minecraft mc = Minecraft.getMinecraft();
mc.addScheduledTask(() -> mc.displayGuiScreen(new GuiScreenMyGUI())):
 
7,099
324
1,510
7,099
324
1,510
За тем, что он предназначен для этого. Зачем писать свои пакеты, свое подобие IGuiHandler, если можно просто заюзть готовое?
Если не нужен контейнер - возвращать null из серверного метода.
Это много проще и проверено временем, чем кастомные велосипеды
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Какие еще пакеты? GuiScreen нужно открывать на клиенте. А если нужно это сделать на сервере - в любом случае придется слать пакет же, ибо GuiHandler его не будет слать за тебя. По крайней мере когда я пробовал вызывать player.openGui только на сервере - ничего не происходило.
 
7,099
324
1,510
А у меня он почему-то шлет всегда :unsure:
 
Сверху