Jump to content

[SOLVED] Throwable item doRender not getting called?


intermediateuser

Recommended Posts

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()));
    }
    
}

Link to comment
Share on other sites

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!

 

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • This might be a long shot , but do you remember how you fixed that?
    • Yeah, I'll start with the ones I added last night.  Wasn't crashing until today and wasn't crashing at all yesterday (+past few days since removing Cupboard), so deductive reasoning says it's likeliest to be one of the new ones.  A few horse armor mods and a corn-based add-on to Farmer's Delight, the latter which I hope to keep - I could do without the horse armor mods if necessary.  Let me try a few things and we'll see. 
    • Add crash-reports with sites like https://mclo.gs/ Add this mod: https://www.curseforge.com/minecraft/mc-mods/packet-fixer/files/5416165
    • Maybe - remove recently added mods one by one
    • Temu, a popular online shopping platform, is currently offering an exclusive coupon code for Australian customers that can unlock significant savings. If you want to save money on your next purchase, the coupon code {act892435} is your key to unlocking AU$100 off your order, along with additional discounts on select items. How to Use the Coupon Code {act892435} Using the coupon code is straightforward. Follow these simple steps to maximize your savings: Download or Open the Temu App: If you haven't already, download the Temu app from your app store or visit the Temu website. Add Items to Your Cart: Browse through Temu’s vast selection of products and add your desired items to your shopping cart. Proceed to Checkout: Once you have finished shopping, go to your cart and click on the checkout button. Enter the Coupon Code: Look for the "Promo Code" or "Coupon Code" field on the checkout page. Enter {act892435} into this field and click “apply.” Enjoy Your Savings: After applying the code, you will see a deduction of AU$100 from your total order amount, plus you may receive an additional discount of 30% to 70% off on select items. Benefits of Using {act892435} The coupon code {act892435} is particularly beneficial for several reasons: Significant Savings: The AU$100 discount applies to your entire order, making it a great opportunity for larger purchases. Additional Discounts: In addition to the AU$100 off, you can stack this coupon with other promotions that offer up to 70% off select items, maximizing your savings potential. No Minimum Purchase Requirement: There’s no minimum spend required to use this coupon, allowing you to use it on any size order. Tips for Maximizing Your Savings To get the most out of the {act892435} coupon code, consider these tips: Shop Strategically: Since the AU$100 discount applies to your total order, consider purchasing multiple items or higher-priced products to maximize your savings. Check Eligible Items: Make sure to add items that qualify for additional discounts (30% to 70% off) to benefit from both offers. Stay Updated on Promotions: Keep an eye on Temu’s app and website for flash sales and limited-time offers that can further enhance your savings. Additional Ways to Save on Temu While using the coupon code {act892435} is one of the best ways to save right now, there are other strategies you can employ: Explore the Deals Section: Regularly check Temu's "Deals" section in the app for time-sensitive offers and sales. Follow Social Media Accounts: By following Temu’s Australian social media pages, you may gain access to exclusive promo codes not available elsewhere. Sign Up for Newsletters: Subscribe to Temu’s email newsletter for updates on new deals and additional discount codes delivered directly to your inbox. Conclusion The exclusive coupon code {act892435} offers Australian shoppers a fantastic opportunity to save AU$100 on their next Temu purchase while also enjoying extra discounts on select items. By following simple steps during checkout and employing strategic shopping techniques, you can maximize your savings significantly. Don’t miss out on this limited-time offer—head over to Temu today and start shopping! Share
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.