Recipe Fail Reason Display#4487
Conversation
fix AdjacentFluidCondition tooltip not display fluid info
551eabe to
cee5381
Compare
jurrejelle
left a comment
There was a problem hiding this comment.
Can you also add docs to docs/content/modpack/changes/v7.5.0.md and the recipe modifiers page about this existing? the recipe modifiers page doesn't have java examples yet, up to you if you wanna add those too or just add it to the existing kjs examples
src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifierList.java
Outdated
Show resolved
Hide resolved
src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java
Outdated
Show resolved
Hide resolved
| @FunctionalInterface | ||
| public interface ModifierFunction { | ||
|
|
||
| // TODO: Add reasons for any NULL ModifierFunction (replace them with cancel) |
There was a problem hiding this comment.
Is this finished within this codebase?
There was a problem hiding this comment.
Not yet. There are still multiple usages of ModifierFunction.NULL in the codebase. Some of them were not replaced because I am not sure about reasons. I have only replaced the more common cases where the fail reason is explicit.
|
I hava added docs to v7.5.0.md. I am not familiar with KubeJS, so I did not touch that part. |
b1d184a to
1a4ab22
Compare
| provider.add("gtceu.recipe_logic.insufficient_fuel", "Insufficient Fuel"); | ||
| provider.add("gtceu.recipe_logic.insufficient_in", "Insufficient Inputs"); | ||
| provider.add("gtceu.recipe_logic.insufficient_out", "Insufficient Outputs"); | ||
| provider.add("gtceu.recipe_logic.condition_fails", "Condition Fails"); | ||
| provider.add("gtceu.recipe_logic.no_contents", "Recipe has no Contents"); | ||
| provider.add("gtceu.recipe_logic.no_capabilities", "Machine has no Capabilities"); |
There was a problem hiding this comment.
I'd add failure_reason. to all of these keys:
| provider.add("gtceu.recipe_logic.insufficient_fuel", "Insufficient Fuel"); | |
| provider.add("gtceu.recipe_logic.insufficient_in", "Insufficient Inputs"); | |
| provider.add("gtceu.recipe_logic.insufficient_out", "Insufficient Outputs"); | |
| provider.add("gtceu.recipe_logic.condition_fails", "Condition Fails"); | |
| provider.add("gtceu.recipe_logic.no_contents", "Recipe has no Contents"); | |
| provider.add("gtceu.recipe_logic.no_capabilities", "Machine has no Capabilities"); | |
| provider.add("gtceu.recipe_logic.failure_reason.insufficient_fuel", "Insufficient fuel"); | |
| provider.add("gtceu.recipe_logic.failure_reason.insufficient_in", "Insufficient inputs"); | |
| provider.add("gtceu.recipe_logic.failure_reason.insufficient_out", "Insufficient outputs"); | |
| provider.add("gtceu.recipe_logic.failure_reason.condition_fails", "Condition fails"); | |
| provider.add("gtceu.recipe_logic.failure_reason.no_contents", "Recipe has no contents"); | |
| provider.add("gtceu.recipe_logic.failure_reason.no_capabilities", "Machine has no I/O"); |
Do also edit all the uses of these
There was a problem hiding this comment.
also, most of these don't seem to be used anywhere?
There was a problem hiding this comment.
These were moved here from LangHandler, and have all been used in waiting reasons before (before this pr).
| provider.add("gtceu.recipe_modifier.default_fail", "Recipe Modifier Fail"); | ||
| provider.add("gtceu.recipe_modifier.insufficient_voltage", "Voltage Tier Too Low"); | ||
| provider.add("gtceu.recipe_modifier.insufficient_eu_to_start_fusion", | ||
| "Insufficient Energy to Initiate Fusion Reaction"); | ||
| provider.add("gtceu.recipe_modifier.coil_temperature_too_low", "Coil Temperature Too Low"); |
There was a problem hiding this comment.
| provider.add("gtceu.recipe_modifier.default_fail", "Recipe Modifier Fail"); | |
| provider.add("gtceu.recipe_modifier.insufficient_voltage", "Voltage Tier Too Low"); | |
| provider.add("gtceu.recipe_modifier.insufficient_eu_to_start_fusion", | |
| "Insufficient Energy to Initiate Fusion Reaction"); | |
| provider.add("gtceu.recipe_modifier.coil_temperature_too_low", "Coil Temperature Too Low"); | |
| provider.add("gtceu.recipe_modifier.failure_reason.default_fail", "Recipe modifier failure"); | |
| provider.add("gtceu.recipe_modifier.failure_reason.insufficient_voltage", "Voltage too low"); | |
| provider.add("gtceu.recipe_modifier.failure_reason.insufficient_eu_to_start_fusion", | |
| "Insufficient energy to initiate fusion reaction"); | |
| provider.add("gtceu.recipe_modifier.failure_reason.coil_temperature_too_low", "Coil temperature too low"); |
| provider.add("gtceu.recipe_logic.insufficient_out", "Insufficient Outputs"); | ||
| provider.add("gtceu.recipe_logic.condition_fails", "Condition Fails"); | ||
| provider.add("gtceu.recipe_logic.no_contents", "Recipe has no Contents"); | ||
| provider.add("gtceu.recipe_logic.no_capabilities", "Machine has no Capabilities"); |
There was a problem hiding this comment.
| provider.add("gtceu.recipe_logic.no_capabilities", "Machine has no Capabilities"); | |
| provider.add("gtceu.recipe_logic.failure_reason.no_capabilities", "Machine has no %s capabilities"); |
src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/MultiblockDisplayText.java
Outdated
Show resolved
Hide resolved
…tiblockDisplayText.java Co-authored-by: screret <68943070+screret@users.noreply.github.com>
…k/recipe-fail-reason # Conflicts: # docs/content/Modpacks/Changes/v7.5.0.md # src/generated/resources/assets/gtceu/lang/en_ud.json # src/generated/resources/assets/gtceu/lang/en_us.json
What
Add components to machines to show why recipes fail to setup, they are displayed in:
Implementation Details
Outcome
Players now can easily know why their machines do not work (in most cases).
Additional Information
Also add more info to AdjacentFluidCondition's tooltip to show specific fluid.
Add TODO about replacing ModifierFunction.NULL with cancel(reason).
Potential Compatibility Issues
This feature is all about info display, did not change the original logic or api. failReasonMap and failReasons are not persisted so
data errors will not occur.