diff --git a/src/com/massivecraft/massivecore/MassiveCorePerm.java b/src/com/massivecraft/massivecore/MassiveCorePerm.java index 73d9a49f..13bb03fa 100644 --- a/src/com/massivecraft/massivecore/MassiveCorePerm.java +++ b/src/com/massivecraft/massivecore/MassiveCorePerm.java @@ -81,5 +81,10 @@ public enum MassiveCorePerm implements Identified { return PermissionUtil.hasPermission(permissible, this); } + + public void hasOrThrow(Permissible permissible) throws MassiveException + { + PermissionUtil.hasPermissionOrThrow(permissible, this); + } } diff --git a/src/com/massivecraft/massivecore/util/PermissionUtil.java b/src/com/massivecraft/massivecore/util/PermissionUtil.java index 4b167df8..d97527f7 100644 --- a/src/com/massivecraft/massivecore/util/PermissionUtil.java +++ b/src/com/massivecraft/massivecore/util/PermissionUtil.java @@ -3,6 +3,7 @@ package com.massivecraft.massivecore.util; import com.massivecraft.massivecore.Identified; import com.massivecraft.massivecore.Lang; import com.massivecraft.massivecore.MassiveCore; +import com.massivecraft.massivecore.MassiveException; import com.massivecraft.massivecore.event.EventMassiveCorePermissionDeniedFormat; import com.massivecraft.massivecore.mixin.MixinMessage; import com.massivecraft.massivecore.nms.NmsPermissions; @@ -401,6 +402,21 @@ public class PermissionUtil { return hasPermission(permissible, permission, false); } + + public static void hasPermissionOrThrow(Permissible permissible, Object permission) throws MassiveException + { + // Fail Fast + if (permissible == null) throw new NullPointerException("permissible"); + if (permission == null) throw new NullPointerException("permission"); + + String permissionId = asPermissionId(permission); + if (permissionId == null) throw new NullPointerException("permissionId"); + + if (!permissible.hasPermission(permissionId)) + { + throw new MassiveException().addMessage(getPermissionDeniedMessage(permission)); + } + } // -------------------------------------------- // // PERMISSIBLE > BASE