001/* 002 * This file is part of Baritone. 003 * 004 * Baritone is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU Lesser General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * Baritone is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU Lesser General Public License for more details. 013 * 014 * You should have received a copy of the GNU Lesser General Public License 015 * along with Baritone. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package baritone.api; 019 020import baritone.api.utils.SettingsUtil; 021 022import java.util.Iterator; 023import java.util.ServiceLoader; 024 025/** 026 * Exposes the {@link IBaritoneProvider} instance and the {@link Settings} instance for API usage. 027 * 028 * @author Brady 029 * @since 9/23/2018 030 */ 031public final class BaritoneAPI { 032 033 private static final IBaritoneProvider provider; 034 private static final Settings settings; 035 036 static { 037 settings = new Settings(); 038 SettingsUtil.readAndApply(settings); 039 040 ServiceLoader<IBaritoneProvider> baritoneLoader = ServiceLoader.load(IBaritoneProvider.class); 041 Iterator<IBaritoneProvider> instances = baritoneLoader.iterator(); 042 provider = instances.next(); 043 } 044 045 public static IBaritoneProvider getProvider() { 046 return BaritoneAPI.provider; 047 } 048 049 public static Settings getSettings() { 050 return BaritoneAPI.settings; 051 } 052}