diff options
Diffstat (limited to 'runtime/src/main/java')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java | 2 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java | 3 | ||||
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java | 14 | ||||
| -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.java | 9 |
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()); |
