- 19
- 0
Я хочу визуализировать ограничивающую рамку. (Ограничительная рамка "сущности", на которую смотрит игрок)
Но есть проблема. Ограничительная рамка отображается игроку, как показано на рисунке ниже.
Как отобразить ограничивающую рамку сущности , на которую смотрит игрок?
Или как вы визуализируете эффект свечения, а не ограничивающий прямоугольник?
Но есть проблема. Ограничительная рамка отображается игроку, как показано на рисунке ниже.
Как отобразить ограничивающую рамку сущности , на которую смотрит игрок?
Или как вы визуализируете эффект свечения, а не ограничивающий прямоугольник?
Java:
@SubscribeEvent
public void renderWorldLastEvent(RenderWorldLastEvent event) {
if (Minecraft.getMinecraft().objectMouseOver.entityHit != null) {
Entity entity = Minecraft.getMinecraft().objectMouseOver.entityHit;
renderEntityBox(entity, event.getPartialTicks());
}
}
void renderEntityBox(Entity entity, float partialTicks) {
AxisAlignedBB boundingBox = entity.getEntityBoundingBox();
double d0 = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * (double) partialTicks;
double d1 = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * (double) partialTicks;
double d2 = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * (double) partialTicks;
GL11.glPushMatrix(); {
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
GL11.glDepthMask(false);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_TEXTURE_2D);
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder buffer = tessellator.getBuffer();
GL11.glColor4f(1.0F,0.0F,0.0F,1.0F);
GL11.glLineWidth(5.0F);
buffer.setTranslation(-d0, -d1, -d2);
RenderGlobal.drawSelectionBoundingBox(boundingBox, 1.0F,0.0F,0.0F, 1.0F);
buffer.setTranslation(0,0,0);
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopAttrib();
}
GL11.glPopMatrix();
}