Используете Minecraft's PlayerController.windowClick ()? - PullRequest
0 голосов
/ 28 февраля 2020

Я новичок в разработке модов в Minecraft, и в настоящее время я пытаюсь выяснить, как переместить предмет из инвентаря игрока из одного слота в другой.

Я получаю это, чтобы это действие сработало , он должен быть отправлен в виде пакета на сервер, и я прочитал в классе PlayerControllerMP, что windowClick () «Обрабатывает щелчки слотов, отправляет пакет на сервер».

Этот код должен открыться инвентарь и переместите предмет из первого слота во второй слот на панели быстрого доступа. Однако, когда я запускаю его, он только когда-либо открывает инвентарь и ничего не происходит с предметом.

Minecraft.getMinecraft().displayGuiScreen(new GuiInventory(Minecraft.getMinecraft().player));
Minecraft.getMinecraft().playerController.windowClick(Minecraft.getMinecraft().player.inventoryContainer.windowId, 0, 0, ClickType.PICKUP, Minecraft.getMinecraft().player);
Minecraft.getMinecraft().playerController.windowClick(Minecraft.getMinecraft().player.inventoryContainer.windowId, 1, 0, ClickType.PICKUP, Minecraft.getMinecraft().player); 

Что я делаю не так?

Спасибо за вашу помощь:)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Хорошо, я понял это. Индексы в инвентаре игрока go примерно так:

0 крафтовый выход

1–4 крафтингового входа

5–8 брони

9– 35 основной инвентарь

36–44 hotbar

45 слот для руки

0 голосов
/ 28 февраля 2020

Я не знаю точные поля ClickType или что-то связанное с моддингом Minecraft, но я вижу, что вы используете ClickType.PICKUP во втором слоте, в который вы перемещаете что-то , но не должно ли это быть что-то вроде ClickType.DROP? Как я уже сказал, я не очень разбираюсь в моддинге Minecraft, поэтому я не знаю точных полей, поэтому должно быть поле, которое бросает предмет или выпускает предмет, или что-то в этом роде. Однако я точно знаю, что похоже, что вы пытаетесь подобрать предмет в слоте и перемещаете его в него.

Minecraft.getMinecraft().playerController.windowClick(Minecraft.getMinecraft().player.inventoryContainer.windowId, 1, 0, ClickType.DROP /* Or it could be ClickType.RELEASE? */ Minecraft.getMinecraft().player);
...