mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 14:46:45 +01:00
Add placeholder to get the value of a plot flag
This commit is contained in:
parent
d07d32e28b
commit
14baead342
@ -29,6 +29,8 @@ import com.plotsquared.core.PlotSquared;
|
|||||||
import com.plotsquared.core.configuration.Settings;
|
import com.plotsquared.core.configuration.Settings;
|
||||||
import com.plotsquared.core.player.PlotPlayer;
|
import com.plotsquared.core.player.PlotPlayer;
|
||||||
import com.plotsquared.core.plot.Plot;
|
import com.plotsquared.core.plot.Plot;
|
||||||
|
import com.plotsquared.core.plot.flag.GlobalFlagContainer;
|
||||||
|
import com.plotsquared.core.plot.flag.PlotFlag;
|
||||||
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -36,9 +38,13 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class Placeholders extends PlaceholderExpansion {
|
public class Placeholders extends PlaceholderExpansion {
|
||||||
|
|
||||||
|
private Pattern flagPattern = Pattern.compile("currentplot_flag_(.+)");
|
||||||
|
|
||||||
public Placeholders() {
|
public Placeholders() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +65,7 @@ public class Placeholders extends PlaceholderExpansion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public String getVersion() {
|
@Override public String getVersion() {
|
||||||
return "2.4";
|
return "2.5";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public String onPlaceholderRequest(Player p, String identifier) {
|
@Override public String onPlaceholderRequest(Player p, String identifier) {
|
||||||
@ -124,7 +130,7 @@ public class Placeholders extends PlaceholderExpansion {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = PlotSquared.get().getImpromptuUUIDPipeline() .getSingle(uid,
|
String name = PlotSquared.get().getImpromptuUUIDPipeline().getSingle(uid,
|
||||||
Settings.UUID.BLOCKING_TIMEOUT);
|
Settings.UUID.BLOCKING_TIMEOUT);
|
||||||
|
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
@ -181,6 +187,31 @@ public class Placeholders extends PlaceholderExpansion {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
final Matcher matcher = this.flagPattern.matcher(identifier);
|
||||||
|
if (matcher.find()) {
|
||||||
|
return getFlag(plot, matcher.group(1));
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the flag value from its name on the current plot.
|
||||||
|
* If the flag doesn't exist it return an empty string.
|
||||||
|
* If the flag exists but it is not set on current plot it return the default value.
|
||||||
|
*
|
||||||
|
* @param plot Current plot where the player is
|
||||||
|
* @param flagName Name of flag to get from current plot
|
||||||
|
* @return The value of flag serialized in string
|
||||||
|
*/
|
||||||
|
private String getFlag(final Plot plot, final String flagName) {
|
||||||
|
final PlotFlag<?, ?> flag = GlobalFlagContainer.getInstance().getFlagFromString(flagName);
|
||||||
|
if (flag != null) {
|
||||||
|
return plot.getFlags().stream()
|
||||||
|
.filter(pflag -> pflag.getName().equals(flagName)).findFirst()
|
||||||
|
.map(PlotFlag::getValue)
|
||||||
|
.map(Object::toString)
|
||||||
|
.orElseGet(() -> plot.getFlagContainer().getFlagErased(flag.getClass()).toString());
|
||||||
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user