diff options
author | nea <romangraef@gmail.com> | 2022-02-16 14:10:05 +0100 |
---|---|---|
committer | nea <romangraef@gmail.com> | 2022-04-14 04:10:06 +0200 |
commit | d7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6 (patch) | |
tree | ed29b1b0521e1b7709b4cdda8ae1abcdae2303c0 | |
parent | a2854c8f47c8d727a8e90141557d0006a2c2d8a9 (diff) | |
download | NotEnoughUpdates-d7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6.tar.gz NotEnoughUpdates-d7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6.tar.bz2 NotEnoughUpdates-d7d60efccd99bd5f97d3a6957e9c24b67ce9b2e6.zip |
add neu repo as resource pack, cause why not at this point
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" ] } |