package com.intellectualcrafters.plot.flag; import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.util.StringComparison; public abstract class Flag<V> implements StringComparison.StringComparable { private final String name; private boolean reserved = false; /** * Flag object used to store basic information for a Plot. Flags are a * key/value pair. For a flag to be usable by a player, you need to * register it with PlotSquared. * * @param name the flag name */ public Flag(String name) { this.name = name; } public Flag<V> reserve() { this.reserved = true; return this; } public boolean isReserved() { return this.reserved; } public void unreserve() { this.reserved = false; } public void register() { Flags.registerFlag(this); } public abstract String valueToString(Object value); @Override public final String toString() { return "Flag { name='" + getName() + "'}"; } public abstract V parseValue(String value); public abstract String getValueDescription(); public final String getName() { return this.name; } public boolean isSet(Plot plot) { return FlagManager.getPlotFlagRaw(plot, this) != null; } @Override public String getComparableString() { return getName(); } }