use of slimeknights.mantle.client.book.data.element.ImageData 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);
}
}
}
Aggregations