mirror of
https://github.com/TeamMidnightDust/MidnightLib.git
synced 2025-12-15 09:05:08 +01:00
Port to Architectury
Yes, that also means Forge! And yes, this was pain. And no, the file size has not increased much!
This commit is contained in:
32
.gitignore
vendored
Executable file → Normal file
32
.gitignore
vendored
Executable file → Normal file
@@ -1,25 +1,19 @@
|
|||||||
# gradle
|
|
||||||
|
|
||||||
.gradle/
|
|
||||||
out/
|
|
||||||
classes/
|
|
||||||
build/
|
build/
|
||||||
|
|
||||||
# idea
|
|
||||||
|
|
||||||
.idea/
|
|
||||||
*.iml
|
|
||||||
*.ipr
|
*.ipr
|
||||||
|
run/
|
||||||
*.iws
|
*.iws
|
||||||
|
out/
|
||||||
# vscode
|
*.iml
|
||||||
|
.gradle/
|
||||||
.settings/
|
output/
|
||||||
.vscode/
|
|
||||||
bin/
|
bin/
|
||||||
|
libs/
|
||||||
|
|
||||||
.classpath
|
.classpath
|
||||||
.project
|
.project
|
||||||
|
.idea/
|
||||||
# fabric
|
classes/
|
||||||
|
.metadata
|
||||||
run/
|
.vscode
|
||||||
|
.settings
|
||||||
|
*.launch
|
||||||
109
build.gradle
Executable file → Normal file
109
build.gradle
Executable file → Normal file
@@ -1,82 +1,47 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'fabric-loom' version '0.11-SNAPSHOT'
|
id "architectury-plugin" version "3.4-SNAPSHOT"
|
||||||
id 'maven-publish'
|
id "dev.architectury.loom" version "1.0-SNAPSHOT" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_17
|
architectury {
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
minecraft = rootProject.minecraft_version
|
||||||
|
|
||||||
archivesBaseName = project.archives_base_name
|
|
||||||
version = project.mod_version
|
|
||||||
group = project.maven_group
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
maven { url "https://maven.terraformersmc.com/releases" }
|
|
||||||
maven { url "https://jitpack.io" }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
subprojects {
|
||||||
//to change the versions see the gradle.properties file
|
apply plugin: "dev.architectury.loom"
|
||||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
|
||||||
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
|
|
||||||
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
|
||||||
|
|
||||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
dependencies {
|
||||||
|
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
|
||||||
modImplementation ("com.terraformersmc:modmenu:${project.mod_menu_version}")
|
// The following line declares the mojmap mappings, you may use other mappings as well
|
||||||
|
//mappings loom.officialMojangMappings()
|
||||||
|
// The following line declares the yarn mappings you may select this one as well.
|
||||||
|
mappings "net.fabricmc:yarn:1.19.2+build.3:v2"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
processResources {
|
allprojects {
|
||||||
inputs.property "version", project.version
|
apply plugin: "java"
|
||||||
|
apply plugin: "architectury-plugin"
|
||||||
|
apply plugin: "maven-publish"
|
||||||
|
|
||||||
filesMatching("fabric.mod.json") {
|
archivesBaseName = rootProject.archives_base_name
|
||||||
expand "version": project.version
|
version = rootProject.mod_version
|
||||||
}
|
group = rootProject.maven_group
|
||||||
}
|
|
||||||
|
repositories {
|
||||||
tasks.withType(JavaCompile).configureEach {
|
// Add repositories to retrieve artifacts from in here.
|
||||||
// ensure that the encoding is set to UTF-8, no matter what the system default is
|
// You should only use this when depending on other mods because
|
||||||
// this fixes some edge cases with special characters not displaying correctly
|
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
|
||||||
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
|
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
|
||||||
// If Javadoc is generated, this must be specified in that task too.
|
// for more information about repositories.
|
||||||
it.options.encoding = "UTF-8"
|
}
|
||||||
|
|
||||||
// Minecraft 1.17 (21w19a) upwards uses Java 16.
|
tasks.withType(JavaCompile) {
|
||||||
it.options.release = 17
|
options.encoding = "UTF-8"
|
||||||
}
|
options.release = 17
|
||||||
|
}
|
||||||
java {
|
|
||||||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
java {
|
||||||
// if it is present.
|
withSourcesJar()
|
||||||
// If you remove this line, sources will not be generated.
|
}
|
||||||
withSourcesJar()
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
|
||||||
from("LICENSE") {
|
|
||||||
rename { "${it}_${project.archivesBaseName}"}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// configure the maven publication
|
|
||||||
publishing {
|
|
||||||
publications {
|
|
||||||
mavenJava(MavenPublication) {
|
|
||||||
// add all the jars that should be included when publishing to maven
|
|
||||||
artifact(remapJar) {
|
|
||||||
builtBy remapJar
|
|
||||||
}
|
|
||||||
artifact(sourcesJar) {
|
|
||||||
builtBy remapSourcesJar
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
|
||||||
repositories {
|
|
||||||
// Add repositories to publish to here.
|
|
||||||
// Notice: This block does NOT have the same function as the block in the top level.
|
|
||||||
// The repositories here will be used for publishing your artifact, not for
|
|
||||||
// retrieving dependencies.
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
26
common/build.gradle
Normal file
26
common/build.gradle
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
architectury {
|
||||||
|
common(rootProject.enabled_platforms.split(","))
|
||||||
|
}
|
||||||
|
|
||||||
|
loom {
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies
|
||||||
|
// Do NOT use other classes from fabric loader
|
||||||
|
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
mavenCommon(MavenPublication) {
|
||||||
|
artifactId = rootProject.archives_base_name
|
||||||
|
from components.java
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
||||||
|
repositories {
|
||||||
|
// Add repositories to publish to here.
|
||||||
|
}
|
||||||
|
}
|
||||||
21
common/src/main/java/eu/midnightdust/core/MidnightLibClient.java
Executable file
21
common/src/main/java/eu/midnightdust/core/MidnightLibClient.java
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
package eu.midnightdust.core;
|
||||||
|
|
||||||
|
import eu.midnightdust.core.config.MidnightLibConfig;
|
||||||
|
import eu.midnightdust.hats.web.HatLoader;
|
||||||
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MidnightLibClient {
|
||||||
|
public static List<String> hiddenMods = new ArrayList<>();
|
||||||
|
|
||||||
|
public static final String MOD_ID = "midnightlib";
|
||||||
|
|
||||||
|
public static void onInitializeClient() {
|
||||||
|
MidnightConfig.init("midnightlib", MidnightLibConfig.class);
|
||||||
|
hiddenMods.add("puzzle");
|
||||||
|
|
||||||
|
if (MidnightLibConfig.special_hats) HatLoader.init();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,15 +1,14 @@
|
|||||||
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.DedicatedServerModInitializer;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
public class MidnightLibServer implements DedicatedServerModInitializer {
|
public class MidnightLibServer {
|
||||||
|
|
||||||
@Override
|
public static void onInitializeServer() {
|
||||||
public void onInitializeServer() {
|
|
||||||
MidnightConfig.configClass.forEach((modid, config) -> {
|
MidnightConfig.configClass.forEach((modid, config) -> {
|
||||||
for (Field field : config.getFields()) {
|
for (Field field : config.getFields()) {
|
||||||
if (field.isAnnotationPresent(MidnightConfig.Entry.class) && !field.isAnnotationPresent(MidnightConfig.Client.class) && !field.isAnnotationPresent(MidnightConfig.Hidden.class))
|
if (field.isAnnotationPresent(MidnightConfig.Entry.class) && !field.isAnnotationPresent(MidnightConfig.Client.class) && !field.isAnnotationPresent(MidnightConfig.Hidden.class))
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package eu.midnightdust.core.config;
|
package eu.midnightdust.core.config;
|
||||||
|
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import eu.midnightdust.lib.util.PlatformVariables;
|
||||||
|
|
||||||
public class MidnightLibConfig extends MidnightConfig {
|
public class MidnightLibConfig extends MidnightConfig {
|
||||||
@Comment(centered = true) public static Comment midnightlib_description;
|
@Comment(centered = true) public static Comment midnightlib_description;
|
||||||
@Entry // Enable or disable the MidnightConfig overview screen button
|
@Entry // Enable or disable the MidnightConfig overview screen button
|
||||||
public static ConfigButton config_screen_list = FabricLoader.getInstance().isModLoaded("modmenu") ? ConfigButton.MODMENU : ConfigButton.TRUE;
|
public static ConfigButton config_screen_list = PlatformVariables.isModLoaded("modmenu") ? ConfigButton.MODMENU : ConfigButton.TRUE;
|
||||||
@Comment(centered = true) public static Comment midnighthats_description;
|
@Comment(centered = true) public static Comment midnighthats_description;
|
||||||
@Entry // Enable or disable hats for contributors, friends and donors.
|
@Entry // Enable or disable hats for contributors, friends and donors.
|
||||||
public static boolean special_hats = true;
|
public static boolean special_hats = true;
|
||||||
@@ -2,8 +2,8 @@ package eu.midnightdust.core.mixin;
|
|||||||
|
|
||||||
import eu.midnightdust.core.config.MidnightLibConfig;
|
import eu.midnightdust.core.config.MidnightLibConfig;
|
||||||
import eu.midnightdust.core.screen.MidnightConfigOverviewScreen;
|
import eu.midnightdust.core.screen.MidnightConfigOverviewScreen;
|
||||||
|
import eu.midnightdust.lib.util.PlatformVariables;
|
||||||
import eu.midnightdust.lib.util.screen.TexturedOverlayButtonWidget;
|
import eu.midnightdust.lib.util.screen.TexturedOverlayButtonWidget;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
|
||||||
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.screen.option.OptionsScreen;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
@@ -24,7 +24,7 @@ public class MixinOptionsScreen extends Screen {
|
|||||||
|
|
||||||
@Inject(at = @At("HEAD"),method = "init")
|
@Inject(at = @At("HEAD"),method = "init")
|
||||||
private void midnightlib$init(CallbackInfo ci) {
|
private void midnightlib$init(CallbackInfo ci) {
|
||||||
if (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.TRUE) || (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.MODMENU) && !FabricLoader.getInstance().isModLoaded("modmenu")))
|
if (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.TRUE) || (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.MODMENU) && !PlatformVariables.isModLoaded("modmenu")))
|
||||||
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width / 2 + 158, this.height / 6 - 12, 20, 20, 0, 0, 20, MIDNIGHTLIB_ICON_TEXTURE, 32, 64, (buttonWidget) -> Objects.requireNonNull(client).setScreen(new MidnightConfigOverviewScreen(this)), Text.translatable("midnightlib.overview.title")));
|
this.addDrawableChild(new TexturedOverlayButtonWidget(this.width / 2 + 158, this.height / 6 - 12, 20, 20, 0, 0, 20, MIDNIGHTLIB_ICON_TEXTURE, 32, 64, (buttonWidget) -> Objects.requireNonNull(client).setScreen(new MidnightConfigOverviewScreen(this)), Text.translatable("midnightlib.overview.title")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,9 @@ import java.io.Reader;
|
|||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.*;
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@SuppressWarnings("UnstableApiUsage")
|
@SuppressWarnings("UnstableApiUsage")
|
||||||
@@ -7,7 +7,7 @@ import net.minecraft.client.util.math.MatrixStack;
|
|||||||
import net.minecraft.entity.LivingEntity;
|
import net.minecraft.entity.LivingEntity;
|
||||||
|
|
||||||
public class WitchHatModel<T extends LivingEntity> extends SinglePartEntityModel<T> {
|
public class WitchHatModel<T extends LivingEntity> extends SinglePartEntityModel<T> {
|
||||||
private final ModelPart headwear;
|
private final ModelPart headwear;
|
||||||
|
|
||||||
public WitchHatModel(ModelPart root) {
|
public WitchHatModel(ModelPart root) {
|
||||||
headwear = root;
|
headwear = root;
|
||||||
@@ -37,13 +37,13 @@ public class WitchHatModel<T extends LivingEntity> extends SinglePartEntityModel
|
|||||||
return modelData;
|
return modelData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
|
public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(MatrixStack matrixStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){
|
public void render(MatrixStack matrixStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){
|
||||||
headwear.render(matrixStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
|
headwear.render(matrixStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -51,9 +51,9 @@ public class WitchHatModel<T extends LivingEntity> extends SinglePartEntityModel
|
|||||||
return headwear;
|
return headwear;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRotationAngle(ModelPart bone, float x, float y, float z) {
|
public void setRotationAngle(ModelPart bone, float x, float y, float z) {
|
||||||
bone.pitch = x;
|
bone.pitch = x;
|
||||||
bone.yaw = y;
|
bone.yaw = y;
|
||||||
bone.roll = z;
|
bone.roll = z;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,15 +4,18 @@ import com.mojang.brigadier.arguments.DoubleArgumentType;
|
|||||||
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
||||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
import eu.midnightdust.lib.util.PlatformVariables;
|
||||||
import net.minecraft.server.command.CommandManager;
|
import net.minecraft.server.command.CommandManager;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class AutoCommand {
|
public class AutoCommand {
|
||||||
|
public static List<LiteralArgumentBuilder<ServerCommandSource>> commands = new ArrayList<>();
|
||||||
private LiteralArgumentBuilder<ServerCommandSource> command;
|
private LiteralArgumentBuilder<ServerCommandSource> command;
|
||||||
final Field entry;
|
final Field entry;
|
||||||
final String modid;
|
final String modid;
|
||||||
@@ -27,7 +30,7 @@ public class AutoCommand {
|
|||||||
command();
|
command();
|
||||||
LiteralArgumentBuilder<ServerCommandSource> finalized = CommandManager.literal("midnightconfig").requires(source -> source.hasPermissionLevel(2)).then(command);
|
LiteralArgumentBuilder<ServerCommandSource> finalized = CommandManager.literal("midnightconfig").requires(source -> source.hasPermissionLevel(2)).then(command);
|
||||||
|
|
||||||
CommandRegistrationCallback.EVENT.register((dispatcher, dedicated, registrationEnvironment) -> dispatcher.register(finalized));
|
PlatformVariables.registerCommand(finalized); commands.add(finalized);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void command() {
|
private void command() {
|
||||||
@@ -61,10 +64,10 @@ public class AutoCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
command = command.then(CommandManager.literal(this.entry.getName()).executes(ctx -> getValue(ctx.getSource())).then(
|
command = command.then(CommandManager.literal(this.entry.getName()).executes(ctx -> getValue(ctx.getSource())).then(
|
||||||
CommandManager.argument("value", StringArgumentType.string())
|
CommandManager.argument("value", StringArgumentType.string())
|
||||||
.executes(ctx -> this.setValue(ctx.getSource(), StringArgumentType.getString(ctx, "value")))
|
.executes(ctx -> this.setValue(ctx.getSource(), StringArgumentType.getString(ctx, "value")))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private int setValue(ServerCommandSource source, Object value) {
|
private int setValue(ServerCommandSource source, Object value) {
|
||||||
@@ -4,9 +4,9 @@ import com.google.gson.ExclusionStrategy;
|
|||||||
import com.google.gson.FieldAttributes;
|
import com.google.gson.FieldAttributes;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
|
import eu.midnightdust.lib.util.PlatformVariables;
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.font.TextRenderer;
|
import net.minecraft.client.font.TextRenderer;
|
||||||
import net.minecraft.client.gui.DrawableHelper;
|
import net.minecraft.client.gui.DrawableHelper;
|
||||||
@@ -74,13 +74,13 @@ public abstract class MidnightConfig {
|
|||||||
private static final Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).excludeFieldsWithModifiers(Modifier.PRIVATE).addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy()).setPrettyPrinting().create();
|
private static final Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).excludeFieldsWithModifiers(Modifier.PRIVATE).addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy()).setPrettyPrinting().create();
|
||||||
|
|
||||||
public static void init(String modid, Class<?> config) {
|
public static void init(String modid, Class<?> config) {
|
||||||
path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json");
|
path = PlatformVariables.getConfigDirectory().resolve(modid + ".json");
|
||||||
configClass.put(modid, config);
|
configClass.put(modid, config);
|
||||||
|
|
||||||
for (Field field : config.getFields()) {
|
for (Field field : config.getFields()) {
|
||||||
EntryInfo info = new EntryInfo();
|
EntryInfo info = new EntryInfo();
|
||||||
if ((field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class)) && !field.isAnnotationPresent(Server.class) && !field.isAnnotationPresent(Hidden.class))
|
if ((field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class)) && !field.isAnnotationPresent(Server.class) && !field.isAnnotationPresent(Hidden.class))
|
||||||
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) initClient(modid, field, info);
|
if (PlatformVariables.isClientEnv()) initClient(modid, field, info);
|
||||||
if (field.isAnnotationPresent(Comment.class)) info.centered = field.getAnnotation(Comment.class).centered();
|
if (field.isAnnotationPresent(Comment.class)) info.centered = field.getAnnotation(Comment.class).centered();
|
||||||
if (field.isAnnotationPresent(Entry.class))
|
if (field.isAnnotationPresent(Entry.class))
|
||||||
try {
|
try {
|
||||||
@@ -174,7 +174,7 @@ public abstract class MidnightConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void write(String modid) {
|
public static void write(String modid) {
|
||||||
path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json");
|
path = PlatformVariables.getConfigDirectory().resolve(modid + ".json");
|
||||||
try {
|
try {
|
||||||
if (!Files.exists(path)) Files.createFile(path);
|
if (!Files.exists(path)) Files.createFile(path);
|
||||||
Files.write(path, gson.toJson(configClass.get(modid).getDeclaredConstructor().newInstance()).getBytes());
|
Files.write(path, gson.toJson(configClass.get(modid).getDeclaredConstructor().newInstance()).getBytes());
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package eu.midnightdust.lib.util;
|
package eu.midnightdust.lib.util;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.*;
|
||||||
|
|
||||||
public class MidnightColorUtil {
|
public class MidnightColorUtil {
|
||||||
public static float hue;
|
public static float hue;
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package eu.midnightdust.lib.util;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.CommandDispatcher;
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import dev.architectury.injectables.annotations.ExpectPlatform;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class PlatformVariables {
|
||||||
|
@ExpectPlatform
|
||||||
|
public static Path getConfigDirectory() {
|
||||||
|
// Just throw an error, the content should get replaced at runtime.
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
@ExpectPlatform
|
||||||
|
public static boolean isClientEnv() {
|
||||||
|
// Just throw an error, the content should get replaced at runtime.
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
@ExpectPlatform
|
||||||
|
public static boolean isModLoaded(String modid) {
|
||||||
|
// Just throw an error, the content should get replaced at runtime.
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
@ExpectPlatform
|
||||||
|
public static void registerCommand(LiteralArgumentBuilder<ServerCommandSource> command) {
|
||||||
|
// Just throw an error, the content should get replaced at runtime.
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
}
|
||||||
1
common/src/main/resources/architectury.common.json
Normal file
1
common/src/main/resources/architectury.common.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 293 B |
|
Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 217 B |
3
src/main/resources/midnightlib.mixins.json → common/src/main/resources/midnightlib.mixins.json
Executable file → Normal file
3
src/main/resources/midnightlib.mixins.json → common/src/main/resources/midnightlib.mixins.json
Executable file → Normal file
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"required": true,
|
"required": true,
|
||||||
|
"minVersion": "0.8",
|
||||||
"package": "eu.midnightdust.core.mixin",
|
"package": "eu.midnightdust.core.mixin",
|
||||||
"compatibilityLevel": "JAVA_16",
|
"compatibilityLevel": "JAVA_17",
|
||||||
"client": [
|
"client": [
|
||||||
"MixinOptionsScreen",
|
"MixinOptionsScreen",
|
||||||
"MixinPlayerEntityRenderer"
|
"MixinPlayerEntityRenderer"
|
||||||
19
fabric-like/build.gradle
Normal file
19
fabric-like/build.gradle
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
architectury {
|
||||||
|
common(rootProject.enabled_platforms.split(","))
|
||||||
|
}
|
||||||
|
repositories {
|
||||||
|
maven { url "https://maven.terraformersmc.com/releases" }
|
||||||
|
}
|
||||||
|
|
||||||
|
loom {
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
|
||||||
|
modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}"
|
||||||
|
// Remove the next line if you don't want to depend on the API
|
||||||
|
modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}"
|
||||||
|
modImplementation ("com.terraformersmc:modmenu:${rootProject.mod_menu_version}")
|
||||||
|
|
||||||
|
compileClasspath(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||||
|
}
|
||||||
@@ -19,9 +19,9 @@ 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 (!MidnightLibClient.hiddenMods.contains(modid))
|
||||||
map.put(modid, parent -> MidnightConfig.getScreen(parent, modid));
|
map.put(modid, parent -> MidnightConfig.getScreen(parent, modid));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
81
fabric/build.gradle
Normal file
81
fabric/build.gradle
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
plugins {
|
||||||
|
id "com.github.johnrengelman.shadow" version "7.1.2"
|
||||||
|
}
|
||||||
|
|
||||||
|
architectury {
|
||||||
|
platformSetupLoomIde()
|
||||||
|
fabric()
|
||||||
|
}
|
||||||
|
|
||||||
|
loom {
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
common
|
||||||
|
shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this.
|
||||||
|
compileClasspath.extendsFrom common
|
||||||
|
runtimeClasspath.extendsFrom common
|
||||||
|
developmentFabric.extendsFrom common
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
|
||||||
|
modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}"
|
||||||
|
|
||||||
|
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||||
|
shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive false }
|
||||||
|
common(project(path: ":fabric-like", configuration: "namedElements")) { transitive false }
|
||||||
|
shadowCommon(project(path: ":fabric-like", configuration: "transformProductionFabric")) { transitive false }
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
inputs.property "version", project.version
|
||||||
|
|
||||||
|
filesMatching("fabric.mod.json") {
|
||||||
|
expand "version": project.version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
exclude "architectury.common.json"
|
||||||
|
|
||||||
|
configurations = [project.configurations.shadowCommon]
|
||||||
|
classifier "dev-shadow"
|
||||||
|
}
|
||||||
|
|
||||||
|
remapJar {
|
||||||
|
injectAccessWidener = true
|
||||||
|
input.set shadowJar.archiveFile
|
||||||
|
dependsOn shadowJar
|
||||||
|
classifier null
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
|
classifier "dev"
|
||||||
|
}
|
||||||
|
|
||||||
|
sourcesJar {
|
||||||
|
def commonSources = project(":common").sourcesJar
|
||||||
|
dependsOn commonSources
|
||||||
|
from commonSources.archiveFile.map { zipTree(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
components.java {
|
||||||
|
withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
|
||||||
|
skip()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
mavenFabric(MavenPublication) {
|
||||||
|
artifactId = rootProject.archives_base_name + "-" + project.name
|
||||||
|
from components.java
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
||||||
|
repositories {
|
||||||
|
// Add repositories to publish to here.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,29 +1,17 @@
|
|||||||
package eu.midnightdust.core;
|
package eu.midnightdust.fabric.core;
|
||||||
|
|
||||||
import eu.midnightdust.core.config.MidnightLibConfig;
|
import eu.midnightdust.core.MidnightLibClient;
|
||||||
import eu.midnightdust.hats.web.HatLoader;
|
|
||||||
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
||||||
import eu.midnightdust.lib.config.MidnightConfig;
|
|
||||||
import eu.midnightdust.lib.util.MidnightColorUtil;
|
import eu.midnightdust.lib.util.MidnightColorUtil;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
|
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
public class MidnightLibClientFabric implements ClientModInitializer {
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class MidnightLibClient implements ClientModInitializer {
|
|
||||||
public static List<String> hiddenMods = new ArrayList<>();
|
|
||||||
|
|
||||||
public static final String MOD_ID = "midnightlib";
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
MidnightConfig.init("midnightlib", MidnightLibConfig.class);
|
|
||||||
hiddenMods.add("puzzle");
|
|
||||||
|
|
||||||
EntityModelLayerRegistry.registerModelLayer(WitchHatFeatureRenderer.WITCH_HAT_MODEL_LAYER, WitchHatFeatureRenderer::getTexturedModelData);
|
EntityModelLayerRegistry.registerModelLayer(WitchHatFeatureRenderer.WITCH_HAT_MODEL_LAYER, WitchHatFeatureRenderer::getTexturedModelData);
|
||||||
if (MidnightLibConfig.special_hats) HatLoader.init();
|
MidnightLibClient.onInitializeClient();
|
||||||
ClientTickEvents.END_CLIENT_TICK.register(
|
ClientTickEvents.END_CLIENT_TICK.register(
|
||||||
client -> MidnightColorUtil.tick()
|
client -> MidnightColorUtil.tick()
|
||||||
);
|
);
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package eu.midnightdust.fabric.core;
|
||||||
|
|
||||||
|
import eu.midnightdust.core.MidnightLibServer;
|
||||||
|
import net.fabricmc.api.DedicatedServerModInitializer;
|
||||||
|
|
||||||
|
public class MidnightLibServerFabric implements DedicatedServerModInitializer {
|
||||||
|
@Override
|
||||||
|
public void onInitializeServer() {
|
||||||
|
MidnightLibServer.onInitializeServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package eu.midnightdust.lib.util.fabric;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import eu.midnightdust.lib.util.PlatformVariables;
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
||||||
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
|
public class PlatformVariablesImpl {
|
||||||
|
/**
|
||||||
|
* This is our actual method to {@link PlatformVariables#getConfigDirectory()}.
|
||||||
|
*/
|
||||||
|
public static Path getConfigDirectory() {
|
||||||
|
return FabricLoader.getInstance().getConfigDir();
|
||||||
|
}
|
||||||
|
public static boolean isClientEnv() {
|
||||||
|
return FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT;
|
||||||
|
}
|
||||||
|
public static boolean isModLoaded(String modid) {
|
||||||
|
return FabricLoader.getInstance().isModLoaded(modid);
|
||||||
|
}
|
||||||
|
public static void registerCommand(LiteralArgumentBuilder<ServerCommandSource> command) {
|
||||||
|
CommandRegistrationCallback.EVENT.register((dispatcher, dedicated, registrationEnvironment) -> dispatcher.register(command));
|
||||||
|
}
|
||||||
|
}
|
||||||
4
src/main/resources/fabric.mod.json → fabric/src/main/resources/fabric.mod.json
Executable file → Normal file
4
src/main/resources/fabric.mod.json → fabric/src/main/resources/fabric.mod.json
Executable file → Normal file
@@ -21,10 +21,10 @@
|
|||||||
"environment": "*",
|
"environment": "*",
|
||||||
"entrypoints": {
|
"entrypoints": {
|
||||||
"client": [
|
"client": [
|
||||||
"eu.midnightdust.core.MidnightLibClient"
|
"eu.midnightdust.fabric.core.MidnightLibClientFabric"
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
"eu.midnightdust.core.MidnightLibServer"
|
"eu.midnightdust.fabric.core.MidnightLibServerFabric"
|
||||||
],
|
],
|
||||||
"modmenu": [
|
"modmenu": [
|
||||||
"eu.midnightdust.lib.config.AutoModMenu"
|
"eu.midnightdust.lib.config.AutoModMenu"
|
||||||
81
forge/build.gradle
Normal file
81
forge/build.gradle
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
plugins {
|
||||||
|
id "com.github.johnrengelman.shadow" version "7.1.2"
|
||||||
|
}
|
||||||
|
|
||||||
|
architectury {
|
||||||
|
platformSetupLoomIde()
|
||||||
|
forge()
|
||||||
|
}
|
||||||
|
|
||||||
|
loom {
|
||||||
|
forge {
|
||||||
|
mixinConfig "midnightlib.mixins.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
common
|
||||||
|
shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this.
|
||||||
|
compileClasspath.extendsFrom common
|
||||||
|
runtimeClasspath.extendsFrom common
|
||||||
|
developmentForge.extendsFrom common
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
forge "net.minecraftforge:forge:${rootProject.forge_version}"
|
||||||
|
|
||||||
|
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||||
|
shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false }
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
inputs.property "version", project.version
|
||||||
|
|
||||||
|
filesMatching("META-INF/mods.toml") {
|
||||||
|
expand "version": project.version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
exclude "fabric.mod.json"
|
||||||
|
exclude "architectury.common.json"
|
||||||
|
|
||||||
|
configurations = [project.configurations.shadowCommon]
|
||||||
|
classifier "dev-shadow"
|
||||||
|
}
|
||||||
|
|
||||||
|
remapJar {
|
||||||
|
input.set shadowJar.archiveFile
|
||||||
|
dependsOn shadowJar
|
||||||
|
classifier null
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
|
classifier "dev"
|
||||||
|
}
|
||||||
|
|
||||||
|
sourcesJar {
|
||||||
|
def commonSources = project(":common").sourcesJar
|
||||||
|
dependsOn commonSources
|
||||||
|
from commonSources.archiveFile.map { zipTree(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
components.java {
|
||||||
|
withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
|
||||||
|
skip()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
mavenForge(MavenPublication) {
|
||||||
|
artifactId = rootProject.archives_base_name + "-" + project.name
|
||||||
|
from components.java
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
||||||
|
repositories {
|
||||||
|
// Add repositories to publish to here.
|
||||||
|
}
|
||||||
|
}
|
||||||
1
forge/gradle.properties
Normal file
1
forge/gradle.properties
Normal file
@@ -0,0 +1 @@
|
|||||||
|
loom.platform=forge
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package eu.midnightdust.forge;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
||||||
|
import eu.midnightdust.lib.config.AutoCommand;
|
||||||
|
import eu.midnightdust.lib.util.MidnightColorUtil;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.client.event.EntityRenderersEvent;
|
||||||
|
import net.minecraftforge.event.RegisterCommandsEvent;
|
||||||
|
import net.minecraftforge.event.TickEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
|
||||||
|
@Mod.EventBusSubscriber(modid = "midnightlib", bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
|
||||||
|
public class MidnightLibEvents {
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void registerLayerDefinition(EntityRenderersEvent.RegisterLayerDefinitions event) {
|
||||||
|
event.registerLayerDefinition(WitchHatFeatureRenderer.WITCH_HAT_MODEL_LAYER, WitchHatFeatureRenderer::getTexturedModelData);
|
||||||
|
}
|
||||||
|
@SubscribeEvent
|
||||||
|
public void registerCommands(RegisterCommandsEvent event) {
|
||||||
|
for (LiteralArgumentBuilder<ServerCommandSource> command : AutoCommand.commands){
|
||||||
|
event.getDispatcher().register(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@SubscribeEvent
|
||||||
|
public void registerClientTick(TickEvent.ClientTickEvent event) {
|
||||||
|
MidnightColorUtil.tick();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package eu.midnightdust.forge;
|
||||||
|
|
||||||
|
import eu.midnightdust.core.MidnightLibClient;
|
||||||
|
import eu.midnightdust.core.MidnightLibServer;
|
||||||
|
import eu.midnightdust.lib.config.MidnightConfig;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.client.ConfigScreenHandler;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
import net.minecraftforge.fml.IExtensionPoint;
|
||||||
|
import net.minecraftforge.fml.ModList;
|
||||||
|
import net.minecraftforge.fml.ModLoadingContext;
|
||||||
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.network.NetworkConstants;
|
||||||
|
|
||||||
|
@Mod("midnightlib")
|
||||||
|
public class MidnightLibForge {
|
||||||
|
public MidnightLibForge() {
|
||||||
|
// Submit our event bus to let architectury register our content on the right time
|
||||||
|
//EventBuses.registerModEventBus("midnightlib", FMLJavaModLoadingContext.get().getModEventBus());
|
||||||
|
ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> NetworkConstants.IGNORESERVERONLY, (remote, server) -> true));
|
||||||
|
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> MidnightLibClient::onInitializeClient);
|
||||||
|
DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> MidnightLibServer::onInitializeServer);
|
||||||
|
ModList.get().applyForEachModContainer(modContainer -> {
|
||||||
|
if (MidnightConfig.configClass.containsKey(modContainer.getModId())) {
|
||||||
|
ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () ->
|
||||||
|
new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> MidnightConfig.getScreen(parent, modContainer.getModId())));
|
||||||
|
}
|
||||||
|
System.out.println(modContainer.getModId());
|
||||||
|
System.out.println("motschen");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () ->
|
||||||
|
new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> MidnightConfig.getScreen(parent, "midnightlib")));
|
||||||
|
MinecraftForge.EVENT_BUS.register(new MidnightLibEvents());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package eu.midnightdust.lib.util.forge;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import eu.midnightdust.lib.util.PlatformVariables;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraftforge.event.RegisterCommandsEvent;
|
||||||
|
import net.minecraftforge.fml.ModList;
|
||||||
|
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||||
|
import net.minecraftforge.fml.loading.FMLPaths;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
|
public class PlatformVariablesImpl {
|
||||||
|
/**
|
||||||
|
* This is our actual method to {@link PlatformVariables#getConfigDirectory()}.
|
||||||
|
*/
|
||||||
|
public static Path getConfigDirectory() {
|
||||||
|
return FMLPaths.CONFIGDIR.get();
|
||||||
|
}
|
||||||
|
public static boolean isClientEnv() {
|
||||||
|
return FMLEnvironment.dist.isClient();
|
||||||
|
}
|
||||||
|
public static boolean isModLoaded(String modid) {
|
||||||
|
return ModList.get().isLoaded(modid);
|
||||||
|
}
|
||||||
|
public static void registerCommand(LiteralArgumentBuilder<ServerCommandSource> command) {
|
||||||
|
// Ignored here, see MidnightLibEvents#registerCommands
|
||||||
|
}
|
||||||
|
}
|
||||||
28
forge/src/main/resources/META-INF/mods.toml
Normal file
28
forge/src/main/resources/META-INF/mods.toml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
modLoader = "javafml"
|
||||||
|
loaderVersion = "[43,)"
|
||||||
|
#issueTrackerURL = ""
|
||||||
|
license = "MIT License"
|
||||||
|
|
||||||
|
[[mods]]
|
||||||
|
modId = "midnightlib"
|
||||||
|
version = "${version}"
|
||||||
|
displayName = "MidnightLib"
|
||||||
|
authors = "TeamMidnightDust, Motschen"
|
||||||
|
description = '''
|
||||||
|
Common Library for Team MidnightDust's mods.
|
||||||
|
'''
|
||||||
|
#logoFile = ""
|
||||||
|
|
||||||
|
[[dependencies.midnightlib]]
|
||||||
|
modId = "forge"
|
||||||
|
mandatory = true
|
||||||
|
versionRange = "[43,)"
|
||||||
|
ordering = "NONE"
|
||||||
|
side = "BOTH"
|
||||||
|
|
||||||
|
[[dependencies.midnightlib]]
|
||||||
|
modId = "minecraft"
|
||||||
|
mandatory = true
|
||||||
|
versionRange = "[1.19.2,)"
|
||||||
|
ordering = "NONE"
|
||||||
|
side = "BOTH"
|
||||||
6
forge/src/main/resources/pack.mcmeta
Normal file
6
forge/src/main/resources/pack.mcmeta
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"pack": {
|
||||||
|
"description": "MidnightLib",
|
||||||
|
"pack_format": 9
|
||||||
|
}
|
||||||
|
}
|
||||||
31
gradle.properties
Executable file → Normal file
31
gradle.properties
Executable file → Normal file
@@ -1,18 +1,19 @@
|
|||||||
# Done to increase the memory available to gradle.
|
org.gradle.jvmargs=-Xmx4096M
|
||||||
org.gradle.jvmargs=-Xmx1G
|
|
||||||
|
|
||||||
# Fabric Properties
|
minecraft_version=1.19.2
|
||||||
# check these on https://fabricmc.net/use
|
enabled_platforms=quilt,fabric,forge
|
||||||
minecraft_version=1.19-rc2
|
|
||||||
yarn_mappings=1.19-rc2+build.1
|
|
||||||
loader_version=0.14.6
|
|
||||||
|
|
||||||
# Mod Properties
|
archives_base_name=midnightlib
|
||||||
mod_version = 0.6.2
|
mod_version=1.0.0
|
||||||
maven_group = eu.midnightdust
|
maven_group=eu.midnightdust
|
||||||
archives_base_name = midnightlib
|
|
||||||
|
|
||||||
# Dependencies
|
architectury_version=6.2.43
|
||||||
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
|
||||||
fabric_version=0.55.1+1.19
|
fabric_loader_version=0.14.9
|
||||||
mod_menu_version = 4.0.0-beta.4
|
fabric_api_version=0.59.0+1.19.2
|
||||||
|
|
||||||
|
forge_version=1.19.2-43.0.8
|
||||||
|
|
||||||
|
quilt_loader_version=0.17.2-beta.3
|
||||||
|
quilt_fabric_api_version=4.0.0-beta.7+0.59.0-1.19.2
|
||||||
|
mod_menu_version = 4.0.6
|
||||||
|
|||||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
6
gradlew
vendored
6
gradlew
vendored
@@ -205,6 +205,12 @@ set -- \
|
|||||||
org.gradle.wrapper.GradleWrapperMain \
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
"$@"
|
"$@"
|
||||||
|
|
||||||
|
# Stop when "xargs" is not available.
|
||||||
|
if ! command -v xargs >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "xargs is not available"
|
||||||
|
fi
|
||||||
|
|
||||||
# Use "xargs" to parse quoted args.
|
# Use "xargs" to parse quoted args.
|
||||||
#
|
#
|
||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
|||||||
180
gradlew.bat
vendored
180
gradlew.bat
vendored
@@ -1,89 +1,91 @@
|
|||||||
@rem
|
@rem
|
||||||
@rem Copyright 2015 the original author or authors.
|
@rem Copyright 2015 the original author or authors.
|
||||||
@rem
|
@rem
|
||||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@rem you may not use this file except in compliance with the License.
|
@rem you may not use this file except in compliance with the License.
|
||||||
@rem You may obtain a copy of the License at
|
@rem You may obtain a copy of the License at
|
||||||
@rem
|
@rem
|
||||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
@rem
|
@rem
|
||||||
@rem Unless required by applicable law or agreed to in writing, software
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
@rem See the License for the specific language governing permissions and
|
@rem See the License for the specific language governing permissions and
|
||||||
@rem limitations under the License.
|
@rem limitations under the License.
|
||||||
@rem
|
@rem
|
||||||
|
|
||||||
@if "%DEBUG%" == "" @echo off
|
@if "%DEBUG%"=="" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
@rem Gradle startup script for Windows
|
@rem Gradle startup script for Windows
|
||||||
@rem
|
@rem
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
|
|
||||||
@rem Set local scope for the variables with windows NT shell
|
@rem Set local scope for the variables with windows NT shell
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto execute
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
echo.
|
echo.
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
echo location of your Java installation.
|
echo location of your Java installation.
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
:findJavaFromJavaHome
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto execute
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
echo.
|
echo.
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
echo location of your Java installation.
|
echo location of your Java installation.
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
:fail
|
:fail
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
rem the _cmd.exe /c_ return code!
|
rem the _cmd.exe /c_ return code!
|
||||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
exit /b 1
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
:mainEnd
|
exit /b %EXIT_CODE%
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
|
||||||
|
:mainEnd
|
||||||
:omega
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
||||||
|
|||||||
88
quilt/build.gradle
Normal file
88
quilt/build.gradle
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
plugins {
|
||||||
|
id "com.github.johnrengelman.shadow" version "7.1.2"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven { url "https://maven.quiltmc.org/repository/release/" }
|
||||||
|
}
|
||||||
|
|
||||||
|
architectury {
|
||||||
|
platformSetupLoomIde()
|
||||||
|
loader("quilt")
|
||||||
|
}
|
||||||
|
|
||||||
|
loom {
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
common
|
||||||
|
shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this.
|
||||||
|
compileClasspath.extendsFrom common
|
||||||
|
runtimeClasspath.extendsFrom common
|
||||||
|
developmentQuilt.extendsFrom common
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
modImplementation "org.quiltmc:quilt-loader:${rootProject.quilt_loader_version}"
|
||||||
|
modApi "org.quiltmc.quilted-fabric-api:quilted-fabric-api:${rootProject.quilt_fabric_api_version}"
|
||||||
|
// Remove the next few lines if you don't want to depend on the API
|
||||||
|
|
||||||
|
common(project(path: ":common", configuration: "namedElements")) { transitive false }
|
||||||
|
shadowCommon(project(path: ":common", configuration: "transformProductionQuilt")) { transitive false }
|
||||||
|
common(project(path: ":fabric-like", configuration: "namedElements")) { transitive false }
|
||||||
|
shadowCommon(project(path: ":fabric-like", configuration: "transformProductionQuilt")) { transitive false }
|
||||||
|
}
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
inputs.property "group", rootProject.maven_group
|
||||||
|
inputs.property "version", project.version
|
||||||
|
|
||||||
|
filesMatching("quilt.mod.json") {
|
||||||
|
expand "group": rootProject.maven_group,
|
||||||
|
"version": project.version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
exclude "architectury.common.json"
|
||||||
|
|
||||||
|
configurations = [project.configurations.shadowCommon]
|
||||||
|
classifier "dev-shadow"
|
||||||
|
}
|
||||||
|
|
||||||
|
remapJar {
|
||||||
|
injectAccessWidener = true
|
||||||
|
input.set shadowJar.archiveFile
|
||||||
|
dependsOn shadowJar
|
||||||
|
classifier null
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
|
classifier "dev"
|
||||||
|
}
|
||||||
|
|
||||||
|
sourcesJar {
|
||||||
|
def commonSources = project(":common").sourcesJar
|
||||||
|
dependsOn commonSources
|
||||||
|
from commonSources.archiveFile.map { zipTree(it) }
|
||||||
|
}
|
||||||
|
|
||||||
|
components.java {
|
||||||
|
withVariantsFromConfiguration(project.configurations.shadowRuntimeElements) {
|
||||||
|
skip()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
mavenQuilt(MavenPublication) {
|
||||||
|
artifactId = rootProject.archives_base_name + "-" + project.name
|
||||||
|
from components.java
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
||||||
|
repositories {
|
||||||
|
// Add repositories to publish to here.
|
||||||
|
}
|
||||||
|
}
|
||||||
1
quilt/gradle.properties
Normal file
1
quilt/gradle.properties
Normal file
@@ -0,0 +1 @@
|
|||||||
|
loom.platform=quilt
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package eu.midnightdust.lib.util.quilt;
|
||||||
|
|
||||||
|
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||||
|
import eu.midnightdust.lib.util.PlatformVariables;
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import org.quiltmc.loader.api.QuiltLoader;
|
||||||
|
import org.quiltmc.loader.impl.QuiltLoaderImpl;
|
||||||
|
import org.quiltmc.qsl.command.api.CommandRegistrationCallback;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
|
public class PlatformVariablesImpl {
|
||||||
|
/**
|
||||||
|
* This is our actual method to {@link PlatformVariables#getConfigDirectory()}.
|
||||||
|
*/
|
||||||
|
public static Path getConfigDirectory() {
|
||||||
|
return QuiltLoader.getConfigDir();
|
||||||
|
}
|
||||||
|
public static boolean isClientEnv() {
|
||||||
|
return QuiltLoaderImpl.INSTANCE.getEnvironmentType() == EnvType.CLIENT;
|
||||||
|
}
|
||||||
|
public static boolean isModLoaded(String modid) {
|
||||||
|
return QuiltLoader.isModLoaded(modid);
|
||||||
|
}
|
||||||
|
public static void registerCommand(LiteralArgumentBuilder<ServerCommandSource> command) {
|
||||||
|
CommandRegistrationCallback.EVENT.register((dispatcher, dedicated, registrationEnvironment) -> dispatcher.register(command));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package eu.midnightdust.quilt.core;
|
||||||
|
|
||||||
|
import eu.midnightdust.core.MidnightLibClient;
|
||||||
|
import eu.midnightdust.hats.witch.WitchHatFeatureRenderer;
|
||||||
|
import eu.midnightdust.lib.util.MidnightColorUtil;
|
||||||
|
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
|
||||||
|
import org.quiltmc.loader.api.ModContainer;
|
||||||
|
import org.quiltmc.qsl.base.api.entrypoint.client.ClientModInitializer;
|
||||||
|
import org.quiltmc.qsl.lifecycle.api.client.event.ClientTickEvents;
|
||||||
|
|
||||||
|
public class MidnightLibClientQuilt implements ClientModInitializer {
|
||||||
|
@Override
|
||||||
|
public void onInitializeClient(ModContainer mod) {
|
||||||
|
EntityModelLayerRegistry.registerModelLayer(WitchHatFeatureRenderer.WITCH_HAT_MODEL_LAYER, WitchHatFeatureRenderer::getTexturedModelData);
|
||||||
|
MidnightLibClient.onInitializeClient();
|
||||||
|
ClientTickEvents.END.register(
|
||||||
|
client -> MidnightColorUtil.tick()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package eu.midnightdust.quilt.core;
|
||||||
|
|
||||||
|
import eu.midnightdust.core.MidnightLibServer;
|
||||||
|
import org.quiltmc.loader.api.ModContainer;
|
||||||
|
import org.quiltmc.qsl.base.api.entrypoint.server.DedicatedServerModInitializer;
|
||||||
|
|
||||||
|
public class MidnightLibServerQuilt implements DedicatedServerModInitializer {
|
||||||
|
@Override
|
||||||
|
public void onInitializeServer(ModContainer mod) {
|
||||||
|
MidnightLibServer.onInitializeServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
44
quilt/src/main/resources/quilt.mod.json
Normal file
44
quilt/src/main/resources/quilt.mod.json
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"schema_version": 1,
|
||||||
|
"quilt_loader": {
|
||||||
|
"group": "${group}",
|
||||||
|
"id": "midnightlib",
|
||||||
|
"version": "${version}",
|
||||||
|
"name": "MidnightLib",
|
||||||
|
"description": "Common Library for Team MidnightDust's mods.",
|
||||||
|
"authors": ["TeamMidnightDust","Motschen"],
|
||||||
|
"contact": {
|
||||||
|
"homepage": "https://www.midnightdust.eu/",
|
||||||
|
"sources": "https://github.com/TeamMidnightDust/MidnightLib",
|
||||||
|
"issues": "https://github.com/TeamMidnightDust/MidnightLib/issues"
|
||||||
|
},
|
||||||
|
"license": "MIT License",
|
||||||
|
"icon": "assets/midnightlib/icon.png",
|
||||||
|
"intermediate_mappings": "net.fabricmc:intermediary",
|
||||||
|
"environment": "*",
|
||||||
|
"entrypoints": {
|
||||||
|
"client": [
|
||||||
|
"eu.midnightdust.quilt.core.MidnightLibClientQuilt"
|
||||||
|
],
|
||||||
|
"server": [
|
||||||
|
"eu.midnightdust.quilt.core.MidnightLibServerQuilt"
|
||||||
|
],
|
||||||
|
"modmenu": [
|
||||||
|
"eu.midnightdust.lib.config.AutoModMenu"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mixins": [
|
||||||
|
"midnightlib.mixins.json"
|
||||||
|
],
|
||||||
|
"depends": [
|
||||||
|
{
|
||||||
|
"id": "quilt_loader",
|
||||||
|
"version": "*"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "quilt_base",
|
||||||
|
"version": "*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
16
settings.gradle
Executable file → Normal file
16
settings.gradle
Executable file → Normal file
@@ -1,10 +1,16 @@
|
|||||||
pluginManagement {
|
pluginManagement {
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
maven { url "https://maven.fabricmc.net/" }
|
||||||
maven {
|
maven { url "https://maven.architectury.dev/" }
|
||||||
name = 'Fabric'
|
maven { url "https://maven.minecraftforge.net/" }
|
||||||
url = 'https://maven.fabricmc.net/'
|
|
||||||
}
|
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include("common")
|
||||||
|
include("fabric-like")
|
||||||
|
include("fabric")
|
||||||
|
include("quilt")
|
||||||
|
include("forge")
|
||||||
|
|
||||||
|
rootProject.name = "midnightlib"
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
package eu.midnightdust.lib.config;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/** MidnightConfig documentation & examples:
|
|
||||||
* Thanks for choosing MidnightConfig - the fancy, tiny and lightweight config library.
|
|
||||||
* If you want to use the lib in your mod, here are some examples and hints:
|
|
||||||
* Every option in a MidnightConfig class has to be public and static, so we can access it from other classes.
|
|
||||||
* The config class also has to extend MidnightConfig*/
|
|
||||||
|
|
||||||
public class MidnightConfigExample extends MidnightConfig {
|
|
||||||
|
|
||||||
@Comment public static Comment text1; // Comments are rendered like an option without a button and are excluded from the config file
|
|
||||||
@Entry public static int fabric = 16777215; // Example for a int option
|
|
||||||
@Entry public static double world = 1.4D; // Example for a double option
|
|
||||||
@Entry public static boolean showInfo = true; // Example for a boolean option
|
|
||||||
@Entry public static String name = "Hello World!"; // Example for a string option
|
|
||||||
@Entry public static TestEnum testEnum = TestEnum.FABRIC; // Example for a enum option
|
|
||||||
public enum TestEnum { // Enums allow the user to cycle through predefined options
|
|
||||||
QUILT, FABRIC
|
|
||||||
}
|
|
||||||
@Entry(min=69,max=420) public static int hello = 420; // - The entered number has to be larger than 69 and smaller than 420
|
|
||||||
@Entry(width = 7, min = 7, isColor = true, name = "I am a color!") public static String titleColor = "#ffffff"; // The isColor property adds a preview box for a hexadecimal color
|
|
||||||
@Entry(name = "I am an array list!") public static List<String> arrayList = List.of("String1", "String2"); // Array String Lists are also supported
|
|
||||||
// The name field can be used to specify a custom translation string or plain text
|
|
||||||
|
|
||||||
public static int imposter = 16777215; // - Entries without an @Entry or @Comment annotation are ignored
|
|
||||||
|
|
||||||
/*
|
|
||||||
The .json language file for your config class could look similar to this:
|
|
||||||
{
|
|
||||||
"modid.midnightconfig.title":"I am a title", // "*.midnightconfig.title" defines the title of the screen
|
|
||||||
"modid.midnightconfig.text1":"I am a comment *u*", // Translation for the comment "text1" defined in the example config
|
|
||||||
"modid.midnightconfig.name":"I am a string!", // Translation for the field "name" defined in the example config
|
|
||||||
|
|
||||||
"modid.midnightconfig.name.tooltip":"uwu \n I am a new line",
|
|
||||||
// When hovering over the option "showInfo",
|
|
||||||
// this text will appear as a tooltip.
|
|
||||||
// "\n" inserts a line break.
|
|
||||||
|
|
||||||
"modid.midnightconfig.fabric":"I am an int",
|
|
||||||
"modid.midnightconfig.world":"I am a double",
|
|
||||||
"modid.midnightconfig.showInfo":"I am a boolean",
|
|
||||||
"modid.midnightconfig.hello":"I am a limited int!",
|
|
||||||
"modid.midnightconfig.testEnum":"I am an enum!",
|
|
||||||
"modid.midnightconfig.enum.TestEnum.FABRIC":"Fancy",
|
|
||||||
"modid.midnightconfig.enum.TestEnum.QUILT":"Fabulous"
|
|
||||||
}
|
|
||||||
To initialize the config you have to call "MidnightConfig.init("modid", MidnightConfigExample.class)" in your ModInitializer
|
|
||||||
|
|
||||||
To get an instance of the config screen you have to call "MidnightConfig.getScreen(parent, "modid");"
|
|
||||||
|
|
||||||
The code in your ModMenu integration class would look something like this:
|
|
||||||
@Override
|
|
||||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
|
||||||
return parent -> MidnightConfig.getScreen(parent, "modid");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user