From a2e327421516032511508d0749e6442257145f21 Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Mon, 12 Feb 2024 18:19:59 +0100 Subject: [PATCH] Introduce base plot count placeholder (#4328) * Introduce base plot count placeholder * add world-specific variant --- .../bukkit/placeholder/PAPIPlaceholders.java | 16 ++++++++++++++++ .../util/placeholders/PlaceholderRegistry.java | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java index 5274961a6..2e8a03f3f 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java @@ -20,6 +20,8 @@ package com.plotsquared.bukkit.placeholder; import com.plotsquared.core.PlotSquared; import com.plotsquared.core.player.PlotPlayer; +import com.plotsquared.core.plot.flag.implementations.DoneFlag; +import com.plotsquared.core.util.query.PlotQuery; import me.clip.placeholderapi.PlaceholderAPIPlugin; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.bukkit.entity.Player; @@ -83,6 +85,20 @@ public class PAPIPlaceholders extends PlaceholderExpansion { return String.valueOf(pl.getPlotCount(identifier)); } + if (identifier.startsWith("base_plot_count_")) { + identifier = identifier.substring("base_plot_count_".length()); + if (identifier.isEmpty()) { + return ""; + } + + return String.valueOf(PlotQuery.newQuery() + .ownedBy(pl) + .inWorld(identifier) + .whereBasePlot() + .thatPasses(plot -> !DoneFlag.isDone(plot)) + .count()); + } + // PlotSquared placeholders return PlotSquared.platform().placeholderRegistry().getPlaceholderValue(identifier, pl); } diff --git a/Core/src/main/java/com/plotsquared/core/util/placeholders/PlaceholderRegistry.java b/Core/src/main/java/com/plotsquared/core/util/placeholders/PlaceholderRegistry.java index 6e379df94..d68e425aa 100644 --- a/Core/src/main/java/com/plotsquared/core/util/placeholders/PlaceholderRegistry.java +++ b/Core/src/main/java/com/plotsquared/core/util/placeholders/PlaceholderRegistry.java @@ -31,9 +31,11 @@ import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.flag.GlobalFlagContainer; import com.plotsquared.core.plot.flag.PlotFlag; +import com.plotsquared.core.plot.flag.implementations.DoneFlag; import com.plotsquared.core.plot.flag.implementations.ServerPlotFlag; import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.PlayerManager; +import com.plotsquared.core.util.query.PlotQuery; import net.kyori.adventure.text.Component; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -95,6 +97,12 @@ public final class PlaceholderRegistry { } return Integer.toString(player.getAllowedPlots()); }); + this.createPlaceholder("base_plot_count", player -> Integer.toString(PlotQuery.newQuery() + .ownedBy(player) + .whereBasePlot() + .thatPasses(plot -> !DoneFlag.isDone(plot)) + .count()) + ); this.createPlaceholder("plot_count", player -> Integer.toString(player.getPlotCount())); this.createPlaceholder("currentplot_alias", (player, plot) -> { if (plot.getAlias().isEmpty()) {