aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornea <romangraef@gmail.com>2022-02-16 14:10:05 +0100
committernea <romangraef@gmail.com>2022-04-14 04:10:06 +0200
commitd7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6 (patch)
treeed29b1b0521e1b7709b4cdda8ae1abcdae2303c0
parenta2854c8f47c8d727a8e90141557d0006a2c2d8a9 (diff)
downloadNotEnoughUpdates-d7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6.tar.gz
NotEnoughUpdates-d7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6.tar.bz2
NotEnoughUpdates-d7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6.zip
add neu repo as resource pack, cause why not at this point
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEURepoResourcePack.java75
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/AccessorMinecraft.java14
-rw-r--r--src/main/resources/mixins.notenoughupdates.json5
3 files changed, 93 insertions, 1 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEURepoResourcePack.java b/src/main/java/io/github/moulberry/notenoughupdates/NEURepoResourcePack.java
new file mode 100644
index 00000000..2a5cda92
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NEURepoResourcePack.java
@@ -0,0 +1,75 @@
+package io.github.moulberry.notenoughupdates;
+
+import com.google.gson.JsonObject;
+import net.minecraft.client.resources.IResourcePack;
+import net.minecraft.client.resources.data.IMetadataSection;
+import net.minecraft.client.resources.data.IMetadataSerializer;
+import net.minecraft.util.ResourceLocation;
+
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.HashSet;
+import java.util.Set;
+
+public class NEURepoResourcePack implements IResourcePack {
+
+ File repoLocation;
+ Set<String> resourceDomains = new HashSet<>();
+
+ public NEURepoResourcePack(File repoLocation, String domain) {
+ this.repoLocation = repoLocation;
+ resourceDomains.add(domain);
+ }
+
+ public boolean loadRepoLocation() {
+ if (repoLocation != null) return true;
+ NotEnoughUpdates instance = NotEnoughUpdates.INSTANCE;
+ if (instance == null) return false;
+ NEUManager manager = instance.manager;
+ if (manager == null) return false;
+ repoLocation = manager.repoLocation;
+ return repoLocation != null;
+ }
+
+ public File getFileForResource(ResourceLocation loc) {
+ if (repoLocation == null) {
+ if (!loadRepoLocation())
+ return null;
+ }
+ if (!"neurepo".equals(loc.getResourceDomain())) {
+ return null;
+ }
+ return new File(repoLocation, loc.getResourcePath());
+ }
+
+ @Override
+ public InputStream getInputStream(ResourceLocation resourceLocation) throws IOException {
+ return new BufferedInputStream(new FileInputStream(getFileForResource(resourceLocation)));
+ }
+
+ @Override
+ public boolean resourceExists(ResourceLocation resourceLocation) {
+ File file = getFileForResource(resourceLocation);
+ return file != null && file.exists();
+ }
+
+ @Override
+ public Set<String> getResourceDomains() {
+ return resourceDomains;
+ }
+
+ @Override
+ public <T extends IMetadataSection> T getPackMetadata(IMetadataSerializer iMetadataSerializer, String s) throws IOException {
+ return iMetadataSerializer.parseMetadataSection(s, new JsonObject());
+ }
+
+ @Override
+ public BufferedImage getPackImage() throws IOException {
+ return null;
+ }
+
+ @Override
+ public String getPackName() {
+ return "NEU Repo Resources";
+ }
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/mixins/AccessorMinecraft.java b/src/main/java/io/github/moulberry/notenoughupdates/mixins/AccessorMinecraft.java
new file mode 100644
index 00000000..0277a18b
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/mixins/AccessorMinecraft.java
@@ -0,0 +1,14 @@
+package io.github.moulberry.notenoughupdates.mixins;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.resources.IResourcePack;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+import java.util.List;
+
+@Mixin(Minecraft.class)
+public interface AccessorMinecraft {
+ @Accessor(value = "defaultResourcePacks")
+ List<IResourcePack> onGetDefaultResourcePacks();
+}
diff --git a/src/main/resources/mixins.notenoughupdates.json b/src/main/resources/mixins.notenoughupdates.json
index a7018f32..6c95e480 100644
--- a/src/main/resources/mixins.notenoughupdates.json
+++ b/src/main/resources/mixins.notenoughupdates.json
@@ -4,12 +4,12 @@
"compatibilityLevel": "JAVA_8",
"mixins": [
"AccessorEntityAgeable",
+ "AccessorEntityArmorStand",
"MixinAbstractClientPlayer",
"MixinContainer",
"MixinEffectRenderer",
"MixinEntity",
"MixinEntityAgeable",
- "AccessorEntityArmorStand",
"MixinEntityHorse",
"MixinEntityPlayer",
"MixinEntityPlayerSP",
@@ -43,5 +43,8 @@
"MixinVboRenderList",
"MixinWorld",
"MixinWorldClient"
+ ],
+ "client": [
+ "AccessorMinecraft"
]
}