Admiral_Damage

Untitled

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