Posted June 23, 201510 yr Im trying to make a autosmelt pickaxe and when ever i mine a bloc it crashes please help Pickaxe: package wearethewarriorsmod.tools; import java.util.ArrayList; import net.minecraft.block.Block; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemPickaxe; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.world.World; public class dragonpickaxe extends ItemPickaxe { public dragonpickaxe(ToolMaterial material) { super(material); } @Override public boolean onBlockDestroyed(ItemStack itemStack, World world, Block block, int x, int y, int z, EntityLivingBase player) { ItemStack stack = FurnaceRecipes.smelting() .getSmeltingResult(new ItemStack(block)).copy(); if(world.isRemote){ return false; } if (stack != null) { System.out.println(stack); world.setBlockToAir(x, y, z); player.entityDropItem(stack, 1); } return true; } } Crash Report: ---- Minecraft Crash Report ---- // Hey, that tickles! Hehehe! Time: 23/06/15 2:58 PM Description: Unexpected error java.lang.NullPointerException: Unexpected error at wearethewarriorsmod.tools.dragonpickaxe.onBlockDestroyed(dragonpickaxe.java:29) at net.minecraft.item.ItemStack.func_150999_a(ItemStack.java:381) at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerDestroyBlock(PlayerControllerMP.java:169) at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerDamageBlock(PlayerControllerMP.java:288) at net.minecraft.client.Minecraft.func_147115_a(Minecraft.java:1428) at net.minecraft.client.Minecraft.runTick(Minecraft.java:2047) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) at net.minecraft.client.Minecraft.run(Minecraft.java:951) at net.minecraft.client.main.Main.main(Main.java:164) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) at GradleStart.main(Unknown Source) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at wearethewarriorsmod.tools.dragonpickaxe.onBlockDestroyed(dragonpickaxe.java:29) at net.minecraft.item.ItemStack.func_150999_a(ItemStack.java:381) at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerDestroyBlock(PlayerControllerMP.java:169) at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerDamageBlock(PlayerControllerMP.java:288) at net.minecraft.client.Minecraft.func_147115_a(Minecraft.java:1428) -- Affected level -- Details: Level name: MpServer All players: 1 total; [EntityClientPlayerMP['Player869'/291, l='MpServer', x=-129.55, y=80.62, z=130.25]] Chunk stats: MultiplayerChunkCache: 280, 280 Level seed: 0 Level generator: ID 00 - default, ver 1. Features enabled: false Level generator options: Level spawn location: World: (-124,64,240), Chunk: (at 4,4,0 in -8,15; contains blocks -128,0,240 to -113,255,255), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Level time: 26273 game time, 33360 day time Level dimension: 0 Level storage version: 0x00000 - Unknown? Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false Forced entities: 104 total; [EntitySpider['Spider'/63, l='MpServer', x=-209.63, y=19.00, z=74.16], EntityClientPlayerMP['Player869'/291, l='MpServer', x=-129.55, y=80.62, z=130.25], EntityCreeper['Creeper'/73, l='MpServer', x=-209.54, y=40.00, z=97.69], EntityCreeper['Creeper'/78, l='MpServer', x=-209.63, y=15.00, z=138.31], EntityZombie['Zombie'/79, l='MpServer', x=-208.40, y=15.00, z=138.48], EntitySkeleton['Skeleton'/93, l='MpServer', x=-204.09, y=38.00, z=69.47], EntitySquid['Squid'/95, l='MpServer', x=-195.22, y=48.37, z=76.47], EntityCreeper['Creeper'/97, l='MpServer', x=-207.41, y=40.00, z=98.00], EntityBat['Bat'/98, l='MpServer', x=-200.75, y=39.10, z=119.75], EntityCreeper['Creeper'/99, l='MpServer', x=-205.93, y=14.00, z=137.33], EntityEnderman['Enderman'/100, l='MpServer', x=-193.66, y=37.00, z=134.53], EntitySkeleton['Skeleton'/101, l='MpServer', x=-202.53, y=34.00, z=151.89], EntityZombie['Zombie'/102, l='MpServer', x=-203.22, y=13.00, z=173.31], EntityPig['Pig'/103, l='MpServer', x=-204.06, y=66.00, z=180.97], EntitySkeleton['Skeleton'/109, l='MpServer', x=-185.66, y=28.00, z=61.50], EntitySpider['Spider'/110, l='MpServer', x=-187.59, y=20.00, z=53.38], EntityBat['Bat'/111, l='MpServer', x=-184.25, y=19.02, z=61.69], EntityBat['Bat'/116, l='MpServer', x=-191.69, y=28.20, z=65.56], EntitySquid['Squid'/117, l='MpServer', x=-184.37, y=48.38, z=73.83], EntitySquid['Squid'/119, l='MpServer', x=-176.26, y=53.38, z=68.54], EntitySquid['Squid'/122, l='MpServer', x=-183.09, y=50.42, z=65.87], EntityCreeper['Creeper'/123, l='MpServer', x=-179.41, y=23.00, z=161.00], EntityPig['Pig'/124, l='MpServer', x=-183.41, y=70.00, z=188.03], EntityPig['Pig'/125, l='MpServer', x=-188.38, y=65.00, z=202.13], EntitySkeleton['Skeleton'/129, l='MpServer', x=-161.50, y=24.00, z=54.50], EntityZombie['Zombie'/131, l='MpServer', x=-164.88, y=23.00, z=70.41], EntityZombie['Zombie'/132, l='MpServer', x=-167.47, y=22.00, z=65.84], EntitySkeleton['Skeleton'/133, l='MpServer', x=-172.13, y=26.00, z=64.53], EntitySquid['Squid'/134, l='MpServer', x=-166.75, y=50.00, z=80.88], EntitySquid['Squid'/135, l='MpServer', x=-164.55, y=47.38, z=95.02], EntitySquid['Squid'/136, l='MpServer', x=-173.64, y=49.19, z=88.18], EntitySquid['Squid'/137, l='MpServer', x=-168.83, y=50.00, z=79.14], EntitySquid['Squid'/138, l='MpServer', x=-163.13, y=49.34, z=90.67], EntitySquid['Squid'/139, l='MpServer', x=-175.23, y=49.00, z=85.50], EntitySquid['Squid'/140, l='MpServer', x=-171.72, y=50.13, z=82.27], EntitySquid['Squid'/141, l='MpServer', x=-165.53, y=47.37, z=100.60], EntitySquid['Squid'/142, l='MpServer', x=-162.37, y=48.00, z=105.53], EntityCreeper['Creeper'/143, l='MpServer', x=-170.00, y=30.00, z=132.63], EntityWitch['Witch'/144, l='MpServer', x=-172.63, y=23.00, z=156.13], EntityCreeper['Creeper'/145, l='MpServer', x=-166.41, y=23.00, z=155.00], EntityPig['Pig'/146, l='MpServer', x=-169.47, y=69.00, z=190.47], EntityCreeper['Creeper'/148, l='MpServer', x=-172.50, y=24.00, z=198.50], EntityPig['Pig'/149, l='MpServer', x=-169.50, y=66.00, z=198.28], EntityBat['Bat'/152, l='MpServer', x=-158.44, y=23.10, z=64.25], EntitySquid['Squid'/153, l='MpServer', x=-149.48, y=49.38, z=77.92], EntitySkeleton['Skeleton'/154, l='MpServer', x=-156.13, y=28.00, z=92.50], EntityCreeper['Creeper'/155, l='MpServer', x=-149.50, y=28.00, z=99.50], EntitySkeleton['Skeleton'/156, l='MpServer', x=-156.66, y=28.00, z=99.53], EntitySkeleton['Skeleton'/157, l='MpServer', x=-157.53, y=29.00, z=100.10], EntityBat['Bat'/158, l='MpServer', x=-142.97, y=26.92, z=102.28], EntitySquid['Squid'/159, l='MpServer', x=-160.54, y=47.00, z=104.50], EntitySquid['Squid'/160, l='MpServer', x=-158.14, y=50.37, z=100.32], EntitySkeleton['Skeleton'/161, l='MpServer', x=-155.66, y=23.00, z=152.34], EntityCreeper['Creeper'/162, l='MpServer', x=-160.03, y=23.00, z=152.97], EntityCreeper['Creeper'/163, l='MpServer', x=-147.56, y=23.00, z=150.72], EntityBat['Bat'/164, l='MpServer', x=-155.84, y=44.02, z=175.06], EntityBat['Bat'/165, l='MpServer', x=-156.44, y=46.89, z=170.22], EntityZombie['Zombie'/166, l='MpServer', x=-152.50, y=57.00, z=169.50], EntityCreeper['Creeper'/167, l='MpServer', x=-144.72, y=45.00, z=179.47], EntityBat['Bat'/168, l='MpServer', x=-154.03, y=45.32, z=181.25], EntityBat['Bat'/169, l='MpServer', x=-147.31, y=47.42, z=181.03], EntityBat['Bat'/170, l='MpServer', x=-148.28, y=56.00, z=185.91], EntitySquid['Squid'/174, l='MpServer', x=-134.88, y=48.19, z=72.65], EntityItem['item.item.Itemdragonpickaxe'/175, l='MpServer', x=-128.78, y=65.13, z=121.81], EntityItem['item.item.Itemdragonpickaxe'/176, l='MpServer', x=-128.59, y=66.13, z=122.56], EntityItem['item.item.Itemdragonpickaxe'/177, l='MpServer', x=-128.19, y=66.13, z=121.94], EntityItem['item.item.Itemdragonpickaxe'/178, l='MpServer', x=-128.66, y=66.13, z=122.31], EntityItem['item.item.Itemdragonpickaxe'/179, l='MpServer', x=-128.63, y=65.13, z=121.88], EntityItem['item.item.Itemdragonpickaxe'/180, l='MpServer', x=-128.84, y=66.13, z=122.09], EntityItem['item.tile.stonebrick'/181, l='MpServer', x=-143.88, y=78.13, z=141.88], EntityItem['item.tile.gravel'/182, l='MpServer', x=-142.13, y=80.13, z=141.88], EntityCreeper['Creeper'/183, l='MpServer', x=-132.28, y=45.00, z=181.66], EntityBat['Bat'/184, l='MpServer', x=-149.75, y=46.17, z=181.78], EntitySquid['Squid'/194, l='MpServer', x=-125.95, y=53.44, z=80.09], EntityCow['Cow'/195, l='MpServer', x=-114.66, y=68.57, z=105.79], EntityCow['Cow'/196, l='MpServer', x=-123.53, y=84.00, z=137.53], EntityCow['Cow'/197, l='MpServer', x=-117.56, y=85.00, z=136.25], EntityCow['Cow'/198, l='MpServer', x=-121.41, y=81.00, z=133.25], EntityZombie['Zombie'/199, l='MpServer', x=-121.66, y=66.00, z=157.41], EntityZombie['Zombie'/200, l='MpServer', x=-119.56, y=66.00, z=155.41], EntitySkeleton['Skeleton'/202, l='MpServer', x=-125.59, y=66.00, z=174.16], EntityCow['Cow'/203, l='MpServer', x=-127.50, y=80.00, z=166.38], EntityBat['Bat'/204, l='MpServer', x=-123.75, y=51.10, z=182.25], EntityCreeper['Creeper'/210, l='MpServer', x=-101.50, y=27.00, z=58.50], EntitySquid['Squid'/212, l='MpServer', x=-105.52, y=50.62, z=79.67], EntitySquid['Squid'/214, l='MpServer', x=-102.26, y=54.34, z=78.12], EntitySquid['Squid'/215, l='MpServer', x=-93.38, y=54.36, z=72.02], EntitySquid['Squid'/216, l='MpServer', x=-110.47, y=54.34, z=71.34], EntitySquid['Squid'/217, l='MpServer', x=-96.47, y=54.71, z=82.57], EntityCow['Cow'/219, l='MpServer', x=-100.97, y=80.00, z=138.09], EntitySquid['Squid'/221, l='MpServer', x=-87.50, y=53.00, z=74.99], EntityCow['Cow'/222, l='MpServer', x=-80.63, y=63.00, z=77.25], EntityCow['Cow'/223, l='MpServer', x=-90.84, y=75.00, z=106.03], EntityBat['Bat'/227, l='MpServer', x=-84.31, y=61.10, z=156.72], EntityCow['Cow'/231, l='MpServer', x=-64.78, y=67.00, z=62.62], EntityCow['Cow'/232, l='MpServer', x=-74.69, y=64.00, z=72.44], EntityCow['Cow'/233, l='MpServer', x=-78.66, y=73.00, z=85.72], EntityCow['Cow'/234, l='MpServer', x=-74.84, y=78.00, z=102.19], EntityCow['Cow'/236, l='MpServer', x=-77.31, y=81.00, z=159.25], EntityCow['Cow'/237, l='MpServer', x=-77.34, y=82.00, z=164.03], EntityCow['Cow'/238, l='MpServer', x=-62.38, y=71.00, z=69.59], EntityCow['Cow'/239, l='MpServer', x=-62.94, y=76.00, z=135.97], EntityCow['Cow'/240, l='MpServer', x=-60.88, y=77.00, z=151.97], EntityCow['Cow'/241, l='MpServer', x=-55.94, y=77.00, z=174.88]] Retry entities: 0 total; [] Server brand: fml,forge Server type: Integrated singleplayer server Stacktrace: at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:415) at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2555) at net.minecraft.client.Minecraft.run(Minecraft.java:980) at net.minecraft.client.main.Main.main(Main.java:164) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) at GradleStart.main(Unknown Source) -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Windows 7 (x86) version 6.1 Java Version: 1.8.0_25, Oracle Corporation Java VM Version: Java HotSpot Client VM (mixed mode), Oracle Corporation Memory: 800076952 bytes (763 MB) / 1046937600 bytes (998 MB) up to 1046937600 bytes (998 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94 FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 4 mods loaded, 4 mods active mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available watwm{1.1.0} [We Are The Warriors] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available Launched Version: 1.7.10 LWJGL: 2.9.1 OpenGL: ATI Radeon 3000 Graphics GL version 3.3.10750 Compatibility Profile Context, ATI Technologies Inc. GL Caps: Using GL 1.3 multitexturing. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Anisotropic filtering is supported and maximum anisotropy is 16. Shaders are available because OpenGL 2.1 is supported. Is Modded: Definitely; Client brand changed to 'fml,forge' Type: Client (map_client.txt) Resource Packs: [] Current Language: English (US) Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Anisotropic Filtering: Off (1) and Im not the best at modding so dont judge please The Creator of the We Are The Warriors Mod https://scontent-sjc.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10985858_1068047526542843_8233581795453767454_n.png?oh=aad9679e5ae8470bbd9a58236c0e391b&oe=55AAFDC7[/img]
June 23, 201510 yr ItemStack stack = FurnaceRecipes.smelting() .getSmeltingResult(new ItemStack(block)).copy(); Maybe because not all blocks can be smelted? Try to check for the block first.
June 23, 201510 yr Author how would i do this The Creator of the We Are The Warriors Mod https://scontent-sjc.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10985858_1068047526542843_8233581795453767454_n.png?oh=aad9679e5ae8470bbd9a58236c0e391b&oe=55AAFDC7[/img]
June 23, 201510 yr No, it's because the smelting result might return null, but you immediately call copy() on it: FurnaceRecipes.smelting() .getSmeltingResult(new ItemStack(block)) // this returned null .copy() // so this crashes Simply move the call to copy() to inside your 'if (stack != null) ' clause and you're good to go. http://i.imgur.com/NdrFdld.png[/img]
June 23, 201510 yr I have done this in my mod and I believe my fix was just if (stack == null) return;
June 23, 201510 yr Author so I tried to add it into my if statement and the only place I could add it in was here 'if (stack.copy() != null)' but it still crashed The Creator of the We Are The Warriors Mod https://scontent-sjc.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10985858_1068047526542843_8233581795453767454_n.png?oh=aad9679e5ae8470bbd9a58236c0e391b&oe=55AAFDC7[/img]
June 23, 201510 yr why don't you try using BlockEvent.HarvestDropsEvent and check if the player is using your tool then get the smelting result and drop that instead of the normal block
June 23, 201510 yr so I tried to add it into my if statement and the only place I could add it in was here 'if (stack.copy() != null)' but it still crashed This is what I meant: if (stack != null) { player.entityDropItem(stack.copy()); } why don't you try using BlockEvent.HarvestDropsEvent and check if the player is using your tool then get the smelting result and drop that instead of the normal block He could, but why do so when he already has a custom Item class ? Subscribing to Forge events should always be considered somewhat of a 'last resort', as the event handler is called for EVERY harvest, whether or not the player is wielding the pickaxe, whereas the code in the pickaxe is only called when it is actually used to break the block. On the other hand, the harvest event lets you prevent the normal drop, whereas I don't think Item#onBlockDestroyed does. Hmm. http://i.imgur.com/NdrFdld.png[/img]
June 23, 201510 yr Author ok ill try thanks in advance The Creator of the We Are The Warriors Mod https://scontent-sjc.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10985858_1068047526542843_8233581795453767454_n.png?oh=aad9679e5ae8470bbd9a58236c0e391b&oe=55AAFDC7[/img]
June 23, 201510 yr If Item#onBlockDestroyed doesn't allow preventing then using BlockEvent.HarvestDropsEvent would be best to use
June 23, 201510 yr Author so is it possible to make stone drop stone instead of cobble The Creator of the We Are The Warriors Mod https://scontent-sjc.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10985858_1068047526542843_8233581795453767454_n.png?oh=aad9679e5ae8470bbd9a58236c0e391b&oe=55AAFDC7[/img]
June 23, 201510 yr If Item#onBlockDestroyed doesn't allow preventing then using BlockEvent.HarvestDropsEvent would be best to use You could probably override Item#canHarvestBlock(Block) to return false if the block has a smelting result - thus preventing any normal harvesting, and then dropping the smelting result from #onBlockDestroyed. @OP Of course you can drop stone instead of cobblestone - the problem you are running into, however, is that the block being destroyed is stone, which does not have a smelting result. You should instead be checking the actual item dropped from the block, not the block itself. You could do this with Block#getItemDropped and Block#getDamageValue, but that may or may not produce the actual desired result, and you wouldn't be able to check for it in #canHarvestBlock due to the lack of a World and BlockPos. Jedispencer's suggestion of using the HarvestDropsEvent may be your only recourse in this matter, which is fine - that's what it's there for - but it's always good to explore other options first. http://i.imgur.com/NdrFdld.png[/img]
June 23, 201510 yr Author ok, thank you, i may just keep it as it is The Creator of the We Are The Warriors Mod https://scontent-sjc.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/10985858_1068047526542843_8233581795453767454_n.png?oh=aad9679e5ae8470bbd9a58236c0e391b&oe=55AAFDC7[/img]
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.