Admiral_Damage

Untitled

Mar 20th, 2016
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.43 KB | None | 0 0
  1. package eu.tetrabyte.contentmod.client.render;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.lwjgl.opengl.GL11;
  6.  
  7. import com.google.common.collect.Lists;
  8. import com.google.common.collect.Maps;
  9.  
  10. import eu.tetrabyte.contentmod.Ref;
  11. import eu.tetrabyte.contentmod.entity.EntityBus;
  12. import eu.tetrabyte.contentmod.util.shadesobjloader.OBJCustomData;
  13. import eu.tetrabyte.contentmod.util.shadesobjloader.OBJModel;
  14. import net.minecraft.client.Minecraft;
  15. import net.minecraft.client.renderer.GlStateManager;
  16. import net.minecraft.client.renderer.Tessellator;
  17. import net.minecraft.client.renderer.WorldRenderer;
  18. import net.minecraft.client.renderer.block.model.BakedQuad;
  19. import net.minecraft.client.renderer.entity.Render;
  20. import net.minecraft.client.renderer.entity.RenderManager;
  21. import net.minecraft.client.renderer.texture.TextureMap;
  22. import net.minecraft.client.resources.IReloadableResourceManager;
  23. import net.minecraft.client.resources.IResourceManager;
  24. import net.minecraft.client.resources.IResourceManagerReloadListener;
  25. import net.minecraft.client.resources.model.IBakedModel;
  26. import net.minecraft.util.ResourceLocation;
  27. import net.minecraftforge.client.model.Attributes;
  28. import net.minecraftforge.client.model.IModel;
  29. import net.minecraftforge.client.model.ModelLoader;
  30. import net.minecraftforge.client.model.ModelLoaderRegistry;
  31. import net.minecraftforge.client.model.pipeline.LightUtil;
  32. import net.minecraftforge.fml.common.FMLLog;
  33.  
  34. public class RenderOlympian extends Render<EntityBus> {
  35.    
  36.     public RenderOlympian(RenderManager renderManager) {
  37.         super(renderManager);
  38.     }
  39.  
  40.     private static Map<String, IBakedModel> loadedModels = Maps.newHashMap();
  41.     private static final ResourceLocation MRL = new ResourceLocation(Ref.MOD_ID + ":item/olympian.obj");
  42.    
  43.     public static void init()
  44.     {
  45.         IResourceManager manager = Minecraft.getMinecraft().getResourceManager();
  46.         if (manager instanceof IReloadableResourceManager)
  47.         {
  48.             ((IReloadableResourceManager) manager).registerReloadListener(new IResourceManagerReloadListener()
  49.             {
  50.                 @Override
  51.                 public void onResourceManagerReload(IResourceManager ignored)
  52.                 {
  53.                     loadedModels.clear();
  54.                 }
  55.             });
  56.         }
  57.     }
  58.    
  59.     @Override
  60.     public void doRender(EntityBus entityBusIn, double x, double y, double z, float entityYaw, float partialTicks)
  61.     {
  62.         if (loadedModels.isEmpty())
  63.         {
  64.             FMLLog.info("loadedModels was empty, attempting to load model '%s'", MRL.toString());
  65.  
  66.             try
  67.             {
  68.                 IModel model = ModelLoaderRegistry.getModel(MRL);
  69.                
  70.                 if (model != null && model instanceof OBJModel)
  71.                 {
  72.                     FMLLog.info("Successfully obtained model '%s' from registry", MRL.toString());
  73.                     OBJModel objModel = new OBJModel(((OBJModel) model).getMatLib(), ((OBJModel) model).getModelLocation(), ((OBJModel) model).getCustomData());
  74.                     OBJCustomData.GroupConfigHandler configHandler = objModel.getCustomData().getConfigHandler();
  75.                     OBJCustomData.GroupConfigBuilder builder = configHandler.getConfigBuilder();
  76.                    
  77.                     OBJModel.OBJState state = new OBJModel.OBJState(Lists.newArrayList("" + 1));
  78.                     loadedModels.put("" + 0, objModel.bake(state, Attributes.DEFAULT_BAKED_FORMAT, ModelLoader.defaultTextureGetter()));
  79.                 }
  80.             }
  81.             catch (Exception e)
  82.             {
  83.                 e.printStackTrace();
  84.             }
  85.         }
  86.        
  87.         IBakedModel olympian = null;
  88.  
  89.         olympian = loadedModels.get(MRL);
  90.        
  91.         bindTexture(TextureMap.locationBlocksTexture);
  92.         Tessellator tessellator = Tessellator.getInstance();
  93.         WorldRenderer buffer = tessellator.getWorldRenderer();
  94.        
  95.         GlStateManager.disableLighting();
  96.         GlStateManager.disableAlpha();
  97.         GlStateManager.disableRescaleNormal();
  98.         GlStateManager.enableDepth();
  99.         GlStateManager.depthMask(true);
  100.         GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
  101.        
  102.         GlStateManager.pushMatrix();
  103.         GlStateManager.translate(x, y, z);
  104.        
  105.         GlStateManager.pushMatrix();
  106.         GlStateManager.translate(0.5f, 0.5f, 0.5f);
  107.  
  108.         //Rotate here
  109.        
  110.         GlStateManager.translate(-0.5f, -0.5f, -0.5f);
  111.        
  112.        
  113.        
  114.         if (olympian != null)
  115.         {
  116.             buffer.begin(GL11.GL_QUADS, Attributes.DEFAULT_BAKED_FORMAT);
  117.             for (BakedQuad quad : olympian.getGeneralQuads())
  118.             {
  119.                 LightUtil.renderQuadColor(buffer, quad, 0xFFFFFFFF); //last argument is abgr!
  120.             }
  121.             tessellator.draw();
  122.         }
  123.  
  124.         GlStateManager.popMatrix();
  125.         GlStateManager.popMatrix();
  126.     }
  127.  
  128.     @Override
  129.     protected ResourceLocation getEntityTexture(EntityBus entity) {
  130.         // TODO Auto-generated method stub
  131.         return null;
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment