mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2024-12-22 17:27:38 +00:00
Adjust mask managers
- Add list of "exclusive" managers to config to aid users in having some sort of prioritisation. - Fixes #960 if PlotSquared is added to exclusive managers, otherwise, there's no particularly sane way of adding prioritisation without requiring a treemap be added to YAML config, or for us to decide upon it ourselves
This commit is contained in:
parent
fbbb4ed8fa
commit
bd95d5a86d
@ -304,10 +304,10 @@ public class FaweBukkit implements IFawe, Listener {
|
||||
return;
|
||||
}
|
||||
if (plotSquared.getClass().getPackage().toString().contains("intellectualsites")) {
|
||||
WEManager.IMP.managers.add(new com.fastasyncworldedit.bukkit.regions.plotsquaredv4.PlotSquaredFeature());
|
||||
WEManager.IMP.addManager(new com.fastasyncworldedit.bukkit.regions.plotsquaredv4.PlotSquaredFeature());
|
||||
LOGGER.info("Plugin 'PlotSquared' found. Using it now.");
|
||||
} else if (PlotSquared.get().getVersion().version[0] == 6) {
|
||||
WEManager.IMP.managers.add(new com.fastasyncworldedit.bukkit.regions.plotsquared.PlotSquaredFeature());
|
||||
WEManager.IMP.addManager(new com.fastasyncworldedit.bukkit.regions.plotsquared.PlotSquaredFeature());
|
||||
LOGGER.info("Plugin 'PlotSquared' found. Using it now.");
|
||||
} else {
|
||||
LOGGER.error("Incompatible version of PlotSquared found. Please use PlotSquared v6.");
|
||||
|
@ -124,20 +124,12 @@ public class WorldGuardFeature extends BukkitMaskManager implements Listener {
|
||||
final BlockVector3 pos1;
|
||||
final BlockVector3 pos2;
|
||||
if (myregion.getId().equals("__global__")) {
|
||||
pos1 = BlockVector3.at(Integer.MIN_VALUE, 0, Integer.MIN_VALUE);
|
||||
pos2 = BlockVector3.at(Integer.MAX_VALUE, 255, Integer.MAX_VALUE);
|
||||
pos1 = BlockVector3.at(Integer.MIN_VALUE, wePlayer.getWorld().getMinY(), Integer.MIN_VALUE);
|
||||
pos2 = BlockVector3.at(Integer.MAX_VALUE, wePlayer.getWorld().getMaxY(), Integer.MAX_VALUE);
|
||||
} else {
|
||||
if (myregion instanceof ProtectedCuboidRegion) {
|
||||
pos1 = BlockVector3.at(
|
||||
myregion.getMinimumPoint().getBlockX(),
|
||||
myregion.getMinimumPoint().getBlockY(),
|
||||
myregion.getMinimumPoint().getBlockZ()
|
||||
);
|
||||
pos2 = BlockVector3.at(
|
||||
myregion.getMaximumPoint().getBlockX(),
|
||||
myregion.getMaximumPoint().getBlockY(),
|
||||
myregion.getMaximumPoint().getBlockZ()
|
||||
);
|
||||
pos1 = myregion.getMinimumPoint();
|
||||
pos2 = myregion.getMaximumPoint();
|
||||
} else {
|
||||
return new FaweMask(adapt(myregion)) {
|
||||
@Override
|
||||
|
@ -125,7 +125,7 @@ public class Fawe {
|
||||
// Delayed worldedit setup
|
||||
TaskManager.IMP.later(() -> {
|
||||
try {
|
||||
WEManager.IMP.managers.addAll(Fawe.this.implementation.getMaskManagers());
|
||||
WEManager.IMP.addManagers(Fawe.this.implementation.getMaskManagers());
|
||||
} catch (Throwable ignored) {
|
||||
}
|
||||
}, 0);
|
||||
|
@ -139,7 +139,7 @@ public class FaweAPI {
|
||||
* @return Set of FaweMaskManager
|
||||
*/
|
||||
public static Set<FaweMaskManager> getMaskManagers() {
|
||||
return new HashSet<>(WEManager.IMP.managers);
|
||||
return new HashSet<>(WEManager.IMP.getManagers());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -176,7 +176,7 @@ public class FaweAPI {
|
||||
}
|
||||
|
||||
public static void addMaskManager(FaweMaskManager maskMan) {
|
||||
WEManager.IMP.managers.add(maskMan);
|
||||
WEManager.IMP.addManager(maskMan);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -115,6 +115,14 @@ public class Settings extends Config {
|
||||
" - OWNER = Players who own the region"
|
||||
})
|
||||
public String MODE = "MEMBER";
|
||||
@Comment({
|
||||
"List of plugin mask managers that should be exclusive. Exclusive managers are not ",
|
||||
"checked for edit restrictions if another manager already allowed an edit, and further ",
|
||||
"managers are not checked if an exclusive manager allows an edit.",
|
||||
" - May be useful to add PlotSquared if using both P2 and WorldGuard on a server",
|
||||
" - Some custom-implementations in other plugins may override this setting"
|
||||
})
|
||||
public List<String> EXCLUSIVE_MANAGERS = new ArrayList<>(Collections.singleton(("ExamplePlugin")));
|
||||
|
||||
}
|
||||
|
||||
|
@ -8,20 +8,6 @@ import java.util.Locale;
|
||||
|
||||
public abstract class FaweMaskManager {
|
||||
|
||||
public enum MaskType {
|
||||
OWNER,
|
||||
MEMBER;
|
||||
|
||||
public static MaskType getDefaultMaskType() {
|
||||
try {
|
||||
return MaskType
|
||||
.valueOf(Settings.IMP.REGION_RESTRICTIONS_OPTIONS.MODE.toUpperCase(Locale.ROOT));
|
||||
} catch (Exception ignored) {
|
||||
return MEMBER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final String key;
|
||||
|
||||
public FaweMaskManager(final String plugin) {
|
||||
@ -54,7 +40,21 @@ public abstract class FaweMaskManager {
|
||||
}
|
||||
|
||||
public boolean isExclusive() {
|
||||
return false;
|
||||
return Settings.IMP.REGION_RESTRICTIONS_OPTIONS.EXCLUSIVE_MANAGERS.contains(this.key);
|
||||
}
|
||||
|
||||
public enum MaskType {
|
||||
OWNER,
|
||||
MEMBER;
|
||||
|
||||
public static MaskType getDefaultMaskType() {
|
||||
try {
|
||||
return MaskType
|
||||
.valueOf(Settings.IMP.REGION_RESTRICTIONS_OPTIONS.MODE.toUpperCase(Locale.ROOT));
|
||||
} catch (Exception ignored) {
|
||||
return MEMBER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -19,17 +19,34 @@ import com.sk89q.worldedit.util.formatting.text.TextComponent;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
public class WEManager {
|
||||
|
||||
private static final Logger LOGGER = LogManagerCompat.getLogger();
|
||||
|
||||
public static final WEManager IMP = new WEManager();
|
||||
private static final Logger LOGGER = LogManagerCompat.getLogger();
|
||||
private final ArrayDeque<FaweMaskManager> managers = new ArrayDeque<>();
|
||||
|
||||
public final ArrayDeque<FaweMaskManager> managers = new ArrayDeque<>();
|
||||
public ArrayDeque<FaweMaskManager> getManagers() {
|
||||
return managers;
|
||||
}
|
||||
|
||||
public void addManager(FaweMaskManager manager) {
|
||||
if (manager.isExclusive()) {
|
||||
managers.addFirst(manager);
|
||||
} else {
|
||||
managers.add(manager);
|
||||
}
|
||||
}
|
||||
|
||||
public void addManagers(Collection<FaweMaskManager> managers) {
|
||||
for (FaweMaskManager manager : managers) {
|
||||
addManager(manager);
|
||||
}
|
||||
}
|
||||
|
||||
public void cancelEditSafe(AbstractDelegateExtent parent, FaweException reason) throws FaweException {
|
||||
LOGGER.warn("CancelEditSafe was hit. Please ignore this message.");
|
||||
@ -102,7 +119,6 @@ public class WEManager {
|
||||
masks.clear();
|
||||
}
|
||||
}
|
||||
Set<FaweMask> tmpMasks = new HashSet<>();
|
||||
for (FaweMaskManager manager : managers) {
|
||||
if (player.hasPermission("fawe." + manager.getKey())) {
|
||||
try {
|
||||
|
Loading…
Reference in New Issue
Block a user