1.21.8 рендеринг MOTD / TEXT на DirectConnect ScreenJAVA

Программисты JAVA общаются здесь
Anonymous
1.21.8 рендеринг MOTD / TEXT на DirectConnect Screen

Сообщение Anonymous »

Я хочу отобразить серверы MOTD, подсчет игроков и PING на DirectConnect Screen, аналогично тому, как он находится в списке многопользовательских серверов. Я создал микшин для DirectConnect Screen, чтобы нарисовать информацию. Я могу успешно принести значок серверов и отобразить его.
Я также могу принести MOTD и распечатать его на консоли, поэтому я знаю, что информация получается правильно. Моя главная проблема заключается в том, что я не могу отобрать какой -либо текст на экране. Значок появляется, но MOTD, COUNT IRY и ICON PING - нет. Я не получаю ошибок в журналах, связанных с рендерингом. Вот некоторые из моего кода: < /p>
directconnectscreenmixin.java:
Java@Mixin(DirectConnectScreen.class)
public abstract class DirectConnectScreenMixin extends Screen {
@Shadow
private ServerAddress serverAddress;

private DirectConnectScreenMOTDHelper directConnectScreenMOTDHelper;

protected DirectConnectScreenMixin(Text title) {
super(title);
}

@Inject(method = "init", at = @At("TAIL"))
private void onInit(CallbackInfo ci) {
this.directConnectScreenMOTDHelper = new DirectConnectScreenMOTDHelper(this.client, (DirectConnectScreen) (Object) this, this.serverAddress);
}

@Inject(method = "render", at = @At("TAIL"))
private void onRender(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (this.directConnectScreenMOTDHelper != null) {
this.directConnectScreenMOTDHelper.draw(context, mouseX, mouseY, delta);
}
}

@Inject(method = "tick", at = @At("TAIL"))
private void onTick(CallbackInfo ci) {
if (this.directConnectScreenMOTDHelper != null) {
this.directConnectScreenMOTDHelper.tick();
}
}
}
< /code>
directconnectscreenmotdhelper.java (часть рисования): < /p>
Javapublic class DirectConnectScreenMOTDHelper {
// ... (fields for client, screen, serverAddress, serverInfo, etc.)

public void draw(DrawContext context, int mouseX, int mouseY, float delta) {
if (this.serverInfo != null) {
if (this.serverInfo.getIcon() != null) {
// this works
this.drawIcon(context, 0, 0, this.serverInfo.getIcon());
}

// doesnt display
if (this.serverInfo.getMotd() != null) {
this.client.textRenderer.draw(this.serverInfo.getMotd(), 35.0F, 1.0F, 16777215, false, context.getMatrices().peek().getPositionMatrix(), context.getVertexConsumers(), TextRenderer.TextLayerType.NORMAL, 0, 15728880);
}
}
}

// ... (other methods for ticking, fetching info, etc.)
}
< /code>
Может быть, я упускаю что -то фундаментальное в том, как работает рендеринг текста? Есть ли другой способ рендеринга, потому что это MOTD?

Подробнее здесь: https://stackoverflow.com/questions/797 ... nectscreen

Вернуться в «JAVA»