aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/thatgravyboat/amod/textures
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/thatgravyboat/amod/textures')
-rw-r--r--src/main/java/com/thatgravyboat/amod/textures/TextureObject.java37
-rw-r--r--src/main/java/com/thatgravyboat/amod/textures/Textures.java56
2 files changed, 93 insertions, 0 deletions
diff --git a/src/main/java/com/thatgravyboat/amod/textures/TextureObject.java b/src/main/java/com/thatgravyboat/amod/textures/TextureObject.java
new file mode 100644
index 000000000..e9280b5a7
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/amod/textures/TextureObject.java
@@ -0,0 +1,37 @@
+package com.thatgravyboat.amod.textures;
+
+import com.google.gson.JsonObject;
+import java.util.Arrays;
+import net.minecraft.util.ResourceLocation;
+
+public class TextureObject {
+
+ public String displayName;
+ public ResourceLocation bars = resource("bars.png");
+ public ResourceLocation mines = resource("mines.png");
+ public ResourceLocation playerStats = resource("playerstats.png");
+ public ResourceLocation stats = resource("stats.png");
+ public ResourceLocation dungeon = resource("dungeon.png");
+ public ResourceLocation dialogue = resource("dialogue.png");
+
+ public TextureObject(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public static TextureObject decode(JsonObject json) {
+ TextureObject textureObject = new TextureObject(json.get("displayName").getAsString());
+ Arrays
+ .stream(textureObject.getClass().getDeclaredFields())
+ .filter(field -> field.getType().equals(ResourceLocation.class))
+ .forEach(field -> {
+ try {
+ field.set(textureObject, new ResourceLocation(json.get(field.getName()).getAsString()));
+ } catch (Exception ignored) {}
+ });
+ return textureObject;
+ }
+
+ private static ResourceLocation resource(String path) {
+ return new ResourceLocation("lorenzmod", path);
+ }
+}
diff --git a/src/main/java/com/thatgravyboat/amod/textures/Textures.java b/src/main/java/com/thatgravyboat/amod/textures/Textures.java
new file mode 100644
index 000000000..9985fc43c
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/amod/textures/Textures.java
@@ -0,0 +1,56 @@
+package com.thatgravyboat.amod.textures;
+
+import com.google.common.collect.Lists;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import net.minecraft.client.resources.IResource;
+import net.minecraft.client.resources.IResourceManager;
+import net.minecraft.client.resources.IResourceManagerReloadListener;
+import net.minecraft.util.ResourceLocation;
+
+public class Textures implements IResourceManagerReloadListener {
+
+ private static final TextureObject DEFAULT_TEXTURE = new TextureObject("Default");
+
+ private static final Gson gson = new GsonBuilder().create();
+ public static final List<TextureObject> styles = Lists.newArrayList(DEFAULT_TEXTURE);
+ public static TextureObject texture = DEFAULT_TEXTURE;
+
+ public static void setTexture(int selected) {
+ if (selected >= styles.size() || selected < 0) {
+ texture = DEFAULT_TEXTURE;
+ // LorenzMod.config.misc.style = 0;
+ } else {
+ texture = styles.get(selected);
+ }
+ }
+
+ @Override
+ public void onResourceManagerReload(IResourceManager resourceManager) {
+ styles.clear();
+ styles.add(DEFAULT_TEXTURE);
+ DEFAULT_TEXTURE.displayName = "Default";
+ try {
+ ResourceLocation stylesData = new ResourceLocation("lorenzmod:data/styles.json");
+
+ for (IResource resource : resourceManager.getAllResources(stylesData)) {
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) {
+ JsonObject jsonObject = gson.fromJson(reader, JsonObject.class);
+ for (JsonElement json : jsonObject.getAsJsonArray("styles")) {
+ styles.add(TextureObject.decode((JsonObject) json));
+ }
+ if (DEFAULT_TEXTURE.displayName.equals("Default") && jsonObject.has("defaultDisplayName") && jsonObject.get("defaultDisplayName").isJsonPrimitive()) {
+ DEFAULT_TEXTURE.displayName = jsonObject.get("defaultDisplayName").getAsString();
+ }
+ }
+ }
+ } catch (Exception ignored) {}
+ // if (LorenzMod.config != null) setTexture(LorenzMod.config.misc.style);
+ }
+}