Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create monster-monitor #6505

Merged
merged 25 commits into from
Oct 20, 2024

Commits on Aug 24, 2024

  1. Create monster-monitor

    Tracks NPC kills and allows setting kill limits
    ChunkyAtlas authored Aug 24, 2024
    Configuration menu
    Copy the full SHA
    8f290fb View commit details
    Browse the repository at this point in the history
  2. Update monster-monitor

    Updated runelite-plugin.properties
    ChunkyAtlas authored Aug 24, 2024
    Configuration menu
    Copy the full SHA
    6e76394 View commit details
    Browse the repository at this point in the history
  3. Update monster-monitor

    Few minor updates, a few more tests. no functional changes
    ChunkyAtlas authored Aug 24, 2024
    Configuration menu
    Copy the full SHA
    fe9a85f View commit details
    Browse the repository at this point in the history

Commits on Aug 26, 2024

  1. Update monster-monitor

    - Fixed issue with double notifications for NPC kills with a set limit.
    - Ensured notifications play correctly for NPCs with unknown death animations.
    - Adjusted the MonsterMonitorPanel to push NPCs added from UnknownDeathAnimations to the top of the panel, similar to normal NPCs.
    - Refined the logic for handling and sorting NPCs in the panel to ensure consistent behavior.
    - Ensured that the MonsterMonitorLogger handles unknown animations and logs them consistently with regular NPCs.
    ChunkyAtlas authored Aug 26, 2024
    Configuration menu
    Copy the full SHA
    7a015a5 View commit details
    Browse the repository at this point in the history
  2. Update monster-monitor

    forgot to uncomment a few lines in DeathAnimationIDS after some tests.
    ChunkyAtlas authored Aug 26, 2024
    Configuration menu
    Copy the full SHA
    d377cc0 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    bcccac8 View commit details
    Browse the repository at this point in the history
  4. Update monster-monitor

    ChunkyAtlas authored Aug 26, 2024
    Configuration menu
    Copy the full SHA
    dff43cd View commit details
    Browse the repository at this point in the history
  5. Update monster-monitor

    Fix runelite-plugin.properties again
    ChunkyAtlas authored Aug 26, 2024
    Configuration menu
    Copy the full SHA
    d78a297 View commit details
    Browse the repository at this point in the history
  6. Update monster-monitor

    Enhance Monster Monitor Plugin with Interaction Timer, Duplicate Logging Prevention, and Prioritization of Last Killed NPC
    
    Interaction Timer: Implemented a 4-second interaction timeout to ensure that NPC kills are accurately tracked during combat, especially for ranged and magic attacks where interactions may briefly pause.
    
    Immediate Logging After Health Reaches Zero: Introduced a mechanism to capture and log the last valid animation immediately after an NPC's health reaches zero. This ensures that all NPC deaths, especially those with complex animations, are logged accurately and on time.
    
    Duplicate Logging Prevention: Refined and optimized the logging logic to prevent duplicate entries of NPC deaths. The cleanup of NPC tracking data is now delayed until the NPC has fully despawned, preventing premature data clearing and missed logs.
    
    Prioritization of Last Killed NPC: Updated the UI panel and overlay to prioritize the display of the most recently killed NPC at the top, regardless of whether the death animation is known or unknown. This change ensures that the most recent activity is always immediately visible to the user.
    
    Refactor and Code Cleanup: Consolidated and cleaned up the codebase for better consistency and reliability across various NPC types and combat scenarios. The plugin has been fine-tuned to function correctly in both continuous and intermittent interactions.
    
    Bug Fixes: Addressed issues where the plugin would stop logging kills after the first kill or fail to log certain NPC deaths. These fixes ensure that all NPC kills are tracked and displayed as expected.
    
    This update significantly improves the reliability, accuracy, and user experience of the Monster Monitor Plugin, making it more robust in handling various edge cases and ensuring comprehensive NPC kill tracking and display.
    ChunkyAtlas authored Aug 26, 2024
    Configuration menu
    Copy the full SHA
    823143f View commit details
    Browse the repository at this point in the history

Commits on Aug 27, 2024

  1. Update monster-monitor

    Improve redundancy and accuracy in capturing NPC death animations
    
    - Implemented immediate health check to start tracking NPCs as awaiting death animation when their health drops to zero.
    - Added aggressive death animation tracking with multiple attempts to capture or log death animations.
    - Enhanced despawn logging to ensure the last valid animation is logged or marked as unknown if missed.
    - Updated NPC tracking methods to improve reliability and prevent unnecessary logging.
    - Added Another Unknown DeathAnimationIDs
    ChunkyAtlas authored Aug 27, 2024
    Configuration menu
    Copy the full SHA
    dff7d7c View commit details
    Browse the repository at this point in the history
  2. Update monster-monitor

    ChunkyAtlas authored Aug 27, 2024
    Configuration menu
    Copy the full SHA
    b6c04dc View commit details
    Browse the repository at this point in the history

Commits on Sep 2, 2024

  1. Update monster-monitor

    Add NpcAnimationTracker for improved NPC interaction tracking and logging
    
    - Introduced `NpcAnimationTracker.java`, a new class dedicated to tracking NPC animations and interactions, significantly improving how the plugin monitors NPC behavior.
    - `NpcAnimationTracker` registers for several in-game events, including `InteractingChanged`, `NpcDespawned`, `GameTick`, and `HitsplatApplied`, to accurately track when the player interacts with NPCs.
    - Added logic to buffer unique NPC animations, enabling the plugin to distinguish between different types of animations, such as death animations, and ensuring accurate logging of relevant events.
    - Implemented a grace period mechanism within `NpcAnimationTracker` to handle NPCs that despawn shortly after interaction, ensuring that the last known animations are accurately recorded and logged.
    - Updated the handling of interaction timeouts, allowing the plugin to clear out expired interactions and prevent stale data from affecting ongoing tracking.
    - Integrated `NpcAnimationTracker` with the existing logging mechanisms in `MonsterMonitorPlugin`, ensuring that all tracked interactions and animations are logged with precise timing and context.
    - Provided detailed comments and documentation within `NpcAnimationTracker.java` to explain the purpose of each method and how the class contributes to the overall functionality of the plugin.
    - Refactored parts of `MonsterMonitorPlugin` and related classes to utilize `NpcAnimationTracker` for more granular and accurate tracking, enhancing the plugin's ability to monitor NPC kills and associated events.
    - Ensured that the new tracking system remains performant and reliable, even during high-intensity gameplay, by carefully managing resources and minimizing unnecessary processing.
    ChunkyAtlas authored Sep 2, 2024
    Configuration menu
    Copy the full SHA
    85e2c02 View commit details
    Browse the repository at this point in the history
  2. Update monster-monitor

    Update build.gradle for Monster Monitor plugin
    
    - Added Gson dependency for JSON handling, enabling serialization and deserialization in MonsterMonitorLogger.
    - Included Lombok dependency and annotation processor to support annotations like @getter, @Setter, @NoArgsConstructor, etc., used throughout the plugin.
    - Maintained existing dependencies for RuneLite client compatibility.
    ChunkyAtlas authored Sep 2, 2024
    Configuration menu
    Copy the full SHA
    b6c0866 View commit details
    Browse the repository at this point in the history

Commits on Sep 3, 2024

  1. Update monster-monitor

    Forgot to upload the NpcAnimationTracker.java
    ChunkyAtlas authored Sep 3, 2024
    Configuration menu
    Copy the full SHA
    8471c32 View commit details
    Browse the repository at this point in the history

Commits on Sep 4, 2024

  1. Update monster-monitor

    Bug fixes and improved UI/Panel visual - Refine UI and add MonsterMonitorBox for enhanced NPC tracking - Added more config options
    
    - Improved the design and layout of MonsterMonitorPanel.
    - Created MonsterMonitorBox to handle individual NPC tracking, including setting kill limits and notifications.
    - Fixed bug where the last killed NPC was not being correctly displayed at the top of the NPC panel.
    - Updated MonsterMonitorOverlay to maintain design consistency with the panel and improve user readability.
    - Retained all existing functionality while enhancing the visual and interactive elements of the plugin.
    
    - Added configuration options to MonsterMonitorConfig for default kill limits, chat notifications, custom notification messages, unknown death animation notifications, and sound alerts.
    - Enhanced MonsterMonitorPlugin to listen for ConfigChanged events and apply configuration updates immediately.
    - Ensured that sound alerts and chat notifications are toggled based on user preferences, providing immediate feedback without requiring plugin restart.
    ChunkyAtlas authored Sep 4, 2024
    Configuration menu
    Copy the full SHA
    c5dd6e7 View commit details
    Browse the repository at this point in the history

Commits on Sep 6, 2024

  1. Update monster-monitor

    Fix layout issues in MonsterMonitorPanel and MonsterMonitorBox, Added config option functionality :
    
    - Implemented dynamic resizing for NPCListPanel using GridBagLayout, ensuring proper layout adjustments as NPCs are added or removed.
    - Removed redundant JScrollPane nesting, allowing the ScrollPane to fill the available space within PluginPanel and improving scrolling performance.
    - Introduced a dynamic filler panel at the bottom of the NPCListPanel that adjusts its height based on the number of NPCs, ensuring proper vertical expansion and contraction.
    - Added dropdown persistence in MonsterMonitorBox to maintain the expanded/collapsed state of NPC dropdowns during panel refresh.
    - Ensured the title panel remains static at the top while enabling smooth scrolling for the NPC list in the ScrollPane.
    - Configurations now control kill limit notifications, sound alerts, and chat notifications for NPC kills and unknown death animations, with logic to notify only once per unknown death animation.
    ChunkyAtlas authored Sep 6, 2024
    Configuration menu
    Copy the full SHA
    7643ca4 View commit details
    Browse the repository at this point in the history

Commits on Sep 22, 2024

  1. Update monster-monitor

    fix: replace deprecated OverlayPriority usage with integer-based priority system
    
    - Updated setPriority(OverlayPriority.HIGH) to setPriority(50) to adhere to the integer-based priority system.
    ChunkyAtlas authored Sep 22, 2024
    Configuration menu
    Copy the full SHA
    4a4b57e View commit details
    Browse the repository at this point in the history
  2. Update monster-monitor

    Update verification-metadata.xml with updated dependency checksums
    ChunkyAtlas authored Sep 22, 2024
    Configuration menu
    Copy the full SHA
    29673cf View commit details
    Browse the repository at this point in the history
  3. Update monster-monitor

    Update Gson version to 2.8.5 and update verification-metadata with new checksums
    ChunkyAtlas authored Sep 22, 2024
    Configuration menu
    Copy the full SHA
    eb57bbe View commit details
    Browse the repository at this point in the history
  4. Update monster-monitor

    fix: Inject client's Gson instance instead of creating a new one
    
    - Removed the direct instantiation of Gson in MonsterMonitorLogger.
    
    - Injected the client's Gson instance using @Inject annotation.
    ChunkyAtlas authored Sep 22, 2024
    Configuration menu
    Copy the full SHA
    0cabb67 View commit details
    Browse the repository at this point in the history

Commits on Oct 19, 2024

  1. Update monster-monitor

    Update Monster Monitor: Refactor to use DeathTracker, handle multi-phase NPCs, improve death logging logic
    
    - Replaced NpcAnimationTracker with DeathTracker to log deaths based on interactions.
    - Included final phase IDs for multi-phase bosses such as Verzik, Vorkath, Zulrah, and others.
    - Removed animation-based logic and unknown death animation notifications.
    - Added interaction validation to ensure only relevant NPC deaths are logged.
    - Cleaned up code, removed unused methods, and optimized NPC tracking.
    ChunkyAtlas authored Oct 19, 2024
    Configuration menu
    Copy the full SHA
    959f4ee View commit details
    Browse the repository at this point in the history

Commits on Oct 20, 2024

  1. Update monster-monitor

    Improve NPC engagement tracking and proper EventBus unregistration
    
    - Added `wasNpcEngaged` map to track whether an NPC has been engaged through hitsplats or damage, ensuring that only NPCs that have been properly interacted with are logged upon despawn.
    - Updated `onInteractingChanged` method to reset engagement status when a new interaction with an NPC starts, ensuring accurate tracking.
    - Updated `onHitsplatApplied` to mark NPCs as engaged when a hitsplat is applied, indicating active combat engagement.
    - Refined `onNpcDespawned` to only log NPCs as dead if they were actively engaged in combat before despawning, avoiding false positives from mere clicks.
    - Ensured cleanup of engagement status and related states after logging to maintain memory efficiency and avoid stale data.
    - Added proper unregistration of the `EventBus` in the `unregister` method to ensure clean shutdown of the plugin, preventing potential memory leaks and ensuring a smooth disable process.
    ChunkyAtlas authored Oct 20, 2024
    Configuration menu
    Copy the full SHA
    e9b0979 View commit details
    Browse the repository at this point in the history
  2. Update monster-monitor

    Fix: Inject EventBus into MonsterMonitorPlugin for proper event registration
    
    - Added EventBus injection to MonsterMonitorPlugin to enable registration and unregistration of DeathTracker during plugin startUp and shutDown.
    - Ensured proper lifecycle management of DeathTracker events to maintain consistency when the plugin is restarted.
    ChunkyAtlas authored Oct 20, 2024
    Configuration menu
    Copy the full SHA
    9500f2b View commit details
    Browse the repository at this point in the history
  3. Update monster-monitor

    fix: move scrollbar UI updates to Swing thread
    
    Used SwingUtilities.invokeLater() for setting up the custom scrollbar UI to make sure it's done on the correct thread.
    ChunkyAtlas authored Oct 20, 2024
    Configuration menu
    Copy the full SHA
    bbf32dd View commit details
    Browse the repository at this point in the history
  4. Update monster-monitor

    refactor: use logger.error() instead of printStackTrace()
    
    - Swapped out all instances of e.printStackTrace() with logger.error() for better logging.
    - This should make errors easier to track in the RuneLite logs and keep things cleaner.
    ChunkyAtlas authored Oct 20, 2024
    Configuration menu
    Copy the full SHA
    5c56cc7 View commit details
    Browse the repository at this point in the history