Gates and wires now glow in the dark when active
Note: Some texture re-work might be necessary... I think the current lit texture are far too bright. Found a bug: popping a gate out of the pipe doesn't update it on the client side (a.k.a. the gate pops out but is still rendered on the pipe)
After Width: | Height: | Size: 156 B |
After Width: | Height: | Size: 200 B |
After Width: | Height: | Size: 194 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 126 B |
Before Width: | Height: | Size: 126 B |
After Width: | Height: | Size: 156 B |
After Width: | Height: | Size: 200 B |
After Width: | Height: | Size: 194 B |
|
@ -211,7 +211,7 @@ public class RenderRobot extends Render implements IItemRenderer {
|
||||||
GL11.glDisable(GL11.GL_LIGHTING);
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
|
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
|
||||||
GL11.glDepthMask(true);
|
GL11.glDepthMask(true);
|
||||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 61680 % 65536, 61680 / 65536);
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 61680, 0);
|
||||||
box.render(factor);
|
box.render(factor);
|
||||||
GL11.glDisable(GL11.GL_BLEND);
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||||
|
|
|
@ -111,6 +111,9 @@ public final class GateDefinition {
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
private IIcon iconItem;
|
private IIcon iconItem;
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
private IIcon iconGate;
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public IIcon getIconLit() {
|
public IIcon getIconLit() {
|
||||||
return iconLit;
|
return iconLit;
|
||||||
|
@ -121,6 +124,11 @@ public final class GateDefinition {
|
||||||
return iconDark;
|
return iconDark;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IIcon getGateIcon() {
|
||||||
|
return iconGate;
|
||||||
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public IIcon getIconItem() {
|
public IIcon getIconItem() {
|
||||||
return iconItem;
|
return iconItem;
|
||||||
|
@ -132,8 +140,10 @@ public final class GateDefinition {
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void registerBlockIcon(IIconRegister iconRegister) {
|
public void registerBlockIcon(IIconRegister iconRegister) {
|
||||||
iconLit = iconRegister.registerIcon("buildcraft:gates/gate_lit_" + getTag());
|
iconLit = iconRegister.registerIcon("buildcraft:gates/gate_" + getTag() + "_lit");
|
||||||
iconDark = iconRegister.registerIcon("buildcraft:gates/gate_dark_" + getTag());
|
iconDark = iconRegister.registerIcon("buildcraft:gates/gate_" + getTag() + "_dark");
|
||||||
|
|
||||||
|
iconGate = iconRegister.registerIcon("buildcraft:gates/gate_" + getTag());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
|
|
@ -11,9 +11,8 @@ package buildcraft.transport.render;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import net.minecraft.client.model.ModelBase;
|
import net.minecraft.client.model.ModelBase;
|
||||||
import net.minecraft.client.model.ModelRenderer;
|
|
||||||
import net.minecraft.client.renderer.GLAllocation;
|
import net.minecraft.client.renderer.GLAllocation;
|
||||||
import net.minecraft.client.renderer.RenderHelper;
|
import net.minecraft.client.renderer.OpenGlHelper;
|
||||||
import net.minecraft.client.renderer.entity.RenderItem;
|
import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
import net.minecraft.client.renderer.entity.RenderManager;
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
import net.minecraft.client.renderer.texture.TextureMap;
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
|
@ -76,8 +75,6 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
private final int[] angleY = {0, 0, 270, 90, 0, 180};
|
private final int[] angleY = {0, 0, 270, 90, 0, 180};
|
||||||
private final int[] angleZ = {90, 270, 0, 0, 0, 0};
|
private final int[] angleZ = {90, 270, 0, 0, 0, 0};
|
||||||
|
|
||||||
private ModelRenderer box;
|
|
||||||
|
|
||||||
private final EntityItem dummyEntityItem = new EntityItem(null);
|
private final EntityItem dummyEntityItem = new EntityItem(null);
|
||||||
private final RenderItem customRenderItem;
|
private final RenderItem customRenderItem;
|
||||||
private boolean initialized = false;
|
private boolean initialized = false;
|
||||||
|
@ -103,13 +100,6 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
customRenderItem.setRenderManager(RenderManager.instance);
|
customRenderItem.setRenderManager(RenderManager.instance);
|
||||||
|
|
||||||
box = new ModelRenderer(model, 0, 0);
|
|
||||||
//box.addBox(0, 64 + 1, 64 + 1, 16, 128 - 2, 128 - 2);
|
|
||||||
box.addBox(0, 4 + 1, 4 + 1, 2, 8 - 2, 8 - 2);
|
|
||||||
box.rotationPointX = 0;
|
|
||||||
box.rotationPointY = 0;
|
|
||||||
box.rotationPointZ = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DisplayFluidList getDisplayFluidLists(int liquidId, World world) {
|
private DisplayFluidList getDisplayFluidLists(int liquidId, World world) {
|
||||||
|
@ -421,12 +411,6 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
boolean found = foundX || foundY || foundZ;
|
boolean found = foundX || foundY || foundZ;
|
||||||
|
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
|
|
||||||
GL11.glEnable(GL11.GL_LIGHTING);
|
|
||||||
GL11.glDisable(GL11.GL_BLEND);
|
|
||||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
|
||||||
RenderHelper.disableStandardItemLighting();
|
|
||||||
|
|
||||||
GL11.glColor3f(1, 1, 1);
|
GL11.glColor3f(1, 1, 1);
|
||||||
GL11.glTranslatef((float) x, (float) y, (float) z);
|
GL11.glTranslatef((float) x, (float) y, (float) z);
|
||||||
|
|
||||||
|
@ -440,13 +424,14 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
RenderInfo renderBox = new RenderInfo();
|
RenderInfo renderBox = new RenderInfo();
|
||||||
renderBox.texture = BuildCraftTransport.instance.wireIconProvider.getIcon(state.wireMatrix.getWireIconIndex(color));
|
renderBox.texture = BuildCraftTransport.instance.wireIconProvider.getIcon(state.wireMatrix.getWireIconIndex(color));
|
||||||
|
boolean isLit = (state.wireMatrix.getWireIconIndex(color) & 1) > 0;
|
||||||
|
|
||||||
// Z render
|
// Z render
|
||||||
|
|
||||||
if (minZ != CoreConstants.PIPE_MIN_POS || maxZ != CoreConstants.PIPE_MAX_POS || !found) {
|
if (minZ != CoreConstants.PIPE_MIN_POS || maxZ != CoreConstants.PIPE_MAX_POS || !found) {
|
||||||
renderBox.setBounds(cx == CoreConstants.PIPE_MIN_POS ? cx - 0.05F : cx, cy == CoreConstants.PIPE_MIN_POS ? cy - 0.05F : cy, minZ, cx == CoreConstants.PIPE_MIN_POS ? cx
|
renderBox.setBounds(cx == CoreConstants.PIPE_MIN_POS ? cx - 0.05F : cx, cy == CoreConstants.PIPE_MIN_POS ? cy - 0.05F : cy, minZ, cx == CoreConstants.PIPE_MIN_POS ? cx
|
||||||
: cx + 0.05F, cy == CoreConstants.PIPE_MIN_POS ? cy : cy + 0.05F, maxZ);
|
: cx + 0.05F, cy == CoreConstants.PIPE_MIN_POS ? cy : cy + 0.05F, maxZ);
|
||||||
RenderEntityBlock.INSTANCE.renderBlock(renderBox);
|
renderLitBox(renderBox, isLit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// X render
|
// X render
|
||||||
|
@ -454,7 +439,7 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
if (minX != CoreConstants.PIPE_MIN_POS || maxX != CoreConstants.PIPE_MAX_POS || !found) {
|
if (minX != CoreConstants.PIPE_MIN_POS || maxX != CoreConstants.PIPE_MAX_POS || !found) {
|
||||||
renderBox.setBounds(minX, cy == CoreConstants.PIPE_MIN_POS ? cy - 0.05F : cy, cz == CoreConstants.PIPE_MIN_POS ? cz - 0.05F : cz, maxX, cy == CoreConstants.PIPE_MIN_POS ? cy
|
renderBox.setBounds(minX, cy == CoreConstants.PIPE_MIN_POS ? cy - 0.05F : cy, cz == CoreConstants.PIPE_MIN_POS ? cz - 0.05F : cz, maxX, cy == CoreConstants.PIPE_MIN_POS ? cy
|
||||||
: cy + 0.05F, cz == CoreConstants.PIPE_MIN_POS ? cz : cz + 0.05F);
|
: cy + 0.05F, cz == CoreConstants.PIPE_MIN_POS ? cz : cz + 0.05F);
|
||||||
RenderEntityBlock.INSTANCE.renderBlock(renderBox);
|
renderLitBox(renderBox, isLit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Y render
|
// Y render
|
||||||
|
@ -462,18 +447,15 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
if (minY != CoreConstants.PIPE_MIN_POS || maxY != CoreConstants.PIPE_MAX_POS || !found) {
|
if (minY != CoreConstants.PIPE_MIN_POS || maxY != CoreConstants.PIPE_MAX_POS || !found) {
|
||||||
renderBox.setBounds(cx == CoreConstants.PIPE_MIN_POS ? cx - 0.05F : cx, minY, cz == CoreConstants.PIPE_MIN_POS ? cz - 0.05F : cz, cx == CoreConstants.PIPE_MIN_POS ? cx
|
renderBox.setBounds(cx == CoreConstants.PIPE_MIN_POS ? cx - 0.05F : cx, minY, cz == CoreConstants.PIPE_MIN_POS ? cz - 0.05F : cz, cx == CoreConstants.PIPE_MIN_POS ? cx
|
||||||
: cx + 0.05F, maxY, cz == CoreConstants.PIPE_MIN_POS ? cz : cz + 0.05F);
|
: cx + 0.05F, maxY, cz == CoreConstants.PIPE_MIN_POS ? cz : cz + 0.05F);
|
||||||
RenderEntityBlock.INSTANCE.renderBlock(renderBox);
|
renderLitBox(renderBox, isLit);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (center || !found) {
|
if (center || !found) {
|
||||||
renderBox.setBounds(cx == CoreConstants.PIPE_MIN_POS ? cx - 0.05F : cx, cy == CoreConstants.PIPE_MIN_POS ? cy - 0.05F : cy, cz == CoreConstants.PIPE_MIN_POS ? cz - 0.05F : cz,
|
renderBox.setBounds(cx == CoreConstants.PIPE_MIN_POS ? cx - 0.05F : cx, cy == CoreConstants.PIPE_MIN_POS ? cy - 0.05F : cy, cz == CoreConstants.PIPE_MIN_POS ? cz - 0.05F : cz,
|
||||||
cx == CoreConstants.PIPE_MIN_POS ? cx : cx + 0.05F, cy == CoreConstants.PIPE_MIN_POS ? cy : cy + 0.05F, cz == CoreConstants.PIPE_MIN_POS ? cz : cz + 0.05F);
|
cx == CoreConstants.PIPE_MIN_POS ? cx : cx + 0.05F, cy == CoreConstants.PIPE_MIN_POS ? cy : cy + 0.05F, cz == CoreConstants.PIPE_MIN_POS ? cz : cz + 0.05F);
|
||||||
RenderEntityBlock.INSTANCE.renderBlock(renderBox);
|
renderLitBox(renderBox, isLit);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderHelper.enableStandardItemLighting();
|
|
||||||
|
|
||||||
GL11.glPopAttrib();
|
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,29 +469,24 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
private void renderGate(TileGenericPipe pipe, double x, double y, double z, GatePluggable gate, ForgeDirection direction) {
|
private void renderGate(TileGenericPipe pipe, double x, double y, double z, GatePluggable gate, ForgeDirection direction) {
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
|
|
||||||
// GL11.glEnable(GL11.GL_LIGHTING);
|
|
||||||
GL11.glDisable(GL11.GL_BLEND);
|
|
||||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
|
||||||
// GL11.glDisable(GL11.GL_TEXTURE_2D);
|
|
||||||
RenderHelper.disableStandardItemLighting();
|
|
||||||
|
|
||||||
GL11.glColor3f(1, 1, 1);
|
GL11.glColor3f(1, 1, 1);
|
||||||
GL11.glTranslatef((float) x, (float) y, (float) z);
|
GL11.glTranslatef((float) x, (float) y, (float) z);
|
||||||
|
|
||||||
bindTexture(TextureMap.locationBlocksTexture);
|
bindTexture(TextureMap.locationBlocksTexture);
|
||||||
|
|
||||||
IIcon iconLogic;
|
IIcon lightIcon;
|
||||||
|
IIcon gateIcon = gate.getLogic().getGateIcon();
|
||||||
if (gate.isLit) {
|
if (gate.isLit) {
|
||||||
iconLogic = gate.getLogic().getIconLit();
|
lightIcon = gate.getLogic().getIconLit();
|
||||||
} else {
|
} else {
|
||||||
iconLogic = gate.getLogic().getIconDark();
|
lightIcon = gate.getLogic().getIconDark();
|
||||||
}
|
}
|
||||||
|
|
||||||
float translateCenter = 0;
|
float translateCenter = 0;
|
||||||
|
|
||||||
// Render base gate
|
// Render base gate
|
||||||
renderGate(pipe, iconLogic, 0, 0.1F, 0, 0, direction);
|
renderGate(pipe, gateIcon, 0, 0.1F, 0, 0, direction, false);
|
||||||
|
renderGate(pipe, lightIcon, 0, 0.1F, 0, 0, direction, gate.isLit);
|
||||||
|
|
||||||
float pulseStage = gate.getPulseStage() * 2F;
|
float pulseStage = gate.getPulseStage() * 2F;
|
||||||
|
|
||||||
|
@ -524,27 +501,23 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
translateCenter = amplitude - ((pulseStage - 1F) * amplitude) + start;
|
translateCenter = amplitude - ((pulseStage - 1F) * amplitude) + start;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderGate(pipe, iconLogic, 0, 0.13F, translateCenter, translateCenter, direction);
|
renderGate(pipe, gateIcon, 0, 0.13F, translateCenter, translateCenter, direction, false);
|
||||||
|
renderGate(pipe, lightIcon, 0, 0.13F, translateCenter, translateCenter, direction, gate.isLit);
|
||||||
}
|
}
|
||||||
|
|
||||||
IIcon materialIcon = gate.getMaterial().getIconBlock();
|
IIcon materialIcon = gate.getMaterial().getIconBlock();
|
||||||
if (materialIcon != null) {
|
if (materialIcon != null) {
|
||||||
renderGate(pipe, materialIcon, 1, 0.13F, translateCenter, translateCenter, direction);
|
renderGate(pipe, materialIcon, 1, 0.13F, translateCenter, translateCenter, direction, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IGateExpansion expansion : gate.getExpansions()) {
|
for (IGateExpansion expansion : gate.getExpansions()) {
|
||||||
renderGate(pipe, expansion.getOverlayBlock(), 2, 0.13F, translateCenter, translateCenter, direction);
|
renderGate(pipe, expansion.getOverlayBlock(), 2, 0.13F, translateCenter, translateCenter, direction, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderHelper.enableStandardItemLighting();
|
|
||||||
|
|
||||||
GL11.glPopAttrib();
|
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderGate(TileGenericPipe tile, IIcon icon, int layer, float trim, float translateCenter, float extraDepth, ForgeDirection direction) {
|
private void renderGate(TileGenericPipe tile, IIcon icon, int layer, float trim, float translateCenter, float extraDepth, ForgeDirection direction, boolean isLit) {
|
||||||
PipeRenderState state = tile.renderState;
|
|
||||||
|
|
||||||
RenderInfo renderBox = new RenderInfo();
|
RenderInfo renderBox = new RenderInfo();
|
||||||
renderBox.texture = icon;
|
renderBox.texture = icon;
|
||||||
|
|
||||||
|
@ -577,10 +550,30 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
renderBox.setBounds(rotated[0][0], rotated[1][0], rotated[2][0], rotated[0][1], rotated[1][1], rotated[2][1]);
|
renderBox.setBounds(rotated[0][0], rotated[1][0], rotated[2][0], rotated[0][1], rotated[1][1], rotated[2][1]);
|
||||||
RenderEntityBlock.INSTANCE.renderBlock(renderBox);
|
renderLitBox(renderBox, isLit);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void renderLitBox(RenderInfo info, boolean isLit) {
|
||||||
|
RenderEntityBlock.INSTANCE.renderBlock(info);
|
||||||
|
|
||||||
|
float lastX = OpenGlHelper.lastBrightnessX;
|
||||||
|
float lastY = OpenGlHelper.lastBrightnessY;
|
||||||
|
if (isLit) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE);
|
||||||
|
GL11.glDepthMask(true);
|
||||||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 61680, 0);
|
||||||
|
RenderEntityBlock.INSTANCE.renderBlock(info);
|
||||||
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isOpenOrientation(PipeRenderState state, ForgeDirection direction) {
|
public boolean isOpenOrientation(PipeRenderState state, ForgeDirection direction) {
|
||||||
int connections = 0;
|
int connections = 0;
|
||||||
|
|
||||||
|
@ -791,7 +784,6 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
|
|
||||||
private void renderSolids(Pipe<PipeTransportItems> pipe, double x, double y, double z) {
|
private void renderSolids(Pipe<PipeTransportItems> pipe, double x, double y, double z) {
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glDisable(2896 /* GL_LIGHTING */);
|
|
||||||
|
|
||||||
float light = pipe.container.getWorldObj().getLightBrightness(pipe.container.xCoord, pipe.container.yCoord, pipe.container.zCoord);
|
float light = pipe.container.getWorldObj().getLightBrightness(pipe.container.xCoord, pipe.container.yCoord, pipe.container.zCoord);
|
||||||
|
|
||||||
|
@ -805,7 +797,6 @@ public class PipeRendererTESR extends TileEntitySpecialRenderer {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
GL11.glEnable(2896 /* GL_LIGHTING */);
|
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|