From eeedd97e8be0067b6714b24b534c1270c578897f Mon Sep 17 00:00:00 2001 From: Kieran Wallbanks Date: Wed, 24 Mar 2021 17:18:45 +0000 Subject: [PATCH] Make book metas use components for pages --- .../item/metadata/WritableBookMeta.java | 15 +++++++------ .../server/item/metadata/WrittenBookMeta.java | 21 +++++++++---------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java b/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java index 5c0d24c8f..ab11df5ca 100644 --- a/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java @@ -1,5 +1,8 @@ package net.minestom.server.item.metadata; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; +import net.minestom.server.MinecraftServer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBTCompound; @@ -14,7 +17,7 @@ public class WritableBookMeta extends ItemMeta { private String title; private String author; - private List pages = new ArrayList<>(); + private List pages = new ArrayList<>(); @Nullable public String getTitle() { @@ -42,7 +45,7 @@ public class WritableBookMeta extends ItemMeta { * @return a modifiable {@link ArrayList} containing the book pages */ @NotNull - public List getPages() { + public List getPages() { return pages; } @@ -51,7 +54,7 @@ public class WritableBookMeta extends ItemMeta { * * @param pages the pages list */ - public void setPages(@NotNull List pages) { + public void setPages(@NotNull List pages) { this.pages = pages; } @@ -82,7 +85,7 @@ public class WritableBookMeta extends ItemMeta { if (compound.containsKey("pages")) { final NBTList list = compound.getList("pages"); for (NBTString page : list) { - this.pages.add(page.getValue()); + this.pages.add(GsonComponentSerializer.gson().deserialize(page.getValue())); } } } @@ -100,8 +103,8 @@ public class WritableBookMeta extends ItemMeta { if (!pages.isEmpty()) { NBTList list = new NBTList<>(NBTTypes.TAG_String); - for (String page : pages) { - list.add(new NBTString(page)); + for (Component page : pages) { + list.add(new NBTString(MinecraftServer.getSerializationManager().serialize(page))); } compound.set("pages", list); } diff --git a/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java b/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java index 1d339fc76..d3cd6aa16 100644 --- a/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java @@ -2,6 +2,7 @@ package net.minestom.server.item.metadata; import net.kyori.adventure.inventory.Book; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.minestom.server.MinecraftServer; import net.minestom.server.adventure.Localizable; import org.jetbrains.annotations.NotNull; @@ -19,7 +20,7 @@ public class WrittenBookMeta extends ItemMeta { private WrittenBookGeneration generation; private String author; private String title; - private List pages = new ArrayList<>(); + private List pages = new ArrayList<>(); /** * Gets if the book is resolved. @@ -97,11 +98,12 @@ public class WrittenBookMeta extends ItemMeta { /** * Gets an {@link ArrayList} containing all the pages. *

- * The list is modifiable. + * The list is not modifiable as it is . * * @return a modifiable {@link ArrayList} with the pages of the book */ - public List getPages() { + @Deprecated + public List getPagesJson() { return pages; } @@ -110,7 +112,7 @@ public class WrittenBookMeta extends ItemMeta { * * @param pages the array list containing the book pages */ - public void setPages(List pages) { + public void setPages(List pages) { this.pages = pages; } @@ -150,7 +152,7 @@ public class WrittenBookMeta extends ItemMeta { if (compound.containsKey("pages")) { final NBTList list = compound.getList("pages"); for (NBTString page : list) { - this.pages.add(page.getValue()); + this.pages.add(GsonComponentSerializer.gson().deserialize(page.getValue())); } } } @@ -171,8 +173,8 @@ public class WrittenBookMeta extends ItemMeta { } if (!pages.isEmpty()) { NBTList list = new NBTList<>(NBTTypes.TAG_String); - for (String page : pages) { - list.add(new NBTString(page)); + for (Component page : pages) { + list.add(new NBTString(MinecraftServer.getSerializationManager().serialize(page))); } compound.set("pages", list); } @@ -212,10 +214,7 @@ public class WrittenBookMeta extends ItemMeta { meta.author = MinecraftServer.getSerializationManager().translateAndSerialize(book.author(), localizable); meta.title = MinecraftServer.getSerializationManager().translateAndSerialize(book.title(), localizable); meta.pages = new ArrayList<>(); - - for (Component page : book.pages()) { - meta.pages.add(MinecraftServer.getSerializationManager().serialize(page)); - } + meta.pages.addAll(book.pages()); return meta; }