Added Multiverse-Core Hook

This commit is contained in:
Florian CUNY 2018-11-10 11:04:48 +01:00
parent 3f62e2f367
commit f8d1626ba5
3 changed files with 57 additions and 22 deletions

View File

@ -12,6 +12,7 @@ import world.bentobox.bentobox.api.configuration.WorldSettings;
import world.bentobox.bentobox.api.events.BentoBoxReadyEvent; import world.bentobox.bentobox.api.events.BentoBoxReadyEvent;
import world.bentobox.bentobox.api.user.Notifier; import world.bentobox.bentobox.api.user.Notifier;
import world.bentobox.bentobox.commands.BentoBoxCommand; import world.bentobox.bentobox.commands.BentoBoxCommand;
import world.bentobox.bentobox.hooks.MultiverseCoreHook;
import world.bentobox.bentobox.hooks.PlaceholderAPIHook; import world.bentobox.bentobox.hooks.PlaceholderAPIHook;
import world.bentobox.bentobox.hooks.VaultHook; import world.bentobox.bentobox.hooks.VaultHook;
import world.bentobox.bentobox.listeners.BannedVisitorCommands; import world.bentobox.bentobox.listeners.BannedVisitorCommands;
@ -109,15 +110,15 @@ public class BentoBox extends JavaPlugin {
new BentoBoxCommand(); new BentoBoxCommand();
// Start Island Worlds Manager // Start Island Worlds Manager
islandWorldManager = new IslandWorldManager(instance); islandWorldManager = new IslandWorldManager(this);
// Load schems manager // Load schems manager
schemsManager = new SchemsManager(instance); schemsManager = new SchemsManager(this);
// Locales manager must be loaded before addons // Locales manager must be loaded before addons
localesManager = new LocalesManager(instance); localesManager = new LocalesManager(this);
// Load addons. Addons may load worlds, so they must go before islands are loaded. // Load addons. Addons may load worlds, so they must go before islands are loaded.
addonsManager = new AddonsManager(instance); addonsManager = new AddonsManager(this);
addonsManager.loadAddons(); addonsManager.loadAddons();
// Enable addons // Enable addons
addonsManager.enableAddons(); addonsManager.enableAddons();
@ -135,7 +136,7 @@ public class BentoBox extends JavaPlugin {
islandsManager.save(true); islandsManager.save(true);
}, getSettings().getDatabaseBackupPeriod() * 20 * 60L, getSettings().getDatabaseBackupPeriod() * 20 * 60L); }, getSettings().getDatabaseBackupPeriod() * 20 * 60L, getSettings().getDatabaseBackupPeriod() * 20 * 60L);
// Make sure all flag listeners are ready. // Make sure all flag listeners are registered.
flagsManager.registerListeners(); flagsManager.registerListeners();
// Load metrics // Load metrics
@ -148,6 +149,10 @@ public class BentoBox extends JavaPlugin {
hooksManager = new HooksManager(this); hooksManager = new HooksManager(this);
hooksManager.registerHook(new VaultHook()); hooksManager.registerHook(new VaultHook());
hooksManager.registerHook(new PlaceholderAPIHook()); hooksManager.registerHook(new PlaceholderAPIHook());
hooksManager.registerHook(new MultiverseCoreHook());
// Make sure all worlds are already registered to Multiverse.
islandWorldManager.registerWorldsToMultiverse();
// Setup the Placeholders manager // Setup the Placeholders manager
placeholdersManager = new PlaceholdersManager(this); placeholdersManager = new PlaceholdersManager(this);

View File

@ -0,0 +1,36 @@
package world.bentobox.bentobox.hooks;
import org.bukkit.Bukkit;
import org.bukkit.World;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.hooks.Hook;
/**
* Provides implementation and interfacing to interact with Multiverse.
*
* @author Poslovitch
*/
public class MultiverseCoreHook extends Hook {
private static final String MULTIVERSE_SET_GENERATOR = "mv modify set generator ";
private static final String MULTIVERSE_IMPORT = "mv import ";
public MultiverseCoreHook() {
super("Multiverse-Core");
}
public void registerWorld(World world) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), MULTIVERSE_IMPORT + world.getName() + " normal -g " + BentoBox.getInstance().getName());
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), MULTIVERSE_SET_GENERATOR + BentoBox.getInstance().getName() + " " + world.getName());
}
@Override
public boolean hook() {
return true; // The hook process shouldn't fail
}
@Override
public String getFailureCause() {
return null; // The hook process shouldn't fail
}
}

View File

@ -21,6 +21,7 @@ import world.bentobox.bentobox.api.addons.Addon;
import world.bentobox.bentobox.api.configuration.WorldSettings; import world.bentobox.bentobox.api.configuration.WorldSettings;
import world.bentobox.bentobox.api.flags.Flag; import world.bentobox.bentobox.api.flags.Flag;
import world.bentobox.bentobox.api.user.User; import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.hooks.MultiverseCoreHook;
import world.bentobox.bentobox.lists.Flags; import world.bentobox.bentobox.lists.Flags;
import world.bentobox.bentobox.util.Util; import world.bentobox.bentobox.util.Util;
@ -32,8 +33,6 @@ import world.bentobox.bentobox.util.Util;
*/ */
public class IslandWorldManager { public class IslandWorldManager {
private static final String MULTIVERSE_SET_GENERATOR = "mv modify set generator ";
private static final String MULTIVERSE_IMPORT = "mv import ";
private static final String NETHER = "_nether"; private static final String NETHER = "_nether";
private static final String THE_END = "_the_end"; private static final String THE_END = "_the_end";
@ -50,23 +49,18 @@ public class IslandWorldManager {
worldSettings = new HashMap<>(); worldSettings = new HashMap<>();
} }
/** public void registerWorldsToMultiverse() {
* Registers a world with Multiverse if the plugin exists worlds.forEach((world, s) -> registerToMultiverse(world));
*
* @param world
* - world
*/
private void multiverseReg(World world) {
if (!isUseOwnGenerator(world) && Bukkit.getServer().getPluginManager().isPluginEnabled("Multiverse-Core")) {
Bukkit.getScheduler().runTask(plugin,
() -> Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(),
MULTIVERSE_IMPORT + world.getName() + " normal -g " + plugin.getName()));
Bukkit.getScheduler().runTask(plugin, () -> {
if (!Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(),
MULTIVERSE_SET_GENERATOR + plugin.getName() + " " + world.getName())) {
plugin.logError("Multiverse is out of date! - Upgrade to latest version!");
} }
});
/**
* Registers a world with Multiverse if Multiverse is available.
*
* @param world the World to register
*/
private void registerToMultiverse(World world) {
if (!isUseOwnGenerator(world)) {
plugin.getHooks().getHook("Multiverse-Core").ifPresent(hook -> ((MultiverseCoreHook) hook).registerWorld(world));
} }
} }
@ -145,7 +139,7 @@ public class IslandWorldManager {
worlds.put(world, friendlyName); worlds.put(world, friendlyName);
worldSettings.put(world, settings); worldSettings.put(world, settings);
// Call Multiverse // Call Multiverse
multiverseReg(world); registerToMultiverse(world);
// Set default island settings // Set default island settings
Flags.values().stream().filter(f -> f.getType().equals(Flag.Type.PROTECTION)) Flags.values().stream().filter(f -> f.getType().equals(Flag.Type.PROTECTION))
.forEach(f -> settings.getDefaultIslandFlags().putIfAbsent(f, f.getDefaultRank())); .forEach(f -> settings.getDefaultIslandFlags().putIfAbsent(f, f.getDefaultRank()));