Only show visible players in /plot near (#3819)

feat: check visibility of player in `/plot near`
This commit is contained in:
Pierre Maurice Schwang 2022-10-03 21:50:41 +02:00 committed by GitHub
parent 35abae99ca
commit 1b717c9b10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -26,6 +26,7 @@ import com.plotsquared.core.util.task.RunnableVal2;
import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.util.task.RunnableVal3;
import net.kyori.adventure.text.minimessage.Template; import net.kyori.adventure.text.minimessage.Template;
import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@CommandDeclaration(command = "near", @CommandDeclaration(command = "near",
@ -48,9 +49,13 @@ public class Near extends Command {
final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot")); final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot"));
player.sendMessage( player.sendMessage(
TranslatableCaption.of("near.plot_near"), TranslatableCaption.of("near.plot_near"),
Template.of("list", StringMan.join(plot.getPlayersInPlot(), ", ")) Template.of("list", StringMan.join(getPlayersInPlotVisible(plot, player), ", "))
); );
return CompletableFuture.completedFuture(true); return CompletableFuture.completedFuture(true);
} }
private List<PlotPlayer<?>> getPlayersInPlotVisible(Plot plot, PlotPlayer<?> executor) {
return plot.getPlayersInPlot().stream().filter(executor::canSee).toList();
}
} }

View File

@ -457,7 +457,7 @@ public class Plot {
* that could alter the de facto owner of the plot. * that could alter the de facto owner of the plot.
* *
* @return The plot owner of this particular (sub-)plot * @return The plot owner of this particular (sub-)plot
* as stored in the database, if one exists. Else, null. * as stored in the database, if one exists. Else, null.
*/ */
public @Nullable UUID getOwnerAbs() { public @Nullable UUID getOwnerAbs() {
return this.owner; return this.owner;