private Package doSearch(int id, Category category) { for (Package aPackage : category.getPackages()) { if (aPackage.getId() == id) return aPackage; } for (Category sub : category.getSubcategories()) { Package p = doSearch(id, sub); if (p != null) return p; } return null; } }
public void doSignSetup(Player player, Package p) { SerializedBlockLocation sbl = settingUpSigns.remove(player.getUniqueId()); if (sbl == null) return; Block b = BukkitSerializedBlockLocation.toBukkit(sbl).getBlock(); if (!(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST)) return; plugin.getBuyNowSignStorage().addSign(new SavedBuyNowSign(sbl, p.getId())); plugin.getServer().getScheduler().runTask(plugin, new BuyNowSignUpdater(plugin)); } }
private void sendPaginatedMessage(Node node, CommandSource source) { PaginationService paginationService = Sponge.getServiceManager().provide(PaginationService.class).get(); PaginationList.Builder builder = paginationService.builder(); List<Text> contents = node.getSubcategories().stream() .map(category -> Text.builder("> " + category.getName()).color(TextColors.GRAY).onClick(TextActions.executeCallback(commandSource -> { if (commandSource instanceof Player) { sendPaginatedMessage(node.getChild(category), source); } })).build()).collect(Collectors.toList()); for (Package p : node.getPackages()) { contents.add(Text.builder(p.getName()).color(TextColors.WHITE).append(Text.builder(" - ").color(TextColors.GRAY).build()) .append(Text.builder("$x".replace("$", plugin.getServerInformation().getAccount().getCurrency().getSymbol()) .replace("x", "" + p.getEffectivePrice())).color(TextColors.GREEN).build()) .onClick(TextActions.executeCallback(commandSource -> { if (commandSource instanceof Player) { plugin.getPlatform().executeAsync(new SendCheckoutLinkTask(plugin, p.getId(), (Player) commandSource)); } })).build()); } builder.title(Text.builder(plugin.getI18n().get("sponge_listing")).color(TextColors.AQUA).build()).contents(contents).padding(Text.of("-")).sendTo(source); }
plugin.getBuyNowSignListener().doSignSetup(player, aPackage); } else { plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new SendCheckoutLink(plugin, aPackage.getId(), player));