Warning: file_put_contents(/www/wwwroot/nmbt.106988770/cache/modrinth_versions_EnIMyjDY.json): Failed to open stream: Permission denied in /www/wwwroot/nmbt.106988770/resource_detail.php on line 53
Registrar - 墨喵 Minecraft 资源
Registrar 图标

Registrar

作者:rebot | 分类:模组

价格:0 墨喵币 下载量:0 点赞:0 版本 0.1.4+26.2
本资源为搬运资源,原资源地址: https://modrinth.com/mod/registrar
资源信息

Minecraft 版本: 26.2

平台: fabric

标签: library management utility

资源介绍

Registrar

A registry helper for Minecraft modding

Adding Registrar To Your Project

Modrinth Maven If you don't have the Modrinth maven in your `repositories` block, add it like so: `build.gradle`: ```groovy maven { url("https://api.modrinth.com/maven") content { includeGroupAndSubgroups("maven.modrinth") } } ``` or `build.gradle.kts`: ```kotlin maven("https://api.modrinth.com/maven") { content { includeGroupAndSubgroups("maven.modrinth") } } ``` Then, add this project to your dependencies. If you're using deobfuscated Minecraft: ```groovy api("maven.modrinth:registrar:${project.registrar_version}") // or implementation include("maven.modrinth:registrar:${project.registrar_version}") ``` If you're using obfuscated Minecraft: ```groovy modApi("maven.modrinth:registrar:${project.registrar_version}") // or modImplementation include("maven.modrinth:registrar:${project.registrar_version}") ``` mavenLocal First, fork or download this repository and publish it to your mavenLocal. Then, adding the following to your `repositories` block: ```groovy mavenLocal() ``` Then, add this project to your dependencies. If you're using deobfuscated Minecraft: ```groovy api("survivalblock.atmosphere:registrar:${project.registrar_version}") // or implementation include("survivalblock.atmosphere:registrar:${project.registrar_version}") ``` If you're using obfuscated Minecraft: ```groovy modApi("survivalblock.atmosphere:registrar:${project.registrar_version}") // or modImplementation include("survivalblock.atmosphere:registrar:${project.registrar_version}") ```

Normal Registrants

To start, create a Registrant instance of the type you need, like so:

private static final BlockRegistrant BLOCK_REGISTRANT = new BlockRegistrant(ExampleMod.MOD_ID);

If a registrant of the required type does not exist, you can create one!

private static final Registrant RECIPE_SERIALIZER_REGISTRANT = new Registrant(ExampleMod.MOD_ID, BuiltinRegistries.RECIPE_SERIALIZER);

Feel free to open an issue to notify me if there is a need to add other common registrants.

To register an object, simply call Registrant#register.

REGISTRANT.register("name", THING);

Note that some registrant classes have special register methods.
For example, ItemRegistrant has a register method that takes three parameters.

ITEM_REGISTRANT.register("name", Item::new, new Item.Properties());

ItemRegistrant is also capable of registering BlockItems via separate register overloads.
For more information, see the Documentation.

Delayed Registrants

All normal registrants have a delayed counterpart, which can be found in the delayed package.

Delayed registrants are identical to normal registrants, with one exception:
DelayedRegistrant#consumeAll must be called to actually register the objects.

public static void init() {
  REGISTRANT.consumeAll();
}

Dynamic Registrants

Dynamic registrants are registrants for dynamic registries.
Currently, only registrants for DamageTypes and Enchantments exist in the base library.
See these links for examples of registering damage types and enchantments.

To add the registrants for datagen, override buildRegistry in your mod's DataGeneratorEntrypoint like so:

@Override
public void buildRegistry(RegistrySetBuilder registryBuilder) {
    DYNAMIC_REGISTRANT.bootstrap(registryBuilder);
}

where bootstrap is a shorthand for registryBuilder.addRegistry(REGISTRY_KEY, DYNAMIC_REGISTRANT::bootstrap);

Special Registrants

Special registrants are registrants which have no backing Registry. They may or may not
extend Registrant. (Note that GameRuleRegistrant before 1.21.11 is technically a special
registrant.)

Currently, this only includes AttachmentTypeRegistrant.

Documentation

Registrar provides some javadocs, but if you don't want to download the source jar to avoid my multiversioned comments, read this.

Attachment Types `AttachmentTypeRegistrant` contains overloads to register with the builder or register with method parameters. Block Entity Types `BlockEntityTypeRegistrant` and `DelayedBlockEntityTypeRegistrant` implement `IBlockEntityTypeRegistrant`, which can register `BlockEntityType.Builder`/`FabricBlockEntityTypeBuilder`s depending on the version. It can also take the BE's constructor (as a lambda) and a `Block` varargs to construct the `BlockEntityType`. Blocks `BlockRegistrant` and `DelayedBlockRegistrant` implement `IBlockRegistrant`, which can register `Block`s based on a constructor and their `BlockBehaviour$Properties`. Note that `BlockBehaviour$Properties#setId` is called for you. In 26.2, `createId` methods are available to create `BlockItemId`s. Game Rules Due to `BuiltinRegistries.GAME_RULE` not existing before 1.21.11, `GameRuleRegistrant`'s `registry` is null in those versions. Registration in those versions is done via Fabric API's `GameRuleRegistry`, which is not a real `Registry`. `DelayedGameRuleRegistrant` does not exist before 1.21.11 for reasons described above. Both `GameRuleRegistrant` and `DelayedGameRuleRegistrant` implement `IGameRuleRegistrant`, which contains methods to register `GameRules$Key`/`GameRule`s depending on the version. Overloads to register a boolean rule exist, but due to the larger variation of ways to construct rules pre-1.21.11, these are not exhaustive. It is recommended to make your own helpers as necessary. `IGameRuleRegistrant` also contains minor multiversion utilities to obtain values from `GameRules`. These can also be found in the actual registrants, which perform unboxing for some rules.
Items `ItemRegistrant` and `DelayedItemRegistrant` implement `IItemRegistrant` (funny double I), which can register `Item`s based on a constructor and their `Item$Properties`. Note that `Item$Properties#setId` is called for you. The two `IItemRegistrant`s are also capable of registering `BlockItem`s with other register overloads. In addition, reflective registration for `BlockItem`s is also supported with the `ConstructItem` annotation. This requires the invocation of `IItemRegistrant#registerFromAnnotations`, which returns a map of the `Block`s to registered `Item`s. The class parameter dictates which class's fields to check, while `tryAllByDefault` will tell the registrant to construct items even if no annotation is present. Setting `useBlockTranslation` to true in `ConstructItem` will invoke `useBlockDescriptionPrefix` on the `Item$Properties`. This isn't necessary in 1.21.1, because it is [determined by `BlockItem#getDescriptionId`](https://mcsrc.dev/1/1.21.1/net/minecraft/world/item/BlockItem#L181). You can also exclude the item from being automatically registered with `exclude = true`. This is helpful when manual registration is required for `BlockItem`s that have more than `Block block, Item.Properties properties` in their constructors (such as signs and banners), because these are unsupported by the reflective registration. For classes with a constructor with those parameters, you can specify the class with `constructor = CustomBlockItem.class`. `ConstructItem` must be annotated on a `public static` `Block` or `BlockItemId` field. Note that annotating a `Block` field in this way beyond 26.2 is deprecated and will result in spammed warnings in your logs unless you set `suppressIdWarnings = true` in the annotation.
下载与版本
评论(0)
请 登录 后发表评论。

暂无评论,抢个沙发吧~

举报此资源

请登录后举报

赞助作者

请 登录 后赞助作者。

🔥 相关推荐
IOGrindatron

价格:0 墨喵币
下载量:0

查看详情
Tera's Cobblemon Pack

价格:0 墨喵币
下载量:0

查看详情
Scape and Run: Parasites Halloween

价格:0 墨喵币
下载量:0

查看详情
Fresh Grass (Better colormap)

价格:0 墨喵币
下载量:0

查看详情