Minecraft - Информационная панель над панелью инвентаря полностью артефактирована - PullRequest
0 голосов
/ 24 октября 2018

Я выделил проблему в следующей строке кода:

Minecraft.getMinecraft().fontRendererObj.drawStringWithShadow(etc)

Я крайне озадачен тем, почему она вызывает артефакты xp bar, bar здоровья, bar еды и baror bar.Вот часть моего кода:

// the main code
public void postInit(FMLPostInitializationEvent event) {
    MinecraftForge.EVENT_BUS.register(new MyMod());
}

// MyMod class
public uiCreator;
public MyMod() {
    uiCreator = new UICreator();
}

@SubscribeEvent
public void onGui(RenderGameOverlayEvent event) {
    uiCreator.Create();
}

// UICreator class
public void Create() {
    GlStateManager.scale(1.5, 1.5, 1.5);
    Minecraft.getMinecraft().fontRendererObj.drawStringWithShadow("MyMod", 2, 2, 0xffffff);
    GlStateManager.scale(1 / 1.5, 1 / 1.5, 1 / 1.5);
}

Фактически, строка, которая вызывает артефакт, равна Minecraft.getMinecraft().fontRendererObj.drawStringWithShadow("MyMod", 2, 2, 0xffffff);.Я не понимаю почему.Я уверен, что именно эта строка, поскольку удаление / комментирование любых других частей кода не исправляет артефакт, пока я не закомментирую эту строку.Я крайне смущен тем, почему это происходит.Если у кого-то есть понимание, я буду очень признателен за это

Artifacting Info Bar

1 Ответ

0 голосов
/ 26 октября 2018

Проблема заключается в следующем:

Когда вы пытаетесь drawString, он заменяет текстуры текстурной текстурой.Из-за этого все, что отображается впоследствии, выглядит как текст, а не как значки, потому что текстура была заменена в памяти.Чтобы избежать этого, используйте RenderGameOverlayEvent.Post и проверьте, получает ли event тип рендеринга TEXT.

...