Модель персонажа

Как заменить модель стива на свою?
Какой нужно использовать ивент?
Если не трудно, то более менее подробно распишите.
Спасибо)
 

timaxa007

Модератор
5,831
409
672
Можно просто обычным заменой рендера:
Код:
RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new RenderNewPlayer());
И новый класс рендера будет унаследована от RenderPlayer и рендеришь свою модель.
Либо с помощью эвента RenderPlayerEvent (или одно из его под-классов этого эвента). Но вот что делать именно с этим эвентом, я точно не знаю.
 
Такое дело:
Использовал я код из тутора.
Прокси
Код:
RenderingRegistry.registerEntityRenderingHandler(EntityPlayer.class, new RenderElf());
Рендер
Код:
public class RenderElf extends RenderPlayer
{
    private static final ResourceLocation DarkElf = new ResourceLocation(ModInfo.MODID + ":" + "textures/model/ElfModelF.png");
    public ModelBiped DarkElfModel;
    private static final String __OBFID = "CL_00001020";


    
    public RenderElf()
    {
        super();
        this.mainModel = new ModelBiped(0.0F);
        this.modelBipedMain = (ModelBiped) this.mainModel;
        this.modelArmorChestplate = new ModelBiped(1.0F);
        this.modelArmor = new ModelBiped(0.5F);
        this.DarkElfModel = new ElfModelF(0.5f);
    }
    
    @Override
    public void renderModel(EntityLivingBase entity, float par2, float par3, float par4, float par5, float par6, float par7)
    {

            ModelBiped modelBiped;
            for (int i = 0; i < 4; ++i)
            {
                modelBiped = this.DarkElfModel;
            
                GL11.glColor4f(1, 1, 1, 1);
                this.bindTexture(DarkElf);
                modelBiped.bipedHead.showModel = i == 0;
                modelBiped.bipedHeadwear.showModel = i == 0;
                modelBiped.bipedBody.showModel = i == 1 || i == 2;
                modelBiped.bipedRightArm.showModel = i == 1;
                modelBiped.bipedLeftArm.showModel = i == 1;
                modelBiped.bipedRightLeg.showModel = i == 2 || i == 3;
                modelBiped.bipedLeftLeg.showModel = i == 2 || i == 3;
                modelBiped.onGround = this.mainModel.onGround;
                modelBiped.isRiding = this.mainModel.isRiding;
                modelBiped.isChild = this.mainModel.isChild;
                if (this.mainModel instanceof ModelBiped)
                {
                    modelBiped.heldItemLeft = ((ModelBiped) this.mainModel).heldItemLeft;
                    modelBiped.heldItemRight = ((ModelBiped) this.mainModel).heldItemRight;
                    modelBiped.isSneak = ((ModelBiped) this.mainModel).isSneak;
                    modelBiped.aimedBow = ((ModelBiped) this.mainModel).aimedBow;
                }
                modelBiped.setLivingAnimations(entity, par2, par3, 0.0F);
                modelBiped.render(entity, par2, par3, par4, par5, par6, par7);
            
                
                GL11.glDisable(GL11.GL_LIGHTING);
                this.bindTexture(DarkElf);
                GL11.glEnable(GL11.GL_ALPHA_TEST);
                GL11.glEnable(GL11.GL_BLEND);
                GL11.glAlphaFunc(GL11.GL_GREATER, 0.0F);
                GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                float time = entity.ticksExisted / 10.0F;
                float sTime = (float) Math.sin(time) * 0.5F + 0.5F;
            
                float r = 0.2F * sTime;
                float g = 1.0F * sTime;
                float b = 0.2F * sTime;
            
            
                modelBiped.render(entity, par2, par3, par4, par5, par6, par7);
                GL11.glDisable(GL11.GL_BLEND);
                GL11.glEnable(GL11.GL_ALPHA_TEST);
                GL11.glColor4f(1, 1, 1, 1);
                GL11.glEnable(GL11.GL_LIGHTING);
            
                }
            
        
        }


    
    }

Модель
Код:
public class ElfModelF extends ModelBiped
{
  //fields
    Шейпы....
  
  public ElfModelF(float f)
  {
    textureWidth = 128;
    textureHeight = 64;
    
      Позиция шейпов...
  }
  
  public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7)
  {
    super.render(entity, par2, par3, par4, par5, par6, par7);
    setRotationAngles(par2, par3, par4, par5, par6, par7, entity);
    Shape1.render(par7);
    Shape2.render(par7);
    Shape3.render(par7);
    Shape4.render(par7);
    Shape5.render(par7);
    Shape6.render(par7);
    Shape7.render(par7);
    Shape8.render(par7);
    Shape9.render(par7);
    Shape10.render(par7);
    Shape11.render(par7);
    Shape12.render(par7);
    Shape13.render(par7);
    Shape14.render(par7);
    Shape15.render(par7);
    Shape16.render(par7);
    Shape17.render(par7);
    Shape18.render(par7);
    Shape19.render(par7);
    
  }
  
  private void setRotation(ModelRenderer model, float x, float y, float z)
  {
    model.rotateAngleX = x;
    model.rotateAngleY = y;
    model.rotateAngleZ = z;
  
  }
  
  public void setRotationAngles(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
  {
    super.setRotationAngles(f5, f, f1, f2, f3, f4, entity);
  }

}
Ошибка в консоли
Код:
java.lang.NullPointerException
    at net.minecraft.client.model.ModelRenderer.render(ModelRenderer.java:187) ~[ModelRenderer.class:?]
    at net.minecraft.client.model.ModelBiped.render(ModelBiped.java:101) ~[ModelBiped.class:?]
    at rinkirin.model.ElfModelF.render(ElfModelF.java:153) ~[ElfModelF.class:?]
    at rinkirin.renders.RenderElf.renderModel(RenderElf.java:60) ~[RenderElf.class:?]
    at net.minecraft.client.renderer.entity.RendererLivingEntity.doRender(RendererLivingEntity.java:165) [RendererLivingEntity.class:?]
    at net.minecraft.client.renderer.entity.RenderPlayer.localRenderPlayer(RenderPlayer.java:167) [RenderPlayer.class:?]
    at api.player.render.RenderPlayerAPI.renderPlayer(Unknown Source) [RenderPlayerAPI.class:?]
    at net.minecraft.client.renderer.entity.RenderPlayer.doRender(RenderPlayer.java) [RenderPlayer.class:?]
    at net.minecraft.client.renderer.entity.RenderPlayer.doRender(RenderPlayer.java:565) [RenderPlayer.class:?]
    at net.minecraft.client.renderer.entity.RenderManager.func_147939_a(RenderManager.java:300) [RenderManager.class:?]
    at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:278) [RenderManager.class:?]
    at net.minecraft.client.renderer.entity.RenderManager.renderEntitySimple(RenderManager.java:251) [RenderManager.class:?]
    at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:527) [RenderGlobal.class:?]
    at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1300) [EntityRenderer.class:?]
    at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1087) [EntityRenderer.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1067) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:962) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_91]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_91]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?]
    at GradleStart.main(Unknown Source) [start/:?]
[16:05:23] [Client thread/ERROR]: ########## GL ERROR ##########
[16:05:23] [Client thread/ERROR]: @ Post render
[16:05:23] [Client thread/ERROR]: 1283: Stack overflow
[16:05:23] [Client thread/ERROR]: Couldn't render entity
java.lang.NullPointerException
Итог
http://rgho.st/6h6mwYbvJ.view
 
up
[merge_posts_bbcode]Добавлено: 03.07.2016 14:50:24[/merge_posts_bbcode]

Это баг если что. Может кто-нибудь помочь с этим мне?
 
У меня получилось изменить модель, окей.
Но как её анимировать?
Как добавить анимацию ходьбы, удара и т.д?
 
98
1
0
lordraider написал(а):
У меня получилось изменить модель, окей.
Но как её анимировать?
Как добавить анимацию ходьбы, удара и т.д?
Я конечно этим не занимался, но, думаю событиями ловить это все дело.
Если не так, поправьте меня:)
 
Сверху