Guest User

RenderingUtil

a guest
Mar 9th, 2016
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.13 KB | None | 0 0
  1. package io.github.hsyyid.starwarsbattlecraft.util;
  2.  
  3. import net.minecraft.client.Minecraft;
  4. import net.minecraft.client.renderer.Tessellator;
  5. import net.minecraft.client.renderer.WorldRenderer;
  6. import net.minecraft.client.renderer.block.model.BakedQuad;
  7. import net.minecraft.client.renderer.texture.TextureMap;
  8. import net.minecraft.client.renderer.vertex.VertexFormat;
  9. import net.minecraft.crash.CrashReport;
  10. import net.minecraft.util.ReportedException;
  11. import net.minecraft.util.ResourceLocation;
  12. import net.minecraftforge.client.model.Attributes;
  13. import net.minecraftforge.client.model.IFlexibleBakedModel;
  14. import net.minecraftforge.client.model.IModel;
  15. import net.minecraftforge.client.model.ModelLoaderRegistry;
  16. import org.lwjgl.opengl.GL11;
  17.  
  18. import java.io.IOException;
  19. import java.util.HashMap;
  20. import java.util.Map;
  21.  
  22. public class RenderingUtil
  23. {
  24.     public static Map<String, IFlexibleBakedModel> loadedModels = new HashMap<>();
  25.  
  26.     public static void renderModel(IFlexibleBakedModel model)
  27.     {
  28.         Tessellator tessellator = Tessellator.getInstance();
  29.         WorldRenderer worldrenderer = tessellator.getWorldRenderer();
  30.         worldrenderer.begin(GL11.GL_QUADS, model.getFormat());
  31.         for (BakedQuad q : model.getGeneralQuads())
  32.         {
  33.             int[] vd = q.getVertexData();
  34.             worldrenderer.addVertexData(vd);
  35.         }
  36.         tessellator.draw();
  37.     }
  38.  
  39.     public static IFlexibleBakedModel loadModel(String resourceName)
  40.     {
  41.         return loadModel(resourceName, Attributes.DEFAULT_BAKED_FORMAT);
  42.     }
  43.  
  44.     public static IFlexibleBakedModel loadModel(String resourceName, VertexFormat fmt)
  45.     {
  46.         IFlexibleBakedModel model = loadedModels.get(resourceName);
  47.         if (model != null)
  48.             return model;
  49.  
  50.         try
  51.         {
  52.             TextureMap textures = Minecraft.getMinecraft().getTextureMapBlocks();
  53.             IModel mod = ModelLoaderRegistry.getModel(new ResourceLocation(resourceName));
  54.             model = mod.bake(mod.getDefaultState(), fmt, (location) -> textures.getAtlasSprite(location.toString()));
  55.             loadedModels.put(resourceName, model);
  56.             return model;
  57.         }
  58.         catch (IOException e)
  59.         {
  60.             throw new ReportedException(new CrashReport("Error loading custom model " + resourceName, e));
  61.         }
  62.     }
  63. }
Add Comment
Please, Sign In to add comment