From 3a74406a0b92fe42c940ebff93c7e66d8cd115f0 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Wed, 4 Oct 2023 20:43:35 +0200 Subject: [PATCH] Fixed several NPEs related to Window titles --- .../xyz/xenondevs/inventoryaccess/InventoryAccess.java | 9 +++++---- .../component/AdventureComponentWrapper.java | 2 ++ .../component/BungeeComponentWrapper.java | 3 +++ .../java/xyz/xenondevs/invui/window/AbstractWindow.java | 2 +- .../xenondevs/invui/window/AnvilSingleWindowImpl.java | 2 +- .../xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java | 2 +- .../invui/window/CartographySingleWindowImpl.java | 2 +- .../invui/window/CartographySplitWindowImpl.java | 2 +- 8 files changed, 15 insertions(+), 9 deletions(-) diff --git a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/InventoryAccess.java b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/InventoryAccess.java index e5230f8..a87fe7c 100644 --- a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/InventoryAccess.java +++ b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/InventoryAccess.java @@ -8,6 +8,7 @@ import xyz.xenondevs.inventoryaccess.abstraction.inventory.CartographyInventory; import xyz.xenondevs.inventoryaccess.abstraction.util.InventoryUtils; import xyz.xenondevs.inventoryaccess.abstraction.util.ItemUtils; import xyz.xenondevs.inventoryaccess.abstraction.util.PlayerUtils; +import xyz.xenondevs.inventoryaccess.component.BungeeComponentWrapper; import xyz.xenondevs.inventoryaccess.component.ComponentWrapper; import xyz.xenondevs.inventoryaccess.util.ReflectionUtils; @@ -68,8 +69,8 @@ public class InventoryAccess { * types something in the renaming section of the anvil. * @return The {@link AnvilInventory} */ - public static AnvilInventory createAnvilInventory(@NotNull Player player, @NotNull ComponentWrapper title, @Nullable List<@NotNull Consumer> renameHandlers) { - return ReflectionUtils.construct(ANVIL_INVENTORY_CONSTRUCTOR, player, title, renameHandlers); + public static AnvilInventory createAnvilInventory(@NotNull Player player, @Nullable ComponentWrapper title, @Nullable List<@NotNull Consumer> renameHandlers) { + return ReflectionUtils.construct(ANVIL_INVENTORY_CONSTRUCTOR, player, title == null ? BungeeComponentWrapper.EMPTY : title, renameHandlers); } /** @@ -79,8 +80,8 @@ public class InventoryAccess { * @param title The inventory title * @return The {@link CartographyInventory} */ - public static CartographyInventory createCartographyInventory(@NotNull Player player, @NotNull ComponentWrapper title) { - return ReflectionUtils.construct(CARTOGRAPHY_INVENTORY_CONSTRUCTOR, player, title); + public static CartographyInventory createCartographyInventory(@NotNull Player player, @Nullable ComponentWrapper title) { + return ReflectionUtils.construct(CARTOGRAPHY_INVENTORY_CONSTRUCTOR, player, title == null ? BungeeComponentWrapper.EMPTY : title); } } diff --git a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java index 6b33dd2..9b24dbc 100644 --- a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java +++ b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/AdventureComponentWrapper.java @@ -9,6 +9,8 @@ import xyz.xenondevs.inventoryaccess.util.AdventureComponentUtils; public class AdventureComponentWrapper implements ComponentWrapper { + public static final AdventureComponentWrapper EMPTY = new AdventureComponentWrapper(Component.empty()); + private final Component component; public AdventureComponentWrapper(Component component) { diff --git a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/BungeeComponentWrapper.java b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/BungeeComponentWrapper.java index 9036f7e..51f8067 100644 --- a/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/BungeeComponentWrapper.java +++ b/inventoryaccess/inventory-access/src/main/java/xyz/xenondevs/inventoryaccess/component/BungeeComponentWrapper.java @@ -1,6 +1,7 @@ package xyz.xenondevs.inventoryaccess.component; import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.chat.ComponentSerializer; import org.jetbrains.annotations.NotNull; import xyz.xenondevs.inventoryaccess.component.i18n.BungeeComponentLocalizer; @@ -9,6 +10,8 @@ import xyz.xenondevs.inventoryaccess.util.BungeeComponentUtils; public class BungeeComponentWrapper implements ComponentWrapper { + public static final BungeeComponentWrapper EMPTY = new BungeeComponentWrapper(new BaseComponent[] {new TextComponent("")}); + private final BaseComponent[] components; public BungeeComponentWrapper(BaseComponent[] components) { diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/window/AbstractWindow.java b/invui-core/src/main/java/xyz/xenondevs/invui/window/AbstractWindow.java index 2c5e73b..59a95ee 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/window/AbstractWindow.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/window/AbstractWindow.java @@ -268,7 +268,7 @@ public abstract class AbstractWindow implements Window, GuiParent { InventoryAccess.getInventoryUtils().openCustomInventory( viewer, getInventories()[0], - title.localized(viewer) + title != null ? title.localized(viewer) : null ); } diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java b/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java index 11dcfde..7f9e011 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSingleWindowImpl.java @@ -25,7 +25,7 @@ final class AnvilSingleWindowImpl extends AbstractSingleWindow implements AnvilW boolean closable ) { super(player, title, gui, null, closable); - anvilInventory = InventoryAccess.createAnvilInventory(player, title.localized(player), renameHandlers); + anvilInventory = InventoryAccess.createAnvilInventory(player, title != null ? title.localized(player) : null, renameHandlers); inventory = anvilInventory.getBukkitInventory(); } diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java b/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java index b19ba2d..4d6c88f 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/window/AnvilSplitWindowImpl.java @@ -27,7 +27,7 @@ final class AnvilSplitWindowImpl extends AbstractSplitWindow implements AnvilWin ) { super(player, title, upperGui, lowerGui, null, closeable); - anvilInventory = InventoryAccess.createAnvilInventory(player, title.localized(player), renameHandlers); + anvilInventory = InventoryAccess.createAnvilInventory(player, title != null ? title.localized(player) : null, renameHandlers); upperInventory = anvilInventory.getBukkitInventory(); } diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySingleWindowImpl.java b/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySingleWindowImpl.java index 597e222..a45ea20 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySingleWindowImpl.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySingleWindowImpl.java @@ -33,7 +33,7 @@ final class CartographySingleWindowImpl extends AbstractSingleWindow implements super(player, title, createWrappingGui(gui), null, closeable); if (gui.getWidth() != 2 || gui.getHeight() != 1) throw new IllegalArgumentException("Gui has to be 2x1"); - cartographyInventory = InventoryAccess.createCartographyInventory(player, title.localized(player)); + cartographyInventory = InventoryAccess.createCartographyInventory(player, title != null ? title.localized(player) : null); inventory = cartographyInventory.getBukkitInventory(); resetMap(); diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySplitWindowImpl.java b/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySplitWindowImpl.java index e45ecf0..54562fb 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySplitWindowImpl.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/window/CartographySplitWindowImpl.java @@ -32,7 +32,7 @@ final class CartographySplitWindowImpl extends AbstractSplitWindow implements Ca ) { super(player, title, createWrappingGui(upperGui), lowerGui, null, closeable); - cartographyInventory = InventoryAccess.createCartographyInventory(player, title.localized(player)); + cartographyInventory = InventoryAccess.createCartographyInventory(player, title != null ? title.localized(player) : null); upperInventory = cartographyInventory.getBukkitInventory(); resetMap();