как получить игрока рядом с игрок

Версия Minecraft
1.12.2
19
0
(Я использую переводчик. )

Я написал код, чтобы получить игрок близ игрок.
И здоровье игрока отображается на экране.
Однако, если распознано более одного игрока, игрок будет наложен на экран.
Если второй игрок опознан, как я могу настроить координаты отображения второго игрока?

2019-02-10_10.49.50.png

2019-02-10_11.15.36.png



Java:
@SubscribeEvent
    public void renderNearPlayer(RenderGameOverlayEvent.Post event) throws IOException{
        if (event.getType() == RenderGameOverlayEvent.ElementType.TEXT) {
            Minecraft mc = Minecraft.getMinecraft();
            EntityPlayer player = mc.player;
            List<EntityPlayer> e = player.world.getEntitiesWithinAABB(EntityPlayer.class, player.getEntityBoundingBox().grow(5, 5, 5));

            if (e.size() > 0) {
                for (int i = 0; i <= e.size() - 1; i++) {
                    EntityPlayer p = (EntityPlayer) e.get(i);
                    EntityPlayer NearPlayer = mc.world.getPlayerEntityByName(p.getName());
                    if (p.getUniqueID() != player.getUniqueID() && NearPlayer != null) {
                        ItemStack head = new ItemStack(Items.SKULL, 1, 3);
                        head.setTagCompound(new NBTTagCompound());
                        head.getTagCompound().setTag("SkullOwner", new NBTTagString(p.getName()));
                        GlStateManager.pushMatrix(); {
                            GlStateManager.color(1.0F,1.0F,1.0F,1.0F);
                            GlStateManager.scale(1.2,1.2,0);
                            mc.getRenderItem().renderItemIntoGUI(head, 0,38);
                        }
                        GlStateManager.popMatrix();
                        drawString(mc.fontRenderer, p.getName(), 20, 50, 0xFFFFFF);
                        GlStateManager.pushMatrix(); {
                            GlStateManager.translate(0,0,0);
                            GlStateManager.scale(0.8, 1,0);
                            int healthBarWidth = MathHelper.ceil((NearPlayer.getHealth() / player.getMaxHealth()) * 78);
                            OtherRenderer.drawModalRect(mc, new ResourceLocation(Reference.MOD_ID + ":textures/gui/black.png"), 25 + 1,60 + 1,0,37,78,3);
                            OtherRenderer.drawModalRect(mc, new ResourceLocation(Reference.MOD_ID + ":textures/gui/black.png"), 25,60,0,34,healthBarWidth,3);
                        }
                        GlStateManager.popMatrix();
                    }
                }
            }
        }
    }
 
Решение
У координате Y прибавлять порядок в листе помноженное на пиксели отступления. К примеру:
Java:
mc.getRenderItem().renderItemIntoGUI(head, 0,38 + (i * 20));
Java:
OtherRenderer.drawModalRect(mc, new ResourceLocation(Reference.MOD_ID + ":textures/gui/black.png"), 25 + 1,60 + 1 + (i * 20),0,37,78,3);
OtherRenderer.drawModalRect(mc, new ResourceLocation(Reference.MOD_ID + ":textures/gui/black.png"), 25,60 + (i * 20),0,34,healthBarWidth,3);

timaxa007

Модератор
5,831
409
672
У координате Y прибавлять порядок в листе помноженное на пиксели отступления. К примеру:
Java:
mc.getRenderItem().renderItemIntoGUI(head, 0,38 + (i * 20));
Java:
OtherRenderer.drawModalRect(mc, new ResourceLocation(Reference.MOD_ID + ":textures/gui/black.png"), 25 + 1,60 + 1 + (i * 20),0,37,78,3);
OtherRenderer.drawModalRect(mc, new ResourceLocation(Reference.MOD_ID + ":textures/gui/black.png"), 25,60 + (i * 20),0,34,healthBarWidth,3);
 
Сверху