Pyrotech

Pyrotech

897k Downloads

Some Kiln recipes can't be removed

Opened this issue ยท 1 comments

commented

Issue Description

I would like to replace all of the existing kiln recipes with roughly equivalent recipes that are much shorter, but for the following outputs the recipe is not removed, so both the old recipe and my new recipe show in JEI. For the other default recipes, the removal seems to work fine

* Clay Bucket
* Clay Shears
* Brick
* Charcoal Flakes
* Stone Slabs
* Stone
* Andesite
* Granite
* Diorite
* Limestone

What Happens

See above

What You Expect to Happen

For only my new recipes to show up in JEI

Script

Pastebin of all my zs stone kiln tweaks

Affected Versions

Do not use latest; please supply accurate version numbers.

  • Minecraft: 1.12.2
  • Forge: 1.12.2-14.23.5.2838
  • CraftTweaker: 1.12.2-4.1.19
  • Dropt: 1.12.2-1.15.1
  • Pyrotech: 1.12.2-1.2.4
  • Athenaeum: 1.12.2-1.17.2

2019-07-08_12 28 52
It looks like this for all of the items I listed in the beginning

commented

Thank you for the report!

The Problem

  1. mod recipes added
  2. CraftTweaker (CrT) recipes removed, then added
  3. recipes inherited

Using the limestone as an example:

  1. The limestone recipe is added as a Pit Kiln recipe
  2. The Stone Kiln does not have a limestone recipe to remove
  3. The Stone Kiln inherits the limestone recipe from the Pit Kiln

In order to remove the limestone recipe from the Stone Kiln, the limestone recipe for the Pit Kiln would have to be removed or the Stone Kiln recipe inheritance disabled in the config.

The problem is that the recipe inheritance is mostly a black box to the user. It isn't clear that to remove the limestone from the Stone Kiln you have to actually remove it from the Pit Kiln. As a user, when I tell CrT to remove something, I expect that thing to be gone.

There is also a related problem with the way that it is currently written: there is no way to ensure which step happens first, 2 or 3. This means that in some packs, it will happen 2 then 3 and in some packs, it will happen 3 then 2. This means that some people's CrT scripts are benefiting from the inheritence while others are not.

The Solution

Switching steps 2 and 3 looks like the best way forward.

This would result in:

  1. mod recipes added
  2. recipes inherited
  3. CrT recipes removed, then added

And:

  1. The limestone recipe is added as a Pit Kiln recipe
  2. The Stone Kiln inherits the limestone recipe from the Pit Kiln
  3. The limestone recipe is removed from the Stone Kiln

CrT would have the ultimate say in what gets removed. The only drawback to making this change is recipes added by CrT would no longer benefit from the inheritence. This would require the user to write recipes for each machine instead of writing a single recipe. However, the user could also easily leverage CrT functions to achieve their own recipe inheritence design.

This is not a bad tradeoff.

As a user, I desire absolute control with CrT, and this solution provides it. There is no ambiguity. Recipe inheritence still works internally with recipes added by the mod.

The Implementation

This is a relatively trivial change to make, however, the effects of the change will not be trivial.

Because of the ordering issue described above, it stands to reason that people with scripts that are benefiting from the inheritence will lose recipes when this change is made. They will need to manually add the recipes that were previously being inherited automatically.

If we move forward with this, due to the potential effects of the change, it will be included in the next feature release and not as a patch or hotfix.