Search in sources :

Example 1 with AnvilPlanSelectButton

use of net.dries007.tfc.client.screen.button.AnvilPlanSelectButton in project TerraFirmaCraft by TerraFirmaCraft.

the class AnvilPlanScreen method init.

@Override
protected void init() {
    super.init();
    final int recipesPerPage = 18;
    final int guiLeft = getGuiLeft(), guiTop = getGuiTop();
    final ItemStack inputStack = blockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).map(t -> t.getStackInSlot(AnvilBlockEntity.SLOT_INPUT_MAIN)).orElse(ItemStack.EMPTY);
    final List<AnvilRecipe> recipes = AnvilRecipe.getAll(playerInventory.player.level, inputStack, blockEntity.getTier());
    recipeButtons = new ArrayList<>();
    for (int i = 0; i < recipes.size(); i++) {
        final int page = i / recipesPerPage;
        final int index = i % recipesPerPage;
        final int posX = 7 + (index % 9) * 18;
        final int posY = 25 + ((index % 18) / 9) * 18;
        final AnvilRecipe recipe = recipes.get(i);
        final AnvilPlanSelectButton button = new AnvilPlanSelectButton(guiLeft + posX, guiTop + posY, page, recipe, RenderHelpers.makeButtonTooltip(this, recipe.getResultItem().getDisplayName()));
        button.setCurrentPage(0);
        recipeButtons.add(button);
        addRenderableWidget(button);
    }
    maxPageInclusive = (recipes.size() - 1) % recipesPerPage;
    addRenderableWidget(leftButton = NextPageButton.left(guiLeft + 7, guiTop + 65, button -> {
        if (currentPage < maxPageInclusive) {
            currentPage++;
            updateCurrentPage();
        }
    }));
    addRenderableWidget(rightButton = NextPageButton.right(guiLeft + 7, guiTop + 154, button -> {
        if (currentPage > 0) {
            currentPage--;
            updateCurrentPage();
        }
    }));
    updateCurrentPage();
}
Also used : ResourceLocation(net.minecraft.resources.ResourceLocation) AnvilPlanContainer(net.dries007.tfc.common.container.AnvilPlanContainer) Component(net.minecraft.network.chat.Component) AnvilPlanSelectButton(net.dries007.tfc.client.screen.button.AnvilPlanSelectButton) AnvilRecipe(net.dries007.tfc.common.recipes.AnvilRecipe) Inventory(net.minecraft.world.entity.player.Inventory) NextPageButton(net.dries007.tfc.client.screen.button.NextPageButton) RenderHelpers(net.dries007.tfc.client.RenderHelpers) ArrayList(java.util.ArrayList) PoseStack(com.mojang.blaze3d.vertex.PoseStack) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) CapabilityItemHandler(net.minecraftforge.items.CapabilityItemHandler) ItemStack(net.minecraft.world.item.ItemStack) Helpers(net.dries007.tfc.util.Helpers) Button(net.minecraft.client.gui.components.Button) AnvilBlockEntity(net.dries007.tfc.common.blockentities.AnvilBlockEntity) AnvilPlanSelectButton(net.dries007.tfc.client.screen.button.AnvilPlanSelectButton) AnvilRecipe(net.dries007.tfc.common.recipes.AnvilRecipe) ItemStack(net.minecraft.world.item.ItemStack)

Example 2 with AnvilPlanSelectButton

use of net.dries007.tfc.client.screen.button.AnvilPlanSelectButton in project TerraFirmaCraft by TerraFirmaCraft.

the class AnvilPlanScreen method updateCurrentPage.

private void updateCurrentPage() {
    assert recipeButtons != null && leftButton != null && rightButton != null;
    for (AnvilPlanSelectButton button : recipeButtons) {
        button.setCurrentPage(currentPage);
    }
    leftButton.active = leftButton.visible = currentPage < maxPageInclusive;
    rightButton.active = rightButton.visible = currentPage > 0;
}
Also used : AnvilPlanSelectButton(net.dries007.tfc.client.screen.button.AnvilPlanSelectButton)

Aggregations

AnvilPlanSelectButton (net.dries007.tfc.client.screen.button.AnvilPlanSelectButton)2 PoseStack (com.mojang.blaze3d.vertex.PoseStack)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 RenderHelpers (net.dries007.tfc.client.RenderHelpers)1 NextPageButton (net.dries007.tfc.client.screen.button.NextPageButton)1 AnvilBlockEntity (net.dries007.tfc.common.blockentities.AnvilBlockEntity)1 AnvilPlanContainer (net.dries007.tfc.common.container.AnvilPlanContainer)1 AnvilRecipe (net.dries007.tfc.common.recipes.AnvilRecipe)1 Helpers (net.dries007.tfc.util.Helpers)1 Button (net.minecraft.client.gui.components.Button)1 Component (net.minecraft.network.chat.Component)1 ResourceLocation (net.minecraft.resources.ResourceLocation)1 Inventory (net.minecraft.world.entity.player.Inventory)1 ItemStack (net.minecraft.world.item.ItemStack)1 CapabilityItemHandler (net.minecraftforge.items.CapabilityItemHandler)1 Nullable (org.jetbrains.annotations.Nullable)1