Admiral_Damage

Untitled

Mar 27th, 2016
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.71 KB | None | 0 0
  1. package eu.tetrabyte.contentmod.client.render;
  2.  
  3. import java.awt.Color;
  4.  
  5. import org.lwjgl.opengl.GL11;
  6.  
  7. import eu.tetrabyte.contentmod.Ref;
  8. import eu.tetrabyte.contentmod.entity.EntityBus;
  9. import eu.tetrabyte.contentmod.util.shadesobjloader.OBJModel;
  10. import net.minecraft.client.Minecraft;
  11. import net.minecraft.client.gui.FontRenderer;
  12. import net.minecraft.client.renderer.GlStateManager;
  13. import net.minecraft.client.renderer.Tessellator;
  14. import net.minecraft.client.renderer.WorldRenderer;
  15. import net.minecraft.client.renderer.block.model.BakedQuad;
  16. import net.minecraft.client.renderer.entity.Render;
  17. import net.minecraft.client.renderer.entity.RenderManager;
  18. import net.minecraft.client.renderer.texture.TextureMap;
  19. import net.minecraft.client.resources.IReloadableResourceManager;
  20. import net.minecraft.client.resources.IResourceManager;
  21. import net.minecraft.client.resources.IResourceManagerReloadListener;
  22. import net.minecraft.client.resources.model.IBakedModel;
  23. import net.minecraft.util.ResourceLocation;
  24. import net.minecraftforge.client.model.Attributes;
  25. import net.minecraftforge.client.model.IModel;
  26. import net.minecraftforge.client.model.ModelLoader;
  27. import net.minecraftforge.client.model.ModelLoaderRegistry;
  28. import net.minecraftforge.client.model.pipeline.LightUtil;
  29. import net.minecraftforge.fml.common.FMLLog;
  30.  
  31. public class RenderOlympian extends Render<EntityBus> {
  32.  
  33.     private static IBakedModel olympian = null;
  34.     private static final ResourceLocation MRL = new ResourceLocation(Ref.MOD_ID + ":item/mayabus3.obj");
  35.  
  36.     public RenderOlympian(RenderManager renderManager) {
  37.         super(renderManager);
  38.     }
  39.  
  40.     public static void init() {
  41.         IResourceManager manager = Minecraft.getMinecraft().getResourceManager();
  42.         if (manager instanceof IReloadableResourceManager) {
  43.             ((IReloadableResourceManager) manager).registerReloadListener(new IResourceManagerReloadListener() {
  44.                 @Override
  45.                 public void onResourceManagerReload(IResourceManager ignored) {
  46.                     olympian = null;
  47.                 }
  48.             });
  49.         }
  50.     }
  51.  
  52.     @Override
  53.     public void doRender(EntityBus entityBusIn, double x, double y, double z, float entityYaw, float partialTicks) {
  54.         if (olympian == null) {
  55.             FMLLog.info("Attempting to load model '%s'", MRL.toString());
  56.  
  57.             try {
  58.                 IModel olympianModel = ModelLoaderRegistry.getModel(MRL);
  59.  
  60.                 if (olympianModel != null && olympianModel instanceof OBJModel) {
  61.                     FMLLog.info("Successfully obtained model '%s' from registry", MRL.toString());
  62.                     olympian = ((OBJModel) olympianModel).bake(olympianModel.getDefaultState(),
  63.                             Attributes.DEFAULT_BAKED_FORMAT, ModelLoader.defaultTextureGetter());
  64.                 }
  65.             } catch (Exception e) {
  66.                 e.printStackTrace();
  67.             }
  68.         } else if (olympian != null) {
  69.  
  70.             bindTexture(TextureMap.locationBlocksTexture);
  71.             Tessellator tessellator = Tessellator.getInstance();
  72.             WorldRenderer buffer = tessellator.getWorldRenderer();
  73.             GlStateManager.disableLighting();
  74.             GlStateManager.disableRescaleNormal();
  75.             GlStateManager.enableDepth();
  76.             GlStateManager.depthMask(false);
  77.             GlStateManager.enableAlpha();
  78.             GlStateManager.depthMask(true);
  79.             GlStateManager.enableBlend();
  80.             GlStateManager.enableCull();
  81.  
  82.             GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  83.             GlStateManager.disableCull();
  84.  
  85.             GlStateManager.pushMatrix();                                            //PUSH
  86.            
  87.             GlStateManager.translate(x, y, z);                                          //TRANSLATE
  88.             GlStateManager.rotate(entityYaw, 0, 1, 0);                                  //ROTATE
  89.            
  90.             GlStateManager.pushMatrix();                                                //PUSH
  91.            
  92.             GlStateManager.translate(-0.625f, 0, 1);                                        //TRANSLATE
  93.  
  94.             buffer.begin(GL11.GL_QUADS, Attributes.DEFAULT_BAKED_FORMAT);                   //BUFFER
  95.             for (BakedQuad q : olympian.getGeneralQuads()) {
  96.                 LightUtil.renderQuadColor(buffer, q, 0xFFFFFFFF);
  97.             }
  98.             tessellator.draw();                                                             //RENDER
  99.  
  100.             GlStateManager.popMatrix();                                                 //POP
  101.  
  102.             GlStateManager.popMatrix();                                             //POP
  103.            
  104.             GlStateManager.pushMatrix();                                            //PUSH
  105.             FontRenderer fontrenderer = Minecraft.getMinecraft().fontRendererObj;
  106.             float textSize = 1.0f / 64f * 1.25f;
  107.             GlStateManager.translate(x + 0.0625, y + 3.5625, z + 1 - 0.06);
  108.             GlStateManager.scale(textSize, -textSize, textSize);
  109.             GL11.glNormal3f(0.0F, 0.0F, 1.0F * textSize);
  110.             GlStateManager.depthMask(false);
  111.            
  112.             // Below is for rendering the sign text, cant be arsed to fix rotation yet. Ignore it
  113.             String rsUpper = "";
  114.             String rsLower = "";
  115.             String rsLeft = "M";
  116.             String rsRight = "1";
  117.  
  118.             GlStateManager.rotate(entityYaw, 0, 1, 0);
  119.  
  120.             if (rsUpper != null && rsUpper != "") {
  121.                 if (rsUpper.length() >= 7) {
  122.                     rsUpper = rsUpper.substring(0, 7);
  123.                 }
  124.                 fontrenderer.drawString(rsUpper, 1, 1, 0xB2FF00);
  125.             }
  126.  
  127.             GlStateManager.translate(0.0f, 0.1875 / textSize, 0.0f);
  128.  
  129.             if (rsLower != null && rsLower != "") {
  130.                 if (rsLower.length() >= 7) {
  131.                     rsLower = rsLower.substring(0, 7);
  132.                 }
  133.                 fontrenderer.drawString(rsLower, 1, 1, 0xB2FF00);
  134.             }
  135.  
  136.             GlStateManager.translate(1.0625f / textSize, -0.1875f / textSize, 0.0f);
  137.  
  138.             GlStateManager.scale(2.0, 2.0, 2.0);
  139.  
  140.             if (rsLeft != null && rsLeft != "") {
  141.                 if (rsLeft.length() >= 1) {
  142.                     rsLeft = rsLeft.substring(0, 1);
  143.                 }
  144.                 fontrenderer.drawString(rsLeft, 1, 1, 0xB2FF00);
  145.             }
  146.  
  147.             GlStateManager.translate(0.125f / textSize, 0.0f, 0.0f);
  148.  
  149.             if (rsRight != null && rsRight != "") {
  150.                 if (rsRight.length() >= 1) {
  151.                     rsRight = rsRight.substring(0, 1);
  152.                 }
  153.                 fontrenderer.drawString(rsRight, 1, 1, 0xB2FF00);
  154.             }
  155.  
  156.             GlStateManager.depthMask(true);
  157.  
  158.             GlStateManager.popMatrix();                                             //POP
  159.         }
  160.     }
  161.  
  162.     @Override
  163.     protected ResourceLocation getEntityTexture(EntityBus entity) {
  164.         return TextureMap.locationBlocksTexture;
  165.     }
  166. }
Advertisement
Add Comment
Please, Sign In to add comment