From 2ebfecfac820d937c6ebdaba50ccd85d49476b55 Mon Sep 17 00:00:00 2001 From: Alexander Date: Thu, 29 Jul 2021 00:44:34 +0100 Subject: [PATCH] Update BookModifier --- .../rules/modifiers/BookModifier.java | 91 +++++++++++-------- 1 file changed, 51 insertions(+), 40 deletions(-) diff --git a/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/BookModifier.java b/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/BookModifier.java index 96ae201a7..00e503fa9 100644 --- a/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/BookModifier.java +++ b/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/BookModifier.java @@ -15,9 +15,8 @@ import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BookMeta; import org.bukkit.inventory.meta.BookMeta.Generation; -import vg.civcraft.mc.civmodcore.nbt.NBTSerializable; +import vg.civcraft.mc.civmodcore.nbt.NBTType; import vg.civcraft.mc.civmodcore.nbt.wrappers.NBTCompound; -import vg.civcraft.mc.civmodcore.utilities.MoreClassUtils; @CommandAlias(SetCommand.ALIAS) @Modifier(slug = "BOOK", order = 1000) @@ -38,24 +37,23 @@ public final class BookModifier extends ModifierData { private int bookHash; @Override - public BookModifier construct(ItemStack item) { - BookMeta meta = MoreClassUtils.castOrNull(BookMeta.class, item.getItemMeta()); - if (meta == null) { + public BookModifier construct(final ItemStack item) { + if (!(item.getItemMeta() instanceof BookMeta bookMeta)) { return null; } - BookModifier modifier = new BookModifier(); - if (meta.hasTitle()) { - modifier.setTitle(meta.getTitle()); + final var modifier = new BookModifier(); + if (bookMeta.hasTitle()) { + modifier.setTitle(bookMeta.getTitle()); } - if (meta.hasAuthor()) { - modifier.setAuthor(meta.getAuthor()); + if (bookMeta.hasAuthor()) { + modifier.setAuthor(bookMeta.getAuthor()); } - if (meta.hasGeneration()) { - modifier.setGeneration(Objects.requireNonNull(meta.getGeneration())); + if (bookMeta.hasGeneration()) { + modifier.setGeneration(Objects.requireNonNull(bookMeta.getGeneration())); } - if (meta.hasPages()) { + if (bookMeta.hasPages()) { modifier.setHasPages(true); - modifier.setBookHash(bookHash(meta.getPages())); + modifier.setBookHash(bookHash(bookMeta.getPages())); } return modifier; } @@ -67,49 +65,62 @@ public final class BookModifier extends ModifierData { @Override public boolean conforms(ItemStack item) { - BookMeta meta = MoreClassUtils.castOrNull(BookMeta.class, item.getItemMeta()); - if (meta == null) { + if (!(item.getItemMeta() instanceof BookMeta bookMeta)) { return false; } - if (meta.hasTitle() != hasTitle()) { + if (bookMeta.hasTitle() != hasTitle()) { return false; } - if (meta.hasAuthor() != hasAuthor()) { + if (bookMeta.hasAuthor() != hasAuthor()) { return false; } if (hasGeneration()) { - if (meta.getGeneration() != getGeneration()) { + if (bookMeta.getGeneration() != getGeneration()) { return false; } } - if (meta.hasPages() != hasPages()) { + if (bookMeta.hasPages() != hasPages()) { return false; } - if (meta.hasPages()) { - if (bookHash(meta.getPages()) != getBookHash()) { - return false; - } + if (bookMeta.hasPages()) { + return bookHash(bookMeta.getPages()) == getBookHash(); } return true; } @Override public void toNBT(@Nonnull final NBTCompound nbt) { - nbt.setString(TITLE_KEY, this.title); - nbt.setString(AUTHOR_KEY, this.author); - nbt.setString(GENERATION_KEY, this.generation.name()); + if (hasTitle()) { + nbt.setString(TITLE_KEY, this.title); + } + if (hasAuthor()) { + nbt.setString(AUTHOR_KEY, this.author); + } + if (hasGeneration()) { + nbt.setString(GENERATION_KEY, this.generation.name()); + } nbt.setBoolean(HAS_PAGES_KEY, this.hasPages); - nbt.setInt(BOOK_HASH_KEY, this.bookHash); + if (hasPages()) { + nbt.setInt(BOOK_HASH_KEY, this.bookHash); + } } @Nonnull public static BookModifier fromNBT(@Nonnull final NBTCompound nbt) { final var modifier = new BookModifier(); - modifier.title = nbt.getString(TITLE_KEY); - modifier.author = nbt.getString(AUTHOR_KEY); - modifier.generation = EnumUtils.getEnum(Generation.class, nbt.getString(GENERATION_KEY)); - modifier.hasPages = nbt.getBoolean(HAS_PAGES_KEY); - modifier.bookHash = nbt.getInt(BOOK_HASH_KEY); + if (nbt.hasKeyOfType(TITLE_KEY, NBTType.STRING)) { + modifier.setTitle(nbt.getString(TITLE_KEY)); + } + if (nbt.hasKeyOfType(AUTHOR_KEY, NBTType.STRING)) { + modifier.setTitle(nbt.getString(AUTHOR_KEY)); + } + if (nbt.hasKeyOfType(GENERATION_KEY, NBTType.STRING)) { + modifier.setGeneration(EnumUtils.getEnum(Generation.class, nbt.getString(GENERATION_KEY))); + } + modifier.setHasPages(nbt.getBoolean(HAS_PAGES_KEY)); + if (modifier.hasPages()) { + modifier.setBookHash(nbt.getInt(BOOK_HASH_KEY)); + } return modifier; } @@ -123,7 +134,7 @@ public final class BookModifier extends ModifierData { @Override public List getDisplayInfo() { - List lines = new ArrayList<>(); + final var lines = new ArrayList(2); lines.add(ChatColor.DARK_AQUA + "Author: " + ChatColor.GRAY + (hasAuthor() ? getAuthor() : "")); if (hasGeneration()) { lines.add(ChatColor.DARK_AQUA + "Generation: " + ChatColor.GRAY + getGeneration().name()); @@ -154,7 +165,7 @@ public final class BookModifier extends ModifierData { return this.title; } - public void setTitle(String title) { + public void setTitle(final String title) { this.title = title; } @@ -166,7 +177,7 @@ public final class BookModifier extends ModifierData { return this.author; } - public void setAuthor(String author) { + public void setAuthor(final String author) { this.author = author; } @@ -178,7 +189,7 @@ public final class BookModifier extends ModifierData { return this.generation; } - public void setGeneration(Generation generation) { + public void setGeneration(final Generation generation) { this.generation = generation; } @@ -186,7 +197,7 @@ public final class BookModifier extends ModifierData { return this.hasPages; } - public void setHasPages(boolean hasPages) { + public void setHasPages(final boolean hasPages) { this.hasPages = hasPages; } @@ -194,11 +205,11 @@ public final class BookModifier extends ModifierData { return this.bookHash; } - public void setBookHash(int bookHash) { + public void setBookHash(final int bookHash) { this.bookHash = bookHash; } - private static int bookHash(List pages) { + private static int bookHash(final List pages) { if (CollectionUtils.isEmpty(pages)) { return 0; }