Лови OpenGuiEvent
Уточняй event.gui instanceof GuiInventory
Потом отменяй эвент event.setCanceled(true)
И отправляй пакет на сервер в котором открываешь гуи
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onGuiOpenEvent(GuiOpenEvent event)
{
if ((event.getGui() instanceof GuiInventory)){
event.setCanceled(true);
NetworkHandler.network.sendToServer(new OpenInventoryMessage());
}
}
А как сделать,чтобы в креативе открывался ,креатив инвентарь,а не мой кастомный?
Делаю вот так но вылетаетПеред отменой ивента ставь проверку , что ты не в креативе
EntityPlayer player = Minecraft.getMinecraft().player;
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onGuiOpenEvent(GuiOpenEvent event)
{
if ((event.getGui() instanceof GuiInventory)){
if (!player.capabilities.isCreativeMode) {
event.setCanceled(true);
NetworkHandler.network.sendToServer(new OpenInventoryMessage());
}
}
}
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void onGuiOpenEvent(GuiOpenEvent event)
{
EntityClientPlayerMP player = FMLClientHandler.instance().getClient().thePlayer;
if ((event.getGui() instanceof GuiInventory)){
if (!player.capabilities.isCreativeMode) {
event.setCanceled(true);
NetworkHandler.network.sendToServer(new OpenInventoryMessage());
}
}
}
А это то, зачем?else { event.setCanceled(false); }
У тебя тот же игрок что и у него)0 Просто он сделал глобальную переменную, которая инициализировалась при создании ивентов, когда игрок еще null.Ещё бы не вылетало , что Это за игрок?
У тебя тот же игрок что и у него)
Minecraft.getMinecraft().player;
if (!Minecraft.getMinecraft().player.capabilities.isCreativeMode) {