mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-08-03 04:55: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) {
|
||||||
|
@@ -49,12 +49,10 @@ import java.util.Collection;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registry that contains {@link Placeholder placeholders}
|
* Registry that contains {@link Placeholder placeholders}
|
||||||
@@ -129,22 +127,6 @@ public final class PlaceholderRegistry {
|
|||||||
}
|
}
|
||||||
return legacyComponent(TranslatableCaption.of("info.unknown"), player);
|
return legacyComponent(TranslatableCaption.of("info.unknown"), player);
|
||||||
});
|
});
|
||||||
this.createPlaceholder("currentplot_owners", (player, plot) -> {
|
|
||||||
if (plot.getFlag(ServerPlotFlag.class)) {
|
|
||||||
return legacyComponent(TranslatableCaption.of("info.server"), player);
|
|
||||||
}
|
|
||||||
final Set<UUID> plotOwners = plot.getOwners();
|
|
||||||
if (plotOwners.isEmpty()) {
|
|
||||||
return legacyComponent(TranslatableCaption.of("generic.generic_unowned"), player);
|
|
||||||
}
|
|
||||||
return plotOwners.stream().map(PlotSquared.platform().playerManager()::getUsernameCaption).map(f -> {
|
|
||||||
try {
|
|
||||||
return f.get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS).getComponent(player);
|
|
||||||
} catch (final Exception ignored) {
|
|
||||||
return legacyComponent(TranslatableCaption.of("info.unknown"), player);
|
|
||||||
}
|
|
||||||
}).collect(Collectors.joining(", "));
|
|
||||||
});
|
|
||||||
this.createPlaceholder("currentplot_members", (player, plot) -> {
|
this.createPlaceholder("currentplot_members", (player, plot) -> {
|
||||||
if (plot.getMembers().isEmpty() && plot.getTrusted().isEmpty()) {
|
if (plot.getMembers().isEmpty() && plot.getTrusted().isEmpty()) {
|
||||||
return legacyComponent(TranslatableCaption.of("info.none"), player);
|
return legacyComponent(TranslatableCaption.of("info.none"), player);
|
||||||
|
Reference in New Issue
Block a user