diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1de86f9..36f0e9d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,4 +6,4 @@ jobs: build: uses: constellation-mc/actions/.github/workflows/gradle-build.yml@main with: - java: 21 + java: 17 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 31aa8cd..5cc4533 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,6 +18,6 @@ jobs: publish: uses: constellation-mc/actions/.github/workflows/mc-publish.yml@main with: - java: 21 + java: 17 version_type: ${{ inputs.version_type }} secrets: inherit \ No newline at end of file diff --git a/build.gradle b/build.gradle index 34ae6d0..4568008 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ import me.modmuss50.mpp.ReleaseType plugins { - alias libs.plugins.fabric.loom + alias libs.plugins.neoforge.legacyforge id 'maven-publish' alias libs.plugins.lombok alias libs.plugins.spotless @@ -19,15 +19,55 @@ base { } repositories { + exclusiveContent { + forRepository { + maven { + name = 'ParchmentMC' + url = 'https://maven.parchmentmc.org' + } + } + filter { includeGroup('org.parchmentmc.data') } + } mavenCentral() } +mixin { + add(sourceSets.main, "${mod_id}.refmap.json") + + config("${mod_id}.mixins.json") +} + +legacyForge { + version = "${minecraft_version}-${libs.forge.get().version}" + + mods { + "${mod_id}" { + sourceSet sourceSets.main + } + } + + runs { + server { + server() + gameDirectory = file("run/server") + loadedMods = [mods."${mod_id}"] + } + client { + client() + gameDirectory = file("run/client") + loadedMods = [mods."${mod_id}"] + } + } +} + dependencies { - // To change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings loom.officialMojangMappings() - modImplementation libs.fabric.loader - modImplementation libs.fabric.api + var mixin = libs.mixin.asProvider().get() + annotationProcessor("${mixin.group}:${mixin.name}:${mixin.version}:processor") + + annotationProcessor(libs.mixin.extras.common) + compileOnly(libs.mixin.extras.common) + jarJar(libs.mixin.extras.forge) + implementation(libs.mixin.extras.forge) } spotless { @@ -39,22 +79,17 @@ spotless { } } -loom.mods.register(mod_id) { - sourceSet project.sourceSets.main -} - processResources { def map = [ "version": project.version, "mod_id": mod_id, "minecraft_version": minecraft_version, - "loader_version": libs.fabric.loader.get().version, - "fabric_version": libs.fabric.api.get().version + "forge_version": libs.forge.get().version ] inputs.properties(map) filteringCharset "UTF-8" - filesMatching("fabric.mod.json") { + filesMatching(["META-INF/mods.toml"]) { expand map } } @@ -117,13 +152,13 @@ publishing { } publishMods { - file = remapJar.archiveFile - additionalFiles.from(remapSourcesJar.archiveFile) + file = jar.archiveFile + additionalFiles.from(sourcesJar.archiveFile) version = "${mod_version}+mc${minecraft_version}+${loader_id}" changelog = file("CHANGELOG.md").text type = ReleaseType.valueOf(providers.environmentVariable("VERSION_TYPE").getOrElse("BETA")) - modLoaders.add("fabric") + modLoaders.add(loader_id) displayName = "${project.mod_version} (${project.minecraft_version})" @@ -131,20 +166,16 @@ publishMods { projectId = "etNS9OnA" accessToken = providers.environmentVariable("MODRINTH_TOKEN") minecraftVersions.add("${project.minecraft_version}") - - requires("fabric-api") } curseforge { projectId = "643246" accessToken = providers.environmentVariable("CURSEFORGE_TOKEN") minecraftVersions.add("${project.minecraft_version}") - - requires("fabric-api") } github { repository = "constellation-mc/rbip" accessToken = providers.environmentVariable("GITHUB_TOKEN") - commitish = providers.environmentVariable("GITHUB_SHA").getOrElse("${project.minecraft_version}-fabric") + commitish = providers.environmentVariable("GITHUB_SHA").getOrElse("${project.minecraft_version}-${loader_id}") type = STABLE } diff --git a/gradle.properties b/gradle.properties index 6466133..8ea6382 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,5 +6,5 @@ java_version=17 mod_id=rbip mod_version=1.0.2 -loader_id=fabric +loader_id=forge minecraft_version=1.20.1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 83bfdbf..8fc7b51 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,14 @@ +[versions] +mixin-extras = "0.5.4" + [libraries] -fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version = "0.19.2" } -fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version = "0.92.8+1.20.1" } +mixin = { group = "org.spongepowered", name = "mixin", version = "0.8.5" } +mixin-extras-common = { group = "io.github.llamalad7", name = "mixinextras-common", version.ref = "mixin-extras" } +mixin-extras-forge = { group = "io.github.llamalad7", name = "mixinextras-forge", version.ref = "mixin-extras" } +forge = { group = "net.minecraftforge", name = "forge", version = "47.4.10" } [plugins] -fabric-loom = { id = "fabric-loom", version = "1.16.1" } +neoforge-legacyforge = { id = "net.neoforged.moddev.legacyforge", version = "2.0.141" } lombok = { id = "io.freefair.lombok", version = "9.4.0"} spotless = { id = "com.diffplug.spotless", version = "8.4.0" } modmuss50-publish = { id = "me.modmuss50.mod-publish-plugin", version = "1.1.0" } \ No newline at end of file diff --git a/src/main/java/dev/zenfyr/rbip/RecipeBookIsPain.java b/src/main/java/dev/zenfyr/rbip/RecipeBookIsPain.java index 27d3cbd..aa1e229 100644 --- a/src/main/java/dev/zenfyr/rbip/RecipeBookIsPain.java +++ b/src/main/java/dev/zenfyr/rbip/RecipeBookIsPain.java @@ -3,23 +3,26 @@ package dev.zenfyr.rbip; import dev.zenfyr.rbip.compat.OwOCompat; import dev.zenfyr.rbip.compat.PulsarCompat; import java.lang.invoke.MethodHandles; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.loader.api.FabricLoader; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -@Environment(EnvType.CLIENT) -public class RecipeBookIsPain implements ClientModInitializer { +@Mod("rbip") +public class RecipeBookIsPain { public static final Logger LOGGER = LogManager.getLogger("RBIP"); - public static final boolean isOwOLoaded = FabricLoader.getInstance().isModLoaded("owo"); - public static final boolean isPulsarLoaded = FabricLoader.getInstance().isModLoaded("pulsar"); + public static final boolean isOwOLoaded = ModList.get().isLoaded("owo"); + public static final boolean isPulsarLoaded = ModList.get().isLoaded("pulsar"); - @Override - public void onInitializeClient() { + public RecipeBookIsPain(FMLJavaModLoadingContext context) { + context.getModEventBus().addListener(this::onInitializeClient); + } + + public void onInitializeClient(FMLClientSetupEvent event) { var lookup = MethodHandles.lookup(); if (isOwOLoaded) { diff --git a/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookTabButton.java b/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookTabButton.java index 5b3e787..a31b4d9 100644 --- a/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookTabButton.java +++ b/src/main/java/dev/zenfyr/rbip/access/PaginatedRecipeBookTabButton.java @@ -1,9 +1,5 @@ package dev.zenfyr.rbip.access; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - -@Environment(EnvType.CLIENT) public interface PaginatedRecipeBookTabButton { default int rbip$getPage() { diff --git a/src/main/java/dev/zenfyr/rbip/access/RecipeBookComponentWidget.java b/src/main/java/dev/zenfyr/rbip/access/RecipeBookComponentWidget.java index a1ed08b..4fff2ab 100644 --- a/src/main/java/dev/zenfyr/rbip/access/RecipeBookComponentWidget.java +++ b/src/main/java/dev/zenfyr/rbip/access/RecipeBookComponentWidget.java @@ -1,9 +1,5 @@ package dev.zenfyr.rbip.access; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; - -@Environment(EnvType.CLIENT) public interface RecipeBookComponentWidget { default void rbip$updatePages() { diff --git a/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookComponentMixin.java b/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookComponentMixin.java index b180b1f..b00cb28 100644 --- a/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookComponentMixin.java +++ b/src/main/java/dev/zenfyr/rbip/mixin/RecipeBookComponentMixin.java @@ -248,7 +248,7 @@ public abstract class RecipeBookComponentMixin implements RecipeBookComponentWid @At( value = "INVOKE", target = "Lnet/minecraft/client/RecipeBookCategories;equals(Ljava/lang/Object;)Z"), - method = "method_2582") + method = "lambda$initVisuals$0") private boolean checkTabInEquals( RecipeBookCategories instance, Object o, @@ -268,7 +268,7 @@ public abstract class RecipeBookComponentMixin implements RecipeBookComponentWid @At( value = "INVOKE", target = - "Lnet/minecraft/client/RecipeBookCategories;getCategories(Lnet/minecraft/world/inventory/RecipeBookType;)Ljava/util/List;"), + "Lnet/minecraft/world/inventory/RecipeBookMenu;getRecipeBookCategories()Ljava/util/List;"), method = "initVisuals") private List skipRealButtons(List original) { return this.menu.getRecipeBookType() == RecipeBookType.CRAFTING ? List.of() : original; diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..722e74c --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,28 @@ +modLoader = "javafml" +loaderVersion = "[4,)" +license = "MIT" +issueTrackerURL = "https://github.com/constellation-mc/rbip/issues" +clientSideOnly = true + +[[mods]] +modId = "rbip" +version = "${version}" +displayName = "Recipe Book Is Pain" +logoFile = "assets/rbip/icon.png" +authors = "zenfyr" +description = '''Makes the recipe book use creative tabs for groups''' +displayTest = "IGNORE_ALL_VERSION" + +[[dependencies.rbip]] +modId = "forge" +mandatory = true +versionRange = "[${forge_version},)" +ordering = "NONE" +side = "BOTH" + +[[dependencies.rbip]] +modId = "minecraft" +mandatory = true +versionRange = "[${minecraft_version},]" +ordering = "NONE" +side = "BOTH" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json deleted file mode 100644 index 3054031..0000000 --- a/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "schemaVersion": 1, - "id": "rbip", - "version": "${version}", - "name": "Recipe Book Is Pain", - "description": "Makes the recipe book use a little more enums", - "authors": [ - "zenfyr" - ], - "contact": { - "sources": "https://github.com/constellation-mc/rbip", - "issues": "https://github.com/constellation-mc/rbip/issues" - }, - "license": "MIT", - "icon": "assets/rbip/icon.png", - "environment": "client", - "entrypoints": { - "client": [ - "dev.zenfyr.rbip.RecipeBookIsPain" - ] - }, - "mixins": [ - "rbip.mixins.json" - ], - "depends": { - "fabricloader": ">=${loader_version}", - "minecraft": "${minecraft_version}", - "fabric": ">=${fabric_version}" - } -} diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..f96998e --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,8 @@ +{ + "pack": { + "description": { + "text": "RBIP resources" + }, + "pack_format": 15 + } +} \ No newline at end of file