Skip to content

Commit 06a665c

Browse files
authored
Develop beta 38 (#877)
2 parents cf46217 + 27ec8c9 commit 06a665c

33 files changed

+454
-223
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ jobs:
1313
java-version: '17'
1414
- uses: gradle/wrapper-validation-action@v1
1515
- name: Setup Gradle
16-
uses: gradle/gradle-build-action@v2
16+
uses: gradle/gradle-build-action@v3
1717
with:
18+
dependency-graph: generate-and-submit
1819
gradle-home-cache-cleanup: true
1920
gradle-home-cache-excludes: |
2021
gradle.properties

.github/workflows/release.yml

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ permissions:
1919

2020
jobs:
2121
build:
22+
name: Build
2223
runs-on: ubuntu-22.04
24+
outputs:
25+
changelog: ${{ steps.changelog.outputs.changelog }}
2326
steps:
24-
- uses: actions/checkout@v3
27+
- uses: actions/checkout@v4
2528
with:
2629
fetch-depth: 0
2730
- uses: FabricMC/fabric-action-scripts@v2
@@ -35,19 +38,57 @@ jobs:
3538
java-version: '17'
3639
- uses: gradle/wrapper-validation-action@v1
3740
- name: Setup Gradle
38-
uses: gradle/gradle-build-action@v2
41+
uses: gradle/actions/setup-gradle@v3
3942
with:
4043
gradle-home-cache-cleanup: true
4144
gradle-home-cache-excludes: |
4245
gradle.properties
4346
- name: Build with Gradle
44-
run: ./gradlew clean build publish publishMods --stacktrace
47+
run: ./gradlew clean build --stacktrace
48+
publish:
49+
strategy:
50+
matrix:
51+
include:
52+
- name: Maven
53+
environment: maven
54+
task: publish
55+
- name: GitHub
56+
environment: github
57+
task: publishGithub
58+
- name: CurseForge
59+
environment: curseforge
60+
task: publishCurseforge
61+
- name: Modrinth
62+
environment: modrinth
63+
task: publishModrinth
64+
name: Publish ${{ matrix.name }}
65+
needs: build
66+
runs-on: ubuntu-22.04
67+
environment: ${{ inputs.environment }}
68+
steps:
69+
- uses: actions/checkout@v4
70+
with:
71+
fetch-depth: 0
72+
- uses: actions/setup-java@v3
73+
with:
74+
distribution: 'microsoft'
75+
java-version: '17'
76+
- uses: gradle/wrapper-validation-action@v1
77+
- name: Setup Gradle
78+
uses: gradle/actions/setup-gradle@v3
79+
with:
80+
cache-read-only: true
81+
gradle-home-cache-cleanup: true
82+
gradle-home-cache-excludes: |
83+
gradle.properties
84+
- name: Publish with Gradle
85+
run: ./gradlew ${{ matrix.task }} --stacktrace
4586
env:
4687
PUBLISH_RELEASE_TYPE: ${{ inputs.release_type }}
4788
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4889
CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }}
4990
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
5091
MAVEN_URL: ${{ secrets.MAVEN_URL }}
5192
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
52-
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
53-
CHANGELOG: ${{ steps.changelog.outputs.changelog }}
93+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }
94+
CHANGELOG: ${{ needs.build.outputs.changelog }}

build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,9 +316,9 @@ dependencies {
316316
shade(group = "net.minecraftforge", name = "srgutils", version = "0.5.4")
317317
shade(group = "net.fabricmc", name = "access-widener", version = versionAccessWidener)
318318
shade(group = "dev.su5ed.sinytra", name = "ForgeAutoRenamingTool", version = versionForgeAutoRenamingTool)
319-
shade(group = "dev.su5ed.sinytra.adapter", name = "definition", version = versionAdapterDefinition) { isTransitive = false }
319+
shade(group = "org.sinytra.adapter", name = "definition", version = versionAdapterDefinition) { isTransitive = false }
320320
shade(group = "io.github.steelwoolmc", name = "mixin-transmogrifier", version = versionMixinTransmog)
321-
adapterData(group = "dev.su5ed.sinytra.adapter", name = "adapter", version = versionAdapter)
321+
adapterData(group = "org.sinytra.adapter", name = "adapter", version = versionAdapter)
322322

323323
annotationProcessor(group = "net.fabricmc", name = "sponge-mixin", version = versionMixin)
324324
compileOnly(group = "net.fabricmc", name = "sponge-mixin", version = versionMixin)

gradle.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ org.gradle.jvmargs=-Xmx3G
44
org.gradle.daemon=true
55

66
# Versions
7-
versionConnector=1.0.0-beta.37
8-
versionAdapter=1.11.19-1.20.1-20240126.215012
9-
versionAdapterDefinition=1.11.24
7+
versionConnector=1.0.0-beta.38
8+
versionAdapter=1.11.30-1.20.1-20240308.152751
9+
versionAdapterDefinition=1.11.30
1010

1111
versionMc=1.20.1
1212
versionForge=47.1.3

src/main/java/dev/su5ed/sinytra/connector/ConnectorUtil.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.su5ed.sinytra.connector;
22

3+
import com.google.common.collect.ImmutableMultimap;
4+
import com.google.common.collect.Multimap;
35
import com.google.common.hash.Hashing;
46
import com.google.gson.Gson;
57
import com.google.gson.GsonBuilder;
@@ -18,7 +20,6 @@
1820
import java.nio.file.Path;
1921
import java.util.Collection;
2022
import java.util.List;
21-
import java.util.Map;
2223
import java.util.Set;
2324
import java.util.regex.Pattern;
2425

@@ -113,9 +114,9 @@ public final class ConnectorUtil {
113114
);
114115
// Common aliased mod dependencies that don't work with forge ports, which use a different modid.
115116
// They're too annoying to override individually in each mod, so we provide this small QoL feature for the user's comfort
116-
public static final Map<String, List<String>> DEFAULT_GLOBAL_MOD_ALIASES = Map.of(
117-
"cloth_config", List.of("cloth-config2"),
118-
"playeranimator", List.of("player-animator")
117+
public static final Multimap<String, String> DEFAULT_GLOBAL_MOD_ALIASES = ImmutableMultimap.of(
118+
"cloth_config", "cloth-config2",
119+
"playeranimator", "player-animator"
119120
);
120121

121122
private static final boolean CACHE_ENABLED;

src/main/java/dev/su5ed/sinytra/connector/locator/ConnectorConfig.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package dev.su5ed.sinytra.connector.locator;
22

33
import com.google.common.base.Suppliers;
4+
import com.google.common.collect.HashMultimap;
5+
import com.google.common.collect.ImmutableMultimap;
6+
import com.google.common.collect.Multimap;
47
import com.google.gson.Gson;
58
import com.google.gson.GsonBuilder;
69
import com.google.gson.JsonElement;
@@ -18,13 +21,14 @@
1821
import java.io.Reader;
1922
import java.nio.file.Files;
2023
import java.nio.file.Path;
24+
import java.util.HashMap;
2125
import java.util.List;
2226
import java.util.Map;
2327
import java.util.Optional;
2428
import java.util.function.Function;
2529
import java.util.function.Supplier;
2630

27-
public record ConnectorConfig(int version, List<String> hiddenMods, Map<String, List<String>> globalModAliases) {
31+
public record ConnectorConfig(int version, List<String> hiddenMods, Multimap<String, String> globalModAliases) {
2832
public static final Codec<ConnectorConfig> CODEC = RecordCodecBuilder.create(instance -> instance.group(
2933
Codec.INT
3034
.comapFlatMap(i -> i == 1 ? DataResult.success(i) : DataResult.error(() -> "Unsupported \"version\", must be 1"), Function.identity())
@@ -38,11 +42,20 @@ public record ConnectorConfig(int version, List<String> hiddenMods, Map<String,
3842
Codec.STRING,
3943
Codec.either(Codec.STRING.listOf(), Codec.STRING).xmap(either -> either.map(list -> list, List::of), list -> list.size() == 1 ? Either.right(list.get(0)) : Either.left(list))
4044
)
41-
.optionalFieldOf("globalModAliases", Map.of())
45+
.xmap(map -> {
46+
Multimap<String, String> aliases = HashMultimap.create();
47+
map.forEach(aliases::putAll);
48+
return aliases;
49+
}, multimap -> {
50+
Map<String, List<String>> map = new HashMap<>();
51+
multimap.asMap().forEach((key, val) -> map.put(key, List.copyOf(val)));
52+
return map;
53+
})
54+
.optionalFieldOf("globalModAliases", ImmutableMultimap.of())
4255
.forGetter(ConnectorConfig::globalModAliases)
4356
).apply(instance, ConnectorConfig::new));
4457

45-
ConnectorConfig(Optional<Integer> version, Optional<List<String>> hiddenMods, Map<String, List<String>> globalModAliases) {
58+
ConnectorConfig(Optional<Integer> version, Optional<List<String>> hiddenMods, Multimap<String, String> globalModAliases) {
4659
this(version.orElse(1), hiddenMods.orElseGet(List::of), globalModAliases);
4760
}
4861

src/main/java/dev/su5ed/sinytra/connector/locator/ConnectorLocator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private List<IModFile> locateFabricMods(Iterable<IModFile> loadedMods) {
104104
.toList();
105105
Collection<String> loadedModIds = loadedModInfos.stream().filter(mod -> !mod.library()).map(SimpleModInfo::modid).collect(Collectors.toUnmodifiableSet());
106106
// Discover fabric mod jars
107-
final var excluded = ModDirTransformerDiscoverer.allExcluded();
107+
List<Path> excluded = ModDirTransformerDiscoverer.allExcluded();
108108
List<JarTransformer.TransformableJar> discoveredJars = Stream.of(scanModsDir(excluded), scanClasspath(), scanFromArguments(excluded)).flatMap(s -> s)
109109
.map(rethrowFunction(p -> cacheTransformableJar(p.toFile())))
110110
.filter(jar -> {

src/main/java/dev/su5ed/sinytra/connector/locator/DependencyResolver.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
import com.google.common.base.Suppliers;
44
import com.google.common.collect.BiMap;
55
import com.google.common.collect.HashBiMap;
6-
import com.google.common.collect.HashMultimap;
76
import com.google.common.collect.Multimap;
87
import com.mojang.logging.LogUtils;
98
import dev.su5ed.sinytra.connector.loader.ConnectorEarlyLoader;
109
import dev.su5ed.sinytra.connector.transformer.jar.JarTransformer;
1110
import net.fabricmc.api.EnvType;
1211
import net.fabricmc.loader.api.FabricLoader;
1312
import net.fabricmc.loader.api.VersionParsingException;
13+
import net.fabricmc.loader.api.metadata.ModDependency;
1414
import net.fabricmc.loader.api.metadata.ModMetadata;
1515
import net.fabricmc.loader.impl.FMLModMetadata;
1616
import net.fabricmc.loader.impl.FabricLoaderImpl;
@@ -21,6 +21,8 @@
2121
import net.fabricmc.loader.impl.game.GameProvider;
2222
import net.fabricmc.loader.impl.metadata.BuiltinModMetadata;
2323
import net.fabricmc.loader.impl.metadata.DependencyOverrides;
24+
import net.fabricmc.loader.impl.metadata.LoaderModMetadata;
25+
import net.fabricmc.loader.impl.metadata.ModDependencyImpl;
2426
import net.fabricmc.loader.impl.metadata.VersionOverrides;
2527
import net.fabricmc.loader.impl.util.version.VersionParser;
2628
import net.minecraftforge.fml.loading.FMLPaths;
@@ -49,9 +51,7 @@ public final class DependencyResolver {
4951

5052
public static List<JarTransformer.TransformableJar> resolveDependencies(Collection<JarTransformer.TransformableJar> keys, Multimap<JarTransformer.TransformableJar, JarTransformer.TransformableJar> jars, Iterable<IModFile> loadedMods) {
5153
// Add global mod aliases
52-
Multimap<String, String> aliases = HashMultimap.create();
53-
ConnectorConfig.INSTANCE.get().globalModAliases().forEach(aliases::putAll);
54-
FabricLoaderImpl.INSTANCE.aliasMods(aliases);
54+
FabricLoaderImpl.INSTANCE.aliasMods(ConnectorConfig.INSTANCE.get().globalModAliases());
5555
BiMap<JarTransformer.TransformableJar, ModCandidate> jarToCandidate = HashBiMap.create();
5656
// Fabric candidates
5757
List<ModCandidate> candidates = createCandidatesRecursive(keys, keys, jars, jarToCandidate);
@@ -77,6 +77,22 @@ public static List<JarTransformer.TransformableJar> resolveDependencies(Collecti
7777
}
7878
}
7979

80+
public static void removeAliasedModDependencyConstraints(LoaderModMetadata metadata) {
81+
Multimap<String, String> aliases = ConnectorConfig.INSTANCE.get().globalModAliases();
82+
Collection<ModDependency> mapped = metadata.getDependencies().stream()
83+
.map(dep -> {
84+
// Aliased mods typically don't follow the same version convention as the original,
85+
// therefore we must widen all dependency constraints to wildcards
86+
if (aliases.values().contains(dep.getModId())) {
87+
return dep.getKind() == ModDependency.Kind.BREAKS ? null : uncheck(() -> new ModDependencyImpl(dep.getKind(), dep.getModId(), List.of("*")));
88+
}
89+
return dep;
90+
})
91+
.filter(Objects::nonNull)
92+
.toList();
93+
metadata.setDependencies(mapped);
94+
}
95+
8096
private static List<ModCandidate> createCandidatesRecursive(Collection<JarTransformer.TransformableJar> candidateJars, Collection<JarTransformer.TransformableJar> jarsToLoad, Multimap<JarTransformer.TransformableJar, JarTransformer.TransformableJar> parentsToChildren, Map<JarTransformer.TransformableJar, ModCandidate> jarToCandidate) {
8197
List<ModCandidate> candidates = new ArrayList<>();
8298
for (JarTransformer.TransformableJar candidateJar : candidateJars) {

src/main/java/dev/su5ed/sinytra/connector/service/FabricMixinBootstrap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public static void init() {
5858
if (Files.exists(modFile.getFile().findResource(config))) {
5959
ModFileInfo prev = configToModMap.putIfAbsent(config, modFile);
6060
if (prev != null)
61-
LOGGER.error("Non-unique Mixin config name {} used by the mods {} and {}", config, prev.moduleName(), modFile.moduleName());
61+
LOGGER.debug("Non-unique Mixin config name {} used by the mods {} and {}", config, prev.moduleName(), modFile.moduleName());
6262
}
6363
}
6464
}

src/main/java/dev/su5ed/sinytra/connector/transformer/AccessorRedirectTransformer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package dev.su5ed.sinytra.connector.transformer;
22

3-
import dev.su5ed.sinytra.adapter.patch.api.MethodContext;
4-
import dev.su5ed.sinytra.adapter.patch.api.Patch;
5-
import dev.su5ed.sinytra.adapter.patch.api.PatchContext;
6-
import dev.su5ed.sinytra.adapter.patch.api.PatchEnvironment;
3+
import org.sinytra.adapter.patch.api.MethodContext;
4+
import org.sinytra.adapter.patch.api.Patch;
5+
import org.sinytra.adapter.patch.api.PatchContext;
6+
import org.sinytra.adapter.patch.api.PatchEnvironment;
77
import dev.su5ed.sinytra.connector.transformer.patch.ClassNodeTransformer;
88
import dev.su5ed.sinytra.connector.transformer.patch.RedirectAccessorToMethod;
99
import net.minecraftforge.coremod.api.ASMAPI;

src/main/java/dev/su5ed/sinytra/connector/transformer/FieldToMethodTransformer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.google.common.collect.ImmutableMap;
44
import com.mojang.logging.LogUtils;
5-
import dev.su5ed.sinytra.adapter.patch.api.Patch;
5+
import org.sinytra.adapter.patch.api.Patch;
66
import dev.su5ed.sinytra.connector.transformer.patch.ClassNodeTransformer;
77
import net.fabricmc.accesswidener.AccessWidenerReader;
88
import net.fabricmc.accesswidener.AccessWidenerVisitor;

0 commit comments

Comments
 (0)