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

Шаг 1. Подключаем плагин к вашему проекту.

// Maven
<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>

<dependency>
    <groupId>com.github.Enc0urager</groupId>
    <artifactId>GreatCombat</artifactId>
    <version>{version}</version>
    <scope>provided</scope>
</dependency>

// Gradle
dependencyResolutionManagement {
	repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
	repositories {
		mavenCentral()
		maven { url 'https://jitpack.io' }
	}
}

dependencies {
        implementation 'com.github.Enc0urager:GreatCombat:{version}'
}

Актуальную версию можно посмотреть здесь - https://jitpack.io/#Enc0urager/GreatCombat

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

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

Шаг 3. Использование апи.

Над всеми классами и методами присутствует краткое объяснение их функционала. Ниже будут приведены несколько примеров работы с ключевым функционалом плагина.

Пример 1. Использование CombatManager и User

Шаг 1. Получаем экземпляр 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;
}

Шаг 2. Основные методы CombatManager

Проверяем, находится ли игрок, с переданным UUID в режиме боя.
CombatManager#isInCombat(UUID uuid)

Начинаем бой между 2-мя игроками с вызовом CombatPreStartEvent если оба игрока не в бою
И ивент, наследующий CombatDamageEvent
CombatManager#startCombat(Player damager, Player target)

Начинаем бой для 1 игрока без вызова ивентов. Не будут происходить PreStart проверки.
CombatManager#startSingle(Player player)

Останавливает режим боя пользователю с помощью вызова CombatEndEvent
CombatManager#stopCombat(User user)

Пытается получить пользователя из списка пользователей с активным режимом боя
Если пользователь не найден, создаёт нового пользователя и помещает его в список
CombatManager#getOrCreateUser(UUID uuid)

Пытается получить пользователя из списка, если не найден - возвращает null
СombatManager#getUser(UUID uuid)

Шаг 3. Основные методы User

Проверяем, являются ли пользователи оппонентами
User#containsOpponent(User user)
Добавляем пользователя в опоненты
User#addOpponent(User opponent)
Убираем пользователя из опонентов
User#removeOpponent(User opponent)
Начинаем заного таймер пользователя без вызова ивентов престарта и старта
User#refresh(long start)

Пример 2: Имплементируем свой ServerManager

Шаг 1. Создаём класс, наследующий интерфейс ServerManager

public class GreatEssentials implements ServerManager {
    private GreatEssentialsAPI essentials;

    @Override
    public void setup() {
        Logger.info("Подключаемся к GreatEssentials");
        long start = System.currentTimeMillis();
        try {
            essentials = GreatEssentialsAPI.getInstance();
            setupFlyPowerup();
            setupGodPowerup();
            setupGamemodePowerup();
            setupVanishPowerup();
            setupWalkspeedPowerup();
            Logger.info("GreatEssentials подключен за " + (System.currentTimeMillis() - start) + " ms.");
        } catch (Exception e) {
            Logger.error("Unable to load GreatEssentials " + e);
        }
    }
    
    // Инициализируем все поверапы

    private Powerup flyPowerup;

    private void setupFlyPowerup() {
        this.flyPowerup = new Powerup() {
            @Override
            public boolean hasPowerup(@NotNull Player player) {
                return player.isFlying();
            }

            @Override
            public void disablePowerup(@NotNull Player player) {
                player.setFlying(false);
                player.setAllowFlight(false);
            }
        };
    }

    @Override
    public Powerup flyPowerup() {
        return this.flyPowerup;
    }
}

Шаг 2. Инициализируем нашу реализацию

@Override
public void onEnable() {
    GreatEssentials essentials = new GreatEssentials();
    essentials.setup();
    PowerupsManager.setServerManager(essentials);
    // Устанавливаем ссылки на Powerup для каждого PowerupType
    for (PowerupType type : PowerupType.values()) {
        type.initialize(serverManager);
    }
}

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

Last updated