diff --git a/.gitignore b/.gitignore index 9e516a5..305c8ac 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ build/ libs/ runs/ +run/ diff --git a/build.gradle b/build.gradle index 72bec27..d261297 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id("net.neoforged.gradle.userdev") version "7.0.57" + id("net.neoforged.moddev") version "2.0.30-beta" id("com.matthewprenger.cursegradle") version "1.4.0" id("com.diffplug.spotless") version "6.23.3" id("com.modrinth.minotaur") version "2.8.7" @@ -57,13 +57,15 @@ repositories { mavenLocal() } -dependencies { - implementation("net.neoforged:neoforge:${neoforge_version}") +neoForge { + version = project.neoforge_version +} +dependencies { implementation("blusunrize.immersiveengineering:ImmersiveEngineering:${minecraft_version}-${ie_version}") // We depend on many AE2 internals, such as using their basic cell drive, thus not using classifier = "api" - implementation("appeng:appliedenergistics2-neoforge:${ae2_version}") + implementation("appeng:appliedenergistics2:${ae2_version}") runtimeOnly("mekanism:Mekanism:${minecraft_version}-${mekanism_version}:all") { exclude(group: "com.blamejared.crafttweaker") @@ -100,27 +102,37 @@ sourceSets { java { toolchain { - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) } } //////////////////// // Minecraft -runs { - configureEach { - systemProperty("forge.logging.console.level", "debug") - modSource(project.sourceSets.main) +neoForge { + mods { + immeng { + sourceSet sourceSets.main + } } - client { - } + runs { + configureEach { + systemProperty("forge.logging.console.level", "debug") + } - server { - programArgument '--nogui' - } + client { + client() + } - data { - programArguments.addAll "--mod", "immeng", "--all", "--output", file("src/generated/resources/").getAbsolutePath(), "--existing", file("src/main/resources/").getAbsolutePath() + server { + server() + programArgument '--nogui' + } + + data { + data() + programArguments.addAll "--mod", "immeng", "--all", "--output", file("src/generated/resources/").getAbsolutePath(), "--existing", file("src/main/resources/").getAbsolutePath() + } } } @@ -142,7 +154,7 @@ tasks.withType(ProcessResources).configureEach { ] inputs.properties(replaceProperties) - filesMatching(["META-INF/mods.toml"]) { + filesMatching(["META-INF/neoforge.mods.toml"]) { expand replaceProperties } } diff --git a/gradle.properties b/gradle.properties index f7bc4a5..191aafd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,11 @@ -minecraft_version=1.20.4 -neoforge_version=20.4.209 -ie_version=10.0.1-pre.198 -ae2_version=17.10.4-beta -mekanism_version=10.5.0.22 -jei_version=17.0.0.30 -emi_version=1.1.0 -jade_id=4980188 +minecraft_version=1.21.1 +neoforge_version=21.1.51 +ie_version=11.6.1-181 +ae2_version=19.0.23-beta +mekanism_version=10.7.7.64 +jei_version=19.18.3.204 +emi_version=1.1.13 +jade_id=5727431 # Dev runtime options ## Set to "jei" or "emi" to pick which tooltip mod gets picked at runtime @@ -13,9 +13,9 @@ jade_id=4980188 runtime_itemlist_mod=emi loader_version_range=[2,) -neo_version_range=[20.4.209,) -ae2_version_range=[17.10.4-beta,18.0.0) -ie_version_range=[10,) +neo_version_range=[21.1.51,) +ae2_version_range=[19.0.23-beta,20.0.0) +ie_version_range=[11,) org.gradle.caching=true org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c1962a7..a4b76b9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c30b486..9355b41 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index aeb74cb..f5feea6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -83,7 +85,9 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -130,10 +134,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -141,7 +148,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -149,7 +156,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -198,11 +205,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 93e3f59..9d21a21 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -43,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/src/generated/resources/data/immeng/advancements/recipes/misc/connector_me.json b/src/generated/resources/data/immeng/advancement/recipes/misc/connector_me.json similarity index 87% rename from src/generated/resources/data/immeng/advancements/recipes/misc/connector_me.json rename to src/generated/resources/data/immeng/advancement/recipes/misc/connector_me.json index b267473..aca38de 100644 --- a/src/generated/resources/data/immeng/advancements/recipes/misc/connector_me.json +++ b/src/generated/resources/data/immeng/advancement/recipes/misc/connector_me.json @@ -5,9 +5,7 @@ "conditions": { "items": [ { - "items": [ - "ae2:fluix_crystal" - ] + "items": "ae2:fluix_crystal" } ] }, diff --git a/src/generated/resources/data/immeng/advancements/recipes/misc/connector_me_relay.json b/src/generated/resources/data/immeng/advancement/recipes/misc/connector_me_relay.json similarity index 88% rename from src/generated/resources/data/immeng/advancements/recipes/misc/connector_me_relay.json rename to src/generated/resources/data/immeng/advancement/recipes/misc/connector_me_relay.json index 05b1950..58dbd63 100644 --- a/src/generated/resources/data/immeng/advancements/recipes/misc/connector_me_relay.json +++ b/src/generated/resources/data/immeng/advancement/recipes/misc/connector_me_relay.json @@ -5,9 +5,7 @@ "conditions": { "items": [ { - "items": [ - "ae2:fluix_crystal" - ] + "items": "ae2:fluix_crystal" } ] }, diff --git a/src/generated/resources/data/immeng/advancements/recipes/misc/wirecoil_me.json b/src/generated/resources/data/immeng/advancement/recipes/misc/wirecoil_me.json similarity index 87% rename from src/generated/resources/data/immeng/advancements/recipes/misc/wirecoil_me.json rename to src/generated/resources/data/immeng/advancement/recipes/misc/wirecoil_me.json index 091e56f..8946557 100644 --- a/src/generated/resources/data/immeng/advancements/recipes/misc/wirecoil_me.json +++ b/src/generated/resources/data/immeng/advancement/recipes/misc/wirecoil_me.json @@ -5,9 +5,7 @@ "conditions": { "items": [ { - "items": [ - "ae2:fluix_glass_cable" - ] + "items": "ae2:fluix_glass_cable" } ] }, diff --git a/src/generated/resources/data/immeng/advancements/recipes/misc/wirecoil_me_dense.json b/src/generated/resources/data/immeng/advancement/recipes/misc/wirecoil_me_dense.json similarity index 86% rename from src/generated/resources/data/immeng/advancements/recipes/misc/wirecoil_me_dense.json rename to src/generated/resources/data/immeng/advancement/recipes/misc/wirecoil_me_dense.json index 1e07a7c..6f8e014 100644 --- a/src/generated/resources/data/immeng/advancements/recipes/misc/wirecoil_me_dense.json +++ b/src/generated/resources/data/immeng/advancement/recipes/misc/wirecoil_me_dense.json @@ -5,9 +5,7 @@ "conditions": { "items": [ { - "items": [ - "ae2:fluix_covered_dense_cable" - ] + "items": "ae2:fluix_covered_dense_cable" } ] }, diff --git a/src/generated/resources/data/immeng/loot_tables/blocks/connector_me.json b/src/generated/resources/data/immeng/loot_table/blocks/connector_me.json similarity index 100% rename from src/generated/resources/data/immeng/loot_tables/blocks/connector_me.json rename to src/generated/resources/data/immeng/loot_table/blocks/connector_me.json diff --git a/src/generated/resources/data/immeng/loot_tables/blocks/connector_me_relay.json b/src/generated/resources/data/immeng/loot_table/blocks/connector_me_relay.json similarity index 100% rename from src/generated/resources/data/immeng/loot_tables/blocks/connector_me_relay.json rename to src/generated/resources/data/immeng/loot_table/blocks/connector_me_relay.json diff --git a/src/generated/resources/data/immeng/recipes/connector_me.json b/src/generated/resources/data/immeng/recipe/connector_me.json similarity index 88% rename from src/generated/resources/data/immeng/recipes/connector_me.json rename to src/generated/resources/data/immeng/recipe/connector_me.json index c5ffa3a..5af0911 100644 --- a/src/generated/resources/data/immeng/recipes/connector_me.json +++ b/src/generated/resources/data/immeng/recipe/connector_me.json @@ -16,6 +16,6 @@ ], "result": { "count": 4, - "item": "immeng:connector_me" + "id": "immeng:connector_me" } } \ No newline at end of file diff --git a/src/generated/resources/data/immeng/recipes/connector_me_relay.json b/src/generated/resources/data/immeng/recipe/connector_me_relay.json similarity index 86% rename from src/generated/resources/data/immeng/recipes/connector_me_relay.json rename to src/generated/resources/data/immeng/recipe/connector_me_relay.json index eb78d9a..7130e5d 100644 --- a/src/generated/resources/data/immeng/recipes/connector_me_relay.json +++ b/src/generated/resources/data/immeng/recipe/connector_me_relay.json @@ -15,6 +15,6 @@ ], "result": { "count": 8, - "item": "immeng:connector_me_relay" + "id": "immeng:connector_me_relay" } } \ No newline at end of file diff --git a/src/generated/resources/data/immeng/recipes/wirecoil_me.json b/src/generated/resources/data/immeng/recipe/wirecoil_me.json similarity index 78% rename from src/generated/resources/data/immeng/recipes/wirecoil_me.json rename to src/generated/resources/data/immeng/recipe/wirecoil_me.json index ca9892e..a97279d 100644 --- a/src/generated/resources/data/immeng/recipes/wirecoil_me.json +++ b/src/generated/resources/data/immeng/recipe/wirecoil_me.json @@ -6,7 +6,7 @@ "item": "ae2:fluix_glass_cable" }, "s": { - "tag": "forge:rods/wooden" + "tag": "c:rods/wooden" } }, "pattern": [ @@ -16,6 +16,6 @@ ], "result": { "count": 4, - "item": "immeng:wirecoil_me" + "id": "immeng:wirecoil_me" } } \ No newline at end of file diff --git a/src/generated/resources/data/immeng/recipes/wirecoil_me_dense.json b/src/generated/resources/data/immeng/recipe/wirecoil_me_dense.json similarity index 77% rename from src/generated/resources/data/immeng/recipes/wirecoil_me_dense.json rename to src/generated/resources/data/immeng/recipe/wirecoil_me_dense.json index 9c6a36a..eece7f3 100644 --- a/src/generated/resources/data/immeng/recipes/wirecoil_me_dense.json +++ b/src/generated/resources/data/immeng/recipe/wirecoil_me_dense.json @@ -6,7 +6,7 @@ "item": "ae2:fluix_covered_dense_cable" }, "s": { - "tag": "forge:rods/wooden" + "tag": "c:rods/wooden" } }, "pattern": [ @@ -16,6 +16,6 @@ ], "result": { "count": 4, - "item": "immeng:wirecoil_me_dense" + "id": "immeng:wirecoil_me_dense" } } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json similarity index 100% rename from src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json rename to src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json diff --git a/src/main/java/dev/technici4n/immeng/ImmEng.java b/src/main/java/dev/technici4n/immeng/ImmEng.java index 580a3c8..ec85d6c 100644 --- a/src/main/java/dev/technici4n/immeng/ImmEng.java +++ b/src/main/java/dev/technici4n/immeng/ImmEng.java @@ -3,9 +3,6 @@ import java.util.List; import java.util.Set; -import org.jetbrains.annotations.Nullable; - -import net.minecraft.core.Direction; import net.minecraft.core.registries.Registries; import net.minecraft.data.loot.LootTableProvider; import net.minecraft.resources.ResourceLocation; @@ -14,7 +11,6 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.common.Mod; -import net.neoforged.neoforge.capabilities.BlockCapability; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.data.event.GatherDataEvent; import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent; @@ -31,16 +27,15 @@ import dev.technici4n.immeng.data.ImmEngRecipes; import dev.technici4n.immeng.data.ImmEngStatesProvider; -import appeng.api.ids.AEConstants; +import appeng.api.AECapabilities; import appeng.api.ids.AECreativeTabIds; -import appeng.api.networking.IInWorldGridNodeHost; @Mod(ImmEng.ID) public class ImmEng { public static final String ID = "immeng"; public static ResourceLocation id(String path) { - return new ResourceLocation(ID, path); + return ResourceLocation.fromNamespaceAndPath(ID, path); } public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(ID); @@ -72,9 +67,6 @@ public static ResourceLocation id(String path) { .register("connector_me_relay", () -> BlockEntityType.Builder.of(MEConnectorBlockEntity::new, ME_RELAY.get()).build(null)); - public static final BlockCapability IN_WORLD_GRID_NODE_HOST = BlockCapability - .createSided(new ResourceLocation(AEConstants.MOD_ID, "inworld_gridnode_host"), IInWorldGridNodeHost.class); - public ImmEng(IEventBus modEventBus) { BLOCKS.register(modEventBus); ITEMS.register(modEventBus); @@ -87,7 +79,7 @@ public ImmEng(IEventBus modEventBus) { modEventBus.addListener(ImmEng::initDatagen); modEventBus.addListener((RegisterCapabilitiesEvent event) -> { - event.registerBlockEntity(IN_WORLD_GRID_NODE_HOST, ME_CONNECTOR_BE.get(), (be, side) -> be); + event.registerBlockEntity(AECapabilities.IN_WORLD_GRID_NODE_HOST, ME_CONNECTOR_BE.get(), (be, side) -> be); }); modEventBus.addListener((BuildCreativeModeTabContentsEvent event) -> { @@ -106,9 +98,13 @@ private static void initDatagen(GatherDataEvent event) { gen.addProvider(event.includeClient(), new ImmEngStatesProvider(gen.getPackOutput(), event.getExistingFileHelper())); - gen.addProvider(event.includeServer(), new LootTableProvider(gen.getPackOutput(), Set.of(), List.of( - new LootTableProvider.SubProviderEntry(ImmEngBlockLoot::new, LootContextParamSets.BLOCK)))); - gen.addProvider(event.includeServer(), new ImmEngRecipes(gen.getPackOutput())); + gen.addProvider(event.includeServer(), new LootTableProvider( + gen.getPackOutput(), + Set.of(), + List.of( + new LootTableProvider.SubProviderEntry(ImmEngBlockLoot::new, LootContextParamSets.BLOCK)), + event.getLookupProvider())); + gen.addProvider(event.includeServer(), new ImmEngRecipes(gen.getPackOutput(), event.getLookupProvider())); gen.addProvider(event.includeServer(), new ImmEngBlockTags(gen.getPackOutput(), event.getLookupProvider(), event.getExistingFileHelper())); } diff --git a/src/main/java/dev/technici4n/immeng/MEConnectorBlockEntity.java b/src/main/java/dev/technici4n/immeng/MEConnectorBlockEntity.java index 13b8da9..898619e 100644 --- a/src/main/java/dev/technici4n/immeng/MEConnectorBlockEntity.java +++ b/src/main/java/dev/technici4n/immeng/MEConnectorBlockEntity.java @@ -13,6 +13,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -128,8 +129,8 @@ public boolean mirrorFacingOnPlacement(LivingEntity placer) { } @Override - public void load(CompoundTag nbtIn) { - super.load(nbtIn); + public void loadAdditional(CompoundTag nbtIn, HolderLookup.Provider registries) { + super.loadAdditional(nbtIn, registries); this.gridNode.loadFromNBT(nbtIn); @@ -144,8 +145,8 @@ public void load(CompoundTag nbtIn) { } @Override - protected void saveAdditional(CompoundTag nbt) { - super.saveAdditional(nbt); + protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registries) { + super.saveAdditional(nbt, registries); this.gridNode.saveToNBT(nbt); diff --git a/src/main/java/dev/technici4n/immeng/data/ImmEngBlockLoot.java b/src/main/java/dev/technici4n/immeng/data/ImmEngBlockLoot.java index 905102e..7478d05 100644 --- a/src/main/java/dev/technici4n/immeng/data/ImmEngBlockLoot.java +++ b/src/main/java/dev/technici4n/immeng/data/ImmEngBlockLoot.java @@ -4,6 +4,7 @@ import com.google.common.collect.Iterables; +import net.minecraft.core.HolderLookup; import net.minecraft.data.loot.BlockLootSubProvider; import net.minecraft.world.flag.FeatureFlags; import net.minecraft.world.level.block.Block; @@ -12,8 +13,8 @@ import dev.technici4n.immeng.ImmEng; public class ImmEngBlockLoot extends BlockLootSubProvider { - public ImmEngBlockLoot() { - super(Set.of(), FeatureFlags.VANILLA_SET); + public ImmEngBlockLoot(HolderLookup.Provider registries) { + super(Set.of(), FeatureFlags.VANILLA_SET, registries); } @Override diff --git a/src/main/java/dev/technici4n/immeng/data/ImmEngRecipes.java b/src/main/java/dev/technici4n/immeng/data/ImmEngRecipes.java index b4dcc03..dedade0 100644 --- a/src/main/java/dev/technici4n/immeng/data/ImmEngRecipes.java +++ b/src/main/java/dev/technici4n/immeng/data/ImmEngRecipes.java @@ -1,5 +1,8 @@ package dev.technici4n.immeng.data; +import java.util.concurrent.CompletableFuture; + +import net.minecraft.core.HolderLookup; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.RecipeCategory; @@ -16,8 +19,8 @@ import appeng.api.ids.AEPartIds; public class ImmEngRecipes extends RecipeProvider implements IConditionBuilder { - public ImmEngRecipes(PackOutput packOutput) { - super(packOutput); + public ImmEngRecipes(PackOutput packOutput, CompletableFuture registries) { + super(packOutput, registries); } @Override diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/neoforge.mods.toml similarity index 100% rename from src/main/resources/META-INF/mods.toml rename to src/main/resources/META-INF/neoforge.mods.toml