promotional bannermobile promotional banner
premium banner
Placeholder solution for all hytale mods in the making. Together we unite

Description

ko-fi

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

  1. Registration: Plugins register placeholders with unique identifiers (no % symbols)
  2. Pattern Matching: PlaceholderLib automatically finds %placeholder_id% patterns in text
  3. Resolution: Registered placeholders replace their patterns with actual values
  4. 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?