Merge pull request #472 from BentoBoxWorld/gamemode-enhancements

Enable main player and admin command declaration
This commit is contained in:
Florian CUNY 2019-01-16 18:58:56 +01:00 committed by GitHub
commit 3810ac3524
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 2 deletions

View File

@ -1,22 +1,41 @@
package world.bentobox.bentobox.api.addons;
import java.util.Optional;
import org.bukkit.Location;
import org.bukkit.World;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.configuration.WorldSettings;
import world.bentobox.bentobox.util.Util;
/**
* Defines the addon as a game mode.
* A game mode creates worlds, registers world settings and has schems in a jar folder.
* @author tastybento, Postlovitch
*
* @author tastybento, Poslovitch
*/
public abstract class GameModeAddon extends Addon {
protected World islandWorld;
@Nullable
protected World netherWorld;
@Nullable
protected World endWorld;
/**
* Main player command. Addons can use this hook to into this command.
* @since 1.1
*/
@Nullable
protected CompositeCommand playerCommand;
/**
* Main admin command. Addons can use this hook to into this command.
* @since 1.1
*/
@Nullable
protected CompositeCommand adminCommand;
/**
* Make the worlds for this GameMode in this method. BentoBox will call it
@ -50,6 +69,7 @@ public abstract class GameModeAddon extends Addon {
/**
* @return nether world, or null if it does not exist
*/
@Nullable
public World getNetherWorld() {
return netherWorld;
}
@ -57,9 +77,26 @@ public abstract class GameModeAddon extends Addon {
/**
* @return end world, or null if it does not exist
*/
@Nullable
public World getEndWorld() {
return endWorld;
}
/**
* @return the main player command for this Game Mode Addon
* @since 1.1
*/
@NonNull
public Optional<CompositeCommand> getPlayerCommand() {
return Optional.ofNullable(playerCommand);
}
/**
* @return the main admin command for this Game Mode Addon
* @since 1.1
*/
@NonNull
public Optional<CompositeCommand> getAdminCommand() {
return Optional.ofNullable(adminCommand);
}
}

View File

@ -239,6 +239,17 @@ public class AddonsManager {
return addons;
}
/**
* @return List of enabled game mode addons
* @since 1.1
*/
public List<GameModeAddon> getGameModeAddons() {
return getEnabledAddons().stream()
.filter(GameModeAddon.class::isInstance)
.map(GameModeAddon.class::cast)
.collect(Collectors.toList());
}
/**
* Gets the list of Addons that are loaded.
* @return list of loaded Addons.