aboutsummaryrefslogtreecommitdiff
path: root/fabric/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-05-21 20:29:08 +0800
committershedaniel <daniel@shedaniel.me>2022-05-21 20:29:08 +0800
commita4884f1e31083a05b48ea238ce8792842e691444 (patch)
tree5284d9cc68d5d21f74a6dc84f8004d42061c8831 /fabric/src
parente48b5b7a9eec72fcaf202d1ffe53765da6aad503 (diff)
parent8589dfa9b7e382c2eff22bb1c5bea5d7759007d5 (diff)
downloadRoughlyEnoughItems-a4884f1e31083a05b48ea238ce8792842e691444.tar.gz
RoughlyEnoughItems-a4884f1e31083a05b48ea238ce8792842e691444.tar.bz2
RoughlyEnoughItems-a4884f1e31083a05b48ea238ce8792842e691444.zip
Merge remote-tracking branch 'origin/8.x-1.18.2' into 9.x-1.19
# Conflicts: # gradle.properties # runtime/src/main/java/me/shedaniel/rei/impl/client/entry/filtering/rules/SearchFilteringRule.java # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/InternalWidgets.java # runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
Diffstat (limited to 'fabric/src')
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java49
-rw-r--r--fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java4
-rw-r--r--fabric/src/main/resources/fabric.mod.json6
3 files changed, 43 insertions, 16 deletions
diff --git a/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java b/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java
index 71918bc0c..b42404dbf 100644
--- a/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java
+++ b/fabric/src/main/java/me/shedaniel/rei/fabric/PluginDetectorImpl.java
@@ -24,7 +24,8 @@
package me.shedaniel.rei.fabric;
import com.google.common.base.Suppliers;
-import com.google.common.collect.Iterables;
+import dev.architectury.platform.Platform;
+import dev.architectury.utils.Env;
import me.shedaniel.rei.RoughlyEnoughItemsInitializer;
import me.shedaniel.rei.RoughlyEnoughItemsState;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
@@ -37,27 +38,49 @@ import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
+import org.apache.commons.lang3.tuple.Pair;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.List;
+import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
public class PluginDetectorImpl {
private static <P extends REIPlugin<?>> void loadPlugin(Class<? extends P> pluginClass, Consumer<? super REIPluginProvider<P>> consumer) {
+ Map<String, Env> entrypoints = new LinkedHashMap<>();
+ entrypoints.put("rei_server", Env.SERVER);
+ entrypoints.put("rei_common", null);
+ entrypoints.put("rei", null);
+ entrypoints.put("rei_client", Env.CLIENT);
+ Set<String> deprecatedEntrypoints = new LinkedHashSet<>(Arrays.asList(
+ "rei_containers",
+ "rei_plugins",
+ "rei_plugins_v0",
+ "rei"
+ ));
+ List<Pair<EntrypointContainer<REIPluginProvider>, String>> containers = Stream.concat(entrypoints.entrySet().stream()
+ .filter(entry -> entry.getValue() == null || Platform.getEnvironment() == entry.getValue())
+ .map(Map.Entry::getKey)
+ , deprecatedEntrypoints.stream())
+ .distinct()
+ .flatMap(name -> FabricLoader.getInstance().getEntrypointContainers(name, REIPluginProvider.class)
+ .stream()
+ .map(container -> Pair.of(container, name)))
+ .collect(Collectors.toList());
+
out:
- for (EntrypointContainer<REIPluginProvider> container : Iterables.concat(
- FabricLoader.getInstance().getEntrypointContainers("rei_containers", REIPluginProvider.class),
- FabricLoader.getInstance().getEntrypointContainers("rei_server", REIPluginProvider.class),
- FabricLoader.getInstance().getEntrypointContainers("rei", REIPluginProvider.class),
- FabricLoader.getInstance().getEntrypointContainers("rei_common", REIPluginProvider.class),
- FabricLoader.getInstance().getEntrypointContainers("rei_plugins", REIPluginProvider.class),
- FabricLoader.getInstance().getEntrypointContainers("rei_plugins_v0", REIPluginProvider.class)
- )) {
+ for (Pair<EntrypointContainer<REIPluginProvider>, String> pair : containers) {
+ EntrypointContainer<REIPluginProvider> container = pair.getLeft();
+ String name = pair.getRight();
try {
+ if (deprecatedEntrypoints.contains(name)) {
+ RoughlyEnoughItemsState.LOGGER.warn("The entrypoint used by %s, \"%s\" is deprecated and will be removed in a future version of Roughly Enough Items. Please use \"rei_server\", \"rei_client\" or \"rei_common\" instead.".formatted(container.getProvider().getMetadata().getName(), name));
+ }
+
REIPluginProvider<P> plugin = container.getEntrypoint();
if (pluginClass.isAssignableFrom(plugin.getPluginProviderClass())) {
consumer.accept(new REIPluginProvider<>() {
@@ -80,8 +103,10 @@ public class PluginDetectorImpl {
} catch (Throwable t) {
Throwable throwable = t;
while (throwable != null) {
- if (throwable.getMessage() != null && throwable.getMessage().contains("environment type SERVER") && !RoughlyEnoughItemsInitializer.isClient())
+ if (throwable.getMessage() != null && throwable.getMessage().contains("environment type SERVER") && !RoughlyEnoughItemsInitializer.isClient()) {
+ RoughlyEnoughItemsState.LOGGER.warn("Rerached side issue when loading REI plugin by %s. Please use \"rei_server\", \"rei_client\" or \"rei_common\" instead.".formatted(container.getProvider().getMetadata().getName()));
continue out;
+ }
throwable = throwable.getCause();
}
String error = "Could not create REI Plugin [" + getSimpleName(pluginClass) + "] due to errors, provided by '" + container.getProvider().getMetadata().getId() + "'!";
diff --git a/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java
index af5ec69a7..b3bf9196b 100644
--- a/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java
+++ b/fabric/src/main/java/me/shedaniel/rei/fabric/RoughlyEnoughItemsInitializerImpl.java
@@ -59,13 +59,13 @@ public class RoughlyEnoughItemsInitializerImpl {
}
}
if (!FabricLoader.getInstance().isModLoaded("architectury")) {
- RoughlyEnoughItemsState.error("Architectury API is not installed!", "https://www.curseforge.com/minecraft/mc-mods/architectury-fabric/files/all");
+ RoughlyEnoughItemsState.error("Architectury API is not installed!", "https://www.curseforge.com/minecraft/mc-mods/architectury-forge/files/all");
} else {
Version version = FabricLoader.getInstance().getModContainer("architectury").get().getMetadata().getVersion();
try {
if (version instanceof SemanticVersion && SemanticVersion.parse("2.6.0").compareTo((SemanticVersion) version) > 0) {
- RoughlyEnoughItemsState.error("Architectury API is too old, please update!", "https://www.curseforge.com/minecraft/mc-mods/architectury-fabric/files/all");
+ RoughlyEnoughItemsState.error("Architectury API is too old, please update!", "https://www.curseforge.com/minecraft/mc-mods/architectury-forge/files/all");
}
} catch (VersionParsingException e) {
e.printStackTrace();
diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json
index c87c50dc3..5e7935df2 100644
--- a/fabric/src/main/resources/fabric.mod.json
+++ b/fabric/src/main/resources/fabric.mod.json
@@ -22,9 +22,11 @@
"me.shedaniel.rei.fabric.RoughlyEnoughItemsFabric",
"me.shedaniel.rei.RoughlyEnoughItemsInitializer::onInitializeClient"
],
- "rei": [
+ "rei_common": [
"me.shedaniel.rei.plugin.common.DefaultPlugin",
- "me.shedaniel.rei.plugin.common.runtime.DefaultRuntimePlugin",
+ "me.shedaniel.rei.plugin.common.runtime.DefaultRuntimePlugin"
+ ],
+ "rei_client": [
"me.shedaniel.rei.plugin.client.DefaultClientPlugin",
"me.shedaniel.rei.plugin.client.runtime.DefaultClientRuntimePlugin"
]