001package net.tnemc.plugincore.sponge;
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.core.Platform;
022import net.tnemc.plugincore.core.PluginEngine;
023import net.tnemc.plugincore.core.api.CallbackProvider;
024import net.tnemc.plugincore.core.compatibility.ServerConnector;
025import net.tnemc.plugincore.core.io.message.TranslationProvider;
026import net.tnemc.plugincore.sponge.impl.SpongeLogProvider;
027import net.tnemc.plugincore.sponge.impl.SpongeServerProvider;
028import org.apache.logging.log4j.Logger;
029import org.spongepowered.api.ResourceKey;
030import org.spongepowered.plugin.PluginContainer;
031
032/**
033 * SpongePluginCore
034 *
035 * @author creatorfromhell
036 * @since 0.0.1.0
037 */
038public class SpongePluginCore extends PluginCore {
039
040
041  protected final PluginContainer container;
042
043  public SpongePluginCore(final PluginContainer container, final PluginEngine engine, final Logger log,
044                          final TranslationProvider provider, final CallbackProvider callbackProvider) {
045    this(container, engine, new SpongeServerProvider(), log, provider, callbackProvider);
046  }
047
048  public SpongePluginCore(final PluginContainer container, final PluginEngine engine, final ServerConnector connector,
049                          final Logger log, final TranslationProvider provider, final CallbackProvider callbackProvider) {
050    super(engine, connector, new SpongeLogProvider(log), provider, callbackProvider, Platform.SPONGE_8, "1.16.5");
051
052    setInstance(this);
053    this.container = container;
054    this.logger = new SpongeLogProvider(log);
055    engine.registerCommandHandler();
056    engine.registerCommands();
057  }
058
059  public static SpongePluginCore instance() {
060    return (SpongePluginCore)PluginCore.instance();
061  }
062
063  public PluginContainer getContainer() {
064    return container;
065  }
066
067  public static ResourceKey key(final String key) {
068    final String[] split = key.split("\\:");
069
070    final String namespace = (split.length >= 2)? split[0] : "minecraft";
071    final String value = (split.length >= 2)? split[1] : split[0];
072    return ResourceKey.of(namespace, value);
073  }
074}