使用 Minecraft 的 PlayerController.windowClick()?
Using Minecraft's PlayerController.windowClick()?
我目前正在尝试弄清楚如何将玩家库存中的物品从一个插槽移动到另一个插槽。
我明白要让这个动作起作用,它必须作为一个数据包发送到服务器,我已经在 PlayerControllerMP class 中读到 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);
我做错了什么?
我不知道 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);
好的,我明白了。玩家库存中的索引是这样的:
0 工艺输出
1–4 工艺输入
5–8 护甲
9–35 主要库存
36–44 快捷栏
45个副手位
我目前正在尝试弄清楚如何将玩家库存中的物品从一个插槽移动到另一个插槽。
我明白要让这个动作起作用,它必须作为一个数据包发送到服务器,我已经在 PlayerControllerMP class 中读到 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);
我做错了什么?
我不知道 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);
好的,我明白了。玩家库存中的索引是这样的:
0 工艺输出
1–4 工艺输入
5–8 护甲
9–35 主要库存
36–44 快捷栏
45个副手位