GreatPlugins
  • GreatCombat
    • Начало работы
    • Права и команды
    • Действия
    • Задержки и запреты
    • Поверапы и телепортации
    • Остальные настройки
  • Использование API
Powered by GitBook
On this page

Использование API

Создаём папку libs в папке вашего проекта и перетаскиваем туда плагин.

Добавляем зависимость локально

// Maven
<dependency>
  <artifactId>GreatCombat</artifactId>
  <groupId>dev.enco</groupId>
  <scope>system</scope>
  <version>1.6</version>
  <systemPath>${basedir}/libs/GreatCombat-1.6.jar</systemPath>
</dependency>

// Gradle
dependencies {
    implementation files('libs/GreatCombat-1.6.jar')
}

Далее добавляем плагин в зависимости в plugin.yml

# Если хотим сделать зависимость обязательной.
depend:
  - GreatCombat
  
# Если хотим сделать зависимость необязательной
softdepend:
  - GreatCombat

Получаем экземпляр CombatManager

private CombatManager combatManager;

@Override
public void onEnable() {
    if (getServer().getPluginManager().isPluginEnabled("GreatCombat")) {
        combatManager = GreatCombat.getInstance().getCombatManager();
    } else {
        Logger.warn("GreatCombat отсутствует!");
    }
}

public CombatManager getCombatManager() {
    return combatManager;
}

Пример использования (Не имеет смысла, просто показаны возможные методы)

void someAction(SomeEvent event) {
    Player player = event.getPlayer();
    CombatManager cm = yourPlugin.getCombatManager();
    UUID uuid = player.getUniqueId();
    // Проверяем находится ли игрок в режиме боя
    if (cm.isInCombat(uuid) {
        // do something
    }
    User user = cm.getUser(uuid);
    // Нужно проверять на null
    if (user != null) {
        // Обновляем таймер игрока
        long now = System.currentTimeMillis();
        user.refresh(now);
        Player player2 = event.getPlayer2();
        User user2 = cm.getUser(player2.getUniqueId());
        if (user2 == null) return;
        // Проверяем, сражаются ли уже игроки
        if (!user.containsOpponent(user2)) {
            user2.refresh(now);
            // Останавливаем режим боя
            cm.stopCombat(user);
        } else {
            // Начинаем режим боя, Cancellable может быть null
            cm.startCombat(player, player2, null);
        }
    }
}

Пример 2: Создаём свой ServerManager

public class GreatEssentials implements ServerManager, Listener {
    private GreatEssentialsAPI essentials;

    @Override
    public void setup() {
        Logger.info("Подключаемся к GreatEssentials");
        long start = System.currentTimeMillis();
        try {
            essentials = GreatEssentialsAPI.getInstance();
            setupFlyDisabler();
            setupFlyChecker();
            setupGodDisabler();
            setupGodChecker();
            setupGamemodeChecker();
            setupGamemodeDisabler();
            setupVanishChecker();
            setupVanishDisabler();
            setupWalkspeedChecker();
            setupWalkspeedDisabler();
            Logger.info("GreatEssentials подключен за " + (System.currentTimeMillis() - start) + " ms.");
        } catch (Exception e) {
            Logger.error("Unable to load GreatEssentials " + e);
        }
    }
    
    // Нужно инициализировать все

    private PowerupDisabler flyDisabler;

    private void setupFlyDisabler() {
        this.flyDisabler = player -> {
            // some disabler
        };
    }

    @Override
    public PowerupDisabler flyDisabler() {
        return this.flyDisabler;
    }


    private PowerupChecker flyChecker;

    private void setupFlyChecker() {
        this.flyChecker = player -> {
            // some checker
        };
    }

    @Override
    public PowerupChecker flyChecker() {
        return this.flyChecker;
    }

    @EventHandler
    public void listenTeleports(GreatEssentialsTeleportEvent e) {
        if (!ConfigManager.isTeleportEnable()) {
            // some teleport listener
        }
    }
}

void someVoid() {
    ServerManager manager = new GreatEssentials();
    manager.setup();
    PowerupsManager.setServerManager(manager);
}

Нужно больше примеров, остались вопросы? Пишите в обсуждения ресурса.

PreviousОстальные настройки

Last updated 21 days ago