Jump to content

How to change default crafting recipes and disable items in vanilla minecraft


_KS_

Recommended Posts

Hi. I need help with changing vanilla minecraft default recipes and disabling items from vanilla minecraft.

I want to change in my mod entire logic of vanilla game and make custom progress system based on players progress in my mod.
Disabling item is for unlocking them after player get progress points something like in sevtech ages.

No code for now just item registers but i cant find any option to change registry with vanilla items and recipes without changing game files it self

Link to comment
Share on other sites

1 hour ago, _KS_ said:

Hi. I need help with changing vanilla minecraft default recipes and disabling items from vanilla minecraft.

Replace the recipe JSONs by supplying ones with a similar name. If you want to make it such that recipes can't be crafted until a certain point, it is much simpler to create a new block that functions the same as a crafting workbench but checks the progress. You can then disable any vanilla items by making an uncraftable recipe. If you need to change how non-JSONable recipes work, there are events for those (`PotionBrewEvent$Pre`, `AnvilUpdateEvent`, etc.).

You should always avoid touching and reregistering registry objects or modifying vanilla methods as you would most likely break compatibility with any other mod. The best way is just to modify the JSONs when applicable.

  • Like 1
Link to comment
Share on other sites

1 hour ago, ChampionAsh5357 said:

Replace the recipe JSONs by supplying ones with a similar name. If you want to make it such that recipes can't be crafted until a certain point, it is much simpler to create a new block that functions the same as a crafting workbench but checks the progress. You can then disable any vanilla items by making an uncraftable recipe. If you need to change how non-JSONable recipes work, there are events for those (`PotionBrewEvent$Pre`, `AnvilUpdateEvent`, etc.).

You should always avoid touching and reregistering registry objects or modifying vanilla methods as you would most likely break compatibility with any other mod. The best way is just to modify the JSONs when applicable.

Yes i know about problems with touching registry objects but i dont want to modify any of game file in assets because after uninstaling my mod this can generate problems.
About crafting table and any of blocks like anvil, etc. i made my own versions in my mod just for this purpose

I'm 100% sure i can change registry objects because i making mod to be incompatible with any other mod that adding any machines or upgrades to vanilla crafting methods

Edited by _KS_
Link to comment
Share on other sites

1 hour ago, _KS_ said:

Yes i know about problems with touching registry objects but i dont want to modify any of game file in assets because after uninstaling my mod this can generate problems.

You wouldn't be modifying the game assets though? Additionally, if you want to make a mod that's backwards compatible with vanilla, I would suggest a datapack.

1 hour ago, _KS_ said:

I'm 100% sure i can change registry objects because i making mod to be incompatible with any other mod that adding any machines or upgrades to vanilla crafting methods

Sure, but I would not explain how to do it since nearly any instance of registry replacement will break the game because of all the static storages of vanilla registry objects which in most instances would cause the game to crash in some capacity. Hence, I suggested the solution above as an alternative. It would also allow you to have more compatibility with other mods if you provide an open API or create an addon that supports the mod even if you do not wish to support it.

  • Like 1
Link to comment
Share on other sites

52 minutes ago, ChampionAsh5357 said:

You wouldn't be modifying the game assets though? Additionally, if you want to make a mod that's backwards compatible with vanilla, I would suggest a datapack.

Sure, but I would not explain how to do it since nearly any instance of registry replacement will break the game because of all the static storages of vanilla registry objects which in most instances would cause the game to crash in some capacity. Hence, I suggested the solution above as an alternative. It would also allow you to have more compatibility with other mods if you provide an open API or create an addon that supports the mod even if you do not wish to support it.

Ok if i good understand what u telling there.
The best idea cause of minecraft static storage is to make custom crafting table, furnace etc. to just track player progress in game.
But what with disabling items to make custom mining progress or better is to go around this and make something like this custom crafting blocks

Link to comment
Share on other sites

3 hours ago, _KS_ said:

But what with disabling items to make custom mining progress or better is to go around this and make something like this custom crafting blocks

You can override any JSON, so loot tables and recipes can just be modified to handle that. You can even add a custom condition for loot tables that take in the player context such that you can check your player's progress before dropping that loot.

  • Like 1
Link to comment
Share on other sites

14 hours ago, ChampionAsh5357 said:

You can override any JSON, so loot tables and recipes can just be modified to handle that. You can even add a custom condition for loot tables that take in the player context such that you can check your player's progress before dropping that loot.

What about uninstalling mod? Overriding json files can generate problem or game check control sums of files after any startup.

For safe change in game i propably need to change all loots via events to custom and make custom usable blocks

Edited by _KS_
Link to comment
Share on other sites

7 minutes ago, ChampionAsh5357 said:

How would that generate problems? It would just revert to vanilla behavior on uninstall.

 

Ok. How u want to do this.
Using just file operations or getting game variables and changing it.
Sorry for my misunderstood im new in forge coding.
I will propably do this by cancelling events and calculating my self everyting

Edited by _KS_
Link to comment
Share on other sites

45 minutes ago, _KS_ said:

Sorry for my misunderstood im new in forge coding.

JSON replacement is a vanilla system using datapacks. You can modify behavior in any which way without worrying.

45 minutes ago, _KS_ said:

Ok. How u want to do this.

I've already explained above. Override recipes and loot table JSONs for changing/disabling things. If not supported, use an associated event. Since you want the recipes to be unlocked based upon the player, you will most likely need to create a new block which supports taking in the player as part of the recipe calculation.

  • Like 1
Link to comment
Share on other sites

9 minutes ago, ChampionAsh5357 said:

JSON replacement is a vanilla system using datapacks. You can modify behavior in any which way without worrying.

I've already explained above. Override recipes and loot table JSONs for changing/disabling things. If not supported, use an associated event. Since you want the recipes to be unlocked based upon the player, you will most likely need to create a new block which supports taking in the player as part of the recipe calculation.

Thx i will stay with my method because now i recognize i need to change all block inventories (player too)to make my mod work correctly. Still thx so much for help 

Edited by _KS_
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.

×
×
  • Create New...

Important Information

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