diff options
author | TymanWasTaken <tyman@tyman.tech> | 2021-07-06 17:13:01 -0400 |
---|---|---|
committer | TymanWasTaken <tyman@tyman.tech> | 2021-07-06 17:13:01 -0400 |
commit | bb75fd7b83b238f1f922ffc64b2a0a535c5524b7 (patch) | |
tree | 617c91cced71f672662bddea6c540939cb9a3953 /src/main/java/com/thatgravyboat/skyblockhud/tracker/TrackerHandler.java | |
parent | 91464c8f433e8bf323932ac956678971207b607e (diff) | |
download | skyblockhud-bb75fd7b83b238f1f922ffc64b2a0a535c5524b7.tar.gz skyblockhud-bb75fd7b83b238f1f922ffc64b2a0a535c5524b7.tar.bz2 skyblockhud-bb75fd7b83b238f1f922ffc64b2a0a535c5524b7.zip |
Format
Diffstat (limited to 'src/main/java/com/thatgravyboat/skyblockhud/tracker/TrackerHandler.java')
-rw-r--r-- | src/main/java/com/thatgravyboat/skyblockhud/tracker/TrackerHandler.java | 243 |
1 files changed, 150 insertions, 93 deletions
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/tracker/TrackerHandler.java b/src/main/java/com/thatgravyboat/skyblockhud/tracker/TrackerHandler.java index 9d8261b..1d1e33c 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/tracker/TrackerHandler.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/tracker/TrackerHandler.java @@ -6,6 +6,7 @@ import com.thatgravyboat.skyblockhud.core.config.Position; import com.thatgravyboat.skyblockhud.location.LocationHandler; import com.thatgravyboat.skyblockhud.location.Locations; import com.thatgravyboat.skyblockhud.seasons.SeasonDateHandler; +import java.util.*; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.GlStateManager; @@ -15,110 +16,166 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import java.util.*; - public class TrackerHandler { - public static class TrackerData { - public Map<String, Map<String,ItemStack>> dropTrackers; - - public TrackerData(Map<String, Map<String,ItemStack>> trackers) { - this.dropTrackers = trackers; - } + public static class TrackerData { - public String getDropId(String event){ - if (event == null || event.isEmpty() || !eventGoing() || !dropTrackers.containsKey(event.toLowerCase().trim())) return null; - return event.toLowerCase().trim(); - } + public Map<String, Map<String, ItemStack>> dropTrackers; - private boolean eventGoing(){ - return SeasonDateHandler.getCurrentEventTime().trim().toLowerCase().contains("ends in"); - } + public TrackerData(Map<String, Map<String, ItemStack>> trackers) { + this.dropTrackers = trackers; } - public static Map<String, TrackerData> trackers = new HashMap<>(); - public static Map<Locations,String> trackerIds = new HashMap<>(); - - public static Map<String, ItemStack> sortTrackers(Map<String, ItemStack> map) { - List<Map.Entry<String, ItemStack>> list = new ArrayList<>(map.entrySet()); - list.sort((entry1, entry2) -> Integer.compare(entry2.getValue().stackSize, entry1.getValue().stackSize)); - - Map<String, ItemStack> result = new LinkedHashMap<>(); - for (Map.Entry<String, ItemStack> entry : list) { - result.put(entry.getKey(), entry.getValue()); - } - - return result; + public String getDropId(String event) { + if ( + event == null || + event.isEmpty() || + !eventGoing() || + !dropTrackers.containsKey(event.toLowerCase().trim()) + ) return null; + return event.toLowerCase().trim(); } - public static void onItemAdded(String id, int amount, String enchant, int level){ - if (SkyblockHud.hasSkyblockScoreboard() && trackerIds.containsKey(LocationHandler.getCurrentLocation())){ - String trackerId = trackerIds.get(LocationHandler.getCurrentLocation()); - TrackerData tracked = trackers.get(trackerId); - String dropTrackerId = tracked.getDropId(SeasonDateHandler.getCurrentEvent()); - Map<String,ItemStack> tracker = tracked.dropTrackers.get(dropTrackerId); - String dropId = id; - if (enchant != null){ - dropId = enchant.toUpperCase() + ";" + level; - } - - if (tracker != null && tracker.containsKey(dropId)){ - ItemStack stack = tracker.get(dropId); - stack.stackSize += amount; - tracked.dropTrackers.put(dropTrackerId, sortTrackers(tracker)); - } - } + private boolean eventGoing() { + return SeasonDateHandler + .getCurrentEventTime() + .trim() + .toLowerCase() + .contains("ends in"); } - - 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(); + } + + public static Map<String, TrackerData> trackers = new HashMap<>(); + public static Map<Locations, String> trackerIds = new HashMap<>(); + + public static Map<String, ItemStack> sortTrackers( + Map<String, ItemStack> map + ) { + List<Map.Entry<String, ItemStack>> list = new ArrayList<>(map.entrySet()); + list.sort( + (entry1, entry2) -> + Integer.compare( + entry2.getValue().stackSize, + entry1.getValue().stackSize + ) + ); + + Map<String, ItemStack> result = new LinkedHashMap<>(); + for (Map.Entry<String, ItemStack> entry : list) { + result.put(entry.getKey(), entry.getValue()); } - @SubscribeEvent - public void renderOverlay(RenderGameOverlayEvent.Post event) { - if (Utils.overlayShouldRender(event.type, SkyblockHud.hasSkyblockScoreboard(), trackerIds.containsKey(LocationHandler.getCurrentLocation()), !SkyblockHud.config.trackers.hideTracker)) { - String trackerId = trackerIds.get(LocationHandler.getCurrentLocation()); - Minecraft mc = Minecraft.getMinecraft(); - TrackerData tracked = trackers.get(trackerId); - - Map<String, ItemStack> tracker = tracked.dropTrackers.get(tracked.getDropId(SeasonDateHandler.getCurrentEvent())); - if (tracker != null) { - Position pos = SkyblockHud.config.trackers.trackerPosition; - int startPos = pos.getAbsX(event.resolution, (tracker.size() >= 6 ? 120 : tracker.size() * 20)); - int y = pos.getAbsY(event.resolution, (int) (10 + Math.ceil(tracker.size() / 5d) * 20)); - - Gui.drawRect(startPos, y, startPos + 120, y + 10, -1072689136); - mc.fontRendererObj.drawString("Tracker", startPos + 4, y + 1, 0xffffff, false); - y += 10; - Gui.drawRect(startPos, y, startPos + (tracker.size() >= 6 ? 120 : tracker.size() * 20), (int) (y + (Math.ceil(tracker.size() / 5d) * 20)), 1610612736); - int x = startPos; - for (ItemStack stack : tracker.values()) { - String s = String.valueOf(stack.stackSize); - GlStateManager.disableLighting(); - GlStateManager.enableDepth(); - drawItemStack(stack, x, y); - GlStateManager.disableDepth(); - GlStateManager.disableBlend(); - mc.fontRendererObj.drawStringWithShadow(s, (float) (x + 19 - 2 - mc.fontRendererObj.getStringWidth(s)), (float) (y + 9), stack.stackSize < 1 ? 16733525 : 16777215); - GlStateManager.enableBlend(); - GlStateManager.enableDepth(); - - if ((x - startPos) / 20 == 5) { - x = startPos; - y += 20; - } else { - x += 20; - } - } - } + return result; + } + + public static void onItemAdded( + String id, + int amount, + String enchant, + int level + ) { + if ( + SkyblockHud.hasSkyblockScoreboard() && + trackerIds.containsKey(LocationHandler.getCurrentLocation()) + ) { + String trackerId = trackerIds.get(LocationHandler.getCurrentLocation()); + TrackerData tracked = trackers.get(trackerId); + String dropTrackerId = tracked.getDropId( + SeasonDateHandler.getCurrentEvent() + ); + Map<String, ItemStack> tracker = tracked.dropTrackers.get(dropTrackerId); + String dropId = id; + if (enchant != null) { + dropId = enchant.toUpperCase() + ";" + level; + } + + if (tracker != null && tracker.containsKey(dropId)) { + ItemStack stack = tracker.get(dropId); + stack.stackSize += amount; + tracked.dropTrackers.put(dropTrackerId, sortTrackers(tracker)); + } + } + } + + 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 renderOverlay(RenderGameOverlayEvent.Post event) { + if ( + Utils.overlayShouldRender( + event.type, + SkyblockHud.hasSkyblockScoreboard(), + trackerIds.containsKey(LocationHandler.getCurrentLocation()), + !SkyblockHud.config.trackers.hideTracker + ) + ) { + String trackerId = trackerIds.get(LocationHandler.getCurrentLocation()); + Minecraft mc = Minecraft.getMinecraft(); + TrackerData tracked = trackers.get(trackerId); + + Map<String, ItemStack> tracker = tracked.dropTrackers.get( + tracked.getDropId(SeasonDateHandler.getCurrentEvent()) + ); + if (tracker != null) { + Position pos = SkyblockHud.config.trackers.trackerPosition; + int startPos = pos.getAbsX( + event.resolution, + (tracker.size() >= 6 ? 120 : tracker.size() * 20) + ); + int y = pos.getAbsY( + event.resolution, + (int) (10 + Math.ceil(tracker.size() / 5d) * 20) + ); + + Gui.drawRect(startPos, y, startPos + 120, y + 10, -1072689136); + mc.fontRendererObj.drawString( + "Tracker", + startPos + 4, + y + 1, + 0xffffff, + false + ); + y += 10; + Gui.drawRect( + startPos, + y, + startPos + (tracker.size() >= 6 ? 120 : tracker.size() * 20), + (int) (y + (Math.ceil(tracker.size() / 5d) * 20)), + 1610612736 + ); + int x = startPos; + for (ItemStack stack : tracker.values()) { + String s = String.valueOf(stack.stackSize); + GlStateManager.disableLighting(); + GlStateManager.enableDepth(); + drawItemStack(stack, x, y); + GlStateManager.disableDepth(); + GlStateManager.disableBlend(); + mc.fontRendererObj.drawStringWithShadow( + s, + (float) (x + 19 - 2 - mc.fontRendererObj.getStringWidth(s)), + (float) (y + 9), + stack.stackSize < 1 ? 16733525 : 16777215 + ); + GlStateManager.enableBlend(); + GlStateManager.enableDepth(); + + if ((x - startPos) / 20 == 5) { + x = startPos; + y += 20; + } else { + x += 20; + } } + } } - - + } } |