diff --git a/bukkit/loader/src/main/resources/translations/en.yml b/bukkit/loader/src/main/resources/translations/en.yml index 8091239fc..a4e97d55f 100644 --- a/bukkit/loader/src/main/resources/translations/en.yml +++ b/bukkit/loader/src/main/resources/translations/en.yml @@ -115,4 +115,7 @@ warning.config.model.generation.parent.invalid_resource_location: "Issue warning.config.emoji.lack_keywords: "Issue found in file - The emoji '' is missing the required 'keywords' argument." warning.config.emoji.duplicated: "Issue found in file - Duplicated emoji ''." warning.config.emoji.invalid_image: "Issue found in file - The emoji '' has an invalid 'image' argument ''." -warning.config.advancement.duplicated: "Issue found in file - Duplicated advancement ''." \ No newline at end of file +warning.config.advancement.duplicated: "Issue found in file - Duplicated advancement ''." +warning.config.host.lack_type: "Issue found in config.yml at 'resource-pack.delivery.hosting' - Missing require argument 'type' for host." +warning.config.host.invalid_type: "Issue found in config.yml at 'resource-pack.delivery.hosting' - Host 'type' [] is invalid. Please read https://mo-mi.gitbook.io/xiaomomi-plugins/craftengine/plugin-wiki/craftengine/resource-pack/host" +warning.config.host.external.lack_url: "Issue found in config.yml at 'resource-pack.delivery.hosting' - Missing require argument 'url' for external host." \ No newline at end of file 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 1b767469c..13972a2eb 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 @@ -21,6 +21,8 @@ import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.config.ConfigSectionParser; import net.momirealms.craftengine.core.plugin.config.StringKeyConstructor; import net.momirealms.craftengine.core.plugin.locale.I18NData; +import net.momirealms.craftengine.core.plugin.locale.LocalizedException; +import net.momirealms.craftengine.core.plugin.locale.TranslationManager; import net.momirealms.craftengine.core.sound.AbstractSoundManager; import net.momirealms.craftengine.core.sound.SoundEvent; import net.momirealms.craftengine.core.util.*; @@ -151,7 +153,12 @@ public abstract class AbstractPackManager implements PackManager { if (list == null || list.isEmpty()) { this.resourcePackHost = NoneHost.INSTANCE; } else { - this.resourcePackHost = ResourcePackHosts.fromMap(MiscUtils.castToMap(list.get(0), false)); + try { + this.resourcePackHost = ResourcePackHosts.fromMap(MiscUtils.castToMap(list.get(0), false)); + } catch (LocalizedException e) { + TranslationManager.instance().log(e.node(), e.arguments()); + this.resourcePackHost = NoneHost.INSTANCE; + } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/ResourcePackHosts.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/ResourcePackHosts.java index 821cf8302..dfba97896 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/ResourcePackHosts.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/ResourcePackHosts.java @@ -1,6 +1,8 @@ package net.momirealms.craftengine.core.pack.host; +import net.kyori.adventure.text.Component; import net.momirealms.craftengine.core.pack.host.impl.*; +import net.momirealms.craftengine.core.plugin.locale.LocalizedException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Holder; import net.momirealms.craftengine.core.registry.Registries; @@ -42,12 +44,12 @@ public class ResourcePackHosts { public static ResourcePackHost fromMap(Map map) { String type = (String) map.get("type"); if (type == null) { - throw new NullPointerException("host type cannot be null"); + throw new LocalizedException("warning.config.host.external.lack_url"); } Key key = Key.withDefaultNamespace(type, "craftengine"); ResourcePackHostFactory factory = BuiltInRegistries.RESOURCE_PACK_HOST_FACTORY.getValue(key); if (factory == null) { - throw new IllegalArgumentException("Unknown resource pack host type: " + type); + throw new LocalizedException("warning.config.host.invalid_type", type); } return factory.create(map); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java index 563bc1ca9..a57bae861 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/host/impl/ExternalHost.java @@ -4,6 +4,7 @@ import net.momirealms.craftengine.core.pack.host.ResourcePackDownloadData; import net.momirealms.craftengine.core.pack.host.ResourcePackHost; import net.momirealms.craftengine.core.pack.host.ResourcePackHostFactory; import net.momirealms.craftengine.core.pack.host.ResourcePackHosts; +import net.momirealms.craftengine.core.plugin.locale.LocalizedException; import net.momirealms.craftengine.core.util.Key; import java.nio.file.Path; @@ -46,7 +47,7 @@ public class ExternalHost implements ResourcePackHost { public ResourcePackHost create(Map arguments) { String url = (String) arguments.get("url"); if (url == null || url.isEmpty()) { - throw new IllegalArgumentException("'url' cannot be empty for external host"); + throw new LocalizedException("warning.config.host.external.lack_url"); } String uuid = (String) arguments.get("uuid"); if (uuid == null || uuid.isEmpty()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/event/Trigger.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/event/Trigger.java new file mode 100644 index 000000000..4eb301457 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/event/Trigger.java @@ -0,0 +1,15 @@ +package net.momirealms.craftengine.core.plugin.event; + +import net.momirealms.craftengine.core.util.Key; + +public class Trigger { + private final Key id; + + public Trigger(Key id) { + this.id = id; + } + + public Key id() { + return id; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/event/Triggers.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/event/Triggers.java new file mode 100644 index 000000000..474bf48a6 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/event/Triggers.java @@ -0,0 +1,21 @@ +package net.momirealms.craftengine.core.plugin.event; + +import net.momirealms.craftengine.core.util.Key; + +import java.util.HashMap; +import java.util.Map; + +public class Triggers { + public static final Map TRIGGERS = new HashMap<>(); + + public static final Trigger USE_ITEM = create(Key.of("use_item")); + public static final Trigger INTERACT = create(Key.of("interact")); + public static final Trigger CONSUME = create(Key.of("consume")); + public static final Trigger BREAK = create(Key.of("break")); + + private static Trigger create(Key id) { + Trigger trigger = new Trigger(id); + TRIGGERS.put(id, trigger); + return trigger; + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LocalizedException.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LocalizedException.java new file mode 100644 index 000000000..87c4dc8a3 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LocalizedException.java @@ -0,0 +1,20 @@ +package net.momirealms.craftengine.core.plugin.locale; + +public class LocalizedException extends RuntimeException { + private final String node; + private final String[] arguments; + + public LocalizedException(String node, String... arguments) { + super(node); + this.node = node; + this.arguments = arguments; + } + + public String[] arguments() { + return arguments; + } + + public String node() { + return node; + } +} diff --git a/gradle.properties b/gradle.properties index eb9d4ba4a..a6f31c8f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.50-beta.1 +project_version=0.0.50-beta.2 config_version=30 lang_version=7 project_group=net.momirealms