NeoTale

NeoTale

A project meant to make Hytale modding easier in general. For now it simplifies event subscriptions to Neoforge's event bus subscription practice, making event subscription a lot simpler for modders

62.0 загрузок
Обновлён 11 дней назад

Описание

Неотале

NeoTale - это легкая, основанная на аннотациях система событий для плагинов Hytale, вдохновленная системой событийной шины NeoForge. Он удаляет ручную регистрацию и boilerplate, автоматически обнаруживая и проводя ваши обработчики событий во время выполнения.


Особенности

  • Подписка на события на основе аннотации
  • Не требуется ручной регистрации
  • Автоматическое сканирование классов
  • Статический метод отправки
  • Минимальный, чистый API
  • Рабочий процесс в стиле NeoForge

Как это работает

При запуске NeoTale сканирует ваш плагин и автоматически обнаруживает:

  • Классы, аннотированные с @EventBusSubscriber
  • публичный статический Методы внутри этих классов, аннотированные @Подписаться Событие

Любой метод, соответствующий этому шаблону, автоматически регистрируется в шине событий и вызывается при пожаре соответствующего события.


Пример события

@EventBusSubscriber
Серверные события последнего класса {

@SubscribeEvent
Публичная статическая пустота на Boot (событие BootEvent)
System.out.println («Загрузка сервера!»);
?

@SubscribeEvent
Публичная статическая пустота на Break (событие BreakBlockEvent)
System.out.println («Блок сломан!»);
?
? 

Вот и все. NeoTale автоматически обрабатывает обнаружение и связывание.


Правила обнаружения

NeoTale будет регистрировать только те методы, которые отвечают всем следующим требованиям:

  • Объявлено в классе с аннотацией @EventBusSubscriber
  • маркированный публичный статический
  • Аннотированный с @Подписаться Событие
  • Принять ровно один параметр (тип события)

Система регистрации

NeoTale также может автоматически регистрировать системы ECS, используя тот же подход. Декларация публичный статический методы, аннотированные с @SubscribeSystem внутри @EventBusSubscriber класс. NeoTale будет использовать эти методы во время установки плагина и зарегистрировать возвращенную систему в правильном реестре.


Пример системы

@EventBusSubscriber
Системы финального класса {

@SubscribeSystem (магазин = SystemStore.ENTITY)
Публичная статическая система <EntityStore> myEntitySystem() {
Возвращение новой EntityEventSystem (BreakBlockEvent.class) {
@Override
Общественная ручка пустоты (int i,
@Nonnull ArchetypeChunk<EntityStore> кусок,
@Nonnull Store<EntityStore> магазин,
@Nonnull CommandBuffer<EntityStore> буфер,
@Nonnull BreakBlock Событие {
?

@Override
Публичный запрос <EntityStore> getQuery() {
Возвращение Query.any();
?
}
?

@SubscribeSystem (магазин = SystemStore.CHUNK)
Публичная статическая система (MyChunkSystem) {
RefSystem<ChunkStore>() {
@Override
Публичный запрос <ChunkStore> getQuery() {
Возвращение Query.any();
?

@Override
Публичная пустота на EntityAdded (Ref<ChunkStore> ref,
Адресная причина,
Магазин <ChunkStore>,
CommandBuffer<ChunkStore> буфер
?

@Override
Публичная пустота на EntityRemove (Ref<ChunkStore> ref.
Удалить причину,
Магазин <ChunkStore>,
CommandBuffer<ChunkStore> буфер
?
}
?
? 

Настройка Gradle

Добавить репозиторий NeoTale Maven:

Грейдл (Groovy)

репозитории {
{url }https://dl.cloudsmith.io/public/lio/neotale/maven/' ?
?

зависимости {
Реализация "net.liopyu:neotale:$neoTaleVersion"
? 

Котлин ДСЛ (Kotlin DSL)

репозитории {
мэвен()https://dl.cloudsmith.io/public/lio/neotale/maven/")
?

зависимости {
(перенаправлено с «net.liopyu:neotale: $neoTaleVersion»)
? 

 


Почему NeoTale?

Нативные системы Hytale являются мощными, но проводка событий может быть повторяющейся и запутанной. NeoTale упрощает разработку, предоставляя простой, знакомый подход для разработчиков, поступающих из NeoForge.


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

NeoTale бесплатна для использования в любом проекте, включая общедоступные серверы, модули и перераспределенные сборки. Вам разрешено связывать и перераспределять NeoTale как есть везде, где вам это нужно.

Ярлык ARR применяется только к прямому владению источником/активами проекта. не ограничить нормальное использование или перераспределение построенного мода.


discord

Показать оригинальное описание (English)

NeoTale

NeoTale is a lightweight, annotation-driven event system for Hytale plugins inspired by NeoForge’s event bus system. It removes manual registration and boilerplate by automatically discovering and wiring your event handlers at runtime.


Features

  • Annotation-based event subscription
  • No manual registration required
  • Automatic class scanning
  • Static method dispatch
  • Minimal, clean API
  • NeoForge-style workflow

How It Works

On startup, NeoTale scans your plugin and automatically detects:

  • Classes annotated with @EventBusSubscriber
  • public static methods inside those classes annotated with @SubscribeEvent

Any method matching this pattern is automatically registered to the event bus and invoked when the corresponding event fires.


Event Example

@EventBusSubscriber
public final class ServerEvents {

    @SubscribeEvent
    public static void onBoot(BootEvent event) {
        System.out.println("Server booted!");
    }

    @SubscribeEvent
    public static void onBreak(BreakBlockEvent event) {
        System.out.println("Block broken!");
    }
}

That’s it. NeoTale handles discovery and binding automatically.


Detection Rules

NeoTale will only register methods that meet all of the following:

  • Declared in a class annotated with @EventBusSubscriber
  • Marked public static
  • Annotated with @SubscribeEvent
  • Accept exactly one parameter (the event type)

System Registration

NeoTale can also auto-register ECS systems using the same annotation-first approach. Declare public static methods annotated with @SubscribeSystem inside an @EventBusSubscriber class. NeoTale will invoke these methods during plugin setup and register the returned system into the correct registry.


System Example

@EventBusSubscriber
public final class Systems {

    @SubscribeSystem(store = SystemStore.ENTITY)
    public static ISystem<EntityStore> myEntitySystem() {
        return new EntityEventSystem<>(BreakBlockEvent.class) {
            @Override
            public void handle(int i,
                               @Nonnull ArchetypeChunk<EntityStore> chunk,
                               @Nonnull Store<EntityStore> store,
                               @Nonnull CommandBuffer<EntityStore> buffer,
                               @Nonnull BreakBlockEvent event) {
            }

            @Override
            public Query<EntityStore> getQuery() {
                return Query.any();
            }
        };
    }

    @SubscribeSystem(store = SystemStore.CHUNK)
    public static ISystem<ChunkStore> myChunkSystem() {
        return new RefSystem<ChunkStore>() {
            @Override
            public Query<ChunkStore> getQuery() {
                return Query.any();
            }

            @Override
            public void onEntityAdded(Ref<ChunkStore> ref,
                                      AddReason reason,
                                      Store<ChunkStore> store,
                                      CommandBuffer<ChunkStore> buffer) {
            }

            @Override
            public void onEntityRemove(Ref<ChunkStore> ref,
                                       RemoveReason reason,
                                       Store<ChunkStore> store,
                                       CommandBuffer<ChunkStore> buffer) {
            }
        };
    }
}

Gradle Setup

Add the NeoTale Maven repository:

Gradle (Groovy)

repositories {
    maven { url 'https://dl.cloudsmith.io/public/lio/neotale/maven/' }
}

dependencies {
    implementation "net.liopyu:neotale:$neoTaleVersion"
}

Gradle (Kotlin DSL)

repositories {
    maven("https://dl.cloudsmith.io/public/lio/neotale/maven/")
}

dependencies {
    implementation("net.liopyu:neotale:$neoTaleVersion")
}

 


Why NeoTale?

Hytale’s native systems are powerful, but event wiring can be repetitive and confusing. NeoTale streamlines development by providing a simple, familiar approach for developers coming from NeoForge event bus subscription.


Usage & Distribution

NeoTale is free to use in any project, including public servers, modpacks, and redistributed builds. You are allowed to bundle and redistribute NeoTale as-is wherever you need it.

The ARR label only applies to direct ownership of the project’s source/assets; it does not restrict normal use or redistribution of the built mod.


discord

Последние версии

NeoTale-0.0.2.jar

Early Access 23.01.2026 29.1 КБ
Скачать

NeoTale-0.0.1.jar

Early Access 21.01.2026 26.7 КБ
Скачать