package world.bentobox.greenhouses; import java.util.ArrayList; import java.util.List; import org.bukkit.Material; import org.bukkit.World; import world.bentobox.bentobox.api.addons.Addon; import world.bentobox.bentobox.api.configuration.Config; import world.bentobox.bentobox.api.flags.Flag; import world.bentobox.greenhouses.managers.GreenhouseManager; import world.bentobox.greenhouses.managers.RecipeManager; import world.bentobox.greenhouses.ui.user.UserCommand; /** * @author tastybento * */ public class Greenhouses extends Addon { private GreenhouseManager manager; private Settings settings; private RecipeManager recipes; private final List activeWorlds = new ArrayList<>(); public final static Flag GREENHOUSES = new Flag.Builder("GREENHOUSE", Material.GREEN_STAINED_GLASS).build(); /* (non-Javadoc) * @see world.bentobox.bentobox.api.addons.Addon#onEnable() */ @Override public void onEnable() { saveDefaultConfig(); this.saveResource("biomes.yml", false); settings = new Config<>(this, Settings.class).loadConfigObject(); if (settings == null) { // Settings did no load correctly. Disable. logError("Settings did not load correctly - disabling Greenhouses - please check config.yml"); this.setState(State.DISABLED); return; } // Load recipes recipes = new RecipeManager(this); // Load manager manager = new GreenhouseManager(this); // Register commands for getPlugin().getAddonsManager().getGameModeAddons().stream() .filter(gm -> settings.getGameModes().contains(gm.getDescription().getName())) .forEach(gm -> { // Register command gm.getPlayerCommand().ifPresent(playerCmd -> new UserCommand(this, playerCmd)); // Store active world activeWorlds.add(gm.getOverWorld()); }); // Register greenhouse manager this.registerListener(manager); // Register protection flag with BentoBox getPlugin().getFlagsManager().registerFlag(GREENHOUSES); } /* (non-Javadoc) * @see world.bentobox.bentobox.api.addons.Addon#onDisable() */ @Override public void onDisable() { if (manager != null) { manager.saveGreenhouses(); manager.getEcoMgr().cancel(); } if (settings != null) { new Config<>(this, Settings.class).saveConfigObject(settings); } } /** * @return the manager */ public GreenhouseManager getManager() { return manager; } /** * @return Settings */ public Settings getSettings() { return settings; } /** * @return the recipes */ public RecipeManager getRecipes() { return recipes; } public List getActiveWorlds() { return activeWorlds; } }