pass and account for the holder type when building PermissionCalculators
This commit is contained in:
@@ -39,6 +39,7 @@ import me.lucko.luckperms.api.caching.MetaContexts;
|
||||
import me.lucko.luckperms.common.caching.type.MetaAccumulator;
|
||||
import me.lucko.luckperms.common.caching.type.MetaCache;
|
||||
import me.lucko.luckperms.common.caching.type.PermissionCache;
|
||||
import me.lucko.luckperms.common.calculators.PermissionCalculatorMetadata;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.metastacking.SimpleMetaStack;
|
||||
import me.lucko.luckperms.common.model.PermissionHolder;
|
||||
@@ -85,7 +86,8 @@ public abstract class HolderCachedData<T extends PermissionHolder> implements Ca
|
||||
*/
|
||||
private PermissionCache calculatePermissions(@NonNull Contexts contexts, PermissionCache data) {
|
||||
if (data == null) {
|
||||
data = new PermissionCache(contexts, getHolderName(), holder.getPlugin().getCalculatorFactory());
|
||||
PermissionCalculatorMetadata metadata = PermissionCalculatorMetadata.of(holder.getType(), getHolderName(), contexts.getContexts());
|
||||
data = new PermissionCache(contexts, metadata, holder.getPlugin().getCalculatorFactory());
|
||||
}
|
||||
|
||||
if (contexts == Contexts.allowAll()) {
|
||||
|
||||
@@ -61,12 +61,10 @@ public class PermissionCache implements PermissionData {
|
||||
*/
|
||||
private final PermissionCalculator calculator;
|
||||
|
||||
public PermissionCache(Contexts contexts, String friendlyName, CalculatorFactory calculatorFactory) {
|
||||
public PermissionCache(Contexts contexts, PermissionCalculatorMetadata metadata, CalculatorFactory calculatorFactory) {
|
||||
permissions = new ConcurrentHashMap<>();
|
||||
permissionsUnmodifiable = Collections.unmodifiableMap(permissions);
|
||||
|
||||
PermissionCalculatorMetadata metadata = PermissionCalculatorMetadata.of(friendlyName, contexts.getContexts());
|
||||
|
||||
calculator = calculatorFactory.build(contexts, metadata);
|
||||
calculator.updateBacking(permissions); // Initial setup.
|
||||
}
|
||||
|
||||
+6
@@ -29,11 +29,17 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.common.references.HolderType;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor(staticName = "of")
|
||||
public class PermissionCalculatorMetadata {
|
||||
|
||||
/**
|
||||
* The type of the object which owns the permission calculator
|
||||
*/
|
||||
private final HolderType holderType;
|
||||
|
||||
/**
|
||||
* The name of the object which owns the permission calculator
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user