Search in sources :

Example 1 with TinkerItemElement

use of slimeknights.tconstruct.library.client.book.elements.TinkerItemElement in project TinkersConstruct by SlimeKnights.

the class ContentMaterialSkull method addPrimaryDisplayItems.

@Override
protected void addPrimaryDisplayItems(List<ItemElement> displayTools, MaterialVariantId materialId) {
    displayTools.add(new TinkerItemElement(TinkerToolParts.repairKit.get().withMaterialForDisplay(materialId)));
    super.addPrimaryDisplayItems(displayTools, materialId);
    // add skull recipe to display items
    IDisplayableCastingRecipe skullRecipe = getSkullRecipe();
    if (skullRecipe != null) {
        // add repair kit
        List<ItemStack> casts = skullRecipe.getCastItems();
        if (!casts.isEmpty()) {
            ItemElement elementItem = new TinkerItemElement(0, 0, 1, casts);
            elementItem.tooltip = ImmutableList.of(new TranslatableComponent(SKULL_FROM, casts.get(0).getHoverName()));
            displayTools.add(elementItem);
        }
    }
}
Also used : ItemElement(slimeknights.mantle.client.screen.book.element.ItemElement) TinkerItemElement(slimeknights.tconstruct.library.client.book.elements.TinkerItemElement) TranslatableComponent(net.minecraft.network.chat.TranslatableComponent) TinkerItemElement(slimeknights.tconstruct.library.client.book.elements.TinkerItemElement) IDisplayableCastingRecipe(slimeknights.tconstruct.library.recipe.casting.IDisplayableCastingRecipe) ItemStack(net.minecraft.world.item.ItemStack)

Example 2 with TinkerItemElement

use of slimeknights.tconstruct.library.client.book.elements.TinkerItemElement in project TinkersConstruct by SlimeKnights.

the class ContentModifier method buildAndAddRecipeDisplay.

/**
 * Builds the recipe display to show in the book's gui and adds it so that the user can see the recipes.
 *
 * @param book   the book data
 * @param list   the list of book elements
 * @param recipe recipe to display
 * @param parent the parent book screen, only used when there is multiple recipes
 */
public void buildAndAddRecipeDisplay(BookData book, ArrayList<BookElement> list, @Nullable IDisplayModifierRecipe recipe, @Nullable BookScreen parent) {
    if (recipe != null) {
        List<List<ItemStack>> inputs = recipe.getDisplayItems();
        ImageData img = IMG_SLOTS[Math.min(inputs.size() - 2, 4)];
        if (inputs.size() > 6) {
            TConstruct.LOG.warn("Too many inputs in recipe {}, size {}", recipe, inputs.size() - 2);
        }
        int[] slotsX = SLOTS_X;
        int[] slotsY = SLOTS_Y;
        if (inputs.size() == 5) {
            slotsX = SLOTS_X_4;
            slotsY = SLOTS_Y_4;
        }
        int imgX = BookScreen.PAGE_WIDTH / 2 + 20;
        int imgY = BookScreen.PAGE_HEIGHT / 2 + 30;
        imgX = imgX + 29 - img.width / 2;
        imgY = imgY + 20 - img.height / 2;
        ImageElement table = new ImageElement(imgX + (img.width - IMG_TABLE.width) / 2, imgY - 24, -1, -1, IMG_TABLE);
        if (parent != null)
            table.parent = parent;
        this.parts.add(table);
        // TODO ADD TABLE TO TEXTURE?
        list.add(table);
        ImageElement slot = new ImageElement(imgX, imgY, -1, -1, img, book.appearance.slotColor);
        if (parent != null)
            slot.parent = parent;
        this.parts.add(slot);
        list.add(slot);
        ItemStackList demo = getDemoTools(recipe.getToolWithModifier());
        TinkerItemElement demoTools = new TinkerItemElement(imgX + (img.width - 16) / 2, imgY - 24, 1f, demo);
        if (parent != null)
            demoTools.parent = parent;
        this.parts.add(demoTools);
        list.add(demoTools);
        ImageElement image = new ImageElement(imgX + (img.width - 22) / 2, imgY - 27, -1, -1, IMG_SLOT_1, 0xffffff);
        if (parent != null)
            image.parent = parent;
        this.parts.add(image);
        list.add(image);
        for (int i = 1; i < Math.min(inputs.size(), 6); i++) {
            TinkerItemElement part = new TinkerItemElement(imgX + slotsX[i - 1], imgY + slotsY[i - 1], 1f, inputs.get(i));
            if (parent != null)
                part.parent = parent;
            this.parts.add(part);
            list.add(part);
        }
    }
}
Also used : ItemStackList(slimeknights.mantle.util.ItemStackList) ImageData(slimeknights.mantle.client.book.data.element.ImageData) ImageElement(slimeknights.mantle.client.screen.book.element.ImageElement) TinkerItemElement(slimeknights.tconstruct.library.client.book.elements.TinkerItemElement) ArrayList(java.util.ArrayList) ItemStackList(slimeknights.mantle.util.ItemStackList) List(java.util.List)

Aggregations

TinkerItemElement (slimeknights.tconstruct.library.client.book.elements.TinkerItemElement)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 TranslatableComponent (net.minecraft.network.chat.TranslatableComponent)1 ItemStack (net.minecraft.world.item.ItemStack)1 ImageData (slimeknights.mantle.client.book.data.element.ImageData)1 ImageElement (slimeknights.mantle.client.screen.book.element.ImageElement)1 ItemElement (slimeknights.mantle.client.screen.book.element.ItemElement)1 ItemStackList (slimeknights.mantle.util.ItemStackList)1 IDisplayableCastingRecipe (slimeknights.tconstruct.library.recipe.casting.IDisplayableCastingRecipe)1