Skip to content

Commit 118cd41

Browse files
committed
Backport to mc1.20.1
1 parent 2aff736 commit 118cd41

File tree

24 files changed

+231
-167
lines changed

24 files changed

+231
-167
lines changed

.github/workflows/check-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
build:
1919
strategy:
2020
matrix:
21-
java: [21]
21+
java: [17]
2222
os: [ubuntu-latest, windows-latest]
2323
runs-on: ${{ matrix.os }}
2424
steps:
@@ -39,7 +39,7 @@ jobs:
3939
- name: Build
4040
run: ./gradlew build --stacktrace
4141
- name: Capture build artifacts
42-
if: ${{ runner.os == 'Linux' && matrix.java == '21' }}
42+
if: ${{ runner.os == 'Linux' && matrix.java == '17' }}
4343
uses: actions/upload-artifact@v4
4444
with:
4545
name: artifacts

.github/workflows/release.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
release:
1616
strategy:
1717
matrix:
18-
java: [21]
18+
java: [17]
1919
os: [ubuntu-latest]
2020
runs-on: ${{ matrix.os }}
2121
steps:
@@ -34,15 +34,15 @@ jobs:
3434
if: ${{ runner.os != 'Windows' }}
3535
run: chmod +x ./gradlew
3636
- name: Build
37-
# run: ./gradlew build neoforge:publishGithub fabric:publishGithub --stacktrace
38-
# run: ./gradlew build neoforge:publishGithub neoforge:publishModrinth fabric:publishGithub fabric:publishModrinth --stacktrace
39-
run: ./gradlew build neoforge:publishGithub neoforge:publishModrinth neoforge:publishCurseforge fabric:publishGithub fabric:publishModrinth fabric:publishCurseforge --stacktrace
37+
# run: ./gradlew build forge:publishGithub fabric:publishGithub --stacktrace
38+
# run: ./gradlew build forge:publishGithub forge:publishModrinth fabric:publishGithub fabric:publishModrinth --stacktrace
39+
run: ./gradlew build forge:publishGithub forge:publishModrinth forge:publishCurseforge fabric:publishGithub fabric:publishModrinth fabric:publishCurseforge --stacktrace
4040
env:
4141
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4242
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
4343
CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }}
4444
- name: Capture build artifacts
45-
if: ${{ runner.os == 'Linux' && matrix.java == '21' }}
45+
if: ${{ runner.os == 'Linux' && matrix.java == '17' }}
4646
uses: actions/upload-artifact@v4
4747
with:
4848
name: artifacts

build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
plugins {
22
id("fabric-loom") version("${loom_version}") apply(false)
3-
id("net.neoforged.moddev") version("${moddev_version}") apply(false)
3+
id("net.minecraftforge.gradle") version("${forgegradle_version}") apply(false)
4+
id("org.spongepowered.gradle.vanilla") version("${vanillagradle_version}") apply(false)
5+
id("org.spongepowered.mixin") version("${mixingradle_version}") apply(false)
46
id("org.cadixdev.licenser") version("${licenser_version}") apply(false)
57
id("me.modmuss50.mod-publish-plugin") version("${mpp_version}")
68
id("org.ajoberstar.grgit.service") version("${grgitservice_version}")
@@ -33,7 +35,8 @@ subprojects {
3335

3436
afterEvaluate {
3537
publishMods {
36-
file = project.name == "fabric" ? remapJar.archiveFile : jar.archiveFile
38+
file = project.name == "fabric" ? remapJar.archiveFile : name == "forge"
39+
? project.file("build/libs/${mod_id}-${name}-${mod_version}.jar") : jar.archiveFile
3740
version = mod_version
3841
type = me.modmuss50.mpp.ReleaseType.of(release_type)
3942
displayName = "v${mod_version}-${capsLoader(project.name)}"

buildSrc/src/main/groovy/multiloader-common.gradle

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,9 @@ repositories {
2525
}
2626
filter { includeGroupAndSubgroups("org.spongepowered") }
2727
}
28-
exclusiveContent {
29-
forRepositories(
30-
maven {
31-
name = "ParchmentMC"
32-
url = "https://maven.parchmentmc.org"
33-
},
34-
maven {
35-
name = "NeoForge"
36-
url = "https://maven.neoforged.net/releases"
37-
}
38-
)
39-
filter { includeGroup("org.parchmentmc.data") }
28+
maven {
29+
name = "ParchmentMC"
30+
url = "https://maven.parchmentmc.org"
4031
}
4132
maven {
4233
name = "Modrinth"
@@ -116,21 +107,21 @@ processResources {
116107
// Java
117108
"java_version": java_version,
118109
"java_versions_fabric_list": asJsonList(java_versions_fabric),
119-
"java_versions_neoforge": java_versions_neoforge,
110+
"java_versions_forge": java_versions_forge,
120111
// Minecraft
121112
"minecraft_versions_fabric_list": asJsonList(minecraft_versions_fabric),
122-
"minecraft_versions_neoforge": minecraft_versions_neoforge,
113+
"minecraft_versions_forge": minecraft_versions_forge,
123114
// Fabric
124115
"fabric_loader_versions_list": asJsonList(fabric_loader_versions),
125116
"fabric_api_versions_list": asJsonList(fabric_api_versions),
126-
// NeoForge
127-
"neoforge_loader_versions": neoforge_loader_versions,
128-
"neoforge_versions": neoforge_versions,
117+
// Forge
118+
"forge_loader_versions": forge_loader_versions,
119+
"forge_versions": forge_versions,
129120
// Dependencies
130121
"clothconfig_versions_fabric_list": asJsonList(clothconfig_versions_fabric),
131-
"clothconfig_versions_neoforge": clothconfig_versions_neoforge,
122+
"clothconfig_versions_forge": clothconfig_versions_forge,
132123
"modmenu_versions_fabric_list": asJsonList(modmenu_versions_fabric),
133-
"bettermodlist_versions_neoforge": bettermodlist_versions_neoforge,
124+
"bettermodlist_versions_forge": bettermodlist_versions_forge,
134125
]
135126

136127
var jsonExpandProps = expandProps.collectEntries {

common/build.gradle

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
buildscript {
2+
dependencies.add("classpath", "org.spongepowered:vanillagradle:${vanillagradle_version}")
3+
}
4+
15
plugins {
26
id("multiloader-common")
3-
id("net.neoforged.moddev")
7+
id("org.spongepowered.gradle.vanilla")
48
}
59

610
dependencies {
@@ -9,18 +13,13 @@ dependencies {
913
compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))
1014

1115
// Cloth Config API
12-
api("me.shedaniel.cloth:cloth-config-neoforge:${clothconfig_version}")
16+
api("me.shedaniel.cloth:cloth-config-forge:${clothconfig_version}")
1317
}
1418

15-
neoForge {
16-
version = neoforge_version // Shut up
17-
neoFormVersion = neoform_version
18-
// Automatically enable AccessTransformers if the file exists
19-
def at = file("src/main/resources/META-INF/accesstransformer.cfg")
20-
if (at.exists()) accessTransformers.from(at.absolutePath)
21-
parchment {
22-
minecraftVersion = parchment_minecraft_version
23-
mappingsVersion = parchment_version
19+
minecraft {
20+
version(minecraft_version)
21+
if (file("src/main/resources/${mod_id}.accesswidener").exists()) {
22+
accessWideners(file("src/main/resources/${mod_id}.accesswidener"))
2423
}
2524
}
2625

common/src/main/java/dev/terminalmc/modlistmemory/ModListMemory.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,10 @@ public static void onModOpened(String modId) {
6262
if (options().pinnedMods.contains(modId)) return; // Ignore pinned mods
6363
// Move to the top of the recent list
6464
options().recentMods.remove(modId);
65-
options().recentMods.addLast(modId);
66-
while (options().recentMods.size() > options().recentModsSize) {
67-
options().recentMods.removeFirst();
65+
options().recentMods.add(options().recentMods.size(), modId);
66+
while (options().recentMods.size() > options().recentModsSize
67+
&& !options().recentMods.isEmpty()) {
68+
options().recentMods.remove(0);
6869
}
6970
if (options().persistOnRestart && options().saveOnUpdate) {
7071
Config.save();
@@ -76,9 +77,10 @@ public static boolean onModClicked(String modId) {
7677
// Pin, or move to the top of the pin list
7778
options().recentMods.remove(modId);
7879
options().pinnedMods.remove(modId);
79-
options().pinnedMods.addLast(modId);
80-
while (options().pinnedMods.size() > options().pinnedModsSize) {
81-
options().pinnedMods.removeFirst();
80+
options().pinnedMods.add(options().pinnedMods.size(), modId);
81+
while (options().pinnedMods.size() > options().pinnedModsSize
82+
&& !options().pinnedMods.isEmpty()) {
83+
options().pinnedMods.remove(0);
8284
}
8385
if (options().persistOnRestart && options().saveOnUpdate) {
8486
Config.save();

common/src/main/resources/META-INF/accesstransformer.cfg

Lines changed: 0 additions & 1 deletion
This file was deleted.

fabric/src/main/java/dev/terminalmc/modlistmemory/mixin/MixinModListWidget.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,13 @@ private void wrapSort(List<Mod> modList, Comparator<? super Mod> comparator, Ope
6666
// Add recent mods (reverse order, on top of mod list)
6767
for (Mod mod : recentMods) {
6868
if (mod != null) {
69-
modList.addFirst(mod);
69+
modList.add(0, mod);
7070
}
7171
}
7272
// Add pinned mods (reverse order, on top of recent mods)
7373
for (Mod mod : pinnedMods) {
7474
if (mod != null) {
75-
modList.addFirst(mod);
75+
modList.add(0, mod);
7676
}
7777
}
7878
}

fabric/src/main/java/dev/terminalmc/modlistmemory/mixin/MixinModListWidgetRemap.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package dev.terminalmc.modlistmemory.mixin;
1818

19+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
20+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
1921
import com.terraformersmc.modmenu.gui.widget.ModListWidget;
2022
import org.spongepowered.asm.mixin.Mixin;
2123
import org.spongepowered.asm.mixin.injection.At;
@@ -26,6 +28,17 @@
2628

2729
@Mixin(ModListWidget.class)
2830
public class MixinModListWidgetRemap {
31+
@WrapOperation(
32+
method = "<init>",
33+
at = @At(
34+
value = "INVOKE",
35+
target = "Lcom/terraformersmc/modmenu/gui/widget/ModListWidget;setScrollAmount(D)V"
36+
)
37+
)
38+
private void wrapSetScrollAmount(ModListWidget instance, double amount, Operation<Void> original) {
39+
// cancel
40+
}
41+
2942
@Inject(
3043
method = "setScrollAmount",
3144
at = @At("HEAD")

forge/build.gradle

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
plugins {
2+
id("multiloader-loader")
3+
id("net.minecraftforge.gradle")
4+
id("org.spongepowered.mixin")
5+
}
6+
7+
dependencies {
8+
minecraft("net.minecraftforge:forge:${minecraft_version}-${forge_version}")
9+
annotationProcessor("org.spongepowered:mixin:${mixin_version}:processor")
10+
compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))
11+
12+
// JiJ MixinExtras
13+
implementation(jarJar("io.github.llamalad7:mixinextras-forge:${mixinextras_version}")) {
14+
jarJar.ranged(it, "[${mixinextras_version},)")
15+
}
16+
17+
// Cloth Config API
18+
api("me.shedaniel.cloth:cloth-config-forge:${clothconfig_version}")
19+
20+
// Better Modlist
21+
implementation("maven.modrinth:sbpqhzIG:${bettermodlist_version}")
22+
}
23+
24+
mixin {
25+
add(sourceSets.main, "${mod_id}.refmap.json")
26+
config("${mod_id}.mixins.json")
27+
config("${mod_id}.forge.mixins.json")
28+
}
29+
30+
sourceSets.main.resources.srcDir "src/generated/resources"
31+
32+
jarJar.enable()
33+
34+
tasks.jar.configure {
35+
archiveClassifier.set("pure")
36+
finalizedBy("reobfJar")
37+
}
38+
39+
tasks.jarJar.configure {
40+
archiveClassifier.set("")
41+
finalizedBy("reobfJarJar")
42+
}
43+
44+
afterEvaluate {
45+
// Required due to direct reference to fat jar file in root build.gradle publish task
46+
tasks.named("publishGithub").configure { it.dependsOn(tasks.named("jarJar")) }
47+
tasks.named("publishModrinth").configure { it.dependsOn(tasks.named("jarJar")) }
48+
tasks.named("publishCurseforge").configure { it.dependsOn(tasks.named("jarJar")) }
49+
}
50+
51+
minecraft {
52+
mappings channel: "official", version: minecraft_version
53+
copyIdeResources = true // Calls processResources when in dev
54+
55+
if (file("src/main/resources/META-INF/accesstransformer.cfg").exists()) {
56+
accessTransformer = file("src/main/resources/META-INF/accesstransformer.cfg")
57+
}
58+
59+
runs {
60+
client {
61+
workingDirectory project.file('run')
62+
ideaModule "${rootProject.name}.${project.name}.main"
63+
taskName 'Client'
64+
property 'mixin.env.remapRefMap', 'true'
65+
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
66+
mods {
67+
modClientRun {
68+
source sourceSets.main
69+
source project(":common").sourceSets.main
70+
}
71+
}
72+
}
73+
74+
server {
75+
workingDirectory project.file('run')
76+
ideaModule "${rootProject.name}.${project.name}.main"
77+
taskName 'Server'
78+
property 'mixin.env.remapRefMap', 'true'
79+
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
80+
mods {
81+
modServerRun {
82+
source sourceSets.main
83+
source project(":common").sourceSets.main
84+
}
85+
}
86+
}
87+
}
88+
}

0 commit comments

Comments
 (0)