diff options
| author | shedaniel <daniel@shedaniel.me> | 2022-06-20 20:29:39 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2022-06-28 03:21:12 +0800 |
| commit | c1d910f1a980c150c9cf4a88e220d883230dfb89 (patch) | |
| tree | 5f05fd51c55aa2d4b5d9c8986005fb80f71d930b /runtime | |
| parent | 3ef8089dd5fb071592a6a104efec41b5ab0a05d8 (diff) | |
| download | RoughlyEnoughItems-c1d910f1a980c150c9cf4a88e220d883230dfb89.tar.gz RoughlyEnoughItems-c1d910f1a980c150c9cf4a88e220d883230dfb89.tar.bz2 RoughlyEnoughItems-c1d910f1a980c150c9cf4a88e220d883230dfb89.zip | |
Improve performance of entry tooltip by delaying calculation
Diffstat (limited to 'runtime')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java index f9040a694..94523a83b 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java @@ -101,6 +101,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget { public boolean removeTagMatch = true; private long lastCheckTime = -1; + private long lastCheckedTime = -1; private Display display; private Supplier<DisplayTooltipComponent> displayTooltipComponent; @@ -323,7 +324,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget { return null; } - private TransferHandler getTransferHandler() { + private TransferHandler getTransferHandler(boolean query) { if (PluginManager.areAnyReloading()) { return null; } @@ -345,7 +346,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget { return null; } - return _getTransferHandler(); + return query ? _getTransferHandler() : null; } @Override @@ -413,10 +414,26 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget { public Tooltip getCurrentTooltip(TooltipContext context) { Tooltip tooltip = getCurrentEntry().getTooltip(context); - if (tooltip != null && getTransferHandler() != null - && !(Minecraft.getInstance().screen instanceof DisplayScreen)) { - tooltip.add(Component.translatable("text.auto_craft.move_items.tooltip").withStyle(ChatFormatting.YELLOW)); - tooltip.add((ClientTooltipComponent) displayTooltipComponent.get()); + if (tooltip != null && !(Minecraft.getInstance().screen instanceof DisplayScreen)) { + boolean exists = getTransferHandler(false) != null; + + if (!exists) { + if (lastCheckedTime == -1 || Util.getMillis() - lastCheckedTime > 400) { + lastCheckedTime = Util.getMillis(); + } + + if (Util.getMillis() - lastCheckedTime > 200) { + lastCheckedTime = -1; + exists = getTransferHandler(true) != null; + } + } else { + lastCheckedTime = -1; + } + + if (exists) { + tooltip.add(Component.translatable("text.auto_craft.move_items.tooltip").withStyle(ChatFormatting.YELLOW)); + tooltip.add((ClientTooltipComponent) displayTooltipComponent.get()); + } } if (tooltip != null) { @@ -551,7 +568,7 @@ public class EntryWidget extends Slot implements DraggableStackProviderWidget { if (!(Minecraft.getInstance().screen instanceof DisplayScreen) && Screen.hasControlDown()) { try { - TransferHandler handler = getTransferHandler(); + TransferHandler handler = getTransferHandler(true); if (handler != null) { AbstractContainerScreen<?> containerScreen = REIRuntime.getInstance().getPreviousContainerScreen(); |
