Jump to content

Item Nbt NullPointerException


ThePocketSoul

Recommended Posts

I am trying to read the NBT data from an item i created and it keeps tossing a NullPointer Exception

 

making the NBT data :

public void onCreated(ItemStack itemStack, World world, EntityPlayer player) {
        itemStack.stackTagCompound = new NBTTagCompound();
        itemStack.stackTagCompound.setInteger("discombob", 1);
    } 

 

code :

int f1 = par1ItemStack.stackTagCompound.getInteger("discombob");
        	if(SonicKeyBind.Key == false){
            if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack))
            {
                return false;
            }
            else if (!(par3World.isAirBlock(par4, par5, par6)) )
                {
            	if (par2EntityPlayer.isSneaking() && par2EntityPlayer.inventory.hasItemStack(new ItemStack(mod_MainClass.Dust, 1, 14))){
            		removeItem(par2EntityPlayer, new ItemStack(mod_MainClass.Dust, 1, 14), 1);
            		par1ItemStack.stackTagCompound.setInteger("discombob", f1 + 100);
            	}
            	else if (!(par3World.getBlockId(par4, par5, par6) == Block.bedrock.blockID || par3World.getBlockId(par4, par5, par6) == 34 || par3World.getBlockId(par4, par5, par6) == 104 || par3World.getBlockId(par4, par5, par6) == 105 || par3World.getBlockId(par4, par5, par6) == 90 || par3World.getBlockId(par4, par5, par6) == 119 || par3World.getBlockId(par4, par5, par6) == 120 || par1ItemStack.stackTagCompound.getInteger("discombob") <= 0)){
                	int x1 = par3World.getBlockId(par4, par5, par6);
                	int x2 = par3World.getBlockMetadata(par4, par5, par6);
            		if(x1 == 62){
            			x1 = 61;
            		}
            		if(x1 == 75){
            			x1 = 76;
            		}
            		if(x1 == 94 || x1 == 93){
            			x1 = 356;
            		}
            		if(x1 == 150 || x1 == 149){
            			x1 = 404;
            		}
            		if(x1 == 60 || x1 == 2){
            			x1 = 3;
            		}
            		if(x1 == 55){
            			x1 = 331;
            		}
            		if(x1 == 26){
            			x1 = 355;
            		}
                	par3World.playSoundAtEntity(par2EntityPlayer, "dbm:sonicbob", 1.0F, 1.0F);
                    if(!(par2EntityPlayer.capabilities.isCreativeMode)){
                    par2EntityPlayer.inventory.addItemStackToInventory(new ItemStack(x1, 1, x2));
                    par1ItemStack.stackTagCompound.setInteger("discombob", f1 - 1);
                    }
                    par3World.setBlockToAir(par4, par5, par6); 

 

crash report :

2013-11-10 11:36:59 [iNFO] [sTDOUT] java.lang.NullPointerException
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at tps.dbm.items.MultiScrewdriver.onItemUse(MultiScrewdriver.java:162)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.item.ItemStack.tryPlaceItemIntoWorld(ItemStack.java:152)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:408)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1378)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.runTick(Minecraft.java:1854)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:898)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:826)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.client.main.Main.main(Main.java:93)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at java.lang.reflect.Method.invoke(Unknown Source)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:57)
2013-11-10 11:36:59 [iNFO] [sTDOUT] 	at net.minecraft.launchwrapper.Launch.main(Launch.java:18) 

Link to comment
Share on other sites

onCreated is only called when the item is crafted.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

what is line 162 of your MultiScrewdriver class?

 

infact, can you post that class? it's where the error is

 

ava.lang.NullPointerException

    at tps.dbm.items.MultiScrewdriver.onItemUse(MultiScrewdriver.java:162)

this is whats on line 162

int f1 = par1ItemStack.stackTagCompound.getInteger("discombob");

and here is the full class

package tps.dbm.items;

import java.util.List;
import java.util.Random;

import tps.dbm.ItemDBM;
import tps.dbm.Reference;
import tps.dbm.SonicKeyBind;
import tps.dbm.Strings;
import tps.dbm.mod_MainClass;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.EntityBlaze;
import net.minecraft.entity.monster.EntityCaveSpider;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.monster.EntitySlime;
import net.minecraft.entity.monster.EntitySpider;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.entity.passive.EntityChicken;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntitySheep;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class MultiScrewdriver extends ItemDBM {

    public static final String[] SONIC_NAMES = new String[] { "Sonic Screwdriver", "Sonic Mobalyzer", "Sonic Dead-ination", "Sonic Discombobulator", "Sonic Signalator" };
    
    @SideOnly(Side.CLIENT)
    private Icon[] icons;

    public int x3;
    public int x4;
    
    public MultiScrewdriver(int id) {

        super(id);
        this.setHasSubtypes(true);
        this.setCreativeTab(mod_MainClass.DBMItems);
        maxStackSize = 1;
        this.setNoRepair();
    }
    
    public void onCreated(ItemStack itemStack, World world, EntityPlayer player) {
        itemStack.stackTagCompound = new NBTTagCompound();
        itemStack.stackTagCompound.setInteger("discombob", 1);
    }
    
    public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
    {	
    	int meta = MathHelper.clamp_int(par1ItemStack.getItemDamage(), 0, 4);
    	int p = par1ItemStack.getItemDamage();
    	if(meta<=4){
    		if(SonicKeyBind.Key == true){
    			if(par2EntityPlayer.inventory.hasItemStack(new ItemStack(mod_MainClass.Dusts, 1, 2))){
    				par2EntityPlayer.inventory.consumeInventoryItem(itemID);
    				par2EntityPlayer.inventory.addItemStackToInventory(new ItemStack(this, 1, p+1));
    				par3World.playSoundAtEntity(par2EntityPlayer, "dbm:sonicmodeswitch", 1.0F, 1.0F);
    			}
    			else{
    				par2EntityPlayer.addChatMessage("Cannot Switch Mode Missing Pockika Dust");
    			}
		if(meta==4){
			if(SonicKeyBind.Key == true){
				if(par2EntityPlayer.inventory.hasItemStack(new ItemStack(mod_MainClass.Dusts, 1, 2))){
				par2EntityPlayer.inventory.consumeInventoryItem(itemID);
				par2EntityPlayer.inventory.addItemStackToInventory(new ItemStack(this, 1, 0));
				par3World.playSoundAtEntity(par2EntityPlayer, "dbm:sonicmodeswitch", 1.0F, 1.0F);
				}
				else{
					par2EntityPlayer.addChatMessage("Cannot Switch Mode Missing Pockika Dust");
				}
			}
		}
	}
        if(meta==0){
        	if(SonicKeyBind.Key == false){
	if (par7 == 0)
        {
            --par5;
        }

        if (par7 == 1)
        {
            ++par5;
        }

        if (par7 == 2)
        {
            --par6;
        }

        if (par7 == 3)
        {
            ++par6;
        }

        if (par7 == 4)
        {
            --par4;
        }

        if (par7 == 5)
        {
            ++par4;
        }
        if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack))
        {
            return false;
        }
        else if (par3World.isAirBlock(par4, par5, par6))
            {
            	par3World.playSoundAtEntity(par2EntityPlayer, "dbm:sonicscrewdriver", 1.0F, 1.0F);
                par3World.setBlock(par4, par5, par6, mod_MainClass.PhantomRedstone.blockID);
            }
        	}
        }
        if(meta==4){
        	if(SonicKeyBind.Key == false){
                boolean t1 = par3World.isDaytime();
                boolean t2 = par3World.isRaining();
                boolean t3 = par3World.isThundering();
                if(!(par3World.isRemote)){
                if(t1 == true){
                	par2EntityPlayer.addChatMessage("Daytime : Yes");
                }
                else if(t1 == false){
                	par2EntityPlayer.addChatMessage("Daytime : No");
                }
                if(t2 == true){
                	par2EntityPlayer.addChatMessage("Raining : Yes");
                }
                else if (t2 == false){
                	par2EntityPlayer.addChatMessage("Raining : No");
                }
                if(t3 == true){
                	par2EntityPlayer.addChatMessage("Thundering : Yes");
                }
                else if(t3 == false){
                	par2EntityPlayer.addChatMessage("Thundering : No");
                }
                }
        	}
        }
        if(meta==3){
        	int f1 = par1ItemStack.stackTagCompound.getInteger("discombob");
        	if(SonicKeyBind.Key == false){
            if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack))
            {
                return false;
            }
            else if (!(par3World.isAirBlock(par4, par5, par6)) )
                {
            	if (par2EntityPlayer.isSneaking() && par2EntityPlayer.inventory.hasItemStack(new ItemStack(mod_MainClass.Dust, 1, 14))){
            		removeItem(par2EntityPlayer, new ItemStack(mod_MainClass.Dust, 1, 14), 1);
            		par1ItemStack.stackTagCompound.setInteger("discombob", f1 + 100);
            	}
            	else if (!(par3World.getBlockId(par4, par5, par6) == Block.bedrock.blockID || par3World.getBlockId(par4, par5, par6) == 34 || par3World.getBlockId(par4, par5, par6) == 104 || par3World.getBlockId(par4, par5, par6) == 105 || par3World.getBlockId(par4, par5, par6) == 90 || par3World.getBlockId(par4, par5, par6) == 119 || par3World.getBlockId(par4, par5, par6) == 120 || par1ItemStack.stackTagCompound.getInteger("discombob") <= 0)){
                	int x1 = par3World.getBlockId(par4, par5, par6);
                	int x2 = par3World.getBlockMetadata(par4, par5, par6);
            		if(x1 == 62){
            			x1 = 61;
            		}
            		if(x1 == 75){
            			x1 = 76;
            		}
            		if(x1 == 94 || x1 == 93){
            			x1 = 356;
            		}
            		if(x1 == 150 || x1 == 149){
            			x1 = 404;
            		}
            		if(x1 == 60 || x1 == 2){
            			x1 = 3;
            		}
            		if(x1 == 55){
            			x1 = 331;
            		}
            		if(x1 == 26){
            			x1 = 355;
            		}
                	par3World.playSoundAtEntity(par2EntityPlayer, "dbm:sonicbob", 1.0F, 1.0F);
                    if(!(par2EntityPlayer.capabilities.isCreativeMode)){
                    par2EntityPlayer.inventory.addItemStackToInventory(new ItemStack(x1, 1, x2));
                    par1ItemStack.stackTagCompound.setInteger("discombob", f1 - 1);
                    }
                    par3World.setBlockToAir(par4, par5, par6);
            	 }
                }
        	}
        	
            }
	}
	return true;
    }
    
    public boolean func_111207_a(ItemStack itemstack, EntityPlayer player, EntityLivingBase target) {
    	int meta = MathHelper.clamp_int(itemstack.getItemDamage(), 0, 4);
    	if(meta==0){
    		
    	}
    	else if(meta==2){
    		if(!(target instanceof EntityChicken)){
    			target.motionY = 2;
    			target.setFire(600);
    		}
    		else if(target instanceof EntityChicken){
    			target.setEntityHealth(1);
    			target.setFire(5);
    		}
    	}
    	else if(meta==1){
    	if(target.worldObj.isRemote) {	
    	if(target instanceof EntityZombie) {
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    			player.addChatMessage("Name: Zombie, MaxHealth: 10 Hearts, AttackType: Physical, Strength: 1 to 4 1/2 Hearts (Difficulty Based)");
    	}
    	else if (target instanceof EntityCreeper){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Creeper, MaxHealth: 10 Hearts, AttackType: Explosion, Strength: (Normal: 24 Hearts, Charged: 48 1/2 Hearts (Difficulty Based))");
    	}
    	else if (target instanceof EntitySkeleton){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Skeleton, MaxHealth: 10 Hearts, AttackType: Ranged, Strength: 2 to 6 Hearts (Difficulty Based)");
    	}
    	else if (target instanceof EntityBlaze){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Blaze, MaxHealth: 10 Hearts(Size Based), AttackType: Physical/Ranged/Fire, Strength: (FireBall: 1 1/2 to 3 1/2 Hearts, Contact: 2 to 4 1/2 Hearts)");
    	}
    	else if(target instanceof EntityPlayer) {
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.motionY = 10;
    		player.addChatMessage("I Believe I Can Fly!");
    	}
    	else if (target instanceof EntitySpider){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Spider, MaxHealth: 8 Hearts, AttackType: Physical, Strength: 1 to 1 1/2 Hearts (Difficulty Based)");
    	}
    	else if (target instanceof EntityCaveSpider){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Cave Spider, MaxHealth: 6 Hearts, AttackType: Physical/Poison, Strength: 1 to 6 1/2 Hearts (Difficulty Based And If Poisoned)");
    	}
    	else if (target instanceof EntitySlime){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Slime, MaxHealth: 8 to 1/2 Hearts(Size Based), AttackType: Physical, Strength: 0 to 2 Hearts (Size Based)");
    	}
    	else if (target instanceof EntityPig){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Pig, MaxHealth: 5 Hearts, Drops: 1 to 3 Raw Porkchops(Cooked If On Fire When Dies)");
    	}
    	else if (target instanceof EntityCow){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Cow, MaxHealth: 5 Hearts, Drops: 1 to 3 Raw Steaks(Cooked If On Fire When Dies) And 0 to 3 Leather.");
    	}
    	else if (target instanceof EntityChicken){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Chicken, MaxHealth: 2 Hearts, Drops: 1 to 3 Raw Chicken(Cooked If On Fire When Dies) And 0 to 3 Feathers.");
    	}
    	else if (target instanceof EntitySheep){
    		player.playSound("dbm:sonicanalyze", 1.0F, 1.0F);
    		player.addChatMessage("Name: Sheep, MaxHealth: 4 Hearts, Drops: 1 Wool When Dies(1 to 3 Wool When Sheared)");
    	}
    		else if(!(target instanceof EntitySheep || target instanceof EntityPig  || target instanceof EntityPlayer || target instanceof EntityCow || target instanceof EntityZombie || target instanceof EntityChicken || target instanceof EntityCreeper || target instanceof EntitySlime || target instanceof EntityBlaze || target instanceof EntitySpider || target instanceof EntitySkeleton)){
    	player.addChatMessage("Can't find out whatever this is");
    	player.playSound("dbm:sonicfail", 1.0F, 1.0F);
    	}
    	}
    	}
    	return false;
    	}
    
    @Override
    public void addInformation(ItemStack itemStack, EntityPlayer player,
            List list, boolean par4) {
    	int meta = MathHelper.clamp_int(itemStack.getItemDamage(), 0, 4);
    	if(meta==3){
    if (itemStack.stackTagCompound != null) {
            int discombob = itemStack.stackTagCompound.getInteger("discombob");
            if (discombob <= 0) {
                    list.add(EnumChatFormatting.GREEN + "Fuel: " + discombob);
            } else {
                    list.add(EnumChatFormatting.RED + "Fuel: " + "Empty");
            }
    }
    }
    }
    
    @Override
    public String getUnlocalizedName(ItemStack itemStack) {

    	int meta = MathHelper.clamp_int(itemStack.getItemDamage(), 0, 4);
        return super.getUnlocalizedName() + Strings.SONIC_NAMES[meta];
    }

    @Override
    @SideOnly(Side.CLIENT)
    /**
     * Gets an icon index based on an item's damage value
     */
    public Icon getIconFromDamage(int meta) {

        int j = MathHelper.clamp_int(meta, 0, 4);
        return icons[j];
    }

    @Override
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister iconRegister) {

        icons = new Icon[sONIC_NAMES.length];

        for (int i = 0; i < SONIC_NAMES.length; ++i) {
            icons[i] = iconRegister.registerIcon(Reference.MOD.ID.toLowerCase() + ":" + Strings.SCREWDRIVER_NAME + Strings.SONIC_NAMES[i]);
        }
    }

    @Override
    @SideOnly(Side.CLIENT)
    public void getSubItems(int id, CreativeTabs creativeTab, List list) {

        for (int meta = 0; meta < 5; ++meta) {
            list.add(new ItemStack(id, 1, meta));
        }
   
    }
    
    public void removeItem(EntityPlayer ep, ItemStack removeitem, int remove) {
    	IInventory inv = ep.inventory;
    	for(int i=0; i < inv.getSizeInventory(); i++)
    	{
    		if(inv.getStackInSlot(i) != null)
    		{
    			ItemStack j = inv.getStackInSlot(i);
    			if(j.getItem() != null && j.getItem() == removeitem.getItem())
    			{
    				ep.inventory.decrStackSize(i, remove);
    			}
    		}
    	}
    }
}

Link to comment
Share on other sites

Uh huh.

 

But you didn't tell me how you're acquiring the item.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

i'm crafting them... otherwise the nbt data wouldn't be created

 

Just checking.

 

In any case, I've not directly used the onCreated method, so all I can offer is:

Use debug statements and break points to figure out if onCreated is getting called or not.  I based my reply on the Javadocs that said that's when the function is called.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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



×
×
  • Create New...

Important Information

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