aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/thatgravyboat/skyblockhud_2/tracker
diff options
context:
space:
mode:
authorLorenz <ESs95s3P5z8Pheb>2022-07-08 16:12:55 +0200
committerLorenz <ESs95s3P5z8Pheb>2022-07-08 16:12:55 +0200
commit4463c7fa78f886a8abc09e867dd17cde2a685ad4 (patch)
tree9245b4eed7f410f1c168688a77eeda6bfd55c994 /src/main/java/com/thatgravyboat/skyblockhud_2/tracker
parent9e08dbf2baa9819abd281ad285df7462c99491e2 (diff)
downloadskyhanni-4463c7fa78f886a8abc09e867dd17cde2a685ad4.tar.gz
skyhanni-4463c7fa78f886a8abc09e867dd17cde2a685ad4.tar.bz2
skyhanni-4463c7fa78f886a8abc09e867dd17cde2a685ad4.zip
code cleanup
Diffstat (limited to 'src/main/java/com/thatgravyboat/skyblockhud_2/tracker')
-rw-r--r--src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerFileLoader.java136
-rw-r--r--src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerHandler.java108
-rw-r--r--src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerObject.java97
3 files changed, 341 insertions, 0 deletions
diff --git a/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerFileLoader.java b/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerFileLoader.java
new file mode 100644
index 000000000..ef51769ee
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerFileLoader.java
@@ -0,0 +1,136 @@
+//package com.thatgravyboat.skyblockhud.tracker;
+//
+//import com.google.gson.*;
+//import at.lorenz.mod.LorenzMod;
+//import com.thatgravyboat.skyblockhud.location.Locations;
+//import java.io.*;
+//import java.nio.charset.StandardCharsets;
+//import java.util.EnumSet;
+//import java.util.HashMap;
+//import java.util.Locale;
+//import net.minecraft.client.Minecraft;
+//import net.minecraft.util.ResourceLocation;
+//
+//public class TrackerFileLoader {
+//
+// private static final Gson gson = new GsonBuilder().create();
+//
+// private static void loadTrackers(JsonObject object) {
+// for (JsonElement element : object.get("trackers").getAsJsonArray()) {
+// JsonObject tracker = element.getAsJsonObject();
+// EnumSet<Locations> locations = EnumSet.noneOf(Locations.class);
+// tracker
+// .get("location")
+// .getAsJsonArray()
+// .forEach(l -> {
+// Locations location = Locations.get(l.getAsString().toUpperCase(Locale.ENGLISH));
+// if (location != Locations.DEFAULT) {
+// locations.add(location);
+// }
+// });
+// if (tracker.has("drops")) {
+// for (JsonElement drop : tracker.get("drops").getAsJsonArray()) {
+// TrackerHandler.trackerObjects.add(new TrackerObject(drop.getAsJsonObject(), locations));
+// }
+// }
+// if (tracker.has("mobs")) {
+// for (JsonElement mob : tracker.get("mobs").getAsJsonArray()) {
+// TrackerHandler.trackerObjects.add(new TrackerObject(mob.getAsJsonObject(), locations));
+// }
+// }
+// }
+//
+// for (TrackerObject trackerObject : TrackerHandler.trackerObjects) {
+// for (Locations location : trackerObject.getLocations()) {
+// if (TrackerHandler.trackers.containsKey(location)) {
+// TrackerHandler.trackers.get(location).put(trackerObject.getInternalId(), trackerObject);
+// } else {
+// HashMap<String, TrackerObject> value = new HashMap<>();
+// value.put(trackerObject.getInternalId(), trackerObject);
+// TrackerHandler.trackers.put(location, value);
+// }
+// }
+// }
+// }
+//
+// public static void loadTrackersFile() {
+// TrackerHandler.trackers.clear();
+// TrackerHandler.trackerObjects.clear();
+// try {
+// ResourceLocation trackers = new ResourceLocation("skyblockhud:data/trackers.json");
+// InputStream is = Minecraft.getMinecraft().getResourceManager().getResource(trackers).getInputStream();
+//
+// try (BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
+// loadTrackers(gson.fromJson(reader, JsonObject.class));
+// }
+// } catch (Exception ignored) {}
+// }
+//
+// private static JsonElement getTrackerFile() {
+// JsonArray stats = new JsonArray();
+// TrackerHandler.trackerObjects.forEach(trackerObject -> {
+// if (trackerObject.getCount() > 0) {
+// JsonObject jsonObject = new JsonObject();
+// JsonArray locations = new JsonArray();
+// trackerObject.getLocations().forEach(l -> locations.add(new JsonPrimitive(l.toString().toUpperCase(Locale.ENGLISH))));
+// jsonObject.add("id", new JsonPrimitive(trackerObject.getInternalId()));
+// jsonObject.add("locations", locations);
+// jsonObject.add("count", new JsonPrimitive(trackerObject.getCount()));
+// stats.add(jsonObject);
+// }
+// });
+// return stats;
+// }
+//
+// public static boolean loadTrackerStatsFile() {
+// File configFile = new File(LorenzMod.configDirectory, "sbh-trackers-stats.json");
+//
+// try {
+// if (configFile.createNewFile()) {
+// return true;
+// }
+//
+// try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(configFile), StandardCharsets.UTF_8))) {
+// JsonObject json = gson.fromJson(reader, JsonObject.class);
+// if (json.has("trackerStats")) {
+// json
+// .getAsJsonArray("trackerStats")
+// .forEach(element -> {
+// if (element.isJsonObject()) {
+// JsonObject object = element.getAsJsonObject();
+// JsonArray locations = object.get("locations").getAsJsonArray();
+// Locations firstLocation = null;
+// for (JsonElement location : locations) {
+// firstLocation = Locations.get(location.getAsString());
+// if (!firstLocation.equals(Locations.DEFAULT)) break;
+// }
+//
+// if (firstLocation != null && !firstLocation.equals(Locations.DEFAULT)) {
+// TrackerHandler.trackers.get(firstLocation).get(object.get("id").getAsString()).setCount(object.get("count").getAsInt());
+// }
+// }
+// });
+//
+// TrackerHandler.trackers.forEach((location, map) -> {
+// TrackerHandler.trackers.put(location, TrackerHandler.sortTrackers(map, (entry1, entry2) -> Integer.compare(entry2.getValue().getCount(), entry1.getValue().getCount())));
+// });
+// }
+// }
+// } catch (Exception ignored) {}
+// return false;
+// }
+//
+// public static void saveTrackerStatsFile() {
+// File configFile = new File(LorenzMod.configDirectory, "sbh-trackers-stats.json");
+//
+// try {
+// configFile.createNewFile();
+//
+// try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(configFile), StandardCharsets.UTF_8))) {
+// JsonObject json = new JsonObject();
+// json.add("trackerStats", getTrackerFile());
+// writer.write(gson.toJson(json));
+// }
+// } catch (IOException ignored) {}
+// }
+//}
diff --git a/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerHandler.java b/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerHandler.java
new file mode 100644
index 000000000..7cb059ba5
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerHandler.java
@@ -0,0 +1,108 @@
+//package com.thatgravyboat.skyblockhud.tracker;
+//
+//import at.lorenz.mod.LorenzMod;
+//import com.thatgravyboat.skyblockhud.api.events.SkyBlockEntityKilled;
+//import com.thatgravyboat.skyblockhud.location.LocationHandler;
+//import com.thatgravyboat.skyblockhud.location.Locations;
+//import java.util.*;
+//import net.minecraft.client.Minecraft;
+//import net.minecraft.client.gui.Gui;
+//import net.minecraft.client.renderer.RenderHelper;
+//import net.minecraft.client.renderer.entity.RenderItem;
+//import net.minecraft.item.ItemStack;
+//import net.minecraftforge.client.event.RenderGameOverlayEvent;
+//import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+//
+//public class TrackerHandler extends Gui {
+//
+// public static Set<TrackerObject> trackerObjects = new HashSet<>();
+// public static LinkedHashMap<Locations, Map<String, TrackerObject>> trackers = new LinkedHashMap<>();
+//
+// public static <K, V> Map<K, V> sortTrackers(Map<K, V> map, Comparator<? super Map.Entry<K, V>> comparator) {
+// List<Map.Entry<K, V>> list = new ArrayList<>(map.entrySet());
+// list.sort(comparator);
+//
+// Map<K, V> result = new LinkedHashMap<>();
+// for (Map.Entry<K, V> entry : list) {
+// result.put(entry.getKey(), entry.getValue());
+// }
+//
+// return result;
+// }
+//
+// public static void onItemAdded(String id, int amount, String specialId, int number) {
+// if (LorenzMod.hasSkyblockScoreboard() && trackers.containsKey(LocationHandler.getCurrentLocation())) {
+// Map<String, TrackerObject> trackerMap = trackers.get(LocationHandler.getCurrentLocation());
+// String dropId = id;
+// if (specialId != null) {
+// dropId = specialId.toUpperCase() + ";" + number;
+// }
+//
+// if (trackerMap != null && trackerMap.containsKey(dropId)) {
+// TrackerObject object = trackerMap.get(dropId);
+// object.increaseCount(amount);
+// trackers.put(LocationHandler.getCurrentLocation(), sortTrackers(trackerMap, (entry1, entry2) -> Integer.compare(entry2.getValue().getCount(), entry1.getValue().getCount())));
+// }
+// }
+// }
+//
+// public static void drawItemStack(ItemStack stack, int x, int y) {
+// if (stack == null) return;
+// RenderItem itemRender = Minecraft.getMinecraft().getRenderItem();
+// RenderHelper.enableGUIStandardItemLighting();
+// itemRender.zLevel = -145;
+// itemRender.renderItemAndEffectIntoGUI(stack, x, y);
+// itemRender.zLevel = 0;
+// RenderHelper.disableStandardItemLighting();
+// }
+//
+// @SubscribeEvent
+// public void onSbEntityDeath(SkyBlockEntityKilled event) {
+// if (LorenzMod.hasSkyblockScoreboard() && trackers.containsKey(LocationHandler.getCurrentLocation())) {
+// Map<String, TrackerObject> trackerMap = trackers.get(LocationHandler.getCurrentLocation());
+// if (trackerMap.containsKey("ENTITY:" + event.id)) {
+// TrackerObject object = trackerMap.get("ENTITY:" + event.id);
+// object.increaseCount();
+// trackers.put(LocationHandler.getCurrentLocation(), sortTrackers(trackerMap, (entry1, entry2) -> Integer.compare(entry2.getValue().getCount(), entry1.getValue().getCount())));
+// }
+// }
+// }
+//
+// @SubscribeEvent
+// public void renderOverlay(RenderGameOverlayEvent.Post event) {
+// // if (Utils.overlayShouldRender(event.type, SkyblockHud.hasSkyblockScoreboard(), trackers.containsKey(LocationHandler.getCurrentLocation()), !SkyblockHud.config.trackers.hideTracker)) {
+// // Map<String, TrackerObject> tracker = trackers.get(LocationHandler.getCurrentLocation());
+// // Minecraft mc = Minecraft.getMinecraft();
+// //
+// // if (tracker != null) {
+// // Position pos = SkyblockHud.config.trackers.trackerPosition;
+// // int startPos = pos.getAbsX(event.resolution, (tracker.size() >= 6 ? 130 : tracker.size() * 20));
+// // int y = pos.getAbsY(event.resolution, (int) (10 + Math.ceil(tracker.size() / 5d) * 20));
+// //
+// // Gui.drawRect(startPos, y, startPos + 130, y + 10, -1072689136);
+// // mc.fontRendererObj.drawString("Tracker", startPos + 4, y + 1, 0xffffff, false);
+// // y += 10;
+// // Gui.drawRect(startPos, y, startPos + (tracker.size() >= 6 ? 130 : (tracker.size() * 20) + 10), (int) (y + (Math.ceil(tracker.size() / 5d) * 20)), 1610612736);
+// // int x = startPos + 5;
+// // for (TrackerObject object : tracker.values()) {
+// // String s = Utils.formattedNumber(object.getCount(), 1000);
+// // GlStateManager.disableLighting();
+// // GlStateManager.enableDepth();
+// // drawItemStack(object.getDisplayStack(), x, y);
+// // GlStateManager.disableDepth();
+// // GlStateManager.disableBlend();
+// // mc.fontRendererObj.drawStringWithShadow(s, (float) (x + 19 - 2 - mc.fontRendererObj.getStringWidth(s)), (float) (y + 9), object.getCount() < 1 ? 16733525 : 16777215);
+// // GlStateManager.enableBlend();
+// // GlStateManager.enableDepth();
+// //
+// // if ((x - startPos + 5) / 20 == 5) {
+// // x = startPos + 5;
+// // y += 20;
+// // } else {
+// // x += 20;
+// // }
+// // }
+// // }
+// // }
+// }
+//}
diff --git a/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerObject.java b/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerObject.java
new file mode 100644
index 000000000..0f827c6c3
--- /dev/null
+++ b/src/main/java/com/thatgravyboat/skyblockhud_2/tracker/TrackerObject.java
@@ -0,0 +1,97 @@
+//package com.thatgravyboat.skyblockhud.tracker;
+//
+//import com.google.gson.JsonObject;
+//import com.thatgravyboat.skyblockhud.location.Locations;
+//import java.util.EnumSet;
+//import java.util.Locale;
+//import net.minecraft.item.Item;
+//import net.minecraft.item.ItemStack;
+//import net.minecraft.nbt.NBTBase;
+//import net.minecraft.nbt.NBTTagCompound;
+//import net.minecraft.nbt.NBTTagList;
+//import net.minecraft.util.ResourceLocation;
+//
+//public class TrackerObject {
+//
+// private final ItemStack stack;
+// private final String internalId;
+// private final EnumSet<Locations> locations;
+// private final boolean isEntity;
+// private int count;
+//
+// public TrackerObject(JsonObject jsonObject, EnumSet<Locations> locations) {
+// this.stack = decodeToItemStack(jsonObject);
+// this.internalId = jsonObject.get("id").getAsString();
+// this.isEntity = jsonObject.get("id").getAsString().contains("entity:");
+// this.locations = locations;
+// }
+//
+// public static ItemStack decodeToItemStack(JsonObject jsonObject) {
+// jsonObject = jsonObject.getAsJsonObject("displayItem");
+// int meta = jsonObject.get("meta").getAsInt();
+// ResourceLocation itemid = new ResourceLocation(jsonObject.get("item").getAsString());
+// ItemStack stack = new ItemStack(Item.itemRegistry.getObject(itemid), 0, meta);
+// if (jsonObject.has("displayName")) stack.setStackDisplayName(jsonObject.get("displayName").getAsString());
+// if (jsonObject.has("skullData") && itemid.getResourcePath().equals("skull") && meta == 3) {
+// stack.setTagInfo("SkullOwner", getSkullTag(jsonObject.getAsJsonObject("skullData")));
+// }
+// if (jsonObject.has("enchanted") && jsonObject.get("enchanted").getAsBoolean()) {
+// stack.setTagInfo("ench", new NBTTagList());
+// }
+// if (!jsonObject.get("id").getAsString().contains("entity:")) {
+// NBTTagCompound extraAttributes = new NBTTagCompound();
+// extraAttributes.setString("id", jsonObject.get("id").getAsString());
+// stack.setTagInfo("ExtraAttributes", extraAttributes);
+// }
+// return stack;
+// }
+//
+// public static NBTBase getSkullTag(JsonObject skullObject) {
+// NBTTagCompound skullOwner = new NBTTagCompound();
+// NBTTagCompound properties = new NBTTagCompound();
+// NBTTagList textures = new NBTTagList();
+// NBTTagCompound value = new NBTTagCompound();
+//
+// skullOwner.setString("Id", skullObject.get("id").getAsString());
+//
+// value.setString("Value", skullObject.get("texture").getAsString());
+// textures.appendTag(value);
+//
+// properties.setTag("textures", textures);
+//
+// skullOwner.setTag("Properties", properties);
+// return skullOwner;
+// }
+//
+// public void increaseCount(int amount) {
+// count += amount;
+// }
+//
+// public void increaseCount() {
+// count++;
+// }
+//
+// public void setCount(int count) {
+// this.count = count;
+// }
+//
+// public int getCount() {
+// return count;
+// }
+//
+// public ItemStack getDisplayStack() {
+// return stack;
+// }
+//
+// public EnumSet<Locations> getLocations() {
+// return locations;
+// }
+//
+// public String getInternalId() {
+// return internalId.toUpperCase(Locale.ENGLISH);
+// }
+//
+// public boolean isEntity() {
+// return isEntity;
+// }
+//}