Jump to content

Recommended Posts

Posted

Just wondering, is there a less intensive way to generate BlockItems from Blocks than manually declaring the whole block list in item form?

 

In earlier versions you declared your Block, and when you registered it automatically created the associated ItemBlock. Now you have to declare all the Blocks and BlockItems separately, maintaining two lists of the same thing. It seems like the sort of thing that could be automated away with a convenience method.

Posted

Personally I don't see what's so agonizing about writing an extra line of code per block

This is my Forum Signature, I am currently attempting to transform it into a small guide for fixing easier issues using spoiler blocks to keep things tidy.

 

As the most common issue I feel I should put this outside the main bulk:

The only official source for Forge is https://files.minecraftforge.net, and the only site I trust for getting mods is CurseForge.

If you use any site other than these, please take a look at the StopModReposts project and install their browser extension, I would also advise running a virus scan.

 

For players asking for assistance with Forge please expand the spoiler below and read the appropriate section(s) in its/their entirety.

  Reveal hidden contents

 

Posted

Ah. I wouldn't claim it's agonising, but it becomes a bit tedious if you have quite a long list of blocks. And we programmers like to avoid code reuse wherever possible, don't we?

 

My first thought was a method like this:

	private static RegistryObject<Item> registerBlockItem(RegistryObject<Block> block, ItemGroup group)
	{
		return ITEMS.register(block.get().getRegistryName().getPath(), () -> new BlockItem(block.get(), new Item.Properties().group(group)));
	}

but of course it failed because the RegistryObject's value doesn't exist at that point.

Posted

If you declare your blocks in a DefferedRegister than you can do something like this:

  Quote

 

public class ModBlocks {
    public static final DeferredRegister<Block> BLOCKS = new DeferredRegister<>(ForgeRegistries.BLOCKS, Main.MODID);
	
    (...)
    public static final RegistryObject<Block> EXAMPLE_BLOCK = BLOCKS.register("example_block", () -> new Block(<properties, etc>));
    (...)
}

 

Expand  

 

  Quote
    @SubscribeEvent
    public static void onItemsRegistry(final RegistryEvent.Register<Item> itemRegistryEvent) {
        final IForgeRegistry<Item> registry = itemRegistryEvent.getRegistry();

        ModBlocks.BLOCKS.getEntries().stream()
                .map(RegistryObject::get)
                .forEach(block -> {
                    final Item.Properties properties = new Item.Properties().group(ModItemGroups.MOD_ITEM_GROUP);
                    final BlockItem blockItem;
                    blockItem = new BlockItem(block, properties);
                    blockItem.setRegistryName(Objects.requireNonNull(block.getRegistryName()));
                    registry.register(blockItem);
                });
    }

 

Expand  

 

procedure WakeMeUp(Integer plusTime);
var
  I: Integer;
begin
  for I := 0 to plusTime do begin
    println('One more minute!');
    Sleep(1000);
  end;
  println('Okay, nothing to worry, I''m alive!');
  println('So... somebody can give me a coffee?');
  println('I know it''s Pascal, and not Java, but I love it :D.');
end;

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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