mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-01 23:47:50 +00:00
Merge pull request #506 from benwoo1110/feat/multiverse-hook
Implement multiverse generator plugin hook
This commit is contained in:
commit
1d95e7a87d
@ -1,5 +1,8 @@
|
|||||||
repositories {
|
repositories {
|
||||||
|
maven {
|
||||||
|
name = "onarandombox"
|
||||||
|
url = uri("https://repo.onarandombox.com/multiverse-releases")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@ -7,6 +10,8 @@ dependencies {
|
|||||||
|
|
||||||
compileOnly("io.papermc.paper", "paper-api", Versions.Bukkit.paper)
|
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("io.papermc", "paperlib", Versions.Bukkit.paperLib)
|
||||||
|
|
||||||
shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava)
|
shadedApi("com.google.guava", "guava", Versions.Libraries.Internal.guava)
|
||||||
|
@ -87,7 +87,7 @@ public class TerraBukkitPlugin extends JavaPlugin {
|
|||||||
return;
|
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);
|
PaperUtil.checkPaper(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
public final class MultiverseGeneratorPluginHook implements GeneratorPlugin {
|
||||||
|
|
||||||
|
private final Platform platform;
|
||||||
|
|
||||||
|
public MultiverseGeneratorPluginHook(Platform platform) {
|
||||||
|
this.platform = platform;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Collection<String> suggestIds(@Nullable String s) {
|
||||||
|
return platform.getConfigRegistry().entries().stream()
|
||||||
|
.map(Keyed::getID)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Collection<String> getExampleUsages() {
|
||||||
|
return platform.getConfigRegistry()
|
||||||
|
.entries()
|
||||||
|
.stream()
|
||||||
|
.map(Keyed::getID)
|
||||||
|
.map("/mv create example_world NORMAL -g Terra:%s"::formatted)
|
||||||
|
.limit(5) // reasonable amount
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable String getInfoLink() {
|
||||||
|
return "https://terra.polydev.org/";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getPluginName() {
|
||||||
|
return "Terra";
|
||||||
|
}
|
||||||
|
}
|
@ -17,13 +17,40 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.bukkit.listeners;
|
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.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.
|
* Listener for events on all implementations.
|
||||||
*/
|
*/
|
||||||
public class CommonListener implements Listener {
|
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 event) {
|
||||||
|
if(event.getPlugin().getName().equals("Multiverse-Core")) {
|
||||||
|
try {
|
||||||
|
Class.forName("org.mvplugins.multiverse.core.MultiverseCoreApi");
|
||||||
|
MultiverseCoreApi.get().getGeneratorProvider()
|
||||||
|
.registerGeneratorPlugin(new MultiverseGeneratorPluginHook(platform));
|
||||||
|
} catch(ClassNotFoundException e) {
|
||||||
|
logger.debug("Multiverse v5 is not installed.");
|
||||||
|
} catch(IllegalStateException e) {
|
||||||
|
logger.error("Failed to register Terra generator plugin to multiverse.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user