mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-28 18:15:27 +02:00
Compare commits
1 Commits
feat/v7/pa
...
fix/v7/adm
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4ce8a38304 |
@@ -283,32 +283,41 @@ public class MainCommand extends Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private CompletableFuture<Optional<CommandExecutionData>> preparePlotArgument(@Nullable Plot newPlot,
|
private CompletableFuture<Optional<CommandExecutionData>> preparePlotArgument(
|
||||||
@Nonnull CommandExecutionData data,
|
@Nullable Plot newPlot,
|
||||||
@Nullable PlotArea area) {
|
@Nonnull CommandExecutionData data,
|
||||||
if (newPlot != null && (data.player() instanceof ConsolePlayer
|
@Nullable PlotArea area
|
||||||
|| (area != null && area.equals(newPlot.getArea()))
|
) {
|
||||||
|| data.player().hasPermission(Permission.PERMISSION_ADMIN)
|
if (newPlot == null) {
|
||||||
|| data.player().hasPermission(Permission.PERMISSION_ADMIN_AREA_SUDO))
|
return CompletableFuture.completedFuture(Optional.of(data));
|
||||||
&& !newPlot.isDenied(data.player().getUUID())) {
|
|
||||||
return fetchPlotCenterLocation(newPlot)
|
|
||||||
.thenApply(newLoc -> {
|
|
||||||
if (!data.player().canTeleport(newLoc)) {
|
|
||||||
data.player().sendMessage(TranslatableCaption.of("border.denied"));
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
|
||||||
// Save meta
|
|
||||||
var originalCommandMeta = setCommandScope(data.player(), new TemporaryCommandMeta(newLoc, newPlot));
|
|
||||||
return Optional.of(new CommandExecutionData(
|
|
||||||
data.player(),
|
|
||||||
Arrays.copyOfRange(data.args(), 1, data.args().length), // Trimmed command
|
|
||||||
data.confirm(),
|
|
||||||
data.whenDone(),
|
|
||||||
originalCommandMeta
|
|
||||||
));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return CompletableFuture.completedFuture(Optional.of(data));
|
final PlotPlayer<?> player = data.player();
|
||||||
|
final boolean isAdmin = player instanceof ConsolePlayer || player.hasPermission(Permission.PERMISSION_ADMIN);
|
||||||
|
final boolean isDenied = newPlot.isDenied(player.getUUID());
|
||||||
|
if (!isAdmin) {
|
||||||
|
if (isDenied) {
|
||||||
|
return CompletableFuture.completedFuture(Optional.of(data));
|
||||||
|
}
|
||||||
|
if (area != null && area.equals(newPlot.getArea()) && !player.hasPermission(Permission.PERMISSION_ADMIN_AREA_SUDO)) {
|
||||||
|
return CompletableFuture.completedFuture(Optional.of(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fetchPlotCenterLocation(newPlot)
|
||||||
|
.thenApply(newLoc -> {
|
||||||
|
if (!player.canTeleport(newLoc)) {
|
||||||
|
player.sendMessage(TranslatableCaption.of("border.denied"));
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
// Save meta
|
||||||
|
var originalCommandMeta = setCommandScope(player, new TemporaryCommandMeta(newLoc, newPlot));
|
||||||
|
return Optional.of(new CommandExecutionData(
|
||||||
|
player,
|
||||||
|
Arrays.copyOfRange(data.args(), 1, data.args().length), // Trimmed command
|
||||||
|
data.confirm(),
|
||||||
|
data.whenDone(),
|
||||||
|
originalCommandMeta
|
||||||
|
));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<CommandExecutionData> prepareFlagArgument(@Nonnull CommandExecutionData data, @Nonnull PlotArea area) {
|
private Optional<CommandExecutionData> prepareFlagArgument(@Nonnull CommandExecutionData data, @Nonnull PlotArea area) {
|
||||||
|
Reference in New Issue
Block a user