Multiloader scaffold: Architectury common+fabric+forge+neoforge (1.21.1)
Convert the single-loader NeoForge project into an Architectury multiloader: - root/settings/subproject build.gradle, Gradle pinned to 8.10.2 (Loom needs 8.x) - common: generic SkinsgCommands<S> + SkinsgClient bootstrap - per-loader entrypoints (Fabric ClientModInitializer, Forge/NeoForge @Mod) + metadata - migrate-to-multiloader.sh moves the loader/version-agnostic core into common/ - MULTILOADER.md: build/toolchain/proxy + 1.20.1 switch incl. rewritten cape mixin main (working NeoForge 1.21.1) untouched.
This commit is contained in:
1 parent
6e3de2716c
commit
c11a278050
18 files changed
+684
-188
No files matched your search
@@ -0,0 +1,41 @@
|
||||
plugins {
|
||||
id "com.gradleup.shadow"
|
||||
}
|
||||
|
||||
architectury {
|
||||
platformSetupLoomIde()
|
||||
neoForge()
|
||||
}
|
||||
|
||||
configurations {
|
||||
common
|
||||
shadowBundle
|
||||
compileClasspath.extendsFrom common
|
||||
runtimeClasspath.extendsFrom common
|
||||
developmentNeoForge.extendsFrom common
|
||||
}
|
||||
|
||||
dependencies {
|
||||
neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}"
|
||||
modApi "dev.architectury:architectury-neoforge:${rootProject.architectury_api_version}"
|
||||
|
||||
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||
shadowBundle project(path: ":common", configuration: "transformProductionNeoForge")
|
||||
}
|
||||
|
||||
processResources {
|
||||
inputs.property "version", project.version
|
||||
filesMatching("META-INF/neoforge.mods.toml") {
|
||||
expand version: project.version
|
||||
}
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
configurations = [project.configurations.shadowBundle]
|
||||
archiveClassifier = "dev-shadow"
|
||||
}
|
||||
|
||||
remapJar {
|
||||
input.set shadowJar.archiveFile
|
||||
archiveClassifier = null
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package xyz.nightsync.skinsg.neoforge;
|
||||
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.neoforged.api.distmarker.Dist;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.fml.common.Mod;
|
||||
import net.neoforged.fml.loading.FMLPaths;
|
||||
import net.neoforged.neoforge.client.event.ClientTickEvent;
|
||||
import net.neoforged.neoforge.client.event.RegisterClientCommandsEvent;
|
||||
import net.neoforged.neoforge.common.NeoForge;
|
||||
import xyz.nightsync.skinsg.SkinsgClient;
|
||||
import xyz.nightsync.skinsg.commands.SkinsgCommands;
|
||||
|
||||
@Mod(value = "skinsg", dist = Dist.CLIENT)
|
||||
public final class SkinsgNeoForge {
|
||||
|
||||
private static final SkinsgCommands.Feedback<CommandSourceStack> FEEDBACK = new SkinsgCommands.Feedback<>() {
|
||||
@Override public void success(CommandSourceStack s, String m) { s.sendSuccess(() -> Component.literal(m), false); }
|
||||
@Override public void failure(CommandSourceStack s, String m) { s.sendFailure(Component.literal(m)); }
|
||||
};
|
||||
|
||||
public SkinsgNeoForge(IEventBus modBus) {
|
||||
SkinsgClient.init(FMLPaths.CONFIGDIR.get());
|
||||
NeoForge.EVENT_BUS.addListener((RegisterClientCommandsEvent e) ->
|
||||
e.getDispatcher().register(SkinsgCommands.build(SkinsgClient.config(), FEEDBACK)));
|
||||
NeoForge.EVENT_BUS.addListener((ClientTickEvent.Post e) -> SkinsgClient.tick());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
modLoader = "javafml"
|
||||
loaderVersion = "[1,)"
|
||||
license = "All Rights Reserved"
|
||||
|
||||
[[mods]]
|
||||
modId = "skinsg"
|
||||
version = "${version}"
|
||||
displayName = "HD Skin Support (Gravit)"
|
||||
authors = "Nghtly"
|
||||
description = '''Client-side HD skins (up to 2048) and animated GIF cape support.'''
|
||||
|
||||
[[mixins]]
|
||||
config = "skinsg.mixins.json"
|
||||
|
||||
[[dependencies.skinsg]]
|
||||
modId = "neoforge"
|
||||
type = "required"
|
||||
versionRange = "[21.1,)"
|
||||
ordering = "NONE"
|
||||
side = "CLIENT"
|
||||
|
||||
[[dependencies.skinsg]]
|
||||
modId = "minecraft"
|
||||
type = "required"
|
||||
versionRange = "[1.21,1.22)"
|
||||
ordering = "NONE"
|
||||
side = "CLIENT"
|
||||
|
||||
[[dependencies.skinsg]]
|
||||
modId = "architectury"
|
||||
type = "required"
|
||||
versionRange = "[13.0.8,)"
|
||||
ordering = "AFTER"
|
||||
side = "CLIENT"
|
||||
Reference in new issue
Block a user