- 351
- 0
Здравствуйте,дорогие форумчане! Пожалуйста,помогите мне! Я создал моба, отрендерил его, добавил модель и т.п. Но вот проблема: моб как был, так и остался без модели...
Все коды, которые связанны с мобом:
"Сам моб"
"Код Client Proxy"
"Код Common Proxy"
"Код рендера моба"
Ну и "код модели"
Кстати, я догадываюсь, почему ничего не получается. В коде
super.setRotationAngles(f, f1, f2, f3, f4, f5);
У меня ошибка,однако, я не знаю, как ещё исправить.
Удаляю- без результатов.
Приписываю после f5 ", entity" - тоже. Короче я не понимаю, в чём прикол,поэтому прошу о помощи.
Модель создавалась в программе Techne.
И ещё- как сделать анимацию при ходьбе и аттаке моба? Допустим,когда Голем атакует, у него поднимаются руки.
Что-то Типа того
Извините за такую большую тему.
Спасибо
Все коды, которые связанны с мобом:
"Сам моб"
Код:
package assets.powerblocks.src;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.EntityAIAttackOnCollide;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.monster.EntityIronGolem;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.passive.EntityVillager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
public class EntityRobotWarrior extends EntityMob //Еще тут может быть EntityAnimal для пассивного моба, еще есть IAnimal и EntityCreature, но о них позже.
{
public EntityRobotWarrior(World par1World)
{
super(par1World);
this.setSize(0.9F, 1.3F); //Размерчики
this.setEquipmentDropChance(1, 1.0F); //Шанс дропа экипировки
this.setCanPickUpLoot(true); //Может подбирать лут
//AI.... Тут тупо поможет перевод названий классов.
this.tasks.addTask(1, new EntityAISwimming(this)); //Плавает
this.tasks.addTask(5, new EntityAIWander(this, 0.8D));
this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); //Смотрит на вас
this.tasks.addTask(6, new EntityAILookIdle(this)); //Просто смотрит
this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); //Подходит
this.tasks.addTask(7, new EntityAIAttackOnCollide(this, EntityPlayer.class, 0, true));
this.tasks.addTask(8, new EntityAIAttackOnCollide(this, EntityVillager.class, 0, false));
this.tasks.addTask(9, new EntityAIAttackOnCollide(this, EntityIronGolem.class, 0, false));
}
@Override
protected void applyEntityAttributes()
{
super.applyEntityAttributes();
this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(60.0D); //Макс хп у моба.
this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setAttribute(0.4D);//Скорость передвижения
}
@Override
protected String getLivingSound()
{
return "powerblocks:robot1living";//Это обычные звуки
}
@Override
protected String getHurtSound()
{
return "powerblocks:robot1hurt";//Это звуки урона, их туда же.
}
@Override
protected String getDeathSound()
{
return "powerblocks:robot1death";//Типо звуки смерти.
}
@Override
protected float getSoundVolume() //Громкость звуков
{
return 0.5F;
}
}
Код:
package assets.powerblocks.src;
import net.minecraftforge.common.MinecraftForge;
import assets.powerblocks.src.EntityRobotWarrior;
import cpw.mods.fml.client.registry.RenderingRegistry;
public class ClientProxy extends CommonProxy{
public void preLoad() {
}
public void load(){
MinecraftForge.EVENT_BUS.register(new RobotWarriorSoundEvent());
RenderingRegistry.registerEntityRenderingHandler(EntityRobotWarrior.class, new RenderRobotWarrior(new ModelRobotWarrior(),2.0F));
}
public void postLoad(){
}
}
Код:
package assets.powerblocks.src;
public class CommonProxy {
public CommonProxy()
{
}
public void registerRenderThings()
{
}
public void registerSoundThings()
{
}
public int setArmorPrefix(String string)
{
return 0;
}
}
Код:
package assets.powerblocks.src;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class RenderRobotWarrior extends RenderLiving
{
private static final ResourceLocation Robot1 = new ResourceLocation("powerblocks:textures/entity/robot1");
public RenderRobotWarrior(ModelBase par1ModelBase, float par2)
{
super(par1ModelBase, par2);
}
@Override
protected ResourceLocation getEntityTexture(Entity par1Entity)
{
return Robot1;
}
}
Код:
package assets.powerblocks.src;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelRobotWarrior extends ModelBase
{
//fields
ModelRenderer head;
ModelRenderer body;
ModelRenderer rightarm;
ModelRenderer leftarm;
ModelRenderer rightleg;
ModelRenderer leftleg;
public ModelRobotWarrior()
{
textureWidth = 64;
textureHeight = 64;
this.head = new ModelRenderer(this, 0, 0);
this.head.addBox(-4F, -8F, -4F, 6, 8, 6);
this.head.setRotationPoint(1F, -17F, 1F);
this.head.setTextureSize(64, 64);
this.head.mirror = true;
this.setRotation(head, 0F, 0F, 0F);
this.body = new ModelRenderer(this, 16, 16);
this.body.addBox(-4F, 0F, -2F, 8, 12, 4);
this.body.setRotationPoint(0F, -17F, 0F);
this.body.setTextureSize(64, 64);
this.body.mirror = true;
this.setRotation(body, 0F, 0F, 0F);
this.rightarm.mirror = true;
this.rightarm = new ModelRenderer(this, 40, 16);
this.rightarm.addBox(-3F, -2F, -2F, 4, 27, 4);
this.rightarm.setRotationPoint(-5F, -14F, 0F);
this.rightarm.setTextureSize(64, 64);
this.rightarm.mirror = true;
this.setRotation(rightarm, 0F, 0F, 0F);
this.rightarm.mirror = false;
this.leftarm = new ModelRenderer(this, 40, 16);
this.leftarm.addBox(-1F, -2F, -2F, 4, 27, 4);
this.leftarm.setRotationPoint(5F, -14F, 0F);
this.leftarm.setTextureSize(64, 64);
this.leftarm.mirror = true;
this.setRotation(leftarm, 0F, 0F, 0F);
this.rightleg = new ModelRenderer(this, 0, 16);
this.rightleg.addBox(-2F, 0F, -2F, 3, 29, 4);
this.rightleg.setRotationPoint(-1.7F, -5F, 0F);
this.rightleg.setTextureSize(64, 64);
this.rightleg.mirror = true;
this.setRotation(rightleg, 0F, 0F, 0F);
this.leftleg = new ModelRenderer(this, 0, 16);
this.leftleg.addBox(-2F, 0F, -2F, 3, 29, 4);
this.leftleg.setRotationPoint(2.6F, -5F, 0F);
this.leftleg.setTextureSize(64, 64);
this.leftleg.mirror = true;
this.setRotation(leftleg, 0F, 0F, 0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
head.render(f5);
body.render(f5);
rightarm.render(f5);
leftarm.render(f5);
rightleg.render(f5);
leftleg.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)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5);
}
}
super.setRotationAngles(f, f1, f2, f3, f4, f5);
У меня ошибка,однако, я не знаю, как ещё исправить.
Удаляю- без результатов.
Приписываю после f5 ", entity" - тоже. Короче я не понимаю, в чём прикол,поэтому прошу о помощи.
Модель создавалась в программе Techne.
И ещё- как сделать анимацию при ходьбе и аттаке моба? Допустим,когда Голем атакует, у него поднимаются руки.
Что-то Типа того
Извините за такую большую тему.
Спасибо