Compare commits
	
		
			2 Commits
		
	
	
		
			c4ab62c857
			...
			721175f965
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 721175f965 | |||
| c5e59537a0 | 
| @@ -92,19 +92,14 @@ public class ItemStackBuilder { | ||||
| 	} | ||||
|  | ||||
| 	public ItemStackBuilder meta(Consumer<ItemMeta> metaUpdater) { | ||||
| 		metaUpdater.accept(getOrInitMeta()); | ||||
| 		updateMeta(); | ||||
| 		return this; | ||||
| 		return meta(metaUpdater, ItemMeta.class); | ||||
| 	} | ||||
|  | ||||
| 	public <T extends ItemMeta> ItemStackBuilder meta(Consumer<T> metaUpdater, Class<T> metaType) { | ||||
| 		ItemMeta m = getOrInitMeta(); | ||||
| 		if (!metaType.isInstance(m)) { | ||||
| 			Log.warning("Item meta of " + stack.getType() + " is not of type " + metaType.getSimpleName(), new Throwable()); | ||||
| 			return this; | ||||
| 		} | ||||
| 		metaUpdater.accept(metaType.cast(m)); | ||||
| 		updateMeta(); | ||||
| 		stack.editMeta(metaType, m -> { | ||||
| 			metaUpdater.accept(m); | ||||
| 			cachedMeta = m; | ||||
| 		}); | ||||
| 		return this; | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -1,12 +1,15 @@ | ||||
| package fr.pandacube.lib.permissions; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| import fr.pandacube.lib.db.DBException; | ||||
| import fr.pandacube.lib.permissions.PermissionsCachedBackendReader.CachedGroup; | ||||
| import fr.pandacube.lib.permissions.SQLPermissions.EntityType; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| import java.util.Set; | ||||
| import java.util.UUID; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| /** | ||||
|  * Represents an group in the permission system. | ||||
|  */ | ||||
| @@ -47,6 +50,23 @@ public final class PermGroup extends PermEntity { | ||||
| 				.toList()); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Gets all the players that inherits from this group. | ||||
| 	 * This method does not use cached data. | ||||
| 	 * @param recursive true to include players that are in inherited groups. | ||||
| 	 * @return the players that inherits from this group. | ||||
| 	 * @throws DBException if a database error occurs. | ||||
| 	 */ | ||||
| 	public Set<UUID> getInheritedPlayers(boolean recursive) throws DBException { | ||||
| 		Set<UUID> players = new HashSet<>(getBackendEntity().getPlayersInGroup()); | ||||
| 		if (recursive) { | ||||
| 			for (PermGroup inheritedGroups : getInheritedGroups()) { | ||||
| 				players.addAll(inheritedGroups.getInheritedPlayers(true)); | ||||
| 			} | ||||
| 		} | ||||
| 		return players; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Tells if this group is a default group. | ||||
| 	 * A player inherits all default groups when they don’t explicitely inherit from at least one group. | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| package fr.pandacube.lib.permissions; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashSet; | ||||
| import java.util.LinkedHashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| @@ -119,6 +120,13 @@ import fr.pandacube.lib.util.Log; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| 	private final Map<String, CachedGroup> groupsCache = new LinkedHashMap<>(); | ||||
| 	private boolean cacheIsUpdating = false; | ||||
| 	 | ||||
| @@ -299,6 +307,19 @@ import fr.pandacube.lib.util.Log; | ||||
| 			super(n, p, s, perms); | ||||
| 			deflt = dflt; | ||||
| 		} | ||||
|  | ||||
|  | ||||
|  | ||||
| 		/* package */ Set<UUID> getPlayersInGroup() throws DBException { | ||||
| 			Set<UUID> ids = new HashSet<>(); | ||||
| 			DB.forEach(SQLPermissions.class, | ||||
| 					SQLPermissions.type.eq(EntityType.User.getCode()) | ||||
| 							.and(SQLPermissions.key.eq("groups")) | ||||
| 							.and(SQLPermissions.value.eq(name)), | ||||
| 					e -> ids.add(UUID.fromString(e.get(SQLPermissions.name))) | ||||
| 			); | ||||
| 			return ids; | ||||
| 		} | ||||
| 	} | ||||
|      | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user