feat: Add worldedit.schematic.list.other permission and functionality (#1507)

* Add worldedit.schematic.list.other permission and functionality

* Implement StringMan#containsUuid

* Javadocs

* chore: Add since annotation

Co-authored-by: NotMyFault <mc.cache@web.de>
This commit is contained in:
Owen1212055
2022-01-05 10:21:44 -05:00
committed by GitHub
parent f4658cc668
commit c27a34ce40
2 changed files with 36 additions and 0 deletions

View File

@ -25,6 +25,7 @@ import com.fastasyncworldedit.core.configuration.Settings;
import com.fastasyncworldedit.core.function.QuadFunction;
import com.fastasyncworldedit.core.util.MainUtil;
import com.fastasyncworldedit.core.util.MaskTraverser;
import com.fastasyncworldedit.core.util.StringMan;
import com.fastasyncworldedit.core.util.TaskManager;
import com.fastasyncworldedit.core.util.image.ImageUtil;
import com.fastasyncworldedit.core.util.task.DelegateConsumer;
@ -1033,7 +1034,27 @@ public class UtilityCommands {
if (playerFolder) {
if (listMine) {
File playerDir = MainUtil.resolveRelative(new File(dir, actor.getUniqueId() + dirFilter));
//FAWE start - Schematic list other permission
if (!actor.hasPermission("worldedit.schematic.list.other") && StringMan.containsUuid(dirFilter)) {
return;
}
if (playerDir.exists()) {
if (!actor.hasPermission("worldedit.schematic.list.other")) {
forEachFile = new DelegateConsumer<>(forEachFile) {
@Override
public void accept(File f) {
try {
if (f.isDirectory() && !UUID.fromString(f.getName()).equals(actor.getUniqueId())) { // Ignore
// directories of other players
return;
}
} catch (IllegalArgumentException ignored) {
}
super.accept(f);
}
};
}
//FAWE end
allFiles(playerDir.listFiles(), false, forEachFile);
}
}