PAPIParser.java
package it.fulminazzo.yagl.metadatable;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
/**
* A special implementation of {@link MetadatableHelper}
* that allows to apply {@link PlaceholderAPI}
* variables to the specified object.
*/
public final class PAPIParser extends MetadatableHelper {
private final @NotNull Player player;
/**
* Instantiates a new PAPIParser helper.
*
* @param player the player
*/
PAPIParser(final @NotNull Player player) {
super(Collections::emptyMap);
this.player = player;
}
@Override
String apply(@NotNull String string) {
return PlaceholderAPI.setPlaceholders(this.player, string);
}
/**
* Parses the given object strings using {@link PlaceholderAPI}.
*
* @param <T> the type of the object
* @param player the target player of the placeholders
* @param object the object
* @return the parsed object
*/
public static <T> T parse(final @NotNull Player player,
final @NotNull T object) {
return new PAPIParser(player).apply(object);
}
}