Jump to content

Recommended Posts

Posted

Hi, I was wondering how I would add textures to entities. In my case its a primed tnt. The block works in every way but when it ignites it disappears but it still explodes

 

 

EntityeTNTPrime:

package com.hurleyboarder.Main;

import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class EntityeTNTPrime extends Entity
{
    /** How long the fuse is */
    public int fuse;
    private EntityLivingBase tntPlacedBy;
    private static final String __OBFID = "CL_00001681";

    


public EntityeTNTPrime(World p_i1729_1_)
    {
        super(p_i1729_1_);
        this.preventEntitySpawning = true;
        this.setSize(0.98F, 0.98F);
        this.yOffset = this.height / 2.0F;
    }

    public EntityeTNTPrime(World p_i1730_1_, double p_i1730_2_, double p_i1730_4_, double p_i1730_6_, EntityLivingBase p_i1730_8_)
    {
        this(p_i1730_1_);
        this.setPosition(p_i1730_2_, p_i1730_4_, p_i1730_6_);
        float f = (float)(Math.random() * Math.PI * 2.0D);
        this.motionX = (double)(-((float)Math.sin((double)f)) * 0.02F);
        this.motionY = 0.20000000298023224D;
        this.motionZ = (double)(-((float)Math.cos((double)f)) * 0.02F);
        this.fuse = 80;
        this.prevPosX = p_i1730_2_;
        this.prevPosY = p_i1730_4_;
        this.prevPosZ = p_i1730_6_;
        this.tntPlacedBy = p_i1730_8_;
    }

    protected void entityInit() {}

    /**
     * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to
     * prevent them from trampling crops
     */
    protected boolean canTriggerWalking()
    {
        return false;
    }

    /**
     * Returns true if other Entities should be prevented from moving through this Entity.
     */
    public boolean canBeCollidedWith()
    {
        return !this.isDead;
    }

    /**
     * Called to update the entity's position/logic.
     */
    public void onUpdate()
    {
        this.prevPosX = this.posX;
        this.prevPosY = this.posY;
        this.prevPosZ = this.posZ;
        this.motionY -= 0.03999999910593033D;
        this.moveEntity(this.motionX, this.motionY, this.motionZ);
        this.motionX *= 0.9800000190734863D;
        this.motionY *= 0.9800000190734863D;
        this.motionZ *= 0.9800000190734863D;

        if (this.onGround)
        {
            this.motionX *= 0.699999988079071D;
            this.motionZ *= 0.699999988079071D;
            this.motionY *= -0.5D;
        }

        if (this.fuse-- <= 0)
        {
            this.setDead();

            if (!this.worldObj.isRemote)
            {
                this.explode();
            }
        }
        else
        {
            this.worldObj.spawnParticle("smoke", this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D);
        }
    }

    private void explode()
    {
        float f = 100;
        this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, f, true);
    }

    /**
     * (abstract) Protected helper method to write subclass entity data to NBT.
     */
    protected void writeEntityToNBT(NBTTagCompound p_70014_1_)
    {
        p_70014_1_.setByte("Fuse", (byte)this.fuse);
    }

    /**
     * (abstract) Protected helper method to read subclass entity data from NBT.
     */
    protected void readEntityFromNBT(NBTTagCompound p_70037_1_)
    {
        this.fuse = p_70037_1_.getByte("Fuse");
    }

    @SideOnly(Side.CLIENT)
    public float getShadowSize()
    {
        return 0.0F;
    }

    /**
     * returns null or the entityliving it was placed or ignited by
     */
    public EntityLivingBase getTntPlacedBy()
    {
        return this.tntPlacedBy;
    }
} 


 

 

 

 

MainRegistry:

package com.hurleyboarder.Main;

import java.awt.Color;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;

import com.hurleyboarder.lib.RefStrings;
import com.hurleyboarder.tools.EAxe;
import com.hurleyboarder.tools.EHoe;
import com.hurleyboarder.tools.EPick;
import com.hurleyboarder.tools.ESpade;
import com.hurleyboarder.tools.ESword;

import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@Mod(modid = RefStrings.MODID, name =RefStrings.NAME , version =RefStrings.VERSION )
public class MainRegistry {


public final static Block Nuke = new Nuke(6000, Material.tnt);

public final static Item ItemBow = new ItemBow();

public final static Item EArrow = new ItemEArrow(5006);

public final static Item iGernade = new ItemGernade(5006);

//Tools Material
public static ToolMaterial Emeraldt = EnumHelper.addToolMaterial("Emerald Tool Material", 3, 2000, 15.0f, 4.0f, 25);





@EventHandler
public static void PreLoad (FMLPreInitializationEvent Event){


}



@EventHandler
public static void Load (FMLInitializationEvent Event)
{


	//Tools
	final Item EPick = new EPick(5000, Emeraldt);
	final Item EAxe = new EAxe(5001, Emeraldt);
	final Item ESword = new ESword(5002, Emeraldt);
	final Item ESpade = new ESpade(5003, Emeraldt);
	final Item EHoe = new EHoe(5004, Emeraldt);

	//Registry
	GameRegistry.registerItem(EPick, "Emerald Pickaxe");
	GameRegistry.registerItem(EAxe, "Emerald Axe");
	GameRegistry.registerItem(ESword, "Emerald Sword");
	GameRegistry.registerItem(ESpade, "Emerald Shovel");
	GameRegistry.registerItem(EHoe, "Emerald Hoe");

	GameRegistry.registerBlock(Nuke, "Nuke");

	GameRegistry.registerItem(ItemBow, "ItemBow");
	GameRegistry.registerItem(EArrow, "Explosive Arrow");

	GameRegistry.registerItem(iGernade, "Gernade");



	//Language Registry
	LanguageRegistry.addName(EPick, "Emerald Pickaxe");
	LanguageRegistry.addName(EAxe, "Emerald Axe");
	LanguageRegistry.addName(ESword, "Emerald Sword");
	LanguageRegistry.addName(ESpade, "Emerald Shovel");
	LanguageRegistry.addName(EHoe, "Emerald Hoe");

	LanguageRegistry.addName(Nuke, "Nuke");

	LanguageRegistry.addName(ItemBow, "§6Explosive Bow");

	LanguageRegistry.addName(EArrow, "§5Explosive Arrow");

	LanguageRegistry.addName(iGernade, "§4Gernade");


	GameRegistry.addShapedRecipe(new ItemStack(EPick), "XXX", " Y ", " Y ", 'X', Items.emerald, 'Y', Items.stick);
	GameRegistry.addShapedRecipe(new ItemStack(EAxe), "XX ", "XY ", " Y ", 'X', Items.emerald, 'Y', Items.stick);
	GameRegistry.addShapedRecipe(new ItemStack(ESword), " X ", " X ", " Y ", 'X', Items.emerald, 'Y', Items.stick);
	GameRegistry.addShapedRecipe(new ItemStack(ESpade), " X ", " Y ", " Y ", 'X', Items.emerald, 'Y', Items.stick);
	GameRegistry.addShapedRecipe(new ItemStack(EHoe), "XX ", " Y ", " Y ", 'X', Items.emerald, 'Y', Items.stick);

	GameRegistry.addShapedRecipe(new ItemStack(ItemBow), "IXY", "XDY", "IXY", 'X', Items.stick, 'Y', Items.string, 'I', Items.iron_ingot, 'D', Items.diamond);
	GameRegistry.addShapedRecipe(new ItemStack(EArrow), "GXG", "GYG", "GFG", 'X', Items.flint, 'Y', Items.stick, 'G', Items.gunpowder,  'F', Items.feather);
}
@EventHandler
public static void init (FMLInitializationEvent event)
{




}






}

 

Nuke:

package com.hurleyboarder.Main;

import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Items;
import net.minecraft.util.IIcon;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class Nuke extends Block {

protected Nuke(int i, Material tnt) {
	super(tnt);

}


    @SideOnly(Side.CLIENT)
    private IIcon field_150116_a;
    @SideOnly(Side.CLIENT)
    private IIcon field_150115_b;
    private static final String __OBFID = "CL_00000324";

    
   
    /**
     * Gets the block's texture. Args: side, meta
     */
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(int p_149691_1_, int p_149691_2_)
    {
        return p_149691_1_ == 0 ? this.field_150115_b : (p_149691_1_ == 1 ? this.field_150116_a : this.blockIcon);
    }

    /**
     * Called whenever the block is added into the world. Args: world, x, y, z
     */
    public void onBlockAdded(World p_149726_1_, int p_149726_2_, int p_149726_3_, int p_149726_4_)
    {
        super.onBlockAdded(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_);

        if (p_149726_1_.isBlockIndirectlyGettingPowered(p_149726_2_, p_149726_3_, p_149726_4_))
        {
            this.onBlockDestroyedByPlayer(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_, 1);
            p_149726_1_.setBlockToAir(p_149726_2_, p_149726_3_, p_149726_4_);
        }
    }

    /**
     * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are
     * their own) Args: x, y, z, neighbor Block
     */
    public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_)
    {
        if (p_149695_1_.isBlockIndirectlyGettingPowered(p_149695_2_, p_149695_3_, p_149695_4_))
        {
            this.onBlockDestroyedByPlayer(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, 1);
            p_149695_1_.setBlockToAir(p_149695_2_, p_149695_3_, p_149695_4_);
        }
    }

    /**
     * Returns the quantity of items to drop on block destruction.
     */
    public int quantityDropped(Random p_149745_1_)
    {
        return 1;
    }

    /**
     * Called upon the block being destroyed by an explosion
     */
    public void onBlockDestroyedByExplosion(World p_149723_1_, int p_149723_2_, int p_149723_3_, int p_149723_4_, Explosion p_149723_5_)
    {
        if (!p_149723_1_.isRemote)
        {
            EntityeTNTPrime entitytntprimed = new EntityeTNTPrime(p_149723_1_, (double)((float)p_149723_2_ + 0.5F), (double)((float)p_149723_3_ + 0.5F), (double)((float)p_149723_4_ + 0.5F), p_149723_5_.getExplosivePlacedBy());
            entitytntprimed.fuse = p_149723_1_.rand.nextInt(entitytntprimed.fuse / 4) + entitytntprimed.fuse / 8;
            p_149723_1_.spawnEntityInWorld(entitytntprimed);
           	        }
    }

    /**
     * Called right before the block is destroyed by a player.  Args: world, x, y, z, metaData
     */
    public void onBlockDestroyedByPlayer(World p_149664_1_, int p_149664_2_, int p_149664_3_, int p_149664_4_, int p_149664_5_)
    {
        this.func_150114_a(p_149664_1_, p_149664_2_, p_149664_3_, p_149664_4_, p_149664_5_, (EntityLivingBase)null);
    }

    public void func_150114_a(World p_150114_1_, int p_150114_2_, int p_150114_3_, int p_150114_4_, int p_150114_5_, EntityLivingBase p_150114_6_)
    {
        if (!p_150114_1_.isRemote)
        {
            if ((p_150114_5_ & 1) == 1)
            {
                EntityeTNTPrime entitytntprimed = new EntityeTNTPrime(p_150114_1_, (double)((float)p_150114_2_ - 20.5F), (double)((float)p_150114_3_ + 0.5F), (double)((float)p_150114_4_ + 0.5F), p_150114_6_);
                EntityeTNTPrime entitytntprimed1 = new EntityeTNTPrime(p_150114_1_, (double)((float)p_150114_2_ + 20.0F), (double)((float)p_150114_3_ + 0.5F), (double)((float)p_150114_4_ + 0.5F), p_150114_6_);
                EntityeTNTPrime entitytntprimed2 = new EntityeTNTPrime(p_150114_1_, (double)((float)p_150114_2_ + 0.5F), (double)((float)p_150114_3_ + 0.5F), (double)((float)p_150114_4_ + 20.5F), p_150114_6_);
                EntityeTNTPrime entitytntprimed3 = new EntityeTNTPrime(p_150114_1_, (double)((float)p_150114_2_ + 0.5F), (double)((float)p_150114_3_ + 0.5F), (double)((float)p_150114_4_ - 20.5F), p_150114_6_);
                p_150114_1_.spawnEntityInWorld(entitytntprimed);
                p_150114_1_.spawnEntityInWorld(entitytntprimed1);
                p_150114_1_.spawnEntityInWorld(entitytntprimed2);
                p_150114_1_.spawnEntityInWorld(entitytntprimed3);
             
                
                p_150114_1_.playSoundAtEntity(entitytntprimed, "game.tnt.primed", 1.0F, 1.0F);
            }
        }
    }

    /**
     * Called upon block activation (right click on the block.)
     */
    public boolean onBlockActivated(World p_149727_1_, int p_149727_2_, int p_149727_3_, int p_149727_4_, EntityPlayer p_149727_5_, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_)
    {
        if (p_149727_5_.getCurrentEquippedItem() != null && p_149727_5_.getCurrentEquippedItem().getItem() == Items.flint_and_steel)
        {
            this.func_150114_a(p_149727_1_, p_149727_2_, p_149727_3_, p_149727_4_, 1, p_149727_5_);
            p_149727_1_.setBlockToAir(p_149727_2_, p_149727_3_, p_149727_4_);
            p_149727_5_.getCurrentEquippedItem().damageItem(1, p_149727_5_);
            return true;
        }
        else
        {
            return super.onBlockActivated(p_149727_1_, p_149727_2_, p_149727_3_, p_149727_4_, p_149727_5_, p_149727_6_, p_149727_7_, p_149727_8_, p_149727_9_);
        }
    }

    /**
     * Triggered whenever an entity collides with this block (enters into the block). Args: world, x, y, z, entity
     */
    public void onEntityCollidedWithBlock(World p_149670_1_, int p_149670_2_, int p_149670_3_, int p_149670_4_, Entity p_149670_5_)
    {
        if (p_149670_5_ instanceof EntityArrow && !p_149670_1_.isRemote)
        {
            EntityArrow entityarrow = (EntityArrow)p_149670_5_;

            if (entityarrow.isBurning())
            {
                this.func_150114_a(p_149670_1_, p_149670_2_, p_149670_3_, p_149670_4_, 1, entityarrow.shootingEntity instanceof EntityLivingBase ? (EntityLivingBase)entityarrow.shootingEntity : null);
                p_149670_1_.setBlockToAir(p_149670_2_, p_149670_3_, p_149670_4_);
            }
        }
    }

    /**
     * Return whether this block can drop from an explosion.
     */
    public boolean canDropFromExplosion(Explosion p_149659_1_)
    {
        return false;
    }

    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister p_149651_1_)
    {
        this.blockIcon = p_149651_1_.registerIcon(this.getTextureName() + "_side");
        this.field_150116_a = p_149651_1_.registerIcon(this.getTextureName() + "_top");
        this.field_150115_b = p_149651_1_.registerIcon(this.getTextureName() + "_bottom");
        this.setCreativeTab(CreativeTabs.tabBlock);
    }
}


Posted

Here's a look at my RenderPenguin class:

 

package ArctiCraftMob;

import org.lwjgl.opengl.GL11;

import com.LazerBeanz.LazerCraft.ArctiCraft.ArctiCraft;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import ArctiCraftMob.EntityPenguin;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;

@SideOnly(Side.CLIENT)
public class RenderPenguin extends RenderLiving
{
private static final ResourceLocation penguinTexture = new ResourceLocation("arcticraft" + ":" + "textures/entity/arcticpenguin.png");
    private static final String __OBFID = "CL_00000983";

    public RenderPenguin(ModelBase modelbase, float f)
    {
        super(modelbase, f);
    }
    

    protected void preRenderCallback(EntityLivingBase entitylivingbase, float f) {
  	  GL11.glRotatef(270, 0, 1, 0);
    }

    
    public void doRender(EntityPenguin entitypenguin, double d1, double d2, double d3, float f1, float f2)
    {
        super.doRender((EntityLiving)entitypenguin, d1, d2, d3, f1, f2);
    }

    
    protected ResourceLocation getEntityTexture(EntityPenguin entitypenguin)
    {
        return penguinTexture;
    }

   
    protected float handleRotationFloat(EntityPenguin entitypenguin, float f)
    {
        float f1 = entitypenguin.field_70888_h + (entitypenguin.field_70886_e - entitypenguin.field_70888_h) * f;
        float f2 = entitypenguin.field_70884_g + (entitypenguin.destPos - entitypenguin.field_70884_g) * f;
        return (MathHelper.sin(f1) + 1.0F) * f2;
    }

   
    public void doRender(EntityLiving entityliving, double d1, double d2, double d3, float f1, float f2)
    {
        this.doRender((EntityPenguin)entityliving, d1, d2, d3, f1, f2);
    }

   
    protected float handleRotationFloat(EntityLivingBase entitylivingbase, float f)
    {
        return this.handleRotationFloat((EntityPenguin)entitylivingbase, f);
    }

  
    public void doRender(EntityLivingBase entitylivingbase, double d1, double d2, double d3, float d4, float f)
    {
        this.doRender((EntityPenguin)entitylivingbase, d1, d2, d3, d4, f);
    }

   
    protected ResourceLocation getEntityTexture(Entity entity)
    {
        return this.getEntityTexture((EntityPenguin)entity);
    }

   
    public void doRender(Entity entity, double d1, double d2, double d3, float f1, float f2)
    {
        this.doRender((EntityPenguin)entity, d1, d2, d3, f1, f2);
    }
}

 

What you need to look at are the ResourceLocation parts. That should help you out!

Developer of small, unreleased, basic, and incomplete mods since 2014!

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



×
×
  • Create New...

Important Information

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