Advertisement
Guest User

Untitled

a guest
Nov 8th, 2015
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.44 KB | None | 0 0
  1. package com.rabidpotato.Mercury;
  2.  
  3. import java.util.Random;
  4.  
  5. import micdoodle8.mods.galacticraft.api.world.IGalacticraftWorldProvider;
  6. import micdoodle8.mods.galacticraft.core.util.ConfigManagerCore;
  7. import net.minecraft.client.Minecraft;
  8. import net.minecraft.client.multiplayer.WorldClient;
  9. import net.minecraft.client.renderer.GLAllocation;
  10. import net.minecraft.client.renderer.RenderHelper;
  11. import net.minecraft.client.renderer.Tessellator;
  12. import net.minecraft.util.MathHelper;
  13. import net.minecraft.util.ResourceLocation;
  14. import net.minecraft.util.Vec3;
  15. import net.minecraftforge.client.IRenderHandler;
  16.  
  17. import org.lwjgl.opengl.GL11;
  18.  
  19. import cpw.mods.fml.client.FMLClientHandler;
  20.  
  21. public class SkyProviderMercury extends IRenderHandler {
  22. private static final ResourceLocation sunTexture = new ResourceLocation("textures/environment/sun.png");
  23.  
  24. public int starGLCallList = GLAllocation.generateDisplayLists(3);
  25. public int glSkyList;
  26. public int glSkyList2;
  27.  
  28. private float sunSize;
  29.  
  30. public SkyProviderMercury(IGalacticraftWorldProvider asteroidsProvider) {
  31. this.sunSize = 17.5F * asteroidsProvider.getSolarSize();
  32.  
  33. GL11.glPushMatrix();
  34. GL11.glNewList(this.starGLCallList, GL11.GL_COMPILE);
  35. this.renderStars();
  36. GL11.glEndList();
  37. GL11.glPopMatrix();
  38. final Tessellator tessellator = Tessellator.instance;
  39. this.glSkyList = this.starGLCallList + 1;
  40. GL11.glNewList(this.glSkyList, GL11.GL_COMPILE);
  41. final byte byte2 = 64;
  42. final int i = 256 / byte2 + 2;
  43. float f = 16F;
  44.  
  45. for (int j = -byte2 * i; j <= byte2 * i; j += byte2) {
  46. for (int l = -byte2 * i; l <= byte2 * i; l += byte2) {
  47. tessellator.startDrawingQuads();
  48. tessellator.addVertex(j + 0, f, l + 0);
  49. tessellator.addVertex(j + byte2, f, l + 0);
  50. tessellator.addVertex(j + byte2, f, l + byte2);
  51. tessellator.addVertex(j + 0, f, l + byte2);
  52. tessellator.draw();
  53. }
  54. }
  55.  
  56. GL11.glEndList();
  57. this.glSkyList2 = this.starGLCallList + 2;
  58. GL11.glNewList(this.glSkyList2, GL11.GL_COMPILE);
  59. f = -16F;
  60. tessellator.startDrawingQuads();
  61.  
  62. for (int k = -byte2 * i; k <= byte2 * i; k += byte2) {
  63. for (int i1 = -byte2 * i; i1 <= byte2 * i; i1 += byte2) {
  64. tessellator.addVertex(k + byte2, f, i1 + 0);
  65. tessellator.addVertex(k + 0, f, i1 + 0);
  66. tessellator.addVertex(k + 0, f, i1 + byte2);
  67. tessellator.addVertex(k + byte2, f, i1 + byte2);
  68. }
  69. }
  70.  
  71. tessellator.draw();
  72. GL11.glEndList();
  73. }
  74.  
  75. @Override
  76. public void render(float partialTicks, WorldClient world, Minecraft mc) {
  77. WorldProviderMercury gcProvider = null;
  78.  
  79. if (world.provider instanceof WorldProviderMercury) {
  80. gcProvider = (WorldProviderMercury) world.provider;
  81. }
  82.  
  83. GL11.glDisable(GL11.GL_TEXTURE_2D);
  84. GL11.glColor3f(1, 1, 1);
  85. final Tessellator var23 = Tessellator.instance;
  86. GL11.glDepthMask(false);
  87. GL11.glEnable(GL11.GL_FOG);
  88. GL11.glColor3f(0, 0, 0);
  89. GL11.glCallList(this.glSkyList);
  90. GL11.glDisable(GL11.GL_FOG);
  91. GL11.glDisable(GL11.GL_ALPHA_TEST);
  92. GL11.glEnable(GL11.GL_BLEND);
  93. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  94. RenderHelper.disableStandardItemLighting();
  95. float var10;
  96. float var11;
  97. float var12;
  98.  
  99. float var20 = 0;
  100.  
  101. if (gcProvider != null) {
  102. var20 = gcProvider.getStarBrightness(partialTicks);
  103. }
  104.  
  105. if (var20 > 0.0F) {
  106. GL11.glColor4f(1.0F, 1.0F, 1.0F, var20);
  107. GL11.glCallList(this.starGLCallList);
  108. }
  109.  
  110. GL11.glEnable(GL11.GL_TEXTURE_2D);
  111. GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
  112. GL11.glPushMatrix();
  113.  
  114. GL11.glPopMatrix();
  115.  
  116. GL11.glPushMatrix();
  117.  
  118. GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
  119. GL11.glColor4f(1.0F, 1.0F, 1.0F, 5F);
  120. GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F, 1.0F, 0.0F, 0.0F);
  121. var12 = 30.0F;
  122. FMLClientHandler.instance().getClient().renderEngine.bindTexture(SkyProviderMercury.sunTexture);
  123. var23.startDrawingQuads();
  124. var23.addVertexWithUV(-var12, 125.0D, -var12, 0.0D, 0.0D);
  125. var23.addVertexWithUV(var12, 125.0D, -var12, 1.0D, 0.0D);
  126. var23.addVertexWithUV(var12, 125.0D, var12, 1.0D, 1.0D);
  127. var23.addVertexWithUV(-var12, 125.0D, var12, 0.0D, 1.0D);
  128. var23.draw();
  129.  
  130. GL11.glPopMatrix();
  131.  
  132. GL11.glPushMatrix();
  133.  
  134. GL11.glDisable(GL11.GL_BLEND);
  135.  
  136. GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
  137. GL11.glDisable(GL11.GL_BLEND);
  138. GL11.glEnable(GL11.GL_ALPHA_TEST);
  139. GL11.glEnable(GL11.GL_FOG);
  140. GL11.glPopMatrix();
  141. GL11.glDisable(GL11.GL_TEXTURE_2D);
  142. GL11.glColor3f(0.0F, 0.0F, 0.0F);
  143. final double var25 = mc.thePlayer.getPosition(partialTicks).yCoord - world.getHorizon();
  144.  
  145. if (var25 < 0.0D) {
  146. GL11.glPushMatrix();
  147. GL11.glTranslatef(0.0F, 12.0F, 0.0F);
  148. GL11.glCallList(this.glSkyList2);
  149. GL11.glPopMatrix();
  150. var10 = 1.0F;
  151. var11 = -((float) (var25 + 65.0D));
  152. var12 = -var10;
  153. var23.startDrawingQuads();
  154. var23.setColorRGBA_I(0, 255);
  155. var23.addVertex(-var10, var11, var10);
  156. var23.addVertex(var10, var11, var10);
  157. var23.addVertex(var10, var12, var10);
  158. var23.addVertex(-var10, var12, var10);
  159. var23.addVertex(-var10, var12, -var10);
  160. var23.addVertex(var10, var12, -var10);
  161. var23.addVertex(var10, var11, -var10);
  162. var23.addVertex(-var10, var11, -var10);
  163. var23.addVertex(var10, var12, -var10);
  164. var23.addVertex(var10, var12, var10);
  165. var23.addVertex(var10, var11, var10);
  166. var23.addVertex(var10, var11, -var10);
  167. var23.addVertex(-var10, var11, -var10);
  168. var23.addVertex(-var10, var11, var10);
  169. var23.addVertex(-var10, var12, var10);
  170. var23.addVertex(-var10, var12, -var10);
  171. var23.addVertex(-var10, var12, -var10);
  172. var23.addVertex(-var10, var12, var10);
  173. var23.addVertex(var10, var12, var10);
  174. var23.addVertex(var10, var12, -var10);
  175. var23.draw();
  176. }
  177.  
  178. GL11.glColor3f(70F / 256F, 70F / 256F, 70F / 256F);
  179.  
  180. GL11.glPushMatrix();
  181. GL11.glTranslatef(0.0F, -((float) (var25 - 16.0D)), 0.0F);
  182. GL11.glCallList(this.glSkyList2);
  183. GL11.glPopMatrix();
  184. GL11.glEnable(GL11.GL_TEXTURE_2D);
  185. GL11.glDepthMask(true);
  186. }
  187.  
  188. private void renderStars() {
  189. final Random var1 = new Random(10842L);
  190. final Tessellator var2 = Tessellator.instance;
  191. var2.startDrawingQuads();
  192.  
  193. for (int var3 = 0; var3 < (ConfigManagerCore.moreStars ? 20000 : 6000); ++var3) {
  194. double var4 = var1.nextFloat() * 2.0F - 1.0F;
  195. double var6 = var1.nextFloat() * 2.0F - 1.0F;
  196. double var8 = var1.nextFloat() * 2.0F - 1.0F;
  197. final double var10 = 0.15F + var1.nextFloat() * 0.1F;
  198. double var12 = var4 * var4 + var6 * var6 + var8 * var8;
  199.  
  200. if (var12 < 1.0D && var12 > 0.01D) {
  201. var12 = 1.0D / Math.sqrt(var12);
  202. var4 *= var12;
  203. var6 *= var12;
  204. var8 *= var12;
  205. final double var14 = var4 * (ConfigManagerCore.moreStars ? var1.nextDouble() * 100D + 150D : 100.0D);
  206. final double var16 = var6 * (ConfigManagerCore.moreStars ? var1.nextDouble() * 100D + 150D : 100.0D);
  207. final double var18 = var8 * (ConfigManagerCore.moreStars ? var1.nextDouble() * 100D + 150D : 100.0D);
  208. final double var20 = Math.atan2(var4, var8);
  209. final double var22 = Math.sin(var20);
  210. final double var24 = Math.cos(var20);
  211. final double var26 = Math.atan2(Math.sqrt(var4 * var4 + var8 * var8), var6);
  212. final double var28 = Math.sin(var26);
  213. final double var30 = Math.cos(var26);
  214. final double var32 = var1.nextDouble() * Math.PI * 2.0D;
  215. final double var34 = Math.sin(var32);
  216. final double var36 = Math.cos(var32);
  217.  
  218. for (int var38 = 0; var38 < 4; ++var38) {
  219. final double var39 = 0.0D;
  220. final double var41 = ((var38 & 2) - 1) * var10;
  221. final double var43 = ((var38 + 1 & 2) - 1) * var10;
  222. final double var47 = var41 * var36 - var43 * var34;
  223. final double var49 = var43 * var36 + var41 * var34;
  224. final double var53 = var47 * var28 + var39 * var30;
  225. final double var55 = var39 * var28 - var47 * var30;
  226. final double var57 = var55 * var22 - var49 * var24;
  227. final double var61 = var49 * var22 + var55 * var24;
  228. var2.addVertex(var14 + var57, var16 + var53, var18 + var61);
  229. }
  230. }
  231. }
  232.  
  233. var2.draw();
  234. }
  235.  
  236. private Vec3 getCustomSkyColor() {
  237. return Vec3.createVectorHelper(0.26796875D, 0.1796875D, 0.0D);
  238. }
  239.  
  240. public float getSkyBrightness(float par1) {
  241. final float var2 = FMLClientHandler.instance().getClient().theWorld.getCelestialAngle(par1);
  242. float var3 = 1.0F - (MathHelper.sin(var2 * (float) Math.PI * 2.0F) * 2.0F + 0.25F);
  243.  
  244. if (var3 < 0.0F) {
  245. var3 = 0.0F;
  246. }
  247.  
  248. if (var3 > 1.0F) {
  249. var3 = 1.0F;
  250. }
  251.  
  252. return var3 * var3 * 1F;
  253. }
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement