Jump to content

Recommended Posts

Posted

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

Posted

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.

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

    • You would have better results asking a more specific question. What have you done? What exactly do you need help with? Please also read the FAQ regarding posting logs.
    • Hi, this is my second post with the same content as no one answered this and it's been a long time since I made the last post, I want to make a client-only mod, everything is ok, but when I use shaders, none of the textures rendered in RenderLevelStageEvent nor the crow entity model are rendered, I want them to be visible, because it's a horror themed mod I've already tried it with different shaders, but it didn't work with any of them and I really want to add support for shaders Here is how i render the crow model in the CrowEntityRenderer<CrowEntity>, by the time i use this method, i know is not the right method but i don't think this is the cause of the problem, the renderType i'm using is entityCutout @Override public void render(CrowEntity p_entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { super.render(p_entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); ClientEventHandler.getClient().crow.renderToBuffer(poseStack, bufferSource.getBuffer(ClientEventHandler.getClient().crow .renderType(TEXTURE)), packedLight, OverlayTexture.NO_OVERLAY, Utils.rgb(255, 255, 255)); } Here renderLevelStage @Override public void renderWorld(RenderLevelStageEvent e) { horrorEvents.draw(e); } Here is how i render every event public void draw(RenderLevelStageEvent e) { for (HorrorEvent event : currentHorrorEvents) { event.tick(e.getPartialTick()); event.draw(e); } } Here is how i render the crow model on the event @Override public void draw(RenderLevelStageEvent e) { if(e.getStage() == RenderLevelStageEvent.Stage.AFTER_ENTITIES) { float arcProgress = getArcProgress(0.25f); int alpha = (int) Mth.lerp(arcProgress, 0, 255); int packedLight = LevelRenderer.getLightColor(Minecraft.getInstance().level, blockPos); VertexConsumer builder = ClientEventHandler.bufferSource.getBuffer(crow); Crow<CreepyBirdHorrorEvent> model = ClientEventHandler .getClient().crow; model.setupAnim(this); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, packedLight, OverlayTexture.NO_OVERLAY, alpha); builder = ClientEventHandler.bufferSource.getBuffer(eyes); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, 15728880, OverlayTexture.NO_OVERLAY, alpha); } } How i render the model public static void renderModelInWorld(Model model, Vector3f pos, Vector3f offset, Camera camera, PoseStack matrix, VertexConsumer builder, int light, int overlay, int alpha) { matrix.pushPose(); Vec3 cameraPos = camera.getPosition(); double finalX = pos.x - cameraPos.x + offset.x; double finalY = pos.y - cameraPos.y + offset.y; double finalZ = pos.z - cameraPos.z + offset.z; matrix.pushPose(); matrix.translate(finalX, finalY, finalZ); matrix.mulPose(Axis.XP.rotationDegrees(180f)); model.renderToBuffer(matrix, builder, light, overlay, Utils .rgba(255, 255, 255, alpha)); matrix.popPose(); matrix.popPose(); } Thanks in advance
    • Same issue - I have no idea
    • I am trying to develop a modpack for me and my friends to use on our server. Does anyone know how to develop a modpack for a server or could they help take a look at my modpack to potentially help at all?
    • un server de armas realista.  
  • Topics

×
×
  • Create New...

Important Information

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