Posted November 10, 201311 yr 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)
November 10, 201311 yr 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)
November 10, 201311 yr 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.
November 11, 201311 yr Author 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); } } } } }
November 11, 201311 yr 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.
November 11, 201311 yr 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.
November 11, 201311 yr Author okay the onCreated method works, just the getting of the integer in the NBT tag doesn't seem to work...
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.