Advertisement
Creepinson

1

May 12th, 2017
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.52 KB | None | 0 0
  1. package me.creepinson.entities.tileentity;
  2.  
  3. import org.lwjgl.opengl.GL11;
  4.  
  5. import me.creepinson.lib.RefStrings;
  6. import net.minecraft.client.Minecraft;
  7. import net.minecraft.client.renderer.GlStateManager;
  8. import net.minecraft.client.renderer.RenderHelper;
  9. import net.minecraft.client.renderer.Tessellator;
  10. import net.minecraft.client.renderer.block.model.IBakedModel;
  11. import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
  12. import net.minecraft.client.renderer.texture.TextureMap;
  13. import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
  14. import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
  15. import net.minecraft.item.ItemStack;
  16. import net.minecraft.util.ResourceLocation;
  17. import net.minecraft.world.World;
  18. import net.minecraftforge.client.model.IModel;
  19. import net.minecraftforge.client.model.ModelLoaderRegistry;
  20. import net.minecraftforge.common.model.TRSRTransformation;
  21. import net.minecraftforge.fml.relauncher.Side;
  22. import net.minecraftforge.fml.relauncher.SideOnly;
  23.  
  24. @SideOnly(Side.CLIENT)
  25. public class TESRPedastal_Magic extends TileEntitySpecialRenderer<TileEntityPedastal_Magic> {
  26.  
  27. private IModel model;
  28. private IBakedModel bakedModel;
  29.  
  30. private IBakedModel getBakedModel() {
  31. // Since we cannot bake in preInit() we do lazy baking of the model as soon as we need it
  32. // for rendering
  33. if (bakedModel == null) {
  34. try {
  35. model = ModelLoaderRegistry.getModel(new ResourceLocation(RefStrings.MODID, "block/pedastal_magic"));
  36. } catch (Exception e) {
  37. throw new RuntimeException(e);
  38. }
  39. bakedModel = model.bake(TRSRTransformation.identity(), DefaultVertexFormats.ITEM,
  40. location -> Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString()));
  41. }
  42. return bakedModel;
  43. }
  44.  
  45. @Override
  46. public void renderTileEntityAt(TileEntityPedastal_Magic te, double x, double y, double z, float partialTicks, int destroyStage) {
  47. GlStateManager.pushAttrib();
  48. GlStateManager.pushMatrix();
  49.  
  50. // Translate to the location of our tile entity
  51. GlStateManager.translate(x, y, z);
  52. GlStateManager.disableRescaleNormal();
  53.  
  54. // Render the rotating handles
  55. renderHandles(te);
  56.  
  57. // Render our item
  58. renderItem(te);
  59.  
  60. GlStateManager.popMatrix();
  61. GlStateManager.popAttrib();
  62.  
  63. }
  64.  
  65. private void renderHandles(TileEntityPedastal_Magic te) {
  66. GlStateManager.pushMatrix();
  67.  
  68. GlStateManager.translate(0, 0, 0);
  69.  
  70.  
  71. RenderHelper.disableStandardItemLighting();
  72. this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
  73. if (Minecraft.isAmbientOcclusionEnabled()) {
  74. GlStateManager.shadeModel(GL11.GL_SMOOTH);
  75. } else {
  76. GlStateManager.shadeModel(GL11.GL_FLAT);
  77. }
  78.  
  79. World world = te.getWorld();
  80. // Translate back to local view coordinates so that we can do the acual rendering here
  81. GlStateManager.translate(-te.getPos().getX(), -te.getPos().getY(), -te.getPos().getZ());
  82.  
  83. Tessellator tessellator = Tessellator.getInstance();
  84. tessellator.getBuffer().begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
  85. Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer().renderModel(
  86. world,
  87. getBakedModel(),
  88. world.getBlockState(te.getPos()),
  89. te.getPos(),
  90. Tessellator.getInstance().getBuffer(), false);
  91. tessellator.draw();
  92.  
  93. RenderHelper.enableStandardItemLighting();
  94. GlStateManager.popMatrix();
  95. }
  96.  
  97. private void renderItem(TileEntityPedastal_Magic te) {
  98. ItemStack stack = te.getStack();
  99. long angle = (System.currentTimeMillis() / 10) % 360;
  100.  
  101. if (stack != ItemStack.EMPTY) {
  102. RenderHelper.enableStandardItemLighting();
  103. GlStateManager.enableLighting();
  104. GlStateManager.pushMatrix();
  105. // Translate to the center of the block and .9 points higher
  106. GlStateManager.translate(.5, 1.4, .5);
  107. GlStateManager.scale(.4f, .4f, .4f);
  108. GlStateManager.rotate(angle, te.getPos().getX(), te.getPos().getY(), te.getPos().getZ());
  109.  
  110. Minecraft.getMinecraft().getRenderItem().renderItem(stack, ItemCameraTransforms.TransformType.NONE);
  111.  
  112. GlStateManager.popMatrix();
  113. }
  114. }
  115.  
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement