aboutsummaryrefslogtreecommitdiff
path: root/forge
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-10-28 15:12:18 +0800
committershedaniel <daniel@shedaniel.me>2021-10-28 15:12:18 +0800
commit6b44b3e633e009d9d3fdedfa02b46db34dd5b1ae (patch)
treed00eaeabc27639a717593d0613c7a381fb341eb9 /forge
parente3eebe08fac49d1924670565bc4e34b151ef395d (diff)
parentb68e07108e21e4f1f231dfccac6c095c22b9a695 (diff)
downloadRoughlyEnoughItems-6b44b3e633e009d9d3fdedfa02b46db34dd5b1ae.tar.gz
RoughlyEnoughItems-6b44b3e633e009d9d3fdedfa02b46db34dd5b1ae.tar.bz2
RoughlyEnoughItems-6b44b3e633e009d9d3fdedfa02b46db34dd5b1ae.zip
Merge remote-tracking branch 'origin/6.x-1.17' into 7.x-1.18
# Conflicts: # gradle.properties # settings.gradle
Diffstat (limited to 'forge')
-rw-r--r--forge/build.gradle16
-rw-r--r--forge/src/main/java/me/shedaniel/rei/forge/PluginDetectorImpl.java12
-rw-r--r--forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsForge.java21
-rw-r--r--forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java5
-rw-r--r--forge/src/main/java/me/shedaniel/rei/impl/client/forge/ErrorDisplayerImpl.java24
-rw-r--r--forge/src/main/resources/META-INF/mods.toml4
6 files changed, 58 insertions, 24 deletions
diff --git a/forge/build.gradle b/forge/build.gradle
index 94be9b025..251f6fd54 100644
--- a/forge/build.gradle
+++ b/forge/build.gradle
@@ -37,13 +37,15 @@ repositories {
loom {
launches {
all {
- // arg "--mixin", "rei-jei-internals-workaround.mixins.json"
+ arg "--mixin", "rei-jei-internals-workaround.mixins.json"
}
}
forge {
localMods {
- // it.add(project(":jei-internals-workaround").sourceSets.main)
+ jeiInternalsWorkaround {
+ add(project(":jei-internals-workaround").sourceSets.main)
+ }
}
}
}
@@ -57,7 +59,7 @@ dependencies {
common(project(path: ":jei-compatibility-layer", configuration: "dev")) { transitive false }
shadowCommon(project(path: ":jei-compatibility-layer", configuration: "dev")) { transitive false }
- // common(project(path: ":jei-internals-workaround")) { transitive = false }
+ runtimeClasspath(project(path: ":jei-internals-workaround", configuration: "dev")) { transitive = false }
depProjects.forEach {
common(project(path: it, configuration: "dev")) { transitive false }
@@ -82,6 +84,13 @@ dependencies {
// modRuntime("curse.maven:jep-417645:3198370")
// modRuntime("curse.maven:simple-storage-network-268495:3257204")
// modRuntime("curse.maven:create-328085:3278516")
+ // modRuntime("curse.maven:industrial-foregoing-266515:3446262")
+ // modRuntime("curse.maven:titanium-287342:3346366")
+ // modRuntime("curse.maven:extended-crafting-268387:3470453")
+ // modRuntime("curse.maven:cucumber-272335:3349690")
+ // modRuntime("curse.maven:crafttweaker-239197:3494644")
+ // modRuntime("curse.maven:jeitweaker-368718:3468722")
+ modRuntime("curse.maven:eidolon-429625:3157832")
}
shadowJar {
@@ -157,6 +166,7 @@ curseforge {
relations {
requiredDependency "architectury-forge"
requiredDependency "cloth-config-forge"
+ requiredDependency "roughly-enough-items-hacks"
}
mainArtifact(tasks.getByName("remapJar")) {
displayName = "[Forge $project.supported_version] v$project.version"
diff --git a/forge/src/main/java/me/shedaniel/rei/forge/PluginDetectorImpl.java b/forge/src/main/java/me/shedaniel/rei/forge/PluginDetectorImpl.java
index cc7ea594d..aace5aa12 100644
--- a/forge/src/main/java/me/shedaniel/rei/forge/PluginDetectorImpl.java
+++ b/forge/src/main/java/me/shedaniel/rei/forge/PluginDetectorImpl.java
@@ -40,12 +40,12 @@ import me.shedaniel.rei.plugin.common.runtime.DefaultRuntimePlugin;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
+import org.apache.logging.log4j.util.TriConsumer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.function.BiConsumer;
import java.util.function.Supplier;
public class PluginDetectorImpl {
@@ -74,14 +74,14 @@ public class PluginDetectorImpl {
PluginView.getServerInstance().registerPlugin(wrapPlugin(Collections.singletonList("roughlyenoughitems"), new DefaultPlugin()));
PluginView.getServerInstance().registerPlugin(wrapPlugin(Collections.singletonList("roughlyenoughitems"), new DefaultRuntimePlugin()));
PluginView.getServerInstance().registerPlugin(wrapPlugin(Collections.singletonList("roughlyenoughitems"), new JEIExtraPlugin()));
- RoughlyEnoughItemsForge.<REIPlugin, REIServerPlugin>scanAnnotation(REIPlugin.class, REIServerPlugin.class::isAssignableFrom, (modId, plugin) -> {
+ RoughlyEnoughItemsForge.<REIPlugin, REIServerPlugin>scanAnnotation(REIPlugin.class, REIServerPlugin.class::isAssignableFrom, (modId, plugin, clazz) -> {
((PluginView<REIServerPlugin>) PluginManager.getServerInstance()).registerPlugin(wrapPlugin(modId, plugin.get()));
});
}
public static void detectCommonPlugins() {
EventBuses.registerModEventBus("roughlyenoughitems", FMLJavaModLoadingContext.get().getModEventBus());
- RoughlyEnoughItemsForge.<REIPlugin, me.shedaniel.rei.api.common.plugins.REIPlugin<?>>scanAnnotation(REIPlugin.class, me.shedaniel.rei.api.common.plugins.REIPlugin.class::isAssignableFrom, (modId, plugin) -> {
+ RoughlyEnoughItemsForge.<REIPlugin, me.shedaniel.rei.api.common.plugins.REIPlugin<?>>scanAnnotation(REIPlugin.class, me.shedaniel.rei.api.common.plugins.REIPlugin.class::isAssignableFrom, (modId, plugin, clazz) -> {
((PluginView) PluginManager.getInstance()).registerPlugin(wrapPlugin(modId, plugin.get()));
});
}
@@ -91,7 +91,7 @@ public class PluginDetectorImpl {
PluginView.getClientInstance().registerPlugin(wrapPlugin(Collections.singletonList("roughlyenoughitems"), new DefaultClientPlugin()));
PluginView.getClientInstance().registerPlugin(wrapPlugin(Collections.singletonList("roughlyenoughitems"), new DefaultClientRuntimePlugin()));
PluginView.getClientInstance().registerPlugin(wrapPlugin(Collections.singletonList("roughlyenoughitems"), new JEIExtraClientPlugin()));
- RoughlyEnoughItemsForge.<REIPlugin, REIClientPlugin>scanAnnotation(REIPlugin.class, REIClientPlugin.class::isAssignableFrom, (modId, plugin) -> {
+ RoughlyEnoughItemsForge.<REIPlugin, REIClientPlugin>scanAnnotation(REIPlugin.class, REIClientPlugin.class::isAssignableFrom, (modId, plugin, clazz) -> {
((PluginView<REIClientPlugin>) PluginManager.getClientInstance()).registerPlugin(wrapPlugin(modId, plugin.get()));
});
ClientInternals.attachInstance((Supplier<List<String>>) () -> {
@@ -103,7 +103,7 @@ public class PluginDetectorImpl {
}
return modIds;
}, "jeiCompatMods");
- JEIPluginDetector.detect((aClass, consumer) -> RoughlyEnoughItemsForge.scanAnnotation((Class<Object>) aClass, clazz -> true,
- (BiConsumer<List<String>, Supplier<Object>>) (BiConsumer) consumer), PluginView.getClientInstance()::registerPlugin);
+ JEIPluginDetector.detect((aClass, consumer) -> RoughlyEnoughItemsForge.scanAnnotation((Class<Object>) aClass, c -> true,
+ (TriConsumer<List<String>, Supplier<Object>, Class<Object>>) (TriConsumer) consumer), PluginView.getClientInstance()::registerPlugin);
}
}
diff --git a/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsForge.java b/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsForge.java
index db5da78bd..dd5824c70 100644
--- a/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsForge.java
+++ b/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsForge.java
@@ -31,16 +31,15 @@ import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.forgespi.language.IModInfo;
import net.minecraftforge.forgespi.language.ModFileScanData;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.commons.lang3.tuple.Pair;
+import org.apache.commons.lang3.tuple.ImmutableTriple;
+import org.apache.commons.lang3.tuple.Triple;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.util.TriConsumer;
import org.jetbrains.annotations.ApiStatus;
import org.objectweb.asm.Type;
-import java.lang.reflect.InvocationTargetException;
import java.util.List;
-import java.util.function.BiConsumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@@ -55,12 +54,12 @@ public class RoughlyEnoughItemsForge {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> RoughlyEnoughItemsInitializer::onInitializeClient);
}
- public static <A, T> void scanAnnotation(Class<A> clazz, Predicate<Class<T>> predicate, BiConsumer<List<String>, Supplier<T>> consumer) {
+ public static <A, T> void scanAnnotation(Class<A> clazz, Predicate<Class<T>> predicate, TriConsumer<List<String>, Supplier<T>, Class<T>> consumer) {
scanAnnotation(Type.getType(clazz), predicate, consumer);
}
- public static <T> void scanAnnotation(Type annotationType, Predicate<Class<T>> predicate, BiConsumer<List<String>, Supplier<T>> consumer) {
- List<Pair<List<String>, Supplier<T>>> instances = Lists.newArrayList();
+ public static <T> void scanAnnotation(Type annotationType, Predicate<Class<T>> predicate, TriConsumer<List<String>, Supplier<T>, Class<T>> consumer) {
+ List<Triple<List<String>, Supplier<T>, Class<T>>> instances = Lists.newArrayList();
for (ModFileScanData data : ModList.get().getAllScanData()) {
List<String> modIds = data.getIModInfoData().stream()
.flatMap(info -> info.getMods().stream())
@@ -71,14 +70,14 @@ public class RoughlyEnoughItemsForge {
try {
Class<T> clazz = (Class<T>) Class.forName(annotation.memberName());
if (predicate.test(clazz)) {
- instances.add(new ImmutablePair<>(modIds, () -> {
+ instances.add(new ImmutableTriple<>(modIds, () -> {
try {
return clazz.getDeclaredConstructor().newInstance();
} catch (Throwable throwable) {
LOGGER.error("Failed to load plugin: " + annotation.memberName(), throwable);
return null;
}
- }));
+ }, clazz));
}
} catch (Throwable throwable) {
LOGGER.error("Failed to load plugin: " + annotation.memberName(), throwable);
@@ -87,8 +86,8 @@ public class RoughlyEnoughItemsForge {
}
}
- for (Pair<List<String>, Supplier<T>> pair : instances) {
- consumer.accept(pair.getLeft(), pair.getRight());
+ for (Triple<List<String>, Supplier<T>, Class<T>> pair : instances) {
+ consumer.accept(pair.getLeft(), pair.getMiddle(), pair.getRight());
}
}
}
diff --git a/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java b/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java
index 6baa7fd5c..868b10af5 100644
--- a/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java
+++ b/forge/src/main/java/me/shedaniel/rei/forge/RoughlyEnoughItemsInitializerImpl.java
@@ -23,7 +23,9 @@
package me.shedaniel.rei.forge;
+import me.shedaniel.rei.RoughlyEnoughItemsState;
import net.minecraftforge.api.distmarker.Dist;
+import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.loading.FMLEnvironment;
import net.minecraftforge.fml.loading.FMLLoader;
@@ -33,6 +35,9 @@ public class RoughlyEnoughItemsInitializerImpl {
}
public static void checkMods() {
+ if (ModList.get().isLoaded("moreoverlays")) {
+ RoughlyEnoughItemsState.error("REI is not compatible with MoreOverlays, and actually contains Builtin Inventory Highlighting, other features can be installed via different mods!");
+ }
}
public static boolean isDev() {
diff --git a/forge/src/main/java/me/shedaniel/rei/impl/client/forge/ErrorDisplayerImpl.java b/forge/src/main/java/me/shedaniel/rei/impl/client/forge/ErrorDisplayerImpl.java
index 5186c7884..0af11b1c0 100644
--- a/forge/src/main/java/me/shedaniel/rei/impl/client/forge/ErrorDisplayerImpl.java
+++ b/forge/src/main/java/me/shedaniel/rei/impl/client/forge/ErrorDisplayerImpl.java
@@ -24,10 +24,30 @@
package me.shedaniel.rei.impl.client.forge;
import net.minecraft.client.gui.screens.Screen;
+import net.minecraftforge.client.event.GuiOpenEvent;
+import net.minecraftforge.common.MinecraftForge;
-import java.util.function.Consumer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.UnaryOperator;
public class ErrorDisplayerImpl {
- public static void registerGuiInit(Consumer<Screen> consumer) {
+ private static final List<UnaryOperator<Screen>> CONSUMERS = new ArrayList<>();
+
+ static {
+ MinecraftForge.EVENT_BUS.addListener(ErrorDisplayerImpl::onGuiOpen);
+ }
+
+ public static void registerGuiInit(UnaryOperator<Screen> consumer) {
+ CONSUMERS.add(consumer);
+ }
+
+ public static void onGuiOpen(GuiOpenEvent event) {
+ for (UnaryOperator<Screen> consumer : CONSUMERS) {
+ Screen screen = consumer.apply(event.getGui());
+ if (screen != null) {
+ event.setGui(screen);
+ }
+ }
}
}
diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml
index 1a89466fd..ba695b27f 100644
--- a/forge/src/main/resources/META-INF/mods.toml
+++ b/forge/src/main/resources/META-INF/mods.toml
@@ -8,14 +8,14 @@ license = "MIT"
[[mods]]
modId = "roughlyenoughitems"
version = "${version}"
-displayName = "Roughly Enough Items"
+displayName = "Roughly Enough Items (REI)"
description = '''
To allow players to view items and recipes.
'''
[[mods]]
modId = "jei"
-version = "7.9999"
+version = "8.9999"
displayName = "Roughly Enough Items (JEI Stub)"
description = '''
To allow players to view items and recipes.