Minecraft - Информационная панель над панелью инвентаря полностью артефактирована
Я выделил проблему в следующей строке кода:
Minecraft.getMinecraft().fontRendererObj.drawStringWithShadow(etc)
Я чрезвычайно озадачен тем, почему это артефакты для бара xp, бара здоровья, бара еды и брони. Вот часть моего кода:
// 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);
, Я не понимаю почему. Я уверен, что именно эта строка, поскольку удаление / комментирование любых других частей кода не исправляет артефакт, пока я не закомментирую эту строку. Я крайне смущен тем, почему это происходит. Если у кого-то есть понимание, я буду очень признателен
1 ответ
Проблема заключается в следующем:
Когда вы пытаетесь drawString, он заменяет текстуры текстурной текстурой. Из-за этого все, что отображается впоследствии, выглядит как текст, а не как значки, потому что текстура была заменена в памяти. Чтобы избежать этого, используйте RenderGameOverlayEvent.Post
и проверьте, если event
получает тип текстового рендера.