Jump to content

[1.18.1] Custom Registry Builder


VoidCallerZ

Recommended Posts

Hi there,

I want to create a custom registry builder where it builds the RegistryObject for both the Block and the Item in one. Currently I have alot of lines, giving alot of clutter because I need to make a RegistryObject<Block> and a RegistryObject<Item> for 1 block.

So I am currently looking into making 1 function/class that can create both of those in one. The only problem I'm facing is that the variables are currently "public static final" variables. So how can I do this in a class or a function?

 

    public static final RegistryObject<Block> COMPRESSED_IRON_ORE = BLOCKS.register("compressed_iron_ore", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> COMPRESSED_IRON_ORE_ITEM = fromBlock(COMPRESSED_IRON_ORE);
    public static final RegistryObject<Block> COMPRESSED_GOLD_ORE = BLOCKS.register("compressed_gold_ore", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> COMPRESSED_GOLD_ORE_ITEM = fromBlock(COMPRESSED_GOLD_ORE);
    public static final RegistryObject<Block> COMPRESSED_DIAMOND_ORE = BLOCKS.register("compressed_diamond_ore", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> COMPRESSED_DIAMOND_ORE_ITEM = fromBlock(COMPRESSED_DIAMOND_ORE);
    public static final RegistryObject<Block> COMPRESSED_COPPER_ORE = BLOCKS.register("compressed_copper_ore", () -> new Block(ORE_PROPERTIES));
    public static final RegistryObject<Item> COMPRESSED_COPPER_ORE_ITEM = fromBlock(COMPRESSED_COPPER_ORE);

So as an example, this is 8 lines of code for 4 blocks. I would like for it to be just 4 lines.

 

Any help is appreciated!

Link to comment
Share on other sites

Then I have a follow on question, just trying that out right now. But I do also use data generation for all the jsons. Now when I place a block inside the static { } I can no longer access it in BlockStates.java or any other location.

    static {
        RegistryObject<Block> COMPRESSED_IRON_ORE = BLOCKS.register("compressed_iron_ore", () -> new Block(ORE_PROPERTIES));
        RegistryObject<Item> COMPRESSED_IRON_ORE_ITEM = fromBlock(COMPRESSED_IRON_ORE);
    }
singleTextureBlock(Registration.COMPRESSED_IRON_ORE.get(), "compressed_iron_ore", "block/compressed/ores/compressed_iron_ore");

So the singleTextureBlock can no longer find it.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.