kmccmk9 Posted August 22, 2013 Posted August 22, 2013 Hello, so I've been trying to follow a few tutorials on how to add your own entity in the game. I have a model class, entity class and a render class. Now what am I missing to get an egg to show in the creative menu so I can even test if the model works in game? I did add the line from the wiki EntityRegistry.registerModEntity(EntityBee.class, "Bee", 1, this, 80, 5, true); Or should I be using the register mod ID instead? EDIT: Currently I'm using these three lines of code. EntityRegistry.registerModEntity(EntityBee.class, "Bee", 1, this, 80, 5, true); ModLoader.registerEntityID(EntityBee.class, "Bee", 1, background, foreground); EntityRegistry.addSpawn(EntityBee.class, 7, 1, 4, EnumCreatureType.monster, BiomeGenBase.beach, BiomeGenBase.forest, BiomeGenBase.jungle, BiomeGenBase.plains); LanguageRegistry.instance().addStringLocalization("entity.witchcraft.Bee.name", "Bee"); Render class: package kmccmk9.witchcraft; import kmccmk9.witchcraft.client.ModelBee; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; public class RendererBee extends RenderLiving { protected ModelBee model; private static final ResourceLocation field_110775_a = new ResourceLocation("textures/bee.png"); public RendererBee(ModelBee par1ModelBase, float par2) { super(par1ModelBase, par2); model = (ModelBee)par1ModelBase; } @Override protected ResourceLocation func_110775_a(Entity entity) { // TODO Auto-generated method stub return null; } } Entity Class: package kmccmk9.witchcraft; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.item.Item; import net.minecraft.world.World; import net.minecraft.src.*; public class EntityBee extends EntityLiving { public EntityBee(World par1World) { super(par1World); this.getNavigator().setAvoidsWater(true); this.setSize(0.5F, 0.5F); this.setEntityHealth(15F); this.setAIMoveSpeed(3F); } protected int getDropItemId() { return Item.porkRaw.itemID; } public String getTexture() { return "textures/body.png"; } } Model Class: package kmccmk9.witchcraft.client; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelBee extends ModelBase { //fields ModelRenderer BeeBody; ModelRenderer BeeHead; ModelRenderer ant1; ModelRenderer ant2; ModelRenderer wing2; ModelRenderer wing1; public ModelBee() { textureWidth = 64; textureHeight = 32; BeeBody = new ModelRenderer(this, 0, 0); BeeBody.addBox(0F, 0F, 0F, 5, 4, ; BeeBody.setRotationPoint(-3F, -3F, -4F); BeeBody.setTextureSize(64, 32); BeeBody.mirror = true; setRotation(BeeBody, 0F, 0F, 0F); BeeHead = new ModelRenderer(this, 19, 2); BeeHead.addBox(0F, 0F, 0F, 3, 3, 2); BeeHead.setRotationPoint(-2F, -4F, -6F); BeeHead.setTextureSize(64, 32); BeeHead.mirror = true; setRotation(BeeHead, 0F, 0F, 0F); ant1 = new ModelRenderer(this, 0, 0); ant1.addBox(0F, 0F, 0F, 1, 4, 1); ant1.setRotationPoint(1F, -7F, -5F); ant1.setTextureSize(64, 32); ant1.mirror = true; setRotation(ant1, 0F, 0F, 0.2722714F); ant2 = new ModelRenderer(this, 0, 0); ant2.addBox(0F, 0F, 0F, 1, 4, 1); ant2.setRotationPoint(-3F, -7F, -5F); ant2.setTextureSize(64, 32); ant2.mirror = true; setRotation(ant2, 0F, 0F, -0.2617994F); wing2 = new ModelRenderer(this, 29, 0); wing2.addBox(0F, 0F, 0F, 4, 1, 3); wing2.setRotationPoint(-7F, -3F, -1F); wing2.setTextureSize(64, 32); wing2.mirror = true; setRotation(wing2, 0F, 0F, 0.1745329F); wing1 = new ModelRenderer(this, 29, 0); wing1.addBox(0F, 0F, 0F, 4, 1, 3); wing1.setRotationPoint(2F, -2F, -1F); wing1.setTextureSize(64, 32); wing1.mirror = true; setRotation(wing1, 0F, 0F, -0.1745329F); } 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); BeeBody.render(f5); BeeHead.render(f5); ant1.render(f5); ant2.render(f5); wing2.render(f5); wing1.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); } } Quote
Jacknoshima Posted August 24, 2013 Posted August 24, 2013 I cba explaining it on here, because I'm tired and about to go to bed, but I wrote out a tutorial on how to get your spawn eggs into a custom creative tab, if you can understand it http://www.minecraftforum.net/topic/1921545-162-mob-spawn-egg-in-custom-creative-tab-tutorial/ and if you don't care about putting them in a custom creative tab, I uploaded my old way onto my github here https://github.com/Jacknoshima/Mods/blob/master/Pre-Alt%20Main%20Mod%20File which puts them into the misc tab the parts that get you spawn eggs are: public static int getUniqueID(){ int EntityId = 400; do{ EntityId++; } while(EntityList.getStringFromID(EntityId) != null); return EntityId; } public static void EntityEgg(Class<? extends Entity > entity, int primaryColor, int secondaryColor){ int id = getUniqueID(); EntityList.IDtoClassMapping.put(id, entity); EntityList.entityEggs.put(id, new EntityEggInfo(id, primaryColor, secondaryColor)); } and EntityEgg(EntityStatVillager.class, 0xFFCCDD, 0x1900FF); Quote
kmccmk9 Posted August 25, 2013 Author Posted August 25, 2013 I cba explaining it on here, because I'm tired and about to go to bed, but I wrote out a tutorial on how to get your spawn eggs into a custom creative tab, if you can understand it http://www.minecraftforum.net/topic/1921545-162-mob-spawn-egg-in-custom-creative-tab-tutorial/ and if you don't care about putting them in a custom creative tab, I uploaded my old way onto my github here https://github.com/Jacknoshima/Mods/blob/master/Pre-Alt%20Main%20Mod%20File which puts them into the misc tab the parts that get you spawn eggs are: public static int getUniqueID(){ int EntityId = 400; do{ EntityId++; } while(EntityList.getStringFromID(EntityId) != null); return EntityId; } public static void EntityEgg(Class<? extends Entity > entity, int primaryColor, int secondaryColor){ int id = getUniqueID(); EntityList.IDtoClassMapping.put(id, entity); EntityList.entityEggs.put(id, new EntityEggInfo(id, primaryColor, secondaryColor)); } and EntityEgg(EntityStatVillager.class, 0xFFCCDD, 0x1900FF); Hi thanks for the post, it seems to have worked (kinda). I'm having a problem with it. The first is that my model does not render correctly (see photo below), and when I tried to spawn the creature it caused the game to lag very badly (Could be due to the failed model). Below is my modified main class in case I messed up your directions. Thanks. I added these two lines to my main and everything is working well except for the model. Is it possible my model class is messed up? EntityList.IDtoClassMapping.put(id, EntityBee.class); EntityList.entityEggs.put(id, new EntityEggInfo(id, background, foreground)); Quote
Recommended Posts
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.