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:
f1den committed 2026-07-05 18:10:53 +03:00
1 parent 6e3de2716c
commit c11a278050
18 files changed
+684 -188

No files matched your search

@@ -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"