Skip to content

Filter  #621

@kaiquyricardo

Description

@kaiquyricardo

I want to know if it is possible to make an item in the inventory that when clicked will filter what the page is receiving

private final EconomyPlugin plugin;

private State<Pagination> paginationState = lazyPaginationState(
        (context) -> transactions(context.getPlayer()),
        (context, item, index, transactions) ->
                item.withItem(new ItemBuilder(Material.SKULL_ITEM)
                .skullOwner(transactions.getAuthor())
                .name("§a" + transactions.getAuthor())
                .lore(
                        "",
                        " §aTransação #" + index,
                        " §fData: §7" + transactions.getDate(),
                        " §fValor: §7" + transactions.getType().getValue() +
                                NumberFormatter.format(transactions.getAmount()),
                        "")
                .build()
        )
);

@Override
public void onInit(@NotNull ViewConfigBuilder config) {
    config.title("Transações")
            .size(5)
            .layout(
                    "         ",
                    " OOOOOOO ",
                    " OOOOOOO ",
                    "         ",
                    "         "
            )
            .cancelOnClick()
            .cancelOnDrop()
            .cancelOnPickup()
            .cancelOnDrag();
}

@Override
public void onFirstRender(@NotNull RenderContext render) {
    final Pagination pagination = paginationState.get(render);

    render.slot(18, new ItemBuilder(Material.SKULL_ITEM)
                    .texture("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODU1MGI3Zjc0ZTllZDc2MzNhYTI3NGVhMzBjYzNkMmU4N2FiYjM2ZDRkMWY0Y2E2MDhjZDQ0NTkwY2NlMGIifX19")
                    .name("§aPágina anterior")
                    .build())
            .watch(paginationState)
            .displayIf(pagination::canBack)
            .onClick(pagination::back);

    render.slot(26, new ItemBuilder(Material.SKULL_ITEM)
                    .texture("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTYzMzlmZjJlNTM0MmJhMThiZGM0OGE5OWNjYTY1ZDEyM2NlNzgxZDg3ODI3MmY5ZDk2NGVhZDNiOGFkMzcwIn19fQ==")
                    .name("§aPróxima página")
                    .build())
            .watch(paginationState)
            .displayIf(pagination::canAdvance)
            .onClick(pagination::advance);

    render.slot(40, new ItemBuilder(Material.HOPPER)
            .name("§aFilter")
            .build()
    ).onClick(click -> {
        /// FILTER WHAT THE PAGINATION WILL RECEIVE
        /// FILTER WHAT THE PAGINATION WILL RECEIVE
        /// FILTER WHAT THE PAGINATION WILL RECEIVE
        /// FILTER WHAT THE PAGINATION WILL RECEIVE
        /// FILTER WHAT THE PAGINATION WILL RECEIVE

    });
}

public List<Transactions> transactions(Player player) {
    return plugin.getUserCache().getByUser(player.getName()).getTransactions();
}

}

`

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or enchancement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions