

RandomLib
Активный0.0
Установок
Последнее обновление
RandomLib - Библиотека для настраиваемых случайных наборов
RandomLib представляет собой специализированную библиотеку, которая изначально была частью мода One Block Plus, но теперь доступна как самостоятельное решение. Основная задача этой библиотеки - предоставить разработчикам удобный инструмент для создания конфигурационных файлов, управляющих взвешенной случайной генерацией элементов в ваших модах.
Документация для разработчиков (в разработке)
Для начала работы с RandomLib необходимо выполнить настройку во время события FMLCommonSetupEvent:
<T extends ExtraData> RandomLibUtils.setup(ResourceLocation registryKey, Supplier<T> extra, Consumer<Map<String, RandomPool<T>>> afterDeserialization)
Например, если вы установите registryKey как oneblock:phases, ваши конфигурационные файлы будут создаваться в папке configs/oneblock/phases/.
Параметр extra представляет собой поставщик экземпляра реализации ExtraData, что позволяет сохранять дополнительную информацию о случайном наборе помимо взвешенных элементов.
После десериализации конфигурационные файлы сохраняются в карте с именем файла в качестве ключа, но вы можете использовать потребитель afterDeserialization для сохранения данных в более удобной для вашего мода структуре.
Для регистрации команд управления конфигурационными файлами используйте во время события FMLServerStartingEvent:
RandomLibUtils.registerCommand(FMLServerStartingEvent event, String commandname, ResourceLocation registryKey)
RandomLibUtils.registerCommand(FMLServerStartingEvent event, String commandname, ResourceLocation registryKey, ExtraDataCommand<? extends ExtraData> extraDataCommand)
Параметр registryKey должен совпадать с тем, что используется в RandomLibUtils.setup, а extraDataCommand завершает brigadier для вашей реализации ExtraData.
Основные методы для работы с случайными наборами:
- RandomPool#getExtra() - получение десериализованных данных ExtraData
- RandomPool#getRandom()#generateAndReplace(ServerWorld, BlockPos) - уничтожение блока и генерация элемента из случайного набора
- RandomPool#getRandom()#generate(ServerWorld, BlockPos) - генерация элемента из случайного набора
- RandomPool#getRandom()#vgenerate(RandomContainer, ServerWorld, BlockPos, ItemStack) - генерация элемента для объекта, реализующего RandomContainer
Документация для пользователей (в разработке)
Для получения справки по командам используйте: /<имя команды RandomLib для этого мода> help