@@ -283,32 +283,41 @@ private CompletableFuture<Optional<CommandExecutionData>> prepareArguments(Comma
283283 }
284284 }
285285
286- private CompletableFuture <Optional <CommandExecutionData >> preparePlotArgument (@ Nullable Plot newPlot ,
287- @ Nonnull CommandExecutionData data ,
288- @ Nullable PlotArea area ) {
289- if (newPlot != null && (data .player () instanceof ConsolePlayer
290- || (area != null && area .equals (newPlot .getArea ()))
291- || data .player ().hasPermission (Permission .PERMISSION_ADMIN )
292- || data .player ().hasPermission (Permission .PERMISSION_ADMIN_AREA_SUDO ))
293- && !newPlot .isDenied (data .player ().getUUID ())) {
294- return fetchPlotCenterLocation (newPlot )
295- .thenApply (newLoc -> {
296- if (!data .player ().canTeleport (newLoc )) {
297- data .player ().sendMessage (TranslatableCaption .of ("border.denied" ));
298- return Optional .empty ();
299- }
300- // Save meta
301- var originalCommandMeta = setCommandScope (data .player (), new TemporaryCommandMeta (newLoc , newPlot ));
302- return Optional .of (new CommandExecutionData (
303- data .player (),
304- Arrays .copyOfRange (data .args (), 1 , data .args ().length ), // Trimmed command
305- data .confirm (),
306- data .whenDone (),
307- originalCommandMeta
308- ));
309- });
286+ private CompletableFuture <Optional <CommandExecutionData >> preparePlotArgument (
287+ @ Nullable Plot newPlot ,
288+ @ Nonnull CommandExecutionData data ,
289+ @ Nullable PlotArea area
290+ ) {
291+ if (newPlot == null ) {
292+ return CompletableFuture .completedFuture (Optional .of (data ));
293+ }
294+ final PlotPlayer <?> player = data .player ();
295+ final boolean isAdmin = player instanceof ConsolePlayer || player .hasPermission (Permission .PERMISSION_ADMIN );
296+ final boolean isDenied = newPlot .isDenied (player .getUUID ());
297+ if (!isAdmin ) {
298+ if (isDenied ) {
299+ throw new CommandException (TranslatableCaption .of ("deny.cannot_interact" ));
300+ }
301+ if (area != null && area .equals (newPlot .getArea ()) && !player .hasPermission (Permission .PERMISSION_ADMIN_AREA_SUDO )) {
302+ return CompletableFuture .completedFuture (Optional .of (data ));
303+ }
310304 }
311- return CompletableFuture .completedFuture (Optional .of (data ));
305+ return fetchPlotCenterLocation (newPlot )
306+ .thenApply (newLoc -> {
307+ if (!player .canTeleport (newLoc )) {
308+ player .sendMessage (TranslatableCaption .of ("border.denied" ));
309+ return Optional .empty ();
310+ }
311+ // Save meta
312+ var originalCommandMeta = setCommandScope (player , new TemporaryCommandMeta (newLoc , newPlot ));
313+ return Optional .of (new CommandExecutionData (
314+ player ,
315+ Arrays .copyOfRange (data .args (), 1 , data .args ().length ), // Trimmed command
316+ data .confirm (),
317+ data .whenDone (),
318+ originalCommandMeta
319+ ));
320+ });
312321 }
313322
314323 private Optional <CommandExecutionData > prepareFlagArgument (@ Nonnull CommandExecutionData data , @ Nonnull PlotArea area ) {
0 commit comments