Skip to content

Pagination is not workingΒ #747

Open
Open
@goncalodelima

Description

@goncalodelima

Is there an existing issue for this?

  • I have searched the existing issues

πŸ› Describe the bug

Basically when I click on the item for the next page, the new items (in this case there are 14) do not update according to the page they are on. Simply, they are always the first 14 items on the 1st page on any page I am on.

package com.twins.core.global.inventory.quest;

import com.minecraftsolutions.utils.ItemBuilder;
import com.twins.core.KeyConstants;
import com.twins.core.global.inventory.QuestInventory;
import com.twins.core.global.model.user.GlobalUser;
import com.twins.core.global.model.user.quest.QuestType;
import com.twins.core.utils.Configuration;
import me.devnatan.inventoryframework.View;
import me.devnatan.inventoryframework.ViewConfigBuilder;
import me.devnatan.inventoryframework.component.Pagination;
import me.devnatan.inventoryframework.context.CloseContext;
import me.devnatan.inventoryframework.context.Context;
import me.devnatan.inventoryframework.context.RenderContext;
import me.devnatan.inventoryframework.state.State;
import me.devnatan.inventoryframework.state.StateValue;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CraftQuestInventory extends View {

private final Configuration inventory;

private final State<Pagination> state;

private final State<ItemStack> item;


public CraftQuestInventory(Configuration inventory) {

    this.inventory = inventory;

    state = computedPaginationState(context -> {

        GlobalUser globalUser = (GlobalUser) context.getInitialData();
        List<QuestType> quests = new ArrayList<>();

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_CUPBOARD)) {
            quests.add(QuestType.CRAFT_CUPBOARD);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_BED)) {
            quests.add(QuestType.CRAFT_BED);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_FURNACE)) {
            quests.add(QuestType.CRAFT_FURNACE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_CHEST)) {
            quests.add(QuestType.CRAFT_CHEST);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_TORCH)) {
            quests.add(QuestType.CRAFT_TORCH);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_T1)) {
            quests.add(QuestType.CRAFT_T1);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_T2)) {
            quests.add(QuestType.CRAFT_T2);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_T3)) {
            quests.add(QuestType.CRAFT_T3);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_T4)) {
            quests.add(QuestType.CRAFT_T4);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_T5)) {
            quests.add(QuestType.CRAFT_T5);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_WOOD_TRAPDOOR)) {
            quests.add(QuestType.CRAFT_WOOD_TRAPDOOR);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_IRON_TRAPDOOR)) {
            quests.add(QuestType.CRAFT_IRON_TRAPDOOR);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_LADDER)) {
            quests.add(QuestType.CRAFT_LADDER);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_WOODEN_DOOR)) {
            quests.add(QuestType.CRAFT_WOODEN_DOOR);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_IRON_DOOR)) {
            quests.add(QuestType.CRAFT_IRON_DOOR);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SPRUCE_DOOR)) {
            quests.add(QuestType.CRAFT_SPRUCE_DOOR);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_TITANIUM_DOOR)) {
            quests.add(QuestType.CRAFT_TITANIUM_DOOR);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_WOODBASE)) {
            quests.add(QuestType.CRAFT_WOODBASE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_STONEBASE)) {
            quests.add(QuestType.CRAFT_STONEBASE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_IRONBASE)) {
            quests.add(QuestType.CRAFT_IRONBASE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_WIREFRAME)) {
            quests.add(QuestType.CRAFT_WIREFRAME);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_EXPLOSIVE)) {
            quests.add(QuestType.CRAFT_EXPLOSIVE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_FUSE)) {
            quests.add(QuestType.CRAFT_FUSE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_HOMEMADE)) {
            quests.add(QuestType.CRAFT_HOMEMADE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_C4)) {
            quests.add(QuestType.CRAFT_C4);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_FUEL)) {
            quests.add(QuestType.CRAFT_FUEL);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_WOOD)) {
            quests.add(QuestType.CRAFT_WOOD);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_REINFORCED_WOOD)) {
            quests.add(QuestType.CRAFT_REINFORCED_WOOD);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_FOREST)) {
            quests.add(QuestType.CRAFT_FOREST);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SOLDIER)) {
            quests.add(QuestType.CRAFT_SOLDIER);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_KEVLAR)) {
            quests.add(QuestType.CRAFT_KEVLAR);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_IRON_TOOLS)) {
            quests.add(QuestType.CRAFT_IRON_TOOLS);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_DIAMOND_SWORD)) {
            quests.add(QuestType.CRAFT_DIAMOND_SWORD);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_REPAIR_KIT)) {
            quests.add(QuestType.CRAFT_REPAIR_KIT);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_PISTOL)) {
            quests.add(QuestType.CRAFT_PISTOL);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SUBMACHINE)) {
            quests.add(QuestType.CRAFT_SUBMACHINE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_RIFLE)) {
            quests.add(QuestType.CRAFT_RIFLE);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SHOTGUN)) {
            quests.add(QuestType.CRAFT_SHOTGUN);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_CROSSBOW)) {
            quests.add(QuestType.CRAFT_CROSSBOW);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SNIPER)) {
            quests.add(QuestType.CRAFT_SNIPER);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_PISTOL_AMMO)) {
            quests.add(QuestType.CRAFT_PISTOL_AMMO);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SUBMACHINE_AMMO)) {
            quests.add(QuestType.CRAFT_SUBMACHINE_AMMO);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_RIFLE_AMMO)) {
            quests.add(QuestType.CRAFT_RIFLE_AMMO);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SHOTGUN_AMMO)) {
            quests.add(QuestType.CRAFT_SHOTGUN_AMMO);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_CROSSBOW_AMMO)) {
            quests.add(QuestType.CRAFT_CROSSBOW_AMMO);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SNIPER_AMMO)) {
            quests.add(QuestType.CRAFT_SNIPER_AMMO);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_SMALL_MEDKIT)) {
            quests.add(QuestType.CRAFT_SMALL_MEDKIT);
        }

        if (!globalUser.isHideConcludedQuests() || !globalUser.hasQuestDone(QuestType.CRAFT_LARGE_MEDKIT)) {
            quests.add(QuestType.CRAFT_LARGE_MEDKIT);
        }

        return quests;

    }, (context, builder, i, questType) -> {

        GlobalUser globalUser = (GlobalUser) context.getInitialData();

        boolean questDone = globalUser.hasQuestDone(questType);

        List<String> lore = inventory.getStringList(globalUser.getLanguageType(), "craftQuest." + i + ".lore");
        lore.replaceAll(string -> string.replace("%status%", questDone ? KeyConstants.MISSION_COMPLETED : KeyConstants.MISSION_INCOMPLETED).replace("%remainingTimes%", String.valueOf(globalUser.getQuestRemainingTimes(questType))));

        ItemStack quest = new ItemBuilder(Material.PAPER, 1)
                .setDisplayName(inventory.getString(globalUser.getLanguageType(), "craftQuest." + i + ".name"))
                .setLore(lore)
                .glow(questDone)
                .build();

        builder.withItem(quest);

    });

    item = computedState(context -> {

        GlobalUser globalUser = (GlobalUser) context.getInitialData();

        return new ItemBuilder(Material.COMPASS)
                .setDisplayName(inventory.getString(globalUser.getLanguageType(), "questState.name"))
                .setLore(!globalUser.isHideConcludedQuests() ? inventory.getStringList(globalUser.getLanguageType(), "questState.loreHide") : inventory.getStringList(globalUser.getLanguageType(), "questState.loreShow"))
                .build();
    });

    computedState(context -> {

        GlobalUser globalUser = (GlobalUser) context.getInitialData();

        if (globalUser.isHideConcludedQuests()
                && globalUser.hasQuestDone(QuestType.PUT_BED)
                && globalUser.hasQuestDone(QuestType.TELEPORT_BED)
                && globalUser.hasQuestDone(QuestType.SMELT_ORES_OR_FOOD)) {
            return new ItemBuilder(Material.WEB)
                    .setDisplayName(inventory.getString(globalUser.getLanguageType(), "emptyState"))
                    .build();
        }

        return null;
    });

}

@Override
public void onFirstRender(@NotNull RenderContext context) {

    GlobalUser globalUser = (GlobalUser) context.getInitialData();

    ItemStack back = new ItemBuilder(Material.ARROW)
            .setDisplayName(inventory.getString(globalUser.getLanguageType(), "back"))
            .build();

    context.slot(45, back).onClick(click -> {
        click.getPlayer().playSound(click.getPlayer().getLocation(), Sound.CLICK, 1, 1);
        click.openForPlayer(QuestInventory.class, globalUser);
    });

    context.layoutSlot('I')
            .watch(item)
            .renderWith(() -> item.get(context))
            .onClick(click -> {
                click.getPlayer().playSound(click.getPlayer().getLocation(), Sound.CLICK, 1, 1);
                globalUser.setHideConcludedQuests(!globalUser.isHideConcludedQuests());
                click.update();
            });

    ItemStack previousPage = new ItemBuilder(Material.INK_SACK, 1, (short) 8)
            .setDisplayName(inventory.getString(globalUser.getLanguageType(), "previousPage"))
            .build();

    ItemStack nextPage = new ItemBuilder(Material.INK_SACK, 1, (short) 10)
            .setDisplayName(inventory.getString(globalUser.getLanguageType(), "nextPage"))
            .build();

    Pagination pagination = state.get(context);

    context.layoutSlot('<', previousPage)
            .updateOnStateChange(state)
            .displayIf(() -> pagination.currentPageIndex() != 0)
            .onClick(click -> {
                pagination.back();
            });

    context.layoutSlot('>', nextPage)
            .updateOnStateChange(state)
            .displayIf(() -> pagination.currentPageIndex() < pagination.lastPageIndex())
            .onClick(click -> {
                pagination.advance();
            });

}


@Override
public void onUpdate(@NotNull Context update) {
    state.get(update).forceUpdate();
}

@Override
public void onInit(ViewConfigBuilder config) {
    config
            .title("Quests - Craft")
            .size(6)
            .layout("         ",
                    " OOOOOOO ",
                    " OOOOOOO ",
                    "    E    ",
                    "         ",
                    "   <I>   ")
            .cancelOnClick()
            .cancelOnDrag()
            .cancelOnDrop()
            .cancelOnPickup()
            .build();
}

}

βœ”οΈ Expected behavior

No response

πŸ‘£ Steps to Reproduce

No response

πŸ’» Platform

  • Bukkit
  • Sponge
  • Other

⭐ Server Version

1..8.8

πŸ“š Library Version

latest

✍️ Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions