Immersive Engineering

Immersive Engineering

134M Downloads

[Suggestion 1.18.2] Create mod recipe compability

HonzaVinCZ opened this issue ยท 6 comments

commented

Explain your idea

I'm working on IE/Create modpack and trying to make these two mods as dynamic as possible.
First thing is that I edited recipes for plates so IE plates are the main ones and Create sheets were removed and hidden in JEI. That is fine.
But now I'm facing a more complicated thing. Nuggets. There is really some mess among them because some of them have compability with Create except the Copper Nugget.
Copper nugget has only compability through shapeless crafting but even though they have the same tags, they are incompatible when it comes to manufacturing them.
Even IE config file mod resource priority did not help as I have it as following:
preferredOres = ["immersiveengineering", "minecraft", "create"]
Entering "create" did not change anything.

I would like to suggest some Create mod integration that would add/remove recipes based on priority in config file.
Also I would not report this but fixing this in CraftTweaker would take forever and I think I'm not the first and also last person who is facing this problem.

Here is IE Copper Ingot. Except shapeless crafting, there is no compability with Create processing.
2022-12-18_18 00 29

Here is Create Copper Ingot. Not compatible with IE Recycling.
2022-12-18_18 00 39

Copper Ingot recipe using Create Copper Nuggets. For some reason there is a IE recipe with one single copper nugget in center.
2022-12-18_18 00 54

commented

To make this clearer, you want IE to add a config option to... delete its own recipes if Create exists? Remove Create's recipes if Create exists? I'm unsure.
Also, that list is in order of priority - currently IE has priority over Create.

commented

The Tag system exists to make items interchangable.
If you are hiding items in JEI or removing them from tags, then you are using this system wrong.

A little bit of explanation on "IE copper nugget in the center":
That is a convention that a bunch of mod authors agreed on. In order to allow people to craft specific ingots from specific mods, the center item should be from that mod, while the others are interchangable. So our recipe effectively looks like this:
XXX
XCX
XXX
Where C is <nugget/ingot from IE> and X is <nugget/ingot tag>.
Mekanism follows this pattern, pretty sure a bunch of other tech mods do as well.

Config options are absolutely not happening. For one, affecting recipes with configs is messy /nigh impossible since a few version ago => Datapacks exist for this reason. Use them.
For two, having a config that specifically targets some Create stuff feels very out of place.

commented

I let the recipe priority up to you. People can then tweak them by using CraftTweaker if they want but the current problem is that there is just too much to tweak from user side. For example, there are dual nuggets, dual plates (create calls them sheet). Especially painful is recycling which is the only process that returns IE nuggets no matter of mod config priority. That is pretty much unfixable by using CraftTweaker because of how recycling uses automatically generated recipes.
There is just a long list of kinda incompatible recipes which would require you to try add Create and see yourself where you could improve the compability.

When it comes to my modpack, yes, IE is the main mod, then there is Create which adds the mechanical things before players get electricity. The power connection between these two mods is Create Crafts & Additions.
That mod is another painful thing to make compatible as it adds plant oil, bioethanol, rods and wires that are already in IE. Again, I let this decision up to you if you want to optimize that as well.

The general idea of this suggestion is to improve the recipe compability between IE and Create.
If I should say what I would improve, it would be

  • Unify nuggets and plates/sheets recipes
  • Improve compability of Recycling
  • Maybe extra recipes between IE Crusher and Create Grinder when create is loaded and other processing compabilities.
commented

Tags are explicitly designed so that unification does not need to happen. Your wish for your first bullet point will not happen. The reason the IE ingot recipe is 8 nuggets of any kind and one of its own is to allow getting any mod's ingot via its own nuggets in the center, this just happened to carry over from other ingots from datagen.

"Too much to tweak on the user side" is not an issue for IE, that's an issue on your end of you not having the want to go through with what you plan.

Improving recycling compatibility: did you actually do what I said? If not, then you should try it. If you have, then that is something to look into.

What extra recipes are you looking for added to either of them? Normally it's up to the mod to add compatibility with IE, or IE to add compatibility with [x], if it exists - so I would ask what recipes from each you're missing and then figure out which mod should add them.

commented

I would have will but I don't know how to when to me it seems like recycling uses some math based recipes where I can't know what's the formula for based ammount of returned material from recycling. It's also tool damage based which is way above my scripting knowledge. If I knew how to use Java on your or other modders level, I would make compat mod myself but I'm not that person, suddenly.
And yes, I have about 500 lines of varions machine recipe tweaking just between IE and Create. But I'm also limited by knowledge.

Some compability examples:

<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_wheat", <item:minecraft:wheat>, 3200, <item:minecraft:gravel>, <item:create:wheat_flour>, <item:create:wheat_flour> % 25, <item:minecraft:wheat_seeds> % 25);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_granite", <item:minecraft:granite>, 3200, <item:minecraft:gravel>, <item:minecraft:red_sand> % 50);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_diorite", <item:minecraft:diorite>, 3200, <item:minecraft:gravel>, <item:minecraft:quartz> % 25);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_andesite", <item:minecraft:andesite>, 3200, <item:minecraft:gravel>);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_calcite", <item:minecraft:calcite>, 3200, <item:minecraft:gravel>, <item:minecraft:bone_meal> % 75);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_tuff", <item:minecraft:tuff>, 3200, <item:minecraft:gravel>, <item:minecraft:flint> % 25, <item:minecraft:gold_nugget> % 10, <item:create:copper_nugget> % 10, <item:create:zinc_nugget> % 10, <item:minecraft:iron_nugget> % 10);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_dripstone", <item:minecraft:dripstone_block>, 3200, <item:minecraft:gravel>, <item:minecraft:clay_ball>);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_terracotta", <item:minecraft:terracotta>, 3200, <item:minecraft:red_sand>);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_asurine", <item:create:asurine>, 3200, <item:minecraft:gravel>, <item:create:crushed_zinc_ore> % 30, <item:create:zinc_nugget> % 30);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_crimsite", <item:create:crimsite>, 3200, <item:minecraft:gravel>, <item:create:crushed_iron_ore> % 40, <item:minecraft:iron_nugget> % 40);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_ochrum", <item:create:ochrum>, 3200, <item:minecraft:gravel>, <item:create:crushed_gold_ore> % 20, <item:minecraft:gold_nugget> % 20);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_veridium", <item:create:veridium>, 3200, <item:minecraft:gravel>, <item:create:crushed_copper_ore> % 80, <item:create:copper_nugget> % 80);
<recipetype:immersiveengineering:crusher>.addRecipe("hv_immersiveengineering_diamond_dust", <tag:items:forge:gems/diamond>, 3200, <item:createaddition:diamond_grit>);
<recipetype:create:pressing>.addRecipe("hv_create_copper_plate", [<item:immersiveengineering:plate_copper>], <item:minecraft:copper_ingot>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_iron_plate", [<item:immersiveengineering:plate_iron>], <item:minecraft:iron_ingot>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_gold_plate", [<item:immersiveengineering:plate_gold>], <item:minecraft:gold_ingot>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_aluminum_plate", [<item:immersiveengineering:plate_aluminum>], <item:immersiveengineering:ingot_aluminum>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_lead_plate", [<item:immersiveengineering:plate_lead>], <item:immersiveengineering:ingot_lead>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_silver_plate", [<item:immersiveengineering:plate_silver>], <item:immersiveengineering:ingot_silver>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_nickel_plate", [<item:immersiveengineering:plate_nickel>], <item:immersiveengineering:ingot_nickel>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_uranium_plate", [<item:immersiveengineering:plate_uranium>], <item:immersiveengineering:ingot_uranium>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_constantan_plate", [<item:immersiveengineering:plate_constantan>], <item:immersiveengineering:ingot_constantan>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_electrum_plate", [<item:immersiveengineering:plate_electrum>], <item:immersiveengineering:ingot_electrum>, 100);
<recipetype:create:pressing>.addRecipe("hv_create_steel_plate", [<item:immersiveengineering:plate_steel>], <item:immersiveengineering:ingot_steel>, 100);

craftingTable.addShapeless("hv_create_brass_plate", <item:create:brass_sheet>, [<tag:items:forge:ingots/brass>,<tag:items:immersiveengineering:tools/hammers>]);

// CREATE ADDITIONS

craftingTable.addShapeless("hv_create_zinc_plate", <item:createaddition:zinc_sheet>, [<tag:items:forge:ingots/zinc>,<tag:items:immersiveengineering:tools/hammers>]);

<tag:items:forge:rods/all_metal>.remove(<item:createaddition:copper_rod>);
<tag:items:forge:rods/copper>.remove(<item:createaddition:copper_rod>);
<tag:items:forge:rods>.remove(<item:createaddition:copper_rod>);

<tag:items:forge:rods/all_metal>.remove(<item:createaddition:iron_rod>);
<tag:items:forge:rods/iron>.remove(<item:createaddition:iron_rod>);
<tag:items:forge:rods>.remove(<item:createaddition:iron_rod>);

<tag:items:forge:rods/all_metal>.remove(<item:createaddition:gold_rod>);
<tag:items:forge:rods/gold>.remove(<item:createaddition:gold_rod>);
<tag:items:forge:rods>.remove(<item:createaddition:gold_rod>);

<tag:items:immersiveengineering:circuits/solder>.remove(<item:createaddition:copper_wire>);
<tag:items:forge:wires>.remove(<item:createaddition:copper_wire>);
<tag:items:forge:wires/copper>.remove(<item:createaddition:copper_wire>);

<tag:items:immersiveengineering:circuits/solder>.remove(<item:createaddition:iron_wire>);
<tag:items:forge:wires>.remove(<item:createaddition:iron_wire>);
<tag:items:forge:wires/iron>.remove(<item:createaddition:iron_wire>);

<tag:items:immersiveengineering:circuits/solder>.remove(<item:createaddition:gold_wire>);
<tag:items:forge:wires>.remove(<item:createaddition:gold_wire>);
<tag:items:forge:wires/gold>.remove(<item:createaddition:gold_wire>);

<recipetype:create:pressing>.remove(<item:create:copper_sheet>);

<recipetype:immersiveengineering:metal_press>.remove(<item:createaddition:copper_rod>);
<recipetype:immersiveengineering:metal_press>.remove(<item:createaddition:iron_rod>);
<recipetype:immersiveengineering:metal_press>.remove(<item:createaddition:gold_rod>);
<recipetype:immersiveengineering:metal_press>.remove(<item:createaddition:copper_wire>);
<recipetype:immersiveengineering:metal_press>.remove(<item:createaddition:iron_wire>);
<recipetype:immersiveengineering:metal_press>.remove(<item:createaddition:gold_wire>);

<recipetype:createaddition:rolling>.remove(<item:createaddition:copper_rod>);
<recipetype:createaddition:rolling>.remove(<item:createaddition:iron_rod>);
<recipetype:createaddition:rolling>.remove(<item:createaddition:gold_rod>);
<recipetype:createaddition:rolling>.remove(<item:createaddition:copper_wire>);
<recipetype:createaddition:rolling>.remove(<item:createaddition:iron_wire>);
<recipetype:createaddition:rolling>.remove(<item:createaddition:gold_wire>);

<recipetype:create:mechanical_crafting>.remove(<item:createaddition:alternator>);
<recipetype:create:mechanical_crafting>.remove(<item:createaddition:electric_motor>);
<recipetype:create:mechanical_crafting>.remove(<item:createaddition:tesla_coil>);
<recipetype:create:mechanical_crafting>.remove(<item:createaddition:accumulator>);

<recipetype:create:mixing>.removeByName("createaddition:mixing/bioethanol");
<recipetype:create:compacting>.removeByName("createaddition:compacting/seed_oil");

recipes.remove(<item:createaddition:copper_spool>);
recipes.remove(<item:createaddition:gold_spool>);
recipes.remove(<item:createaddition:spool>);
recipes.remove(<item:createaddition:capacitor>);
recipes.remove(<item:createaddition:redstone_relay>);
recipes.remove(<item:createaddition:connector>);

craftingTable.addShaped("hv_create_alternator", <item:createaddition:alternator>, 
[[<tag:items:forge:plates/iron>, <item:immersiveengineering:component_iron>, <tag:items:forge:plates/iron>],
 [<item:immersiveengineering:coil_lv>, <item:create:shaft>, <item:immersiveengineering:coil_lv>],
 [<tag:items:forge:plates/iron>, <item:immersiveengineering:coil_lv>, <tag:items:forge:plates/iron>]]);

craftingTable.addShaped("hv_create_motor", <item:createaddition:electric_motor>, 
[[<tag:items:forge:plates/brass>, <item:immersiveengineering:component_steel>, <tag:items:forge:plates/brass>],
 [<item:immersiveengineering:coil_lv>, <item:create:shaft>, <item:immersiveengineering:coil_lv>],
 [<tag:items:forge:plates/brass>, <item:immersiveengineering:coil_lv>, <tag:items:forge:plates/brass>]]);
commented

Most of this is just removing items from various tags, a thing which will not be done. Of the recipes I can feasibly see IE implementing, I can only see the first set, in the crusher, being implemented.