Posted February 17, 20214 yr This is my first post here so I'm not even sure if this is the correct place to address my problem but anyways: Using DeferredRegister, I was able to successfully override a few block's functionality (the snow block) however, while ingame, the BlockItem does not seem to have been kept from the vanilla game. Here are some of the side effects I currently have: There are two textureless instances of the snow's BlockItem present within the creative menu (both have the same functionality - behaves like the overriden block) doing /give Dev minecraft:snow gives a textured version of the block (again works as expected) My understanding is that the reason why this happens is because I have overridden the block and I also need to register a new BlockItem for the new blocks. This is how I register blocks. import static com.than00ber.wintersnow.init.AllItems.ITEMS; public class AllBlocks { public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Main.MODID); public static final DeferredRegister<Block> OVERRIDDEN_BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "minecraft"); // some cusotm mod blocks fully registered correctly public static final RegistryObject<Block> BASIC_SNOW = registerBlockOverride(Blocks.SNOW, "snow", BasicSnow::new); private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block) { // register mod blocks - unimportant } private static <T extends Block> RegistryObject<T> registerBlockOverride(Block defaultBlock, String name, Supplier<T> block) { RegistryObject<T> reg = OVERRIDDEN_BLOCKS.register(name, block); BlockItem blockItem = new BlockItem(defaultBlock, new Item.Properties().group(ItemGroup.BUILDING_BLOCKS)); ITEMS.register(name, () -> blockItem); return reg; } } I register the blocks I want to override with a DeferredRegister set with modid minecraft and within my mod's constructor I register the blocks to an event bus: public Main() { // Registering blocks IEventBus iEventBus = FMLJavaModLoadingContext.get().getModEventBus(); BLOCKS.register(iEventBus); OVERRIDDEN_BLOCKS.register(iEventBus); // some other stuff - unimportant } I could just get the textures of the block and put them in my mod folder but this seems a bit redundant. Is there any other way I could get the item's normal BlockItem?
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.