Changes unsign behavior to work on 1.21
This commit is contained in:
parent
6b4e87d33a
commit
0f76c8f869
@ -12,11 +12,13 @@ import org.bukkit.command.TabExecutor;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.BookMeta;
|
import org.bukkit.inventory.meta.BookMeta;
|
||||||
|
import org.bukkit.inventory.meta.WritableBookMeta;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command executor for the unsign command
|
* Command executor for the unsign command
|
||||||
@ -49,21 +51,36 @@ public class CommandUnSign implements TabExecutor {
|
|||||||
*/
|
*/
|
||||||
public void unSignHeldBook(Player player, boolean mainHand) {
|
public void unSignHeldBook(Player player, boolean mainHand) {
|
||||||
//Get the old book
|
//Get the old book
|
||||||
BookMeta oldBook = InventoryHelper.getHeldBookMetadata(player, mainHand);
|
BookMeta oldMetadata = InventoryHelper.getHeldBookMetadata(player, mainHand);
|
||||||
ItemStack heldBook = InventoryHelper.getHeldBook(player, mainHand);
|
ItemStack heldBook = InventoryHelper.getHeldBook(player, mainHand);
|
||||||
|
|
||||||
//Only allow the owner to un-sign the book
|
//Only allow the owner to un-sign the book
|
||||||
if (BooksWithoutBordersConfig.getAuthorOnlyUnsign() && !player.hasPermission("bookswithoutborders.bypassAuthorOnlyUnsign")) {
|
if (BooksWithoutBordersConfig.getAuthorOnlyUnsign() && !player.hasPermission("bookswithoutborders.bypassAuthorOnlyUnsign")) {
|
||||||
if (BookHelper.isNotAuthor(player, Objects.requireNonNull(oldBook))) {
|
if (BookHelper.isNotAuthor(player, Objects.requireNonNull(oldMetadata))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//UnSign the book
|
WritableBookMeta newMetadata = (BookMeta) BooksWithoutBorders.getItemFactory().getItemMeta(Material.WRITABLE_BOOK);
|
||||||
ItemStack newBook = new ItemStack(Material.WRITABLE_BOOK);
|
if (newMetadata == null) {
|
||||||
newBook.setAmount(heldBook.getAmount());
|
BooksWithoutBorders.getInstance().getLogger().log(Level.SEVERE, "Unable to create writable book metadata");
|
||||||
newBook.setItemMeta(oldBook);
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create a new unsigned book with the same data
|
||||||
|
ItemStack newBook = new ItemStack(Material.WRITABLE_BOOK, heldBook.getAmount());
|
||||||
|
if (oldMetadata.hasLore()) {
|
||||||
|
List<String> oldLore = oldMetadata.getLore();
|
||||||
|
if (oldLore != null) {
|
||||||
|
List<String> newLore = new ArrayList<>(oldLore);
|
||||||
|
newLore.remove(0);
|
||||||
|
newMetadata.setLore(newLore);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
newMetadata.setPages(oldMetadata.getPages());
|
||||||
|
newBook.setItemMeta(newMetadata);
|
||||||
|
|
||||||
|
// Give the player the new book
|
||||||
InventoryHelper.replaceHeldItem(player, newBook, mainHand);
|
InventoryHelper.replaceHeldItem(player, newBook, mainHand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user