onnowhere

RenderLivingBase 1.12

Jan 8th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.75 KB | None | 0 0
  1. package net.minecraft.client.renderer.entity;
  2.  
  3. import com.google.common.collect.Lists;
  4. import java.nio.FloatBuffer;
  5. import java.util.List;
  6. import net.minecraft.client.Minecraft;
  7. import net.minecraft.client.entity.EntityPlayerSP;
  8. import net.minecraft.client.model.ModelBase;
  9. import net.minecraft.client.renderer.GLAllocation;
  10. import net.minecraft.client.renderer.GlStateManager;
  11. import net.minecraft.client.renderer.OpenGlHelper;
  12. import net.minecraft.client.renderer.entity.layers.LayerRenderer;
  13. import net.minecraft.client.renderer.texture.DynamicTexture;
  14. import net.minecraft.entity.EntityLivingBase;
  15. import net.minecraft.entity.player.EntityPlayer;
  16. import net.minecraft.entity.player.EnumPlayerModelParts;
  17. import net.minecraft.scoreboard.Team;
  18. import net.minecraft.util.math.MathHelper;
  19. import net.minecraft.util.text.TextFormatting;
  20. import org.apache.logging.log4j.LogManager;
  21. import org.apache.logging.log4j.Logger;
  22.  
  23. public abstract class RenderLivingBase<T extends EntityLivingBase> extends Render<T>
  24. {
  25. private static final Logger LOGGER = LogManager.getLogger();
  26. private static final DynamicTexture TEXTURE_BRIGHTNESS = new DynamicTexture(16, 16);
  27. protected ModelBase mainModel;
  28. protected FloatBuffer brightnessBuffer = GLAllocation.createDirectFloatBuffer(4);
  29. protected List<LayerRenderer<T>> layerRenderers = Lists.<LayerRenderer<T>>newArrayList();
  30. protected boolean renderMarker;
  31.  
  32. public RenderLivingBase(RenderManager renderManagerIn, ModelBase modelBaseIn, float shadowSizeIn)
  33. {
  34. super(renderManagerIn);
  35. this.mainModel = modelBaseIn;
  36. this.shadowSize = shadowSizeIn;
  37. }
  38.  
  39. protected <V extends EntityLivingBase, U extends LayerRenderer<V>> boolean addLayer(U layer)
  40. {
  41. return this.layerRenderers.add((LayerRenderer<T>)layer);
  42. }
  43.  
  44. public ModelBase getMainModel()
  45. {
  46. return this.mainModel;
  47. }
  48.  
  49. /**
  50. * Returns a rotation angle that is inbetween two other rotation angles. par1 and par2 are the angles between which
  51. * to interpolate, par3 is probably a float between 0.0 and 1.0 that tells us where "between" the two angles we are.
  52. * Example: par1 = 30, par2 = 50, par3 = 0.5, then return = 40
  53. */
  54. protected float interpolateRotation(float prevYawOffset, float yawOffset, float partialTicks)
  55. {
  56. float f;
  57.  
  58. for (f = yawOffset - prevYawOffset; f < -180.0F; f += 360.0F)
  59. {
  60. ;
  61. }
  62.  
  63. while (f >= 180.0F)
  64. {
  65. f -= 360.0F;
  66. }
  67.  
  68. return prevYawOffset + partialTicks * f;
  69. }
  70.  
  71. public void transformHeldFull3DItemLayer()
  72. {
  73. }
  74.  
  75. /**
  76. * Renders the desired {@code T} type Entity.
  77. */
  78. public void doRender(T entity, double x, double y, double z, float entityYaw, float partialTicks)
  79. {
  80. GlStateManager.pushMatrix();
  81. GlStateManager.disableCull();
  82. this.mainModel.swingProgress = this.getSwingProgress(entity, partialTicks);
  83. this.mainModel.isRiding = entity.isRiding();
  84. this.mainModel.isChild = entity.isChild();
  85.  
  86. try
  87. {
  88. float f = this.interpolateRotation(entity.prevRenderYawOffset, entity.renderYawOffset, partialTicks);
  89. float f1 = this.interpolateRotation(entity.prevRotationYawHead, entity.rotationYawHead, partialTicks);
  90. float f2 = f1 - f;
  91.  
  92. if (entity.isRiding() && entity.getRidingEntity() instanceof EntityLivingBase)
  93. {
  94. EntityLivingBase entitylivingbase = (EntityLivingBase)entity.getRidingEntity();
  95. f = this.interpolateRotation(entitylivingbase.prevRenderYawOffset, entitylivingbase.renderYawOffset, partialTicks);
  96. f2 = f1 - f;
  97. float f3 = MathHelper.wrapDegrees(f2);
  98.  
  99. if (f3 < -85.0F)
  100. {
  101. f3 = -85.0F;
  102. }
  103.  
  104. if (f3 >= 85.0F)
  105. {
  106. f3 = 85.0F;
  107. }
  108.  
  109. f = f1 - f3;
  110.  
  111. if (f3 * f3 > 2500.0F)
  112. {
  113. f += f3 * 0.2F;
  114. }
  115.  
  116. f2 = f1 - f;
  117. }
  118.  
  119. float f7 = entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * partialTicks;
  120. this.renderLivingAt(entity, x, y, z);
  121. float f8 = this.handleRotationFloat(entity, partialTicks);
  122. this.rotateCorpse(entity, f8, f, partialTicks);
  123. float f4 = this.prepareScale(entity, partialTicks);
  124. float f5 = 0.0F;
  125. float f6 = 0.0F;
  126.  
  127. if (!entity.isRiding())
  128. {
  129. f5 = entity.prevLimbSwingAmount + (entity.limbSwingAmount - entity.prevLimbSwingAmount) * partialTicks;
  130. f6 = entity.limbSwing - entity.limbSwingAmount * (1.0F - partialTicks);
  131.  
  132. if (entity.isChild())
  133. {
  134. f6 *= 3.0F;
  135. }
  136.  
  137. if (f5 > 1.0F)
  138. {
  139. f5 = 1.0F;
  140. }
  141. }
  142.  
  143. GlStateManager.enableAlpha();
  144. this.mainModel.setLivingAnimations(entity, f6, f5, partialTicks);
  145. this.mainModel.setRotationAngles(f6, f5, f8, f2, f7, f4, entity);
  146.  
  147. if (this.renderOutlines)
  148. {
  149. boolean flag1 = this.setScoreTeamColor(entity);
  150. GlStateManager.enableColorMaterial();
  151. GlStateManager.enableOutlineMode(this.getTeamColor(entity));
  152.  
  153. if (!this.renderMarker)
  154. {
  155. this.renderModel(entity, f6, f5, f8, f2, f7, f4);
  156. }
  157.  
  158. if (!(entity instanceof EntityPlayer) || !((EntityPlayer)entity).isSpectator())
  159. {
  160. this.renderLayers(entity, f6, f5, partialTicks, f8, f2, f7, f4);
  161. }
  162.  
  163. GlStateManager.disableOutlineMode();
  164. GlStateManager.disableColorMaterial();
  165.  
  166. if (flag1)
  167. {
  168. this.unsetScoreTeamColor();
  169. }
  170. }
  171. else
  172. {
  173. boolean flag = this.setDoRenderBrightness(entity, partialTicks);
  174. this.renderModel(entity, f6, f5, f8, f2, f7, f4);
  175.  
  176. if (flag)
  177. {
  178. this.unsetBrightness();
  179. }
  180.  
  181. GlStateManager.depthMask(true);
  182.  
  183. if (!(entity instanceof EntityPlayer) || !((EntityPlayer)entity).isSpectator())
  184. {
  185. this.renderLayers(entity, f6, f5, partialTicks, f8, f2, f7, f4);
  186. }
  187. }
  188.  
  189. GlStateManager.disableRescaleNormal();
  190. }
  191. catch (Exception exception)
  192. {
  193. LOGGER.error("Couldn't render entity", (Throwable)exception);
  194. }
  195.  
  196. GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
  197. GlStateManager.enableTexture2D();
  198. GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
  199. GlStateManager.enableCull();
  200. GlStateManager.popMatrix();
  201. super.doRender(entity, x, y, z, entityYaw, partialTicks);
  202. }
  203.  
  204. public float prepareScale(T entitylivingbaseIn, float partialTicks)
  205. {
  206. GlStateManager.enableRescaleNormal();
  207. GlStateManager.scale(-1.0F, -1.0F, 1.0F);
  208. this.preRenderCallback(entitylivingbaseIn, partialTicks);
  209. float f = 0.0625F;
  210. GlStateManager.translate(0.0F, -1.501F, 0.0F);
  211. return 0.0625F;
  212. }
  213.  
  214. protected boolean setScoreTeamColor(T entityLivingBaseIn)
  215. {
  216. GlStateManager.disableLighting();
  217. GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
  218. GlStateManager.disableTexture2D();
  219. GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
  220. return true;
  221. }
  222.  
  223. protected void unsetScoreTeamColor()
  224. {
  225. GlStateManager.enableLighting();
  226. GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
  227. GlStateManager.enableTexture2D();
  228. GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
  229. }
  230.  
  231. /**
  232. * Renders the model in RenderLiving
  233. */
  234. protected void renderModel(T entitylivingbaseIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor)
  235. {
  236. boolean flag = this.func_193115_c(entitylivingbaseIn);
  237. boolean flag1 = !flag && !entitylivingbaseIn.isInvisibleToPlayer(Minecraft.getMinecraft().player);
  238.  
  239. if (flag || flag1)
  240. {
  241. if (!this.bindEntityTexture(entitylivingbaseIn))
  242. {
  243. return;
  244. }
  245.  
  246. if (flag1)
  247. {
  248. GlStateManager.enableBlendProfile(GlStateManager.Profile.TRANSPARENT_MODEL);
  249. }
  250.  
  251. this.mainModel.render(entitylivingbaseIn, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor);
  252.  
  253. if (flag1)
  254. {
  255. GlStateManager.disableBlendProfile(GlStateManager.Profile.TRANSPARENT_MODEL);
  256. }
  257. }
  258. }
  259.  
  260. protected boolean func_193115_c(T p_193115_1_)
  261. {
  262. return !p_193115_1_.isInvisible() || this.renderOutlines;
  263. }
  264.  
  265. protected boolean setDoRenderBrightness(T entityLivingBaseIn, float partialTicks)
  266. {
  267. return this.setBrightness(entityLivingBaseIn, partialTicks, true);
  268. }
  269.  
  270. protected boolean setBrightness(T entitylivingbaseIn, float partialTicks, boolean combineTextures)
  271. {
  272. float f = entitylivingbaseIn.getBrightness();
  273. int i = this.getColorMultiplier(entitylivingbaseIn, f, partialTicks);
  274. boolean flag = (i >> 24 & 255) > 0;
  275. boolean flag1 = entitylivingbaseIn.hurtTime > 0 || entitylivingbaseIn.deathTime > 0;
  276.  
  277. if (!flag && !flag1)
  278. {
  279. return false;
  280. }
  281. else if (!flag && !combineTextures)
  282. {
  283. return false;
  284. }
  285. else
  286. {
  287. GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
  288. GlStateManager.enableTexture2D();
  289. GlStateManager.glTexEnvi(8960, 8704, OpenGlHelper.GL_COMBINE);
  290. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_RGB, 8448);
  291. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_RGB, OpenGlHelper.defaultTexUnit);
  292. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE1_RGB, OpenGlHelper.GL_PRIMARY_COLOR);
  293. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_RGB, 768);
  294. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND1_RGB, 768);
  295. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_ALPHA, 7681);
  296. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_ALPHA, OpenGlHelper.defaultTexUnit);
  297. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_ALPHA, 770);
  298. GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
  299. GlStateManager.enableTexture2D();
  300. GlStateManager.glTexEnvi(8960, 8704, OpenGlHelper.GL_COMBINE);
  301. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_RGB, OpenGlHelper.GL_INTERPOLATE);
  302. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_RGB, OpenGlHelper.GL_CONSTANT);
  303. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE1_RGB, OpenGlHelper.GL_PREVIOUS);
  304. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE2_RGB, OpenGlHelper.GL_CONSTANT);
  305. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_RGB, 768);
  306. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND1_RGB, 768);
  307. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND2_RGB, 770);
  308. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_ALPHA, 7681);
  309. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_ALPHA, OpenGlHelper.GL_PREVIOUS);
  310. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_ALPHA, 770);
  311. this.brightnessBuffer.position(0);
  312.  
  313. if (flag1)
  314. {
  315. this.brightnessBuffer.put(1.0F);
  316. this.brightnessBuffer.put(0.0F);
  317. this.brightnessBuffer.put(0.0F);
  318. this.brightnessBuffer.put(0.3F);
  319. }
  320. else
  321. {
  322. float f1 = (float)(i >> 24 & 255) / 255.0F;
  323. float f2 = (float)(i >> 16 & 255) / 255.0F;
  324. float f3 = (float)(i >> 8 & 255) / 255.0F;
  325. float f4 = (float)(i & 255) / 255.0F;
  326. this.brightnessBuffer.put(f2);
  327. this.brightnessBuffer.put(f3);
  328. this.brightnessBuffer.put(f4);
  329. this.brightnessBuffer.put(1.0F - f1);
  330. }
  331.  
  332. this.brightnessBuffer.flip();
  333. GlStateManager.glTexEnv(8960, 8705, this.brightnessBuffer);
  334. GlStateManager.setActiveTexture(OpenGlHelper.GL_TEXTURE2);
  335. GlStateManager.enableTexture2D();
  336. GlStateManager.bindTexture(TEXTURE_BRIGHTNESS.getGlTextureId());
  337. GlStateManager.glTexEnvi(8960, 8704, OpenGlHelper.GL_COMBINE);
  338. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_RGB, 8448);
  339. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_RGB, OpenGlHelper.GL_PREVIOUS);
  340. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE1_RGB, OpenGlHelper.lightmapTexUnit);
  341. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_RGB, 768);
  342. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND1_RGB, 768);
  343. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_ALPHA, 7681);
  344. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_ALPHA, OpenGlHelper.GL_PREVIOUS);
  345. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_ALPHA, 770);
  346. GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
  347. return true;
  348. }
  349. }
  350.  
  351. protected void unsetBrightness()
  352. {
  353. GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
  354. GlStateManager.enableTexture2D();
  355. GlStateManager.glTexEnvi(8960, 8704, OpenGlHelper.GL_COMBINE);
  356. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_RGB, 8448);
  357. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_RGB, OpenGlHelper.defaultTexUnit);
  358. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE1_RGB, OpenGlHelper.GL_PRIMARY_COLOR);
  359. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_RGB, 768);
  360. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND1_RGB, 768);
  361. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_ALPHA, 8448);
  362. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_ALPHA, OpenGlHelper.defaultTexUnit);
  363. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE1_ALPHA, OpenGlHelper.GL_PRIMARY_COLOR);
  364. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_ALPHA, 770);
  365. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND1_ALPHA, 770);
  366. GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
  367. GlStateManager.glTexEnvi(8960, 8704, OpenGlHelper.GL_COMBINE);
  368. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_RGB, 8448);
  369. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_RGB, 768);
  370. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND1_RGB, 768);
  371. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_RGB, 5890);
  372. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE1_RGB, OpenGlHelper.GL_PREVIOUS);
  373. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_ALPHA, 8448);
  374. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_ALPHA, 770);
  375. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_ALPHA, 5890);
  376. GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
  377. GlStateManager.setActiveTexture(OpenGlHelper.GL_TEXTURE2);
  378. GlStateManager.disableTexture2D();
  379. GlStateManager.bindTexture(0);
  380. GlStateManager.glTexEnvi(8960, 8704, OpenGlHelper.GL_COMBINE);
  381. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_RGB, 8448);
  382. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_RGB, 768);
  383. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND1_RGB, 768);
  384. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_RGB, 5890);
  385. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE1_RGB, OpenGlHelper.GL_PREVIOUS);
  386. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_COMBINE_ALPHA, 8448);
  387. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_OPERAND0_ALPHA, 770);
  388. GlStateManager.glTexEnvi(8960, OpenGlHelper.GL_SOURCE0_ALPHA, 5890);
  389. GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
  390. }
  391.  
  392. /**
  393. * Sets a simple glTranslate on a LivingEntity.
  394. */
  395. protected void renderLivingAt(T entityLivingBaseIn, double x, double y, double z)
  396. {
  397. GlStateManager.translate((float)x, (float)y, (float)z);
  398. }
  399.  
  400. protected void rotateCorpse(T entityLiving, float p_77043_2_, float p_77043_3_, float partialTicks)
  401. {
  402. GlStateManager.rotate(180.0F - p_77043_3_, 0.0F, 1.0F, 0.0F);
  403.  
  404. if (entityLiving.deathTime > 0)
  405. {
  406. float f = ((float)entityLiving.deathTime + partialTicks - 1.0F) / 20.0F * 1.6F;
  407. f = MathHelper.sqrt(f);
  408.  
  409. if (f > 1.0F)
  410. {
  411. f = 1.0F;
  412. }
  413.  
  414. GlStateManager.rotate(f * this.getDeathMaxRotation(entityLiving), 0.0F, 0.0F, 1.0F);
  415. }
  416. else
  417. {
  418. String s = TextFormatting.getTextWithoutFormattingCodes(entityLiving.getName());
  419.  
  420. if (s != null && ("Dinnerbone".equals(s) || "Grumm".equals(s)) && (!(entityLiving instanceof EntityPlayer) || ((EntityPlayer)entityLiving).isWearing(EnumPlayerModelParts.CAPE)))
  421. {
  422. GlStateManager.translate(0.0F, entityLiving.height + 0.1F, 0.0F);
  423. GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F);
  424. }
  425. }
  426. }
  427.  
  428. /**
  429. * Returns where in the swing animation the living entity is (from 0 to 1). Args : entity, partialTickTime
  430. */
  431. protected float getSwingProgress(T livingBase, float partialTickTime)
  432. {
  433. return livingBase.getSwingProgress(partialTickTime);
  434. }
  435.  
  436. /**
  437. * Defines what float the third param in setRotationAngles of ModelBase is
  438. */
  439. protected float handleRotationFloat(T livingBase, float partialTicks)
  440. {
  441. return (float)livingBase.ticksExisted + partialTicks;
  442. }
  443.  
  444. protected void renderLayers(T entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scaleIn)
  445. {
  446. for (LayerRenderer<T> layerrenderer : this.layerRenderers)
  447. {
  448. boolean flag = this.setBrightness(entitylivingbaseIn, partialTicks, layerrenderer.shouldCombineTextures());
  449. layerrenderer.doRenderLayer(entitylivingbaseIn, limbSwing, limbSwingAmount, partialTicks, ageInTicks, netHeadYaw, headPitch, scaleIn);
  450.  
  451. if (flag)
  452. {
  453. this.unsetBrightness();
  454. }
  455. }
  456. }
  457.  
  458. protected float getDeathMaxRotation(T entityLivingBaseIn)
  459. {
  460. return 90.0F;
  461. }
  462.  
  463. /**
  464. * Gets an RGBA int color multiplier to apply.
  465. */
  466. protected int getColorMultiplier(T entitylivingbaseIn, float lightBrightness, float partialTickTime)
  467. {
  468. return 0;
  469. }
  470.  
  471. /**
  472. * Allows the render to do state modifications necessary before the model is rendered.
  473. */
  474. protected void preRenderCallback(T entitylivingbaseIn, float partialTickTime)
  475. {
  476. }
  477.  
  478. public void renderName(T entity, double x, double y, double z)
  479. {
  480. if (this.canRenderName(entity))
  481. {
  482. double d0 = entity.getDistanceSqToEntity(this.renderManager.renderViewEntity);
  483. float f = entity.isSneaking() ? 32.0F : 64.0F;
  484.  
  485. if (d0 < (double)(f * f))
  486. {
  487. String s = entity.getDisplayName().getFormattedText();
  488. GlStateManager.alphaFunc(516, 0.1F);
  489. this.renderEntityName(entity, x, y, z, s, d0);
  490. }
  491. }
  492. }
  493.  
  494. protected boolean canRenderName(T entity)
  495. {
  496. EntityPlayerSP entityplayersp = Minecraft.getMinecraft().player;
  497. boolean flag = !entity.isInvisibleToPlayer(entityplayersp);
  498.  
  499. if (entity != entityplayersp)
  500. {
  501. Team team = entity.getTeam();
  502. Team team1 = entityplayersp.getTeam();
  503.  
  504. if (team != null)
  505. {
  506. Team.EnumVisible team$enumvisible = team.getNameTagVisibility();
  507.  
  508. switch (team$enumvisible)
  509. {
  510. case ALWAYS:
  511. return flag;
  512.  
  513. case NEVER:
  514. return false;
  515.  
  516. case HIDE_FOR_OTHER_TEAMS:
  517. return team1 == null ? flag : team.isSameTeam(team1) && (team.getSeeFriendlyInvisiblesEnabled() || flag);
  518.  
  519. case HIDE_FOR_OWN_TEAM:
  520. return team1 == null ? flag : !team.isSameTeam(team1) && flag;
  521.  
  522. default:
  523. return true;
  524. }
  525. }
  526. }
  527.  
  528. return Minecraft.isGuiEnabled() && entity != this.renderManager.renderViewEntity && flag && !entity.isBeingRidden();
  529. }
  530.  
  531. static
  532. {
  533. int[] aint = TEXTURE_BRIGHTNESS.getTextureData();
  534.  
  535. for (int i = 0; i < 256; ++i)
  536. {
  537. aint[i] = -1;
  538. }
  539.  
  540. TEXTURE_BRIGHTNESS.updateDynamicTexture();
  541. }
  542. }
Add Comment
Please, Sign In to add comment