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();
}
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;
}
Aggregations