[1.6.4] Модель пуля бластера не рендерится

Здравствуйте.
На основе урока про бластер сделай свой мод, но модель "пули" почему-то не видно.
Помогите найти ошибку.
Вот мои коды:
mod_Framework.java
Код:
package mods.mod_framework;

import java.util.Map;

import mods.mod_framework.particles.FX1;
import net.minecraft.block.*;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.creativetab.*;
import net.minecraft.item.*;
import net.minecraft.item.Item;
import net.minecraft.block.material.*;
import net.minecraftforge.common.ForgeHooks;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

import net.minecraft.src.*;
import cpw.mods.fml.common.*;
import cpw.mods.fml.common.Mod.*;
import cpw.mods.fml.common.event.*;
import net.minecraftforge.common.Configuration;

@Mod(modid="framework", name="framework", version="[#684]")
@NetworkMod(clientSideRequired=true, serverSideRequired=false)

public class mod_Framework
{
    public Item itemFramework = null;
    private int idFramework;

    @Instance("mod_Framework")
    public static mod_Framework instance;
    
    @SidedProxy(clientSide="mods.mod_framework.client.ClientProxy",
            serverSide="mods.mod_framework.CommonProxy")
    public static CommonProxy proxy;
    
    @PreInit
    public void preInit(FMLPreInitializationEvent event) {
        Configuration config = new Configuration(event.getSuggestedConfigurationFile());
        config.load();
        idFramework = config.getItem("items","IdFramework", 3844).getInt();
        config.save();

    }
    
    @Init
    public void load(FMLInitializationEvent event) {
        itemFramework = new ItemFramework(idFramework,"Framework test");
//        BlockDispenser.dispenseBehaviorRegistry.putObject(itemFramework, new FW1Behavior());
        LanguageRegistry.addName(itemFramework, "Framework test");
        RenderingRegistry.registerEntityRenderingHandler(Entity1.class, new Entity1Renderer());
           }
    }
Entity1.java
Код:
package mods.mod_framework;

import mods.mod_framework.particles.FX1;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.monster.EntityBlaze;
import net.minecraft.entity.projectile.EntityThrowable;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;

public class Entity1 extends EntityThrowable
{
    int Max = 15;
    public float arrowShake;
    
    public Entity1(World par1World)
    {
        super(par1World);
    }

    public Entity1(World par1World, EntityLivingBase par2EntityLivingBase)
    {
        super(par1World, par2EntityLivingBase);
    }

    public Entity1(World par1World, double par2, double par4, double par6)
    {
        super(par1World, par2, par4, par6);
   }

    /**
     * Called when this EntityThrowable hits a block or entity.
     */@Override
    protected void onImpact(MovingObjectPosition par1MovingObjectPosition)
    {
            this.setDead();
            if (this.worldObj.isRemote){
                for (int i=0; i<30; i++){
                    //Minecraft.getMinecraft().effectRenderer.addEffect(new FX1(this.worldObj,this.posX,this.posY,this.posZ,0,1,0,0,1.0F,0,1));

                    Minecraft.getMinecraft().effectRenderer.addEffect(new FX1(this.worldObj,this.posX,this.posY,this.posZ,
                            0,1,1,    0,1.0F,1.0F,1));
                    Minecraft.getMinecraft().effectRenderer.addEffect(new FX1(this.worldObj,this.posX,this.posY,this.posZ,
                            0,-1,-1, 1.0F,0,1.0F, 1));
            }
            }
            return;
        
    }
     
     @Override
    public void onUpdate()
    {
         super.onUpdate();

        if (this.ticksExisted>this.Max){
            this.setDead();
            if (this.worldObj.isRemote){
                for (int i=0; i<30; i++){
                    //Minecraft.getMinecraft().effectRenderer.addEffect(new FX1(this.worldObj,this.posX,this.posY,this.posZ,0,1,0,0,1.0F,0,1));
                    Minecraft.getMinecraft().effectRenderer.addEffect(new FX1(this.worldObj,this.posX,this.posY,this.posZ,
                            0,1,1,    0,1.0F,1.0F,1));
                    Minecraft.getMinecraft().effectRenderer.addEffect(new FX1(this.worldObj,this.posX,this.posY,this.posZ,
                            0,-1,-1, 1.0F,0,1.0F, 1));
            }
            }
            return;
        }
    }
}
Entity1Render.java
Код:
package mods.mod_framework;

import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;

@SideOnly(Side.CLIENT)
public class Entity1Renderer extends Render
{
    private final BlasterModel bomb = new BlasterModel();

    public void func_82399_a(Entity1 entity, double par2, double par4, double par6, double par8, float par9)
    {
        GL11.glPushMatrix();
        GL11.glTranslatef((float)par2, (float)par4, (float)par6);
        GL11.glRotatef(entity.prevRotationYaw+ (entity.rotationYaw - entity.prevRotationYaw)* par9 - 100.0f,
                0.0f,1.0f,0.0f);
        GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch -entity.prevRotationPitch) * par9, 100.0f,0.0f,1.0f);
        GL11.glScalef(-10.0F, -10.0F, 10.0F);
//        Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(ModInfo.modID, "textures/items/bomb.png"));
        bomb.render(entity, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0625f);
        GL11.glPopMatrix();
    }

    @Override
    protected ResourceLocation getEntityTexture(Entity entity)
    {
        return null;
    }

    @Override
    public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9)
    {
        this.func_82399_a((Entity1)par1Entity, par2, par4, par6, par8, par9); 
    }
}
BlasterModel.java
Код:
package mods.mod_framework;

import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;

public class BlasterModel extends ModelBase
{
    ModelRenderer Shape1;
    ModelRenderer Shape2;
    ModelRenderer Shape3;
    ModelRenderer Shape4;
    ModelRenderer Shape5;
    ModelRenderer Shape6;
    ModelRenderer Shape7;
  
  public BlasterModel()
  {
    textureWidth = 64;
    textureHeight = 32;
    
      Shape1 = new ModelRenderer(this, 0, 0);
      Shape1.addBox(0F, 0F, 0F, 3, 1, 8);
      Shape1.setRotationPoint(-1F, 0F, -5F);
      Shape1.setTextureSize(64, 32);
      Shape1.mirror = true;
      setRotation(Shape1, 0F, 0F, 0F);
      Shape2 = new ModelRenderer(this, 0, 0);
      Shape2.addBox(0F, 0F, 0F, 1, 1, 8);
      Shape2.setRotationPoint(1F, -1F, -5F);
      Shape2.setTextureSize(64, 32);
      Shape2.mirror = true;
      setRotation(Shape2, 0F, 0F, 0F);
      Shape3 = new ModelRenderer(this, 0, 0);
      Shape3.addBox(0F, 0F, 0F, 1, 1, 8);
      Shape3.setRotationPoint(-1F, -1F, -5F);
      Shape3.setTextureSize(64, 32);
      Shape3.mirror = true;
      setRotation(Shape3, 0F, 0F, 0F);
      Shape4 = new ModelRenderer(this, 0, 0);
      Shape4.addBox(0F, 0F, 0F, 3, 1, 8);
      Shape4.setRotationPoint(-1F, -2F, -5F);
      Shape4.setTextureSize(64, 32);
      Shape4.mirror = true;
      setRotation(Shape4, 0F, 0F, 0F);
      Shape5 = new ModelRenderer(this, 0, 0);
      Shape5.addBox(0F, 0F, 0F, 1, 1, 1);
      Shape5.setRotationPoint(0F, -1F, 3F);
      Shape5.setTextureSize(64, 32);
      Shape5.mirror = true;
      setRotation(Shape5, 0F, 0F, 0F);
      Shape6 = new ModelRenderer(this, 0, 0);
      Shape6.addBox(0F, 0F, 0F, 1, 1, 1);
      Shape6.setRotationPoint(0F, -2F, 4F);
      Shape6.setTextureSize(64, 32);
      Shape6.mirror = true;
      setRotation(Shape6, 0F, 0F, 0F);
      Shape7 = new ModelRenderer(this, 0, 28);
      Shape7.addBox(0F, 0F, 0F, 1, 3, 1);
      Shape7.setRotationPoint(0F, 0F, 4F);
      Shape7.setTextureSize(64, 32);
      Shape7.mirror = true;
      setRotation(Shape7, 0.2230717F, 0F, 0F);
  }
  
  public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, boolean isFirstPirson)
  {
    super.render(entity, f, f1, f2, f3, f4, f5);
    setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    Shape1.render(f5);
    Shape2.render(f5);
    Shape3.render(f5);
    Shape4.render(f5);
    Shape5.render(f5);
    Shape6.render(f5);
    Shape7.render(f5);
  }
  
  private void setRotation(ModelRenderer model, float x, float y, float z)
  {
    model.rotateAngleX = x;
    model.rotateAngleY = y;
    model.rotateAngleZ = z;
  }
  
  public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity ent)
  {
    super.setRotationAngles(f, f1, f2, f3, f4, f5, ent);
  }
}
 
Dragon2488 написал(а):
Ты вообще зарегестрировал рендер?
Я делал всё по видео-уроку, только имена классов заменил. Я пересматривал видео несколько раз. Он не подготовился и сам копался в коде. Возможно, из-за этого я чего-то не уловил.
Что именно нужно прописать, чтобы зарегистрировать рендер?
Код:
        RenderingRegistry.registerEntityRenderingHandler(Entity1.class, new Entity1Renderer());
Это прописано. Почему не рендерится?
 
Dragon2488 написал(а):
Dragon2488 написал(а):
рендер надо регестрировать в клиентском прокси -_-
ты слепой, или как?
Хорошим зрением не отличаюсь.
Перенес строчку в ClientProxy, вызвал функцию registerRenderers() - эффект тот же самый.
выложите один раз готовый пример и не умничайте.
 
2,955
12
Я ТЕБЕ ССЫЛКУ ДАЛ НА СВОЙ ТУТОРИАЛ, ТАМ ЕСТЬ ПРИМЕР.
А вообще ты не вызываешь из главного класса proxy.registerRenders(), с чего ему быть.
 
Dragon2488 написал(а):
А вообще ты не вызываешь из главного класса proxy.registerRenders(), с чего ему быть.
Я же в предыдущем посте написал, что перенес и вызываю, а эффекта 0.
и вообще, ваш туториал про создание моба, а моб это слегка не пуля, хоть и есть сходство.

вот ClientProxy
Код:
package mods.mod_framework.client;

import cpw.mods.fml.client.registry.RenderingRegistry;
import mods.mod_framework.CommonProxy;
import mods.mod_framework.Entity1;
import mods.mod_framework.Entity1Renderer;
import mods.mod_framework.ItemFramework;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderSnowball;
import net.minecraftforge.client.MinecraftForgeClient;

public class ClientProxy extends CommonProxy {
    
    @Override
    public void registerRenderers() {

        RenderingRegistry.registerEntityRenderingHandler(Entity1.class, new Entity1Renderer());
        }
}
вот загрузчик
Код:
    @Init
    public void load(FMLInitializationEvent event) {
        itemFramework = new ItemFramework(idFramework,"Framework test");
        LanguageRegistry.addName(itemFramework, "Framework test");
        proxy.registerRenderers();

           }
Что я где не вызываю?
 
329
13
Постучись в скайп TaoGunner - попробуем разобраться, где у тебя беда.
 
329
13
905
5
329
13
laz2727 написал(а):
> 2014 год
> Использовать скайп
Хорошо, предложи мне альтернативу для создания конференций, VOIP и дешевой междугородней связи. Я с ним по микрофону общаться собрался, а не печатать.
 
329
13
905
5
А у него, может, микрофона нет, ололо.
 
1,990
18
105
> 2014
> Скайп
Нормже. Не ICQ ведь. Тимспик особо не распространен, плюс куча заказов и прочих деловых обсуждений идут в скайпе. Довольно удобно, ибо и сообщения хорошо запилены, и групповые видеозвонки недавно бесплатными сделали.
 
Сверху