SignSeeker
The lightning-fast, low-lag tool for sign discovery and moderation.
SignSeeker
<div align="center">
SignSeeker
*Find every sign in your world - fast, async & safe!*

</div>
---
🔍 What is SignSeeker?
SignSeeker is a powerful administrative tool designed to scan your worlds for signs. Whether you are looking for hidden messages, moderating player content, or just curious about old warps – SignSeeker reads the region files directly and delivers the results in an interactive book.
🚀 Key Features
- Fully Configurable: Uses asynchronous multithreading to scan region files (`.mca`) without lagging the main server thread. - Fully Configurable: Only scans generated chunks. It will Fully Configurable: generate new chunks or increase your world size. - Fully Configurable: Results are presented in written books. - Fully Configurable: Click on the coordinates in the book to teleport directly to the sign (even if it's in the Nether/End/Farmworld). - Fully Configurable: Blazes through empty chunks (up to 2000 chunks/tick) and slows down for populated areas to maintain 20 TPS. - Fully Configurable: Multiple admins can search simultaneously without interference. - Fully Configurable: Customize all messages, colors, and book layouts.
<br>
<div align="center">

*Scanning thousands of chunks in seconds...*
<br>
<img src="https://i.imgur.com/vabkye3.png" width="48%" alt="Book GUI 1"> <img src="https://i.imgur.com/Bk2xOky.png" width="48%" alt="Book GUI 2"> *Interactive book report with clickable teleports!*
</div>
<br>
💻 Commands
```text /findsigns [world] - Starts scanning the current world (or the specified one). /findsigns cancel - Stops your current search operation immediately. /findsigns reload - Reloads the configuration file. ```
🛡️ Permissions
- `signseeker.use` - Allows using the search command and clicking teleport links. - `signseeker.reload` - Allows reloading the config. - `signseeker.*` - Grants all permissions.
⚙️ Configuration
```yaml
SignSeeker Configuration
The prefix shown before chat messages
prefix: "&8[&bSignSeeker&8] &7"
messages: no-permission: "&cYou do not have permission to use this command." only-players: "&cThis command is only for players." reload-success: "&aConfiguration reloaded successfully!"
Search process messages
search-start: "&eStarting search for signs in world &6%world%&e..." search-progress: "&bProcessing chunks: &f%processed%/%total% &7(%percent%%)" processing-books: "&aGenerating books..." search-finished: "&aSearch finished! Found &6%count% &asigns." inventory-full: "&eYour inventory is full! The book was dropped on the ground." error-no-region-folder: "&cCould not find 'region' folder for this world!"
Cancel & World selection
world-not-found: "&cThe world '&e%world%&c' could not be found." search-cancelled: "&eThe search operation has been cancelled." search-cancelled-error: "&cYou do not have a running search operation." already-searching: "&cYou are already searching! Use &7/findsigns cancel &cto stop."
book:
Placeholders: %world%, %page%, %total%
title: "Signs in %world% (%page%/%total%)" author: "SignSeeker"
The separator line between signs in the book
separator: "&5&l----------------"
intro: header: "&0&lSign Log Report" world-label: "&7World: &2" count-label: "&7Total Signs: &2" usage-header: "&nHow to use:" usage-text: "&0Click on &cRED &0or &9BLUE &0coordinates to teleport." ```
📥 Installation
1. Download the plugin `.jar`. 2. Drop it into your server's `plugins` folder. 3. Restart the server. 4. Enjoy! (Tested on 1.21, compatible with Paper/Spigot).
<br>
<div align="center"> <em>If you find this plugin useful, please leave a review! ⭐⭐⭐⭐⭐</em> </div>