Add config options to disable commands, explicit permissions definitions
This commit is contained in:
parent
fd05c7a5dd
commit
19d3053201
@ -66,6 +66,23 @@ public class DisguiseConfig {
|
||||
private static boolean modifyCollisions;
|
||||
private static boolean disableFriendlyInvisibles;
|
||||
private static boolean warnScoreboardConflict;
|
||||
private static boolean explicitDisguisePermissions;
|
||||
private static boolean disableCommands;
|
||||
|
||||
/**
|
||||
* No setter provided as this cannot be changed after startup
|
||||
*/
|
||||
public static boolean isDisableCommands() {
|
||||
return disableCommands;
|
||||
}
|
||||
|
||||
public static boolean isExplicitDisguisePermissions() {
|
||||
return explicitDisguisePermissions;
|
||||
}
|
||||
|
||||
public static void setExplicitDisguisePermissions(boolean explictDisguisePermission) {
|
||||
explicitDisguisePermissions = explictDisguisePermission;
|
||||
}
|
||||
|
||||
public static Entry<String, Disguise> getCustomDisguise(String disguise) {
|
||||
for (Entry<String, Disguise> entry : customDisguises.entrySet()) {
|
||||
@ -226,6 +243,8 @@ public class DisguiseConfig {
|
||||
setModifyCollisions(config.getBoolean("Scoreboard.Collisions"));
|
||||
setDisableFriendlyInvisibles(config.getBoolean("Scoreboard.DisableFriendlyInvisibles"));
|
||||
setWarnScoreboardConflict(config.getBoolean("Scoreboard.WarnConflict"));
|
||||
disableCommands = config.getBoolean("DisableCommands");
|
||||
setExplicitDisguisePermissions(config.getBoolean("Permissions.ExplictDisguises"));
|
||||
|
||||
if (!LibsPremium.isPremium() && (isSavePlayerDisguises() || isSaveEntityDisguises())) {
|
||||
DisguiseUtilities.getLogger().warning("You must purchase the plugin to use saved disguises!");
|
||||
|
@ -69,23 +69,25 @@ public class LibsDisguises extends JavaPlugin {
|
||||
|
||||
Bukkit.getPluginManager().registerEvents(listener, this);
|
||||
|
||||
registerCommand("disguise", new DisguiseCommand());
|
||||
registerCommand("undisguise", new UndisguiseCommand());
|
||||
registerCommand("disguiseplayer", new DisguisePlayerCommand());
|
||||
registerCommand("undisguiseplayer", new UndisguisePlayerCommand());
|
||||
registerCommand("undisguiseentity", new UndisguiseEntityCommand());
|
||||
registerCommand("disguiseentity", new DisguiseEntityCommand());
|
||||
registerCommand("disguiseradius", new DisguiseRadiusCommand(getConfig().getInt("DisguiseRadiusMax")));
|
||||
registerCommand("undisguiseradius", new UndisguiseRadiusCommand(getConfig().getInt("UndisguiseRadiusMax")));
|
||||
registerCommand("disguisehelp", new DisguiseHelpCommand());
|
||||
registerCommand("disguiseclone", new DisguiseCloneCommand());
|
||||
registerCommand("libsdisguises", new LibsDisguisesCommand());
|
||||
registerCommand("disguiseviewself", new DisguiseViewSelfCommand());
|
||||
registerCommand("disguisemodify", new DisguiseModifyCommand());
|
||||
registerCommand("disguisemodifyentity", new DisguiseModifyEntityCommand());
|
||||
registerCommand("disguisemodifyplayer", new DisguiseModifyPlayerCommand());
|
||||
registerCommand("disguisemodifyradius",
|
||||
new DisguiseModifyRadiusCommand(getConfig().getInt("DisguiseRadiusMax")));
|
||||
if (!DisguiseConfig.isDisableCommands()) {
|
||||
registerCommand("disguise", new DisguiseCommand());
|
||||
registerCommand("undisguise", new UndisguiseCommand());
|
||||
registerCommand("disguiseplayer", new DisguisePlayerCommand());
|
||||
registerCommand("undisguiseplayer", new UndisguisePlayerCommand());
|
||||
registerCommand("undisguiseentity", new UndisguiseEntityCommand());
|
||||
registerCommand("disguiseentity", new DisguiseEntityCommand());
|
||||
registerCommand("disguiseradius", new DisguiseRadiusCommand(getConfig().getInt("DisguiseRadiusMax")));
|
||||
registerCommand("undisguiseradius", new UndisguiseRadiusCommand(getConfig().getInt("UndisguiseRadiusMax")));
|
||||
registerCommand("disguisehelp", new DisguiseHelpCommand());
|
||||
registerCommand("disguiseclone", new DisguiseCloneCommand());
|
||||
registerCommand("libsdisguises", new LibsDisguisesCommand());
|
||||
registerCommand("disguiseviewself", new DisguiseViewSelfCommand());
|
||||
registerCommand("disguisemodify", new DisguiseModifyCommand());
|
||||
registerCommand("disguisemodifyentity", new DisguiseModifyEntityCommand());
|
||||
registerCommand("disguisemodifyplayer", new DisguiseModifyPlayerCommand());
|
||||
registerCommand("disguisemodifyradius",
|
||||
new DisguiseModifyRadiusCommand(getConfig().getInt("DisguiseRadiusMax")));
|
||||
}
|
||||
|
||||
infectWithMetrics();
|
||||
}
|
||||
@ -230,8 +232,17 @@ public class LibsDisguises extends JavaPlugin {
|
||||
});
|
||||
|
||||
metrics.addCustomChart(new Metrics.SimplePie("targeted_disguises") {
|
||||
/**
|
||||
* Store value just to minimize amount of times it's called, and to persist even when not using anymore
|
||||
*/
|
||||
private boolean targetedDisguises;
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
if (targetedDisguises) {
|
||||
return "Yes";
|
||||
}
|
||||
|
||||
Collection<HashSet<TargetedDisguise>> list = DisguiseUtilities.getDisguises().values();
|
||||
|
||||
if (list.isEmpty())
|
||||
@ -242,6 +253,7 @@ public class LibsDisguises extends JavaPlugin {
|
||||
if (disg.getObservers().isEmpty())
|
||||
continue;
|
||||
|
||||
targetedDisguises = true;
|
||||
return "Yes";
|
||||
}
|
||||
}
|
||||
|
@ -189,12 +189,10 @@ public class DisguisePermissions {
|
||||
Map<String, Boolean> permissions = new HashMap<>();
|
||||
|
||||
// If the command sender is OP, then this will work even as the below code doesn't
|
||||
for (String perm : new String[]{permissionNode + "*", "libsdisguises.*.*"}) {
|
||||
if (!sender.hasPermission(perm)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
permissions.put(perm, true);
|
||||
// libsdisguises.[command].[disguise].[options]
|
||||
// They can use all commands, all disguises, all options
|
||||
if (sender.hasPermission("libsdisguises.*.*.*")) {
|
||||
permissions.put("libsdisguises.*.*.*", true);
|
||||
}
|
||||
|
||||
for (PermissionAttachmentInfo permission : sender.getEffectivePermissions()) {
|
||||
@ -294,8 +292,9 @@ public class DisguisePermissions {
|
||||
disabled = false;
|
||||
}
|
||||
|
||||
// If the child disguise does not have any options defined, give them wildcard by default
|
||||
if (parsedPermission.options.isEmpty()) {
|
||||
// If the child disguise does not have any options defined, give them wildcard by default if
|
||||
// config allows
|
||||
if (parsedPermission.options.isEmpty() && !DisguiseConfig.isExplictDisguisePermissions()) {
|
||||
storage.wildcardAllow = true;
|
||||
// If this disguise has options defined, unless wildcard was explictly given then remove it
|
||||
} else if (!storage.permittedOptions.contains("*")) {
|
||||
|
@ -1,5 +1,22 @@
|
||||
# Shall I notify people of a LibsDisguises update?
|
||||
NotifyUpdate: true
|
||||
Permissions:
|
||||
# By default "libsdisguises.disguise.cow" will allow all options for cow disguise unless another permission has
|
||||
# defined otherwise.
|
||||
# If given "libsdisguises.disguise.animals.setburning" then "libsdisguises.disguise.cow" they will still be able to
|
||||
# use other options like "setbaby". This was provided for backwards compatibility.
|
||||
# By turning this from 'false' to 'true' the plugin will no longer give them the options unless the player was
|
||||
# explicitly granted it. Even if by wildcard. The above example means they can only use "setburning"
|
||||
|
||||
# To summerize, "libsdisguises.disguise.cow" will no longer let them do any options on the cow disguise unless it
|
||||
# was added to their permissions
|
||||
|
||||
# You can read more about permissions here: https://www.spigotmc.org/wiki/lib-s-disguises-setting-up-permissions/
|
||||
# The permission used to check OPs who may not have permissions defined, is "libsdisguises.*.*.*" which you can
|
||||
# negate with your permissions plugin
|
||||
ExplicitDisguises: false
|
||||
|
||||
# Disables commands with the exception of /libsdisguises. Useful if you don't want the plugin to be used by anything
|
||||
# but a plugin
|
||||
DisableCommands: false
|
||||
|
||||
# The disguise plugin stores all GameProfiles inside a file called 'cache.yml'
|
||||
# This means that the plugin doesn't need to constantly call Mojang just to find a skin for an offline player
|
||||
@ -49,6 +66,9 @@ Scoreboard:
|
||||
# If self disguises are disabled, or the scoreboard is using IGNORE_SCOREBOARD then this does nothing.
|
||||
WarnConflict: true
|
||||
|
||||
# Shall I notify those with the correct permission when there's a LibsDisguises update?
|
||||
NotifyUpdate: true
|
||||
|
||||
# Whats the permission to get the notification?
|
||||
Permission: 'libsdisguises.update'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user