Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions src/main/java/slimeknights/mantle/client/book/HTMLUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import slimeknights.mantle.util.html.HtmlString;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
* Helpers for converting to HTML.
Expand Down Expand Up @@ -136,4 +138,34 @@ public static HtmlSerializable toHtml(Component component) {

return group;
}

/**
* Merges Strings into an unordered list
*
* @param lines Strings, can use Minecraft chat formatting
* @return li tags
*/
public static Stream<HtmlSerializable> toListItems(String[] lines) {
return toListItems(Arrays.stream(lines).map(HTMLUtils::parse));
}

/**
* Merges Components into an unordered list
*
* @param lines Components
* @return li tags
*/
public static Stream<HtmlSerializable> toListItems(List<Component> lines) {
return toListItems(lines.stream().map(HTMLUtils::toHtml));
}

/**
* Merges a Stream of HtmlSerializable into an unordered list
*
* @param lines HtmlSerializables
* @return li tags
*/
public static Stream<HtmlSerializable> toListItems(Stream<HtmlSerializable> lines) {
return lines.map(line -> HtmlElement.li().add(HtmlElement.p().add(line)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -157,10 +157,8 @@ public HtmlSerializable toHTML(BookData book) {
return HtmlSerializable.EMPTY;
}
String title = getTitle();
return HtmlElement.div()
.minetip(title)
.add(HtmlElement.a().href("../page-" + (pageNumber / 2) + "/#" + name + '.' + firstPage.name)
.add(HtmlElement.img().src("/assets/images/book/icons/blank.png"))) // TODO: make this not an image
.add(HtmlElement.p().add(title));
return HtmlElement.indent("a").href("../page-" + (pageNumber / 2) + "/#" + name + '.' + firstPage.name).add(
HtmlElement.div().classes("grid-icon").minetip(title).add(HtmlElement.p().add(title))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
import slimeknights.mantle.client.screen.book.element.ImageElement;
import slimeknights.mantle.client.screen.book.element.ItemElement;
import slimeknights.mantle.client.screen.book.element.TextElement;
import slimeknights.mantle.util.html.HtmlElement;
import slimeknights.mantle.util.html.HtmlGroup;
import slimeknights.mantle.util.html.HtmlSerializable;

import java.util.ArrayList;

Expand Down Expand Up @@ -62,4 +65,12 @@ public void build(BookData book, ArrayList<BookElement> list, boolean rightSide)
list.add(new TextElement(0, IMG_SMITHING.height + y + 50, BookScreen.PAGE_WIDTH, BookScreen.PAGE_HEIGHT - IMG_SMITHING.height - y - 50, this.description));
}
}

@Override
public HtmlSerializable toHTML(BookData book) {
return HtmlGroup.indent().add(
makeTitleHTML(),
HtmlElement.div().style("padding-top", 2 * (IMG_SMITHING.height + 50)).add(TextData.toHtml(description, book))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ public HtmlSerializable toHTML(BookData book) {
return HtmlGroup.indent().add(
makeTitleHTML(),
HtmlElement.div()
.classes(grid_size.equalsIgnoreCase("small") ? "spacing" : "spacing-lg")
.style("padding-top", (2 * (grid_size.equalsIgnoreCase("small") ? IMG_CRAFTING_SMALL.height : IMG_CRAFTING_LARGE.height) + 5))
.add(TextData.toHtml(description, book))
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ public HtmlSerializable toHTML(BookData book) {
HtmlElement.div()
.classes("grid-icon-list", "grid-icon-list-" + (BookScreen.PAGE_WIDTH - 2 * xOff) / (int) (this.width * getScale(yOff)))
.style("top", yOff * 2)
.add(elements.stream().map(e -> e.toHTML(book)).toArray(HtmlSerializable[]::new))
.add(elements.stream().map(e -> e.toHTML(book)))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
import slimeknights.mantle.client.screen.book.element.ItemElement;
import slimeknights.mantle.client.screen.book.element.TextElement;
import slimeknights.mantle.client.screen.book.element.TooltipElement;
import slimeknights.mantle.util.html.HtmlElement;
import slimeknights.mantle.util.html.HtmlGroup;
import slimeknights.mantle.util.html.HtmlSerializable;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -111,6 +114,14 @@ public void load() {
}
}

@Override
public HtmlSerializable toHTML(BookData book) {
return HtmlGroup.indent().add(
makeTitleHTML(),
HtmlElement.div().style("padding-top", 2 * (IMG_SMELTING.height + 5)).add(TextData.toHtml(description, book))
);
}

static {
FUELS = NonNullList.of(ItemStack.EMPTY,
new ItemStack(Blocks.OAK_SLAB),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
import slimeknights.mantle.client.screen.book.element.ImageElement;
import slimeknights.mantle.client.screen.book.element.ItemElement;
import slimeknights.mantle.client.screen.book.element.TextElement;
import slimeknights.mantle.util.html.HtmlElement;
import slimeknights.mantle.util.html.HtmlGroup;
import slimeknights.mantle.util.html.HtmlSerializable;

import java.util.ArrayList;

Expand Down Expand Up @@ -68,4 +71,12 @@ public void build(BookData book, ArrayList<BookElement> list, boolean rightSide)
list.add(new TextElement(0, IMG_SMITHING.height + y + 5, BookScreen.PAGE_WIDTH, BookScreen.PAGE_HEIGHT - IMG_SMITHING.height - y - 5, this.description));
}
}

@Override
public HtmlSerializable toHTML(BookData book) {
return HtmlGroup.indent().add(
makeTitleHTML(),
HtmlElement.div().style("padding-top", 2 * (IMG_SMITHING.height + 5)).add(TextData.toHtml(description, book))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import slimeknights.mantle.client.screen.book.element.StructureElement;
import slimeknights.mantle.client.screen.book.element.TextElement;
import slimeknights.mantle.util.html.HtmlElement;
import slimeknights.mantle.util.html.HtmlGroup;
import slimeknights.mantle.util.html.HtmlSerializable;

import java.io.IOException;
import java.util.ArrayList;
Expand Down Expand Up @@ -113,7 +115,10 @@ public void build(BookData book, ArrayList<BookElement> list, boolean rightSide)
}

@Override
public HtmlElement toHTML(BookData book) {
return makeTitleHTML();
public HtmlSerializable toHTML(BookData book) {
return HtmlGroup.indent().add(
makeTitleHTML(),
HtmlElement.div().style("padding-top", 240).add(TextData.toHtml(description, book))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import slimeknights.mantle.client.screen.book.BookScreen;
import slimeknights.mantle.client.screen.book.element.BookElement;
import slimeknights.mantle.client.screen.book.element.TextElement;
import slimeknights.mantle.util.html.HtmlGroup;
import slimeknights.mantle.util.html.HtmlSerializable;

import java.util.ArrayList;

Expand Down Expand Up @@ -35,4 +37,9 @@ public void build(BookData book, ArrayList<BookElement> list, boolean rightSide)
list.add(new TextElement(0, y + i * (int) (Minecraft.getInstance().font.lineHeight * text.scale), BookScreen.PAGE_WIDTH, Minecraft.getInstance().font.lineHeight, text));
}
}

@Override
public HtmlSerializable toHTML(BookData book) {
return HtmlGroup.indent().add(makeTitleHTML(), TextData.toHtml(data, book));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import slimeknights.mantle.client.screen.book.element.BookElement;
import slimeknights.mantle.client.screen.book.element.ImageElement;
import slimeknights.mantle.client.screen.book.element.TextElement;
import slimeknights.mantle.util.html.HtmlElement;
import slimeknights.mantle.util.html.HtmlGroup;
import slimeknights.mantle.util.html.HtmlSerializable;

import java.util.ArrayList;

Expand All @@ -19,9 +22,13 @@ public class ContentTextLeftImage extends PageContent {
@Getter
public String title = null;
public ImageData image;

// TODO: rename these fields in 1.21 to right_text, and bottom_text
public TextData[] text1;
public TextData[] text2;

private final int OFFSET = 55;

@Override
public void build(BookData book, ArrayList<BookElement> list, boolean rightSide) {
int y = getTitleHeight();
Expand All @@ -39,11 +46,32 @@ public void build(BookData book, ArrayList<BookElement> list, boolean rightSide)
}

if (this.text1 != null && this.text1.length > 0) {
list.add(new TextElement(55, y, BookScreen.PAGE_WIDTH - 55, 50, this.text1));
list.add(new TextElement(OFFSET, y, BookScreen.PAGE_WIDTH - OFFSET, 50, this.text1));
}

if (this.text2 != null && this.text2.length > 0) {
list.add(new TextElement(0, y + 55, BookScreen.PAGE_WIDTH, BookScreen.PAGE_HEIGHT - 55 - y, this.text2));
list.add(new TextElement(0, y + OFFSET, BookScreen.PAGE_WIDTH, BookScreen.PAGE_HEIGHT - OFFSET - y, this.text2));
}
}

@Override
public HtmlSerializable toHTML(BookData book) {
HtmlGroup group = HtmlGroup.indent().add(makeTitleHTML());

if (image != null) {
HtmlElement box = HtmlElement.div().classes("column")
.style("margin-left", 2 * OFFSET)
.style("height", 2 * 50);

group.add(box);

if (text1 != null) box.add(TextData.toHtml(text1, book));
if (text2 != null) group.add(HtmlElement.div().classes("column").add(TextData.toHtml(text2, book)));
} else {
if (text1 != null) group.add(TextData.toHtml(text1, book));
if (text2 != null) group.add(TextData.toHtml(text2, book));
}

return group;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import slimeknights.mantle.client.screen.book.element.BookElement;
import slimeknights.mantle.client.screen.book.element.ImageElement;
import slimeknights.mantle.client.screen.book.element.TextElement;
import slimeknights.mantle.util.html.HtmlElement;
import slimeknights.mantle.util.html.HtmlGroup;
import slimeknights.mantle.util.html.HtmlSerializable;

import java.util.ArrayList;

Expand All @@ -18,9 +21,13 @@ public class ContentTextRightImage extends PageContent {

@Getter
public String title;
public ImageData image;

// TODO: rename these fields in 1.21 to left_text, and bottom_text
public TextData[] text1;
public TextData[] text2;
public ImageData image;

private final int OFFSET = 55;

@Override
public void build(BookData book, ArrayList<BookElement> list, boolean rightSide) {
Expand All @@ -33,7 +40,7 @@ public void build(BookData book, ArrayList<BookElement> list, boolean rightSide)
}

if (this.text1 != null && this.text1.length > 0) {
list.add(new TextElement(0, y, BookScreen.PAGE_WIDTH - 55, 50, this.text1));
list.add(new TextElement(0, y, BookScreen.PAGE_WIDTH - OFFSET, 50, this.text1));
}

if (this.image != null && this.image.location != null) {
Expand All @@ -43,7 +50,28 @@ public void build(BookData book, ArrayList<BookElement> list, boolean rightSide)
}

if (this.text2 != null && this.text2.length > 0) {
list.add(new TextElement(0, y + 55, BookScreen.PAGE_WIDTH, BookScreen.PAGE_HEIGHT - 55 - y, this.text2));
list.add(new TextElement(0, y + OFFSET, BookScreen.PAGE_WIDTH, BookScreen.PAGE_HEIGHT - OFFSET - y, this.text2));
}
}

@Override
public HtmlSerializable toHTML(BookData book) {
HtmlGroup group = HtmlGroup.indent().add(makeTitleHTML());

if (image != null) {
HtmlElement box = HtmlElement.div().classes("column")
.style("margin-right", 2 * OFFSET)
.style("height", 2 * 50);

group.add(box);

if (text1 != null) box.add(TextData.toHtml(text1, book));
if (text2 != null) group.add(HtmlElement.div().classes("column").add(TextData.toHtml(text2, book)));
} else {
if (text1 != null) group.add(TextData.toHtml(text1, book));
if (text2 != null) group.add(TextData.toHtml(text2, book));
}

return group;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,11 @@ public HtmlElement makeTitleHTML() {
}
HtmlElement element = HtmlElement.p()
.add(title)
.classes("underline")
.id(parent.parent.name + "." + parent.name);
.classes("underline");

if (parent != null)
element = element.id(parent.parent.name + "." + parent.name);

if (isLarge()) {
element.classes("large");
}
Expand Down
Loading