diff options
| -rw-r--r-- | api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java | 18 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java | 6 |
2 files changed, 22 insertions, 2 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java index ad79d1d92..d379c381c 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java @@ -36,6 +36,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; import java.util.function.Supplier; @@ -143,6 +144,8 @@ public interface TransferHandler extends Comparable<TransferHandler> { @ApiStatus.Experimental Result overrideTooltipRenderer(BiConsumer<Point, TooltipSink> renderer); + Result tooltip(Component component); + /** * @return whether this handler has successfully handled the transfer. */ @@ -229,6 +232,7 @@ public interface TransferHandler extends Comparable<TransferHandler> { final class ResultImpl implements Result { private boolean successful, applicable, returningToScreen, blocking; private Component error; + private List<Component> tooltips = new ArrayList<>(); private Object errorRenderer; private BiConsumer<Point, TooltipSink> tooltipRenderer; private int color; @@ -290,6 +294,12 @@ public interface TransferHandler extends Comparable<TransferHandler> { } @Override + public Result tooltip(Component component) { + this.tooltips.add(component); + return this; + } + + @Override public boolean isSuccessful() { return successful; } @@ -330,8 +340,12 @@ public interface TransferHandler extends Comparable<TransferHandler> { @Override public void fillTooltip(List<Component> components) { - if (!isSuccessful() && isApplicable()) { - components.add(getError()); + if (isApplicable()) { + if (isSuccessful()) { + components.addAll(tooltips); + } else { + components.add(getError()); + } } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java index 62c297dc9..3c3ddd9cf 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/AutoCraftingEvaluator.java @@ -96,6 +96,7 @@ public class AutoCraftingEvaluator { } List<TransferHandler.Result> errors = new ArrayList<>(); + TransferHandler.Result successfulResult = null; TransferHandler.Context context = TransferHandler.Context.create(actuallyCrafting, stackedCrafting, containerScreen, display); for (TransferHandler transferHandler : TransferHandlerRegistry.getInstance()) { @@ -127,6 +128,7 @@ public class AutoCraftingEvaluator { if (transferResult.isSuccessful()) { errors.clear(); + successfulResult = transferResult; result.successful = true; result.successfulHandler = transferHandler; break; @@ -152,6 +154,10 @@ public class AutoCraftingEvaluator { if (errors.isEmpty()) { errorTooltip.clear(); errorTooltip.add(new TranslatableComponent("text.auto_craft.move_items")); + + if (successfulResult != null) { + successfulResult.fillTooltip(errorTooltip); + } } else { errorTooltip.clear(); List<Component> tooltipsFilled = new ArrayList<>(); |
