package pex.permissions; import java.util.Map; public interface IPermissionEntity { /** * This method 100% run after all constructors have been run and entity * object, and entity object are completely ready to operate */ void initialize(); /** * Return name of permission entity (User or Group) User should be equal to * Player's name on the server * * @return name */ String getName(); /** * Returns entity prefix * * @param worldName * @return prefix */ String getPrefix(String worldName); String getPrefix(); /** * Returns entity prefix * */ /** * Set prefix to value * * @param prefix * new prefix */ void setPrefix(String prefix, String worldName); /** * Return entity suffix * * @return suffix */ String getSuffix(String worldName); String getSuffix(); /** * Set suffix to value * * @param suffix * new suffix */ void setSuffix(String suffix, String worldName); /** * Checks if entity has specified permission in default world * * @param permission * Permission to check * @return true if entity has this permission otherwise false */ boolean has(String permission); /** * Check if entity has specified permission in world * * @param permission * Permission to check * @param dimension * World to check permission in * @return true if entity has this permission otherwise false */ boolean has(String permission, String dimension); /** * Return all entity permissions in specified world * * @param world * World name * @return Array of permission expressions */ String[] getPermissions(String world); /** * Return permissions for all worlds Common permissions stored as "" (empty * string) as world. * * @return Map with world name as key and permissions array as value */ Map<String, String[]> getAllPermissions(); /** * Add permissions for specified world * * @param permission * Permission to add * @param world * World name to add permission to */ void addPermission(String permission, String world); /** * Add permission in common space (all worlds) * * @param permission * Permission to add */ void addPermission(String permission); /** * Remove permission in world * * @param permission * Permission to remove * @param world * World name to remove permission for */ void removePermission(String permission, String worldName); /** * Remove specified permission from all worlds * * @param permission * Permission to remove */ void removePermission(String permission); /** * Set permissions in world * * @param permissions * Array of permissions to set * @param world * World to set permissions for */ void setPermissions(String[] permissions, String world); /** * Set specified permissions in common space (all world) * * @param permission * Permission to set */ void setPermissions(String[] permission); /** * Get option in world * * @param option * Name of option * @param world * World to look for * @param defaultValue * Default value to fallback if no such option was found * @return Value of option as String */ String getOption(String option, String world, String defaultValue); /** * Return option Option would be looked up in common options * * @param option * Option name * @return option value or empty string if option was not found */ String getOption(String option); /** * Return option for world * * @param option * Option name * @param world * World to look in * @return option value or empty string if option was not found */ String getOption(String option, String world); /** * Return integer value for option * * @param optionName * @param world * @param defaultValue * @return option value or defaultValue if option was not found or is not * integer */ int getOptionInteger(String optionName, String world, int defaultValue); /** * Returns double value for option * * @param optionName * @param world * @param defaultValue * @return option value or defaultValue if option was not found or is not * double */ double getOptionDouble(String optionName, String world, double defaultValue); /** * Returns boolean value for option * * @param optionName * @param world * @param defaultValue * @return option value or defaultValue if option was not found or is not * boolean */ boolean getOptionBoolean(String optionName, String world, boolean defaultValue); /** * Set specified option in world * * @param option * Option name * @param value * Value to set, null to remove * @param world * World name */ void setOption(String option, String value, String world); /** * Set option for all worlds. Can be overwritten by world specific option * * @param option * Option name * @param value * Value to set, null to remove */ void setOption(String permission, String value); /** * Get options in world * * @param world * @return Option value as string Map */ Map<String, String> getOptions(String world); /** * Return options for all worlds Common options stored as "" (empty string) * as world. * * @return Map with world name as key and map of options as value */ Map<String, Map<String, String>> getAllOptions(); /** * Save in-memory data to storage backend */ void save(); /** * Remove entity data from backend */ void remove(); /** * Return state of entity * * @return true if entity is only in-memory */ boolean isVirtual(); /** * Return world names where entity have permissions/options/etc * * @return */ String[] getWorlds(); /** * Return entity timed (temporary) permission for world * * @param world * @return Array of timed permissions in that world */ String[] getTimedPermissions(String world); /** * Returns remaining lifetime of specified permission in world * * @param permission * Name of permission * @param world * @return remaining lifetime in seconds of timed permission. 0 if * permission is transient */ int getTimedPermissionLifetime(String permission, String world); /** * Adds timed permission to specified world in seconds * * @param permission * @param world * @param lifeTime * Lifetime of permission in seconds. 0 for transient permission * (world disappear only after server reload) */ void addTimedPermission(String permission, String world, int lifeTime); /** * Removes specified timed permission for world * * @param permission * @param world */ void removeTimedPermission(String permission, String world); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); String getMatchingExpression(String permission, String world); String getMatchingExpression(String[] permissions, String permission); /** * Checks if specified permission matches specified permission expression * * @param expression * permission expression - what user have in his permissions list * (permission.nodes.*) * @param permission * permission which are checking for * (permission.node.some.subnode) * @param additionalChecks * check for parent node matching * @return */ boolean isMatches(String expression, String permission, boolean additionalChecks); boolean explainExpression(String expression); boolean isDebug(); void setDebug(boolean debug); }