PlaceholderLib
A lightweight placeholder API for Hytale plugins. Provides a simple registry system for dynamic text replacement.
Quick Start
1. Add Dependency
dependencies {implementation(files("libs/PlaceholderLib.jar"))}
2. Register Placeholders
public class MyPlugin extends JavaPlugin {
@Override
public void setup() {
// Static placeholder
PlaceholderLib.getRegistry().register(
new SimplePlaceholder("server_name", "MyServer")
);
// Dynamic placeholder
PlaceholderLib.getRegistry().register(
new Placeholder() {
@Override
public String getIdentifier() { return "online_count"; }
@Override
public String resolve(PlaceholderContext ctx) {
return String.valueOf(getServer().getOnlinePlayers().size());
}
}
);
}
}
How It Works
- Registration: Plugins register placeholders with unique identifiers (no
%symbols) - Pattern Matching: PlaceholderLib automatically finds
%placeholder_id%patterns in text - Resolution: Registered placeholders replace their patterns with actual values
- Fallback: Unregistered placeholders remain unchanged in text
Placeholder Rules
- Namespace:
pluginid_identifier(e.g.,rpg_foodlevel) - Allowed characters:
a-z,0-9,_ - Case-sensitive:
%rep_eat_food_level%≠%Rep_Eat_Food_Level% - Wrap in % when using:
%pluginid_identifier%
Example Implementation
public class CustomPlaceholder implements Placeholder {
@Override
public String getIdentifier() {
return "my_custom_value";
}
@Override
public String resolve(PlaceholderContext context) {
// Access player, world, etc. through context
return "custom_value";
}
}
Built in supported placeholders:
Player %player_name% %player_uuid% %player_x% %player_y% %player_z% %player_language%
Server %server_name% %server_max% %server_default_world% %server_gamemode%
LuckPerms %luckperms_prefix% %luckperms_suffix% %luckperms_group%
📚 Need Help?
- Discord Support: https://discord.gg/U4mH3weTsw

