ChiriVulpes / soulus

A Minecraft mod. You must sift through the ashes of the dead to restore life to the world.
https://soulus.info
Other
3 stars 3 forks source link

Removing vanilla recipes happens after adding composer recipes #37

Closed Thyriel closed 6 years ago

Thyriel commented 6 years ago

1) Using null in Composer.addShaped to define empty slots for the recipe throws a crafttweaker errror: Invalid key entry: '' is a reserved symbol Example script: Composer.addShaped("mytest", <minecraft:stone:1>, 512, [ [<minecraft:gold_ingot>, <minecraft:gold_ingot>, <minecraft:gold_ingot>], [<minecraft:gold_ingot>, null, <minecraft:gold_ingot>], [<minecraft:gold_ingot>, <minecraft:gold_ingot>, <minecraft:gold_ingot>] ]); If you replace null with another ingot or so the recipe works

2) It seems your Composer.addShaped is done too early in scripts. Using "recipes.remove" on an item to remove the normal craftingtable recipes before Composer.addShaped readds the item, removes the Composer recipe too, although it's added later in the same script. (i used similar scripts to change recipes in machines from other mods too and that always worked. No idea why your CT script parts are done before all the other script codes in the same file) For example if you add this in the first line of the script and after that the above example results in the Granite also not being craftable in the composer: recipes.remove(<minecraft:stone:1>);

Thyriel commented 6 years ago

ad 2) Looking throug CT logfile it's clear why this happens. Your scripts are done in INITIALIZATION phase (the first phase), while recipes.remove is done in POSTINITIALIZATION (2nd phase). You should change it so your code is done in [AVAILABLE] phase where other mods run their code (like Botania pure daisy recipes being added)

Also for some strange reason recipes.removeShaped is removing exclusive Composer recipes too

ChiriVulpes commented 6 years ago

The null is a weird bug because afaik it’s based on how CT handles vanilla recipes. I’ll take a look.

As for the rest: I’m already aware of this. Afaik there is nothing I can actually do about it, tho. Composer recipes are actually stored in the normal recipe registry (to heavily simplify a lot of things that the mod does... talking like thousands of lines and non-negligible performance hits). Unfortunately, CT does all vanilla recipe managing after allowing mods to do theirs, so afaik it’s actually incompatible with the way my recipes work. I previously changed the registration to happen the way you mentioned (along with other changes) and it made it more complex and didn’t fix it because of the above reasons.

On that note, there are a couple workarounds:

  1. Remove vanilla recipes by name.
  2. Remove recipes by their ingredients.

I’ll take a look again but it’s unlikely I’ll be able to solve it at the moment.

Thyriel commented 6 years ago

removing by name is a good idea, i'll try that thanks :)

ChiriVulpes commented 6 years ago

Fixed CraftTweaker Composer recipes not allowing empty slots