Jump to content

How would I auto smelt items when broken by a specific pickaxe?


YamiAtem

Recommended Posts

6 hours ago, YamiAtem said:

It is the latter I am looking for like how to make the twilight forest fiery pickaxe with the Auto-Smelt enchantment which whenever you mine any ore it gives the smelted item. If if the ore is moded.

I'm thinking you could modify the vanilla loot tables to match for a tool that has your custom enchantment, and if they do, return the smelted item (maybe you can do so that for every block (or ore to optimize), you check if it is an ingredient to a smelting recipe, and modify that block's loot table to match?)

Link to comment
Share on other sites

17 minutes ago, kiou.23 said:

I'm thinking you could modify the vanilla loot tables to match for a tool that has your custom enchantment, and if they do, return the smelted item (maybe you can do so that for every block (or ore to optimize), you check if it is an ingredient to a smelting recipe, and modify that block's loot table to match?)

Can I please have an example of this.

 

And also your method works for only vanilla items I want to make it so that any item that is a ore that can be smelted can work with this pickaxe.

Link to comment
Share on other sites

4 hours ago, YamiAtem said:

And also your method works for only vanilla items I want to make it so that any item that is a ore that can be smelted can work with this pickaxe.

it should work with any smeltable ore, since you'd be checking for smelting recipes, and any modded smelting recipe is registered in the same place you'd be checking for.

it would actually work for any block that can be smelted, so breaking sand with the pick would return glass. if that's not the desired behaviour, you can check if the block has the ore tag

Edited by kiou.23
Link to comment
Share on other sites

On 2/14/2021 at 10:40 PM, kiou.23 said:

it should work with any smeltable ore, since you'd be checking for smelting recipes, and any modded smelting recipe is registered in the same place you'd be checking for.

it would actually work for any block that can be smelted, so breaking sand with the pick would return glass. if that's not the desired behaviour, you can check if the block has the ore tag

Ok I see what going for, but as I already told I am new at modding and there aren't many tutorials for 1.16 modding. So could I please have an example of what you are describing?

Link to comment
Share on other sites

9 hours ago, YamiAtem said:

Ok I see what going for, but as I already told I am new at modding and there aren't many tutorials for 1.16 modding. So could I please have an example of what you are describing?

check diesieben answer, he points to the GlobalLootModifier documentation, and tells you how to get the smelting recipe output for that item. additionally you may want to check if the block is an ore, for that you could use Tags.Blocks.ORES.contains()

 

Link to comment
Share on other sites

Yeah I literally wrote the code for autosmelt already.

Things've changed a bit, but it was one of the "someone is going to want this, so my system better support it" test mod examples.

https://github.com/MinecraftForge/MinecraftForge/blob/1.16.x/src/test/java/net/minecraftforge/debug/gameplay/loot/GlobalLootModifiersTest.java#L146-L178

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

  • 10 months later...
On 2/14/2021 at 4:11 PM, diesieben07 said:

Use a GlobalLootModifier. In there check if any of the dropped stacks is smeltable. To do this, you need an inventory (you can just use new Inventory(1)) and put the stack into it. Then call RecipeManager#getRecipe(IRecipeType.SMELTING, <inventory>, <world>). If that returns something, use IRecipe#getRecipeOutput to get the output (remember to copy it) and replace the dropped stack with it.

how to replace the dropped stack ?

Link to comment
Share on other sites

It's almost like I wrote all the code you need for you.

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.