Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Support NeoForge 1.20.2 #49

Merged
merged 12 commits into from
Nov 17, 2023
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