Перейти к содержимому
Mineforgian

FinderTools

A high-performance asynchronous world scanning plugin designed specifically for Minecraft 1.20.1 Paper servers, supporting precise block and entity detection.

Загрузки
187
Подписчики
2
Обновлён
14 октября 2025 г.
Лицензия
MIT

Опубликован 12 октября 2025 г.

FinderTools - High-Performance Async World Scanning Tool

FinderTools is a high-performance asynchronous world scanning plugin designed specifically for Minecraft 1.20.1 Paper servers, supporting precise block and entity detection.

Note: This plugin is developed with AI assistance

Features

  • 🔍 Async Multi-threaded Scanning - Efficient block and entity scanning without server performance impact
  • 🌍 Flexible Scan Range - Support for entire world, specific region files, loaded/unloaded chunks
  • 📊 Smart Memory Management - Automatic memory monitoring, garbage collection and optimization
  • 📈 Real-time Progress Monitoring - Progress output every 10%, supports console and player messages
  • 📄 Detailed Report Generation - Automatic YAML format scan reports with complete statistics
  • ⚙️ Highly Configurable - Configurable thread count, scan intervals, memory thresholds and more
  • 🔒 Permission Management - Complete permission node control for secure usage
  • ⏯️ Task Control - Support for stopping, pausing, and resuming scan tasks with flexible process management

Requirements

  • Minecraft 1.20.1
  • Paper Server
  • Java 8 or higher

Installation

  1. Download the FinderTools-1.0-SNAPSHOT.jar file
  2. Place the file in your server's plugins folder
  3. Restart the server or use the /reload command
  4. The plugin will automatically create configuration files and report directories

Commands

Basic Command Format

/findertools find <block|entity> <id> <world> [options]

Command Examples

Block Scanning

# Scan for diamond ore in the entire world
/findertools find block diamond_ore world

# Scan for stone in loaded chunks only
/findertools find block stone world{type='enabled'}

# Scan for gold ore in a specific region
/findertools find block gold_ore world{region='0,0'}

Entity Scanning

# Scan for villagers in the entire world
/findertools find entity villager world

# Scan for zombies in loaded chunks
/findertools find entity zombie world{type='enabled'}

# Scan for cows in a specific region
/findertools find entity cow world{region='-1,2'}

Task Control Commands

# Stop current scan task
/findertools stop

# Pause current scan task
/findertools pause

# Resume paused scan task
/findertools start
/findertools resume

# Check current scan status
/findertools status

Other Commands

# Reload configuration file
/findertools reload

# Show help information
/findertools help

Permissions

Permission Node Description Default
findertools.command Basic command usage permission op
findertools.command.find Find command usage permission op
findertools.command.reload Configuration reload permission op
findertools.command.state Scan task control permission op

Configuration

Configuration file location: plugins/FinderTools/config.yml

Scan Configuration

scan:
  chunk-interval: 1        # Chunk scanning interval (ticks)
  write-interval: 10       # Chunk count interval for report writing
  debug: false            # Enable debug output

Thread Configuration

threading:
  max-threads: 4          # Maximum thread count
  max-thread-usage: 0.8   # Maximum usage per thread
  check-interval: 100     # Thread check interval (milliseconds)

Memory Management

memory:
  max-memory-mb: 512      # Memory usage threshold (MB)
  gc-threshold: 0.9       # Forced garbage collection threshold

Report Configuration

report:
  output-directory: "plugins/FinderTools/reports"  # Report save directory
  format: "yml"           # Report file format
  detailed: true          # Include detailed information

Progress Output

progress:
  output-interval: 10     # Progress output interval (percentage)
  console-output: true    # Output progress to console
  player-output: true     # Send progress messages to executor

Report Format

After scanning completion, the plugin generates report files in the format report_YYYYMMDD_8-digit-random-ID.yml.

Report Example

report:
  info:
    generated_at: "2024-01-01 12:00:00"
    plugin_version: "1.0-SNAPSHOT"
    request_id: "12345678-1234-1234-1234-123456789abc"

  parameters:
    scan_type: "block"
    target_id: "diamond_ore"
    world: "world"
    loaded_only: false

  statistics:
    total_results: 156
    total_chunks_processed: 1000
    chunks_with_results: 45
    scan_duration_ms: 30000
    scan_duration_readable: "30 seconds"
    completed_at: "2024-01-01 12:00:30"

  results:
    - world: "world"
      location: "123,45,678"
      chunk: "7,42"
      type: "block"
      target: "diamond_ore"

Performance Optimization

Memory Optimization

  • Automatic memory monitoring and garbage collection
  • Periodic report writing to release memory
  • Smart adjustment of write intervals

Thread Optimization

  • Configurable thread pool size
  • Thread usage monitoring
  • Priority adjustment to avoid server performance impact

Scan Optimization

  • Asynchronous chunk loading and unloading
  • Smart chunk state detection
  • Configurable scan intervals

Troubleshooting

Common Issues

Q: Scanning is very slow? A: Increase the threading.max-threads value or decrease the scan.chunk-interval value.

Q: Server experiencing lag? A: Reduce thread count, increase scan intervals, or lower the threading.max-thread-usage value.

Q: High memory usage? A: Decrease the scan.write-interval value to make the plugin write reports more frequently and release memory.

Q: Cannot find report files? A: Check the report.output-directory configuration and ensure the directory exists with write permissions.

Development Information

  • Author: NSrank & Augment
  • Version: 1.1-SNAPSHOT
  • License: MIT
  • Source Code: Please contact the author for source code

Support

If you encounter issues or have feature suggestions during usage, please contact the plugin author.

License

This project is licensed under the MIT License - see the LICENSE file for details


FinderTools - Making world scanning simple and efficient!

Ченджлог

1.3Релиз1.20.4, 1.20.5, 1.20.6 · 14 октября 2025 г.

Changelog

v1.3 (2025-10-14)

✅ Pipeline Preloading Mechanism

  • Revolutionary Improvement: Complete reconstruction of task pool execution strategy from "create all task pools at once" to "pipeline preloading mode"
  • Memory Control: Run thread-count task pools simultaneously, preload thread-count task pools, avoiding memory spikes
  • Dynamic Scheduling: Immediately start next preloaded task pool after completion, maintaining efficient concurrency
  • Active Cleanup: Immediately clean memory after each task pool completion, preventing memory leaks

✅ Fundamental Memory Leak Fix

  • Problem Diagnosis: Discovered plugin lacked active memory cleanup mechanism, scan data persistently occupied memory
  • Active Cleanup: Immediately call cleanup() method after task pool completion, clearing all internal data
  • Forced Collection: Suggest JVM garbage collection after each task pool completion
  • Memory Monitoring: Remove incorrect memory limitation mechanism, focus on active memory management

✅ Remove Memory Limitation Mechanism

  • Root Solution: No longer rely on memory limits to prevent OOM, solve memory leaks from the source
  • Simplified Architecture: Remove complex memory monitoring and pause logic, improve system stability
  • Performance Boost: Eliminate memory check overhead, focus on efficient task execution
1.2Релиз1.20.4, 1.20.5, 1.20.6 · 13 октября 2025 г.

Changelog

v1.2 (2024-10-13)

🚀 Multi-threading Concurrency Optimization

  • Task Pool Concurrent Architecture: Implemented true multi-threaded concurrent scanning, dividing chunks into task pools for parallel processing
  • Smart Thread Management: Auto-detect CPU cores, optimize thread configuration, support manual adjustment
  • Configuration Unification: Resolved thread configuration conflicts, unified use of threading.max-threads configuration
  • Asynchronous Chunk Loading: Use getChunkAtAsync() to avoid main thread blocking, improve scanning efficiency

🛠️ Pause-Resume Mechanism Enhancement

  • True Multi-threaded Pause: Fixed the issue where multi-threaded scanning couldn't be paused, supporting instant pause response
  • Graceful Shutdown Mechanism: Wait for current task pools to complete when pausing, avoiding data loss and state inconsistency
  • Progress Data Fix: Fixed progress data mismatch in pause files causing resume failures
  • Accurate State Saving: Get real progress data from actual executor, ensuring accurate data when resuming

📊 Status Display Enhancement

  • Detailed Progress Information: Status command displays percentage, processed chunk count, and found results count
  • Real-time Status Updates: Progress information reflects current scanning state in real-time
  • Smart Log Control: Debug switch controls detailed task pool information, avoiding console spam

⚡ Performance Optimization

  • High Concurrency Processing: Multi-threaded task pool architecture, fully utilizing multi-core CPU resources
  • Memory Management Optimization: Task pool-level memory management, avoiding loading large amounts of data simultaneously
  • Thread Reuse Mechanism: Threads immediately move to next task pool after completion
  • Smart Load Balancing: Dynamic task allocation, optimizing CPU utilization
1.1Релиз1.20.4, 1.20.5, 1.20.6 · 12 октября 2025 г.

Changelog

v1.1 (2024-10-12)

🎯 Core Feature Enhancements

  • Pause State Persistence: Added functionality to save task state to disk when paused, supporting recovery across server restarts
  • Smart Task Management: Tasks are directly terminated and state saved when paused, avoiding thread blocking
  • Report File Uniqueness: Ensures one scan task produces only one final report file
  • Complete World Variable Preservation: Fixed issue where region coordinates and other parameters were lost after pause/resume

🔧 Critical Fixes

  • Server Shutdown Error Fix: Completely resolved "Plugin attempted to register task while disabled" error when closing server with paused tasks
  • Pause Message Optimization: Distinguished between user-initiated pause and abnormal stops, showing "Task paused" instead of "Scan failed" for pauses
  • File Renaming Mechanism: Report files are renamed with pause_ prefix when paused, automatically restored when resumed
  • State File Separation: Report files and state files are managed separately with clear responsibilities

⚡ Performance Optimizations

  • Zero Thread Blocking: All thread resources are immediately released when paused
  • Smart Report Loading: Resumed tasks load existing reports instead of creating new ones
  • Immediate Memory Release: Memory and thread resources are immediately freed when paused
  • Async Processing Optimization: Improved error handling for asynchronous scanning

🎨 User Experience Improvements

  • Task Conflict Detection: Prevents starting new tasks when paused tasks exist
  • Detailed Progress Display: Shows accurate task progress information when resuming
  • Clear Status Feedback: Provides accurate operation feedback and status information
  • Professional Plugin Experience: Precise state management and intelligent message categorization
1.0-SNAPSHOTРелиз1.20.4, 1.20.5, 1.20.6 · 12 октября 2025 г.

Changelog

v1.0-SNAPSHOT

  • Initial release
  • Support for block and entity scanning
  • Asynchronous multi-threaded processing
  • Smart memory management
  • Detailed report generation
  • Complete configuration system

Комментарии

Загружаем…