Advertisement
ButterAleks

RenderProjectile

May 27th, 2019
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. package com.ButterAleks.KirbyMod.entity.projectile.render;
  2.  
  3. import net.minecraft.client.model.ModelBase;
  4. import net.minecraft.client.renderer.BufferBuilder;
  5. import net.minecraft.client.renderer.GlStateManager;
  6. import net.minecraft.client.renderer.Tessellator;
  7. import net.minecraft.client.renderer.entity.Render;
  8. import net.minecraft.client.renderer.entity.RenderManager;
  9. import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
  10. import net.minecraft.entity.projectile.EntityArrow;
  11. import net.minecraft.util.math.MathHelper;
  12. import net.minecraftforge.fml.relauncher.Side;
  13. import net.minecraftforge.fml.relauncher.SideOnly;
  14.  
  15. @SideOnly(Side.CLIENT)
  16. public abstract class RenderProjectile<T extends EntityArrow> extends Render<T>
  17. {
  18. protected ModelBase mainModel;
  19.  
  20. public RenderProjectile(RenderManager renderManagerIn, ModelBase modelbaseIn)
  21. {
  22. super(renderManagerIn);
  23. this.mainModel = modelbaseIn;
  24. }
  25.  
  26. /**
  27. * Renders the desired {@code T} type Entity.
  28. */
  29. public void doRender(T entity, double x, double y, double z, float entityYaw, float partialTicks)
  30. {
  31. this.bindEntityTexture(entity);
  32. GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
  33. GlStateManager.pushMatrix();
  34. GlStateManager.disableLighting();
  35. GlStateManager.translate((float)x, (float)y, (float)z);
  36. GlStateManager.rotate(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * partialTicks - 90.0F, 0.0F, 1.0F, 0.0F);
  37. GlStateManager.rotate(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * partialTicks, 0.0F, 0.0F, 1.0F);
  38. Tessellator tessellator = Tessellator.getInstance();
  39. BufferBuilder bufferbuilder = tessellator.getBuffer();
  40. int i = 0;
  41. float f = 0.0F;
  42. float f1 = 0.5F;
  43. float f2 = 0.0F;
  44. float f3 = 0.15625F;
  45. float f4 = 0.0F;
  46. float f5 = 0.15625F;
  47. float f6 = 0.15625F;
  48. float f7 = 0.3125F;
  49. float f8 = 0.05625F;
  50. GlStateManager.enableRescaleNormal();
  51. float f9 = (float)entity.arrowShake - partialTicks;
  52.  
  53. if (f9 > 0.0F)
  54. {
  55. float f10 = -MathHelper.sin(f9 * 3.0F) * f9;
  56. GlStateManager.rotate(f10, 0.0F, 0.0F, 1.0F);
  57. }
  58.  
  59. GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F);
  60. GlStateManager.scale(0.05625F, 0.05625F, 0.05625F);
  61. GlStateManager.translate(-4.0F, 0.0F, 0.0F);
  62.  
  63. if (this.renderOutlines)
  64. {
  65. GlStateManager.enableColorMaterial();
  66. GlStateManager.enableOutlineMode(this.getTeamColor(entity));
  67. }
  68.  
  69. GlStateManager.glNormal3f(0.05625F, 0.0F, 0.0F);
  70. bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
  71. bufferbuilder.pos(-7.0D, -2.0D, -2.0D).tex(0.0D, 0.15625D).endVertex();
  72. bufferbuilder.pos(-7.0D, -2.0D, 2.0D).tex(0.15625D, 0.15625D).endVertex();
  73. bufferbuilder.pos(-7.0D, 2.0D, 2.0D).tex(0.15625D, 0.3125D).endVertex();
  74. bufferbuilder.pos(-7.0D, 2.0D, -2.0D).tex(0.0D, 0.3125D).endVertex();
  75. tessellator.draw();
  76. GlStateManager.glNormal3f(-0.05625F, 0.0F, 0.0F);
  77. bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
  78. bufferbuilder.pos(-7.0D, 2.0D, -2.0D).tex(0.0D, 0.15625D).endVertex();
  79. bufferbuilder.pos(-7.0D, 2.0D, 2.0D).tex(0.15625D, 0.15625D).endVertex();
  80. bufferbuilder.pos(-7.0D, -2.0D, 2.0D).tex(0.15625D, 0.3125D).endVertex();
  81. bufferbuilder.pos(-7.0D, -2.0D, -2.0D).tex(0.0D, 0.3125D).endVertex();
  82. tessellator.draw();
  83.  
  84. for (int j = 0; j < 4; ++j)
  85. {
  86. GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
  87. GlStateManager.glNormal3f(0.0F, 0.0F, 0.05625F);
  88. bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
  89. bufferbuilder.pos(-8.0D, -2.0D, 0.0D).tex(0.0D, 0.0D).endVertex();
  90. bufferbuilder.pos(8.0D, -2.0D, 0.0D).tex(0.5D, 0.0D).endVertex();
  91. bufferbuilder.pos(8.0D, 2.0D, 0.0D).tex(0.5D, 0.15625D).endVertex();
  92. bufferbuilder.pos(-8.0D, 2.0D, 0.0D).tex(0.0D, 0.15625D).endVertex();
  93. tessellator.draw();
  94. }
  95.  
  96. if (this.renderOutlines)
  97. {
  98. GlStateManager.disableOutlineMode();
  99. GlStateManager.disableColorMaterial();
  100. }
  101.  
  102. GlStateManager.disableRescaleNormal();
  103. GlStateManager.enableLighting();
  104. GlStateManager.popMatrix();
  105. super.doRender(entity, x, y, z, entityYaw, partialTicks);
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement