ModsJava
sSearch
Hidden object searches with BossBar, rewards, admin GUI, and leaderboard
⬇ Download on SpigotsSearch — Hidden Object Search Plugin
Overview
sSearch is a complete hidden object search system for Minecraft servers. It lets server administrators create multiple independent searches where players must find hidden blocks or entities scattered around the world. Each search has its own configuration, objectives, rewards, visual effects, and progress tracking — all manageable from both configuration files and an in-game admin GUI.
Whether you run a lobby server looking to add engagement, a survival server wanting exploration challenges, or an event server needing custom hunts, sSearch gives you the tools to create polished search experiences without writing a single line of code.
Features
Commands
Aliases: /search
Permissions
ssearch.use — Default: true — Basic usage.
ssearch.admin — Default: op — Full admin access (inherits all).
ssearch.create — Default: op — Create searches.
ssearch.edit — Default: op — Edit searches.
ssearch.delete — Default: op — Delete searches.
ssearch.reset — Default: op — Reset progress.
ssearch.reload — Default: op — Reload configs.
ssearch.gui.admin — Default: op — Open admin GUI.
Placeholders
Per-Search Placeholders (replace <search> with the search ID):
%ssearch_total_found_objects_<search>%
%ssearch_remaining_objects_<search>%
%ssearch_has_completed_<search>%
%ssearch_progress_<search>%
%ssearch_progress_bar_<search>%
%ssearch_search_name_<search>%
%ssearch_search_state_<search>%
%ssearch_search_total_<search>%
%ssearch_search_world_<search>%
%ssearch_search_type_<search>%
%ssearch_search_enabled_<search>%
%ssearch_search_permission_<search>%
%ssearch_search_description_<search>%
%ssearch_completion_time_<search>%
%ssearch_has_found_<search>_<object>%
%ssearch_found_list_<search>%
Global Player Placeholders:
%ssearch_completed_count%
%ssearch_total_found%
%ssearch_total_remaining%
%ssearch_in_progress_count%
%ssearch_player_name%
Global Server Placeholders:
%ssearch_search_count%
%ssearch_active_search_count%
Leaderboard Placeholders (replace
<position> with 1-10):
%ssearch_top_player_<position>%
%ssearch_top_found_<position>%
%ssearch_top_completed_<position>%
Configuration Example
Each search has its own file at plugins/sSearch/searches/<name>.yml. When you create a search with /ssearch create, a complete template is generated with every option documented and ready to edit.
display-name : "&b&lTreasure Hunt"
world : "world"
enabled : true
type : BLOCKS
description :
- "&7Find the &b3 hidden chests &7around the lobby!"
icon:
material : CHEST
glow : true
conditions:
required-permission : ""
world-whitelist : [ ]
detection:
method : INTERACT
require-right-click : true
persistent-bossbar:
enabled : true
text : "&b{name} &7- &f{found}&7/&f{total} &7({percent}%)"
color : BLUE
style : SOLID
progress-type : DYNAMIC
on-find:
message : "&a&lFOUND! &7You discovered a hidden chest."
title : "&b&lFOUND!"
subtitle : "&7{remaining} remaining"
sound:
name : ENTITY_PLAYER_LEVELUP
pitch : 1.5
particles:
type : VILLAGER_HAPPY
count : 20
bossbar:
enabled : true
text : "&a&l+1 OBJECTIVE!"
color : GREEN
duration : 60
on-complete:
message : "&6&lSEARCH COMPLETED!"
title : "&6&lVICTORY"
sound:
name : UI_TOAST_CHALLENGE_COMPLETE
effects :
- "GLOW:400:1"
- "SPEED:400:2"
per-object-rewards:
commands :
- "give %player% diamond 1"
messages :
- "&a+1 diamond"
completion-rewards:
commands :
- "give %player% netherite_ingot 1"
- "eco give %player% 500"
blocks:
- id : "chest_01"
x : 100
y : 70
z : -200
material : CHEST
world : "world"
After editing any config file, run
/ssearch reload to apply changes without restarting.
API for Developers
Other plugins can integrate with sSearch through its public API.
sSearchAPI api = sSearchAPI. getInstance ( ) ;
Optional <Search > search = api. getSearch ( "lobby_treasure" ) ;
api. markObjectFound (player, "lobby_treasure", "chest_01" ) ;
boolean completed = api. hasCompleted (player. getUniqueId ( ), "lobby_treasure" ) ;
int found = api. getFoundCount (player. getUniqueId ( ), "lobby_treasure" ) ;
Custom events:
SearchStartEvent,
SearchObjectFoundEvent,
SearchCompleteEvent,
SearchResetEvent.
Installation
1. Drop the jar into your plugins/ folder.
2. Start the server once to generate default files.
3. Edit config.yml to set your language and preferences.
4. Edit or create searches in searches/<name>.yml.
5. Run /ssearch reload or restart.
6. Start hiding objects!
Requirements
- Java 8 or higher.
- Spigot or Paper 1.12+ (works on latest versions).
- Optional: PlaceholderAPI, Vault, LuckPerms, WorldGuard.
Authors
LCDC and Herobrine
Support
If you find a bug or have a feature request, open an issue on the project repository. When reporting bugs, enable debug: true in config.yml and include the console output.
Overview
sSearch is a complete hidden object search system for Minecraft servers. It lets server administrators create multiple independent searches where players must find hidden blocks or entities scattered around the world. Each search has its own configuration, objectives, rewards, visual effects, and progress tracking — all manageable from both configuration files and an in-game admin GUI.
Whether you run a lobby server looking to add engagement, a survival server wanting exploration challenges, or an event server needing custom hunts, sSearch gives you the tools to create polished search experiences without writing a single line of code.
Features
- Multiple Independent Searches — Create unlimited searches. Each one lives in its own YAML file under searches/<name>.yml, making them easy to manage, share, and edit. Players can participate in several searches simultaneously.
- Block and Entity Objectives — Hide blocks at specific coordinates, spawn static entities that players must find, or mix both in the same search. Blocks can be discovered by right-click, left-click, or breaking. Entities are protected from damage and stay exactly where you put them.
- BossBar System — A persistent BossBar shows real-time progress while a player has an active search. Temporary feedback BossBars flash when an object is found or when the search is completed — each with custom text, color, style, and duration.
- Visual Feedback — Send chat messages, action bars, titles with subtitles, play sounds, spawn particles, and apply potion effects. Finding an object and completing a search can each have completely different feedback.
- Rewards — Run console or player commands when objectives are found or when a search is completed. Use variables like %player%, {search}, {world}. Built-in duplicate prevention ensures rewards are never given twice.
- Admin GUI — Browse, toggle, edit, and delete searches from an interactive inventory GUI. Change display name, world, type, required permission, detection method, and BossBar settings — all without touching YAML files.
- Player GUI — Players can browse available searches, see their progress, and view individual objectives with a visual found/not-found indicator.
- Permission-Gated Searches — Each search can require a specific permission. Create VIP-only hunts, rank-locked adventures, or event-exclusive searches.
- Multi-Language Support — Ships with English, Spanish (Argentina), Spanish (Spain), and Portuguese (Brazil). Set your language in config.yml and everything adapts instantly.
- PlaceholderAPI Integration — Over 25 placeholders covering per-search stats, global player stats, server stats, and a full leaderboard system.
- Storage Options — YAML files, SQLite, or MySQL/MariaDB. Player progress is cached in memory and saved asynchronously to avoid lag.
- Version Compatibility — Works on Minecraft 1.12 through the latest versions (1.21+), including Paper. No NMS code — everything runs through the stable Bukkit/Spigot API.
- Leaderboard System — Built-in leaderboard tracks top players by objects found and searches completed. Players can check stats with /ssearch stats, view the top 10 with /ssearch top, and get directional hints with /ssearch hint.
Commands
| Command | Description | Permission |
| /ssearch help | Show help | ssearch.use |
| /ssearch list | List all searches | ssearch.use |
| /ssearch info <search> | View search info | ssearch.use |
| /ssearch gui | Open the player GUI | ssearch.use |
| /ssearch stats | View your statistics | ssearch.use |
| /ssearch top | View the leaderboard | ssearch.use |
| /ssearch hint <search> | Get a hint (direction + distance) | ssearch.use |
| /ssearch admin | Open the admin GUI | ssearch.gui.admin |
| /ssearch create <search> | Create a new search | ssearch.create |
| /ssearch delete <search> [confirm] | Delete a search | ssearch.delete |
| /ssearch reload | Reload all configs | ssearch.reload |
| /ssearch reset <player> <search> | Reset a player's progress | ssearch.reset |
| /ssearch resetall <search> [confirm] | Reset all players | ssearch.reset |
| /ssearch addblock <search> | Add the targeted block | ssearch.edit |
| /ssearch addentity <search> [type] | Add an entity | ssearch.edit |
| /ssearch remove <search> <id> | Remove an objective | ssearch.edit |
| /ssearch set <search> <prop> <value> | Modify a property | ssearch.edit |
Aliases: /search
Permissions
ssearch.use — Default: true — Basic usage.
ssearch.admin — Default: op — Full admin access (inherits all).
ssearch.create — Default: op — Create searches.
ssearch.edit — Default: op — Edit searches.
ssearch.delete — Default: op — Delete searches.
ssearch.reset — Default: op — Reset progress.
ssearch.reload — Default: op — Reload configs.
ssearch.gui.admin — Default: op — Open admin GUI.
Placeholders
Per-Search Placeholders (replace <search> with the search ID):
Code (Text):
%ssearch_total_found_objects_<search>%
%ssearch_remaining_objects_<search>%
%ssearch_has_completed_<search>%
%ssearch_progress_<search>%
%ssearch_progress_bar_<search>%
%ssearch_search_name_<search>%
%ssearch_search_state_<search>%
%ssearch_search_total_<search>%
%ssearch_search_world_<search>%
%ssearch_search_type_<search>%
%ssearch_search_enabled_<search>%
%ssearch_search_permission_<search>%
%ssearch_search_description_<search>%
%ssearch_completion_time_<search>%
%ssearch_has_found_<search>_<object>%
%ssearch_found_list_<search>%
Code (Text):
%ssearch_completed_count%
%ssearch_total_found%
%ssearch_total_remaining%
%ssearch_in_progress_count%
%ssearch_player_name%
Code (Text):
%ssearch_search_count%
%ssearch_active_search_count%
Code (Text):
%ssearch_top_player_<position>%
%ssearch_top_found_<position>%
%ssearch_top_completed_<position>%
Each search has its own file at plugins/sSearch/searches/<name>.yml. When you create a search with /ssearch create, a complete template is generated with every option documented and ready to edit.
Code (YAML):
display-name : "&b&lTreasure Hunt"
world : "world"
enabled : true
type : BLOCKS
description :
- "&7Find the &b3 hidden chests &7around the lobby!"
icon:
material : CHEST
glow : true
conditions:
required-permission : ""
world-whitelist : [ ]
detection:
method : INTERACT
require-right-click : true
persistent-bossbar:
enabled : true
text : "&b{name} &7- &f{found}&7/&f{total} &7({percent}%)"
color : BLUE
style : SOLID
progress-type : DYNAMIC
on-find:
message : "&a&lFOUND! &7You discovered a hidden chest."
title : "&b&lFOUND!"
subtitle : "&7{remaining} remaining"
sound:
name : ENTITY_PLAYER_LEVELUP
pitch : 1.5
particles:
type : VILLAGER_HAPPY
count : 20
bossbar:
enabled : true
text : "&a&l+1 OBJECTIVE!"
color : GREEN
duration : 60
on-complete:
message : "&6&lSEARCH COMPLETED!"
title : "&6&lVICTORY"
sound:
name : UI_TOAST_CHALLENGE_COMPLETE
effects :
- "GLOW:400:1"
- "SPEED:400:2"
per-object-rewards:
commands :
- "give %player% diamond 1"
messages :
- "&a+1 diamond"
completion-rewards:
commands :
- "give %player% netherite_ingot 1"
- "eco give %player% 500"
blocks:
- id : "chest_01"
x : 100
y : 70
z : -200
material : CHEST
world : "world"
API for Developers
Other plugins can integrate with sSearch through its public API.
Code (Java):
sSearchAPI api = sSearchAPI. getInstance ( ) ;
Optional <Search > search = api. getSearch ( "lobby_treasure" ) ;
api. markObjectFound (player, "lobby_treasure", "chest_01" ) ;
boolean completed = api. hasCompleted (player. getUniqueId ( ), "lobby_treasure" ) ;
int found = api. getFoundCount (player. getUniqueId ( ), "lobby_treasure" ) ;
Installation
1. Drop the jar into your plugins/ folder.
2. Start the server once to generate default files.
3. Edit config.yml to set your language and preferences.
4. Edit or create searches in searches/<name>.yml.
5. Run /ssearch reload or restart.
6. Start hiding objects!
Requirements
- Java 8 or higher.
- Spigot or Paper 1.12+ (works on latest versions).
- Optional: PlaceholderAPI, Vault, LuckPerms, WorldGuard.
Authors
LCDC and Herobrine
Support
If you find a bug or have a feature request, open an issue on the project repository. When reporting bugs, enable debug: true in config.yml and include the console output.
sSearch is a free Minecraft Java mod. Compatible with Minecraft 1.12, 1.13, 1.14, 1.15 and newer. Downloaded 9 times (via Spigot). Download it and open it directly in the game.