Java源码示例:org.spongepowered.api.service.context.Context

示例1
@Override
public boolean matches(Context context, Subject subject) {
    if (context.getKey().equals("gd_claim")) {
        if (subject.getCommandSource().isPresent() && subject.getCommandSource().get() instanceof Player) {
            Player player = (Player) subject.getCommandSource().get();
            GDPlayerData playerData = GriefDefenderPlugin.getInstance().dataStore.getPlayerData(player.getWorld(), player.getUniqueId());
            if (playerData == null) {
                return false;
            }

            GDClaim playerClaim = GriefDefenderPlugin.getInstance().dataStore.getClaimAtPlayer(playerData, player.getLocation());
            if (playerClaim != null && playerClaim.getUniqueId().equals(UUID.fromString(context.getValue()))) {
                return true;
            }
        }
    }

    return false;
}
 
示例2
@Override
public boolean matches(Context context, Subject subject)
{
    if (CONTEXT_KEY.equals(context.getKey()))
    {
        try
        {
            UUID value = UUID.fromString(context.getValue());
            VirtualChestActions actions = this.plugin.getVirtualChestActions();
            return actions.getActivatedActions(subject.getIdentifier()).contains(value);
        }
        catch (IllegalArgumentException e)
        {
            return false;
        }
    }
    return false;
}
 
示例3
@Override
public void accumulateContexts(Subject calculable, Set<Context> accumulator) {
    if (calculable.getCommandSource().isPresent() && calculable.getCommandSource().get() instanceof Player) {
        Player player = (Player) calculable.getCommandSource().get();
        GDPlayerData playerData = GriefDefenderPlugin.getInstance().dataStore.getPlayerData(player.getWorld(), player.getUniqueId());
        if (playerData == null) {
            return;
        }
        if (playerData.ignoreActiveContexts) {
            playerData.ignoreActiveContexts = false;
            return;
        }

        GDClaim sourceClaim = GriefDefenderPlugin.getInstance().dataStore.getClaimAtPlayer(playerData, player.getLocation());
        if (sourceClaim != null) {
            if (playerData == null || playerData.canIgnoreClaim(sourceClaim)) {
                return;
            }

            if (sourceClaim.parent != null && sourceClaim.getData().doesInheritParent()) {
                accumulator.add(sourceClaim.parent.getSpongeContext());
            } else {
                accumulator.add(sourceClaim.getSpongeContext());
            }
            accumulator.add(new Context("server", GriefDefenderPlugin.getInstance().getPermissionProvider().getServerName()));
        }
    }

}
 
示例4
private Set<com.griefdefender.api.permission.Context> getGDContexts(Set<Context> spongeContexts) {
    Set<com.griefdefender.api.permission.Context> gdContexts = new HashSet<>();
    for (Context context : spongeContexts) {
        gdContexts.add(new com.griefdefender.api.permission.Context(context.getKey(), context.getValue()));
    }
    return gdContexts;
}
 
示例5
@SuppressWarnings("rawtypes")
@Override
public @NonNull List<Subject> getParents(@NonNull Set<Context> contexts) {
    return (List) handle().thenApply(handle -> handle.getParents(CompatibilityUtil.convertContexts(contexts)).stream()
            .map(s -> new SubjectProxy(this.service, s))
            .collect(ImmutableCollectors.toList())).join();
}
 
示例6
public static Set<Context> getSpongeContexts(Set<com.griefdefender.api.permission.Context> contexts) {
    final Set<Context> spongeContexts = new HashSet<>();
    for (com.griefdefender.api.permission.Context gpContext : contexts) {
        spongeContexts.add(new Context(gpContext.getKey(), gpContext.getValue()));
    }

    return spongeContexts;
}
 
示例7
public static Set<Context> getSpongeContexts(ContextSet contexts) {
    final Set<Context> spongeContexts = new HashSet<>();
    for (net.luckperms.api.context.Context mapEntry : contexts) {
        spongeContexts.add(new Context(mapEntry.getKey(), mapEntry.getValue()));
    }

    return spongeContexts;
}
 
示例8
public static Set<com.griefdefender.api.permission.Context> fromSpongeContexts(Set<Context> contexts) {
    final Set<com.griefdefender.api.permission.Context> gpContexts = new HashSet<>();
    for (Context spongeContext : contexts) {
        gpContexts.add(new com.griefdefender.api.permission.Context(spongeContext.getKey(), spongeContext.getValue()));
    }
    return gpContexts;
}
 
示例9
public CompletableFuture<?> setIgnored(Player player, UUID actionUUID, Collection<String> permissions)
{
    SubjectData data = player.getTransientSubjectData();
    Set<Context> contexts = Collections.singleton(new Context(CONTEXT_KEY, actionUUID.toString()));

    return this.clear(data, contexts)
            .thenCompose(succeed -> CompletableFuture.allOf(this.set(data, contexts, permissions)))
            .thenRun(() -> this.logIgnoredPermissionsAdded(permissions, actionUUID, player.getName()));
}
 
示例10
public CompletableFuture<?> clearIgnored(Player player, UUID actionUUID)
{
    SubjectData data = player.getTransientSubjectData();
    Set<Context> contexts = Collections.singleton(new Context(CONTEXT_KEY, actionUUID.toString()));

    return this.clear(data, contexts)
            .thenRun(() -> this.logIgnoredPermissionsCleared(actionUUID, player.getName()));
}
 
示例11
@Override
public boolean isChildOf(@NonNull Set<Context> contexts, @NonNull Subject parent) {
    return handle().thenApply(handle -> handle.isChildOf(
            CompatibilityUtil.convertContexts(contexts),
            this.service.getReferenceFactory().obtain(parent)
    )).join();
}
 
示例12
@Override
public void accumulateContexts(Subject subject, Set<Context> accumulator)
{
    this.plugin.getVirtualChestActions().getActivatedActions(subject.getIdentifier()).forEach(actionUUID ->
    {
        SubjectData data = subject.getTransientSubjectData();
        Context context = new Context(CONTEXT_KEY, actionUUID.toString());
        Map<String, Boolean> permissions = data.getPermissions(Collections.singleton(context));
        this.logger.debug("Ignored {} permission(s) for action {} (context):", permissions.size(), actionUUID);
        permissions.forEach((permission, state) -> this.logger.debug("- {} ({})", permission, state));
        accumulator.add(context);
    });
}
 
示例13
@SuppressWarnings("rawtypes")
@Override
public @NonNull Map<Subject, Boolean> getAllWithPermission(@NonNull Set<Context> set, @NonNull String s) {
    return (Map) this.handle.getAllWithPermission(CompatibilityUtil.convertContexts(set), s)
            .thenApply(map -> map.entrySet().stream()
                    .collect(ImmutableCollectors.toMap(
                            e -> new SubjectProxy(this.service, e.getKey()),
                            Map.Entry::getValue
                    ))
            ).join();
}
 
示例14
@Override
public void removeParent(Player player, Subject subject, Set<Context> contexts, SubjectReference parent) {
    command(player, subjContext(subject, contexts)
            .append("parent remove ").append(parent.getCollectionIdentifier()).append(' ')
            .append(parent.getSubjectIdentifier())
            .toString());
}
 
示例15
@Override
public CompletableFuture<Boolean> setOption(Player player, Subject subject, Set<Context> contexts, String key, String value) {
    CommandResult res = command(player, subjContext(subject, contexts)
            .append("options ").append(key).append(' ')
            .append(value == null ? "" : value).toString());
    return CompletableFuture.completedFuture(res.getSuccessCount().isPresent() && res.getSuccessCount().get() > 0);
}
 
示例16
private static StringBuilder subjContext(Subject subject, Set<Context> contexts) {
    StringBuilder b = new StringBuilder("pex ");
    for (Context context : contexts) {
        b.append("--contexts ").append(context.getKey()).append('=').append(context.getValue()).append(' ');
    }
    return b.append(subject.getContainingCollection().getIdentifier())
            .append(' ')
            .append(subject.getIdentifier())
            .append(' ');
}
 
示例17
@Override
public CompletableFuture<Boolean> setPermission(Player player, Subject subject, Set<Context> contexts, String permission, Tristate value) {
    Boolean perm = subject.getSubjectData().getPermissions(contexts).get(permission);
    if ((perm == null && value == Tristate.UNDEFINED)
            || (perm == Boolean.TRUE && value == Tristate.TRUE)
            || (perm == Boolean.FALSE && value == Tristate.FALSE)) {
        return CompletableFuture.completedFuture(true);
    }
    return subject.getSubjectData().setPermission(contexts, permission, value);
}
 
示例18
private UIComponent createTopBar() {
    return new UIComponent() {

        @Override
        public void draw(PlayerContext ctx, LineFactory lineFactory) {
            lineFactory.appendNewLine(Text.of(TextStyles.BOLD, TextColors.RED, SubjectViewer.this.activeSubj.getIdentifier()), ctx);
            Text.Builder builder = Text.builder("Parents: ");
            if (SubjectViewer.this.activeSubj.getParents(SubjectViewer.this.activeContext).isEmpty()) {
                builder.append(Text.of("None"));
            }
            for (SubjectReference parent : SubjectViewer.this.activeSubj.getParents(SubjectViewer.this.activeContext)) {
                builder.append(hyperlink(parent.getSubjectIdentifier(), () -> setActive(parent.resolve().join(), false)));
                builder.append(Text.builder("[x]").color(TextColors.RED)
                        .onClick(ExtraUtils.clickAction((Consumer<PlayerChatView>) view -> removeParent(view.getPlayer(), parent),
                                SubjectViewer.this.tab))
                        .build());
                builder.append(Text.of(", "));
            }
            lineFactory.appendNewLine(builder.build(), ctx);
            builder = Text.builder("Current Context: ");
            if (SubjectViewer.this.activeContext.isEmpty()) {
                builder.append(Text.of("global"));
            }
            for (Context context : SubjectViewer.this.activeContext) {
                builder.append(Text.of(context.getKey() + "[" + context.getValue() + "], "));
            }
            lineFactory.appendNewLine(builder.build(), ctx);
        }
    };
}
 
示例19
@SuppressWarnings("rawtypes")
@Override
public @NonNull Map<Set<Context>, Map<String, Boolean>> getAllPermissions() {
    return (Map) handle().thenApply(handle -> handle.getAllPermissions().entrySet().stream()
            .collect(ImmutableCollectors.toMap(
                    e -> CompatibilityUtil.convertContexts(e.getKey()),
                    Map.Entry::getValue
            ))).join();
}
 
示例20
@SuppressWarnings("rawtypes")
@Override
public @NonNull Map<Set<Context>, List<org.spongepowered.api.service.permission.SubjectReference>> getAllParents() {
    return (Map) handle().thenApply(handle -> handle.getAllParents().entrySet().stream()
            .collect(ImmutableCollectors.toMap(
                    e -> CompatibilityUtil.convertContexts(e.getKey()),
                    Map.Entry::getValue
            ))).join();
}
 
示例21
@SuppressWarnings("rawtypes")
@Override
public @NonNull Map<Set<Context>, Map<String, String>> getAllOptions() {
    return (Map) handle().thenApply(handle -> handle.getAllOptions().entrySet().stream()
            .collect(ImmutableCollectors.toMap(
                    e -> CompatibilityUtil.convertContexts(e.getKey()),
                    Map.Entry::getValue
            ))).join();
}
 
示例22
@Override
public @NonNull CompletableFuture<Boolean> setOption(@NonNull Set<Context> contexts, @NonNull String key, @Nullable String value) {
    if (value == null) {
        return handle().thenCompose(handle -> handle.unsetOption(CompatibilityUtil.convertContexts(contexts), key));
    } else {
        return handle().thenCompose(handle -> handle.setOption(CompatibilityUtil.convertContexts(contexts), key, value));
    }
}
 
示例23
@Override
public @NonNull Map<Subject, Boolean> getLoadedWithPermission(@NonNull Set<Context> set, @NonNull String s) {
    return this.handle.getLoadedWithPermission(CompatibilityUtil.convertContexts(set), s).entrySet().stream()
            .collect(ImmutableCollectors.toMap(
                    sub -> sub.getKey().sponge(),
                    Map.Entry::getValue
            ));
}
 
示例24
@Override
public boolean contains(Object o) {
    if (o instanceof Context) {
        Context context = (Context) o;
        return !context.getKey().isEmpty() && !context.getValue().isEmpty() && delegate().contains(context.getKey(), context.getValue());
    }
    return false;
}
 
示例25
@Override
public boolean add(Context context) {
    if (!net.luckperms.api.context.Context.isValidKey(context.getKey()) ||
            !net.luckperms.api.context.Context.isValidValue(context.getValue())) {
        return false;
    }
    this.consumer.accept(context.getKey(), context.getValue());
    return true;
}
 
示例26
@Override
public boolean addAll(@NonNull Collection<? extends Context> c) {
    for (Context context : c) {
        add(context);
    }
    return true;
}
 
示例27
@SuppressWarnings("rawtypes")
@Override
public @NonNull Map<Set<Context>, Map<String, Boolean>> getAllPermissions() {
    return (Map) handle().thenApply(handle -> handle.getAllPermissions().entrySet().stream()
            .collect(ImmutableCollectors.toMap(
                    e -> CompatibilityUtil.convertContexts(e.getKey()),
                    Map.Entry::getValue
            ))).join();
}
 
示例28
@Override
public boolean setPermission(@NonNull Set<Context> contexts, @NonNull String permission, @NonNull Tristate value) {
    handle().thenCompose(handle -> handle.setPermission(
            CompatibilityUtil.convertContexts(contexts),
            permission,
            CompatibilityUtil.convertTristate(value)
    ));
    return true;
}
 
示例29
@SuppressWarnings("rawtypes")
@Override
public @NonNull List<Subject> getParents(@NonNull Set<Context> contexts) {
    return (List) handle().thenApply(handle -> handle.getParents(CompatibilityUtil.convertContexts(contexts)).stream()
            .map(s -> new SubjectProxy(this.service, s))
            .collect(ImmutableCollectors.toList())).join();
}
 
示例30
@Override
public boolean addParent(@NonNull Set<Context> contexts, @NonNull Subject parent) {
    handle().thenCompose(handle -> handle.addParent(
            CompatibilityUtil.convertContexts(contexts),
            this.service.getReferenceFactory().obtain(parent)
    ));
    return true;
}