- 16
- 0
Переделываю рпг худ, теперь он отображается в центре экрана и из-за этого перекрывается текст. Почитал в интернете и попробовал через Миксин напрямую изменить высоту текста в самом майнкрафте, но ничего не работает.
P.S "RPGHud Mixin LOADED!" - выводится

MixinGuiIngame:
@Mixin(GuiIngame.class)
public class MixinGuiIngame {
@Inject(
method = "renderSelectedItem",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/gui/FontRenderer;drawStringWithShadow(Ljava/lang/String;FFI)I"
),
cancellable = true
)
public void renderSelectedItem(ScaledResolution scaledResolution, CallbackInfo ci) {
System.out.println("test");
GuiIngame gui = (GuiIngame) (Object) this;
Minecraft mc = Minecraft.getMinecraft();
ItemStack stack = ((GuiIngameAccessor) gui).getHighlightingItemStack();
int ticks = ((GuiIngameAccessor) gui).getRemainingHighlightTicks();
if (ticks > 0 && stack != null) {
String name = stack.getDisplayName();
int opacity = (int) ((float) ticks * 256.0F / 10.0F);
if (opacity > 255) opacity = 255;
if (opacity > 0) {
int screenWidth = scaledResolution.getScaledWidth();
int screenHeight = scaledResolution.getScaledHeight();
int yOffset = 500; // специально поставил большое значение, чтобы убедиться в неисправности
GlStateManager.pushMatrix();
GlStateManager.enableBlend();
mc.fontRenderer.drawStringWithShadow(
TextFormatting.RESET + name,
(screenWidth - mc.fontRenderer.getStringWidth(name)) / 2f,
screenHeight - yOffset,
0xFFFFFF | (opacity << 24)
);
GlStateManager.disableBlend();
GlStateManager.popMatrix();
ci.cancel();
}
}
}
@Inject(method = "<init>", at = @At("RETURN"))
private void onInit(Minecraft mc, CallbackInfo ci) {
System.out.println("RPGHud Mixin LOADED!");
}
}
P.S "RPGHud Mixin LOADED!" - выводится

Последнее редактирование:
