hassansyyid

Untitled

Jul 16th, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.70 KB | None | 0 0
  1. package halocraft.entities.render;
  2.  
  3. import halocraft.api.OBJModel;
  4. import halocraft.entities.EntityMongoose;
  5. import halocraft.entities.EntityWarthog;
  6.  
  7. import java.io.IOException;
  8. import java.util.ArrayList;
  9. import java.util.Arrays;
  10. import java.util.List;
  11.  
  12. import javax.vecmath.Vector3f;
  13.  
  14. import com.google.common.base.Function;
  15.  
  16. import net.minecraft.block.state.IBlockState;
  17. import net.minecraft.client.Minecraft;
  18. import net.minecraft.client.model.ModelBase;
  19. import net.minecraft.client.model.ModelBoat;
  20. import net.minecraft.client.renderer.BlockModelRenderer;
  21. import net.minecraft.client.renderer.BlockRendererDispatcher;
  22. import net.minecraft.client.renderer.GlStateManager;
  23. import net.minecraft.client.renderer.Tessellator;
  24. import net.minecraft.client.renderer.WorldRenderer;
  25. import net.minecraft.client.renderer.block.model.BakedQuad;
  26. import net.minecraft.client.renderer.entity.Render;
  27. import net.minecraft.client.renderer.entity.RenderManager;
  28. import net.minecraft.client.renderer.texture.TextureAtlasSprite;
  29. import net.minecraft.client.resources.IResourceManager;
  30. import net.minecraft.client.resources.model.IBakedModel;
  31. import net.minecraft.client.resources.model.ModelResourceLocation;
  32. import net.minecraft.entity.Entity;
  33. import net.minecraft.entity.item.EntityBoat;
  34. import net.minecraft.entity.player.EntityPlayer;
  35. import net.minecraft.util.BlockPos;
  36. import net.minecraft.util.EnumFacing;
  37. import net.minecraft.util.MathHelper;
  38. import net.minecraft.util.ResourceLocation;
  39. import net.minecraft.world.World;
  40. import net.minecraftforge.client.event.ModelBakeEvent;
  41. import net.minecraftforge.client.model.Attributes;
  42. import net.minecraftforge.client.model.ICustomModelLoader;
  43. import net.minecraftforge.client.model.IFlexibleBakedModel;
  44. import net.minecraftforge.client.model.IModel;
  45. import net.minecraftforge.client.model.ModelLoaderRegistry;
  46. import net.minecraftforge.client.model.TRSRTransformation;
  47. import net.minecraftforge.client.model.b3d.B3DLoader;
  48. import net.minecraftforge.fml.relauncher.Side;
  49. import net.minecraftforge.fml.relauncher.SideOnly;
  50.  
  51. @SideOnly(Side.CLIENT)
  52. public class RenderWarthogEntity extends Render
  53. {
  54.     private static final ModelResourceLocation warthogModel = new ModelResourceLocation("halocraft:entity/Warthog.obj");
  55.  
  56.     public RenderWarthogEntity(RenderManager renderManager)
  57.     {
  58.         super(renderManager);
  59.         this.shadowSize = 0.5F;
  60.     }
  61.     Function<ResourceLocation, TextureAtlasSprite> textureGetter = new Function<ResourceLocation, TextureAtlasSprite>()
  62.             {
  63.         public TextureAtlasSprite apply(ResourceLocation location)
  64.         {
  65.             return Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString());
  66.         }
  67.             };
  68.  
  69.             public void doRender(EntityWarthog warthogIn, double posX, double posY, double posZ, float yaw, float partialTicks) throws IOException
  70.             {
  71.                 IModel warthogIModel = ModelLoaderRegistry.getModel(warthogModel);
  72.                 if(warthogIModel instanceof OBJModel && warthogIModel != null)
  73.                 {
  74.                     OBJModel warthog = (OBJModel) ModelLoaderRegistry.getModel(warthogModel);
  75.                     if(warthogIn.motionX > 0.1 || warthogIn.motionZ > 0.1)
  76.                     {
  77.                         Vector3f rotation = new Vector3f();
  78.                         rotation.x = (-warthogIn.worldObj.getWorldTime() % 360 * 8) - partialTicks;
  79.                         TRSRTransformation transform = new TRSRTransformation(TRSRTransformation.quatFromYXZDegrees(rotation));
  80.                         warthog.getMatLib().getGroups().get("the_node.000_tri_5178_geometry").setTransform(transform);
  81.                     }
  82.                     IBakedModel bakedWarthog = warthog.bake((TRSRTransformation.identity()),  Attributes.DEFAULT_BAKED_FORMAT, textureGetter);
  83.                     World world = warthogIn.getWorldObj();
  84.                     BlockPos blockpos = new BlockPos(warthogIn);
  85.                     Tessellator tessellator = Tessellator.getInstance();
  86.                     WorldRenderer worldrenderer = tessellator.getWorldRenderer();
  87.                     GlStateManager.pushMatrix();
  88.                     GlStateManager.translate((float)posX + 0.65F, (float)posY + 0.75F, (float)posZ);
  89.  
  90.                     float f2 = (float)warthogIn.getTimeSinceHit() - partialTicks;
  91.                     float f3 = warthogIn.getDamageTaken() - partialTicks;
  92.  
  93.                     if (f3 < 0.0F)
  94.                     {
  95.                         f3 = 0.0F;
  96.                     }
  97.  
  98.                     if (f2 > 0.0F)
  99.                     {
  100.                         GlStateManager.rotate(MathHelper.sin(f2) * f2 * f3 / 10.0F * (float)warthogIn.getForwardDirection(), 1.0F, 0.0F, 0.0F);
  101.                     }
  102.  
  103.                     float f4 = 0.75F;
  104.                     GlStateManager.scale(f4, f4, f4);
  105.                     GlStateManager.scale(1.0F / f4, 1.0F / f4, 1.0F / f4);
  106.                     GlStateManager.scale(-1.0F, -1.0F, 1.0F);
  107.  
  108.                     worldrenderer.startDrawingQuads();
  109.                     GlStateManager.rotate(180f, 0f, 0f, 1f);
  110.                     //Get Quads
  111.                     List<BakedQuad> generalQuads = bakedWarthog.getGeneralQuads();
  112.                     for (BakedQuad q : generalQuads) {
  113.                         int[] vd = q.getVertexData();
  114.                         worldrenderer.setVertexFormat(Attributes.DEFAULT_BAKED_FORMAT);
  115.                         worldrenderer.addVertexData(vd);
  116.                     }
  117.                     for (EnumFacing face : EnumFacing.values()) {
  118.                         List<BakedQuad> faceQuads =
  119.                                 bakedWarthog.getFaceQuads(face);
  120.                         for (BakedQuad q : faceQuads) {
  121.                             int[] vd = q.getVertexData();
  122.                             worldrenderer.setVertexFormat(Attributes.DEFAULT_BAKED_FORMAT);
  123.                             worldrenderer.addVertexData(vd);
  124.                         }
  125.                     }
  126.                     tessellator.draw();
  127.                     GlStateManager.popMatrix();
  128.                 }
  129.                 super.doRender(warthogIn, posX, posY, posZ, yaw, partialTicks);
  130.             }
  131.  
  132.             protected ResourceLocation getEntityTexture(EntityWarthog entityWarthog)
  133.             {
  134.                 return null;
  135.             }
  136.  
  137.             protected ResourceLocation getEntityTexture(Entity entity)
  138.             {
  139.                 return null;
  140.             }
  141.  
  142.             public void doRender(Entity entity, double x, double y, double z, float yaw, float partialTicks)
  143.             {
  144.                 try {
  145.                     this.doRender((EntityWarthog)entity, x, y, z, yaw, partialTicks);
  146.                 } catch (IOException e) {
  147.                     e.printStackTrace();
  148.                 }
  149.             }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment