aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/plugin/client
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2023-05-29 14:13:31 +0800
committershedaniel <daniel@shedaniel.me>2023-05-29 14:13:31 +0800
commitc2d352636f871631b1f4d4622b6c28daffef5541 (patch)
treeda7ddce0947e3e2c7879ee6cf8be364f49d16edf /runtime/src/main/java/me/shedaniel/rei/plugin/client
parent8e0aafdf9e16688117bd57e14824d664eb816fa0 (diff)
parent5996c704a0e9312aa02d4d835a59f5efc3ac8b43 (diff)
downloadRoughlyEnoughItems-c2d352636f871631b1f4d4622b6c28daffef5541.tar.gz
RoughlyEnoughItems-c2d352636f871631b1f4d4622b6c28daffef5541.tar.bz2
RoughlyEnoughItems-c2d352636f871631b1f4d4622b6c28daffef5541.zip
Merge remote-tracking branch 'shedaniel/9.x-1.19' into 10.x-1.19.3
# Conflicts: # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListSearchManager.java
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin/client')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java19
2 files changed, 16 insertions, 10 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
index 81643dcc0..d5015f878 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
@@ -63,6 +63,7 @@ import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
+import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.Nullable;
@@ -215,7 +216,11 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
@Override
public Stream<? extends TagKey<?>> getTagsFor(EntryStack<ItemStack> entry, ItemStack value) {
- return value.getTags();
+ Stream<? extends TagKey<?>> tags = value.getTags();
+ if (value.getItem() instanceof BlockItem blockItem) {
+ tags = Stream.concat(tags, blockItem.getBlock().builtInRegistryHolder().tags());
+ }
+ return tags;
}
@Environment(EnvType.CLIENT)
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java
index ea1db5d72..f2acdcc80 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java
@@ -24,12 +24,12 @@
package me.shedaniel.rei.plugin.client.runtime;
import com.google.common.collect.ImmutableList;
-import it.unimi.dsi.fastutil.ints.IntIntPair;
import me.shedaniel.math.Color;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.impl.client.gui.hints.HintProvider;
import me.shedaniel.rei.impl.client.search.argument.Argument;
+import me.shedaniel.rei.impl.client.search.argument.ArgumentCache;
import net.minecraft.Util;
import net.minecraft.network.chat.Component;
import org.apache.commons.lang3.ArrayUtils;
@@ -45,14 +45,15 @@ public class SearchFilterPrepareWatcher implements HintProvider {
public List<Component> provide() {
lastProcess = null;
try {
- if (Argument.prepareStage != null && Argument.currentStages != null && Argument.prepareStacks != null && Argument.prepareStacks.size() > 100
- && Argument.prepareStart != null) {
- if (Util.getEpochMillis() - Argument.prepareStart < 100) return Collections.emptyList();
- int prepareStageCurrent = Argument.prepareStage.firstInt();
- int prepareStageTotal = Argument.prepareStage.secondInt();
- IntIntPair currentStage = ArrayUtils.get(Argument.currentStages, prepareStageCurrent - 1);
- int currentStageCurrent = currentStage == null ? 0 : currentStage.firstInt();
- int currentStageTotal = currentStage == null ? 0 : currentStage.secondInt();
+ ArgumentCache cache = Argument.cache;
+ if (cache.currentStep != null && cache.prepareStacks != null && cache.prepareStacks.size() > 100
+ && cache.prepareStart != null) {
+ if (Util.getEpochMillis() - cache.prepareStart < 100) return Collections.emptyList();
+ int prepareStageCurrent = cache.currentStep.step;
+ int prepareStageTotal = cache.currentStep.totalSteps;
+ ArgumentCache.CurrentStep.Step currentStage = ArrayUtils.get(cache.currentStep.steps, prepareStageCurrent - 1);
+ int currentStageCurrent = currentStage == null ? 0 : currentStage.stacks;
+ int currentStageTotal = currentStage == null ? 0 : currentStage.totalStacks;
double prepareStageProgress = prepareStageTotal == 0 ? 0 : prepareStageCurrent / (double) prepareStageTotal;
double currentStageProgress = currentStageTotal == 0 ? 0 : currentStageCurrent / (double) currentStageTotal;
double lastProcess = prepareStageTotal == 0 ? 0 : Math.max(0, prepareStageProgress - (1 - currentStageProgress) / prepareStageTotal);