CommandPanels/src/me/rockyhawk/commandpanels/formatter/Placeholders.java
2025-10-29 10:32:13 +08:00

68 lines
1.8 KiB
Java

package me.rockyhawk.commandpanels.formatter;
import me.clip.placeholderapi.PlaceholderAPI;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import me.rockyhawk.commandpanels.Context;
import me.rockyhawk.commandpanels.formatter.placeholders.DataPlaceholder;
import me.rockyhawk.commandpanels.formatter.placeholders.RandomPlaceholder;
import me.rockyhawk.commandpanels.formatter.placeholders.SessionDataPlaceholder;
import org.bukkit.OfflinePlayer;
import java.util.ArrayList;
import java.util.List;
public class Placeholders extends PlaceholderExpansion {
private final Context ctx;
private final List<PlaceholderResolver> resolvers = new ArrayList<>();
public Placeholders(Context pl) {
this.ctx = pl;
loadPlaceholders();
}
private void loadPlaceholders() {
resolvers.add(new SessionDataPlaceholder());
resolvers.add(new DataPlaceholder());
resolvers.add(new RandomPlaceholder());
}
@Override
public boolean persist() {
return true;
}
@Override
public String getAuthor() {
return "RockyHawk";
}
@Override
public String getIdentifier() {
return "commandpanels";
}
@Override
public String getVersion() {
return ctx.plugin.getPluginMeta().getVersion();
}
@Override
public String onRequest(OfflinePlayer player, String params) {
if (player == null) return "";
params = PlaceholderAPI.setBracketPlaceholders(player, params);
for (PlaceholderResolver resolver : resolvers) {
try {
String value = resolver.resolve(player, params, ctx);
if (value != null) {
return value;
}
} catch (Exception e) {
return "unknown";
}
}
return "unknown";
}
}