{"id":24737527,"url":"https://github.com/engineersbox/dynamic-forge-registration","last_synced_at":"2025-08-03T03:16:05.281Z","repository":{"id":109326651,"uuid":"378583724","full_name":"EngineersBox/Dynamic-Forge-Registration","owner":"EngineersBox","description":"Minecraft Forge mod element registration driven by annotation to reduce static code bloat","archived":false,"fork":false,"pushed_at":"2021-10-13T07:36:20.000Z","size":42133,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T02:56:02.091Z","etag":null,"topics":["dynamic-forge-registration","expanded-fusion","forge","forge-mod","minecraft","minecraft-mod","mod"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EngineersBox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-06-20T07:21:07.000Z","updated_at":"2025-02-26T20:50:00.000Z","dependencies_parsed_at":"2023-03-26T16:19:15.578Z","dependency_job_id":null,"html_url":"https://github.com/EngineersBox/Dynamic-Forge-Registration","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EngineersBox/Dynamic-Forge-Registration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FDynamic-Forge-Registration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FDynamic-Forge-Registration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FDynamic-Forge-Registration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FDynamic-Forge-Registration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EngineersBox","download_url":"https://codeload.github.com/EngineersBox/Dynamic-Forge-Registration/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FDynamic-Forge-Registration/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268488961,"owners_count":24258357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamic-forge-registration","expanded-fusion","forge","forge-mod","minecraft","minecraft-mod","mod"],"created_at":"2025-01-27T22:08:36.251Z","updated_at":"2025-08-03T03:16:05.265Z","avatar_url":"https://github.com/EngineersBox.png","language":"Java","readme":"# Dynamic Forge Registration\n\nDeveloping forge mods comes with a lot of verbose, static, un-maintainable code.\nMuch of this is in the form of element registration for blocks, items, fluids, etc.\n\nThis core mod aims at removing all of that bloat from your mod and instead doing all\nthe registration dynamically for you. To avoid verbose inheritance overheads, this is\nannotation driven and fully configurable for you to integrate with your preferred\ncode organization.\n\n## Annotations\n\n### Providers\n\n| Annotation                    | Description                                                                                                                                                                                                                                                                                              | Primary |\n|-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|\n| `@BlockProvider`              | Declaration of a block extending from `net.minecraft.block.Block`                                                                                                                                                                                                                                        | `true`  |\n| `@TileEntityProvider`         | Declaration of a tile entity from `net.minecraft.tileentity.TileEntity` associated with a `@BlockProvider` annotated block                                                                                                                                                                               | `true`  |\n| `@ContainerProvider`          | Declaration of a container from `net.minecraft.inventory.container.Conatiner` associated with a `@BlockProvider` annotated block                                                                                                                                                                         | `true`  |\n| `@ScreenProvider`             | Declaration of a container from `net.minecraft.client.gui.screen.Screen` associated with a `@BlockProvider` annotated block                                                                                                                                                                              | `true`  |\n| `@RendererProvider`           | Declaration of a tile entity renderer from `net.minecraft.client.renderer.tileentity.TileEntityRenderer` associated with a `@BlockProvider` annotated block with annotation `type` field set to either `INTERACTIVE_TILE_ENTITY` (with optional usage) or `RENDERED_TILE_ENTITY` (with required usage)   | `true`  |\n| `@BlockProperties`            | Used in the `properties` field of a `@BlockProvider` annotation to dynamically specify block properties to pass to a suitable constructor.\u003cbr\u003e`@BlockProvider` annotated class must be able to accept an instance of `net.minecraft.block.AbstractBlock.Properties`                                      | `false` |\n| `@ItemProvider`               | Declaration of a container from `net.minecraft.client.gui.screen.Screen` associated with a `@BlockProvider` annotated block                                                                                                                                                                              | `true`  |\n| `@FluidProvider`              | Declaration of a flowing or static fluid extending from `net.minecraftforge.fluid.ForgeFlowingFluid.Flowing` or `net.minecraftforge.fluid.ForgeFlowingFluid.static`                                                                                                                                      | `true`  |\n| `@FluidBucketProperties`      | Used in the `bucket` field of a `@FluidProvider` annotation to provide item attributes for an automatically generated bucket item.                                                                                                                                                                       | `false` |\n| `@AnonymousElementRegistrant` | Declaration of an anonymous element provider via enumeration or static fields                                                                                                                                                                                                                            | `true`  |\n| `@ElementRetriever`           | Specifies a `field` or `method` that supplies an instance of `com.engineersbox.expandedfusion.core.registration.anonymous.element.AnonymousElement`. Usage with methods should only be applied where no parameters are specified. Can only be used in class annotated with `@AnonymousElementRegistrant` | `false` |\n| `@FluidFog`                   | Provides RGB values for fluid fog to be set to when player is immersed. All values will default to `0.0F` if left unspecified.                                                                                                                                                                           | `false` |\n| `@FluidBucket`                | Specifies a bucket item to be automatically created for the fluid associated by this class, denoted by the `@FluidProvider` annotation. Lang metadata mappings will need to be explicit provided via the `lang` field                                                                                    | `false` |\n\n### Events\n\n| Annotation            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                             |\n|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `@ClientEventHandler` | Marks a class implementing `EventSubscriptionHandler` to accept events from the client side event bus as instances of `ModLifecylceEvent`. Can be supplied an integer priority via the `priority` field, where lower is first and higher is later.                                                                                                                                                                                                                      |\n| `@ServerEventHandler` | Marks a class implementing `EventSubscriptionHandler` to accept events from the server side event bus as instances of `ServerLifecycleEvent`. Can be supplied an integer priority via the `priority` field, where lower is first and higher is later.                                                                                                                                                                                                                   |\n| `@CommonEventHandler` | Marks a class implementing `EventSubscriptionHandler` to accept events from either client or server side as instances of `ModLifecycleEvent`. Can be supplied an integer priority via the `priority` field, where lower is first and higher is later.                                                                                                                                                                                                                   |\n| `@DataEventHandler`   | Marks a class implementing `EventSubscriptionHandler` to accept events from either client or server side as instances of `GatherDataEvent`. Can be supplied an integer priority via the `priority` field, where lower is first and higher is later.                                                                                                                                                                                                                     |\n| `@Subscriber`         | Marks a method within a class annotated with any of  \u003cul\u003e\u003cli\u003e`@ClientEventHandler`\u003c/li\u003e\u003cli\u003e`@ServerEventHandler`\u003c/li\u003e\u003cli\u003e`@CommonEventHandler`\u003c/li\u003e\u003cli\u003e`@DataEventHandler`\u003c/li\u003e\u003c/ul\u003eto subscribe to events published via the respective side. An annotated method should take a single parameter taking an instance of `net.minecraftforge.eventbus.api.Event`. Can be supplied an integer priority via the `priority` field, where lower is first and higher is later. |\n\n### Data\n\n| Annotation           | Description                                                                                                                                                                                                                                                                                                 |\n|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `@LangMetadata`      | Describes the human readable version of the registry element to generate a mappings for language files.\u003cbr\u003eThis should only be used on classes annotated with \u003cul\u003e\u003cli\u003e`@BlockProvider`\u003c/li\u003e\u003cli\u003e`@ContainerProvider`\u003c/li\u003e\u003cli\u003e`@ItemProvider`\u003c/li\u003e\u003cli\u003e`@FluidProvider`\u003c/li\u003e\u003c/ul\u003e                              |\n| `@LocaleEntry`       | Defines a mapping between an element of `com.engineersbox.expandedfusion.core.registration.handler.data.meta.lang.LangKey` and a human readable naming.                                                                                                                                                     |\n| `@Tag`               | Provides a tag resource location for a given registry element. This will create the tag if it does not exist, or add to if it does. \u003cbr\u003eThis should only be used on classes annotated with \u003cul\u003e\u003cli\u003e`@BlockProvider`\u003c/li\u003e\u003cli\u003e`@ContainerProvider`\u003c/li\u003e\u003cli\u003e`@ItemProvider`\u003c/li\u003e\u003cli\u003e`@FluidProvider`\u003c/li\u003e\u003c/ul\u003e |\n| `@NoDefaultLootItem` | Disabled automatically creating a loot table entry for a block based on the item matching the block itself.                                                                                                                                                                                                 |\n\n## Providers\n\nTODO\n\n### Blocks\n\nTODO\n\n#### Stateless Blocks\n\nTODO\n\n#### Tile Entities\n\nTODO\n\n### Items\n\nTODO\n\n### Fluids\n\nTODO\n\n#### Static\n\nTODO\n\n#### Flowing\n\nTODO\n\n### Recipes\n\nTODO\n\n### Tags\n\nTODO\n\n### Language Metadata\n\n## Registration Process\n\n### Overview\n\nTODO\n\n### JITRegistrationResolver\n\nTODO\n\n### Retrieving and Grouping Implementations\n\nTODO\n\n### Element Resolvers\n\nTODO\n\n#### Blocks\n\nTODO\n\n#### Items\n\nTODO\n\n#### Fluids\n\nTODO\n\n#### Recipe\n\nTODO\n\n#### Tags\n\nTODO\n\n### Events and Event Bus\n\nTODO\n\n## Annotation Processors\n\nTODO\n\n### Language Metadata\n\nTODO\n\n### Element Providers\n\nTODO\n\n### Recipes\n\nTODO\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineersbox%2Fdynamic-forge-registration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengineersbox%2Fdynamic-forge-registration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineersbox%2Fdynamic-forge-registration/lists"}