fix lighting
This commit is contained in:
parent
2ea8656390
commit
3a9ec2ab32
14 changed files with 169 additions and 399 deletions
|
@ -754,9 +754,9 @@ public class EntityRenderer {
|
||||||
|
|
||||||
for (int n = 0; n < 256; ++n)
|
for (int n = 0; n < 256; ++n)
|
||||||
{
|
{
|
||||||
float rsky = World.BRIGHTNESS[0][n / 16];
|
float rsky = World.BRIGHTNESS[n / 16];
|
||||||
|
float rblock = World.BRIGHTNESS[n % 16];
|
||||||
float sky = rsky * msun;
|
float sky = rsky * msun;
|
||||||
float rblock = World.BRIGHTNESS[0][n % 16];
|
|
||||||
float block = rblock * (this.torchFlickerX * 0.1F + 1.5F);
|
float block = rblock * (this.torchFlickerX * 0.1F + 1.5F);
|
||||||
|
|
||||||
float sred = Math.max(sky * (sun * 0.65F + 0.35F), brightness);
|
float sred = Math.max(sky * (sun * 0.65F + 0.35F), brightness);
|
||||||
|
|
|
@ -647,11 +647,6 @@ public class RenderGlobal
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!flag2 && entity2 instanceof EntityBox)
|
|
||||||
{
|
|
||||||
this.gm.getRenderManager().renderFloatingBox(entity2, partialTicks);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,55 +2,30 @@ package client.renderer.entity;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import client.Client;
|
|
||||||
import client.renderer.DefaultVertexFormats;
|
|
||||||
import client.renderer.Drawing;
|
import client.renderer.Drawing;
|
||||||
import client.renderer.Frustum;
|
import client.renderer.Frustum;
|
||||||
import client.renderer.GlState;
|
import client.renderer.GlState;
|
||||||
import client.renderer.RenderBuffer;
|
|
||||||
import client.renderer.Tessellator;
|
|
||||||
import client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import client.renderer.texture.TextureMap;
|
|
||||||
import common.block.Block;
|
|
||||||
import common.entity.Entity;
|
import common.entity.Entity;
|
||||||
import common.util.BlockPos;
|
|
||||||
import common.util.BoundingBox;
|
import common.util.BoundingBox;
|
||||||
import common.world.World;
|
|
||||||
|
|
||||||
public abstract class Render<T extends Entity>
|
public abstract class Render<T extends Entity>
|
||||||
{
|
{
|
||||||
// public static boolean drawNames = true;
|
protected final RenderManager manager;
|
||||||
// private static final String shadowTextures = "textures/world/shadow.png";
|
|
||||||
|
|
||||||
protected final RenderManager renderManager;
|
|
||||||
// protected float shadowSize;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * Determines the darkness of the object's shadow. Higher value makes a darker shadow.
|
|
||||||
// */
|
|
||||||
// protected float shadowOpaque = 1.0F;
|
|
||||||
|
|
||||||
protected Render(RenderManager renderManager)
|
protected Render(RenderManager manager)
|
||||||
{
|
{
|
||||||
this.renderManager = renderManager;
|
this.manager = manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean shouldRender(T livingEntity, double camX, double camY, double camZ)
|
public boolean shouldRender(T entity, double camX, double camY, double camZ)
|
||||||
{
|
{
|
||||||
BoundingBox axisalignedbb = livingEntity.getEntityBoundingBox();
|
BoundingBox bb = entity.getEntityBoundingBox();
|
||||||
|
if (bb.hasNaN() || bb.getAverageEdgeLength() == 0.0D)
|
||||||
if (axisalignedbb.hasNaN() || axisalignedbb.getAverageEdgeLength() == 0.0D)
|
bb = new BoundingBox(entity.posX - 2.0D, entity.posY - 2.0D, entity.posZ - 2.0D, entity.posX + 2.0D, entity.posY + 2.0D, entity.posZ + 2.0D);
|
||||||
{
|
return entity.isInRangeToRender3d(camX, camY, camZ) && (entity.noFrustumCheck || Frustum.isInFrustum(bb));
|
||||||
axisalignedbb = new BoundingBox(livingEntity.posX - 2.0D, livingEntity.posY - 2.0D, livingEntity.posZ - 2.0D, livingEntity.posX + 2.0D, livingEntity.posY + 2.0D, livingEntity.posZ + 2.0D);
|
|
||||||
}
|
|
||||||
|
|
||||||
return livingEntity.isInRangeToRender3d(camX, camY, camZ) && (livingEntity.noFrustumCheck || Frustum.isInFrustum(axisalignedbb));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public void doRender(T entity, double x, double y, double z, float partial)
|
||||||
* Renders the desired {@code T} type Entity.
|
|
||||||
*/
|
|
||||||
public void doRender(T entity, double x, double y, double z, float partialTicks)
|
|
||||||
{
|
{
|
||||||
this.renderName(entity, x, y, z);
|
this.renderName(entity, x, y, z);
|
||||||
}
|
}
|
||||||
|
@ -59,320 +34,27 @@ public abstract class Render<T extends Entity>
|
||||||
{
|
{
|
||||||
String name = entity.getDisplayName();
|
String name = entity.getDisplayName();
|
||||||
if(name != null && !name.isEmpty())
|
if(name != null && !name.isEmpty())
|
||||||
this.renderLivingLabel(entity, name, x, y, z, 64);
|
this.manager.renderLabel(entity, name, x, y, z, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
// protected boolean canRenderName(T entity)
|
|
||||||
// {
|
|
||||||
// return entity.hasCustomName();
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
|
|
||||||
*/
|
|
||||||
protected abstract String getEntityTexture(T entity);
|
protected abstract String getEntityTexture(T entity);
|
||||||
|
|
||||||
public boolean bindEntityTexture(T entity)
|
public final boolean bindEntityTexture(T entity)
|
||||||
{
|
{
|
||||||
String resourcelocation = this.getEntityTexture(entity);
|
String tex = this.getEntityTexture(entity);
|
||||||
|
if(tex == null)
|
||||||
if (resourcelocation == null)
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
this.bindTexture(tex);
|
||||||
else
|
return true;
|
||||||
{
|
|
||||||
this.bindTexture(resourcelocation);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void bindTexture(String location)
|
public final void bindTexture(String tex)
|
||||||
{
|
{
|
||||||
this.renderManager.renderEngine.bindTexture(location);
|
this.manager.renderEngine.bindTexture(tex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public final RenderManager getRenderManager()
|
||||||
* Renders fire on top of the entity. Args: entity, x, y, z, partialTickTime
|
|
||||||
*/
|
|
||||||
private void renderEntityOnFire(Entity entity, double x, double y, double z, float partialTicks)
|
|
||||||
{
|
{
|
||||||
GlState.disableLighting();
|
return this.manager;
|
||||||
TextureMap texturemap = Client.CLIENT.getTextureMapBlocks();
|
|
||||||
TextureAtlasSprite textureatlassprite = texturemap.getAtlasSprite("blocks/fire_layer_0");
|
|
||||||
TextureAtlasSprite textureatlassprite1 = texturemap.getAtlasSprite("blocks/fire_layer_1");
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
GL11.glTranslatef((float)x, (float)y, (float)z);
|
|
||||||
float f = entity.width * 1.4F;
|
|
||||||
GL11.glScalef(f, f, f);
|
|
||||||
// Tessellator tessellator = Tessellator.getInstance();
|
|
||||||
RenderBuffer worldrenderer = Tessellator.getBuffer();
|
|
||||||
float f1 = 0.5F;
|
|
||||||
float f2 = 0.0F;
|
|
||||||
float f3 = entity.height / f;
|
|
||||||
float f4 = (float)(entity.posY - entity.getEntityBoundingBox().minY);
|
|
||||||
GL11.glRotatef(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
|
||||||
GL11.glTranslatef(0.0F, 0.0F, -0.3F + (float)((int)f3) * 0.02F);
|
|
||||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
|
||||||
float f5 = 0.0F;
|
|
||||||
int i = 0;
|
|
||||||
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
|
|
||||||
|
|
||||||
while (f3 > 0.0F)
|
|
||||||
{
|
|
||||||
TextureAtlasSprite textureatlassprite2 = i % 2 == 0 ? textureatlassprite : textureatlassprite1;
|
|
||||||
this.bindTexture(TextureMap.BLOCKS);
|
|
||||||
float f6 = textureatlassprite2.getMinU();
|
|
||||||
float f7 = textureatlassprite2.getMinV();
|
|
||||||
float f8 = textureatlassprite2.getMaxU();
|
|
||||||
float f9 = textureatlassprite2.getMaxV();
|
|
||||||
|
|
||||||
if (i / 2 % 2 == 0)
|
|
||||||
{
|
|
||||||
float f10 = f8;
|
|
||||||
f8 = f6;
|
|
||||||
f6 = f10;
|
|
||||||
}
|
|
||||||
|
|
||||||
worldrenderer.pos((double)(f1 - f2), (double)(0.0F - f4), (double)f5).tex((double)f8, (double)f9).endVertex();
|
|
||||||
worldrenderer.pos((double)(-f1 - f2), (double)(0.0F - f4), (double)f5).tex((double)f6, (double)f9).endVertex();
|
|
||||||
worldrenderer.pos((double)(-f1 - f2), (double)(1.4F - f4), (double)f5).tex((double)f6, (double)f7).endVertex();
|
|
||||||
worldrenderer.pos((double)(f1 - f2), (double)(1.4F - f4), (double)f5).tex((double)f8, (double)f7).endVertex();
|
|
||||||
f3 -= 0.45F;
|
|
||||||
f4 -= 0.45F;
|
|
||||||
f1 *= 0.9F;
|
|
||||||
f5 += 0.03F;
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
Tessellator.draw();
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
GlState.enableLighting();
|
|
||||||
}
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Renders the entity shadows at the position, shadow alpha and partialTickTime. Args: entity, x, y, z, shadowAlpha,
|
|
||||||
// * partialTickTime
|
|
||||||
// */
|
|
||||||
// private void renderShadow(Entity entityIn, double x, double y, double z, float shadowAlpha, float partialTicks)
|
|
||||||
// {
|
|
||||||
// GlState.enableBlend();
|
|
||||||
// GlState.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
// this.renderManager.renderEngine.bindTexture(shadowTextures);
|
|
||||||
// World world = this.getWorldFromRenderManager();
|
|
||||||
// GlState.depthMask(false);
|
|
||||||
// float f = this.shadowSize;
|
|
||||||
//
|
|
||||||
// if (entityIn instanceof EntityLiving)
|
|
||||||
// {
|
|
||||||
// EntityLiving entityliving = (EntityLiving)entityIn;
|
|
||||||
// f *= entityliving.getShadowSize();
|
|
||||||
//
|
|
||||||
// if (entityliving.isChild())
|
|
||||||
// {
|
|
||||||
// f *= 0.5F;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// double d5 = entityIn.lastTickPosX + (entityIn.posX - entityIn.lastTickPosX) * (double)partialTicks;
|
|
||||||
// double d0 = entityIn.lastTickPosY + (entityIn.posY - entityIn.lastTickPosY) * (double)partialTicks;
|
|
||||||
// double d1 = entityIn.lastTickPosZ + (entityIn.posZ - entityIn.lastTickPosZ) * (double)partialTicks;
|
|
||||||
// int i = MathHelper.floor_double(d5 - (double)f);
|
|
||||||
// int j = MathHelper.floor_double(d5 + (double)f);
|
|
||||||
// int k = MathHelper.floor_double(d0 - (double)f);
|
|
||||||
// int l = MathHelper.floor_double(d0);
|
|
||||||
// int i1 = MathHelper.floor_double(d1 - (double)f);
|
|
||||||
// int j1 = MathHelper.floor_double(d1 + (double)f);
|
|
||||||
// double d2 = x - d5;
|
|
||||||
// double d3 = y - d0;
|
|
||||||
// double d4 = z - d1;
|
|
||||||
//// Tessellator tessellator = Tessellator.getInstance();
|
|
||||||
// RenderBuffer worldrenderer = Tessellator.getBuffer();
|
|
||||||
// worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
|
|
||||||
//
|
|
||||||
// for (BlockPos blockpos : BlockPos.getAllInBoxMutable(new BlockPos(i, k, i1), new BlockPos(j, l, j1)))
|
|
||||||
// {
|
|
||||||
// Block block = world.getBlockState(blockpos.down()).getBlock();
|
|
||||||
//
|
|
||||||
// if (block.getRenderType() != -1 && world.getLightFromNeighbors(blockpos) > 3)
|
|
||||||
// {
|
|
||||||
// this.renderShadowBlock(block, x, y, z, blockpos, shadowAlpha, f, d2, d3, d4);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Tessellator.draw();
|
|
||||||
// GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
|
||||||
// GlState.disableBlend();
|
|
||||||
// GlState.depthMask(true);
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the render manager's world object
|
|
||||||
*/
|
|
||||||
private World getWorldFromRenderManager()
|
|
||||||
{
|
|
||||||
return this.renderManager.worldObj;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void renderShadowBlock(Block blockIn, double p_180549_2_, double p_180549_4_, double p_180549_6_, BlockPos pos, float p_180549_9_, float p_180549_10_, double p_180549_11_, double p_180549_13_, double p_180549_15_)
|
|
||||||
{
|
|
||||||
if (blockIn.isFullCube())
|
|
||||||
{
|
|
||||||
// Tessellator tessellator = Tessellator.getInstance();
|
|
||||||
RenderBuffer worldrenderer = Tessellator.getBuffer();
|
|
||||||
double d0 = ((double)p_180549_9_ - (p_180549_4_ - ((double)pos.getY() + p_180549_13_)) / 2.0D) * 0.5D * (double)this.getWorldFromRenderManager().getLightBrightness(pos);
|
|
||||||
|
|
||||||
if (d0 >= 0.0D)
|
|
||||||
{
|
|
||||||
if (d0 > 1.0D)
|
|
||||||
{
|
|
||||||
d0 = 1.0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
double d1 = (double)pos.getX() + blockIn.getBlockBoundsMinX() + p_180549_11_;
|
|
||||||
double d2 = (double)pos.getX() + blockIn.getBlockBoundsMaxX() + p_180549_11_;
|
|
||||||
double d3 = (double)pos.getY() + blockIn.getBlockBoundsMinY() + p_180549_13_ + 0.015625D;
|
|
||||||
double d4 = (double)pos.getZ() + blockIn.getBlockBoundsMinZ() + p_180549_15_;
|
|
||||||
double d5 = (double)pos.getZ() + blockIn.getBlockBoundsMaxZ() + p_180549_15_;
|
|
||||||
float f = (float)((p_180549_2_ - d1) / 2.0D / (double)p_180549_10_ + 0.5D);
|
|
||||||
float f1 = (float)((p_180549_2_ - d2) / 2.0D / (double)p_180549_10_ + 0.5D);
|
|
||||||
float f2 = (float)((p_180549_6_ - d4) / 2.0D / (double)p_180549_10_ + 0.5D);
|
|
||||||
float f3 = (float)((p_180549_6_ - d5) / 2.0D / (double)p_180549_10_ + 0.5D);
|
|
||||||
worldrenderer.pos(d1, d3, d4).tex((double)f, (double)f2).color(1.0F, 1.0F, 1.0F, (float)d0).endVertex();
|
|
||||||
worldrenderer.pos(d1, d3, d5).tex((double)f, (double)f3).color(1.0F, 1.0F, 1.0F, (float)d0).endVertex();
|
|
||||||
worldrenderer.pos(d2, d3, d5).tex((double)f1, (double)f3).color(1.0F, 1.0F, 1.0F, (float)d0).endVertex();
|
|
||||||
worldrenderer.pos(d2, d3, d4).tex((double)f1, (double)f2).color(1.0F, 1.0F, 1.0F, (float)d0).endVertex();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Renders a white box with the bounds of the AABB translated by the offset. Args: aabb, x, y, z
|
|
||||||
*/
|
|
||||||
public static void renderOffsetAABB(BoundingBox boundingBox, double x, double y, double z)
|
|
||||||
{
|
|
||||||
GlState.disableTexture2D();
|
|
||||||
// Tessellator tessellator = Tessellator.getInstance();
|
|
||||||
RenderBuffer worldrenderer = Tessellator.getBuffer();
|
|
||||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
|
||||||
worldrenderer.setTranslation(x, y, z);
|
|
||||||
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_NORMAL);
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.maxY, boundingBox.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.maxY, boundingBox.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.minY, boundingBox.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.minY, boundingBox.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.minY, boundingBox.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.minY, boundingBox.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.maxY, boundingBox.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.maxY, boundingBox.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.minY, boundingBox.minZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.minY, boundingBox.minZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.minY, boundingBox.maxZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.minY, boundingBox.maxZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.maxY, boundingBox.maxZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.maxY, boundingBox.maxZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.maxY, boundingBox.minZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.maxY, boundingBox.minZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.minY, boundingBox.maxZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.maxY, boundingBox.maxZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.maxY, boundingBox.minZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.minX, boundingBox.minY, boundingBox.minZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.minY, boundingBox.minZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.maxY, boundingBox.minZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.maxY, boundingBox.maxZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
worldrenderer.pos(boundingBox.maxX, boundingBox.minY, boundingBox.maxZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
|
||||||
Tessellator.draw();
|
|
||||||
worldrenderer.setTranslation(0.0D, 0.0D, 0.0D);
|
|
||||||
GlState.enableTexture2D();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void doRenderShadowAndFire(Entity entityIn, double x, double y, double z, float partialTicks)
|
|
||||||
{
|
|
||||||
if (this.renderManager.gm != null)
|
|
||||||
{
|
|
||||||
// if (this.renderManager.options.entityShadows && this.shadowSize > 0.0F && !entityIn.isInvisible() && this.renderManager.isRenderShadow())
|
|
||||||
// {
|
|
||||||
// double d0 = this.renderManager.getDistanceToCamera(entityIn.posX, entityIn.posY, entityIn.posZ);
|
|
||||||
// float f = (float)((1.0D - d0 / 256.0D) * (double)this.shadowOpaque);
|
|
||||||
//
|
|
||||||
// if (f > 0.0F)
|
|
||||||
// {
|
|
||||||
// this.renderShadow(entityIn, x, y, z, f, partialTicks);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (entityIn.canRenderOnFire()) // && (!(entityIn.isPlayer()) || !((EntityNPC)entityIn).isSpectator()))
|
|
||||||
{
|
|
||||||
this.renderEntityOnFire(entityIn, x, y, z, partialTicks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void renderLivingLabel(T entityIn, String str, double x, double y, double z, int maxDistance) {
|
|
||||||
double d0 = entityIn.getDistanceSqToEntity(this.renderManager.livingPlayer);
|
|
||||||
if (d0 <= (double)(maxDistance * maxDistance) && this.renderManager.gm.canRenderHud()) {
|
|
||||||
// WCF.glPushMatrix();
|
|
||||||
// WCF.glTranslatef((float)x, (float)y + entityIn.height + 0.5f, (float)z);
|
|
||||||
// float f = 1.0f / 64.0f;
|
|
||||||
// WCF.glScalef(f, f, f);
|
|
||||||
// int w, h;
|
|
||||||
// Vec2i size = Drawing.txt_size(0, 0, 0, 0, 65536, 65536, Font.DEFAULT, str);
|
|
||||||
// int tx = - size.xpos / 2;
|
|
||||||
// int ty = - size.ypos;
|
|
||||||
// Drawing.txt_draw(tx, ty, tx, ty, tx + 440, ty + 260, 0xffffffff, 0x3f000000, Font.DEFAULT, str);
|
|
||||||
//// this.renderManager.addOverlay(x, y + (double)entityIn.height + 0.5, z, str);
|
|
||||||
// WCF.glPopMatrix();
|
|
||||||
|
|
||||||
// FontRenderer fontrenderer = this.getFontRendererFromRenderManager();
|
|
||||||
float f = 1.0f; // 1.6F;
|
|
||||||
float f1 = 0.016666668F * f;
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
GL11.glTranslatef((float)x + 0.0F, (float)y + entityIn.height + 0.5F, (float)z);
|
|
||||||
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);
|
|
||||||
GlState.disableLighting();
|
|
||||||
GlState.depthMask(false);
|
|
||||||
// GlState.disableDepth();
|
|
||||||
GlState.enableBlend();
|
|
||||||
GlState.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
|
|
||||||
// Tessellator tessellator = Tessellator.getInstance();
|
|
||||||
RenderBuffer worldrenderer = Tessellator.getBuffer();
|
|
||||||
// int i = 0;
|
|
||||||
|
|
||||||
// if (str.equals("deadmau5"))
|
|
||||||
// {
|
|
||||||
// i = -10;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Vec2i size = Drawing.txt_size(0, 0, 0, 0, 65536, 65536, str);
|
|
||||||
// int j = size.xpos / 2;
|
|
||||||
// GlState.disableTexture2D();
|
|
||||||
// worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR);
|
|
||||||
// worldrenderer.pos((double)(-j - 1), (double)(-1 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
|
|
||||||
// worldrenderer.pos((double)(-j - 1), (double)(8 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
|
|
||||||
// worldrenderer.pos((double)(j + 1), (double)(8 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
|
|
||||||
// worldrenderer.pos((double)(j + 1), (double)(-1 + i), 0.0D).color(0.0F, 0.0F, 0.0F, 0.25F).endVertex();
|
|
||||||
// Tessellator.draw();
|
|
||||||
// GlState.enableTexture2D();
|
|
||||||
// int tx = -size.xpos / 2; // j;
|
|
||||||
// int ty = 0; // i;
|
|
||||||
// Drawing.txt_draw(tx, ty, tx, ty, tx + 440, ty + 260, /* 0xffffffff */ 553648127, 0x3f000000, Font.DEFAULT, str);
|
|
||||||
// FontRenderer.drawString(str, -FontRenderer.getStringWidth(str) / 2, i, 553648127);
|
|
||||||
// GlState.enableDepth();
|
|
||||||
GlState.depthMask(true);
|
|
||||||
Drawing.drawTextboxCentered(str, 0, 0, 0x3f000000);
|
|
||||||
// FontRenderer.drawString(str, -FontRenderer.getStringWidth(str) / 2, i, -1);
|
|
||||||
GlState.enableLighting();
|
|
||||||
GlState.disableBlend();
|
|
||||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public RenderManager getRenderManager()
|
|
||||||
{
|
|
||||||
return this.renderManager;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,57 @@ package client.renderer.entity;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import client.renderer.DefaultVertexFormats;
|
||||||
|
import client.renderer.GlState;
|
||||||
|
import client.renderer.RenderBuffer;
|
||||||
|
import client.renderer.Tessellator;
|
||||||
import common.entity.Entity;
|
import common.entity.Entity;
|
||||||
|
import common.util.BoundingBox;
|
||||||
|
|
||||||
|
|
||||||
public class RenderEntity extends Render<Entity>
|
public class RenderEntity extends Render<Entity>
|
||||||
{
|
{
|
||||||
|
public static void renderOffsetAABB(BoundingBox bb, double x, double y, double z)
|
||||||
|
{
|
||||||
|
GlState.disableTexture2D();
|
||||||
|
RenderBuffer rb = Tessellator.getBuffer();
|
||||||
|
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
rb.setTranslation(x, y, z);
|
||||||
|
rb.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_NORMAL);
|
||||||
|
rb.pos(bb.minX, bb.maxY, bb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.maxY, bb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.minY, bb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.minY, bb.minZ).normal(0.0F, 0.0F, -1.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.minY, bb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.minY, bb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.maxY, bb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.maxY, bb.maxZ).normal(0.0F, 0.0F, 1.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.minY, bb.minZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.minY, bb.minZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.minY, bb.maxZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.minY, bb.maxZ).normal(0.0F, -1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.maxY, bb.maxZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.maxY, bb.maxZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.maxY, bb.minZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.maxY, bb.minZ).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.minY, bb.maxZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.maxY, bb.maxZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.maxY, bb.minZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.minX, bb.minY, bb.minZ).normal(-1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.minY, bb.minZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.maxY, bb.minZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.maxY, bb.maxZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
rb.pos(bb.maxX, bb.minY, bb.maxZ).normal(1.0F, 0.0F, 0.0F).endVertex();
|
||||||
|
Tessellator.draw();
|
||||||
|
rb.setTranslation(0.0D, 0.0D, 0.0D);
|
||||||
|
GlState.enableTexture2D();
|
||||||
|
}
|
||||||
|
|
||||||
public RenderEntity(RenderManager renderManagerIn)
|
public RenderEntity(RenderManager renderManagerIn)
|
||||||
{
|
{
|
||||||
super(renderManagerIn);
|
super(renderManagerIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Renders the desired {@code T} type Entity.
|
|
||||||
*/
|
|
||||||
public void doRender(Entity entity, double x, double y, double z, float partialTicks)
|
public void doRender(Entity entity, double x, double y, double z, float partialTicks)
|
||||||
{
|
{
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
|
@ -23,9 +61,6 @@ public class RenderEntity extends Render<Entity>
|
||||||
super.doRender(entity, x, y, z, partialTicks);
|
super.doRender(entity, x, y, z, partialTicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
|
|
||||||
*/
|
|
||||||
protected String getEntityTexture(Entity entity)
|
protected String getEntityTexture(Entity entity)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class RenderEntityItem extends Render<EntityItem>
|
||||||
float f2 = p_177077_9_.getTransforms().get(Transforms.Camera.GROUND).scale();
|
float f2 = p_177077_9_.getTransforms().get(Transforms.Camera.GROUND).scale();
|
||||||
GL11.glTranslatef((float)p_177077_2_, (float)p_177077_4_ + f1 + 0.25F * f2, (float)p_177077_6_);
|
GL11.glTranslatef((float)p_177077_2_, (float)p_177077_4_ + f1 + 0.25F * f2, (float)p_177077_6_);
|
||||||
|
|
||||||
if (flag || this.renderManager.gm != null)
|
if (flag || this.manager.gm != null)
|
||||||
{
|
{
|
||||||
float f3 = (((float)itemIn.getAge() + p_177077_8_) / 20.0F + itemIn.hoverStart) * (180F / (float)Math.PI);
|
float f3 = (((float)itemIn.getAge() + p_177077_8_) / 20.0F + itemIn.hoverStart) * (180F / (float)Math.PI);
|
||||||
GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(f3, 0.0F, 1.0F, 0.0F);
|
||||||
|
|
|
@ -43,8 +43,8 @@ public class RenderFireball extends Render<EntityProjectile>
|
||||||
float f4 = 1.0F;
|
float f4 = 1.0F;
|
||||||
float f5 = 0.5F;
|
float f5 = 0.5F;
|
||||||
float f6 = 0.25F;
|
float f6 = 0.25F;
|
||||||
GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(180.0F - this.manager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||||
GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
|
GL11.glRotatef(-this.manager.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||||
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_NORMAL);
|
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_NORMAL);
|
||||||
worldrenderer.pos(-0.5D, -0.25D, 0.0D).tex((double)f, (double)f3).normal(0.0F, 1.0F, 0.0F).endVertex();
|
worldrenderer.pos(-0.5D, -0.25D, 0.0D).tex((double)f, (double)f3).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
worldrenderer.pos(0.5D, -0.25D, 0.0D).tex((double)f1, (double)f3).normal(0.0F, 1.0F, 0.0F).endVertex();
|
worldrenderer.pos(0.5D, -0.25D, 0.0D).tex((double)f1, (double)f3).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
|
|
|
@ -41,8 +41,8 @@ public class RenderFish extends Render<EntityHook>
|
||||||
float f4 = 1.0F;
|
float f4 = 1.0F;
|
||||||
float f5 = 0.5F;
|
float f5 = 0.5F;
|
||||||
float f6 = 0.5F;
|
float f6 = 0.5F;
|
||||||
GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(180.0F - this.manager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||||
GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
|
GL11.glRotatef(-this.manager.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||||
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_NORMAL);
|
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_NORMAL);
|
||||||
worldrenderer.pos(-0.5D, -0.5D, 0.0D).tex(0.0D, 0.25D).normal(0.0F, 1.0F, 0.0F).endVertex();
|
worldrenderer.pos(-0.5D, -0.5D, 0.0D).tex(0.0D, 0.25D).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
worldrenderer.pos(0.5D, -0.5D, 0.0D).tex(0.25D, 0.25D).normal(0.0F, 1.0F, 0.0F).endVertex();
|
worldrenderer.pos(0.5D, -0.5D, 0.0D).tex(0.25D, 0.25D).normal(0.0F, 1.0F, 0.0F).endVertex();
|
||||||
|
@ -66,7 +66,7 @@ public class RenderFish extends Render<EntityHook>
|
||||||
double d2 = entity.angler.prevZ + (entity.angler.posZ - entity.angler.prevZ) * (double)partialTicks + vec3.zCoord;
|
double d2 = entity.angler.prevZ + (entity.angler.posZ - entity.angler.prevZ) * (double)partialTicks + vec3.zCoord;
|
||||||
double d3 = (double)entity.angler.getEyeHeight();
|
double d3 = (double)entity.angler.getEyeHeight();
|
||||||
|
|
||||||
if (this.renderManager.gm != null && this.renderManager.gm.thirdPersonView > 0 || entity.angler != Client.CLIENT.player)
|
if (this.manager.gm != null && this.manager.gm.thirdPersonView > 0 || entity.angler != Client.CLIENT.player)
|
||||||
{
|
{
|
||||||
float f9 = (entity.angler.prevYawOffset + (entity.angler.yawOffset - entity.angler.prevYawOffset) * partialTicks) * (float)Math.PI / 180.0F;
|
float f9 = (entity.angler.prevYawOffset + (entity.angler.yawOffset - entity.angler.prevYawOffset) * partialTicks) * (float)Math.PI / 180.0F;
|
||||||
double d4 = (double)ExtMath.sin(f9);
|
double d4 = (double)ExtMath.sin(f9);
|
||||||
|
|
|
@ -69,12 +69,12 @@ public class RenderHumanoid extends RenderNpc
|
||||||
|
|
||||||
public void doRender(EntityNPC entity, double x, double y, double z, float partialTicks)
|
public void doRender(EntityNPC entity, double x, double y, double z, float partialTicks)
|
||||||
{
|
{
|
||||||
if (entity != this.renderManager.gm.player || this.renderManager.livingPlayer == entity)
|
if (entity != this.manager.gm.player || this.manager.livingPlayer == entity)
|
||||||
{
|
{
|
||||||
// if(entity.isBoss())
|
// if(entity.isBoss())
|
||||||
// BossStatus.setBossStatus(entity);
|
// BossStatus.setBossStatus(entity);
|
||||||
double d0 = y;
|
double d0 = y;
|
||||||
if(/* this.canSneak() && */ entity.isSneakingVisually() && entity != this.renderManager.gm.player)
|
if(/* this.canSneak() && */ entity.isSneakingVisually() && entity != this.manager.gm.player)
|
||||||
d0 = y - 0.125D;
|
d0 = y - 0.125D;
|
||||||
this.setModelVisibilities(entity);
|
this.setModelVisibilities(entity);
|
||||||
super.doRender(entity, x, d0, z, partialTicks);
|
super.doRender(entity, x, d0, z, partialTicks);
|
||||||
|
|
|
@ -28,8 +28,8 @@ public class RenderItemEntity<T extends Entity> extends Render<T>
|
||||||
GL11.glTranslatef((float)x, (float)y, (float)z);
|
GL11.glTranslatef((float)x, (float)y, (float)z);
|
||||||
GlState.enableRescaleNormal();
|
GlState.enableRescaleNormal();
|
||||||
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||||
GL11.glRotatef(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(-this.manager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||||
GL11.glRotatef(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
|
GL11.glRotatef(this.manager.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||||
this.bindTexture(TextureMap.BLOCKS);
|
this.bindTexture(TextureMap.BLOCKS);
|
||||||
this.itemRenderer.renderItem(this.getStack(entity), Transforms.Camera.GROUND);
|
this.itemRenderer.renderItem(this.getStack(entity), Transforms.Camera.GROUND);
|
||||||
GlState.disableRescaleNormal();
|
GlState.disableRescaleNormal();
|
||||||
|
|
|
@ -38,7 +38,7 @@ public abstract class RenderLiving<T extends EntityLiving> extends RendererLivin
|
||||||
|
|
||||||
public void doRender(T entity, double x, double y, double z, float partial) {
|
public void doRender(T entity, double x, double y, double z, float partial) {
|
||||||
if(entity.isBoss())
|
if(entity.isBoss())
|
||||||
this.renderManager.gm.setBossStatus(entity);
|
this.manager.gm.setBossStatus(entity);
|
||||||
super.doRender(entity, x, y, z, partial);
|
super.doRender(entity, x, y, z, partial);
|
||||||
this.renderLeash(entity, x, y, z, partial);
|
this.renderLeash(entity, x, y, z, partial);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,11 +8,14 @@ import org.lwjgl.opengl.GL13;
|
||||||
import client.Client;
|
import client.Client;
|
||||||
import client.init.RenderRegistry;
|
import client.init.RenderRegistry;
|
||||||
import client.renderer.DefaultVertexFormats;
|
import client.renderer.DefaultVertexFormats;
|
||||||
|
import client.renderer.Drawing;
|
||||||
import client.renderer.GlState;
|
import client.renderer.GlState;
|
||||||
import client.renderer.RenderBuffer;
|
import client.renderer.RenderBuffer;
|
||||||
import client.renderer.RenderGlobal;
|
import client.renderer.RenderGlobal;
|
||||||
import client.renderer.Tessellator;
|
import client.renderer.Tessellator;
|
||||||
|
import client.renderer.texture.TextureAtlasSprite;
|
||||||
import client.renderer.texture.TextureManager;
|
import client.renderer.texture.TextureManager;
|
||||||
|
import client.renderer.texture.TextureMap;
|
||||||
import common.collect.Maps;
|
import common.collect.Maps;
|
||||||
import common.entity.Entity;
|
import common.entity.Entity;
|
||||||
import common.entity.types.EntityLiving;
|
import common.entity.types.EntityLiving;
|
||||||
|
@ -239,24 +242,6 @@ public class RenderManager
|
||||||
return this.renderEntity(entity, d0 - this.renderPosX, d1 - this.renderPosY, d2 - this.renderPosZ, partialTicks);
|
return this.renderEntity(entity, d0 - this.renderPosX, d1 - this.renderPosY, d2 - this.renderPosZ, partialTicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderFloatingBox(Entity entityIn, float partialTicks)
|
|
||||||
{
|
|
||||||
double d0 = entityIn.lastTickPosX + (entityIn.posX - entityIn.lastTickPosX) * (double)partialTicks;
|
|
||||||
double d1 = entityIn.lastTickPosY + (entityIn.posY - entityIn.lastTickPosY) * (double)partialTicks;
|
|
||||||
double d2 = entityIn.lastTickPosZ + (entityIn.posZ - entityIn.lastTickPosZ) * (double)partialTicks;
|
|
||||||
Render<Entity> render = this.<Entity>getEntityRenderObject(entityIn);
|
|
||||||
|
|
||||||
if (render != null && this.renderEngine != null)
|
|
||||||
{
|
|
||||||
int i = entityIn.getBrightnessForRender(partialTicks);
|
|
||||||
int j = i % 65536;
|
|
||||||
int k = i / 65536;
|
|
||||||
GL13.glMultiTexCoord2f(GL13.GL_TEXTURE1, (float)j / 1.0F, (float)k / 1.0F);
|
|
||||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
|
||||||
render.renderName(entityIn, d0 - this.renderPosX, d1 - this.renderPosY, d2 - this.renderPosZ);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean renderEntity(Entity entity, double x, double y, double z, float partialTicks)
|
public boolean renderEntity(Entity entity, double x, double y, double z, float partialTicks)
|
||||||
{
|
{
|
||||||
Render<Entity> render = this.<Entity>getEntityRenderObject(entity);
|
Render<Entity> render = this.<Entity>getEntityRenderObject(entity);
|
||||||
|
@ -270,9 +255,9 @@ public class RenderManager
|
||||||
|
|
||||||
render.doRender(entity, x, y, z, partialTicks);
|
render.doRender(entity, x, y, z, partialTicks);
|
||||||
|
|
||||||
if (!this.renderOutlines)
|
if (!this.renderOutlines && this.gm != null && entity.canRenderOnFire())
|
||||||
{
|
{
|
||||||
render.doRenderShadowAndFire(entity, x, y, z, partialTicks);
|
this.renderEntityFire(entity, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.debugBoundingBox) // && !entity.isInvisible()) // && !hideDebugBox)
|
if (this.debugBoundingBox) // && !entity.isInvisible()) // && !hideDebugBox)
|
||||||
|
@ -287,6 +272,85 @@ public class RenderManager
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void renderLabel(Entity entity, String str, double x, double y, double z, int maxDistance) {
|
||||||
|
if(this.gm == null)
|
||||||
|
return;
|
||||||
|
double dist = entity.getDistanceSqToEntity(this.livingPlayer);
|
||||||
|
if(dist > (double)(maxDistance * maxDistance) || !this.gm.canRenderHud())
|
||||||
|
return;
|
||||||
|
float scale = 0.016666668F;
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslatef((float)x + 0.0F, (float)y + entity.height + 0.5F, (float)z);
|
||||||
|
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glRotatef(-this.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glRotatef(this.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||||
|
GL11.glScalef(-scale, -scale, scale);
|
||||||
|
GlState.disableLighting();
|
||||||
|
GlState.depthMask(false);
|
||||||
|
GlState.enableBlend();
|
||||||
|
GlState.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
|
||||||
|
GlState.depthMask(true);
|
||||||
|
Drawing.drawTextboxCentered(str, 0, 0, 0x3f000000);
|
||||||
|
GlState.enableLighting();
|
||||||
|
GlState.disableBlend();
|
||||||
|
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderEntityFire(Entity entity, double x, double y, double z)
|
||||||
|
{
|
||||||
|
GlState.disableLighting();
|
||||||
|
TextureMap map = this.gm.getTextureMapBlocks();
|
||||||
|
TextureAtlasSprite layer0 = map.getAtlasSprite("blocks/fire_layer_0");
|
||||||
|
TextureAtlasSprite layer1 = map.getAtlasSprite("blocks/fire_layer_1");
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslatef((float)x, (float)y, (float)z);
|
||||||
|
float scale = entity.width * 1.4F;
|
||||||
|
GL11.glScalef(scale, scale, scale);
|
||||||
|
RenderBuffer rb = Tessellator.getBuffer();
|
||||||
|
float f1 = 0.5F;
|
||||||
|
float f2 = 0.0F;
|
||||||
|
float f3 = entity.height / scale;
|
||||||
|
float f4 = (float)(entity.posY - entity.getEntityBoundingBox().minY);
|
||||||
|
GL11.glRotatef(-this.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glTranslatef(0.0F, 0.0F, -0.3F + (float)((int)f3) * 0.02F);
|
||||||
|
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
float f5 = 0.0F;
|
||||||
|
int i = 0;
|
||||||
|
rb.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
|
||||||
|
|
||||||
|
while (f3 > 0.0F)
|
||||||
|
{
|
||||||
|
TextureAtlasSprite layer = i % 2 == 0 ? layer0 : layer1;
|
||||||
|
this.renderEngine.bindTexture(TextureMap.BLOCKS);
|
||||||
|
float f6 = layer.getMinU();
|
||||||
|
float f7 = layer.getMinV();
|
||||||
|
float f8 = layer.getMaxU();
|
||||||
|
float f9 = layer.getMaxV();
|
||||||
|
|
||||||
|
if (i / 2 % 2 == 0)
|
||||||
|
{
|
||||||
|
float f10 = f8;
|
||||||
|
f8 = f6;
|
||||||
|
f6 = f10;
|
||||||
|
}
|
||||||
|
|
||||||
|
rb.pos((double)(f1 - f2), (double)(0.0F - f4), (double)f5).tex((double)f8, (double)f9).endVertex();
|
||||||
|
rb.pos((double)(-f1 - f2), (double)(0.0F - f4), (double)f5).tex((double)f6, (double)f9).endVertex();
|
||||||
|
rb.pos((double)(-f1 - f2), (double)(1.4F - f4), (double)f5).tex((double)f6, (double)f7).endVertex();
|
||||||
|
rb.pos((double)(f1 - f2), (double)(1.4F - f4), (double)f5).tex((double)f8, (double)f7).endVertex();
|
||||||
|
f3 -= 0.45F;
|
||||||
|
f4 -= 0.45F;
|
||||||
|
f1 *= 0.9F;
|
||||||
|
f5 += 0.03F;
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tessellator.draw();
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
GlState.enableLighting();
|
||||||
|
}
|
||||||
|
|
||||||
private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float partialTicks)
|
private void renderDebugBoundingBox(Entity entityIn, double x, double y, double z, float partialTicks)
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,8 +39,8 @@ public class RenderXp extends Render<EntityXp> {
|
||||||
float n = (int)((ExtMath.sin(color + (float)Math.PI) + 1.0F) * 0.5F * 255.0F);
|
float n = (int)((ExtMath.sin(color + (float)Math.PI) + 1.0F) * 0.5F * 255.0F);
|
||||||
int r = (int)(n * (value / 10.0f));
|
int r = (int)(n * (value / 10.0f));
|
||||||
int b = (int)(n * ((10 - value) / 10.0f));
|
int b = (int)(n * ((10 - value) / 10.0f));
|
||||||
GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(180.0F - this.manager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||||
GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
|
GL11.glRotatef(-this.manager.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||||
float size = 0.25F;
|
float size = 0.25F;
|
||||||
GL11.glScalef(size, size, size);
|
GL11.glScalef(size, size, size);
|
||||||
RenderBuffer rb = Tessellator.getBuffer();
|
RenderBuffer rb = Tessellator.getBuffer();
|
||||||
|
@ -64,7 +64,10 @@ public class RenderXp extends Render<EntityXp> {
|
||||||
return TEXTURE;
|
return TEXTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void renderLivingLabel(EntityXp entityIn, String str, double x, double y, double z, int maxDistance) {
|
protected void renderName(EntityXp entity, double x, double y, double z)
|
||||||
super.renderLivingLabel(entityIn, str, x, y - 0.5, z, maxDistance);
|
{
|
||||||
}
|
String name = entity.getDisplayName();
|
||||||
|
if(name != null && !name.isEmpty())
|
||||||
|
this.manager.renderLabel(entity, name, x, y - 0.5, z, 64);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -502,9 +502,9 @@ public abstract class RendererLivingEntity<T extends EntityLiving> extends Rende
|
||||||
{
|
{
|
||||||
String name = entity.getDisplayName();
|
String name = entity.getDisplayName();
|
||||||
if(name != null && !name.isEmpty())
|
if(name != null && !name.isEmpty())
|
||||||
this.renderLivingLabel(entity, name, x, entity.isSneakingVisually() ? y - 0.25 : y, z, 64);
|
this.manager.renderLabel(entity, name, x, entity.isSneakingVisually() ? y - 0.25 : y, z, 64);
|
||||||
if(entity.isEntityAlive())
|
if(entity.isEntityAlive())
|
||||||
this.renderLivingLabel(entity, entity.formatStats(), x, (entity.isSneakingVisually() ? y - 0.25 : y) + 0.3, z, 32);
|
this.manager.renderLabel(entity, entity.formatStats(), x, (entity.isSneakingVisually() ? y - 0.25 : y) + 0.3, z, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
// protected boolean canRenderName(T entity)
|
// protected boolean canRenderName(T entity)
|
||||||
|
|
|
@ -49,16 +49,7 @@ import common.util.Vec3;
|
||||||
import common.vars.Vars;
|
import common.vars.Vars;
|
||||||
|
|
||||||
public abstract class World implements IWorldAccess {
|
public abstract class World implements IWorldAccess {
|
||||||
public static final float[][] BRIGHTNESS = new float[16][16];
|
public static final float[] BRIGHTNESS = new float[] {0.0f, 0.02f, 0.04f, 0.06f, 0.08f, 0.11f, 0.14f, 0.18f, 0.22f, 0.27f, 0.33f, 0.41f, 0.5f, 0.62f, 0.78f, 1.0f};
|
||||||
static {
|
|
||||||
for(int bright = 0; bright < 16; bright++) {
|
|
||||||
float br = (float)bright / 15.0f;
|
|
||||||
for(int idx = 0; idx <= 15; idx++) {
|
|
||||||
float sub = 1.0F - (float)idx / 15.0F;
|
|
||||||
BRIGHTNESS[bright][idx] = (1.0F - sub) / (sub * 3.0F + 1.0F) * (1.0F - br) + br;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static final float[] MOON_PHASES = new float[] {1.0F, 0.75F, 0.5F, 0.25F, 0.0F, 0.25F, 0.5F, 0.75F};
|
public static final float[] MOON_PHASES = new float[] {1.0F, 0.75F, 0.5F, 0.25F, 0.0F, 0.25F, 0.5F, 0.75F};
|
||||||
public static final int MAX_SIZE = 67108864;
|
public static final int MAX_SIZE = 67108864;
|
||||||
public static final int MAX_SIZE_Y = 4096;
|
public static final int MAX_SIZE_Y = 4096;
|
||||||
|
@ -568,7 +559,7 @@ public abstract class World implements IWorldAccess {
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getLightBrightness(BlockPos pos) {
|
public float getLightBrightness(BlockPos pos) {
|
||||||
return BRIGHTNESS[this.dimension.getBrightness()][this.getLightFromNeighbors(pos)];
|
return Math.max(BRIGHTNESS[this.getLightFromNeighbors(pos)], (float)this.dimension.getBrightness() / 15.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public State getState(BlockPos pos) {
|
public State getState(BlockPos pos) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue