mirror of
https://github.com/TeamMidnightDust/MidnightLib.git
synced 2025-12-15 17:05:09 +01:00
MidnightLib 1.5.2 - NeoForge & more cleanness
- Native support for NeoForge (& dropped support for regular Forge) - Cleanup of some code -> Overview button is now added via callbacks instead of a mixin - Unify client & server classes - Minor breaking change only affecting mods using the hiding functionality
This commit is contained in:
@@ -3,6 +3,7 @@ architectury {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
|
accessWidenerPath = file("src/main/resources/midnightlib.accesswidener")
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@@ -1,12 +1,23 @@
|
|||||||
package eu.midnightdust.core;
|
package eu.midnightdust.core;
|
||||||
|
|
||||||
|
import eu.midnightdust.core.config.MidnightLibConfig;
|
||||||
import eu.midnightdust.lib.config.AutoCommand;
|
import eu.midnightdust.lib.config.AutoCommand;
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.api.Environment;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MidnightLibServer {
|
public class MidnightLib {
|
||||||
|
public static List<String> hiddenMods = new ArrayList<>();
|
||||||
|
|
||||||
|
@Environment(EnvType.CLIENT)
|
||||||
|
public static void onInitializeClient() {
|
||||||
|
MidnightLibConfig.init("midnightlib", MidnightLibConfig.class);
|
||||||
|
}
|
||||||
|
@Environment(EnvType.SERVER)
|
||||||
public static void onInitializeServer() {
|
public static void onInitializeServer() {
|
||||||
MidnightConfig.configClass.forEach((modid, config) -> {
|
MidnightConfig.configClass.forEach((modid, config) -> {
|
||||||
for (Field field : config.getFields()) {
|
for (Field field : config.getFields()) {
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package eu.midnightdust.core;
|
|
||||||
|
|
||||||
import eu.midnightdust.core.config.MidnightLibConfig;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class MidnightLibClient {
|
|
||||||
public static List<String> hiddenMods = new ArrayList<>();
|
|
||||||
|
|
||||||
public static void onInitializeClient() {
|
|
||||||
MidnightLibConfig.init("midnightlib", MidnightLibConfig.class);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
package eu.midnightdust.core.mixin;
|
|
||||||
|
|
||||||
import eu.midnightdust.core.config.MidnightLibConfig;
|
|
||||||
import eu.midnightdust.core.screen.MidnightConfigOverviewScreen;
|
|
||||||
import eu.midnightdust.lib.util.PlatformFunctions;
|
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.client.gui.screen.option.OptionsScreen;
|
|
||||||
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import net.minecraft.util.Identifier;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
@Mixin(OptionsScreen.class)
|
|
||||||
public class MixinOptionsScreen extends Screen {
|
|
||||||
protected MixinOptionsScreen(Text title) {
|
|
||||||
super(title);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(at = @At("HEAD"),method = "init")
|
|
||||||
private void midnightlib$init(CallbackInfo ci) {
|
|
||||||
if (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.TRUE) || (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.MODMENU) && !PlatformFunctions.isModLoaded("modmenu"))) {
|
|
||||||
TextIconButtonWidget button = TextIconButtonWidget.builder(Text.translatable("midnightlib.overview.title"), (
|
|
||||||
buttonWidget) -> Objects.requireNonNull(client).setScreen(new MidnightConfigOverviewScreen(this)), true)
|
|
||||||
.texture(new Identifier("midnightlib","icon/midnightlib"), 16, 16).dimension(20, 20).build();
|
|
||||||
button.setPosition(this.width / 2 + 158, this.height / 6 - 12);
|
|
||||||
this.addDrawableChild(button);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +1,20 @@
|
|||||||
package eu.midnightdust.core.screen;
|
package eu.midnightdust.core.screen;
|
||||||
|
|
||||||
import eu.midnightdust.core.MidnightLibClient;
|
import eu.midnightdust.core.MidnightLib;
|
||||||
|
import eu.midnightdust.core.config.MidnightLibConfig;
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
|
import eu.midnightdust.lib.util.PlatformFunctions;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
|
import net.minecraft.client.gui.screen.option.OptionsScreen;
|
||||||
import net.minecraft.client.gui.widget.*;
|
import net.minecraft.client.gui.widget.*;
|
||||||
import net.minecraft.screen.ScreenTexts;
|
import net.minecraft.screen.ScreenTexts;
|
||||||
import net.minecraft.text.*;
|
import net.minecraft.text.*;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
@@ -31,7 +37,7 @@ public class MidnightConfigOverviewScreen extends Screen {
|
|||||||
List<String> sortedMods = new ArrayList<>(MidnightConfig.configClass.keySet());
|
List<String> sortedMods = new ArrayList<>(MidnightConfig.configClass.keySet());
|
||||||
Collections.sort(sortedMods);
|
Collections.sort(sortedMods);
|
||||||
sortedMods.forEach((modid) -> {
|
sortedMods.forEach((modid) -> {
|
||||||
if (!MidnightLibClient.hiddenMods.contains(modid)) {
|
if (!MidnightLib.hiddenMods.contains(modid)) {
|
||||||
list.addButton(List.of(ButtonWidget.builder(Text.translatable(modid +".midnightconfig.title"), (button) ->
|
list.addButton(List.of(ButtonWidget.builder(Text.translatable(modid +".midnightconfig.title"), (button) ->
|
||||||
Objects.requireNonNull(client).setScreen(MidnightConfig.getScreen(this,modid))).dimensions(this.width / 2 - 125, this.height - 28, 250, 20).build()), null, null);
|
Objects.requireNonNull(client).setScreen(MidnightConfig.getScreen(this,modid))).dimensions(this.width / 2 - 125, this.height - 28, 250, 20).build()), null, null);
|
||||||
}
|
}
|
||||||
@@ -47,4 +53,15 @@ public class MidnightConfigOverviewScreen extends Screen {
|
|||||||
context.drawCenteredTextWithShadow(textRenderer, title, width / 2, 15, 0xFFFFFF);
|
context.drawCenteredTextWithShadow(textRenderer, title, width / 2, 15, 0xFFFFFF);
|
||||||
}
|
}
|
||||||
@Override public void renderBackground(DrawContext c, int x, int y, float d) {}
|
@Override public void renderBackground(DrawContext c, int x, int y, float d) {}
|
||||||
|
|
||||||
|
public static void addButtonToOptionsScreen(Screen screen, MinecraftClient client) {
|
||||||
|
if (screen.getClass() == OptionsScreen.class && MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.TRUE)
|
||||||
|
|| (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.MODMENU) && !PlatformFunctions.isModLoaded("modmenu"))) {
|
||||||
|
TextIconButtonWidget button = TextIconButtonWidget.builder(Text.translatable("midnightlib.overview.title"), (
|
||||||
|
buttonWidget) -> Objects.requireNonNull(client).setScreen(new MidnightConfigOverviewScreen(screen)), true)
|
||||||
|
.texture(new Identifier("midnightlib","icon/midnightlib"), 16, 16).dimension(20, 20).build();
|
||||||
|
button.setPosition(screen.width / 2 + 158, screen.height / 6 - 12);
|
||||||
|
screen.addDrawableChild(button);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -194,7 +194,7 @@ public abstract class MidnightConfig {
|
|||||||
if (!Files.exists(path)) Files.createFile(path);
|
if (!Files.exists(path)) Files.createFile(path);
|
||||||
Files.write(path, gson.toJson(getClass(modid)).getBytes());
|
Files.write(path, gson.toJson(getClass(modid)).getBytes());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.fillInStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
{}
|
{
|
||||||
|
"accessWidener": "midnightlib.accesswidener"
|
||||||
|
}
|
||||||
3
common/src/main/resources/midnightlib.accesswidener
Normal file
3
common/src/main/resources/midnightlib.accesswidener
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
accessWidener v2 named
|
||||||
|
|
||||||
|
accessible method net/minecraft/client/gui/screen/Screen addDrawableChild (Lnet/minecraft/client/gui/Element;)Lnet/minecraft/client/gui/Element;
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"required": true,"minVersion": "0.8","package": "eu.midnightdust.core.mixin","compatibilityLevel": "JAVA_17","client": ["MixinOptionsScreen"],"injectors": {"defaultRequire": 1}}
|
|
||||||
@@ -2,7 +2,7 @@ package eu.midnightdust.lib.config;
|
|||||||
|
|
||||||
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
||||||
import com.terraformersmc.modmenu.api.ModMenuApi;
|
import com.terraformersmc.modmenu.api.ModMenuApi;
|
||||||
import eu.midnightdust.core.MidnightLibClient;
|
import eu.midnightdust.core.MidnightLib;
|
||||||
import eu.midnightdust.core.config.MidnightLibConfig;
|
import eu.midnightdust.core.config.MidnightLibConfig;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -19,7 +19,7 @@ public class AutoModMenu implements ModMenuApi {
|
|||||||
public Map<String, ConfigScreenFactory<?>> getProvidedConfigScreenFactories() {
|
public Map<String, ConfigScreenFactory<?>> getProvidedConfigScreenFactories() {
|
||||||
HashMap<String, ConfigScreenFactory<?>> map = new HashMap<>();
|
HashMap<String, ConfigScreenFactory<?>> map = new HashMap<>();
|
||||||
MidnightConfig.configClass.forEach((modid, cClass) -> {
|
MidnightConfig.configClass.forEach((modid, cClass) -> {
|
||||||
if (!MidnightLibClient.hiddenMods.contains(modid))
|
if (!MidnightLib.hiddenMods.contains(modid))
|
||||||
map.put(modid, parent -> MidnightConfig.getScreen(parent, modid));
|
map.put(modid, parent -> MidnightConfig.getScreen(parent, modid));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,19 +1,21 @@
|
|||||||
package eu.midnightdust.fabric.core;
|
package eu.midnightdust.fabric.core;
|
||||||
|
|
||||||
import eu.midnightdust.core.MidnightLibClient;
|
import eu.midnightdust.core.MidnightLib;
|
||||||
import eu.midnightdust.core.MidnightLibServer;
|
import eu.midnightdust.core.screen.MidnightConfigOverviewScreen;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.api.DedicatedServerModInitializer;
|
import net.fabricmc.api.DedicatedServerModInitializer;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
|
||||||
|
|
||||||
public class MidnightLibFabric implements ClientModInitializer, DedicatedServerModInitializer {
|
public class MidnightLibFabric implements ClientModInitializer, DedicatedServerModInitializer {
|
||||||
@Override @Environment(EnvType.CLIENT)
|
@Override @Environment(EnvType.CLIENT)
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
MidnightLibClient.onInitializeClient();
|
MidnightLib.onInitializeClient();
|
||||||
|
ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> {
|
||||||
|
MidnightConfigOverviewScreen.addButtonToOptionsScreen(screen, client);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
@Override @Environment(EnvType.SERVER)
|
@Override @Environment(EnvType.SERVER)
|
||||||
public void onInitializeServer() {
|
public void onInitializeServer() {MidnightLib.onInitializeServer();}
|
||||||
MidnightLibServer.onInitializeServer();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,13 +32,9 @@
|
|||||||
},
|
},
|
||||||
"depends": {
|
"depends": {
|
||||||
"fabric-resource-loader-v0": "*",
|
"fabric-resource-loader-v0": "*",
|
||||||
"minecraft": ">=1.20.2"
|
"minecraft": ">=1.20.3"
|
||||||
},
|
},
|
||||||
|
|
||||||
"mixins": [
|
|
||||||
"midnightlib.mixins.json"
|
|
||||||
],
|
|
||||||
|
|
||||||
"custom": {
|
"custom": {
|
||||||
"modmenu": {
|
"modmenu": {
|
||||||
"links": {
|
"links": {
|
||||||
@@ -50,5 +46,6 @@
|
|||||||
},
|
},
|
||||||
"badges": [ "library" ]
|
"badges": [ "library" ]
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"accessWidener": "midnightlib.accesswidener"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
loom.platform=forge
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package eu.midnightdust.forge;
|
|
||||||
|
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
|
||||||
import eu.midnightdust.lib.util.MidnightColorUtil;
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
|
||||||
import net.minecraftforge.client.ConfigScreenHandler;
|
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
|
||||||
import net.minecraftforge.event.TickEvent;
|
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
||||||
import net.minecraftforge.fml.ModList;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(modid = "midnightlib", bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
|
|
||||||
public class MidnightLibClientEvents {
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void onPostInit(FMLClientSetupEvent event) {
|
|
||||||
ModList.get().forEachModContainer((modid, modContainer) -> {
|
|
||||||
if (MidnightConfig.configClass.containsKey(modid)) {
|
|
||||||
modContainer.registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () ->
|
|
||||||
new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> MidnightConfig.getScreen(parent, modid)));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package eu.midnightdust.forge;
|
|
||||||
|
|
||||||
import eu.midnightdust.core.MidnightLibClient;
|
|
||||||
import eu.midnightdust.core.MidnightLibServer;
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
|
||||||
import net.minecraftforge.fml.DistExecutor;
|
|
||||||
import net.minecraftforge.fml.IExtensionPoint;
|
|
||||||
import net.minecraftforge.fml.ModLoadingContext;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
|
|
||||||
import static net.minecraftforge.fml.IExtensionPoint.DisplayTest.IGNORESERVERONLY;
|
|
||||||
|
|
||||||
@Mod("midnightlib")
|
|
||||||
public class MidnightLibForge {
|
|
||||||
public MidnightLibForge() {
|
|
||||||
ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> IGNORESERVERONLY, (remote, server) -> true));
|
|
||||||
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> MidnightLibClient::onInitializeClient);
|
|
||||||
DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> MidnightLibServer::onInitializeServer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
package eu.midnightdust.forge;
|
|
||||||
|
|
||||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
|
||||||
import eu.midnightdust.lib.config.AutoCommand;
|
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
|
||||||
import net.minecraftforge.event.RegisterCommandsEvent;
|
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(modid = "midnightlib", value = Dist.DEDICATED_SERVER)
|
|
||||||
public class MidnightLibServerEvents {
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void registerCommands(RegisterCommandsEvent event) {
|
|
||||||
for (LiteralArgumentBuilder<ServerCommandSource> command : AutoCommand.commands){
|
|
||||||
event.getDispatcher().register(command);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,16 +2,16 @@ org.gradle.jvmargs=-Xmx4096M
|
|||||||
|
|
||||||
minecraft_version=1.20.4
|
minecraft_version=1.20.4
|
||||||
yarn_mappings=1.20.4+build.1
|
yarn_mappings=1.20.4+build.1
|
||||||
enabled_platforms=fabric
|
enabled_platforms=fabric,neoforge
|
||||||
|
|
||||||
archives_base_name=midnightlib
|
archives_base_name=midnightlib
|
||||||
mod_version=1.5.1
|
mod_version=1.5.2
|
||||||
maven_group=eu.midnightdust
|
maven_group=eu.midnightdust
|
||||||
|
|
||||||
fabric_loader_version=0.15.0
|
fabric_loader_version=0.15.1
|
||||||
fabric_api_version=0.91.1+1.20.4
|
fabric_api_version=0.91.1+1.20.4
|
||||||
|
|
||||||
forge_version=1.20.3-49.0.2
|
neoforge_version=20.4.12-beta
|
||||||
|
|
||||||
quilt_loader_version=0.19.0-beta.18
|
quilt_loader_version=0.19.0-beta.18
|
||||||
quilt_fabric_api_version=7.0.1+0.83.0-1.20
|
quilt_fabric_api_version=7.0.1+0.83.0-1.20
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id "com.github.johnrengelman.shadow" version "7.1.2"
|
id "com.github.johnrengelman.shadow" version "7.1.2"
|
||||||
}
|
}
|
||||||
|
repositories{
|
||||||
|
maven {url "https://maven.neoforged.net/releases"}
|
||||||
|
}
|
||||||
|
|
||||||
architectury {
|
architectury {
|
||||||
platformSetupLoomIde()
|
platformSetupLoomIde()
|
||||||
forge()
|
neoForge()
|
||||||
}
|
}
|
||||||
|
|
||||||
loom {
|
loom {
|
||||||
forge {
|
accessWidenerPath = project(":common").loom.accessWidenerPath
|
||||||
mixinConfig "midnightlib.mixins.json"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
@@ -19,14 +20,14 @@ configurations {
|
|||||||
compileClasspath.extendsFrom common
|
compileClasspath.extendsFrom common
|
||||||
runtimeClasspath.extendsFrom common
|
runtimeClasspath.extendsFrom common
|
||||||
developmentForge.extendsFrom common
|
developmentForge.extendsFrom common
|
||||||
archivesBaseName = rootProject.archives_base_name + "-forge"
|
archivesBaseName = rootProject.archives_base_name + "-neoforge"
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
forge "net.minecraftforge:forge:${rootProject.forge_version}"
|
neoForge "net.neoforged:neoforge:${rootProject.neoforge_version}"
|
||||||
|
|
||||||
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||||
shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false }
|
shadowCommon(project(path: ":common", configuration: "transformProductionNeoForge")) { transitive = false }
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
processResources {
|
||||||
@@ -46,6 +47,7 @@ shadowJar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
remapJar {
|
remapJar {
|
||||||
|
atAccessWideners.add('midnightlib.accesswidener')
|
||||||
input.set shadowJar.archiveFile
|
input.set shadowJar.archiveFile
|
||||||
dependsOn shadowJar
|
dependsOn shadowJar
|
||||||
}
|
}
|
||||||
1
neoforge/gradle.properties
Normal file
1
neoforge/gradle.properties
Normal file
@@ -0,0 +1 @@
|
|||||||
|
loom.platform=neoforge
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package eu.midnightdust.lib.util.forge;
|
package eu.midnightdust.lib.util.neoforge;
|
||||||
|
|
||||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
import eu.midnightdust.lib.util.PlatformFunctions;
|
import eu.midnightdust.lib.util.PlatformFunctions;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraftforge.fml.ModList;
|
import net.neoforged.fml.ModList;
|
||||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
import net.neoforged.fml.loading.FMLEnvironment;
|
||||||
import net.minecraftforge.fml.loading.FMLPaths;
|
import net.neoforged.fml.loading.FMLPaths;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package eu.midnightdust.neoforge;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import eu.midnightdust.core.MidnightLib;
|
||||||
|
import eu.midnightdust.core.screen.MidnightConfigOverviewScreen;
|
||||||
|
import eu.midnightdust.lib.config.AutoCommand;
|
||||||
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.neoforged.api.distmarker.Dist;
|
||||||
|
import net.neoforged.bus.api.SubscribeEvent;
|
||||||
|
import net.neoforged.fml.IExtensionPoint;
|
||||||
|
import net.neoforged.fml.ModList;
|
||||||
|
import net.neoforged.fml.ModLoadingContext;
|
||||||
|
import net.neoforged.fml.common.Mod;
|
||||||
|
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
|
import net.neoforged.fml.loading.FMLEnvironment;
|
||||||
|
import net.neoforged.neoforge.client.ConfigScreenHandler;
|
||||||
|
import net.neoforged.neoforge.client.event.ScreenEvent;
|
||||||
|
import net.neoforged.neoforge.event.RegisterCommandsEvent;
|
||||||
|
|
||||||
|
import static net.neoforged.fml.IExtensionPoint.DisplayTest.IGNORESERVERONLY;
|
||||||
|
|
||||||
|
@Mod("midnightlib")
|
||||||
|
public class MidnightLibNeoForge {
|
||||||
|
public MidnightLibNeoForge() {
|
||||||
|
ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> IGNORESERVERONLY, (remote, server) -> true));
|
||||||
|
if (FMLEnvironment.dist == Dist.CLIENT) MidnightLib.onInitializeClient(); else MidnightLib.onInitializeServer();
|
||||||
|
}
|
||||||
|
@Mod.EventBusSubscriber(modid = "midnightlib", bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
|
||||||
|
public static class MidnightLibBusEvents {
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onPostInit(FMLClientSetupEvent event) {
|
||||||
|
ModList.get().forEachModContainer((modid, modContainer) -> {
|
||||||
|
if (MidnightConfig.configClass.containsKey(modid)) {
|
||||||
|
modContainer.registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () ->
|
||||||
|
new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> MidnightConfig.getScreen(parent, modid)));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Mod.EventBusSubscriber(modid = "midnightlib", value = Dist.CLIENT)
|
||||||
|
public static class MidnightLibClientEvents {
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void afterInitScreen(ScreenEvent.Init.Post event) {
|
||||||
|
MidnightConfigOverviewScreen.addButtonToOptionsScreen(event.getScreen(), event.getScreen().getMinecraft());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(modid = "midnightlib", value = Dist.DEDICATED_SERVER)
|
||||||
|
public static class MidnightLibServerEvents {
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void registerCommands(RegisterCommandsEvent event) {
|
||||||
|
for (LiteralArgumentBuilder<ServerCommandSource> command : AutoCommand.commands){
|
||||||
|
event.getDispatcher().register(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
modLoader = "javafml"
|
modLoader = "javafml"
|
||||||
loaderVersion = "[43,)"
|
loaderVersion = "[1,)"
|
||||||
#issueTrackerURL = ""
|
#issueTrackerURL = ""
|
||||||
license = "MIT License"
|
license = "MIT License"
|
||||||
|
|
||||||
@@ -15,15 +15,15 @@ Common Library for Team MidnightDust's mods.
|
|||||||
#logoFile = ""
|
#logoFile = ""
|
||||||
|
|
||||||
[[dependencies.midnightlib]]
|
[[dependencies.midnightlib]]
|
||||||
modId = "forge"
|
modId = "neoforge"
|
||||||
mandatory = true
|
mandatory = true
|
||||||
versionRange = "[43,)"
|
versionRange = "[20.3,)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
side = "BOTH"
|
||||||
|
|
||||||
[[dependencies.midnightlib]]
|
[[dependencies.midnightlib]]
|
||||||
modId = "minecraft"
|
modId = "minecraft"
|
||||||
mandatory = true
|
mandatory = true
|
||||||
versionRange = "[1.19.4,)"
|
versionRange = "[1.20.3,)"
|
||||||
ordering = "NONE"
|
ordering = "NONE"
|
||||||
side = "BOTH"
|
side = "BOTH"
|
||||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"pack": {
|
"pack": {
|
||||||
"description": "MidnightLib",
|
"description": "MidnightLib",
|
||||||
"pack_format": 9
|
"pack_format": 22
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ pluginManagement {
|
|||||||
repositories {
|
repositories {
|
||||||
maven { url "https://maven.fabricmc.net/" }
|
maven { url "https://maven.fabricmc.net/" }
|
||||||
maven { url "https://maven.architectury.dev/" }
|
maven { url "https://maven.architectury.dev/" }
|
||||||
maven { url "https://maven.minecraftforge.net/" }
|
maven { url "https://maven.neoforged.net/releases" }
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,6 @@ include("common")
|
|||||||
include("fabric-like")
|
include("fabric-like")
|
||||||
include("fabric")
|
include("fabric")
|
||||||
//include("quilt")
|
//include("quilt")
|
||||||
//include("forge")
|
include("neoforge")
|
||||||
|
|
||||||
rootProject.name = "midnightlib"
|
rootProject.name = "midnightlib"
|
||||||
|
|||||||
Reference in New Issue
Block a user