From 0cb21d84683a14aca1d4dfd5eef8c922d34c055f Mon Sep 17 00:00:00 2001 From: Florian CUNY Date: Tue, 3 Jul 2018 11:19:48 +0200 Subject: [PATCH] Fixed NPE when the ItemParser returns null when the locale banner is an invalid String or does not exist --- .../tastybento/bskyblock/panels/LanguagePanel.java | 14 ++++++++++++-- .../us/tastybento/bskyblock/util/ItemParser.java | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java b/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java index 1cc2a9c0e..e725fa695 100644 --- a/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java +++ b/src/main/java/us/tastybento/bskyblock/panels/LanguagePanel.java @@ -2,6 +2,8 @@ package us.tastybento.bskyblock.panels; import java.util.Locale; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; import us.tastybento.bskyblock.BSkyBlock; import us.tastybento.bskyblock.api.panels.builders.PanelBuilder; import us.tastybento.bskyblock.api.panels.builders.PanelItemBuilder; @@ -23,8 +25,16 @@ public class LanguagePanel { .name(user.getTranslation("language.panel-title")); for (Locale locale : BSkyBlock.getInstance().getLocalesManager().getAvailableLocales(true)) { - PanelItemBuilder localeIcon = new PanelItemBuilder().icon(BSkyBlock.getInstance().getLocalesManager().getLanguages().get(locale).getBanner()) - .name(fancyLocaleDisplayName(user, locale)) + PanelItemBuilder localeIcon = new PanelItemBuilder(); + + ItemStack localeBanner = BSkyBlock.getInstance().getLocalesManager().getLanguages().get(locale).getBanner(); + if (localeBanner != null) { + localeIcon.icon(localeBanner); + } else { + localeIcon.icon(new ItemStack(Material.BANNER, 1)); // Set to a blank banner. + } + + localeIcon.name(fancyLocaleDisplayName(user, locale)) .clickHandler((panel, u, click, slot) -> { BSkyBlock.getInstance().getPlayers().setLocale(u.getUniqueId(), locale.toLanguageTag()); u.sendMessage("language.edited", "[lang]", fancyLocaleDisplayName(u, locale)); diff --git a/src/main/java/us/tastybento/bskyblock/util/ItemParser.java b/src/main/java/us/tastybento/bskyblock/util/ItemParser.java index 0d823927f..42a4653e0 100644 --- a/src/main/java/us/tastybento/bskyblock/util/ItemParser.java +++ b/src/main/java/us/tastybento/bskyblock/util/ItemParser.java @@ -147,10 +147,10 @@ public class ItemParser { return result; } else { - return new ItemStack(Material.BANNER, 1); // Return a blank banner + return null; } } catch (Exception e) { - return new ItemStack(Material.BANNER, 1); // Return a blank banner + return null; } } }