Вывод на экран.

Версия Minecraft
1.7.10
48
1
Доброго времени суток.
У меня есть два момента, которые я не могу вывести на экран.

1. Показатель пинга игрока.
2. Количество стрел в инвентаре, когда лук в руках.

Прошу помощи, если можно, то чуть кода.
 
Решение
Java:
@SubscribeEvent
    @SideOnly(Side.CLIENT)
    public void event(RenderGameOverlayEvent event) {
        if(event.type == event.type.TEXT)
        {
            Minecraft.getMinecraft().fontRenderer.drawString("" + getArrowCount(), 100, 100, 16777215);
        }
    }
 
    private int getArrowCount() {

        int c = 0;
        for(int i = 0; i < Minecraft.getMinecraft().thePlayer.inventory.getSizeInventory(); i++) {
            if(Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(i) != null && Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(i).getItem() == Items.arrow)
                c += Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(i).stackSize;
        }
        return c;
    }
214
11
59
Пинг игрока должен быть в одном из классов gui мультиплеера

Java:
private static int arrow_count;

public void event(GuiOpenEvent event) {
    arrow_count = getArrowCount();
}

public void event(KeyinputEvent event) {
    if(Keyboard.isKeyDown(Keyboard.KEY_Q)) {
        arrow_count = getArrowCount();
    }
}

public void event(RenderGameOverlayEvent event) {
    drawText(..., "" + arrow_count, ...);
}

private static int getArrowCount() {
    int c = 0;
    for(int i = 0; i < mc.thePlayer.inventory.lenght; i++) {
        if(mc.thePlayer.inventory.getStackInSlot(i) instanceof ItemArrow) c++;
    }
    return c;
}
 
48
1
@Cornell, я не очень понял по поводу этого:
Java:
public void event(RenderGameOverlayEvent event) {
    drawText(..., "" + arrow_count, ...);
}


+ почему-то не могу поймать получением клиентского игрока mc.thePlayer, ошибка.
и ещё не работает импорт ItemArrow'a и я не понял, где тут координаты.
 
48
1
@Cornell, после этого ошибка в "drawText".
Ещё ошибка в "ItemArrow", но ItemArrow не импортируется + импорт в ручную тоже не работает.
Плюс ошибка в "mc.thePlayer.inventory.lenght;", а если быть точнее, то в "lenght".


Прости, за то, что туплю.
мало с худами работаю.
 

will0376

Токсичная личность
2,072
55
584
Показатель пинга игрока.
NetworkPlayerInfo npi = mc.player.connection.getPlayerInfo(mc.player.getGameProfile().getId());
drawString(this.mc.fontRenderer, "Ping: "+npi.getResponseTime(), 0+40, 0+ 10, 16777215);
А по поводу стрел... я тупо беру список всего инвентаря и ищу там по регулярке: "\d{1,2}xitem.arrow@0"(костыль от меня. Но пашет.)
Апд. только заметил,Что ты про 1,7,10 спрашивал, мой код выше - на 1,12.
 
1,057
50
234
Java:
@SubscribeEvent
    @SideOnly(Side.CLIENT)
    public void event(RenderGameOverlayEvent event) {
        if(event.type == event.type.TEXT)
        {
            Minecraft.getMinecraft().fontRenderer.drawString("" + getArrowCount(), 100, 100, 16777215);
        }
    }
 
    private int getArrowCount() {

        int c = 0;
        for(int i = 0; i < Minecraft.getMinecraft().thePlayer.inventory.getSizeInventory(); i++) {
            if(Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(i) != null && Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(i).getItem() == Items.arrow)
                c += Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(i).stackSize;
        }
        return c;
    }
 
Последнее редактирование:
Сверху