Mod RandomLib by NaturaSpell

  • RandomLib by NaturaSpell

    A library to create customizable random pools. Originally from the oneblock mod.
    • 635875
    • 61.32 KB
    • 1.16.5
    • March 25, 2022
    • March 24, 2022
    • API and Library
      Technology
    RandomLib
Mod Information
NameRandomLibAuthorNaturaSpellDescriptionA library to create customizable random pools. Originally from the oneblock mod.
InformationDownloads: 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: