From c5526c86a2ffa25091ff5b0d9a82235314dc1a09 Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Mon, 9 Jun 2025 22:58:41 +0800 Subject: [PATCH 1/6] Implement multiverse plugin hook --- platforms/bukkit/common/build.gradle.kts | 7 +++- .../dfsek/terra/bukkit/TerraBukkitPlugin.java | 2 +- .../hooks/MultiverseGeneratorPluginHook.java | 42 +++++++++++++++++++ .../bukkit/listeners/CommonListener.java | 26 +++++++++++- 4 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java diff --git a/platforms/bukkit/common/build.gradle.kts b/platforms/bukkit/common/build.gradle.kts index fb3b1cc8fd..d6c87de8e9 100644 --- a/platforms/bukkit/common/build.gradle.kts +++ b/platforms/bukkit/common/build.gradle.kts @@ -1,5 +1,8 @@ repositories { - + maven { + name = "onarandombox" + url = uri("https://repo.onarandombox.com/content/groups/public/") + } } dependencies { @@ -7,6 +10,8 @@ dependencies { compileOnly("io.papermc.paper", "paper-api", Versions.Bukkit.paper) + compileOnly("org.mvplugins.multiverse.core", "multiverse-core", "5.0.0") + shadedApi("io.papermc", "paperlib", Versions.Bukkit.paperLib) shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java index 1ebd8de526..1b33a4837d 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/TerraBukkitPlugin.java @@ -87,7 +87,7 @@ public void onEnable() { return; } - Bukkit.getPluginManager().registerEvents(new CommonListener(), this); // Register master event listener + Bukkit.getPluginManager().registerEvents(new CommonListener(platform), this); // Register master event listener PaperUtil.checkPaper(this); } diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java new file mode 100644 index 0000000000..372e1162bb --- /dev/null +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java @@ -0,0 +1,42 @@ +package com.dfsek.terra.bukkit.hooks; + +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.api.registry.key.Keyed; + +import org.mvplugins.multiverse.core.world.generators.GeneratorPlugin; +import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull; +import org.mvplugins.multiverse.external.jetbrains.annotations.Nullable; + +import java.util.Collection; +import java.util.List; + +public final class MultiverseGeneratorPluginHook implements GeneratorPlugin { + + private final Platform platform; + + public MultiverseGeneratorPluginHook(Platform platform) { + this.platform = platform; + } + + @Override + public @NotNull Collection suggestIds(@Nullable String s) { + return platform.getConfigRegistry().entries().stream() + .map(Keyed::getID) + .toList(); + } + + @Override + public @Nullable Collection getExampleUsages() { + return List.of("/mv create example_world NORMAL -g Terra:OVERWORLD"); + } + + @Override + public @Nullable String getInfoLink() { + return "https://terra.polydev.org/"; + } + + @Override + public @NotNull String getPluginName() { + return "Terra"; + } +} diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index 84d836fd73..ede5c9e985 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -17,13 +17,37 @@ package com.dfsek.terra.bukkit.listeners; +import com.dfsek.terra.api.Platform; +import com.dfsek.terra.bukkit.hooks.MultiverseGeneratorPluginHook; + +import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginEnableEvent; +import org.mvplugins.multiverse.core.MultiverseCoreApi; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Listener for events on all implementations. */ public class CommonListener implements Listener { - public CommonListener() { + private static final Logger logger = LoggerFactory.getLogger(CommonListener.class); + private final Platform platform; + + public CommonListener(Platform platform) { + this.platform = platform; + } + + @EventHandler + public void onPluginEnable(PluginEnableEvent e) { + if(e.getPlugin().getName().equals("Multiverse-Core")) { + try { + MultiverseCoreApi.get().getGeneratorProvider() + .registerGeneratorPlugin(new MultiverseGeneratorPluginHook(platform)); + } catch(Exception ex) { + logger.error("Failed to register Terra generator plugin to multiverse.", ex); + } + } } } From 6722d22f724e3f91242d7f4747c77102b7640bbc Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Tue, 10 Jun 2025 12:05:46 +0800 Subject: [PATCH 2/6] Fix onarandombox repo url --- platforms/bukkit/common/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platforms/bukkit/common/build.gradle.kts b/platforms/bukkit/common/build.gradle.kts index d6c87de8e9..accc2be2af 100644 --- a/platforms/bukkit/common/build.gradle.kts +++ b/platforms/bukkit/common/build.gradle.kts @@ -1,7 +1,7 @@ repositories { maven { name = "onarandombox" - url = uri("https://repo.onarandombox.com/content/groups/public/") + url = uri("https://repo.onarandombox.com/multiverse-releases") } } From 70de38ffcb61ddcce85e9650b850916c6fdc76b5 Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Tue, 10 Jun 2025 12:05:59 +0800 Subject: [PATCH 3/6] Fix exception variable name --- .../com/dfsek/terra/bukkit/listeners/CommonListener.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index ede5c9e985..ca5c2cc738 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -40,13 +40,13 @@ public CommonListener(Platform platform) { } @EventHandler - public void onPluginEnable(PluginEnableEvent e) { - if(e.getPlugin().getName().equals("Multiverse-Core")) { + public void onPluginEnable(PluginEnableEvent event) { + if(event.getPlugin().getName().equals("Multiverse-Core")) { try { MultiverseCoreApi.get().getGeneratorProvider() .registerGeneratorPlugin(new MultiverseGeneratorPluginHook(platform)); - } catch(Exception ex) { - logger.error("Failed to register Terra generator plugin to multiverse.", ex); + } catch (Exception e) { + logger.error("Failed to register Terra generator plugin to multiverse.", e); } } } From 4fee8cdb2438b00ed7418c8c4acaa06ee81252d2 Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Tue, 10 Jun 2025 12:06:24 +0800 Subject: [PATCH 4/6] More example usages by iterating config pack --- .../bukkit/hooks/MultiverseGeneratorPluginHook.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java index 372e1162bb..a4a81d7f82 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/hooks/MultiverseGeneratorPluginHook.java @@ -8,7 +8,6 @@ import org.mvplugins.multiverse.external.jetbrains.annotations.Nullable; import java.util.Collection; -import java.util.List; public final class MultiverseGeneratorPluginHook implements GeneratorPlugin { @@ -27,7 +26,13 @@ public MultiverseGeneratorPluginHook(Platform platform) { @Override public @Nullable Collection getExampleUsages() { - return List.of("/mv create example_world NORMAL -g Terra:OVERWORLD"); + return platform.getConfigRegistry() + .entries() + .stream() + .map(Keyed::getID) + .map("/mv create example_world NORMAL -g Terra:%s"::formatted) + .limit(5) // reasonable amount + .toList(); } @Override From 124dbc88363a31bee0c12ad16cceb8b0bc1c5eee Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Fri, 13 Jun 2025 19:13:57 +0800 Subject: [PATCH 5/6] Improve error checking for multiverse hook --- .../com/dfsek/terra/bukkit/listeners/CommonListener.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index ca5c2cc738..a44ccbe176 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -43,9 +43,12 @@ public CommonListener(Platform platform) { public void onPluginEnable(PluginEnableEvent event) { if(event.getPlugin().getName().equals("Multiverse-Core")) { try { + Class.forName("org.mvplugins.multiverse.core.MultiverseCoreApi"); MultiverseCoreApi.get().getGeneratorProvider() .registerGeneratorPlugin(new MultiverseGeneratorPluginHook(platform)); - } catch (Exception e) { + } catch (ClassNotFoundException e) { + logger.debug("Multiverse v5 is not installed."); + } catch (IllegalStateException e) { logger.error("Failed to register Terra generator plugin to multiverse.", e); } } From 95172bfa7ebc6c0033241062f8f05762154cc45b Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Fri, 13 Jun 2025 22:33:41 +0800 Subject: [PATCH 6/6] Fix checkstyle for catch --- .../java/com/dfsek/terra/bukkit/listeners/CommonListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java index a44ccbe176..522a6aa2a5 100644 --- a/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java +++ b/platforms/bukkit/common/src/main/java/com/dfsek/terra/bukkit/listeners/CommonListener.java @@ -46,9 +46,9 @@ public void onPluginEnable(PluginEnableEvent event) { Class.forName("org.mvplugins.multiverse.core.MultiverseCoreApi"); MultiverseCoreApi.get().getGeneratorProvider() .registerGeneratorPlugin(new MultiverseGeneratorPluginHook(platform)); - } catch (ClassNotFoundException e) { + } catch(ClassNotFoundException e) { logger.debug("Multiverse v5 is not installed."); - } catch (IllegalStateException e) { + } catch(IllegalStateException e) { logger.error("Failed to register Terra generator plugin to multiverse.", e); } }