Posted June 19, 201312 yr I'm trying to emulate a thrown item, the snowball. The item I made shows up in game, can be held in hand, and on right-click gets thrown properly, but the projectile is invisible. I know it impacts because it explodes in-world. But the item does not render in-world. I've seen tutorials for this, and other posts in this forum, but all these tutorials and posts use their own models as the entity to render. I simply want to render the sprite and have that thrown, the way the snowball does. I've copied the snowball's code almost exactly (changing only what needs to be changed), but the doRender method never gets called. I System.out.println()'d my way through and the constructor in the renderer gets called. But nothing ever reaches doRender. This is all set up precisely like the snowball, so I'm confused. ItemExplodets.java package x.thealphaelement.item; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import x.thealphaelement.entity.EntityExplodets; public class ItemExplodets extends Item { public ItemExplodets(int par1) { super(par1); this.maxStackSize = 64; this.setCreativeTab(CreativeTabs.tabMisc); setUnlocalizedName("explodets"); } public void registerIcons(IconRegister iconRegister) { itemIcon = iconRegister.registerIcon("TheAlphaElement:explodetsHeld"); } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if (!par3EntityPlayer.capabilities.isCreativeMode) { --par1ItemStack.stackSize; } par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityExplodets(par2World, par3EntityPlayer)); } return par1ItemStack; } } EntityExplodets.java package x.thealphaelement.entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class EntityExplodets extends EntityThrowable { public EntityExplodets(World par1World) { super(par1World); } public EntityExplodets(World par1World, EntityLiving par2EntityLiving) { super(par1World, par2EntityLiving); } public EntityExplodets(World par1World, double par2, double par4, double par6) { super(par1World, par2, par4, par6); } @Override protected void onImpact(MovingObjectPosition movingobjectposition) { this.worldObj.newExplosion(getThrower(), this.posX, this.posY, this.posZ, 1.0f, false, false); this.setDead(); } } RenderExplodets.java package x.thealphaelement.client.renderer.entity; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.EntityPotion; import net.minecraft.item.Item; import net.minecraft.item.ItemPotion; import net.minecraft.potion.PotionHelper; import net.minecraft.util.Icon; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import x.thealphaelement.TheAlphaElement; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class RenderExplodets extends Render { private Item field_94151_a; private int field_94150_f; public RenderExplodets(Item par1, int par2) { this.field_94151_a = par1; this.field_94150_f = par2; System.out.println("Constructor RenderExplodets: " + this.field_94151_a + " // " + this.field_94150_f); } public RenderExplodets(Item par1) { this(par1, 0); } public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { Icon icon = this.field_94151_a.getIconFromDamage(this.field_94150_f); System.out.println("Rendering!"); // This never gets called! It's supposed to be called when throwing the item. if (icon != null) { GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.5F, 0.5F, 0.5F); this.loadTexture("/gui/items.png"); Tessellator tessellator = Tessellator.instance; if (icon == ItemPotion.func_94589_d("potion_splash")) { int i = PotionHelper.func_77915_a(((EntityPotion)par1Entity).getPotionDamage(), false); float f2 = (float)(i >> 16 & 255) / 255.0F; float f3 = (float)(i >> 8 & 255) / 255.0F; float f4 = (float)(i & 255) / 255.0F; GL11.glColor3f(f2, f3, f4); GL11.glPushMatrix(); this.func_77026_a(tessellator, ItemPotion.func_94589_d("potion_contents")); GL11.glPopMatrix(); GL11.glColor3f(1.0F, 1.0F, 1.0F); } this.func_77026_a(tessellator, icon); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } } private void func_77026_a(Tessellator par1Tessellator, Icon par2Icon) { float f = par2Icon.getMinU(); float f1 = par2Icon.getMaxU(); float f2 = par2Icon.getMinV(); float f3 = par2Icon.getMaxV(); float f4 = 1.0F; float f5 = 0.5F; float f6 = 0.25F; GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F); par1Tessellator.startDrawingQuads(); par1Tessellator.setNormal(0.0F, 1.0F, 0.0F); par1Tessellator.addVertexWithUV((double)(0.0F - f5), (double)(0.0F - f6), 0.0D, (double)f, (double)f3); par1Tessellator.addVertexWithUV((double)(f4 - f5), (double)(0.0F - f6), 0.0D, (double)f1, (double)f3); par1Tessellator.addVertexWithUV((double)(f4 - f5), (double)(f4 - f6), 0.0D, (double)f1, (double)f2); par1Tessellator.addVertexWithUV((double)(0.0F - f5), (double)(f4 - f6), 0.0D, (double)f, (double)f2); par1Tessellator.draw(); } } ClientProxy.java package x.thealphaelement.client; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import x.thealphaelement.CommonProxy; import x.thealphaelement.TheAlphaElement; import x.thealphaelement.client.gui.GuiMerchantBlock; import x.thealphaelement.client.renderer.RenderBlazeModded; import x.thealphaelement.client.renderer.RenderCreeperModded; import x.thealphaelement.client.renderer.RenderEndermanModded; import x.thealphaelement.client.renderer.RenderGhastModded; import x.thealphaelement.client.renderer.RenderSkeletonModded; import x.thealphaelement.client.renderer.RenderSpiderModded; import x.thealphaelement.client.renderer.RenderWitchModded; import x.thealphaelement.client.renderer.RenderZombieModded; import x.thealphaelement.client.renderer.entity.RenderExplodets; import x.thealphaelement.entity.EntityExplodets; import x.thealphaelement.entity.monster.EntityBlazeModded; import x.thealphaelement.entity.monster.EntityBlueSkeleton; import x.thealphaelement.entity.monster.EntityBlueSpider; import x.thealphaelement.entity.monster.EntityBlueZombie; import x.thealphaelement.entity.monster.EntityCaveSpiderModded; import x.thealphaelement.entity.monster.EntityCreeperModded; import x.thealphaelement.entity.monster.EntityEndermanModded; import x.thealphaelement.entity.monster.EntityGhastModded; import x.thealphaelement.entity.monster.EntityPigZombieModded; import x.thealphaelement.entity.monster.EntityRedSkeleton; import x.thealphaelement.entity.monster.EntityRedSpider; import x.thealphaelement.entity.monster.EntityRedZombie; import x.thealphaelement.entity.monster.EntitySkeletonModded; import x.thealphaelement.entity.monster.EntitySpiderModded; import x.thealphaelement.entity.monster.EntitySpiderling; import x.thealphaelement.entity.monster.EntityWitchModded; import x.thealphaelement.entity.monster.EntityZombieModded; import x.thealphaelement.tileentity.TileEntityMerchantBlock; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.registry.EntityRegistry; public class ClientProxy extends CommonProxy { @Override public void registerRenderers() { RenderingRegistry.registerEntityRenderingHandler(EntitySkeletonModded.class, new RenderSkeletonModded()); EntityRegistry.registerGlobalEntityID(EntitySkeletonModded.class, "NormalSkeleton", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityZombieModded.class, new RenderZombieModded()); EntityRegistry.registerGlobalEntityID(EntityZombieModded.class, "NormalZombie", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntitySpiderModded.class, new RenderSpiderModded()); EntityRegistry.registerGlobalEntityID(EntitySpiderModded.class, "NormalSpider", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityCreeperModded.class, new RenderCreeperModded()); EntityRegistry.registerGlobalEntityID(EntityCreeperModded.class, "NormalCreeper", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityEndermanModded.class, new RenderEndermanModded()); EntityRegistry.registerGlobalEntityID(EntityEndermanModded.class, "NormalEnderman", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityCaveSpiderModded.class, new RenderSpiderModded()); EntityRegistry.registerGlobalEntityID(EntityCaveSpiderModded.class, "NormalCaveSpider", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityWitchModded.class, new RenderWitchModded()); EntityRegistry.registerGlobalEntityID(EntityWitchModded.class, "NormalWitch", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityBlazeModded.class, new RenderBlazeModded()); EntityRegistry.registerGlobalEntityID(EntityBlazeModded.class, "NormalBlaze", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityGhastModded.class, new RenderGhastModded()); EntityRegistry.registerGlobalEntityID(EntityGhastModded.class, "NormalGhast", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityPigZombieModded.class, new RenderZombieModded()); EntityRegistry.registerGlobalEntityID(EntityPigZombieModded.class, "NormalPigZombie", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityRedZombie.class, new RenderZombieModded()); EntityRegistry.registerGlobalEntityID(EntityRedZombie.class, "RedZombie", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityBlueZombie.class, new RenderZombieModded()); EntityRegistry.registerGlobalEntityID(EntityBlueZombie.class, "BlueZombie", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityRedSkeleton.class, new RenderSkeletonModded()); EntityRegistry.registerGlobalEntityID(EntityRedSkeleton.class, "RedSkeleton", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityBlueSkeleton.class, new RenderSkeletonModded()); EntityRegistry.registerGlobalEntityID(EntityBlueSkeleton.class, "BlueSkeleton", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityRedSpider.class, new RenderSpiderModded()); EntityRegistry.registerGlobalEntityID(EntityRedSpider.class, "RedSpider", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityBlueSpider.class, new RenderSpiderModded()); EntityRegistry.registerGlobalEntityID(EntityBlueSpider.class, "BlueSpider", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntitySpiderling.class, new RenderSpiderModded()); EntityRegistry.registerGlobalEntityID(EntitySpiderling.class, "Spiderling", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); RenderingRegistry.registerEntityRenderingHandler(EntityExplodets.class, new RenderExplodets((Item)TheAlphaElement.explodets)); EntityRegistry.registerGlobalEntityID(EntityExplodets.class, "Explodets", EntityRegistry.findGlobalUniqueEntityId(), 3515848, 12102); } public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (tileEntity != null) { switch(ID) { case 0: return new GuiMerchantBlock(player, (TileEntityMerchantBlock)tileEntity); // your GUIs go here } } return null; } } CommonProxy.java package x.thealphaelement; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import x.thealphaelement.client.gui.ContainerMerchantBlock; import x.thealphaelement.tileentity.TileEntityMerchantBlock; import cpw.mods.fml.common.network.IGuiHandler; public class CommonProxy implements IGuiHandler { // Client stuff public void registerRenderers() { // Nothing here as the server doesn't render graphics! } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (tileEntity != null) { switch(ID) { case 0: return new ContainerMerchantBlock(player.inventory, (TileEntityMerchantBlock)tileEntity); // your Containers go here } } return null; } } Base mod class: package x.thealphaelement; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.EnumHelper; import net.minecraftforge.common.MinecraftForge; import org.lwjgl.input.Keyboard; import x.thealphaelement.block.BlockBedModded; import x.thealphaelement.block.BlockGlassModded; import x.thealphaelement.block.MerchantBlock; import x.thealphaelement.client.keybinding.HealthPotionKeyBind; import x.thealphaelement.entity.monster.EntityBlazeModded; import x.thealphaelement.entity.monster.EntityBlueSkeleton; import x.thealphaelement.entity.monster.EntityBlueSpider; import x.thealphaelement.entity.monster.EntityBlueZombie; import x.thealphaelement.entity.monster.EntityCaveSpiderModded; import x.thealphaelement.entity.monster.EntityCreeperModded; import x.thealphaelement.entity.monster.EntityEndermanModded; import x.thealphaelement.entity.monster.EntityGhastModded; import x.thealphaelement.entity.monster.EntityPigZombieModded; import x.thealphaelement.entity.monster.EntityRedSkeleton; import x.thealphaelement.entity.monster.EntityRedSpider; import x.thealphaelement.entity.monster.EntityRedZombie; import x.thealphaelement.entity.monster.EntitySkeletonModded; import x.thealphaelement.entity.monster.EntitySpiderModded; import x.thealphaelement.entity.monster.EntitySpiderling; import x.thealphaelement.entity.monster.EntityWitchModded; import x.thealphaelement.entity.monster.EntityZombieModded; import x.thealphaelement.eventhandlers.EntityJoinWorldHandler; import x.thealphaelement.eventhandlers.EventSounds; import x.thealphaelement.eventhandlers.GenerateMinableHandler; import x.thealphaelement.eventhandlers.OverlayEventHandler; import x.thealphaelement.item.GlassShard; import x.thealphaelement.item.GlassSword; import x.thealphaelement.item.ItemExplodets; import x.thealphaelement.item.RedPotion; import x.thealphaelement.tileentity.TileEntityMerchantBlock; import cpw.mods.fml.client.registry.KeyBindingRegistry; 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.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid="TheAlphaElement", name="The Alpha Element", version="0.2.4") @NetworkMod(clientSideRequired=true, serverSideRequired=false) //, channels = {"TheAlphaElement"}, packetHandler = TheAlphaElementPacketHandler.class) public class TheAlphaElement { // The instance of your mod that Forge uses. @Instance("TheAlphaElement") public static TheAlphaElement instance; // Monster spawning biomes. BiomeGenBase[] monsterSpawnBiomes = new BiomeGenBase[] { BiomeGenBase.plains, BiomeGenBase.desert, BiomeGenBase.extremeHills, BiomeGenBase.forest, BiomeGenBase.taiga, BiomeGenBase.swampland, BiomeGenBase.river, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.mushroomIsland, BiomeGenBase.mushroomIslandShore, BiomeGenBase.beach, BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.taigaHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle, BiomeGenBase.jungleHills }; private BiomeGenBase theNether = BiomeGenBase.biomeList[8]; // Register materials here. private final static EnumToolMaterial GLASSMATERIAL = EnumHelper.addToolMaterial("GLASSMATERIAL", 0, 1, 6.0F, 35, 10); // Initialize items here. public static Item glassShard = new GlassShard(5000); public static Item glassSword = new GlassSword(5001, GLASSMATERIAL); public static Item redPotion = new RedPotion(5002); public static Item explodets = new ItemExplodets(5003); // Initialize blocks here. public final static Block merchantBlock = new MerchantBlock(500, 0, Material.wood); // Says where the client and server 'proxy' code is loaded. @SidedProxy(clientSide="x.thealphaelement.client.ClientProxy", serverSide="x.thealphaelement.CommonProxy") public static CommonProxy proxy; @PreInit public void preInit(FMLPreInitializationEvent event) { NetworkRegistry.instance().registerGuiHandler(this, this.proxy); instance = this; MinecraftForge.EVENT_BUS.register(new EventSounds()); KeyBinding[] key = {new KeyBinding("Use Red Potion", Keyboard.KEY_G)}; boolean[] repeat = {false}; KeyBindingRegistry.registerKeyBinding(new HealthPotionKeyBind(key, repeat)); } @Init public void load(FMLInitializationEvent event) { proxy.registerRenderers(); // NetworkRegistry.instance().registerGuiHandler(this, new GuiHandler()); // Register new mobs. EntityRegistry.registerModEntity(EntitySkeletonModded.class, "Normal Skeleton", 32, this, 80, 3, true); // EntityRegistry.addSpawn(EntitySkeletonModded.class, 30, 2, 4, EnumCreatureType.monster, monsterSpawnBiomes); LanguageRegistry.instance().addStringLocalization("entity.NormalSkeleton.name", "Normal Skeleton"); EntityRegistry.registerModEntity(EntityZombieModded.class, "Normal Zombie", 33, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalZombie.name", "Normal Zombie"); EntityRegistry.registerModEntity(EntitySpiderModded.class, "Normal Spider", 34, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalSpider.name", "Normal Spider"); EntityRegistry.registerModEntity(EntityCreeperModded.class, "Normal Creeper", 35, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalCreeper.name", "Normal Creeper"); EntityRegistry.registerModEntity(EntityEndermanModded.class, "Normal Enderman", 36, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalEnderman.name", "Normal Enderman"); EntityRegistry.registerModEntity(EntityCaveSpiderModded.class, "Normal Cave Spider", 37, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalCaveSpider.name", "Normal Cave Spider"); EntityRegistry.registerModEntity(EntityWitchModded.class, "Normal Witch", 38, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalWitch.name", "Normal Witch"); EntityRegistry.registerModEntity(EntityBlazeModded.class, "Normal Blaze", 39, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalBlaze.name", "Normal Blaze"); EntityRegistry.registerModEntity(EntityGhastModded.class, "Normal Ghast", 40, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalGhast.name", "Normal Ghast"); EntityRegistry.registerModEntity(EntityPigZombieModded.class, "Normal Pig Zombie", 41, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.NormalPigZombie.name", "Normal Pig Zombie"); EntityRegistry.registerModEntity(EntityRedZombie.class, "Red Zombie", 42, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.RedZombie.name", "Red Zombie"); EntityRegistry.registerModEntity(EntityBlueZombie.class, "Blue Zombie", 43, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.BlueZombie.name", "Blue Zombie"); EntityRegistry.registerModEntity(EntityRedSkeleton.class, "Red Skeleton", 44, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.RedSkeleton.name", "Red Skeleton"); EntityRegistry.registerModEntity(EntityBlueSkeleton.class, "Blue Skeleton", 45, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.BlueSkeleton.name", "Blue Skeleton"); EntityRegistry.registerModEntity(EntityBlueSpider.class, "Blue Spider", 46, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.BlueSpider.name", "Blue Spider"); EntityRegistry.registerModEntity(EntityRedSpider.class, "Red Spider", 47, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.RedSpider.name", "Red Spider"); EntityRegistry.registerModEntity(EntitySpiderling.class, "Spiderling", 48, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.Spiderling.name", "Spiderling"); // Register item names LanguageRegistry.addName(glassShard, "Glass Shard"); LanguageRegistry.addName(glassSword, "Glass Sword"); LanguageRegistry.addName(redPotion, "Red Potion"); LanguageRegistry.addName(explodets, "Explodets"); // Register recipes. GameRegistry.addRecipe(new ItemStack(TheAlphaElement.glassSword), "x", "x", "y", 'x', TheAlphaElement.glassShard, 'y', Item.stick); GameRegistry.addRecipe(new ItemStack(TheAlphaElement.merchantBlock), "www", "wew", "www", 'w', Block.planks, 'e', Item.emerald); //Register event listeners. MinecraftForge.EVENT_BUS.register(new EntityJoinWorldHandler()); // Handle spawning of entities. MinecraftForge.ORE_GEN_BUS.register(new GenerateMinableHandler()); //Register blocks. GameRegistry.registerBlock(merchantBlock, "generalMerchant"); LanguageRegistry.addName(merchantBlock, "General Merchant"); /* These blocks of code replace default blocks with our own. Our blocks inherit all default block * properties, but may also modify behaviors. * 1. Remove the block from the array called blocksList. * 2. Add our block class into that spot in the array. * 3. Register the block with the game. */ int glassID = Block.glass.blockID; Block.blocksList[glassID] = null; Block blockGlassModded = new BlockGlassModded(glassID, Material.glass, false); GameRegistry.registerBlock(blockGlassModded, "glass"); int bedID = Block.bed.blockID; Block.blocksList[bedID] = null; Block blockBedModded = new BlockBedModded(bedID); GameRegistry.registerBlock(blockBedModded, "bed"); // Register Tile Entities GameRegistry.registerTileEntity(TileEntityMerchantBlock.class, "generalMerchant"); } @PostInit public void postInit(FMLPostInitializationEvent event) { // Stub Method MinecraftForge.EVENT_BUS.register(new OverlayEventHandler(Minecraft.getMinecraft())); } }
June 19, 201312 yr Author Solved. The entity (in this case, EntityExplodets) must be registered in the base mod class. I added the following code and now it's displaying properly. EntityRegistry.registerModEntity(EntityExplodets.class, "Explodets", 49, this, 80, 3, true); LanguageRegistry.instance().addStringLocalization("entity.Explodets.name", "Explodets"); I'm not certain, currently, that the second line is needed, but I added it anyway. Happy code wrangling!
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.