Advertisement
Corosus

Untitled

Sep 1st, 2013
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.10 KB | None | 0 0
  1. package combat.enhancer.item.render;
  2.  
  3. import net.minecraft.client.Minecraft;
  4. import net.minecraft.client.gui.inventory.GuiContainerCreative;
  5. import net.minecraft.client.gui.inventory.GuiInventory;
  6. import net.minecraft.client.renderer.entity.RenderManager;
  7. import net.minecraft.entity.Entity;
  8. import net.minecraft.entity.player.EntityPlayer;
  9. import net.minecraft.item.ItemStack;
  10. import net.minecraft.util.ResourceLocation;
  11. import net.minecraftforge.client.ForgeHooksClient;
  12. import net.minecraftforge.client.IItemRenderer;
  13.  
  14. import org.lwjgl.opengl.GL11;
  15.  
  16. import cpw.mods.fml.client.FMLClientHandler;
  17.  
  18. public class WeaponRenderer implements IItemRenderer {
  19.  
  20.     protected BaseWeaponModel baseWeaponModel;
  21.    
  22.     //WARNING!!!! INFO IS MOST LIKELY SHARED BETWEEN RENDERS, bugs happen when other entities are holding the sword too
  23.    
  24.     private double rotX = 0;
  25.     private double rotY = 0;
  26.     private double rotZ = 0;
  27.    
  28.     //lets try these used in here shall we
  29.     //a client managed resetting tick that uses world time difference to tick itself, this ensures 20 ticks per second without the server potentially forcing a time update breaking animation flow, alternative is client tick handler somehow ticking this
  30.     public int smoothGameTick = 0;
  31.     public long lastWorldTime = 0;
  32.    
  33.     public ResourceLocation resWeapon = new ResourceLocation("hostileworlds:textures/blocks/stoneMoss");
  34.    
  35.     public WeaponRenderer() {
  36.         this.baseWeaponModel = new BaseWeaponModel();
  37.     }
  38.    
  39.     @Override
  40.     public boolean handleRenderType(ItemStack item, ItemRenderType type) {
  41.         switch(type) {
  42.             case EQUIPPED: return true;
  43.             default: return false;
  44.         }
  45.     }
  46.  
  47.     @Override
  48.     public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
  49.             ItemRendererHelper helper) {
  50.         return false;
  51.     }
  52.    
  53.     @Override
  54.     public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
  55.  
  56.         int swingTimeMax = 10;
  57.        
  58.         Minecraft mc = Minecraft.getMinecraft();
  59.         boolean swinging = item != null && item.stackTagCompound != null && item.stackTagCompound.getInteger("swingTimeCur") > 0 && smoothGameTick <= swingTimeMax;
  60.        
  61.         if (swinging) {
  62.             if (mc.theWorld.getWorldTime() != lastWorldTime) {
  63.                 lastWorldTime = mc.theWorld.getWorldTime();
  64.                 smoothGameTick++;
  65.                
  66.             }
  67.            
  68.         } else {
  69.             smoothGameTick = 0;
  70.         }
  71.        
  72.         //System.out.println("swinging? " + swinging + " - " + smoothGameTick);
  73.        
  74.         //REMOVE ME - or only use for live sword model updates for testing
  75.         //this.baseWeaponModel = new BaseWeaponModel();
  76.        
  77.        
  78.         float rate = (float) Math.cos(smoothGameTick * 0.5);
  79.         float range = 100;
  80.         float swingFlow = -range + rate * range;
  81.        
  82.         if (mc.gameSettings.keyBindSneak.pressed) {
  83.             rotX += mc.mouseHelper.deltaX;
  84.             rotY += mc.mouseHelper.deltaY;
  85.         } else {
  86.             rotX = 0D;
  87.             rotY = swingFlow;
  88.         }
  89.        
  90.         switch(type){
  91.             case EQUIPPED: {
  92.                 GL11.glPushMatrix();
  93.                 //ForgeHooksClient.onTextureLoadPre("/clubs/ClubModel.png");
  94.                 FMLClientHandler.instance().getClient().func_110434_K().func_110577_a(resWeapon);
  95.                 //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/HostileWorlds/textures/blocks/stoneMoss.png");
  96.                
  97.                 boolean isFirstPerson = false;
  98.                 if(data[1] != null && data[1] instanceof EntityPlayer) {
  99.                    
  100.                    
  101.                    
  102.                     if(!((EntityPlayer)data[1] == Minecraft.getMinecraft().renderViewEntity &&
  103.                             Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 &&
  104.                             !((Minecraft.getMinecraft().currentScreen instanceof GuiInventory ||
  105.                                     Minecraft.getMinecraft().currentScreen instanceof GuiContainerCreative) &&
  106.                                     RenderManager.instance.playerViewY == 180.0F))) {
  107.                         //GL11.glTranslatef(-0.5f, -1.0f, 0.0f);
  108.                         GL11.glTranslatef(0.7f, 0.25f, 0F + (float) (rotY * 0.007F));
  109.                         //GL11.glRotatef(-90, 0.0f, 1.0f, 0.0f);
  110.                         //GL11.glRotatef(-55, 0.0f, 0.0f, 1.0f);
  111.                     } else {
  112.                         isFirstPerson = true;
  113.                         GL11.glTranslatef(1F, 0F, 0F + (float) (rotY * 0.007F));
  114.                         //GL11.glTranslatef(2.3f, -4.0f, -1.0f);
  115.                         //GL11.glRotatef(-90, 0.0f, 0.8f, 0.0f);
  116.                        
  117.                         //GL11.glRotatef(5, 1.0f, 0.0f, 0.0f);
  118.                        
  119.                     }
  120.                 } else {
  121.                     //1st arg :up/down, 2nd arg :int/out, 3rd arg :left/right,
  122.                     GL11.glTranslatef(0.7f, 0.25f, 0F + (float) (rotY * 0.007F));
  123.                     //GL11.glRotatef(-90, 0.0f, 1.0f, 0.0f);
  124.                     //GL11.glRotatef(-55, 0.0f, 0.0f, 1.0f);
  125.                 }
  126.  
  127.                 range = 0.5F;
  128.                 float moveAndRotateFlow = 0.5F - rate * range;
  129.                
  130.                 //System.out.println(moveFlow);
  131.                
  132.                 //shift model so it rotates centered
  133.                 GL11.glTranslatef(0.0F, 0.0F, 0.1F * moveAndRotateFlow);
  134.                
  135.                 //rotate
  136.                 GL11.glRotatef(90F * moveAndRotateFlow, 0F, 1F, 0F);
  137.                
  138.                 GL11.glRotatef(50F, 0F, 0F, 1F);
  139.                 GL11.glRotatef(90F * moveAndRotateFlow, 1F, 0F, 0F);
  140.                
  141.                 GL11.glRotatef((float) (rotX * 0.3), 1F, 0F, 0F);
  142.                 GL11.glRotatef((float) (rotY * 0.3), 0F, 0F, 1F);
  143.                
  144.                 //GL11.glTranslatef(1F, 1F, 1F);
  145.                
  146.                
  147.                
  148.                 //GL11.glRotatef(180, 1, 0, 0);
  149.                
  150.                
  151.                 this.baseWeaponModel.render((Entity)data[1], 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0625f);
  152.                 GL11.glPopMatrix();
  153.             }
  154.             default:
  155.                 break;
  156.             }
  157.     }
  158.  
  159.    
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement