TCDCommons API avatar

TCDCommons API [1.21.9] [1.20.6] [1.19.4]

TCDCommons — это библиотека API для модификации Minecraft, которая включает собственную систему GUI, различные события и хуки для игры, а также утилиты, которые могут быть полезны разработчикам модов. Основная цель этого API — помочь оптимизировать и ускорить разработку модов, а также избежать повторного написания одного и того же кода для каждого мода, которому необходимо выполнять похожие действия. Обратите внимание, что, поскольку этот мод является библиотекой, он может не предлагать полезные фронтенд-функции для пользователя.

Моды, использующие этот API

Этот API-мод в основном используется TheCSDev для разработки Better Statistics Screen.

Функции API

Клиентская часть

  • Система GUI: Уникальная, удобная для пользователя система UI, которая стремится быть улучшением по сравнению с ванильной системой GUI с точки зрения настройки и гибкости.
  • HUD-экраны: Эта функция позволяет отображать Screenы на внутриигровом HUD для визуального улучшения. Обратите внимание, что эти HUD Screenы предназначены только для отображения и не могут взаимодействовать с пользовательским вводом.

Общая часть

  • Авто-конфигурационная система: Упростите создание JSON-файлов конфигурации для вашего мода с помощью этой системы. Она автоматически сериализует поля примитивных типов, определенных в конфигурационном Classе, при сохранении и загрузке конфигов.
  • Система событий: Позволяет вам отслеживать различные внутриигровые события. Также позволяет определять пользовательские события для вашего мода, которые другие моды могут отслеживать.
  • Хуки: Получите легкий доступ к различным компонентам игры с помощью этих хуков.
  • Сетевое взаимодействие: Этот API поставляется с собственной сетью пользовательских полезных нагрузок, позволяя другим модам общаться в обоих направлениях C2S и S2C по сетевому протоколу игры.
  • Утилиты: Воспользуйтесь рядом утилит, включая различные интерфейсы, перечисления, типы исключений, IO-утилиты, многопоточность и многое другое. Одна из таких утилит — система кэширования, которая позволяет модам выполнять асинхронные операции для получения/загрузки ресурсов и их кэширования.

Простое введение в систему GUI

С системой GUI вы можете создавать собственные меню GUI более простым способом, который позволяет больше настройки и гибкости.
В ванильной системе GUI мы используем Screenы. В системе GUI этого API мы используем то, что называется TScreenами.

Все компоненты GUI, включая TScreenы и виджеты GUI, можно найти в следующем пакете: io.github.thecsdev.tcdcommons.api.client.gui.

Ниже мы создадим пример реализации TScreen с простой кнопкой, которая выполняет действие при нажатии:

import io.github.thecsdev.tcdcommons.api.client.gui.screen.TScreen;
import io.github.thecsdev.tcdcommons.api.client.gui.widget.TButtonWidget;
import net.minecraft.text.Text;

public final class ExampleTScreen extends TScreen
{
t/*
t * `super` принимает аргумент `Text` для заголовка экрана
t */
tpublic ExampleTScreen() { super(Text.literal("Пример TScreen")); }
t
t/*
t * Здесь экран инициализирует свои GUI-элементы.
t * Мы добавим виджет кнопки здесь.
t */
tprotected final @Override void init()
t{
tt//создаем кнопку и центруем ее на экране
ttfinal var button = new TButtonWidget(
ttt(getWidth() / 2) - 50,  //X-позиция кнопки. мы центрируем ее
ttt(getHeight() / 2) - 10, //Y-позиция кнопки. мы центрируем ее
ttt100, //ширина кнопки
ttt20   //высота кнопки
tt);
tt
tt//определяем текст для кнопки
ttbutton.setText(Text.literal("Нажми меня"));
tt
tt//теперь давайте сделаем что-то, когда кнопка нажата
ttbutton.setOnClick(btn ->
tt{
ttt//выводим простое сообщение в консоль
ttt//когда кнопка нажата
tttSystem.out.println("Hello World!");
tt});
tt
tt//и, наконец, добавим кнопку на экран
ttaddChild(button);
t}
}

Теперь нам нужно открыть экран и показать его пользователю. Для этого мы используем MinecraftClient#setScreen(Screen) (на Fabric), и мы используем TScreen#getAsScreen() для получения ссылки на Screen. Таким образом, наш окончательный код будет выглядеть так:

final var tscreen = new ExampleTScreen();
final var screen = tscreen.getAsScreen();
MinecraftClient.getInstance().setScreen(screen);

Простое введение в систему событий

Система событий позволяет вам не только отслеживать различные события, уже предоставленные этим API, но также создавать и вызывать свои собственные пользовательские события.
Ниже приведен пример того, как вы можете создать свое собственное событие, зарегистрировать и отменить регистрацию слушателей, а также вызвать событие:

import io.github.thecsdev.tcdcommons.api.event.TEvent;
import io.github.thecsdev.tcdcommons.api.event.TEventFactory;

public final class ExampleEvents
{
t/*
t * Вот как мы создаем пользовательское событие с помощью этого API.
t * Обратите внимание, что эта система событий похожа на систему событий Architectury API,
t * но с некоторыми изменениями и дополнениями для большей гибкости.
t */
tpublic static final TEvent<Runnable> eSomething = TEventFactory.createLoop();
t
tpublic static final void registerAndUnregisterListener()
t{
tt//сначала мы определяем слушатель, который будет вызван при вызове события
ttfinal Runnable listener = () -> { System.out.println("Событие было вызвано."); };
tt
tt//затем, вот как мы можем зарегистрировать его
tteSomething.register(listener);
tt
tt//и затем, вот как мы можем отменить его регистрацию
tteSomething.unregister(listener);
t}
t
tpublic static final void invokeEvent()
t{
tt//мы вызываем событие, получая "вызыватель",
tt//и вызывая основную функцию функционального интерфейса
tt//(в случае Runnable, основная функция — `run`)
tteSomething.invoker().run();
t}
}

Требуемые зависимости

Architectury API avatarArchitectury APIshedaniel

Скачать TCDCommons API

 
Тип Скачать Версия Загрузчик Обновлено Размер
ReleaseTCDC (fabric-1.20.6) - v3.111.20.5+1 Fabric14 июня 2024822 КБ
ReleaseTCDC (fabric-1.21) - v3.111.21Fabric14 июня 2024822,2 КБ
ReleaseTCDC (fabric-1.20.6) - v3.101.20.5+1 Fabric3 мая 2024820,2 КБ
ReleaseTCDC (fabric-1.20.5) - v3.9.71.20.5+1 Fabric1 мая 2024815,8 КБ
ReleaseTCDC (fabric-1.20.1) - v3.9.71.20+1 Fabric25 апреля 2024808,8 КБ
ReleaseTCDC (fabric-1.20.2) - v3.9.71.20.2Fabric25 апреля 2024815,8 КБ
ReleaseTCDC (fabric-1.20.4) - v3.9.71.20.3+1 Fabric25 апреля 2024816,9 КБ
ReleaseTCDC (fabric-1.20.1) - v3.9.51.20+1 Fabric8 апреля 2024808,7 КБ
ReleaseTCDC (fabric-1.20.2) - v3.9.51.20.2Fabric8 апреля 2024815,7 КБ
ReleaseTCDC (fabric-1.20.4) - v3.9.51.20.3+1 Fabric8 апреля 2024816,8 КБ
Пожалуйста авторизуйтесь, чтобы оставить свой комментарий.