Как сделать мобу GUI?

Версия Minecraft
1.12.2
Решение
Ну создать IGuiHandler, в interact(если EntityCreature, иначе interactFirst) проверять, что у нас серверная сторона. Затем, там есть параметр player -> player.openGui(mod, entityId, world, posX, posY, posZ)//entityId можно получить в том же классе с энтитей. Затем в твоём GuiHandler сделать, что-то типа:
Java:
final Entity entity = world.getEntityByID(id);// id берётся из параметров метода getClientGuiElement/getServerGuiElement

if (entity != null && entity instanceof EntityPuppet) {
    return new GuiPuppet(new ContainerPuppet());//Для клиента
    //return new ContainerPuppet();//Для сервера
}
И конечно же не забываем проверки на то, что игрок не далеко от сущности, что сущность не мертва(делается в классе ContainerPuppet в методе...

Icosider

Kotliner
Администратор
3,603
99
664
Ну создать IGuiHandler, в interact(если EntityCreature, иначе interactFirst) проверять, что у нас серверная сторона. Затем, там есть параметр player -> player.openGui(mod, entityId, world, posX, posY, posZ)//entityId можно получить в том же классе с энтитей. Затем в твоём GuiHandler сделать, что-то типа:
Java:
final Entity entity = world.getEntityByID(id);// id берётся из параметров метода getClientGuiElement/getServerGuiElement

if (entity != null && entity instanceof EntityPuppet) {
    return new GuiPuppet(new ContainerPuppet());//Для клиента
    //return new ContainerPuppet();//Для сервера
}
И конечно же не забываем проверки на то, что игрок не далеко от сущности, что сущность не мертва(делается в классе ContainerPuppet в методе canInteractWith или подобный ему). Но это случай с гуи и контейнером, в случаи если просто gui, то все контейнеры можно убрать и оставить как есть, только при interact отправлять пакет на клиент и уже там делать player.openGui(mod, entityId, world, posX, posY, posZ) в противно случаи не откроется. Про проверки, делать их придётся в гуи уже, а не в контейнере. Вроде больше ничего не забыл сказать.
 
Последнее редактирование:
Сверху