Advertisement
Guest User

RenderLaser

a guest
Jan 18th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.49 KB | None | 0 0
  1. package practicalities.client.render;
  2.  
  3. import org.lwjgl.opengl.GL11;
  4.  
  5. import net.minecraft.block.state.IBlockState;
  6. import net.minecraft.client.Minecraft;
  7. import net.minecraft.client.renderer.GlStateManager;
  8. import net.minecraft.client.renderer.Tessellator;
  9. import net.minecraft.client.renderer.WorldRenderer;
  10. import net.minecraft.client.renderer.texture.TextureMap;
  11. import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
  12. import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
  13. import net.minecraft.client.resources.model.IBakedModel;
  14. import net.minecraft.init.Blocks;
  15. import net.minecraft.util.BlockPos;
  16. import net.minecraft.util.EnumFacing;
  17. import net.minecraft.util.EnumFacing.Axis;
  18. import net.minecraft.util.ResourceLocation;
  19. import practicalities.PracticalitiesMod;
  20. import practicalities.blocks.TileLaser;
  21. import practicalities.lib.client.RenderUtils;
  22. import practicalities.lib.util.vec.Vector3;
  23.  
  24. public class RenderLaser extends TileEntitySpecialRenderer<TileLaser> {
  25.  
  26.     private final ResourceLocation laserTexture = new ResourceLocation(PracticalitiesMod.MODID, "textures/misc/laser.png");
  27.    
  28.     @Override
  29.     public void renderTileEntityAt(TileLaser te, double x, double y, double z, float partialTicks, int destroyStage) {
  30.         Tessellator t = Tessellator.getInstance();
  31.         WorldRenderer r = t.getWorldRenderer();
  32.        
  33.         GlStateManager.pushMatrix();
  34.         GlStateManager.translate(x, y, z);
  35.        
  36.         GlStateManager.enableBlend();
  37.         GlStateManager.disableLighting();
  38.        
  39.         GlStateManager.resetColor();
  40.         GL11.glColor3f(1, 1, 1);
  41.        
  42.         Minecraft.getMinecraft().getTextureManager().bindTexture(laserTexture);
  43.        
  44.         RenderUtils.setBrightnessByBlockLight(15);
  45.        
  46.         GlStateManager.color(1, 1, 1, 1);
  47.         GlStateManager.disableCull();
  48.         r.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX);
  49.         r.noColor();
  50.        
  51.         EnumFacing direction = te.facing;
  52.         Vector3 origin = Vector3.center;
  53.        
  54.         te.eachLaser( (TileLaser.Laser l) -> renderLaser(l, origin, direction, partialTicks) ); // why? BECAUSE I CAN!!! Java 8 baby!
  55.        
  56.         t.draw();
  57.        
  58.         GlStateManager.enableCull();
  59.         GlStateManager.disableBlend();
  60.         GlStateManager.enableLighting();
  61.        
  62.         GlStateManager.popMatrix();
  63.     }
  64.    
  65.     public void renderLaser(TileLaser.Laser laser, Vector3 origin, EnumFacing direction, float partialTicks) {
  66.         WorldRenderer r = Tessellator.getInstance().getWorldRenderer();
  67.         Vector3 start = origin.copy().add(direction, laser.lastStart + ( (laser.start - laser.lastStart)*partialTicks ) );
  68.         Vector3 end   = origin.copy().add(direction, laser.lastEnd + ( (laser.end - laser.lastEnd)*partialTicks ) );
  69.        
  70.         double d = 1F/8F;
  71.        
  72.         if(direction.getAxis() != Axis.Y) {
  73.             r.pos(start.x, start.y-d, start.z).tex(1, 1).endVertex();
  74.             r.pos(start.x, start.y+d, start.z).tex(1, 0).endVertex();
  75.             r.pos(end.x,   end.y+d,   end.z)  .tex(0, 0).endVertex();
  76.             r.pos(end.x,   end.y-d,   end.z)  .tex(0, 1).endVertex();
  77.         }
  78.    
  79.         if(direction.getAxis() != Axis.Z) {
  80.             r.pos(start.x, start.y, start.z-d).tex(1, 1).endVertex();
  81.             r.pos(start.x, start.y, start.z+d).tex(1, 0).endVertex();
  82.             r.pos(end.x,   end.y,   end.z+d)  .tex(0, 0).endVertex();
  83.             r.pos(end.x,   end.y,   end.z-d)  .tex(0, 1).endVertex();
  84.         }
  85.        
  86.         if(direction.getAxis() != Axis.X) {
  87.             r.pos(start.x-d, start.y, start.z).tex(1, 1).endVertex();
  88.             r.pos(start.x+d, start.y, start.z).tex(1, 0).endVertex();
  89.             r.pos(end.x+d,   end.y,   end.z)  .tex(0, 0).endVertex();
  90.             r.pos(end.x-d,   end.y,   end.z)  .tex(0, 1).endVertex();
  91.         }
  92.     }
  93.  
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement