Текст над энтити(как ник)

1,683
1
Ну вот как такой текст сделать?Класс то не EntityLivingBase
P.S.Как заставить энтити стоять на месте и не крутиться,но чтобы он падал при уничтожении блока снизу?
 
1,990
18
105
Было про текст, Агравейн спрашивал. Учись искать.
2) Убрать AIMove и все его производные\аналоги. Либо сделать свой с условием. Не забудь включить usesNewAi
 
329
13
Dovakin написал(а):
Ну вот как такой текст сделать?Класс то не EntityLivingBase
P.S.Как заставить энтити стоять на месте и не крутиться,но чтобы он падал при уничтожении блока снизу?
https://github.com/TaoGunner/SimpleQuestMod/blob/master/src/main/java/taogunner/simplequest/entity/passive/EntityNPC.java

Код:
this.setCustomNameTag("Simple Quest Mod NPC");
 
329
13
Dovakin написал(а):
Наверное, я чего-то не понимаю.

Кусок из класса Entity
Код:
    /**
     * Sets the custom name tag for this entity
     */
    public void setCustomNameTag(String p_96094_1_)
    {
        this.dataWatcher.updateObject(2, p_96094_1_);
    }
 
329
13
У меня 1.8 .
А что мешает найти содержимое setCustomNameTag и выполнить его вручную? Либо отследить код, который взаимодействует с начинкой этого метода (DataWatcher'ом) и , опять же, копировать его?
 
1,990
18
105
В том случае не использовался кастом нейм таг. Агравейн сам рендер делал, вроде.
Ищи.
 
1,683
1
Нету тем,я дебагом попробую
[merge_posts_bbcode]Добавлено: 10.06.2015 22:18:42[/merge_posts_bbcode]

Код:
protected void passSpecialRender(EntityLivingBase p_77033_1_, double p_77033_2_, double p_77033_4_, double p_77033_6_)
    {
        if (MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Specials.Pre(p_77033_1_, this, p_77033_2_, p_77033_4_, p_77033_6_))) return;
        GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F);

        if (this.func_110813_b(p_77033_1_))
        {
            float f = 1.6F;
            float f1 = 0.016666668F * f;
            double d3 = p_77033_1_.getDistanceSqToEntity(this.renderManager.livingPlayer);
            float f2 = p_77033_1_.isSneaking() ? NAME_TAG_RANGE_SNEAK : NAME_TAG_RANGE;

            if (d3 < (double)(f2 * f2))
            {
                String s = p_77033_1_.func_145748_c_().getFormattedText();

                if (p_77033_1_.isSneaking())
                {
                    FontRenderer fontrenderer = this.getFontRendererFromRenderManager();
                    GL11.glPushMatrix();
                    GL11.glTranslatef((float)p_77033_2_ + 0.0F, (float)p_77033_4_ + p_77033_1_.height + 0.5F, (float)p_77033_6_);
                    GL11.glNormal3f(0.0F, 1.0F, 0.0F);
                    GL11.glRotatef(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
                    GL11.glRotatef(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
                    GL11.glScalef(-f1, -f1, f1);
                    GL11.glDisable(GL11.GL_LIGHTING);
                    GL11.glTranslatef(0.0F, 0.25F / f1, 0.0F);
                    GL11.glDepthMask(false);
                    GL11.glEnable(GL11.GL_BLEND);
                    OpenGlHelper.glBlendFunc(770, 771, 1, 0);
                    Tessellator tessellator = Tessellator.instance;
                    GL11.glDisable(GL11.GL_TEXTURE_2D);
                    tessellator.startDrawingQuads();
                    int i = fontrenderer.getStringWidth(s) / 2;
                    tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F);
                    tessellator.addVertex((double)(-i - 1), -1.0D, 0.0D);
                    tessellator.addVertex((double)(-i - 1), 8.0D, 0.0D);
                    tessellator.addVertex((double)(i + 1), 8.0D, 0.0D);
                    tessellator.addVertex((double)(i + 1), -1.0D, 0.0D);
                    tessellator.draw();
                    GL11.glEnable(GL11.GL_TEXTURE_2D);
                    GL11.glDepthMask(true);
                    fontrenderer.drawString(s, -fontrenderer.getStringWidth(s) / 2, 0, 553648127);
                    GL11.glEnable(GL11.GL_LIGHTING);
                    GL11.glDisable(GL11.GL_BLEND);
                    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
                    GL11.glPopMatrix();
                }
                else
                {
                    this.func_96449_a(p_77033_1_, p_77033_2_, p_77033_4_, p_77033_6_, s, f1, d3);
                }
            }
        }
        MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Specials.Post(p_77033_1_, this, p_77033_2_, p_77033_4_, p_77033_6_));
    }
Это выкопал,вроде оно
 
329
13
Код:
if (this.func_110813_b(p_77033_1_))
Что это за метод? Судя по всему, этот :

Код:
    /**
     * Returns true if this thing is named
     */
    public boolean hasCustomName()
    {
        return this.dataWatcher.getWatchableObjectString(2).length() > 0;
    }
 
1,683
1
Нет,он проверяет включен ли гуи
[merge_posts_bbcode]Добавлено: 10.06.2015 22:22:57[/merge_posts_bbcode]

Всё было в RendererLivingEntity'e
 
329
13
Dovakin написал(а):
Нет,он проверяет включен ли гуи
[merge_posts_bbcode]Добавлено: 10.06.2015 22:22:57[/merge_posts_bbcode]

Всё было в RenderLiving'e
Тогда это, наверное.
Код:
String s = p_77033_1_.func_145748_c_().getFormattedText();
 
Сверху