Mod RandomLib by NaturaSpell
- 635875
- 61.32 KB
- 1.16.5
- March 25, 2022
- March 24, 2022
- API and LibraryTechnology
Name | RandomLib | Author | NaturaSpell | Description | A library to create customizable random pools. Originally from the oneblock mod. |
---|---|---|---|---|---|
Information | Downloads: 635875 Version: 1.16.5 Size: 61.32 KB Updated at: March 24, 2022 Created at: March 25, 2022 | Tags | API and Library Technology |
Originally a part of the One Block Plus mod, RandomLib is now a standalone library allowing your mod to create config files for weighted random generation.
Developer documentation. (WIP)
(This will likely be replaced later by a github repository)
RandomLibUtils.setup during FMLCommonSetupEvent to setup your config files.
<T extends ExtraData> RandomLibUtils.setup(ResourceLocation registryKey, Supplier<T> extra, Consumer<Map<String, RandomPool<T>>> afterDeserialization)
As an example, your config files will be generated in configs/oneblock/phases/ folder if registryKey = oneblock:phases.
extra is a supplier for an instance of an ExtraData implementation. This allows you to save more information about a random pool, in addition to the weighted items.
Once your config files are deserialized, they are saved in a map with their file name as a key but you likely would like to store them in a more convenient structure for your mod using the afterDeserialization consumer.
RandomLibUtils.registerCommand during FMLServerStartingEvent to setup a command to manage config files generated by RandomLib.
RandomLibUtils.registerCommand(FMLServerStartingEvent event, String commandname, ResourceLocation registryKey) RandomLibUtils.registerCommand(FMLServerStartingEvent event, String commandname, ResourceLocation registryKey, ExtraDataCommand<? extends ExtraData> extraDataCommand)registryKey is the same as for RandomLibUtils.setup
extraDataCommand completes brigadier for your ExtraData implementation.
RandomPool#getExtra() to get your deserialized ExtraData.
RandomPool#getRandom()#generateAndReplace(ServerWorld, BlockPos) to destroy block and generate an item from the random pool in the given world at the given position.
RandomPool#getRandom()#generate(ServerWorld, BlockPos) to generate an item from the random pool in the given world at the given position.
RandomPool#getRandom()#vgenerate(RandomContainer, ServerWorld, BlockPos, ItemStack) to generate an item from the random pool for an object implementing RandomContainer (likely a tile entity) in the given world at the given position and for the given held item (if any).
User documentation. (WIP)
Help command : /<RandomLib command name for this mod> help
example: