Partial lighting fix

This commit is contained in:
nikita488 2016-12-18 18:47:21 +03:00
parent 16ccbb2cdf
commit 593bb7c453

View file

@ -23,6 +23,7 @@ import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.pipeline.LightUtil;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
public class RenderBlocks implements ICCBlockRenderer { public class RenderBlocks implements ICCBlockRenderer {
@ -62,57 +63,14 @@ public class RenderBlocks implements ICCBlockRenderer {
int color; int color;
TextureAtlasSprite sprite; TextureAtlasSprite sprite;
if(state.shouldSideBeRendered(world, pos, EnumFacing.UP)) { for(EnumFacing side : EnumFacing.VALUES) {
if((sprite = aOres.getWorldIcon(world, pos, state, EnumFacing.UP)) != null) { if(state.shouldSideBeRendered(world, pos, side)) {
color = aOres.getColorMultiplier(world, pos, state); if((sprite = aOres.getWorldIcon(world, pos, state, side)) != null) {
t.setPos(pos.getX(), pos.getY() + 1, pos.getZ()); color = aOres.getColorMultiplier(world, pos, state);
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t); t.setPos(pos.getX(), pos.getY(), pos.getZ()).move(side);
renderYPos(sprite, x, y, z, color, lightmap, buffer); lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
} renderFace(sprite, x, y, z, color, lightmap, buffer, side);
} }
if(state.shouldSideBeRendered(world, pos, EnumFacing.DOWN)) {
if((sprite = aOres.getWorldIcon(world, pos, state, EnumFacing.DOWN)) != null) {
color = aOres.getColorMultiplier(world, pos, state);
t.setPos(pos.getX(), pos.getY() - 1, pos.getZ());
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderYNeg(sprite, x, y, z, color, lightmap, buffer);
}
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.NORTH)) {
if((sprite = aOres.getWorldIcon(world, pos, state, EnumFacing.NORTH)) != null) {
color = aOres.getColorMultiplier(world, pos, state);
t.setPos(pos.getX(), pos.getY(), pos.getZ() - 1);
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderZNeg(sprite, x, y, z, color, lightmap, buffer);
}
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.SOUTH)) {
if((sprite = aOres.getWorldIcon(world, pos, state, EnumFacing.SOUTH)) != null) {
color = aOres.getColorMultiplier(world, pos, state);
t.setPos(pos.getX(), pos.getY(), pos.getZ() + 1);
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderZPos(sprite, x, y, z, color, lightmap, buffer);
}
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.WEST)) {
if((sprite = aOres.getWorldIcon(world, pos, state, EnumFacing.WEST)) != null) {
color = aOres.getColorMultiplier(world, pos, state);
t.setPos(pos.getX() - 1, pos.getY(), pos.getZ());
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderXNeg(sprite, x, y, z, color, lightmap, buffer);
}
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.EAST)) {
if((sprite = aOres.getWorldIcon(world, pos, state, EnumFacing.EAST)) != null) {
color = aOres.getColorMultiplier(world, pos, state);
t.setPos(pos.getX() + 1, pos.getY(), pos.getZ());
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderXPos(sprite, x, y, z, color, lightmap, buffer);
} }
} }
@ -133,48 +91,14 @@ public class RenderBlocks implements ICCBlockRenderer {
TextureAtlasSprite sprite1 = aOres.getStoneTypeSafe(state).mIconContainer.getIcon(); TextureAtlasSprite sprite1 = aOres.getStoneTypeSafe(state).mIconContainer.getIcon();
TextureAtlasSprite sprite2 = mats.mIconSet.mTextures[small ? TextureSet.INDEX_oreSmall : TextureSet.INDEX_ore].getIcon(); TextureAtlasSprite sprite2 = mats.mIconSet.mTextures[small ? TextureSet.INDEX_oreSmall : TextureSet.INDEX_ore].getIcon();
if(state.shouldSideBeRendered(world, pos, EnumFacing.UP)) { for (EnumFacing side : EnumFacing.VALUES) {
t.setPos(pos.getX(), pos.getY() + 1, pos.getZ()); if (state.shouldSideBeRendered(world, pos, side)) {
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t); t.setPos(pos.getX(), pos.getY(), pos.getZ()).move(side);
renderYPos(sprite1, x, y, z, 0xFFFFFFFF, lightmap, buffer); lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderYPos(sprite2, x, y, z, color, lightmap, buffer); renderFace(sprite1, x, y, z, 0xFFFFFFFF, lightmap, buffer, side);
renderFace(sprite2, x, y, z, color, lightmap, buffer, side);
}
} }
if(state.shouldSideBeRendered(world, pos, EnumFacing.DOWN)) {
t.setPos(pos.getX(), pos.getY() - 1, pos.getZ());
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderYNeg(sprite1, x, y, z, 0xFFFFFFFF, lightmap, buffer);
renderYNeg(sprite2, x, y, z, color, lightmap, buffer);
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.NORTH)) {
t.setPos(pos.getX(), pos.getY(), pos.getZ() - 1);
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderZNeg(sprite1, x, y, z, 0xFFFFFFFF, lightmap, buffer);
renderZNeg(sprite2, x, y, z, color, lightmap, buffer);
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.SOUTH)) {
t.setPos(pos.getX(), pos.getY(), pos.getZ() + 1);
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderZPos(sprite1, x, y, z, 0xFFFFFFFF, lightmap, buffer);
renderZPos(sprite2, x, y, z, color, lightmap, buffer);
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.WEST)) {
t.setPos(pos.getX() - 1, pos.getY(), pos.getZ());
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderXNeg(sprite1, x, y, z, 0xFFFFFFFF, lightmap, buffer);
renderXNeg(sprite2, x, y, z, color, lightmap, buffer);
}
if(state.shouldSideBeRendered(world, pos, EnumFacing.EAST)) {
t.setPos(pos.getX() + 1, pos.getY(), pos.getZ());
lightmap = world.getBlockState(t).getPackedLightmapCoords(world, t);
renderXPos(sprite1, x, y, z, 0xFFFFFFFF, lightmap, buffer);
renderXPos(sprite2, x, y, z, color, lightmap, buffer);
}
} }
public void renderBlockAsItem(ItemStack itemStack) { public void renderBlockAsItem(ItemStack itemStack) {
@ -301,15 +225,17 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.UP);
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + maxY, z + maxZ).color(r, g, b, a).tex(minU, maxV).normal(0.0f, 1.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, maxV).normal(0.0f, 1.0f, 0.0f).endVertex();
buffer.pos(x + maxX, y + maxY, z + maxZ).color(r, g, b, a).tex(maxU, maxV).normal(0.0f, 1.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, maxV).normal(0.0f, 1.0f, 0.0f).endVertex();
buffer.pos(x + maxX, y + maxY, z + minZ).color(r, g, b, a).tex(maxU, minV).normal(0.0f, 1.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, minV).normal(0.0f, 1.0f, 0.0f).endVertex();
buffer.pos(x + minX, y + maxY, z + minZ).color(r, g, b, a).tex(minU, minV).normal(0.0f, 1.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, minV).normal(0.0f, 1.0f, 0.0f).endVertex();
} }
@ -319,15 +245,17 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.DOWN);
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + minY, z + minZ).color(r, g, b, a).tex(minU, minV).normal(0.0f, -1.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, minV).normal(0.0f, -1.0f, 0.0f).endVertex();
buffer.pos(x + maxX, y + minY, z + minZ).color(r, g, b, a).tex(maxU, minV).normal(0.0f, -1.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, minV).normal(0.0f, -1.0f, 0.0f).endVertex();
buffer.pos(x + maxX, y + minY, z + maxZ).color(r, g, b, a).tex(maxU, maxV).normal(0.0f, -1.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, maxV).normal(0.0f, -1.0f, 0.0f).endVertex();
buffer.pos(x + minX, y + minY, z + maxZ).color(r, g, b, a).tex(minU, maxV).normal(0.0f, -1.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, maxV).normal(0.0f, -1.0f, 0.0f).endVertex();
} }
public void renderZNegItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) { public void renderZNegItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) {
@ -336,16 +264,17 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.NORTH);
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(0.0f, 0.0f, -1.0f).endVertex(); buffer.pos(x + minX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(0.0f, 0.0f, -1.0f).endVertex();
buffer.pos(x + minX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(0.0f, 0.0f, -1.0f).endVertex(); buffer.pos(x + minX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(0.0f, 0.0f, -1.0f).endVertex();
buffer.pos(x + maxX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(0.0f, 0.0f, -1.0f).endVertex(); buffer.pos(x + maxX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(0.0f, 0.0f, -1.0f).endVertex();
buffer.pos(x + maxX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(0.0f, 0.0f, -1.0f).endVertex(); buffer.pos(x + maxX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(0.0f, 0.0f, -1.0f).endVertex();
} }
public void renderZPosItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) { public void renderZPosItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) {
@ -354,16 +283,17 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.SOUTH);
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + maxX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(0.0f, 0.0f, 1.0f).endVertex(); buffer.pos(x + maxX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(0.0f, 0.0f, 1.0f).endVertex();
buffer.pos(x + maxX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(0.0f, 0.0f, 1.0f).endVertex(); buffer.pos(x + maxX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(0.0f, 0.0f, 1.0f).endVertex();
buffer.pos(x + minX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(0.0f, 0.0f, 1.0f).endVertex(); buffer.pos(x + minX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(0.0f, 0.0f, 1.0f).endVertex();
buffer.pos(x + minX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(0.0f, 0.0f, 1.0f).endVertex(); buffer.pos(x + minX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(0.0f, 0.0f, 1.0f).endVertex();
} }
public void renderXNegItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) { public void renderXNegItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) {
@ -372,15 +302,17 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.WEST);
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(-1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(-1.0f, 0.0f, 0.0f).endVertex();
buffer.pos(x + minX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(-1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(-1.0f, 0.0f, 0.0f).endVertex();
buffer.pos(x + minX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(-1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(-1.0f, 0.0f, 0.0f).endVertex();
buffer.pos(x + minX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(-1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + minX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(-1.0f, 0.0f, 0.0f).endVertex();
} }
public void renderXPosItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) { public void renderXPosItem(TextureAtlasSprite sprite, double x, double y, double z, int color, VertexBuffer buffer) {
@ -389,17 +321,41 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.EAST);
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + maxX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).normal(1.0f, 0.0f, 0.0f).endVertex();
buffer.pos(x + maxX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).normal(1.0f, 0.0f, 0.0f).endVertex();
buffer.pos(x + maxX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).normal(1.0f, 0.0f, 0.0f).endVertex();
buffer.pos(x + maxX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(1.0f, 0.0f, 0.0f).endVertex(); buffer.pos(x + maxX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).normal(1.0f, 0.0f, 0.0f).endVertex();
} }
public void renderFace(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer, EnumFacing side) {
switch (side) {
case DOWN:
renderYNeg(sprite, x, y, z, color, lightmap, buffer);
break;
case UP:
renderYPos(sprite, x, y, z, color, lightmap, buffer);
break;
case NORTH:
renderZNeg(sprite, x, y, z, color, lightmap, buffer);
break;
case SOUTH:
renderZPos(sprite, x, y, z, color, lightmap, buffer);
break;
case WEST:
renderXNeg(sprite, x, y, z, color, lightmap, buffer);
break;
case EAST:
renderXPos(sprite, x, y, z, color, lightmap, buffer);
break;
}
}
public void renderYPos(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) { public void renderYPos(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) {
float r = ((color >> 16) & 0xFF) / 255.0f; float r = ((color >> 16) & 0xFF) / 255.0f;
@ -407,19 +363,20 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.UP);
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26); int light1 = lightmap >> 16 & 65535;
int light2 = Math.max(0, (lightmap & 65535) - 26); int light2 = lightmap & 65535;
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + maxY, z + maxZ).color(r, g, b, a).tex(minU, maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + maxY, z + maxZ).color(r, g, b, a).tex(maxU, maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + maxY, z + minZ).color(r, g, b, a).tex(maxU, minV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, minV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + maxY, z + minZ).color(r, g, b, a).tex(minU, minV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, minV).lightmap(light1, light2).endVertex();
} }
@ -429,19 +386,20 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.DOWN);
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26); int light1 = lightmap >> 16 & 65535;
int light2 = Math.max(0, (lightmap & 65535) - 26); int light2 = lightmap & 65535;
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + minY, z + minZ).color(r, g, b, a).tex(minU, minV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, minV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + minY, z + minZ).color(r, g, b, a).tex(maxU, minV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, minV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + minY, z + maxZ).color(r, g, b, a).tex(maxU, maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(maxU, maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + minY, z + maxZ).color(r, g, b, a).tex(minU, maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(minU, maxV).lightmap(light1, light2).endVertex();
} }
public void renderZNeg(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) { public void renderZNeg(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) {
@ -450,19 +408,20 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.NORTH);
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26); int light1 = lightmap >> 16 & 65535;
int light2 = Math.max(0, (lightmap & 65535) - 26); int light2 = lightmap & 65535;
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
} }
public void renderZPos(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) { public void renderZPos(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) {
@ -471,19 +430,20 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.SOUTH);
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26); int light1 = lightmap >> 16 & 65535;
int light2 = Math.max(0, (lightmap & 65535) - 26); int light2 = lightmap & 65535;
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + maxX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
} }
public void renderXNeg(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) { public void renderXNeg(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) {
@ -492,19 +452,20 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
float diffuse = LightUtil.diffuseLight(EnumFacing.WEST);
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26); int light1 = lightmap >> 16 & 65535;
int light2 = Math.max(0, (lightmap & 65535) - 26); int light2 = lightmap & 65535;
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + minX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + minX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + minX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
} }
public void renderXPos(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) { public void renderXPos(TextureAtlasSprite sprite, double x, double y, double z, int color, int lightmap, VertexBuffer buffer) {
@ -513,18 +474,20 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f; float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f; float a = ((color >> 24) & 0xFF) / 255.0f;
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26); float diffuse = LightUtil.diffuseLight(EnumFacing.EAST);
int light2 = Math.max(0, (lightmap & 65535) - 26);
int light1 = lightmap >> 16 & 65535;
int light2 = lightmap & 65535;
double minU = sprite.getMinU(); double minU = sprite.getMinU();
double minV = sprite.getMinV(); double minV = sprite.getMinV();
double maxU = sprite.getMaxU(); double maxU = sprite.getMaxU();
double maxV = sprite.getMaxV(); double maxV = sprite.getMaxV();
buffer.pos(x + maxX, y + minY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + minY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + maxY, z + minZ).color(r, g, b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + maxY, z + minZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? maxU : minU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + maxY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + maxY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? minV : maxV).lightmap(light1, light2).endVertex();
buffer.pos(x + maxX, y + minY, z + maxZ).color(r, g, b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex(); buffer.pos(x + maxX, y + minY, z + maxZ).color(diffuse * r, diffuse * g, diffuse * b, a).tex(flip ? minU : maxU, flip ? maxV : minV).lightmap(light1, light2).endVertex();
} }
} }