aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/moe/nea/ledger/mixin/RegisterModResourcesPatch.java66
-rw-r--r--src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt (renamed from src/main/java/moe/nea/ledger/events/RegistrationFinishedEvent.kt)0
-rw-r--r--src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.java8
-rw-r--r--src/main/kotlin/moe/nea/ledger/utils/NoSideEffects.kt4
4 files changed, 70 insertions, 8 deletions
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<ModCandidate> candidates;
+
+ @Inject(method = "identifyMods", at = @At("HEAD"), remap = false)
+ private void addCandidate(CallbackInfoReturnable<List<ModContainer>> 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<ModContainer> explore(ASMDataTable table) {
+ return Collections.singletonList(container);
+ }
+ });
+ }
+}
diff --git a/src/main/java/moe/nea/ledger/events/RegistrationFinishedEvent.kt b/src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt
index d36e0c7..d36e0c7 100644
--- a/src/main/java/moe/nea/ledger/events/RegistrationFinishedEvent.kt
+++ b/src/main/kotlin/moe/nea/ledger/events/RegistrationFinishedEvent.kt
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