рисование gui вне инвентаря

Версия Minecraft
1.7.10
124
1
0
как мне сделать, чтобы мой gui рисовался все время (там нет ни слотов, ни кнопок. просто картинки и текст). вот пример из другого мода
 

Вложения

  • Безымянный.png
    Безымянный.png
    12.9 KB · Просмотры: 56

timaxa007

Модератор
5,831
409
672
RenderGameOverlayEvent и drawTexturedModalRect.
timaxa007 написал(а):
Код:
 static Minecraft mc = Minecraft.getMinecraft();
 static final ResourceLocation furnaceGuiTextures = new ResourceLocation("textures/gui/container/furnace.png");
 int xSize = 176;
 int ySize = 166;

 @SubscribeEvent
 public void render(RenderGameOverlayEvent.Post event) {
 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
 mc.getTextureManager().bindTexture(furnaceGuiTextures);
 int posX = (event.resolution.getScaledWidth() - xSize) / 2;
 int posY = (event.resolution.getScaledHeight() - ySize) / 2;
 mc.ingameGUI.drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);
 }
Что-то типа такого использовать надо.
Делай нужную текстуру, ставь в drawTexturedModalRect нужные координаты и размеры.
 
98
1
timaxa007 написал(а):
http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F%D0%BC%D0%B8

Вместо отображения еды, отображается текстура рисуемая на экране
 

Вложения

  • 2016-11-09_21.55.30.png
    2016-11-09_21.55.30.png
    248.5 KB · Просмотры: 45

timaxa007

Модератор
5,831
409
672
Ну было лень писать более правильнее. Сделал плохой пример. У этого примера вроде нету таких проблем:
Код:
static Minecraft mc = Minecraft.getMinecraft();

static final ResourceLocation furnaceGuiTextures = new ResourceLocation("textures/gui/container/furnace.png");
int xSize = 176;
int ySize = 166;

@SubscribeEvent
public void render(RenderGameOverlayEvent event) {
	switch(event.type) {
	case ALL:{
		GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
		mc.getTextureManager().bindTexture(furnaceGuiTextures);
		int posX = (event.resolution.getScaledWidth() - xSize) / 2;
		int posY = (event.resolution.getScaledHeight() - ySize) / 2;
		mc.ingameGUI.drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);
		break;
	}
	default:break;
	}
}
 
98
1
timaxa007 написал(а):
Ну было лень писать более правильнее. Сделал плохой пример. У этого примера вроде нету таких проблем:
Код:
static Minecraft mc = Minecraft.getMinecraft();

static final ResourceLocation furnaceGuiTextures = new ResourceLocation("textures/gui/container/furnace.png");
int xSize = 176;
int ySize = 166;

@SubscribeEvent
public void render(RenderGameOverlayEvent event) {
 switch(event.type) {
 case ALL:{
 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
 mc.getTextureManager().bindTexture(furnaceGuiTextures);
 int posX = (event.resolution.getScaledWidth() - xSize) / 2;
 int posY = (event.resolution.getScaledHeight() - ySize) / 2;
 mc.ingameGUI.drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);
 break;
 }
 default:break;
 }
}

Огромное спасибо, я могу задать тебе еще вопрос тут или создать тему?
 
124
1
0
краш, когда вызывается 2 строка

находится в методе updateEntity в тайле блока
Код:
RenderGameOverlayEvent event = new RenderGameOverlayEvent(0, new ScaledResolution(Minecraft.getMinecraft(), 10, 10), -1, 0);
 MinecraftForge.EVENT_BUS.post(event);


евент хандлер мода
Код:
public class KTEventHandler {
 static Minecraft mc = Minecraft.getMinecraft();

 static final ResourceLocation furnaceGuiTextures = new ResourceLocation("textures/gui/container/furnace.png");
 int xSize = 176;
 int ySize = 166;

 @SubscribeEvent
 public void render(RenderGameOverlayEvent event) {
 if (event.mouseX != -1) return;
 GL11.glColor4f(1F, 1F, 1F, 1F);
 mc.getTextureManager().bindTexture(furnaceGuiTextures);
 int posX = (event.resolution.getScaledWidth() - xSize) / 2;
 int posY = (event.resolution.getScaledHeight() - ySize) / 2;
 mc.ingameGUI.drawTexturedModalRect(posX, posY, 0, 0, xSize, ySize);
 }
}


проверка mouseX != -1 и запись -1 в тайле нужны для проверки, откуда вызван метод (мне надо рисовать gui только если в определенном поле в тайле записано true)


возможно именно в этом ошибка, не сильно понимаю как работают эти функции (в краше на GL11.glColor4f(1F, 1F, 1F, 1F); ругается)
 
Сверху