All Downloads are FREE. Search and download functionalities are using the official Maven repository.

be.maximvdw.placeholderapi.internal.PlaceholderReplacer Maven / Gradle / Ivy

package be.maximvdw.placeholderapi.internal;

import be.maximvdw.placeholderapi.PlaceholderReplaceEvent;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;

public abstract class PlaceholderReplacer {
    private String description = "";
    private boolean online = true;
    private boolean requiresPlayer = false;
    protected Object[] args = null;
    private Class returnType = null;
    private DataType dataType = DataType.NORMAL;
    private T defaultOutput = null;
    private String defaultTrueOutput = null;
    private String defaultFalseOutput = null;
    private boolean relationalPlaceholder = false;

    public PlaceholderReplacer(Class type) {
        this.returnType = type;
    }

    public PlaceholderReplacer(Class type, Object... args) {
        this.returnType = type;
        this.args = args;
    }

    /**
     * Get the return class type
     *
     * @return class type
     */
    public Class getReturnType() {
        return returnType;
    }

    /**
     * Get description
     *
     * @return Description
     */
    public String getDescription() {
        return description;
    }

    /**
     * Set placeholder description
     *
     * @param description Description
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * Get placeholder result
     *
     * @param event Placeholder replace event
     * @return placeholder result
     */
    public T getResult(PlaceholderReplaceEvent event){
        // Will be implemented by newer placeholder versions
        // Will not be called by older versions
        // Compensated by redirecting to older call
        // Because one of these three "getResult" functions will be implemented
        // it is not going to cause a recursive loop
        return this.getResult(event.getPlaceholder(), event.getOfflinePlayer());
    }

    @Deprecated
    public T getResult(String placeholder, OfflinePlayer player){
        PlaceholderReplaceEvent replaceEvent = new PlaceholderReplaceEvent(player,placeholder);
        return this.getResult(replaceEvent);
    }

    /**
     * Get placeholder result
     *
     * @param player
     *            Player
     * @return placeholder result
     */
    @Deprecated
    public T getResult(String placeholder, Player player){
        PlaceholderReplaceEvent replaceEvent = new PlaceholderReplaceEvent(player,placeholder);
        return this.getResult(replaceEvent);
    }

    public Object[] getArguments() {
        return args;
    }

    /**
     * Check if a player is required
     *
     * @return requires player
     */
    public boolean isPlayerRequired() {
        return requiresPlayer;
    }

    public void setRequiresPlayer(boolean requiresPlayer) {
        this.requiresPlayer = requiresPlayer;
    }

    public boolean isOnline() {
        return online;
    }

    public void setOnline(boolean online) {
        this.online = online;
    }

    public PlaceholderReplacer setDataType(DataType type) {
        this.dataType = type;
        return this;
    }

    public DataType getDataType() {
        return dataType;
    }

    public T getDefaultOutput() {
        return defaultOutput;
    }

    public PlaceholderReplacer setDefaultOutput(T defaultOutput) {
        this.defaultOutput = defaultOutput;
        return this;
    }

    public String getDefaultTrueOutput() {
        return defaultTrueOutput;
    }

    public PlaceholderReplacer setDefaultTrueOutput(String defaultTrueOutput) {
        this.defaultTrueOutput = defaultTrueOutput;
        return this;
    }

    public PlaceholderReplacer isRelationalPlaceholder(boolean relationalPlaceholder) {
        this.relationalPlaceholder = relationalPlaceholder;
        return this;
    }

    public boolean isRelationalPlaceholder() {
        return this.relationalPlaceholder;
    }

    public String getDefaultFalseOutput() {
        return defaultFalseOutput;
    }

    public PlaceholderReplacer setDefaultFalseOutput(String defaultFalseOutput) {
        this.defaultFalseOutput = defaultFalseOutput;
        return this;
    }

    public enum DataType {
        NORMAL, BOOLEAN, UNIXTIME
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy