diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java index d70452e54..3ff93fd51 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockManager.java @@ -14,9 +14,9 @@ import java.util.Map; import java.util.Optional; public interface BlockManager extends Reloadable, ModelGenerator, ConfigSectionParser { - String CONFIG_SECTION_NAME = "blocks"; + String[] CONFIG_SECTION_NAME = new String[] {"blocks", "block"}; - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java index 965337964..e14dd5836 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureManager.java @@ -10,7 +10,7 @@ import java.util.Collection; import java.util.Optional; public interface FurnitureManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "furniture"; + String[] CONFIG_SECTION_NAME = new String[] { "furniture" }; String FURNITURE_ADMIN_NODE = "craftengine.furniture.admin"; void delayedLoad(); @@ -22,7 +22,7 @@ public interface FurnitureManager extends Reloadable, ConfigSectionParser { void delayedInit(); @Override - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/font/ImageManager.java b/core/src/main/java/net/momirealms/craftengine/core/font/ImageManager.java index eb2b5ab6d..357d80795 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/font/ImageManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/font/ImageManager.java @@ -12,7 +12,7 @@ import java.util.Optional; import java.util.function.BiFunction; public interface ImageManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "images"; + String[] CONFIG_SECTION_NAME = new String[] {"images", "image"}; Key DEFAULT_FONT = Key.of("minecraft:default"); String BYPASS_BOOK = "craftengine.filter.bypass.book"; String BYPASS_SIGN = "craftengine.filter.bypass.sign"; @@ -20,12 +20,18 @@ public interface ImageManager extends Reloadable, ConfigSectionParser { String BYPASS_COMMAND = "craftengine.filter.bypass.command"; String BYPASS_ANVIL = "craftengine.filter.bypass.anvil"; - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } void delayedLoad(); + void delayedInit(); + + default int loadingSequence() { + return LoadingSequence.FONT; + } + boolean isDefaultFontInUse(); boolean isIllegalCharacter(int codepoint); @@ -69,10 +75,4 @@ public interface ImageManager extends Reloadable, ConfigSectionParser { default String createRawOffsets(int offset) { return createOffsets(offset, (raw, font) -> raw); } - - default int loadingSequence() { - return LoadingSequence.FONT; - } - - void delayedInit(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/font/emoji/AbstractEmojiManager.java b/core/src/main/java/net/momirealms/craftengine/core/font/emoji/AbstractEmojiManager.java new file mode 100644 index 000000000..1b670a458 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/font/emoji/AbstractEmojiManager.java @@ -0,0 +1,13 @@ +package net.momirealms.craftengine.core.font.emoji; + +import net.momirealms.craftengine.core.plugin.CraftEngine; + +public abstract class AbstractEmojiManager implements EmojiManager { + protected CraftEngine plugin; + + public AbstractEmojiManager(CraftEngine plugin) { + this.plugin = plugin; + } + + +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/font/emoji/EmojiManager.java b/core/src/main/java/net/momirealms/craftengine/core/font/emoji/EmojiManager.java new file mode 100644 index 000000000..04c105dce --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/font/emoji/EmojiManager.java @@ -0,0 +1,17 @@ +package net.momirealms.craftengine.core.font.emoji; + +import net.momirealms.craftengine.core.pack.LoadingSequence; +import net.momirealms.craftengine.core.plugin.Reloadable; +import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser; + +public interface EmojiManager extends Reloadable, ConfigSectionParser { + String[] CONFIG_SECTION_NAME = new String[] {"emoji", "emojis"}; + + default String[] sectionId() { + return CONFIG_SECTION_NAME; + } + + default int loadingSequence() { + return LoadingSequence.EMOJI; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java index 3b2b406fb..0e9829e5e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java @@ -17,9 +17,9 @@ import javax.annotation.Nullable; import java.util.*; public interface ItemManager extends Reloadable, ModelGenerator, ConfigSectionParser { - String CONFIG_SECTION_NAME = "items"; + String[] CONFIG_SECTION_NAME = new String[] {"items", "item"}; - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeManager.java index ccdbcb228..6e5ef3d37 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeManager.java @@ -12,9 +12,9 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; public interface RecipeManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "recipes"; + String[] CONFIG_SECTION_NAME = new String[] {"recipes", "recipe"}; - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/VanillaLootManager.java b/core/src/main/java/net/momirealms/craftengine/core/loot/VanillaLootManager.java index 4fc6d33ee..97c2b0d59 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/VanillaLootManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/VanillaLootManager.java @@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser; import java.util.Optional; public interface VanillaLootManager extends ConfigSectionParser, Reloadable { - String CONFIG_SECTION_NAME = "vanilla-loots"; + String[] CONFIG_SECTION_NAME = new String[] {"vanilla-loots", "vanilla-loot", "loots", "loot"}; @Override default int loadingSequence() { @@ -15,7 +15,7 @@ public interface VanillaLootManager extends ConfigSectionParser, Reloadable { } @Override - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index 131012a03..c0fe2ed1c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -192,8 +192,12 @@ public abstract class AbstractPackManager implements PackManager { @Override public boolean registerConfigSectionParser(ConfigSectionParser parser) { - if (this.sectionParsers.containsKey(parser.sectionId())) return false; - this.sectionParsers.put(parser.sectionId(), parser); + for (String id : parser.sectionId()) { + if (this.sectionParsers.containsKey(id)) return false; + } + for (String id : parser.sectionId()) { + this.sectionParsers.put(id, parser); + } return true; } @@ -404,7 +408,7 @@ public abstract class AbstractPackManager implements PackManager { this.plugin.logger().info("Loaded packs. Took " + String.format("%.2f", ((o2 - o1) / 1_000_000.0)) + " ms"); for (Map.Entry> entry : this.cachedConfigs.entrySet()) { ConfigSectionParser parser = entry.getKey(); - boolean isTemplate = parser.sectionId().equals(TemplateManager.CONFIG_SECTION_NAME); + boolean isTemplate = parser.sectionId()[0].equals(TemplateManager.CONFIG_SECTION_NAME[0]); long t1 = System.nanoTime(); for (CachedConfig cached : entry.getValue()) { for (Map.Entry configEntry : cached.config().entrySet()) { @@ -420,16 +424,16 @@ public abstract class AbstractPackManager implements PackManager { parser.parseSection(cached.pack(), cached.filePath(), id, plugin.templateManager().applyTemplates(configSection1)); } } else { - this.plugin.logger().warn(cached.filePath(), "Configuration section is required for " + parser.sectionId() + "." + configEntry.getKey() + " - "); + this.plugin.logger().warn(cached.filePath(), "Configuration section is required for " + parser.sectionId()[0] + "." + configEntry.getKey() + " - "); } } } catch (Exception e) { - this.plugin.logger().warn(cached.filePath(), "Error loading " + parser.sectionId() + "." + key, e); + this.plugin.logger().warn(cached.filePath(), "Error loading " + parser.sectionId()[0] + "." + key, e); } } } long t2 = System.nanoTime(); - this.plugin.logger().info("Loaded " + parser.sectionId() + " in " + String.format("%.2f", ((t2 - t1) / 1_000_000.0)) + " ms"); + this.plugin.logger().info("Loaded " + parser.sectionId()[0] + " in " + String.format("%.2f", ((t2 - t1) / 1_000_000.0)) + " ms"); } this.cachedConfigs.clear(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java b/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java index 75754ff22..a7036e56f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/LoadingSequence.java @@ -13,4 +13,5 @@ public class LoadingSequence { public static final int SOUND = 90; public static final int JUKEBOX_SONG = 100; public static final int VANILLA_LOOTS = 110; + public static final int EMOJI = 120; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java index 4916f9568..ee8a19e90 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/PackManager.java @@ -16,8 +16,10 @@ public interface PackManager extends Reloadable { boolean unregisterConfigSectionParser(String id); - default boolean unregisterConfigSectionParser(ConfigSectionParser parser) { - return this.unregisterConfigSectionParser(parser.sectionId()); + default void unregisterConfigSectionParser(ConfigSectionParser parser) { + for (String id : parser.sectionId()) { + unregisterConfigSectionParser(id); + } } void delayedInit(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java index 25ea6843b..99292096b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/AbstractCommandManager.java @@ -75,7 +75,7 @@ public abstract class AbstractCommandManager implements CraftEngineCommandMan injectExceptionHandler(CommandExecutionException.class, MinecraftExceptionHandler.createDefaultCommandExecutionHandler(), StandardCaptionKeys.EXCEPTION_UNEXPECTED); } - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "rawtypes"}) private void injectExceptionHandler(Class type, MinecraftExceptionHandler.MessageFactory factory, Caption key) { getCommandManager().exceptionController().registerHandler(type, ctx -> { final @Nullable ComponentLike message = factory.message(captionFormatter, (ExceptionContext) ctx); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/parser/BlockStateParser.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/parser/BlockStateParser.java index ccd5998b0..6830d19bd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/parser/BlockStateParser.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/parser/BlockStateParser.java @@ -13,6 +13,7 @@ import org.incendo.cloud.parser.ArgumentParseResult; import org.incendo.cloud.parser.ArgumentParser; import org.incendo.cloud.parser.ParserDescriptor; import org.incendo.cloud.suggestion.BlockingSuggestionProvider; +import org.incendo.cloud.suggestion.Suggestion; public class BlockStateParser implements ArgumentParser, BlockingSuggestionProvider.Strings { @@ -36,9 +37,7 @@ public class BlockStateParser implements ArgumentParser stringSuggestions(@NonNull CommandContext commandContext, @NonNull CommandInput input) { - return CraftEngine.instance().blockManager().cachedSuggestions().stream().map(it -> { - return it.suggestion(); - }).toList(); + return CraftEngine.instance().blockManager().cachedSuggestions().stream().map(Suggestion::suggestion).toList(); } public static final class BlockStateParseException extends ParserException { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigSectionParser.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigSectionParser.java index dec473b6c..c847db6f5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigSectionParser.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/ConfigSectionParser.java @@ -9,7 +9,7 @@ import java.util.Map; public interface ConfigSectionParser extends Comparable { - String sectionId(); + String[] sectionId(); void parseSection(Pack pack, Path path, Key id, Map section); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java index b63811fc7..0c629784c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/TemplateManager.java @@ -11,13 +11,13 @@ import java.util.Map; import java.util.regex.Pattern; public interface TemplateManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "templates"; + String[] CONFIG_SECTION_NAME = new String[] {"templates", "template"}; Pattern PATTERN = Pattern.compile("\\{[^{}]+}"); String TEMPLATE = "template"; String OVERRIDES = "overrides"; String ARGUMENTS = "arguments"; - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManager.java index 9586fb7ad..8add417e5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/gui/category/ItemBrowserManager.java @@ -17,11 +17,11 @@ import java.util.TreeSet; import static java.util.Objects.requireNonNull; public interface ItemBrowserManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "categories"; + String[] CONFIG_SECTION_NAME = new String[] {"categories", "category"}; int MAX_RECIPE_DEPTH = 16; String GET_ITEM_PERMISSION = "craftengine.browser.get_item"; - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/ClientLangManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/ClientLangManager.java index cbc5458d2..7380b2f5c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/ClientLangManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/ClientLangManager.java @@ -38,7 +38,7 @@ public interface ClientLangManager extends Reloadable, ConfigSectionParser { Collectors.mapping(split -> split[1], Collectors.toUnmodifiableList()) )); - String CONFIG_SECTION_NAME = "lang"; + String[] CONFIG_SECTION_NAME = new String[] {"lang", "language", "languages"}; Map langData(); @@ -48,7 +48,7 @@ public interface ClientLangManager extends Reloadable, ConfigSectionParser { } @Override - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java index 2447e768f..721eeadf2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/TranslationManager.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Locale; public interface TranslationManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "i18n"; + String[] CONFIG_SECTION_NAME = new String[] {"i18n", "internationalization", "translation", "translations"}; static TranslationManager instance() { return TranslationManagerImpl.instance; @@ -44,7 +44,7 @@ public interface TranslationManager extends Reloadable, ConfigSectionParser { } @Override - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/sound/SoundManager.java b/core/src/main/java/net/momirealms/craftengine/core/sound/SoundManager.java index 2fa986932..230e03650 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/sound/SoundManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/sound/SoundManager.java @@ -9,7 +9,7 @@ import net.momirealms.craftengine.core.util.Key; import java.util.Map; public interface SoundManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "sounds"; + String[] CONFIG_SECTION_NAME = new String[] {"sounds", "sound"}; void delayedLoad(); @@ -23,7 +23,7 @@ public interface SoundManager extends Reloadable, ConfigSectionParser { } @Override - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/sound/song/JukeboxSongManager.java b/core/src/main/java/net/momirealms/craftengine/core/sound/song/JukeboxSongManager.java index f1f992411..52448fefd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/sound/song/JukeboxSongManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/sound/song/JukeboxSongManager.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.plugin.Reloadable; import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser; public interface JukeboxSongManager extends Reloadable, ConfigSectionParser { - String CONFIG_SECTION_NAME = "jukebox_songs"; + String[] CONFIG_SECTION_NAME = new String[] {"jukebox_songs", "song", "songs", "jukebox", "jukebox_song"}; @Override default int loadingSequence() { @@ -13,7 +13,7 @@ public interface JukeboxSongManager extends Reloadable, ConfigSectionParser { } @Override - default String sectionId() { + default String[] sectionId() { return CONFIG_SECTION_NAME; }