fix: NPE on unavailable music discs on lower versions (#3475)

* fix: NPE on unavailable music discs

* chore: documentation for InventoryUtil changes

* fix: no need for additional decrement

* chore: address requested changes

* fix: prevent binary mismatch

Co-authored-by: Alex <mc.cache@web.de>
This commit is contained in:
Pierre Maurice Schwang
2022-02-04 18:21:43 +01:00
committed by GitHub
parent 0d78ba5f35
commit 543284e016
5 changed files with 87 additions and 11 deletions

View File

@ -42,6 +42,7 @@ import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.ItemMeta;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.util.ArrayList;
import java.util.List;
@ -50,11 +51,15 @@ import java.util.stream.IntStream;
@Singleton
public class BukkitInventoryUtil extends InventoryUtil {
private static ItemStack getItem(PlotItemStack item) {
private static @Nullable ItemStack getItem(PlotItemStack item) {
if (item == null) {
return null;
}
ItemStack stack = new ItemStack(BukkitAdapter.adapt(item.getType()), item.getAmount());
Material material = BukkitAdapter.adapt(item.getType());
if (material == null) {
return null;
}
ItemStack stack = new ItemStack(material, item.getAmount());
ItemMeta meta = null;
if (item.getName() != null) {
meta = stack.getItemMeta();
@ -104,14 +109,19 @@ public class BukkitInventoryUtil extends InventoryUtil {
}
@Override
public void setItem(PlotInventory inv, int index, PlotItemStack item) {
public boolean setItemChecked(PlotInventory inv, int index, PlotItemStack item) {
BukkitPlayer bp = (BukkitPlayer) inv.getPlayer();
InventoryView opened = bp.player.getOpenInventory();
if (!inv.isOpen()) {
return;
ItemStack stack = getItem(item);
if (stack == null) {
return false;
}
opened.setItem(index, getItem(item));
if (!inv.isOpen()) {
return true;
}
opened.setItem(index, stack);
bp.player.updateInventory();
return true;
}
@SuppressWarnings("deprecation") // Paper deprecation