52 lines
2 KiB
Java
52 lines
2 KiB
Java
package cc.reconnected.library.text.parser;
|
|
|
|
import cc.reconnected.library.RccLib;
|
|
import cc.reconnected.library.text.Placeholder;
|
|
import eu.pb4.placeholders.api.node.TextNode;
|
|
import eu.pb4.placeholders.api.node.parent.ClickActionNode;
|
|
import eu.pb4.placeholders.api.node.parent.FormattingNode;
|
|
import eu.pb4.placeholders.api.node.parent.HoverNode;
|
|
import net.minecraft.text.ClickEvent;
|
|
import net.minecraft.util.Formatting;
|
|
|
|
import java.util.Map;
|
|
|
|
public class MarkdownComponentParser {
|
|
public static TextNode spoilerFormatting(TextNode[] textNodes) {
|
|
var text = TextNode.asSingle(textNodes);
|
|
return new HoverNode<>(
|
|
TextNode.array(
|
|
new FormattingNode(TextNode.array(TextNode.of("\u258C".repeat(text.toText().getString().length()))), Formatting.DARK_GRAY)
|
|
),
|
|
HoverNode.Action.TEXT, text);
|
|
}
|
|
|
|
public static TextNode quoteFormatting(TextNode[] textNodes) {
|
|
return new ClickActionNode(
|
|
TextNode.array(
|
|
new HoverNode<>(
|
|
TextNode.array(new FormattingNode(textNodes, Formatting.GRAY)),
|
|
HoverNode.Action.TEXT, TextNode.of("Click to copy"))
|
|
),
|
|
ClickEvent.Action.COPY_TO_CLIPBOARD, TextNode.asSingle(textNodes)
|
|
);
|
|
}
|
|
|
|
public static TextNode urlFormatting(TextNode[] textNodes, TextNode url) {
|
|
var placeholders = Map.of(
|
|
"label", TextNode.wrap(textNodes).toText(),
|
|
"url", url.toText()
|
|
);
|
|
var text = Placeholder.parse(RccLib.CONFIG.link, placeholders);
|
|
var hover = Placeholder.parse(RccLib.CONFIG.linkHover, placeholders);
|
|
|
|
return new HoverNode<>(TextNode.array(
|
|
new ClickActionNode(
|
|
TextNode.array(
|
|
TextNode.convert(text)
|
|
),
|
|
ClickEvent.Action.OPEN_URL, url)),
|
|
HoverNode.Action.TEXT, TextNode.convert(hover)
|
|
);
|
|
}
|
|
}
|