aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-08-27 22:36:16 +0800
committershedaniel <daniel@shedaniel.me>2021-08-27 22:36:16 +0800
commit2318a37d8482498bdec25947e15177ba77996cb8 (patch)
tree7e84732627aa14350818b061d822e99097e01daf /runtime/src/main/java
parenta3a6887c5139ff9463fe6ab32b480dbeca8623e3 (diff)
downloadRoughlyEnoughItems-2318a37d8482498bdec25947e15177ba77996cb8.tar.gz
RoughlyEnoughItems-2318a37d8482498bdec25947e15177ba77996cb8.tar.bz2
RoughlyEnoughItems-2318a37d8482498bdec25947e15177ba77996cb8.zip
Fix REI not initiated issues, and server crash issues
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java14
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/PluginStageExecutionWatcher.java (renamed from runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/PluginStageExecutionWatcher.java)36
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchBarHighlightWatcher.java (renamed from runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/SearchBarHighlightWatcher.java)2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java9
6 files changed, 40 insertions, 26 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
index 2b3a9aef4..a411fcb77 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
@@ -269,7 +269,7 @@ public class RoughlyEnoughItemsCoreClient {
final ResourceLocation recipeButtonTex = new ResourceLocation("textures/gui/recipe_button.png");
MutableLong startReload = new MutableLong(-1);
MutableLong endReload = new MutableLong(-1);
- PRE_UPDATE_RECIPES.register(recipeManager -> reloadPlugins(endReload, ReloadStage.START));
+ PRE_UPDATE_RECIPES.register(recipeManager -> reloadPlugins(startReload, ReloadStage.START));
ClientRecipeUpdateEvent.EVENT.register(recipeManager -> reloadPlugins(endReload, Platform.isFabric() ? ReloadStage.END : null));
ClientGuiEvent.INIT_POST.register((screen, access) -> {
REIRuntimeImpl.getInstance().setPreviousScreen(screen);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java
index d66c63387..e34544294 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java
@@ -26,11 +26,14 @@ package me.shedaniel.rei.impl.client.gui.hints;
import me.shedaniel.math.Color;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.Nullable;
import java.util.List;
+@Environment(EnvType.CLIENT)
public interface HintProvider {
List<Component> provide();
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
index 22bd239b4..c9c57d4ab 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java
@@ -51,8 +51,12 @@ import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry;
import me.shedaniel.rei.api.client.util.ClientEntryStacks;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
+import me.shedaniel.rei.api.common.plugins.PluginManager;
+import me.shedaniel.rei.api.common.plugins.REIPlugin;
+import me.shedaniel.rei.api.common.registry.Reloadable;
import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.impl.client.ClientHelperImpl;
+import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.screen.AbstractDisplayViewingScreen;
import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen;
@@ -76,6 +80,16 @@ import java.util.function.Function;
@Environment(EnvType.CLIENT)
@ApiStatus.Internal
public class DefaultClientRuntimePlugin implements REIClientPlugin {
+ @SuppressWarnings("rawtypes")
+ public DefaultClientRuntimePlugin() {
+ PluginStageExecutionWatcher watcher = new PluginStageExecutionWatcher();
+ for (PluginManager<? extends REIPlugin<?>> instance : PluginManager.getActiveInstances()) {
+ instance.registerReloadable((Reloadable) watcher.reloadable(instance));
+ }
+ REIRuntimeImpl.getInstance().addHintProvider(watcher);
+ REIRuntimeImpl.getInstance().addHintProvider(new SearchBarHighlightWatcher());
+ }
+
@Override
public void registerEntries(EntryRegistry registry) {
if (ClientHelperImpl.getInstance().isAprilFools.get()) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/PluginStageExecutionWatcher.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/PluginStageExecutionWatcher.java
index c92020949..10326394c 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/PluginStageExecutionWatcher.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/PluginStageExecutionWatcher.java
@@ -21,12 +21,13 @@
* SOFTWARE.
*/
-package me.shedaniel.rei.plugin.common.runtime;
+package me.shedaniel.rei.plugin.client.runtime;
import com.google.common.collect.ImmutableList;
import me.shedaniel.math.Color;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
+import me.shedaniel.rei.api.common.plugins.PluginManager;
import me.shedaniel.rei.api.common.plugins.REIPlugin;
import me.shedaniel.rei.api.common.registry.ReloadStage;
import me.shedaniel.rei.api.common.registry.Reloadable;
@@ -38,25 +39,30 @@ import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.stream.Collectors;
-public class PluginStageExecutionWatcher implements Reloadable<REIPlugin<?>>, HintProvider {
- private Set<ReloadStage> stages = new HashSet<>();
+public class PluginStageExecutionWatcher implements HintProvider {
+ private Map<PluginManager<?>, Set<ReloadStage>> allStages = new HashMap<>();
- @Override
- public void startReload() {
- for (ReloadStage stage : ReloadStage.values()) {
- startReload(stage);
- }
- }
-
- @Override
- public void startReload(ReloadStage stage) {
- if (stage.ordinal() == 0) stages.clear();
- stages.add(stage);
+ public <T extends REIPlugin<?>> Reloadable<? extends T> reloadable(PluginManager<?> manager) {
+ return new Reloadable<>() {
+ @Override
+ public void startReload() {
+ for (ReloadStage stage : ReloadStage.values()) {
+ startReload(stage);
+ }
+ }
+
+ @Override
+ public void startReload(ReloadStage stage) {
+ Set<ReloadStage> stages = allStages.computeIfAbsent(manager, $ -> new HashSet<>());
+ if (stage.ordinal() == 0) stages.clear();
+ stages.add(stage);
+ }
+ };
}
public Set<ReloadStage> notVisited() {
Set<ReloadStage> notVisited = new HashSet<>(Arrays.asList(ReloadStage.values()));
- notVisited.removeAll(stages);
+ notVisited.removeIf(stage -> allStages.values().stream().allMatch(stages -> stages.contains(stage)));
return notVisited;
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/SearchBarHighlightWatcher.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchBarHighlightWatcher.java
index 08dd06ea0..0447bde21 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/SearchBarHighlightWatcher.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchBarHighlightWatcher.java
@@ -21,7 +21,7 @@
* SOFTWARE.
*/
-package me.shedaniel.rei.plugin.common.runtime;
+package me.shedaniel.rei.plugin.client.runtime;
import me.shedaniel.math.Color;
import me.shedaniel.math.Point;
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java
index 08911b34b..60adc004c 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/common/runtime/DefaultRuntimePlugin.java
@@ -29,9 +29,7 @@ import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.EntryTypeRegistry;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
import me.shedaniel.rei.api.common.fluid.FluidSupportProvider;
-import me.shedaniel.rei.api.common.plugins.PluginManager;
import me.shedaniel.rei.api.common.plugins.REIServerPlugin;
-import me.shedaniel.rei.impl.client.REIRuntimeImpl;
import me.shedaniel.rei.plugin.client.entry.FluidEntryDefinition;
import me.shedaniel.rei.plugin.client.entry.ItemEntryDefinition;
import net.minecraft.resources.ResourceLocation;
@@ -44,13 +42,6 @@ import java.util.stream.Stream;
public class DefaultRuntimePlugin implements REIServerPlugin {
public static final ResourceLocation PLUGIN = new ResourceLocation("roughlyenoughitems", "default_runtime_plugin");
- public DefaultRuntimePlugin() {
- PluginStageExecutionWatcher watcher = new PluginStageExecutionWatcher();
- PluginManager.getInstance().registerReloadable(watcher);
- REIRuntimeImpl.getInstance().addHintProvider(watcher);
- REIRuntimeImpl.getInstance().addHintProvider(new SearchBarHighlightWatcher());
- }
-
@Override
public void registerEntryTypes(EntryTypeRegistry registry) {
registry.register(VanillaEntryTypes.ITEM, new ItemEntryDefinition());