Jump to content

Standardize meanings of Forge tag prefixes, notably storage blocks


Recommended Posts

Posted (edited)

Currently, Forge tags two things under the prefix "storage_blocks/": 3x3 storage blocks such as iron, gold, redstone, etc., and the one 2x2 decorative block quartz, which is notably not a reversible recipe (making it obviously not a storage block). With 1.17, we are also gaining copper ingots as a 2x2 block instead of 3x3, if this is tagged as "storage_blocks/copper" for "consistency" with other blocks, it means we have an incompatibly with any mod that added a 3x3 copper block recipe before 1.17.

 

We have solved this issue with other mineral types before by using different prefixes, such as there are a few different variants of plates (large plate, small plate) based on the number of ingots needed. I propose doing the same with blocks. "storage_blocks/" will be kept for 3x3 crafting, and a new prefix "decorative_blocks/" will be added for the sake of 2x2 crafting, which should include quartz blocks, the 1.17 copper blocks, and potentially brick blocks (as bricks are tagged under ingots). This will solve any potential conflict with mods adding 3x3 copper blocks as you can guarantee anything tagged "storage_blocks/copper" is worth 9 ingots, while anything tagged "decorative_blocks/copper" (which includes the vanilla block) will be worth 4 ingots. In addition, if a mod wants their metal block to be a 2x2 crafting recipe like vanilla copper, they can tag it as "decorative_blocks/" to prevent confusion with other mods adding the same metal. For the sake of migration, I propose adding a "decorative_blocks/quartz" tag into 1.16, and having it read from "storage_blocks/quartz". Then ideally we deprecate the "storage_blocks" tag for removal in 1.17, so modders can update to the correct tag before then.

 

 

On a related note, Forge's definition of a "dust" and a "gem" are very odd to say the least.  Prismarine shards are classified as a dust and prismarine crystals as a gem, but neither have that many similar properties with the other items in those tags (really, crystals behave more like a dust of the two as its dropped from lamps like glowstone dust from glowstone). Lapis is also tagged as a gem, but its relationship to its ore is different from both other gems (such as diamond) and even dusts (such as redstone). This is mainly an issue when a mod adds a new item and is trying to determine how to tag it, thus it would help in both this case and in the block case to attach a specific definition to what behavior is expected with items in those tags.

 

 

tl;dr: the main proposal here is the addition of "decorative_blocks/" tags for 2x2 crafting. In addition, this proposal suggests attaching definitions to each tag prefix to help with consistency among mod authors, and to adjust Forge tags to better fit those definitions.

Edited by KnightMiner
Posted (edited)

I would rather not use "decorative_blocks" because that doesn't really say what they are, and people may start adding other "decorative" blocks into the tag.

Maybe "small_storage_blocks" or "storage_blocks_2x2" or something similar would be better.

As for the actual blocks, there are more than just quartz and copper which would fall into the 2x2 tag:

  • Glowstone
  • Clay
  • Snow
  • Honeycomb
  • Honey (reversible, but requires 4 glass bottles)
  • Magma Cream
  • Quartz
  • Copper (reversible, but I think only if the block isn't weathered?)
  • Amethyst
  • Sandstone (possibly? It's a bit different being block -> block, but follows the same irreversible principle).
  • Prismarine (has both a 3x3 "prismarine_bricks" and a 2x2 "prismarine" recipe. Both are irreversible).
  • Purpur (probably not, the recipe produces 4 blocks, so more of a conversion like the various stone types).
Edited by Alpvax
Add more blocks
  • Like 1
Posted (edited)

I don't want to call anything that is not reversible "storage". Because storage implies reversible. You would not store your quartz as quartz blocks as then you lose it when you need to craft comparators. I went with decorative as all 2x2 recipes are for the sake of decoration thus far, but its a fair point that it may be a bit vague. "compressed" or "packed" are two words that come to mind, but both are used in mods or vanilla for 3x3 at this time. "bricks" is another option, but would probably hit confusion with the stone brick style blocks, so not sure what else to suggest as a prefix.

Edited by KnightMiner
  • Like 1

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I am having trouble getting the game to load. I changed nothing about my code but one day it chose to start doing this for some reason. I also get this error message aswell: Caused by: java.lang.NullPointerException: Registry Object not present: wonderfulwoodlands:turkey_tail_mushrooms. So I tried changing my registering to use a supplier of my block which corrected that error before but now it no longer changes anything. My blocks class: public class ModBlocks { public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, WonderfulWoodlands.MOD_ID); public static final RegistryObject<Block> TURKEY_TAIL_MUSHROOMS = registerBlock("turkey_tail_mushrooms", () -> new SmallShelfridgeBlock(BlockBehaviour.Properties.of() .setId(BLOCKS.key("turkey_tail_mushrooms")) .noCollission() .sound(SoundType.WOOD) )); public static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block) { RegistryObject<T> registeredBlock = BLOCKS.register(name, block); registerBlockItem(name, registeredBlock); return registeredBlock; } public static <T extends Block> void registerBlockItem(String name, RegistryObject<T> block) { ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties().setId(ModItems.ITEMS.key(name)))); } public static void register(IEventBus eventBus) { BLOCKS.register(eventBus); } } The SmallShelfridgeBlock class: public class SmallShelfridgeBlock extends Block { public static final EnumProperty<Direction> FACING = BlockStateProperties.HORIZONTAL_FACING; public static final IntegerProperty AMOUNT = BlockStateProperties.FLOWER_AMOUNT; public static final VoxelShape NORTH_SHAPE = Block.box(0, 0, 13, 16, 16, 3); public static final VoxelShape EAST_SHAPE = Block.box(0, 0, 0, 3, 16, 16); public static final VoxelShape SOUTH_SHAPE = Block.box(0, 0, 0, 16, 16, 3); public static final VoxelShape WEST_SHAPE = Block.box(0, 0, 13, 3, 16, 16); public SmallShelfridgeBlock(Properties properties) { super(properties); this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH).setValue(AMOUNT, 1)); } @Override protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) { pBuilder.add(FACING, AMOUNT); } @Override public boolean canBeReplaced(@NotNull BlockState blockState, BlockPlaceContext blockPlaceContext) { return !blockPlaceContext.isSecondaryUseActive() && blockPlaceContext.getItemInHand().is(this.asItem()) && blockState.getValue(AMOUNT) < 4 || super.canBeReplaced(blockState, blockPlaceContext); } @Override public @NotNull VoxelShape getShape(BlockState blockState, @NotNull BlockGetter blockGetter, @NotNull BlockPos blockPos, @NotNull CollisionContext collisionContext) { Direction direction = blockState.getValue(FACING); switch(direction) { default -> { return NORTH_SHAPE; } case EAST -> { return EAST_SHAPE; } case SOUTH -> { return SOUTH_SHAPE; } case WEST -> { return WEST_SHAPE; } } } @Override public BlockState getStateForPlacement(BlockPlaceContext blockPlaceContext) { BlockState blockstate = blockPlaceContext.getLevel().getBlockState(blockPlaceContext.getClickedPos()); return blockstate.is(this) ? blockstate.setValue(AMOUNT, Math.min(4, blockstate.getValue(AMOUNT) + 1)) : this.defaultBlockState().setValue(FACING, blockPlaceContext.getHorizontalDirection().getOpposite()); } } My latest.log: [22Feb2025 14:13:00.602] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forge_userdev_client, --version, MOD_DEV, --assetIndex, 19, --assetsDir, C:\Users\campb\.gradle\caches\forge_gradle\assets, --gameDir, ., --mixin.config, wonderfulwoodlands.mixins.json] [22Feb2025 14:13:00.605] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: JVM identified as Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.4+7-LTS [22Feb2025 14:13:00.606] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.2.4 starting: java version 21.0.4 by Eclipse Adoptium; OS Windows 11 arch amd64 version 10.0 [22Feb2025 14:13:00.791] [main/INFO] [net.minecraftforge.fml.loading.ImmediateWindowHandler/]: Loading ImmediateWindowProvider fmlearlywindow [22Feb2025 14:13:00.988] [main/INFO] [EARLYDISPLAY/]: Trying GL version 4.6 [22Feb2025 14:13:01.035] [main/INFO] [EARLYDISPLAY/]: Requested GL version 4.6 got version 4.6 [22Feb2025 14:13:01.504] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.7 Source=jar:file:///C:/Users/campb/.gradle/caches/modules-2/files-2.1/org.spongepowered/mixin/0.8.7/8ab114ac385e6dbdad5efafe28aba4df8120915f/mixin-0.8.7.jar!/ Service=ModLauncher Env=CLIENT [22Feb2025 14:13:02.124] [EarlyDisplay/INFO] [EARLYDISPLAY/]: GL info: Intel(R) UHD Graphics GL version 4.6.0 - Build 26.20.100.6911, Intel [22Feb2025 14:13:04.063] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: No dependencies to load found. Skipping! [22Feb2025 14:13:05.719] [main/INFO] [mixin/]: Compatibility level set to JAVA_21 [22Feb2025 14:13:05.774] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forge_userdev_client' with arguments [--version, MOD_DEV, --gameDir, ., --assetsDir, C:\Users\campb\.gradle\caches\forge_gradle\assets, --assetIndex, 19] [22Feb2025 14:13:05.927] [main/WARN] [mixin/]: Reference map 'wonderfulwoodlands.refmap.json' for wonderfulwoodlands.mixins.json could not be read. If this is a development environment you can ignore this message [22Feb2025 14:13:10.506] [Datafixer Bootstrap/INFO] [com.mojang.datafixers.DataFixerBuilder/]: 243 Datafixer optimizations took 996 milliseconds [22Feb2025 14:13:18.985] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:root [22Feb2025 14:13:18.985] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:sound_event [22Feb2025 14:13:18.985] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:fluid [22Feb2025 14:13:18.985] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:particle_type [22Feb2025 14:13:18.986] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:attribute [22Feb2025 14:13:18.987] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:mob_effect [22Feb2025 14:13:18.987] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:block [22Feb2025 14:13:18.987] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:enchantment_effect_component_type [22Feb2025 14:13:18.987] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:data_component_type [22Feb2025 14:13:18.988] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:entity_type [22Feb2025 14:13:18.988] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:item [22Feb2025 14:13:18.991] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:game_event [22Feb2025 14:13:18.991] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:potion [22Feb2025 14:13:18.991] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:block_entity_type [22Feb2025 14:13:18.992] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:stat_type [22Feb2025 14:13:18.992] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:custom_stat [22Feb2025 14:13:18.992] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:chunk_status [22Feb2025 14:13:18.992] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:rule_test [22Feb2025 14:13:18.993] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:rule_block_entity_modifier [22Feb2025 14:13:18.993] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:pos_rule_test [22Feb2025 14:13:18.993] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:menu [22Feb2025 14:13:18.993] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:recipe_type [22Feb2025 14:13:18.994] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:recipe_serializer [22Feb2025 14:13:18.995] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:position_source_type [22Feb2025 14:13:18.996] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:command_argument_type [22Feb2025 14:13:18.996] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:villager_type [22Feb2025 14:13:18.996] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:villager_profession [22Feb2025 14:13:18.998] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:point_of_interest_type [22Feb2025 14:13:19.001] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:memory_module_type [22Feb2025 14:13:19.017] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:sensor_type [22Feb2025 14:13:19.018] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:activity [22Feb2025 14:13:19.018] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:schedule [22Feb2025 14:13:19.018] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:loot_score_provider_type [22Feb2025 14:13:19.018] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:loot_number_provider_type [22Feb2025 14:13:19.019] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:map_decoration_type [22Feb2025 14:13:19.019] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:loot_nbt_provider_type [22Feb2025 14:13:19.019] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:loot_function_type [22Feb2025 14:13:19.019] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:loot_pool_entry_type [22Feb2025 14:13:19.019] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:loot_condition_type [22Feb2025 14:13:19.022] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:float_provider_type [22Feb2025 14:13:19.022] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:int_provider_type [22Feb2025 14:13:19.022] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:height_provider_type [22Feb2025 14:13:19.023] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:block_predicate_type [22Feb2025 14:13:19.023] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/carver [22Feb2025 14:13:19.023] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/structure_processor [22Feb2025 14:13:19.023] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/feature [22Feb2025 14:13:19.024] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/structure_placement [22Feb2025 14:13:19.024] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/structure_piece [22Feb2025 14:13:19.024] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/structure_type [22Feb2025 14:13:19.024] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/placement_modifier_type [22Feb2025 14:13:19.024] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/block_state_provider_type [22Feb2025 14:13:19.025] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/foliage_placer_type [22Feb2025 14:13:19.025] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/trunk_placer_type [22Feb2025 14:13:19.025] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/root_placer_type [22Feb2025 14:13:19.025] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/tree_decorator_type [22Feb2025 14:13:19.027] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/feature_size_type [22Feb2025 14:13:19.028] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/biome_source [22Feb2025 14:13:19.030] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/chunk_generator [22Feb2025 14:13:19.030] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/material_condition [22Feb2025 14:13:19.030] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/material_rule [22Feb2025 14:13:19.030] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/density_function_type [22Feb2025 14:13:19.031] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:block_type [22Feb2025 14:13:19.031] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/structure_pool_element [22Feb2025 14:13:19.031] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:worldgen/pool_alias_binding [22Feb2025 14:13:19.031] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:cat_variant [22Feb2025 14:13:19.031] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:frog_variant [22Feb2025 14:13:19.032] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:decorated_pot_pattern [22Feb2025 14:13:19.032] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:creative_mode_tab [22Feb2025 14:13:19.032] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:trigger_type [22Feb2025 14:13:19.032] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:number_format_type [22Feb2025 14:13:19.032] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:entity_sub_predicate_type [22Feb2025 14:13:19.034] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:item_sub_predicate_type [22Feb2025 14:13:19.034] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:enchantment_level_based_value_type [22Feb2025 14:13:19.035] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:enchantment_entity_effect_type [22Feb2025 14:13:19.035] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:enchantment_location_based_effect_type [22Feb2025 14:13:19.035] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:enchantment_value_effect_type [22Feb2025 14:13:19.036] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:enchantment_provider_type [22Feb2025 14:13:19.037] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:consume_effect_type [22Feb2025 14:13:19.037] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:recipe_display [22Feb2025 14:13:19.037] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:slot_display [22Feb2025 14:13:19.037] [pool-5-thread-1/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: minecraft:recipe_book_category [22Feb2025 14:13:19.595] [Render thread/WARN] [net.minecraft.server.packs.VanillaPackResourcesBuilder/]: Assets URL 'union:/C:/Users/campb/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4/forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar%230!/assets/.mcassetsroot' uses unexpected schema [22Feb2025 14:13:19.597] [Render thread/WARN] [net.minecraft.server.packs.VanillaPackResourcesBuilder/]: Assets URL 'union:/C:/Users/campb/.gradle/caches/forge_gradle/minecraft_user_repo/net/minecraftforge/forge/1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4/forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar%230!/data/.mcassetsroot' uses unexpected schema [22Feb2025 14:13:19.639] [Render thread/INFO] [com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService/]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] [22Feb2025 14:13:19.654] [Render thread/INFO] [net.minecraft.client.Minecraft/]: Setting user: Dev [22Feb2025 14:13:19.860] [Render thread/INFO] [net.minecraft.client.Minecraft/]: Backend library: LWJGL version 3.3.3+5 [22Feb2025 14:13:21.001] [modloading-worker-0/INFO] [net.minecraftforge.common.ForgeMod/FORGEMOD]: Forge mod loading, version 54.0.26, for MC 1.21.4 with MCP 20241203.143248 [22Feb2025 14:13:21.002] [modloading-worker-0/INFO] [net.minecraftforge.common.MinecraftForge/FORGE]: MinecraftForge v54.0.26 Initialized [22Feb2025 14:13:21.021] [modloading-worker-0/INFO] [net.minecraftforge.common.ForgeMod/FORGEMOD]: Opening jdk.naming.dns/com.sun.jndi.dns to java.naming [22Feb2025 14:13:21.448] [Render thread/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/]: Exception caught during firing event: null Index: 3 Listeners: 0: NORMAL 1: ASM: net.minecraftforge.registries.DeferredRegister$EventDispatcher@30548a28 handleEvent(Lnet/minecraftforge/registries/RegisterEvent;)V 2: ASM: net.minecraftforge.registries.DeferredRegister$EventDispatcher@446f7e86 handleEvent(Lnet/minecraftforge/registries/RegisterEvent;)V 3: ASM: net.minecraftforge.registries.DeferredRegister$EventDispatcher@523fad04 handleEvent(Lnet/minecraftforge/registries/RegisterEvent;)V java.lang.ExceptionInInitializerError at TRANSFORMER/[email protected]/net.Saveloy_Master.Wonderful_Woodlands.block.ModBlocks.lambda$static$0(ModBlocks.java:27) at TRANSFORMER/[email protected]/net.minecraftforge.registries.DeferredRegister$EventDispatcher.lambda$handleEvent$0(DeferredRegister.java:381) at TRANSFORMER/[email protected]/net.minecraftforge.registries.RegisterEvent.register(RegisterEvent.java:55) at TRANSFORMER/[email protected]/net.minecraftforge.registries.DeferredRegister$EventDispatcher.handleEvent(DeferredRegister.java:381) at TRANSFORMER/[email protected]/net.minecraftforge.registries.__EventDispatcher_handleEvent_RegisterEvent.invoke(.dynamic) at SECURE-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:46) at SECURE-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) at SECURE-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:288) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:184) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.lambda$postEventWithWrapInModOrder$19(ModLoader.java:400) at java.base/java.lang.Iterable.forEach(Iterable.java:75) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:148) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.postEventWithWrapInModOrder(ModLoader.java:398) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.postEventWrapContainerInModOrder(ModLoader.java:387) at TRANSFORMER/[email protected]/net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:351) at TRANSFORMER/[email protected]/net.minecraftforge.common.ForgeStatesProvider.lambda$gather$0(ForgeStatesProvider.java:34) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:258) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:247) at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:214) at TRANSFORMER/[email protected]/net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:48) at TRANSFORMER/[email protected]/net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:68) at TRANSFORMER/[email protected]/net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:48) at TRANSFORMER/[email protected]/net.minecraft.client.Minecraft.<init>(Minecraft.java:485) at TRANSFORMER/[email protected]/net.minecraft.client.main.Main.main(Main.java:224) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at SECURE-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:96) at SECURE-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:79) at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:77) at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:97) at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:116) at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:75) at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) at [email protected]/net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at net.minecraftforge.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) Caused by: java.lang.IllegalArgumentException: The min values need to be smaller or equals to the max values at TRANSFORMER/[email protected]/net.minecraft.world.phys.shapes.Shapes.box(Shapes.java:50) at TRANSFORMER/[email protected]/net.minecraft.world.level.block.Block.box(Block.java:145) at TRANSFORMER/[email protected]/net.Saveloy_Master.Wonderful_Woodlands.block.custom.SmallShelfridgeBlock.<clinit>(SmallShelfridgeBlock.java:25) ... 39 more [22Feb2025 14:13:21.453] [Render thread/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/LOADING]: Caught exception during event RegisterEvent dispatch for modid wonderfulwoodlands java.lang.ExceptionInInitializerError: null at TRANSFORMER/[email protected]/net.Saveloy_Master.Wonderful_Woodlands.block.ModBlocks.lambda$static$0(ModBlocks.java:27) ~[main/:?] at TRANSFORMER/[email protected]/net.minecraftforge.registries.DeferredRegister$EventDispatcher.lambda$handleEvent$0(DeferredRegister.java:381) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar%231!/:?] at TRANSFORMER/[email protected]/net.minecraftforge.registries.RegisterEvent.register(RegisterEvent.java:55) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar%231!/:?] at TRANSFORMER/[email protected]/net.minecraftforge.registries.DeferredRegister$EventDispatcher.handleEvent(DeferredRegister.java:381) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar%231!/:?] at TRANSFORMER/[email protected]/net.minecraftforge.registries.__EventDispatcher_handleEvent_RegisterEvent.invoke(.dynamic) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar%231!/:?] at SECURE-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:46) ~[eventbus-6.2.26.jar:?] at SECURE-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-6.2.26.jar:?] at SECURE-BOOTSTRAP/net.minecraftforge.eventbus/net.minecraftforge.eventbus.EventBus.post(EventBus.java:288) ~[eventbus-6.2.26.jar:?] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:184) ~[javafmllanguage-1.21.4-54.0.26.jar:54.0.26] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.lambda$postEventWithWrapInModOrder$19(ModLoader.java:400) ~[fmlcore-1.21.4-54.0.26.jar:1.0] at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:148) ~[fmlcore-1.21.4-54.0.26.jar:1.0] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.postEventWithWrapInModOrder(ModLoader.java:398) ~[fmlcore-1.21.4-54.0.26.jar:1.0] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.postEventWrapContainerInModOrder(ModLoader.java:387) ~[fmlcore-1.21.4-54.0.26.jar:1.0] at TRANSFORMER/[email protected]/net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:351) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at TRANSFORMER/[email protected]/net.minecraftforge.common.ForgeStatesProvider.lambda$gather$0(ForgeStatesProvider.java:34) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:258) ~[fmlcore-1.21.4-54.0.26.jar:1.0] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:247) ~[fmlcore-1.21.4-54.0.26.jar:1.0] at LAYER PLUGIN/[email protected]/net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:214) ~[fmlcore-1.21.4-54.0.26.jar:1.0] at TRANSFORMER/[email protected]/net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:48) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at TRANSFORMER/[email protected]/net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:68) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at TRANSFORMER/[email protected]/net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:48) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at TRANSFORMER/[email protected]/net.minecraft.client.Minecraft.<init>(Minecraft.java:485) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at TRANSFORMER/[email protected]/net.minecraft.client.main.Main.main(Main.java:224) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at SECURE-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:96) ~[fmlloader-1.21.4-54.0.26.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:79) ~[fmlloader-1.21.4-54.0.26.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:77) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:97) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:116) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:75) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) [modlauncher-10.2.4.jar!/:?] at [email protected]/net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) [bootstrap-2.1.8.jar!/:?] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at net.minecraftforge.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) [bootstrap-2.1.8.jar:2.1.8] at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) [bootstrap-2.1.8.jar:2.1.8] at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) [bootstrap-2.1.8.jar:2.1.8] Caused by: java.lang.IllegalArgumentException: The min values need to be smaller or equals to the max values at TRANSFORMER/[email protected]/net.minecraft.world.phys.shapes.Shapes.box(Shapes.java:50) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at TRANSFORMER/[email protected]/net.minecraft.world.level.block.Block.box(Block.java:145) ~[forge-1.21.4-54.0.26_mapped_parchment_2025.01.19-1.21.4-recomp.jar:?] at TRANSFORMER/[email protected]/net.Saveloy_Master.Wonderful_Woodlands.block.custom.SmallShelfridgeBlock.<clinit>(SmallShelfridgeBlock.java:25) ~[main/:?] ... 39 more [22Feb2025 14:13:21.488] [Render thread/ERROR] [net.minecraftforge.fml.javafmlmod.FMLModContainer/]: Exception caught during firing event: Registry Object not present: wonderfulwoodlands:turkey_tail_mushrooms Index: 2 Listeners: 0: NORMAL 1: ASM: net.minecraftforge.registries.DeferredRegister$EventDispatcher@30548a28 handleEvent(Lnet/minecraftforge/registries/RegisterEvent;)V 2: ASM: net.minecraftforge.registries.DeferredRegister$EventDispatcher@446f7e86 handleEvent(Lnet/minecraftforge/registries/RegisterEvent;)V 3: ASM: net.minecraftforge.registries.DeferredRegister$EventDispatcher@523fad04 handleEvent(Lnet/minecraftforge/registries/RegisterEvent;)V java.lang.NullPointerException: Registry Object not present: wonderfulwoodlands:turkey_tail_mushrooms  
    • actually, the thing is that forge is an client that was developed well for mods back in the day, (i know that i  write it 11 years later), and the downside was that forge needs a long of time to load (yes i tested it i need sometimes 2 minutes for optifine in forge to run it) and that will probably not change. if you are 1.16+ i suggest you to use fabric as the load times are lower than 10 seconds and yes i do have a lot of mods there. not to mehtion there is an better optimization client and yes i do get more fps on 1.21 fabric with sodium lithium and much more than with forge and optifine on 1.8.9
    • Also add the latest.log from your logs folder
  • Topics

×
×
  • Create New...

Important Information

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