aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-20 20:29:39 +0800
committershedaniel <daniel@shedaniel.me>2022-06-28 03:21:12 +0800
commitc1d910f1a980c150c9cf4a88e220d883230dfb89 (patch)
tree5f05fd51c55aa2d4b5d9c8986005fb80f71d930b /runtime
parent3ef8089dd5fb071592a6a104efec41b5ab0a05d8 (diff)
downloadRoughlyEnoughItems-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.java31
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();