Рендер предмета в руке. MC (1.7.10)

Версия Minecraft
1.7.10
API
Forge
47
4
8
Всем привет. Возни вопрос как добиться такого эффекта ?1600495171943.png1600495203306.png
Я открыл исходный код мода custom npc но в итоге нечего не понял. Может кто дать наводку на тему где уже был раскрыт этот вопрос ибо мои поиски окончились неудачей.
 
7,099
324
1,510
Твоя реализация IItemRenderer#renderItem должна зависеть от параметра ItemRenderType
 
Всем привет. Возни вопрос как добиться такого эффекта ?Посмотреть вложение 10009Посмотреть вложение 10010
Я открыл исходный код мода custom npc но в итоге нечего не понял. Может кто дать наводку на тему где уже был раскрыт этот вопрос ибо мои поиски окончились неудачей.
Cоветую глянуть моды на 1.7.10(таумкрафт т.к там при высасывания палочкой,не стандартный рендер)
Тебе нужен отдельный класс с рендером.
Допустим как у луков ещё(класс который я юзал у себя в моде)
Java:
package RKespain.Weapons.Renders;

import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.EntityLiving;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraftforge.client.IItemRenderer;

public class RenderBow implements IItemRenderer {

   private RenderManager renderManager;
   private Minecraft mc;


   public RenderBow() {
      this.renderManager = RenderManager.instance;
      this.mc = Minecraft.getMinecraft();
   }

   public boolean handleRenderType(ItemStack item, IItemRenderer.ItemRenderType type) {
      return type == IItemRenderer.ItemRenderType.EQUIPPED || type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON;
   }

   public boolean shouldUseRenderHelper(IItemRenderer.ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) {
      return false;
   }

   public void renderItem(IItemRenderer.ItemRenderType type, ItemStack item, Object ... data) {
      EntityLiving entity = (EntityLiving)data[1];
      ItemRenderer irInstance = this.mc.entityRenderer.itemRenderer;
      GL11.glPopMatrix();
      if(type == IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON) {
         this.renderItem(entity, item, 0);
      } else {
         GL11.glPushMatrix();
         float f2 = 2.1F;
         GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F);
         GL11.glRotatef(120.0F, 1.0F, 0.0F, 0.0F);
         GL11.glRotatef(-60.0F, 0.0F, 0.0F, 1.0F);
         GL11.glScalef(f2, f2, f2);
         GL11.glTranslatef(-0.50F, -0.1875F, 0.1875F);
         float f3 = 0.625F;
         GL11.glTranslatef(0.0F, 0.125F, 0.3125F);
         GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F);
         GL11.glScalef(f3, -f3, f3);
         GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F);
         GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
         this.renderItem(entity, item, 0);
         GL11.glPopMatrix();
      }

      GL11.glPushMatrix();
   }

   private void renderItem(EntityLiving par1EntityLiving, ItemStack par2ItemStack, int par3) {
      Icon icon = par1EntityLiving.getItemIcon(par2ItemStack, par3);
      if(icon != null) {
         if(par2ItemStack.getItemSpriteNumber() == 0) {
            this.mc.renderEngine.bindTexture("/terrain.png");
         } else {
            this.mc.renderEngine.bindTexture("/gui/items.png");
         }

         Tessellator tessellator = Tessellator.instance;
         float f = icon.getMinU();
         float f1 = icon.getMaxU();
         float f2 = icon.getMinV();
         float f3 = icon.getMaxV();
         float f4 = 0.0F;
         float f5 = 0.3F;
         GL11.glEnable('\u803a');
         GL11.glTranslatef(-f4, -f5, 0.0F);
         float f6 = 2.5F;
         GL11.glScalef(f6, f6, f6);
         GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F);
         GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F);
         GL11.glTranslatef(-0.8375F, -0.3325F, 0.0F);
         ItemRenderer.renderItemIn2D(tessellator, f1, f2, f, f3, icon.getSheetWidth(), icon.getSheetHeight(), 0.0625F);
         if(par2ItemStack != null && par2ItemStack.hasEffect() && par3 == 0) {
            GL11.glDepthFunc(514);
            GL11.glDisable(2896);
            this.mc.renderEngine.bindTexture("%blur%/misc/glint.png");
            GL11.glEnable(3042);
            GL11.glBlendFunc(768, 1);
            float f7 = 0.76F;
            GL11.glColor4f(0.5F * f7, 0.25F * f7, 0.8F * f7, 1.0F);
            GL11.glMatrixMode(5890);
            GL11.glPushMatrix();
            float f8 = 0.125F;
            GL11.glScalef(f8, f8, f8);
            float f9 = (float)(Minecraft.getSystemTime() % 3000L) / 3000.0F * 8.0F;
            GL11.glTranslatef(f9, 0.0F, 0.0F);
            GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F);
            ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
            GL11.glPopMatrix();
            GL11.glPushMatrix();
            GL11.glScalef(f8, f8, f8);
            f9 = (float)(Minecraft.getSystemTime() % 4873L) / 4873.0F * 8.0F;
            GL11.glTranslatef(-f9, 0.0F, 0.0F);
            GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F);
            ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F);
            GL11.glPopMatrix();
            GL11.glMatrixMode(5888);
            GL11.glDisable(3042);
            GL11.glEnable(2896);
            GL11.glDepthFunc(515);
         }

         GL11.glDisable('\u803a');
      }

   }
}
 
Сверху