Compare commits
	
		
			2 Commits
		
	
	
		
			c4ab62c857
			...
			721175f965
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 721175f965 | |||
| c5e59537a0 | 
| @@ -92,19 +92,14 @@ public class ItemStackBuilder { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	public ItemStackBuilder meta(Consumer<ItemMeta> metaUpdater) { | 	public ItemStackBuilder meta(Consumer<ItemMeta> metaUpdater) { | ||||||
| 		metaUpdater.accept(getOrInitMeta()); | 		return meta(metaUpdater, ItemMeta.class); | ||||||
| 		updateMeta(); |  | ||||||
| 		return this; |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	public <T extends ItemMeta> ItemStackBuilder meta(Consumer<T> metaUpdater, Class<T> metaType) { | 	public <T extends ItemMeta> ItemStackBuilder meta(Consumer<T> metaUpdater, Class<T> metaType) { | ||||||
| 		ItemMeta m = getOrInitMeta(); | 		stack.editMeta(metaType, m -> { | ||||||
| 		if (!metaType.isInstance(m)) { | 			metaUpdater.accept(m); | ||||||
| 			Log.warning("Item meta of " + stack.getType() + " is not of type " + metaType.getSimpleName(), new Throwable()); | 			cachedMeta = m; | ||||||
| 			return this; | 		}); | ||||||
| 		} |  | ||||||
| 		metaUpdater.accept(metaType.cast(m)); |  | ||||||
| 		updateMeta(); |  | ||||||
| 		return this; | 		return this; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|   | |||||||
| @@ -1,12 +1,15 @@ | |||||||
| package fr.pandacube.lib.permissions; | package fr.pandacube.lib.permissions; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import fr.pandacube.lib.db.DBException; | ||||||
| import java.util.List; |  | ||||||
| import java.util.stream.Collectors; |  | ||||||
|  |  | ||||||
| import fr.pandacube.lib.permissions.PermissionsCachedBackendReader.CachedGroup; | import fr.pandacube.lib.permissions.PermissionsCachedBackendReader.CachedGroup; | ||||||
| import fr.pandacube.lib.permissions.SQLPermissions.EntityType; | 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. |  * Represents an group in the permission system. | ||||||
|  */ |  */ | ||||||
| @@ -47,6 +50,23 @@ public final class PermGroup extends PermEntity { | |||||||
| 				.toList()); | 				.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. | 	 * 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. | 	 * 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; | package fr.pandacube.lib.permissions; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | import java.util.HashSet; | ||||||
| import java.util.LinkedHashMap; | import java.util.LinkedHashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @@ -115,6 +116,13 @@ import fr.pandacube.lib.util.Log; | |||||||
| 		 | 		 | ||||||
| 		return player; | 		return player; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| @@ -299,6 +307,19 @@ import fr.pandacube.lib.util.Log; | |||||||
| 			super(n, p, s, perms); | 			super(n, p, s, perms); | ||||||
| 			deflt = dflt; | 			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