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

think.rpgitems.power.BasePower Maven / Gradle / Ivy

There is a newer version: 3.12.2
Show newest version
package think.rpgitems.power;

import think.rpgitems.power.*;
import think.rpgitems.power.trigger.Trigger;

import java.io.Serializable;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
 * Base class containing common methods and fields.
 */
public abstract class BasePower extends BasePropertyHolder implements Serializable, Power {
    @Property
    public String displayName;
    @Property
    @AcceptedValue(preset = Preset.TRIGGERS)
    public Set triggers = Power.getDefaultTriggers(this.getClass());
    @Property
    public Set selectors = new HashSet<>();
    @Property
    public Set conditions = new HashSet<>();
    @Property
    public String requiredContext;
    @Property
    public String powerId = "";
    @Property
    public Set powerTags = new HashSet<>();

    @Override
    public String displayName() {
        return displayName;
    }

    @Override
    public Set getTriggers() {
        return Collections.unmodifiableSet(triggers);
    }

    @Override
    public Set getSelectors() {
        return Collections.unmodifiableSet(selectors);
    }

    @Override
    public Set getConditions() {
        return Collections.unmodifiableSet(conditions);
    }

    public String getPowerId() {
        return powerId;
    }

    public void setPowerId(String powerId) {
        this.powerId = powerId;
    }

    public Set getPowerTags() {
        return powerTags;
    }

    public void addPowerTag(String tag){
        powerTags.add(tag);
    }

    public void removePowerTag(String tag){
        powerTags.remove(tag);
    }

    @Override
    public String getPlaceholderId() {
        return getPowerId();
    }

    @Override
    public void setPlaceholderId(String id) {
        this.setPowerId(id);
    }

    @Override
    public Set getTags() {
        return getPowerTags();
    }

    @Override
    public void addTag(String tag) {
        addPowerTag(tag);
    }

    @Override
    public void removeTag(String tag) {
        removePowerTag(tag);
    }

    @Override
    public String requiredContext() {
        return requiredContext;
    }

    @Override
    public final String getPropertyHolderType() {
        return "power";
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy