Skip to content

Commit

Permalink
chore: Support NeoForge 1.20.2 (#49)
Browse files Browse the repository at this point in the history
* chore: Support NeoForge 1.20.2
1.20.2 NeoForge broke compat with LexForge by renaming their namespaces.

* refactor: Use NeoForge package name

* chore: ArchLoom Neo

* chore: ArchLoom Neo

* fix: Neo's mixin breaking changes

* fix: Bumps neo version

* fix: Missing semi-colon

* chore: Disable recipe viewer to test neoforge

* fix: Neoforge FluidStack namespace

* fix: Drop version range minimum to v1
  • Loading branch information
null2264 authored Nov 17, 2023
1 parent e1b0b44 commit 453b077
Show file tree
Hide file tree
Showing 14 changed files with 107 additions and 46 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ jobs:
- run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew build --stacktrace
env:
GITHUB_PAT: ${{ secrets.PAT }}
- name: Archive build results
run: tar -I zstd -cf build.tar.zst versions/*/build/libs
- name: Upload build folder
Expand All @@ -28,4 +30,4 @@ jobs:
name: build-artifacts
path: build.tar.zst
if-no-files-found: error
retention-days: 3
retention-days: 3
5 changes: 4 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,12 @@ jobs:
- run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew build --stacktrace
env:
GITHUB_PAT: ${{ secrets.PAT }}
- name: Upload to CurseForge and Modrinth
env:
CHANGELOG: ${{ github.event.release.body }}
CURSEFORGE: ${{ secrets.CURSEFORGE }}
MODRINTH: ${{ secrets.MODRINTH }}
run: ./gradlew publishMods --stacktrace --no-daemon --max-workers 1
GITHUB_PAT: ${{ secrets.PAT }}
run: ./gradlew publishMods --stacktrace --no-daemon --max-workers 1
21 changes: 12 additions & 9 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id "dev.architectury.loom" version "1.1-SNAPSHOT"
id "dev.architectury.loom" version "1.4-SNAPSHOT"
id "com.github.johnrengelman.shadow"
id "com.github.null2264.preprocess"
id "me.modmuss50.mod-publish-plugin" version "0.3.5"
Expand Down Expand Up @@ -47,6 +47,7 @@ repositories {
maven { url = "https://maven.jamieswhiteshirt.com/libs-release" }
maven { url = "https://maven.tterrag.com/" }
maven { url = "https://maven.theillusivec4.top/" }
maven { url = "https://maven.neoforged.net/releases" }
}

archivesBaseName = project.archives_base_name
Expand All @@ -59,7 +60,7 @@ group = project.maven_group
loom {
silentMojangMappingsLicense()

mixin.defaultRefmapName.set("mixins.cobblegen.refmap.json")
//mixin.defaultRefmapName.set("mixins.cobblegen.refmap.json")

runConfigs.configure {
client {
Expand All @@ -72,12 +73,13 @@ loom {
}
}

if (!isFabric)
if (!isFabric && !isNeo) {
forge {
mixinConfigs = [
"cobblegen.mixins.json"
]
}
}
}

configurations {
Expand Down Expand Up @@ -116,11 +118,11 @@ dependencies {
11904: "1.19.4-45.1.0",
12001: "1.20.1-47.0.3",
12002: "1.20.2-48.0.13",
// TODO: 1.20.3
][mcVersion]
} else {
forge "net.neoforged:forge:" + [
// TODO
neoForge "net.neoforged:neoforge:" + [
12002: "20.2.51-beta"
// TODO: 1.20.3
][mcVersion]
}
}
Expand Down Expand Up @@ -242,7 +244,7 @@ processResources {
filteringCharset "UTF-8"

filesMatching(isFabric ? "fabric.mod.json" : "META-INF/mods.toml") {
expand "version": metadataVersion, 'mcversion': metadataMCVersion
expand "version": metadataVersion, "mcversion": metadataMCVersion, "forge": (isNeo ? "neoforge" : "forge")
}
}

Expand Down Expand Up @@ -292,8 +294,9 @@ publishMods {
modLoaders.add("fabric")
modLoaders.add("quilt")
} else {
modLoaders.add("forge")
if (mcVersion == 12001)
if (mcVersion <= 12001) // No more LexForge, LexForge is too buggy
modLoaders.add("forge")
if (mcVersion >= 12001)
modLoaders.add("neoforge")
}
if (project.version_stage == "ALPHA")
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ loader_version_1_18_2=0.14.14
fabric_version_1_18_2=0.76.0+1.18.2

# Runtime Properties
recipe_viewer=emi
recipe_viewer=none

# Dependencies
jankson_version=1.2.2
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
4 changes: 2 additions & 2 deletions root.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
}

preprocess {
//val neo12002 = createNode("1.20.2-neoforge", 12002, "mojang")
val neo12002 = createNode("1.20.2-neoforge", 12002, "mojang")
val forge12002 = createNode("1.20.2-forge", 12002, "mojang")
val fabric12002 = createNode("1.20.2-fabric", 12002, "mojang")
val forge12001 = createNode("1.20.1-forge", 12001, "mojang")
Expand All @@ -15,7 +15,7 @@ preprocess {
val forge11802 = createNode("1.18.2-forge", 11802, "mojang")
val fabric11802 = createNode("1.18.2-fabric", 11802, "mojang")

//neo12002.link(fabric12002)
neo12002.link(fabric12002)

forge12002.link(fabric12002)
forge12001.link(fabric12001)
Expand Down
11 changes: 11 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
pluginManagement {
repositories {
maven("https://maven.fabricmc.net/")
// For early access to "unstable" features
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/null2264/architectury-loom")
credentials {
username = System.getenv("GITHUB_ACTOR")
password = System.getenv("GITHUB_PAT")
}
}
maven("https://maven.architectury.dev/")
maven("https://jitpack.io/")
maven("https://files.minecraftforge.net/maven/")
maven("https://repo.essential.gg/repository/maven-public/")
maven("https://maven.neoforged.net/releases")
gradlePluginPortal()
}
plugins {
Expand Down Expand Up @@ -32,6 +42,7 @@ listOf(
"1.20.1-forge",
"1.20.2-fabric",
"1.20.2-forge",
"1.20.2-neoforge",
).forEach { version ->
include(":$version")
project(":$version").apply {
Expand Down
10 changes: 7 additions & 3 deletions src/main/java/io/github/null2264/cobblegen/CobbleGen.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@

import static io.github.null2264.cobblegen.config.ConfigHelper.loadConfig;

//#if FABRIC<=0
//$$ @net.minecraftforge.fml.common.Mod(CobbleGen.MOD_ID)
//#if FORGE>=1
//#if FORGE==2
//$$ @net.neoforged.fml.common.Mod(CobbleGen.MOD_ID)
//#else
//$$ @net.minecraftforge.fml.common.Mod(CobbleGen.MOD_ID)
//#endif
//$$ public class CobbleGen
//#else
public class CobbleGen implements net.fabricmc.api.ModInitializer
Expand Down Expand Up @@ -66,4 +70,4 @@ public enum Channel {
PING,
SYNC,
}
}
}
45 changes: 34 additions & 11 deletions src/main/java/io/github/null2264/cobblegen/compat/LoaderCompat.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,15 @@
//#if FABRIC>=1
import net.fabricmc.loader.api.FabricLoader;
//#else
//$$ import net.minecraftforge.fml.loading.FMLPaths;
//#if FORGE>=2 && MC>=1.20.2
//$$ import net.neoforged.fml.loading.FMLPaths;
//$$ import net.neoforged.fml.ModList;
//$$ import net.neoforged.fml.loading.LoadingModList;
//#else
//$$ import net.minecraftforge.fml.loading.FMLPaths;
//$$ import net.minecraftforge.fml.ModList;
//$$ import net.minecraftforge.fml.loading.LoadingModList;
//#endif
//#endif

import java.nio.file.Path;
Expand All @@ -13,9 +21,9 @@ public static boolean isModLoaded(String mod) {
//#if FABRIC>=1
return net.fabricmc.loader.api.FabricLoader.getInstance().isModLoaded(mod);
//#else
//$$ net.minecraftforge.fml.ModList modlist = net.minecraftforge.fml.ModList.get();
//$$ ModList modlist = ModList.get();
//$$ if (modlist == null) // mainly for MixinConfigPlugin
//$$ return net.minecraftforge.fml.loading.LoadingModList.get().getModFileById(mod) != null;
//$$ return LoadingModList.get().getModFileById(mod) != null;
//$$ return modlist.isLoaded(mod);
//#endif
}
Expand All @@ -29,25 +37,40 @@ public static Path getConfigDir() {
}

public static LoaderType getType() {
//#if FABRIC==1
return LoaderType.FABRIC;
//#else
//#if FABRIC==2
//$$ return LoaderType.QUILT;
//#if FABRIC>=1
//#if FABRIC==1
return LoaderType.FABRIC;
//#else
//$$ return LoaderType.QUILT;
//#endif
//#elseif FORGE>=1
//#if FORGE==1
//$$ return LoaderType.FORGE;
//#else
//$$ return LoaderType.NEOFORGE;
//#endif
//#else
//$$ return LoaderType.FORGE;
//#endif
//$$ throw new RuntimeException("Unsupported Loader");
//#endif
}

public static Boolean isForge() {
return getType() == LoaderType.FORGE;
}

public static Boolean isNeoForge() {
return getType() == LoaderType.NEOFORGE;
}

public static Boolean isForgeLike() {
return isForge() || isNeoForge();
}

@SuppressWarnings("unused")
enum LoaderType {
FABRIC,
QUILT,
FORGE,
QUILT
NEOFORGE
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
//#if FABRIC>=1
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
//#else
//$$ import net.minecraftforge.fluids.FluidStack;
//#if FORGE>=2 && MC>=1.20.2
//$$ import net.neoforged.neoforge.fluids.FluidStack;
//#else
//$$ import net.minecraftforge.fluids.FluidStack;
//#endif
//#endif
import io.github.null2264.cobblegen.data.model.Generator;
import lombok.val;
Expand Down Expand Up @@ -31,7 +35,7 @@ private static boolean handleReaction(Level level, BlockPos pos, Fluid fluid1, F
//#if FABRIC
method = "handlePipeFlowCollision(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lio/github/fabricators_of_create/porting_lib/util/FluidStack;Lio/github/fabricators_of_create/porting_lib/util/FluidStack;)V",
//#else
//$$ method = "handlePipeFlowCollision(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraftforge/fluids/FluidStack;Lnet/minecraftforge/fluids/FluidStack;)V",
//$$ method = "handlePipeFlowCollision",
//$$ remap = false,
//#endif
at = @At(value = "HEAD"), cancellable = true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
package io.github.null2264.cobblegen.mixin.network;

import net.minecraft.network.Connection;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import static io.github.null2264.cobblegen.CobbleGen.FLUID_INTERACTION;
//#if MC>=1.20.2
//$$ import net.minecraft.network.chat.Component;
//$$ import org.spongepowered.asm.mixin.Shadow;
//$$ import org.spongepowered.asm.mixin.injection.At;
//$$ import org.spongepowered.asm.mixin.injection.Inject;
//$$ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//$$ import static io.github.null2264.cobblegen.CobbleGen.FLUID_INTERACTION;
//#endif

@Mixin(Connection.class)
public abstract class ConnectionMixin {
@Shadow public abstract boolean isConnected();

//#if MC>=1.20.2
//$$ @Shadow public abstract boolean isConnected();

//$$ @Inject(method = "disconnect", at = @At("TAIL"))
//$$ private void disconnect(Component component, CallbackInfo ci) {
//$$ if (this.isConnected())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,15 @@
//#else
//$$ import java.lang.reflect.Constructor;
//$$ import io.github.null2264.cobblegen.CGPlugin;
//$$ import net.minecraftforge.fml.ModList;
//$$ import net.minecraftforge.forgespi.language.IModInfo;
//$$ import net.minecraftforge.forgespi.language.ModFileScanData;
//#if FORGE>=2 && MC>=1.20.2
//$$ import net.neoforged.fml.ModList;
//$$ import net.neoforged.neoforgespi.language.IModInfo;
//$$ import net.neoforged.neoforgespi.language.ModFileScanData;
//#else
//$$ import net.minecraftforge.fml.ModList;
//$$ import net.minecraftforge.forgespi.language.IModInfo;
//$$ import net.minecraftforge.forgespi.language.ModFileScanData;
//#endif
//$$ import org.objectweb.asm.Type;
//#endif

Expand Down
9 changes: 6 additions & 3 deletions src/main/resources/META-INF/mods.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
modLoader = "javafml"
loaderVersion = "[40,)"
loaderVersion = "[1,)"
license = "LGPL-3.0-only"
issueTrackerURL = "https://github.com/null2264/CobbleGen/issues"

Expand All @@ -12,10 +12,13 @@ logoFile = "icon.png"
authors = "null2264"
description = "An MC mod that allows you to customize cobblestone (stone and basalt) generators"

[[mixins]]
config = "cobblegen.mixins.json"

[[dependencies.cobblegen]]
modId = "forge"
modId = "${forge}"
mandatory = true
versionRange = "[40,)"
versionRange = "[1,)"
ordering = "NONE"
side = "BOTH"

Expand Down
1 change: 1 addition & 0 deletions versions/1.20.2-neoforge/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
loom.platform=neoforge

0 comments on commit 453b077

Please sign in to comment.