Использование 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