From c59693dff859845e43dde361a61ef98a84f7490f Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Wed, 8 Jan 2025 14:38:48 +0100 Subject: fix: Classes and resources being entangled --- build.gradle.kts | 12 +--- .../nea/ledger/events/RegistrationFinishedEvent.kt | 7 --- .../ledger/mixin/RegisterModResourcesPatch.java | 66 ++++++++++++++++++++++ .../nea/ledger/events/RegistrationFinishedEvent.kt | 7 +++ .../kotlin/moe/nea/ledger/utils/NoSideEffects.java | 8 --- .../kotlin/moe/nea/ledger/utils/NoSideEffects.kt | 4 ++ 6 files changed, 78 insertions(+), 26 deletions(-) delete mode 100644 src/main/java/moe/nea/ledger/events/RegistrationFinishedEvent.kt create mode 100644 src/main/java/moe/nea/ledger/mixin/RegisterModResourcesPatch.java create mode 100644 src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt delete mode 100644 src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.java create mode 100644 src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.kt diff --git a/build.gradle.kts b/build.gradle.kts index 2fbbd99..a6ee08c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -59,6 +59,7 @@ loom { log4jConfigs.from(file("log4j2.xml")) launchConfigs { "client" { + property("ledger.bonusresourcemod", sourceSets.main.get().output.resourcesDir!!.absolutePath) property("mixin.debug", "true") arg("--tweakClass", "org.spongepowered.asm.launch.MixinTweaker") arg("--tweakClass", "io.github.notenoughupdates.moulconfig.tweaker.DevelopmentResourceTweaker") @@ -82,16 +83,6 @@ loom { } } -tasks.compileJava { - dependsOn(tasks.processResources) -} - -sourceSets.main { - output.setResourcesDir(sourceSets.main.flatMap { it.java.classesDirectory }) - java.srcDir(layout.projectDirectory.dir("src/main/kotlin")) - kotlin.destinationDirectory.set(java.destinationDirectory) -} - allprojects { repositories { mavenCentral() @@ -229,7 +220,6 @@ val remapJar by tasks.named("remapJar") { tasks.jar { archiveClassifier.set("without-deps") - dependsOn(tasks.processResources) // Why is this needed? destinationDirectory.set(layout.buildDirectory.dir("badjars")) } diff --git a/src/main/java/moe/nea/ledger/events/RegistrationFinishedEvent.kt b/src/main/java/moe/nea/ledger/events/RegistrationFinishedEvent.kt deleted file mode 100644 index d36e0c7..0000000 --- a/src/main/java/moe/nea/ledger/events/RegistrationFinishedEvent.kt +++ /dev/null @@ -1,7 +0,0 @@ -package moe.nea.ledger.events - -import net.minecraftforge.fml.common.eventhandler.Event - -class RegistrationFinishedEvent : Event() { - -} diff --git a/src/main/java/moe/nea/ledger/mixin/RegisterModResourcesPatch.java b/src/main/java/moe/nea/ledger/mixin/RegisterModResourcesPatch.java new file mode 100644 index 0000000..e925d18 --- /dev/null +++ b/src/main/java/moe/nea/ledger/mixin/RegisterModResourcesPatch.java @@ -0,0 +1,66 @@ +package moe.nea.ledger.mixin; + +import com.google.common.eventbus.EventBus; +import net.minecraftforge.fml.client.FMLFileResourcePack; +import net.minecraftforge.fml.common.DummyModContainer; +import net.minecraftforge.fml.common.LoadController; +import net.minecraftforge.fml.common.ModContainer; +import net.minecraftforge.fml.common.ModMetadata; +import net.minecraftforge.fml.common.discovery.ASMDataTable; +import net.minecraftforge.fml.common.discovery.ContainerType; +import net.minecraftforge.fml.common.discovery.ModCandidate; +import net.minecraftforge.fml.common.discovery.ModDiscoverer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.io.File; +import java.util.Collections; +import java.util.List; + +@Mixin(value = ModDiscoverer.class, remap = false) +public class RegisterModResourcesPatch { + @Shadow + private List candidates; + + @Inject(method = "identifyMods", at = @At("HEAD"), remap = false) + private void addCandidate(CallbackInfoReturnable> cir) { + String bonusResourceMod = System.getProperty("ledger.bonusresourcemod"); + if (bonusResourceMod == null) return; + File file = new File(bonusResourceMod); + if (!file.isDirectory()) return; + ModMetadata modMetadata = new ModMetadata(); + modMetadata.modId = "ledger-bonus"; + modMetadata.name = "Ledger Bonus Resources"; + modMetadata.autogenerated = true; + ModContainer container = new DummyModContainer(modMetadata) { + @Override + public Object getMod() { + return new Object(); + } + + @Override + public boolean registerBus(EventBus bus, LoadController controller) { + return true; + } + + @Override + public File getSource() { + return file; + } + + @Override + public Class getCustomResourcePackClass() { + return FMLFileResourcePack.class; + } + }; + candidates.add(new ModCandidate(file, file, ContainerType.DIR) { + @Override + public List explore(ASMDataTable table) { + return Collections.singletonList(container); + } + }); + } +} diff --git a/src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt b/src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt new file mode 100644 index 0000000..d36e0c7 --- /dev/null +++ b/src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt @@ -0,0 +1,7 @@ +package moe.nea.ledger.events + +import net.minecraftforge.fml.common.eventhandler.Event + +class RegistrationFinishedEvent : Event() { + +} diff --git a/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.java b/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.java deleted file mode 100644 index f432130..0000000 --- a/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.java +++ /dev/null @@ -1,8 +0,0 @@ -package moe.nea.ledger.utils; - -import kotlin.annotation.AnnotationRetention; -import kotlin.annotation.Retention; - -@Retention(AnnotationRetention.BINARY) -public @interface NoSideEffects { -} diff --git a/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.kt b/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.kt new file mode 100644 index 0000000..9b0e7a3 --- /dev/null +++ b/src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.kt @@ -0,0 +1,4 @@ +package moe.nea.ledger.utils + +@Retention(AnnotationRetention.BINARY) +annotation class NoSideEffects -- cgit