aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-03-03 09:32:46 +0800
committershedaniel <daniel@shedaniel.me>2022-04-13 23:42:24 +0800
commit6bc798092a5833d771d07743429750c8afeb0ebe (patch)
treeed92f47f6cb1ab161e7f1819228cde1b1aeb36df /runtime/src/main/java
parent8f4dd83a48b5089fc7e04ae972641b11839730c1 (diff)
downloadRoughlyEnoughItems-6bc798092a5833d771d07743429750c8afeb0ebe.tar.gz
RoughlyEnoughItems-6bc798092a5833d771d07743429750c8afeb0ebe.tar.bz2
RoughlyEnoughItems-6bc798092a5833d771d07743429750c8afeb0ebe.zip
Catch SearchFilterPrepareWatcher race condition
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/SearchFilterPrepareWatcher.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/SearchFilterPrepareWatcher.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/SearchFilterPrepareWatcher.java
index e7657afdb..73d182fe2 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/SearchFilterPrepareWatcher.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/SearchFilterPrepareWatcher.java
@@ -46,18 +46,22 @@ public class SearchFilterPrepareWatcher implements HintProvider {
@Override
public List<Component> provide() {
lastProcess = null;
- if (Argument.prepareStage != null && Argument.currentStages != null && Argument.prepareStacks != null && Argument.prepareStacks.size() > 100) {
- if (Util.getEpochMillis() - Argument.prepareStart < 500) return Collections.emptyList();
+ try {
+ if (Argument.prepareStage != null && Argument.currentStages != null && Argument.prepareStacks != null && Argument.prepareStacks.size() > 100
+ && Argument.prepareStart != null) {
+ if (Util.getEpochMillis() - Argument.prepareStart < 500) return Collections.emptyList();
int prepareStageCurrent = Argument.prepareStage.getLeft();
int prepareStageTotal = Argument.prepareStage.getRight();
MutablePair<Integer, Integer> currentStage = Iterables.get(Arrays.asList(Argument.currentStages), prepareStageCurrent - 1, null);
int currentStageCurrent = currentStage == null ? 0 : currentStage.getLeft();
int currentStageTotal = currentStage == null ? 0 : currentStage.getRight();
- double prepareStageProgress = prepareStageTotal == 0 ? 0 : prepareStageCurrent / (double) prepareStageTotal;
- double currentStageProgress = currentStageTotal == 0 ? 0 : currentStageCurrent / (double) currentStageTotal;
- lastProcess = prepareStageTotal == 0 ? 0 : Math.max(0, prepareStageProgress - (1 - currentStageProgress) / prepareStageTotal);
- return ImmutableList.of(new TranslatableComponent("text.rei.caching.search"),
- new TranslatableComponent("text.rei.caching.search.step", prepareStageCurrent, prepareStageTotal, Math.round(lastProcess * 100)));
+ double prepareStageProgress = prepareStageTotal == 0 ? 0 : prepareStageCurrent / (double) prepareStageTotal;
+ double currentStageProgress = currentStageTotal == 0 ? 0 : currentStageCurrent / (double) currentStageTotal;
+ lastProcess = prepareStageTotal == 0 ? 0 : Math.max(0, prepareStageProgress - (1 - currentStageProgress) / prepareStageTotal);
+ return ImmutableList.of(new TranslatableComponent("text.rei.caching.search"),
+ new TranslatableComponent("text.rei.caching.search.step", prepareStageCurrent, prepareStageTotal, Math.round(lastProcess * 100)));
+ }
+ } catch (NullPointerException ignored) {
}
return Collections.emptyList();
}