mirror of
https://github.com/CivMC/Civ.git
synced 2026-07-18 00:20:44 +00:00
Update BookModifier
This commit is contained in:
@@ -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<String> getDisplayInfo() {
|
||||
List<String> lines = new ArrayList<>();
|
||||
final var lines = new ArrayList<String>(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<String> pages) {
|
||||
private static int bookHash(final List<String> pages) {
|
||||
if (CollectionUtils.isEmpty(pages)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user