From 140201478f1155473fca5a36aed5f1c65fb2cf08 Mon Sep 17 00:00:00 2001 From: Magnus Ulf Date: Fri, 8 Feb 2019 16:38:00 +0100 Subject: [PATCH] Make it not required to put all permissions in the PERM file --- .../massivecore/MassiveCorePerm.java | 18 ++++++++----- .../massivecore/cmd/CmdMassiveCore.java | 2 +- .../massivecore/command/MassiveCommand.java | 26 +++++++++---------- .../massivecore/store/DriverFlatfile.java | 4 ++- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/com/massivecraft/massivecore/MassiveCorePerm.java b/src/com/massivecraft/massivecore/MassiveCorePerm.java index 13bb03fa..48becd6b 100644 --- a/src/com/massivecraft/massivecore/MassiveCorePerm.java +++ b/src/com/massivecraft/massivecore/MassiveCorePerm.java @@ -9,10 +9,10 @@ public enum MassiveCorePerm implements Identified // ENUM // -------------------------------------------- // - BASECOMMAND, + /*BASECOMMAND, TEST, ID, - VERSION, + HEARSOUND, STORE, STORE_STATS, @@ -21,7 +21,7 @@ public enum MassiveCorePerm implements Identified STORE_CLEAN, USYS, USYS_MULTIVERSE, - USYS_MULTIVERSE_LIST, + USYS_MULTIVERSE_SHOW, USYS_MULTIVERSE_NEW, USYS_MULTIVERSE_DEL, @@ -31,7 +31,7 @@ public enum MassiveCorePerm implements Identified USYS_UNIVERSE_CLEAR, USYS_WORLD, USYS_ASPECT, - USYS_ASPECT_LIST, + USYS_ASPECT_SHOW, USYS_ASPECT_USE, BUFFER, @@ -41,14 +41,18 @@ public enum MassiveCorePerm implements Identified BUFFER_ADD, BUFFER_WHITESPACE, CMDURL, - CONFIG, + SPONSOR, CLICK, - NOTPDELAY, + NOTPDELAY,*/ + + CONFIG, + VERSION, + USYS_MULTIVERSE_LIST, + USYS_ASPECT_LIST, VARIABLE_BOOK, VARIABLE_BUFFER, - // END OF LIST ; diff --git a/src/com/massivecraft/massivecore/cmd/CmdMassiveCore.java b/src/com/massivecraft/massivecore/cmd/CmdMassiveCore.java index c7162f33..0ed20dbb 100755 --- a/src/com/massivecraft/massivecore/cmd/CmdMassiveCore.java +++ b/src/com/massivecraft/massivecore/cmd/CmdMassiveCore.java @@ -32,7 +32,7 @@ public class CmdMassiveCore extends MassiveCoreCommand public CmdMassiveCoreCmdurl cmdMassiveCoreCmdurl = new CmdMassiveCoreCmdurl(); public CommandEditAbstract cmdMassiveCoreConfig = new CommandEditSingleton<>(MassiveCoreMConf.get()).addRequirements(RequirementHasPerm.get(MassiveCorePerm.CONFIG)); public CmdMassiveCoreClick cmdMassiveCoreClick = new CmdMassiveCoreClick(); - public MassiveCommandVersion cmdMassiveCoreVersion = new MassiveCommandVersion(MassiveCore.get()).setAliases("v", "version").addRequirements(RequirementHasPerm.get(MassiveCorePerm.VERSION)); + public MassiveCommandVersion cmdMassiveCoreVersion = new MassiveCommandVersion(MassiveCore.get()).addRequirements(RequirementHasPerm.get(MassiveCorePerm.VERSION)); // -------------------------------------------- // // OVERRIDE diff --git a/src/com/massivecraft/massivecore/command/MassiveCommand.java b/src/com/massivecraft/massivecore/command/MassiveCommand.java index 26931945..1be18b10 100644 --- a/src/com/massivecraft/massivecore/command/MassiveCommand.java +++ b/src/com/massivecraft/massivecore/command/MassiveCommand.java @@ -997,13 +997,12 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand public void setupChildren() { - for (MassiveCommand child : this.getChildren()) - { - if (child.isSetupEnabled()) child.setup(); - } + this.getChildren().stream() + .filter(MassiveCommand::isSetupEnabled) + .forEach(MassiveCommand::setup); } - private Class getClassOrEnclosing(Object object) + private static Class getClassOrEnclosing(Object object) { Class clazz = object.getClass(); Class enclosingClass = clazz.getEnclosingClass(); @@ -1031,16 +1030,13 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand return ret; } - protected > T calcPerm() + protected Object calcPerm() { - Class permClass = this.getSetupPermClass(); + Class> permClass = this.getSetupPermClass(); String basePrefix = this.getSetupPermBaseClassName(); - if (permClass == null) return null; - if (basePrefix == null) return null; - // Only try if the name matches with the expected prefix ... - String name = getClassOrEnclosing(this).getSimpleName(); //this.getClass().getSimpleName(); + String name = getClassOrEnclosing(this).getSimpleName(); if ( ! name.startsWith(basePrefix)) return null; // ... and remove the prefix ... @@ -1056,7 +1052,7 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand if (permName.isEmpty()) permName = "BASECOMMAND"; // Create ret - T ret = null; + Object ret = null; // Try non-lenient ret = getPerm(permName, false, permClass); @@ -1066,11 +1062,13 @@ public class MassiveCommand implements Active, PluginIdentifiableCommand ret = getPerm(permName, true, permClass); if (ret != null) return ret; - throw new RuntimeException("Could not find permission matching: " + permName); + // Or calculate ourselves + return PermissionUtil.createPermissionId(this.getRoot().getPlugin(), permName); } - protected static > T getPerm(String permName, boolean lenient, Class permClass) + protected static > T getPerm(String permName, boolean lenient, Class permClazz) { + Class permClass = (Class) permClazz; permName = getPermCompareString(permName, lenient); for (T perm : TypeEnum.getEnumValues(permClass)) { diff --git a/src/com/massivecraft/massivecore/store/DriverFlatfile.java b/src/com/massivecraft/massivecore/store/DriverFlatfile.java index 9bd1dc30..9ed003d9 100644 --- a/src/com/massivecraft/massivecore/store/DriverFlatfile.java +++ b/src/com/massivecraft/massivecore/store/DriverFlatfile.java @@ -159,7 +159,9 @@ public class DriverFlatfile extends DriverAbstract public static JsonObject loadFileJsonObject(File file) { - return loadFileJson(file).getAsJsonObject(); + JsonElement ret = loadFileJson(file); + if (ret == null) return null; + return ret.getAsJsonObject(); } public static JsonElement loadFileJson(File file)