public ICType(String modelId, String shorthandId, String name, String description, ICFactory<T> icFactory) { this.modelId = modelId; this.shorthandId = shorthandId; this.name = name; this.description = description; this.icFactory = icFactory; this.permissionNode = new SpongePermissionNode( "craftbook.ic." + (this.icFactory instanceof RestrictedIC ? "restricted" : "safe") + '.' + this.modelId.toLowerCase(), "Allows creation of the " + this.name + " (" + this.modelId + ") IC.", this.icFactory instanceof RestrictedIC ? PermissionDescription.ROLE_STAFF : PermissionDescription.ROLE_USER ); }
@Override public void register() { ProviderRegistration<PermissionService> provider = Sponge.getServiceManager().getRegistration(PermissionService.class).orElse(null); if(provider == null) { CraftBookPlugin.spongeInst().getLogger().warn("Missing Permissions Provider. Permissions will not work as expected!"); return; } PermissionDescription.Builder permissionBuilder = provider.getProvider().newDescriptionBuilder(CraftBookPlugin.inst()); permissionDescription = permissionBuilder.id(getNode()).description(Text.of(getDescription())).assign(getDefaultRole(), true).register(); }
@Override public boolean verifyLines(Location<World> location, List<Text> lines, @Nullable Player player) { String line0 = SignUtil.getTextRaw(lines.get(0)); if (!line0.isEmpty()) { Optional<ModuleWrapper> moduleWrapper = CraftBookPlugin.spongeInst().moduleController.getModule("blockbag"); if (moduleWrapper.isPresent() && moduleWrapper.get().isEnabled()) { if ("ADMIN".equals(line0)) { if ((player == null || ((BlockBagManager) moduleWrapper.get().getModule().get()).adminPermissions.hasPermission(player))) { location.offer(new BlockBagData(-1)); } else { lines.set(0, Text.of()); } } } } return super.verifyLines(location, lines, player); }
@Override public void onInitialize() throws CraftBookException { super.onInitialize(); signCopierItem.load(config); usePermissions.register(); signs = new HashMap<>(); CommandSpec signEditCommand = CommandSpec.builder() .permission(editPermissions.getNode()) .arguments(GenericArguments.integer(Text.of("line")), GenericArguments.remainingJoinedStrings(Text.of("text"))) .executor(new EditSignCommand(this)) .description(Text.of("Allows editing the currently copied sign!")) .build(); signCommandManager = Sponge.getCommandManager().register(CraftBookPlugin.spongeInst().getContainer(), CommandSpec.builder() .child(signEditCommand, "edit") .description(Text.of("Base command of the SignCopier mechanic")) .build(), "sign", "signcopier").orElse(null); }
public boolean hasPermission(Subject subject) { return subject.hasPermission(getNode()); } }
setPermission.register(); setGlobalPermission.register(); getPermission.register(); getGlobalPermission.register(); delPermission.register(); delGlobalPermission.register(); listPermission.register(); listGlobalPermission.register(); .permission(setPermission.getNode()) .arguments( GenericArguments.string(Text.of("key")), GenericArguments.string(Text.of("value")), GenericArguments.flags() .permissionFlag(setGlobalPermission.getNode(), "g", "-global") .valueFlag(GenericArguments.string(Text.of("namespace")), "n", "-namespace") .buildWith(GenericArguments.none())) .permission(getPermission.getNode()) .arguments( GenericArguments.string(Text.of("key")), GenericArguments.flags() .permissionFlag(getGlobalPermission.getNode(), "g", "-global") .valueFlag(GenericArguments.string(Text.of("namespace")), "n", "-namespace") .buildWith(GenericArguments.none()))
@Listener public void onInteract(InteractBlockEvent.Secondary.MainHand event, @First Player player) { event.getTargetBlock().getLocation().ifPresent((location) -> { if (SignUtil.isSign(location)) { Sign sign = (Sign) location.getTileEntity().get(); if (isMechanicSign(sign)) { if (!player.hasPermission(usePermission.getNode())) { player.sendMessage(USE_PERMISSIONS); return; } String variable = SignUtil.getTextRaw(sign, 2); String line3 = SignUtil.getTextRaw(sign, 3); String var = Variables.instance.getVariable(line3.isEmpty() ? Variables.GLOBAL_NAMESPACE : line3, variable); if(var == null || var.isEmpty()) var = "variable.missing"; player.sendMessage(Text.of(var)); event.setCancelled(true); } } }); }
private void doAction(Entity entity, String positionString, Vector3d rotation) { if (entity instanceof Player) { if (!usePermissions.hasPermission((Subject) entity)) { return;
@Override public void onInitialize() throws CraftBookException { super.onInitialize(); usePermissions.register(); }
@Override public void onInitialize() throws CraftBookException { super.onInitialize(); allowedBlocks.load(config); allowedItems.load(config); disabledPlayers.load(config); togglePermission.register(); CommandSpec toggleCommand = CommandSpec.builder() .description(Text.of("Toggles TreeLopper being enabled.")) .permission(togglePermission.getNode()) .arguments(GenericArguments.optional(GenericArguments.bool(Text.of("state")))) .executor(new ToggleCommand(this)) .build(); CommandSpec treeLopperCommand = CommandSpec.builder() .description(Text.of("Base TreeLopper command")) .child(toggleCommand, "toggle") .build(); treelopperCommandMapping = Sponge.getCommandManager().register(CraftBookPlugin.inst(), treeLopperCommand, "treelopper", "timber").orElse(null); }
Sign sign = (Sign) location.getTileEntity().get(); if (isMechanicSign(sign)) { if (!player.hasPermission(usePermission.getNode())) { player.sendMessage(USE_PERMISSIONS); return;
private void triggerMechanic(Location<World> location, @Nullable Player player) { if (player != null && !usePermission.hasPermission(player)) { player.sendMessage(USE_PERMISSIONS); return; } Sign sign = location.getTileEntity().map(tile -> (Sign) tile).get(); if (SignUtil.getTextRaw(sign, 0).equalsIgnoreCase("EXPANSION")) { return; } StringBuilder command = new StringBuilder(); do { if(command.length() > 0 && !SignUtil.getTextRaw(sign, 0).equals("EXPANSION")) break; sign = location.getTileEntity().map(tile -> (Sign) tile).get(); command.append(SignUtil.getTextRaw(sign, 2)).append(SignUtil.getTextRaw(sign, 3)); location = location.getRelative(Direction.DOWN); } while(isValid(location)); String commandString = command.toString(); if (player == null) { if (commandString.contains("@p")) { return; } } else { commandString = commandString.replace("@p", player.getName()); } if (commandString.startsWith("/")) { commandString = commandString.substring(1); } Sponge.getCommandManager().process(Sponge.getServer().getConsole(), commandString); }
.permission(commandSavePermissions.getNode()) .executor(new SaveCommand(this)) .arguments(GenericArguments.onlyOne(GenericArguments.string(Text.of("id"))), GenericArguments.optional(GenericArguments.onlyOne(GenericArguments.string(Text.of("namespace"))))) .permission(commandDeletePermissions.getNode()) .executor(new DeleteCommand(this)) .arguments(GenericArguments.onlyOne(GenericArguments.string(Text.of("id"))), GenericArguments.optional(GenericArguments.onlyOne(GenericArguments.string(Text.of("namespace"))))) .permission(commandListPermissions.getNode()) .executor(new ListCommand(this)) .arguments(GenericArguments.optional(GenericArguments.onlyOne(GenericArguments.string(Text.of("namespace")))))
@Override public boolean verifyLines(Location<World> location, List<Text> lines, @Nullable Player player) { String line2 = SignUtil.getTextRaw(lines.get(2)).trim(); if (!line2.isEmpty()) { // Ranged Mode. if (allowAutomaticMode.getValue() && (player == null || rangedPermissions.hasPermission(player))) { try { int range = Integer.parseInt(line2); range = Math.max(0, Math.min(range, maximumRange.getValue())); lines.set(2, Text.of(String.valueOf(range))); } catch (NumberFormatException e) { lines.set(2, Text.of(Math.min(10, maximumRange.getValue()))); } ((SpongeSelfTriggerManager) CraftBookPlugin.inst().getSelfTriggerManager().get()).register(this, location); } else { lines.set(2, Text.EMPTY); if (player != null) { if (!rangedPermissions.hasPermission(player)) { player.sendMessage(Text.of(TextColors.RED, "You don't have permission to create ranged XPStorers.")); } else { player.sendMessage(Text.of(TextColors.RED, "Automatic mode for XPStorers is not allowed.")); } } } } return super.verifyLines(location, lines, player); }
@Override public CommandResult execute(CommandSource src, CommandContext args) throws CommandException { String id = args.<String>getOne("id").get(); String namespace = args.<String>getOne("namespace").orElse(((Player) src).getUniqueId().toString()); boolean personal = namespace.equals(((Player) src).getUniqueId().toString()); if (!personal && !area.commandDeleteOtherPermissions.hasPermission(src)) { src.sendMessage(Text.of("You do not have permission to use this namespace!")); return CommandResult.empty(); } id = id.toLowerCase(Locale.ENGLISH); File folder = new File(new File(CraftBookPlugin.inst().getWorkingDirectory(), "areas"), namespace); File file = new File(folder, id + CopyManager.getFileSuffix()); if (!folder.exists() || !file.exists()) { src.sendMessage(Text.of(TextColors.RED, "This area does not exist!")); return CommandResult.empty(); } file.delete(); src.sendMessage(Text.of(TextColors.YELLOW, "Area deleted!")); return CommandResult.success(); } }
@Override public void onInitialize() throws CraftBookException { super.onInitialize(); adminPermissions.register(); }