From 74e8b6e1611224f278ede65a680737ddaee8a134 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Tue, 29 Jun 2021 20:53:45 +0100 Subject: Allow color string to be null (closes #197) --- .../quests/bukkit/config/BukkitQuestsConfig.java | 22 ++++++++++++---------- .../quests/bukkit/util/chat/Chat.java | 11 ++++++++--- .../quests/bukkit/util/chat/CodedColorAdapter.java | 7 +++++-- .../quests/bukkit/util/chat/ColorAdapter.java | 7 +++++-- .../quests/bukkit/util/chat/HexColorAdapter.java | 2 ++ 5 files changed, 32 insertions(+), 17 deletions(-) (limited to 'bukkit/src/main/java/com') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java index f0b62f1e..93c4aaf6 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/config/BukkitQuestsConfig.java @@ -4,6 +4,7 @@ import com.leonardobishop.quests.bukkit.hook.itemgetter.ItemGetter; import com.leonardobishop.quests.common.config.QuestsConfig; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.HashMap; @@ -46,47 +47,48 @@ public class BukkitQuestsConfig implements QuestsConfig { } @Override - public String getString(String path) { - return config.getString(path); + public @NotNull String getString(@NotNull String path) { + String value = config.getString(path); + return value == null ? path : value; } @Override - public String getString(String path, String def) { + public String getString(@NotNull String path, String def) { return config.getString(path, def); } @Override - public boolean getBoolean(String path) { + public boolean getBoolean(@NotNull String path) { return cachedBooleans.computeIfAbsent(path, s -> config.getBoolean(path)); } @Override - public boolean getBoolean(String path, boolean def) { + public boolean getBoolean(@NotNull String path, boolean def) { return cachedBooleans.computeIfAbsent(path, s -> config.getBoolean(path, def)); } @Override - public int getInt(String path) { + public int getInt(@NotNull String path) { return config.getInt(path); } @Override - public int getInt(String path, int def) { + public int getInt(@NotNull String path, int def) { return config.getInt(path, def); } @Override - public List getStringList(String path) { + public List getStringList(@NotNull String path) { return config.getStringList(path); } @Override - public List getStringList(String path, List def) { + public List getStringList(@NotNull String path, List def) { List list = config.getStringList(path); return list.isEmpty() ? def : list; } - public ItemStack getItem(String path) { + public ItemStack getItem(@NotNull String path) { return new ItemStack(cachedItemStacks.computeIfAbsent(path, s -> itemGetter.getItem(path, config))); } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java index a2125a74..9f81b08b 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/Chat.java @@ -3,6 +3,8 @@ package com.leonardobishop.quests.bukkit.util.chat; import com.leonardobishop.quests.common.config.ConfigProblem; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -22,11 +24,13 @@ public class Chat { } } - public static String color(String s) { + @Contract("null -> null") + public static String color(@Nullable String s) { return colorAdapter.color(s); } - public static List color(List s) { + @Contract("null -> null") + public static List color(@Nullable List s) { if (s == null || s.size() == 0) return s; List colored = new ArrayList<>(); @@ -36,7 +40,8 @@ public class Chat { return colored; } - public static String strip(String s) { + @Contract("null -> null") + public static String strip(@Nullable String s) { return colorAdapter.strip(s); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java index f71ffaa1..877a79e0 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/CodedColorAdapter.java @@ -1,16 +1,19 @@ package com.leonardobishop.quests.bukkit.util.chat; import org.bukkit.ChatColor; +import org.jetbrains.annotations.Nullable; public class CodedColorAdapter implements ColorAdapter { @Override - public String color(String s) { + public String color(@Nullable String s) { + if (s == null) return null; return ChatColor.translateAlternateColorCodes('&', s); } @Override - public String strip(String s) { + public String strip(@Nullable String s) { + if (s == null) return null; return ChatColor.stripColor(s); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java index 5d0ff6bc..b443c8b4 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/ColorAdapter.java @@ -1,9 +1,12 @@ package com.leonardobishop.quests.bukkit.util.chat; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.Nullable; + public interface ColorAdapter { - String color(String s); + @Contract("null -> null") String color(@Nullable String s); - String strip(String s); + @Contract("null -> null") String strip(@Nullable String s); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java index d506b466..25fbd697 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/HexColorAdapter.java @@ -11,6 +11,7 @@ public class HexColorAdapter implements ColorAdapter { @Override public String color(String s) { + if (s == null) return null; Matcher matcher = HEX_PATTERN.matcher(s); while (matcher.find()) { final ChatColor hexColor; @@ -29,6 +30,7 @@ public class HexColorAdapter implements ColorAdapter { @Override public String strip(String s) { + if (s == null) return null; return ChatColor.stripColor(s); } -- cgit v1.2.3-70-g09d2