Line 201: |
Line 201: |
| Forge registered objects must always be referenced through a <code>RegistryObject</code> or a field with <code>@ObjectHolder</code>. | | Forge registered objects must always be referenced through a <code>RegistryObject</code> or a field with <code>@ObjectHolder</code>. |
| | | |
− | === Using RegistryObjects === | + | ===Using RegistryObjects=== |
− | | |
| <code>RegistryObject</code>s can be used to retrieve references to registered objects once they become available. Their references are updated along with all <code>@ObjectHolder</code> annotations after the associated <code>RegistryEvent$Register</code> has been dispatched and frozen. | | <code>RegistryObject</code>s can be used to retrieve references to registered objects once they become available. Their references are updated along with all <code>@ObjectHolder</code> annotations after the associated <code>RegistryEvent$Register</code> has been dispatched and frozen. |
| | | |
Line 208: |
Line 207: |
| | | |
| An example using <code>RegistryObject</code>: | | An example using <code>RegistryObject</code>: |
− | <syntaxhighlight lang="java">
| + | {{Template:Tabs/Code_Snippets |
− | public static final RegistryObject<Item> EXAMPLE_ITEM = RegistryObject.of(new ResourceLocation("examplemod:example_item"), ForgeRegistries.ITEMS); | + | |java=public static final RegistryObject<Item> EXAMPLE_ITEM = RegistryObject.of(new ResourceLocation("examplemod:example_item"), ForgeRegistries.ITEMS); |
| | | |
| // Assume that 'ExampleRegistry' is a valid registry, and 'examplemod:example_object' is a valid object within that registry | | // Assume that 'ExampleRegistry' is a valid registry, and 'examplemod:example_object' is a valid object within that registry |
| public static final RegistryObject<ExampleRegistry> EXAMPLE_OBJECT = RegistryObject.of(new ResourceLocation("examplemod", "example_object"), () -> ExampleRegistry.class); | | public static final RegistryObject<ExampleRegistry> EXAMPLE_OBJECT = RegistryObject.of(new ResourceLocation("examplemod", "example_object"), () -> ExampleRegistry.class); |
− | </syntaxhighlight> | + | |kotlin=val EXAMPLE_ITEM: RegistryObject<Item> = RegistryObject.of(ResourceLocation("examplemod:example_item"), ForgeRegistries.ITEMS) |
| + | |
| + | // Assume that 'ExampleRegistry' is a valid registry, and 'examplemod:example_object' is a valid object within that registry |
| + | val EXAMPLE_OBJECT: RegistryObject<ExampleRegistry> = RegistryObject.of(ResourceLocation("examplemod", "example_object")) { ExampleRegistry.class } |
| + | |scala=final val EXAMPLE_ITEM = RegistryObject.of(new ResourceLocation("examplemod:example_item"), ForgeRegistries.ITEMS) |
| + | |
| + | // Assume that 'ExampleRegistry' is a valid registry, and 'examplemod:example_object' is a valid object within that registry |
| + | final val EXAMPLE_OBJECT = RegistryObject.of(new ResourceLocation("examplemod", "example_object"), () => classOf[ExampleRegistry]); |
| + | |}} |
| | | |
| {{Tip/Important|All vanilla objects are bootstrapped and registered before mods are loaded. As such, they can be referenced as is without any issues, assuming the entries are not replaced.}} | | {{Tip/Important|All vanilla objects are bootstrapped and registered before mods are loaded. As such, they can be referenced as is without any issues, assuming the entries are not replaced.}} |