QωQ Library
Активный0.0
Установок
Последнее обновление
Версии
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));
}
}