001package net.tnemc.plugincore.bukkit;
002/*
003 * The New Plugin Core
004 * Copyright (C) 2022 - 2024 Daniel "creatorfromhell" Vidmar
005 *
006 * This program is free software: you can redistribute it and/or modify
007 * it under the terms of the GNU Affero General Public License as published by
008 * the Free Software Foundation, either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * This program is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU Affero General Public License for more details.
015 *
016 * You should have received a copy of the GNU Affero General Public License
017 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
018 */
019
020import net.tnemc.plugincore.PluginCore;
021import net.tnemc.plugincore.bukkit.impl.BukkitLogProvider;
022import net.tnemc.plugincore.bukkit.impl.BukkitServerProvider;
023import net.tnemc.plugincore.core.Platform;
024import net.tnemc.plugincore.core.PluginEngine;
025import net.tnemc.plugincore.core.api.CallbackProvider;
026import net.tnemc.plugincore.core.compatibility.ServerConnector;
027import net.tnemc.plugincore.core.io.message.TranslationProvider;
028import org.bukkit.Bukkit;
029import org.bukkit.plugin.java.JavaPlugin;
030
031/**
032 * BukkitPluginCore
033 *
034 * @author creatorfromhell
035 * @since 0.0.1.0
036 */
037public class BukkitPluginCore extends PluginCore {
038
039  private final JavaPlugin plugin;
040  public BukkitPluginCore(final JavaPlugin plugin, final PluginEngine engine, final TranslationProvider provider,
041                          final CallbackProvider callbackProvider) {
042    this(plugin, engine, new BukkitServerProvider(), provider, callbackProvider);
043  }
044
045  public BukkitPluginCore(final JavaPlugin plugin, final PluginEngine engine, final ServerConnector connector,
046                          final TranslationProvider provider, final CallbackProvider callbackProvider) {
047    super(engine, connector, new BukkitLogProvider(plugin.getLogger()), provider, callbackProvider, Platform.BUKKIT,
048            Bukkit.getServer().getBukkitVersion().split("-")[0]);
049
050    setInstance(this);
051    this.plugin = plugin;
052  }
053
054  /**
055   * Used to enable the core. This should contain things that can't be initialized until after the
056   * server software is operational.
057   */
058  @Override
059  protected void onEnable() {
060    this.directory = plugin.getDataFolder();
061
062    super.onEnable();
063  }
064
065  public static BukkitPluginCore instance() {
066    return (BukkitPluginCore)PluginCore.instance();
067  }
068
069  public JavaPlugin getPlugin() {
070    return plugin;
071  }
072}