Wild Battle API
wild-battle-api · 256903 загрузок · LicenseRef-All-Rights-Reserved
клиент: required · сервер: required (заявлено автором мода)
Общий API AI диких сражений для Cobblemon.
Описание
Пожалуйста, поддержите меня на ko-fi, если вам нравится мод и вы можете его себе позволить, я ценю даже 1 доллар. 
Я даю разрешение всем, кто хочет добавить мой мод в модпак
API дикой битвы
API Wild Battle — это общая платформа искусственного интеллекта для диких сражений для Cobblemon.
Для игроков и авторов пакетов он предоставляет настраиваемое более разумное поведение в дикой битве со встроенными пресетами и инструментами администратора. Для разработчиков он предоставляет поддерживаемый общедоступный API для регистрации пользовательских диких реализаций BattleAI без непосредственной замены внутренних компонентов Cobblemon.
API Wild Battle устанавливает делегирующий ИИ участникам дикой битвы в начале битвы. По каждому решению ИИ:
- В первую очередь проверяются поставщики с более высоким приоритетом.
- Используется первый поставщик, который возвращает ненулевое значение
BattleAI. - Возврат
nullотносится к поставщикам с более низким приоритетом. - Если ни один поставщик не заявляет права на контекст, в качестве запасного варианта используется исходный искусственный интеллект Cobblemon актера.
Это позволяет нескольким модам безопасно взаимодействовать, сохраняя при этом надежный запасной путь, когда не применяется пользовательский поставщик.
Включенные функции
- Общий API для расширений искусственного интеллекта диких битв.
- Разрешение поставщика на основе приоритета
- Безопасный возврат к оригинальному искусственному интеллекту Cobblemon актера.
- Встроенное настраиваемое интеллектуальное поведение дикого ИИ.
- Предустановки сложности от
easyдоextreme. - Пользовательский интерфейс администратора и команды отладки.
- Поддержка Fabric и NeoForge для Minecraft
1.21.1
Команды администратора
API Wild Battle включает команды оператора/администратора для тестирования и настройки.
Команды:
/wildbattleapi ui/wildbattleapi difficulty <easy|medium|hard|extreme>/wildbattleapi debug on/wildbattleapi debug off/wildbattleapi debug status
Псевдонимы:
/wba ui/wba difficulty <easy|medium|hard|extreme>/wba debug on|off|status
Для этих команд требуется уровень разрешений 2.
Использование разработчиком
Поддерживаемый общедоступный API
Используйте только эти классы для сторонней интеграции:
com.github.raguto.wildbattleapi.api.WildBattleAPIcom.github.raguto.wildbattleapi.api.WildAIProvidercom.github.raguto.wildbattleapi.api.WildAIContext
Не зависьте от внутренних пакетов, таких как impl, mixin, config или network.
Зависимость во время выполнения
Установите Wild Battle API в любом месте, где загружается зависимый мод. В обычных модпаках это означает и клиент, и сервер.
Идентификатор мода:
wild_battle_api
Также объявите это как зависимость в метаданных вашего мода.
Ткань (fabric.mod.json):
{
"depends": {
"wild_battle_api": "*"
}
}
НеоФордж (META-INF/neoforge.mods.toml):
[[dependencies.your_mod_id]]
modId = "wild_battle_api"
type = "required"
versionRange = "[1.0.0,)"
ordering = "AFTER"
side = "BOTH"
Настройте минимальную версию на первую версию Wild Battle API, которую поддерживает ваш мод.
Зависимость во время компиляции
Если вы не используете опубликованный артефакт Maven, скомпилируйте его напрямую с jar-файлом, специфичным для загрузчика.
Пример ткани:
dependencies {
modCompileOnly files("libs/wild_battle_api-fabric-1.0.0.jar")
}
Пример НеоФорджа:
dependencies {
compileOnly files("libs/wild_battle_api-neoforge-1.0.0.jar")
}
Используйте jar, соответствующий вашей среде.
Регистрация провайдера
Зарегистрируйте своего провайдера один раз во время общей инициализации вашего мода.
import com.github.raguto.wildbattleapi.api.WildBattleAPI;
import com.github.raguto.wildbattleapi.api.WildAIContext;
public final class MyWildAIRegistration {
public static void init() {
WildBattleAPI.registerProvider(150, context -> {
if (shouldUseMyAI(context)) {
return new MyCustomWildBattleAI();
}
return null;
});
}
private static boolean shouldUseMyAI(WildAIContext context) {
return context.getBattle() != null && context.getActor() != null;
}
}
Вы также можете зарегистрироваться с приоритетом по умолчанию:
WildBattleAPI.registerProvider(context -> null);
Приоритетное руководство
0: универсальный поставщик или поставщик по умолчанию.50: стандартное переопределение100+: переопределение с высоким приоритетом или для конкретного босса.200+: жесткое переопределение, используйте осторожно.
Если ваш провайдер занимается только конкретными случаями, для всего остального верните null.
Реализация собственного BattleAI
Вы можете предоставить любой класс, реализующий BattleAI Cobblemon.
import com.cobblemon.mod.common.api.battles.model.PokemonBattle;
import com.cobblemon.mod.common.api.battles.model.ai.BattleAI;
import com.cobblemon.mod.common.battles.ActiveBattlePokemon;
import com.cobblemon.mod.common.battles.BattleSide;
import com.cobblemon.mod.common.battles.PassActionResponse;
import com.cobblemon.mod.common.battles.ShowdownActionResponse;
import com.cobblemon.mod.common.battles.ShowdownMoveset;
import com.cobblemon.mod.common.net.messages.client.battle.BattleHealthChangePacket;
import org.jetbrains.annotations.Nullable;
public final class MyCustomWildBattleAI implements BattleAI {
@Override
public ShowdownActionResponse choose(
ActiveBattlePokemon activeBattlePokemon,
PokemonBattle battle,
BattleSide side,
@Nullable ShowdownMoveset moveset,
boolean forceSwitch
) {
if (forceSwitch || moveset == null) {
return PassActionResponse.INSTANCE;
}
// Replace this with your own move or switch logic.
return PassActionResponse.INSTANCE;
}
@Override
public void onHealthChange(BattleHealthChangePacket packet) {
// Optional state tracking.
}
}
WildAIContext
WildAIContext предоставляет поставщикам информацию, необходимую для принятия решения о том, следует ли требовать участия в дикой битве.
Всегда доступны:
getActor()getPokemonList()getBattle()isForceSwitch()
Обнуляемое в зависимости от текущего решения:
getActiveBattlePokemon()getAiSide()getMoveset()
Оберегайте поля, допускающие значение NULL, перед их использованием.
Примечания по интеграции
- Сохраняйте логику поставщика быстрой и предсказуемой.
- Верните
null, если ваш мод не хочет запрашивать текущий контекст. - Избегайте создания исключений из логики поставщика или искусственного интеллекта.
- Тестируйте как на выделенном сервере, так и в интегрированном одиночном режиме.
- Если несколько поставщиков модов регистрируют, сначала проверяется более высокий числовой приоритет.
Лицензирование
Код API и двоичные файлы Wild Battle защищены. Все права защищены.
Разрешения на использование и распространение сторонними организациями определяются политикой автора на странице мода.
Версии (6)
| Версия | Minecraft | Загрузчики | Файл |
|---|---|---|---|
1.1.2 |
1.21.1 | fabric | скачать |
1.1.2 |
1.21.1 | neoforge | скачать |
1.0.1 |
1.21.1 | fabric | скачать |
1.0.1 |
1.21.1 | neoforge | скачать |
1.0.0 |
1.21.1 | fabric | скачать |
1.0.0 |
1.21.1 | neoforge | скачать |