Posted November 14, 20159 yr Hi guy's, today I made a mob. If I spawn him, he has like two textures, very weird. I also wanted him to wear an armor and an item. I thought about it, and removed the armor code. But he still was there two times.. Could you please take a look into ma' code? Thanks, Dary EntityCreator.java package netcrafter.mods.aoto.util; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.EntityList; import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.projectile.EntityEgg; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.registry.EntityRegistry; import netcrafter.mods.aoto.Main; public class EntityCreator { public static final void createEntity(Class entityClass, Render renderer, String name, EnumCreatureType type, boolean doesSpawn, int probability, int minSpawn, int maxSpawn, BiomeGenBase[] biomes, int solidColor, int spotColor, boolean hasSpawnEgg) { int id = EntityRegistry.findGlobalUniqueEntityId(); EntityRegistry.registerGlobalEntityID(entityClass, name, id); EntityRegistry.registerModEntity(entityClass, name, id, Main.instance, 64, 1, true); RenderingRegistry.registerEntityRenderingHandler(entityClass, renderer); if(doesSpawn) { EntityRegistry.addSpawn(name, probability, minSpawn, maxSpawn, type, biomes); } if(hasSpawnEgg) { EntityList.entityEggs.put(Integer.valueOf(id), new EntityList.EntityEggInfo(id, solidColor, spotColor)); } } public static final void createEntityItem(Class entityClass, Render renderer, String name) { int id = EntityRegistry.findGlobalUniqueEntityId(); EntityRegistry.registerGlobalEntityID(entityClass, name, id); EntityRegistry.registerModEntity(entityClass, name, id, Main.instance, 64, 1, true); RenderingRegistry.registerEntityRenderingHandler(entityClass, renderer); } } CommonProxy.java package netcrafter.mods.aoto.proxy; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.RenderSnowball; import net.minecraft.entity.EnumCreatureType; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import netcrafter.mods.aoto.Main; import netcrafter.mods.aoto.crafting.AOTOCrafting; import netcrafter.mods.aoto.entity.boss.EntityForestGuardian; import netcrafter.mods.aoto.entity.boss.EntityKingSteve; import netcrafter.mods.aoto.entity.mob.EntityTreeMinion; import netcrafter.mods.aoto.entity.projectile.EntityTreeRoot; import netcrafter.mods.aoto.init.AOTOBlocks; import netcrafter.mods.aoto.init.AOTOItems; import netcrafter.mods.aoto.render.entity.RenderForestGuardian; import netcrafter.mods.aoto.render.entity.RenderKingSteve; import netcrafter.mods.aoto.render.entity.RenderTreeMinion; import netcrafter.mods.aoto.util.EntityCreator; import netcrafter.mods.aoto.util.WorldGenRegister; import netcrafter.mods.aoto.world.gen.feature.ForestGen; public class CommonProxy { public void preInit(FMLPreInitializationEvent e) { //Creating and registering items and blocks AOTOItems.createItems(); AOTOBlocks.createBlocks(); } public void init(FMLInitializationEvent e) { //Register crafting recipes AOTOCrafting.initCrafting(); //Create and register entities EntityCreator.createEntityItem(EntityTreeRoot.class, new RenderSnowball(Minecraft.getMinecraft().getRenderManager(), AOTOItems.tree_root, Minecraft.getMinecraft().getRenderItem()), "TreeRoot"); EntityCreator.createEntity(EntityKingSteve.class, new RenderKingSteve(), "KingSteve", EnumCreatureType.MONSTER, false, 0, 0, 0, null, 0xF2FF00, 0x020B12, true); EntityCreator.createEntity(EntityForestGuardian.class, new RenderForestGuardian(), "ForestGuardian", EnumCreatureType.MONSTER, false, 0, 0, 0, null, 0xC219A3, 0x19C238, true); EntityCreator.createEntity(EntityTreeMinion.class, new RenderTreeMinion(), "TreeMinion", EnumCreatureType.MONSTER, false, 0, 0, 0, null, 0xA85236, 0x6E260E, true); //Register world generators WorldGenRegister.registerGenerators(); } public void postInit(FMLPostInitializationEvent e) { } public void registerRenders() { } } EntityKingSteve.java package netcrafter.mods.aoto.entity.boss; import java.util.Random; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIArrowAttack; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAIHurtByTarget; import net.minecraft.entity.ai.EntityAILookIdle; import net.minecraft.entity.ai.EntityAIMoveTowardsTarget; 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.boss.IBossDisplayData; import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityXPOrb; import net.minecraft.entity.monster.EntityGuardian; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockPos; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.MathHelper; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.World; import netcrafter.mods.aoto.Reference; import netcrafter.mods.aoto.entity.mob.EntityTreeMinion; import netcrafter.mods.aoto.entity.projectile.EntityTreeRoot; import netcrafter.mods.aoto.init.AOTOItems; public class EntityKingSteve extends EntityMob implements IBossDisplayData { private int attackCounter = 0; private int deathTicks = 0; private int regenTime = 0; public EntityKingSteve(World worldIn) { super(worldIn); this.setSize(1.5F, 7.0F); this.tasks.addTask(1, new EntityAIAttackOnCollide(this, EntityPlayer.class, 2.0D, true)); this.tasks.addTask(2, new EntityAIMoveTowardsTarget(this, 1.0D, (float) 2.0D)); this.tasks.addTask(3, new EntityAIWander(this, 1.0D)); this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(5, new EntityAILookIdle(this)); this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true)); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(360.0F); this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(35.0D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.26D); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(15.0D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(2.0D); } protected void func_180481_a(DifficultyInstance p_180481_1_) { super.func_180481_a(p_180481_1_); this.setCurrentItemOrArmor(0, new ItemStack(AOTOItems.long_diamond_sword)); this.setCurrentItemOrArmor(1, new ItemStack(AOTOItems.beard)); } @Override protected String getLivingSound() { return Reference.MOD_ID + ":mob.forestguardian.living"; } @Override protected String getHurtSound() { return Reference.MOD_ID + ":mob.forestguardian.hurt"; } @Override protected String getDeathSound() { return Reference.MOD_ID + ":mob.forestguardian.death"; } /** Calls this method if the mob is dead */ @SuppressWarnings("unchecked") @Override protected void onDeathUpdate() { //Increments deathTicks every tick ++this.deathTicks; //Creates a huge explosion if the value of deathTicks is between 180 and 200 if (this.deathTicks >= 180 && this.deathTicks <= 200) { final float f = (this.rand.nextFloat() - 0.5F) * 1.5F; final float f1 = (this.rand.nextFloat() - 0.5F) * 2.0F; final float f2 = (this.rand.nextFloat() - 0.5F) * 1.5F; //Spawns the explosion into the world this.worldObj.spawnParticle(EnumParticleTypes.EXPLOSION_HUGE, this.posX + f, this.posY + 2.0D + f1, this.posZ + f2, 0.0D, 0.0D, 0.0D); } int i; int j; if (!this.worldObj.isRemote) { if (this.deathTicks > 150 && this.deathTicks % 5 == 0) { i = 30; while (i > 0) { j = EntityXPOrb.getXPSplit(i); i -= j; //Spawns xp orbs while i is bigger than zero this.worldObj.spawnEntityInWorld(new EntityXPOrb(this.worldObj, this.posX, this.posY, this.posZ, j)); } } } //Rotates the mob this.moveEntity(0.0D, 0.10000000149011612D, 0.0D); this.renderYawOffset = this.rotationYaw += 20.0F; //Checks if the death ticks reached 200 if (this.deathTicks == 200 && !this.worldObj.isRemote) { i = 20; while (i > 0) { j = EntityXPOrb.getXPSplit(i); i -= j; //Spawns xp orbs while i is bigger than 0 this.worldObj.spawnEntityInWorld(new EntityXPOrb(this.worldObj, this.posX, this.posY, this.posZ, j)); } //Drops an item this.entityDropItem(new ItemStack(AOTOItems.gem, 1, 1), 0.5F); //Spawns a lighting bolt into the world this.worldObj.addWeatherEffect(new EntityLightningBolt(worldObj, this.posX + 6, this.posY + 6, this.posZ)); //Sets this mob dead super.setDead(); } } @Override protected void dropFewItems(boolean par1, int par2) { final ItemStack var2 = new ItemStack(AOTOItems.crown); EnchantmentHelper.addRandomEnchantment(this.rand, var2, 5); this.entityDropItem(var2, 0.0F); } @Override public EntityItem entityDropItem(ItemStack par1ItemStack, float par2) { final EntityItem entityitem = new EntityItem(this.worldObj, this.posX, this.posY + par2, this.posZ, par1ItemStack); entityitem.motionY = -2.0D; entityitem.setPickupDelay(60); if (this.captureDrops) { this.capturedDrops.add(entityitem); }else{ this.worldObj.spawnEntityInWorld(entityitem); } return entityitem; } @Override public void onLivingUpdate() { if(regenTime++ > 10) { regenTime = 0; this.heal(4); } super.onLivingUpdate(); } } RenderKingSteve.java package netcrafter.mods.aoto.render.entity; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.layers.LayerBipedArmor; import net.minecraft.client.renderer.entity.layers.LayerHeldItem; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.boss.BossStatus; import net.minecraft.entity.boss.IBossDisplayData; import net.minecraft.util.ResourceLocation; import netcrafter.mods.aoto.Reference; import netcrafter.mods.aoto.entity.boss.EntityKingSteve; import netcrafter.mods.aoto.entity.mob.EntityTreeMinion; import netcrafter.mods.aoto.model.ModelKingSteve; import netcrafter.mods.aoto.model.ModelTreeMinion; public class RenderKingSteve extends RenderBiped { public RenderKingSteve() { super(Minecraft.getMinecraft().getRenderManager(), new ModelKingSteve(), 0); this.addLayer(new LayerHeldItem(this)); LayerBipedArmor layerbipedarmor = new LayerBipedArmor(this) { protected void func_177177_a() { this.field_177186_d = new ModelBiped(1.0F); this.field_177189_c = new ModelBiped(0.5F); } }; this.addLayer(layerbipedarmor); } @Override protected ResourceLocation getEntityTexture(Entity par1Entity) { return new ResourceLocation(Reference.MOD_ID, "textures/models/king_steve.png"); } private void renderEntity(EntityKingSteve entity, double x, double y, double z, float yaw, float partialTickTime) { super.doRender(entity, x, y, z, yaw, partialTickTime); } @Override public void doRender(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9) { BossStatus.setBossStatus((IBossDisplayData) par1EntityLiving, false); super.doRender(par1EntityLiving, par2, par4, par6, par8, par9); } } ModelKingSteve.java package netcrafter.mods.aoto.model; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelKingSteve extends ModelBiped { ModelRenderer head; ModelRenderer body; ModelRenderer rightarm; ModelRenderer leftarm; ModelRenderer rightleg; ModelRenderer leftleg; public ModelKingSteve() { textureWidth = 64; textureHeight = 32; head = new ModelRenderer(this, 0, 0); head.addBox(-4F, -8F, -4F, 8, 8, ; head.setRotationPoint(0F, 0F, 0F); head.setTextureSize(64, 32); head.mirror = true; setRotation(head, 0F, 0F, 0F); body = new ModelRenderer(this, 16, 16); body.addBox(-4F, 0F, -2F, 8, 12, 4); body.setRotationPoint(0F, 0F, 0F); body.setTextureSize(64, 32); body.mirror = true; setRotation(body, 0F, 0F, 0F); rightarm = new ModelRenderer(this, 40, 16); rightarm.addBox(-3F, -2F, -2F, 4, 12, 4); rightarm.setRotationPoint(-5F, 2F, 0F); rightarm.setTextureSize(64, 32); rightarm.mirror = true; setRotation(rightarm, 0F, 0F, 0F); leftarm = new ModelRenderer(this, 40, 16); leftarm.addBox(-1F, -2F, -2F, 4, 12, 4); leftarm.setRotationPoint(5F, 2F, 0F); leftarm.setTextureSize(64, 32); leftarm.mirror = true; setRotation(leftarm, 0F, 0F, 0F); rightleg = new ModelRenderer(this, 0, 16); rightleg.addBox(-2F, 0F, -2F, 4, 12, 4); rightleg.setRotationPoint(-2F, 12F, 0F); rightleg.setTextureSize(64, 32); rightleg.mirror = true; setRotation(rightleg, 0F, 0F, 0F); leftleg = new ModelRenderer(this, 0, 16); leftleg.addBox(-2F, 0F, -2F, 4, 12, 4); leftleg.setRotationPoint(2F, 12F, 0F); leftleg.setTextureSize(64, 32); leftleg.mirror = true; 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, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } } Well now, that I pasted the model, maybe it renders it two times, because it is already a modelbiped?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.