Скачать QωQ Library — Minecraft Моды — MetaMods
QωQ Library

QωQ Library

Активный

Установок

0

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

2 года назад

Версии

1.18.2
Клиент и сервер
Fabric
Библиотеки

QωQ Library

QωQ Library представляет собой библиотечную модификацию, которая значительно упрощает процесс подписки на события в Fabric. Она предлагает интуитивно понятный способ регистрации различных объектов, включая предметы и прочие игровые элементы.

Базовые возможности

С помощью QωQ Library регистрация объектов становится простой и лаконичной. Вот как можно зарегистрировать новый предмет:

public static final Registration<Item> ITEMS = new Registration<>(Registry.ITEM, MOD_ID);
public static final Item EXAMPLE_ITEM = ITEMS.register("example_item", () -> new Item(new Item.Settings()));

Важно: Не забудьте добавить следующую строку в главный класс мода:

@Override
public void onInitialize() {
    ItemInit.ITEMS.register();
}

Управление событиями

Библиотека предлагает удобную систему подписки на события. Создайте класс для обработки событий следующим образом:

@ModEvent
public class OnEventHandle {
    @SubscribeEvent
    public static void onEvent(IEvent event){
        // Ваш код обработки события
    }
}

Для активации системы событий необходимо указать программе, где находятся ваши классы событий. В главном классе добавьте:

@Override
public void onInitialize() {
    ItemInit.ITEMS.register();
    EventLoader.initEvent("org.abstruck.qwq.init.event");
}

Примечание: Если ваши классы событий расположены в пакете std.init.event, они будут подписаны автоматически.

Важное предупреждение

НИКОГДА НЕ РАЗМЕЩАЙТЕ КЛАССЫ С АННОТАЦИЕЙ @Mixin В ЭТОЙ ПАПКЕ!

Создание пользовательских событий

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

public class AfterBreakEvent implements IEvent{
    private final World world;
    private final PlayerEntity player;
    private final BlockPos pos;
    private final BlockState state;
    private final BlockEntity blockEntity;
    private final ItemStack stack;

    public AfterBreakEvent(World world, PlayerEntity player, BlockPos pos, 
                          BlockState state, @Nullable BlockEntity blockEntity, ItemStack stack) {
        this.world = world;
        this.player = player;
        this.pos = pos;
        this.state = state;
        this.blockEntity = blockEntity;
        this.stack = stack;
    }

    public PlayerEntity getPlayer() {
        return player;
    }

    public BlockPos getPos() {
        return pos;
    }

    public BlockState getState() {
        return state;
    }

    public World getWorld() {
        return world;
    }

    public BlockEntity getBlockEntity() {
        return blockEntity;
    }

    public ItemStack getStack() {
        return stack;
    }
}

Для активации пользовательского события необходимо реализовать Mixin:

@Mixin(Block.class)
public abstract class BlockMixin {
    @Inject(method = "afterBreak", at = @At("RETURN"))
    public void afterBreak(World world, PlayerEntity player, BlockPos pos, BlockState state,
                          BlockEntity blockEntity, ItemStack stack, CallbackInfo ci) {
        EventManager.onEventAction(() -> new AfterBreakEvent(world, player, pos, state, blockEntity, stack));
    }
}
Участники проекта
Goulixiaoji

Goulixiaoji

Разработчик

Создан: 25 янв 2023

ID: 19170