diff --git a/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaConfiguredFeatures.java b/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaConfiguredFeatures.java index 32c5c84f..ad4b37fb 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaConfiguredFeatures.java +++ b/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaConfiguredFeatures.java @@ -7,6 +7,7 @@ import com.terraformersmc.terrestria.feature.tree.treedecorators.DanglingLeavesTreeDecorator; import com.terraformersmc.terrestria.feature.tree.treedecorators.SakuraTreeDecorator; import com.terraformersmc.terrestria.feature.tree.trunkplacers.*; +import com.terraformersmc.terrestria.init.helpers.TerrestriaRegistry; import com.terraformersmc.terrestria.init.helpers.WoodBlocks; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -79,7 +80,7 @@ public static void bootstrap(Registerable> registerable) RegistryEntryLookup> configuredFeatures = registerable.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE); RegistryEntryLookup placedFeatures = registerable.getRegistryLookup(RegistryKeys.PLACED_FEATURE); - register(registerable, PATCH_VOLCANIC_ISLAND_GRASS, Feature.RANDOM_PATCH, + TerrestriaRegistry.register(registerable, PATCH_VOLCANIC_ISLAND_GRASS, Feature.RANDOM_PATCH, new RandomPatchFeatureConfig(32, 15, 3, PlacedFeatures.createEntry(Feature.SIMPLE_BLOCK, new SimpleBlockFeatureConfig( new WeightedBlockStateProvider(createStatePoolBuilder() .add(Blocks.SHORT_GRASS.getDefaultState(), 1) @@ -89,12 +90,12 @@ public static void bootstrap(Registerable> registerable) .build())), BlockPredicate.IS_AIR))); - register(registerable, PATCH_DEAD_GRASS, Feature.RANDOM_PATCH, + TerrestriaRegistry.register(registerable, PATCH_DEAD_GRASS, Feature.RANDOM_PATCH, new RandomPatchFeatureConfig(4, 15, 3, PlacedFeatures.createEntry(Feature.SIMPLE_BLOCK, new SimpleBlockFeatureConfig( BlockStateProvider.of(TerrestriaBlocks.DEAD_GRASS.getDefaultState())), BlockPredicate.IS_AIR))); - register(registerable, PATCH_OUTBACK_BUSHLAND_GRASS, Feature.RANDOM_PATCH, + TerrestriaRegistry.register(registerable, PATCH_OUTBACK_BUSHLAND_GRASS, Feature.RANDOM_PATCH, new RandomPatchFeatureConfig(4, 15, 3, PlacedFeatures.createEntry(Feature.SIMPLE_BLOCK, new SimpleBlockFeatureConfig( new WeightedBlockStateProvider(createStatePoolBuilder() .add(TerrestriaBlocks.DEAD_GRASS.getDefaultState(), 3) @@ -102,7 +103,7 @@ public static void bootstrap(Registerable> registerable) .build())), BlockPredicate.IS_AIR))); - register(registerable, PATCH_OASIS_VEGETATION, Feature.RANDOM_PATCH, + TerrestriaRegistry.register(registerable, PATCH_OASIS_VEGETATION, Feature.RANDOM_PATCH, new RandomPatchFeatureConfig(32, 15, 3, PlacedFeatures.createEntry(Feature.SIMPLE_BLOCK, new SimpleBlockFeatureConfig( new WeightedBlockStateProvider(createStatePoolBuilder() .add(Blocks.FERN.getDefaultState(), 1) @@ -113,7 +114,7 @@ public static void bootstrap(Registerable> registerable) .build())), BlockPredicate.IS_AIR))); - register(registerable, PATCH_LUSH_DESERT_VEGETATION, Feature.RANDOM_PATCH, + TerrestriaRegistry.register(registerable, PATCH_LUSH_DESERT_VEGETATION, Feature.RANDOM_PATCH, new RandomPatchFeatureConfig(32, 15, 3, PlacedFeatures.createEntry(Feature.SIMPLE_BLOCK, new SimpleBlockFeatureConfig( new WeightedBlockStateProvider(createStatePoolBuilder() .add(TerrestriaBlocks.DEAD_GRASS.getDefaultState(), 2) @@ -122,7 +123,7 @@ public static void bootstrap(Registerable> registerable) .build())), BlockPredicate.IS_AIR))); - register(registerable, BRYCE_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, BRYCE_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.SMALL_OAK_LOG), new SpindlyTrunkPlacer(10, 0, 0), SimpleBlockStateProvider.of(Blocks.OAK_LEAVES), @@ -130,7 +131,7 @@ public static void bootstrap(Registerable> registerable) new TwoLayersFeatureSize(1, 0, 0)) .build()); - register(registerable, JUNGLE_PALM_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, JUNGLE_PALM_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(Blocks.JUNGLE_WOOD), new BentTrunkPlacer(15, 15, 15), SimpleBlockStateProvider.of(TerrestriaBlocks.JUNGLE_PALM_LEAVES), @@ -139,16 +140,16 @@ public static void bootstrap(Registerable> registerable) .ignoreVines() .build()); - register(registerable, SMALL_HEMLOCK_TREE, Feature.TREE, spruceOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState())); - register(registerable, SMALL_REDWOOD_TREE, Feature.TREE, spruceOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState())); + TerrestriaRegistry.register(registerable, SMALL_HEMLOCK_TREE, Feature.TREE, spruceOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState())); + TerrestriaRegistry.register(registerable, SMALL_REDWOOD_TREE, Feature.TREE, spruceOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState())); - register(registerable, HEMLOCK_TREE, Feature.TREE, tallSpruceOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState(), 24, 4, 3, 2, 5, 1, 11)); - register(registerable, REDWOOD_TREE, Feature.TREE, tallSpruceOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState(), 24, 4, 3, 5, 7, 12, 19)); + TerrestriaRegistry.register(registerable, HEMLOCK_TREE, Feature.TREE, tallSpruceOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState(), 24, 4, 3, 2, 5, 1, 11)); + TerrestriaRegistry.register(registerable, REDWOOD_TREE, Feature.TREE, tallSpruceOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState(), 24, 4, 3, 5, 7, 12, 19)); - register(registerable, MEGA_HEMLOCK_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, giantSpruceOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState(), 32, 8, 7, 2, 5, 1, 11)); - register(registerable, MEGA_REDWOOD_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, giantSpruceOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState(), 32, 8, 7, 2, 5, 12, 19)); + TerrestriaRegistry.register(registerable, MEGA_HEMLOCK_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, giantSpruceOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState(), 32, 8, 7, 2, 5, 1, 11)); + TerrestriaRegistry.register(registerable, MEGA_REDWOOD_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, giantSpruceOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState(), 32, 8, 7, 2, 5, 12, 19)); - register(registerable, RUBBER_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, RUBBER_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.RUBBER.log), new RubberTreeTrunkPlacer(6, 2, 2), SimpleBlockStateProvider.of(TerrestriaBlocks.RUBBER.leaves), @@ -156,7 +157,7 @@ public static void bootstrap(Registerable> registerable) new TwoLayersFeatureSize(1, 0, 1) ).build()); - register(registerable, CYPRESS_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, CYPRESS_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.CYPRESS.log), new StraightTrunkPlacer(7, 3, 0), SimpleBlockStateProvider.of(TerrestriaBlocks.CYPRESS.leaves), @@ -165,13 +166,13 @@ public static void bootstrap(Registerable> registerable) .ignoreVines() .build()); - register(registerable, FALLEN_HEMLOCK_LOG, Feature.TREE, fallenLogOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState(), new FallenStraightTrunkPlacer(5, 3, 1))); - register(registerable, FALLEN_REDWOOD_LOG, Feature.TREE, fallenLogOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState(), new FallenStraightTrunkPlacer(7, 2, 1))); + TerrestriaRegistry.register(registerable, FALLEN_HEMLOCK_LOG, Feature.TREE, fallenLogOf(TerrestriaBlocks.HEMLOCK, TerrestriaBlocks.HEMLOCK_SAPLING.getDefaultState(), new FallenStraightTrunkPlacer(5, 3, 1))); + TerrestriaRegistry.register(registerable, FALLEN_REDWOOD_LOG, Feature.TREE, fallenLogOf(TerrestriaBlocks.REDWOOD, TerrestriaBlocks.REDWOOD_SAPLING.getDefaultState(), new FallenStraightTrunkPlacer(7, 2, 1))); - register(registerable, JAPANESE_MAPLE_SHRUB, Feature.TREE, shrubOf(TerrestriaBlocks.JAPANESE_MAPLE.log.getDefaultState(), TerrestriaBlocks.JAPANESE_MAPLE_SHRUB_LEAVES.getDefaultState(), TerrestriaBlocks.JAPANESE_MAPLE_SHRUB_SAPLING.getDefaultState())); - register(registerable, OAK_SHRUB, Feature.TREE, shrubOf(Blocks.OAK_LOG.getDefaultState(), Blocks.OAK_LEAVES.getDefaultState(), Blocks.OAK_SAPLING.getDefaultState())); + TerrestriaRegistry.register(registerable, JAPANESE_MAPLE_SHRUB, Feature.TREE, shrubOf(TerrestriaBlocks.JAPANESE_MAPLE.log.getDefaultState(), TerrestriaBlocks.JAPANESE_MAPLE_SHRUB_LEAVES.getDefaultState(), TerrestriaBlocks.JAPANESE_MAPLE_SHRUB_SAPLING.getDefaultState())); + TerrestriaRegistry.register(registerable, OAK_SHRUB, Feature.TREE, shrubOf(Blocks.OAK_LOG.getDefaultState(), Blocks.OAK_LEAVES.getDefaultState(), Blocks.OAK_SAPLING.getDefaultState())); - register(registerable, RAINBOW_EUCALYPTUS_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, new QuarteredMegaTreeConfig(new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, RAINBOW_EUCALYPTUS_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, new QuarteredMegaTreeConfig(new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.RAINBOW_EUCALYPTUS.log), new QuarteredMegaCanopyTrunkPlacer(4, 2, 1), SimpleBlockStateProvider.of(TerrestriaBlocks.RAINBOW_EUCALYPTUS.leaves), @@ -182,7 +183,7 @@ public static void bootstrap(Registerable> registerable) SimpleBlockStateProvider.of(TerrestriaBlocks.RAINBOW_EUCALYPTUS.quarterLog), SimpleBlockStateProvider.of(TerrestriaBlocks.RAINBOW_EUCALYPTUS.wood))); - register(registerable, SMALL_RAINBOW_EUCALYPTUS_TREE, Feature.TREE, (new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, SMALL_RAINBOW_EUCALYPTUS_TREE, Feature.TREE, (new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.RAINBOW_EUCALYPTUS.log), new StraightTrunkPlacer(4, 8, 0), SimpleBlockStateProvider.of(TerrestriaBlocks.RAINBOW_EUCALYPTUS.leaves), @@ -191,7 +192,7 @@ public static void bootstrap(Registerable> registerable) .ignoreVines() .build()); - register(registerable, SAGUARO_CACTUS, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, SAGUARO_CACTUS, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.SAGUARO_CACTUS), new SaguaroCactusTrunkPlacer(0,0,0), SimpleBlockStateProvider.of(TerrestriaBlocks.SAGUARO_CACTUS), @@ -199,7 +200,7 @@ public static void bootstrap(Registerable> registerable) new TwoLayersFeatureSize(1, 0, 1)) .build()); - register(registerable, SAKURA_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, SAKURA_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.SAKURA.log), new SmallCanopyTree4BranchTrunkPlacer(4, 1, 1), SimpleBlockStateProvider.of(TerrestriaBlocks.SAKURA.leaves), @@ -208,7 +209,7 @@ public static void bootstrap(Registerable> registerable) .decorators(ImmutableList.of(new SakuraTreeDecorator())) .build()); - register(registerable, JAPANESE_MAPLE_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, JAPANESE_MAPLE_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.JAPANESE_MAPLE.log), new CanopyTree4BranchTrunkPlacer(4, 1, 1), SimpleBlockStateProvider.of(TerrestriaBlocks.JAPANESE_MAPLE.leaves), @@ -216,7 +217,7 @@ public static void bootstrap(Registerable> registerable) new TwoLayersFeatureSize(1, 0, 1)) .build()); - register(registerable, DARK_JAPANESE_MAPLE_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, DARK_JAPANESE_MAPLE_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.JAPANESE_MAPLE.log), new CanopyTree4BranchTrunkPlacer(4, 1, 1), SimpleBlockStateProvider.of(TerrestriaBlocks.DARK_JAPANESE_MAPLE_LEAVES), @@ -224,7 +225,7 @@ public static void bootstrap(Registerable> registerable) new TwoLayersFeatureSize(1, 0, 1)) .build()); - register(registerable, MEGA_CYPRESS_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, new QuarteredMegaTreeConfig(new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, MEGA_CYPRESS_TREE, TerrestriaFeatures.QUARTERED_MEGA_TREE, new QuarteredMegaTreeConfig(new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.CYPRESS.log), new QuarteredMegaCanopyTrunkPlacer(5, 2, 1), SimpleBlockStateProvider.of(TerrestriaBlocks.CYPRESS.leaves), @@ -235,16 +236,16 @@ public static void bootstrap(Registerable> registerable) SimpleBlockStateProvider.of(TerrestriaBlocks.CYPRESS.quarterLog), SimpleBlockStateProvider.of(TerrestriaBlocks.CYPRESS.wood))); - register(registerable, WILLOW_TREE, Feature.TREE, canopyOf(TerrestriaBlocks.WILLOW, TerrestriaBlocks.WILLOW_SAPLING.getDefaultState(), new CanopyTree4BranchTrunkPlacer(4, 1, 1), ImmutableList.of(new DanglingLeavesTreeDecorator(TerrestriaBlocks.WILLOW.leaves.getDefaultState())))); + TerrestriaRegistry.register(registerable, WILLOW_TREE, Feature.TREE, canopyOf(TerrestriaBlocks.WILLOW, TerrestriaBlocks.WILLOW_SAPLING.getDefaultState(), new CanopyTree4BranchTrunkPlacer(4, 1, 1), ImmutableList.of(new DanglingLeavesTreeDecorator(TerrestriaBlocks.WILLOW.leaves.getDefaultState())))); - register(registerable, YUCCA_PALM_TREE, Feature.TREE, new TreeFeatureConfig.Builder( + TerrestriaRegistry.register(registerable, YUCCA_PALM_TREE, Feature.TREE, new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(TerrestriaBlocks.YUCCA_PALM.log), new SmallBranchingTrunkPlacer(6, 2, 1), SimpleBlockStateProvider.of(TerrestriaBlocks.YUCCA_PALM.leaves), new SmallLogSphereFoliagePlacer(ConstantIntProvider.create(1), ConstantIntProvider.create(0)), new TwoLayersFeatureSize(1, 0, 1)).build()); - register(registerable, OUTBACK_BUSHLAND_TREES, Feature.RANDOM_SELECTOR, + TerrestriaRegistry.register(registerable, OUTBACK_BUSHLAND_TREES, Feature.RANDOM_SELECTOR, new RandomFeatureConfig( ImmutableList.of( new RandomFeatureEntry(placedFeatures.getOrThrow(TreePlacedFeatures.ACACIA_CHECKED), 0.95F), @@ -252,22 +253,22 @@ public static void bootstrap(Registerable> registerable) ), placedFeatures.getOrThrow(TreePlacedFeatures.FANCY_OAK_CHECKED))); - register(registerable, OAK_DOT_SHRUB, Feature.TREE, dotShrubOf(Blocks.OAK_LOG.getDefaultState(), Blocks.OAK_LEAVES.getDefaultState(), Blocks.OAK_SAPLING.getDefaultState())); - register(registerable, ACACIA_DOT_SHRUB, Feature.TREE, dotShrubOf(Blocks.ACACIA_LOG.getDefaultState(), Blocks.ACACIA_LEAVES.getDefaultState(), Blocks.ACACIA_SAPLING.getDefaultState())); + TerrestriaRegistry.register(registerable, OAK_DOT_SHRUB, Feature.TREE, dotShrubOf(Blocks.OAK_LOG.getDefaultState(), Blocks.OAK_LEAVES.getDefaultState(), Blocks.OAK_SAPLING.getDefaultState())); + TerrestriaRegistry.register(registerable, ACACIA_DOT_SHRUB, Feature.TREE, dotShrubOf(Blocks.ACACIA_LOG.getDefaultState(), Blocks.ACACIA_LEAVES.getDefaultState(), Blocks.ACACIA_SAPLING.getDefaultState())); - register(registerable, CATTAIL, TerrestriaFeatures.CATTAIL, new ProbabilityConfig(0.3F)); - register(registerable, DUM_DUM_HEAD, TerrestriaFeatures.DUM_DUM_HEAD, DefaultFeatureConfig.INSTANCE); + TerrestriaRegistry.register(registerable, CATTAIL, TerrestriaFeatures.CATTAIL, new ProbabilityConfig(0.3F)); + TerrestriaRegistry.register(registerable, DUM_DUM_HEAD, TerrestriaFeatures.DUM_DUM_HEAD, DefaultFeatureConfig.INSTANCE); } private static DataPool.Builder createStatePoolBuilder() { return DataPool.builder(); } - static TreeFeatureConfig canopyOf(WoodBlocks woodBlocks, BlockState sapling, CanopyTree4BranchTrunkPlacer trunkPlacer, List decorators) { + private static TreeFeatureConfig canopyOf(WoodBlocks woodBlocks, BlockState sapling, CanopyTree4BranchTrunkPlacer trunkPlacer, List decorators) { return canopyOf(woodBlocks.log.getDefaultState(), woodBlocks.leaves.getDefaultState(), sapling, trunkPlacer, decorators); } - static TreeFeatureConfig canopyOf(BlockState log, BlockState leaves, BlockState sapling, CanopyTree4BranchTrunkPlacer trunkPlacer, List decorators) { + private static TreeFeatureConfig canopyOf(BlockState log, BlockState leaves, BlockState sapling, CanopyTree4BranchTrunkPlacer trunkPlacer, List decorators) { return new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(log), trunkPlacer, @@ -278,11 +279,11 @@ static TreeFeatureConfig canopyOf(BlockState log, BlockState leaves, BlockState .build(); } - static TreeFeatureConfig fallenLogOf(WoodBlocks woodBlocks, BlockState sapling, FallenStraightTrunkPlacer trunk) { + private static TreeFeatureConfig fallenLogOf(WoodBlocks woodBlocks, BlockState sapling, FallenStraightTrunkPlacer trunk) { return fallenLogOf(woodBlocks.log.getDefaultState(), woodBlocks.leaves.getDefaultState(), sapling, trunk); } - static TreeFeatureConfig fallenLogOf(BlockState log, BlockState leaves, BlockState sapling, FallenStraightTrunkPlacer trunk) { + private static TreeFeatureConfig fallenLogOf(BlockState log, BlockState leaves, BlockState sapling, FallenStraightTrunkPlacer trunk) { return new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(log), trunk, @@ -293,11 +294,11 @@ static TreeFeatureConfig fallenLogOf(BlockState log, BlockState leaves, BlockSta .build(); } - static TreeFeatureConfig shrubOf(WoodBlocks woodBlocks, BlockState sapling) { + private static TreeFeatureConfig shrubOf(WoodBlocks woodBlocks, BlockState sapling) { return shrubOf(woodBlocks.log.getDefaultState(), woodBlocks.leaves.getDefaultState(), sapling); } - static TreeFeatureConfig shrubOf(BlockState log, BlockState leaves, BlockState sapling) { + private static TreeFeatureConfig shrubOf(BlockState log, BlockState leaves, BlockState sapling) { return new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(log), new StraightTrunkPlacer(1, 0, 0), @@ -307,7 +308,7 @@ static TreeFeatureConfig shrubOf(BlockState log, BlockState leaves, BlockState s .build(); } - static TreeFeatureConfig dotShrubOf(BlockState log, BlockState leaves, BlockState sapling) { + private static TreeFeatureConfig dotShrubOf(BlockState log, BlockState leaves, BlockState sapling) { return new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(log), new StraightTrunkPlacer(1, 1, 0), @@ -317,11 +318,11 @@ static TreeFeatureConfig dotShrubOf(BlockState log, BlockState leaves, BlockStat .build(); } - static TreeFeatureConfig spruceOf(WoodBlocks woodBlocks, BlockState sapling) { + private static TreeFeatureConfig spruceOf(WoodBlocks woodBlocks, BlockState sapling) { return spruceOf(woodBlocks.log.getDefaultState(), woodBlocks.leaves.getDefaultState(), sapling); } - static TreeFeatureConfig spruceOf(BlockState log, BlockState leaves, BlockState sapling) { + private static TreeFeatureConfig spruceOf(BlockState log, BlockState leaves, BlockState sapling) { return new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(log), new StraightTrunkPlacer(5, 2, 1), @@ -333,11 +334,11 @@ static TreeFeatureConfig spruceOf(BlockState log, BlockState leaves, BlockState .build(); } - static TreeFeatureConfig tallSpruceOf(WoodBlocks woodBlocks, BlockState sapling, int minHeight, int extraRandomHeight1, int extraRandomHeight2, int minLeavesRadius, int maxLeavesRadius, int minBareHeight, int maxBareHeight) { + private static TreeFeatureConfig tallSpruceOf(WoodBlocks woodBlocks, BlockState sapling, int minHeight, int extraRandomHeight1, int extraRandomHeight2, int minLeavesRadius, int maxLeavesRadius, int minBareHeight, int maxBareHeight) { return tallSpruceOf(woodBlocks.log.getDefaultState(), woodBlocks.leaves.getDefaultState(), sapling, minHeight, extraRandomHeight1, extraRandomHeight2, minLeavesRadius, maxLeavesRadius, minBareHeight, maxBareHeight); } - static TreeFeatureConfig tallSpruceOf(BlockState log, BlockState leaves, BlockState sapling, int minHeight, int extraRandomHeight1, int extraRandomHeight2, int minLeavesRadius, int maxLeavesRadius, int minBareHeight, int maxBareHeight) { + private static TreeFeatureConfig tallSpruceOf(BlockState log, BlockState leaves, BlockState sapling, int minHeight, int extraRandomHeight1, int extraRandomHeight2, int minLeavesRadius, int maxLeavesRadius, int minBareHeight, int maxBareHeight) { return new TreeFeatureConfig.Builder( SimpleBlockStateProvider.of(log), new StraightTrunkPlacer(minHeight, extraRandomHeight1, extraRandomHeight2), @@ -349,7 +350,7 @@ static TreeFeatureConfig tallSpruceOf(BlockState log, BlockState leaves, BlockSt .build(); } - static QuarteredMegaTreeConfig giantSpruceOf(WoodBlocks woodBlocks, BlockState sapling, int minHeight, int extraRandomHeight1, int extraRandomHeight2, int minLeavesRadius, int maxLeavesRadius, int minBareHeight, int maxBareHeight) { + private static QuarteredMegaTreeConfig giantSpruceOf(WoodBlocks woodBlocks, BlockState sapling, int minHeight, int extraRandomHeight1, int extraRandomHeight2, int minLeavesRadius, int maxLeavesRadius, int minBareHeight, int maxBareHeight) { if (!woodBlocks.hasQuarterLog()) { throw new IllegalArgumentException("giantSpruceOf() requires WoodBlocks with defined Quarter Logs: " + woodBlocks.getName()); } @@ -365,11 +366,7 @@ static QuarteredMegaTreeConfig giantSpruceOf(WoodBlocks woodBlocks, BlockState s SimpleBlockStateProvider.of(woodBlocks.wood)); } - public static RegistryKey> createRegistryKey(String name) { + private static RegistryKey> createRegistryKey(String name) { return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, Identifier.of(Terrestria.MOD_ID, name)); } - - public static > void register(Registerable> registerable, RegistryKey> key, F feature, FC config) { - ConfiguredFeatures.register(registerable, key, feature, config); - } } diff --git a/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaFeatures.java b/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaFeatures.java index 003c2478..9bb5ecc1 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaFeatures.java +++ b/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaFeatures.java @@ -1,21 +1,15 @@ package com.terraformersmc.terrestria.init; import com.mojang.serialization.Codec; -import com.terraformersmc.terrestria.Terrestria; import com.terraformersmc.terrestria.feature.CattailFeature; import com.terraformersmc.terrestria.feature.misc.DumDumHeadFeature; import com.terraformersmc.terrestria.feature.tree.treeconfigs.QuarteredMegaTreeConfig; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.util.Identifier; +import com.terraformersmc.terrestria.init.helpers.TerrestriaRegistry; import net.minecraft.world.gen.ProbabilityConfig; import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.FeatureConfig; import net.minecraft.world.gen.feature.TreeFeature; -// This class exports public feature constants, these fields have to be public -@SuppressWarnings("WeakerAccess") public class TerrestriaFeatures { public static CattailFeature CATTAIL; @@ -24,14 +18,10 @@ public class TerrestriaFeatures { @SuppressWarnings({"rawtypes, unchecked"}) public static void init() { - CATTAIL = register("cattail", new CattailFeature(ProbabilityConfig.CODEC, TerrestriaBlocks.CATTAIL, TerrestriaBlocks.TALL_CATTAIL)); - DUM_DUM_HEAD = register("dum_dum_head", new DumDumHeadFeature(DefaultFeatureConfig.CODEC)); + CATTAIL = TerrestriaRegistry.register("cattail", new CattailFeature(ProbabilityConfig.CODEC, TerrestriaBlocks.CATTAIL, TerrestriaBlocks.TALL_CATTAIL)); + DUM_DUM_HEAD = TerrestriaRegistry.register("dum_dum_head", new DumDumHeadFeature(DefaultFeatureConfig.CODEC)); // Super hacky casts, but it works - QUARTERED_MEGA_TREE = register("quartered_mega_tree", new TreeFeature((Codec) QuarteredMegaTreeConfig.CODEC)); - } - - public static , FC extends FeatureConfig> T register(String name, T feature) { - return Registry.register(Registries.FEATURE, new Identifier(Terrestria.MOD_ID, name), feature); + QUARTERED_MEGA_TREE = TerrestriaRegistry.register("quartered_mega_tree", new TreeFeature((Codec) QuarteredMegaTreeConfig.CODEC)); } } diff --git a/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaPlacedFeatures.java b/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaPlacedFeatures.java index 360e589c..0f26cdc6 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaPlacedFeatures.java +++ b/common/src/main/java/com/terraformersmc/terrestria/init/TerrestriaPlacedFeatures.java @@ -2,6 +2,7 @@ import com.terraformersmc.terrestria.Terrestria; import com.terraformersmc.terrestria.init.helpers.SurfaceLevelFilterPlacementModifier; +import com.terraformersmc.terrestria.init.helpers.TerrestriaRegistry; import net.minecraft.registry.Registerable; import net.minecraft.registry.RegistryEntryLookup; import net.minecraft.registry.RegistryKey; @@ -81,56 +82,56 @@ public static void bootstrap(Registerable registerable) { final BlockPredicate ON_SAND = BlockPredicate.matchingBlockTag(Direction.DOWN.getVector(), BlockTags.SAND); final BlockPredicate ON_DIRT_OR_SAND = BlockPredicate.eitherOf(ON_DIRT, ON_SAND); - register(registerable, CATTAILS_WARM, TerrestriaConfiguredFeatures.CATTAIL, + TerrestriaRegistry.register(registerable, CATTAILS_WARM, TerrestriaConfiguredFeatures.CATTAIL, CountPlacementModifier.of(80), SquarePlacementModifier.of(), PlacedFeatures.OCEAN_FLOOR_HEIGHTMAP, BlockFilterPlacementModifier.of(ON_DIRT_OR_SAND), BiomePlacementModifier.of()); - register(registerable, SPARSE_OAK_SHRUBS, TerrestriaConfiguredFeatures.OAK_SHRUB, + TerrestriaRegistry.register(registerable, SPARSE_OAK_SHRUBS, TerrestriaConfiguredFeatures.OAK_SHRUB, PlacedFeatures.createCountExtraModifier(1, 0.1f, 1), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, BlockFilterPlacementModifier.of(ON_DIRT), BiomePlacementModifier.of()); - register(registerable, PATCH_LUSH_FERNS, VegetationConfiguredFeatures.PATCH_TAIGA_GRASS, + TerrestriaRegistry.register(registerable, PATCH_LUSH_FERNS, VegetationConfiguredFeatures.PATCH_TAIGA_GRASS, CountPlacementModifier.of(16), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, BlockFilterPlacementModifier.of(ON_DIRT), BiomePlacementModifier.of()); - register(registerable, PATCH_VOLCANIC_ISLAND_GRASS, TerrestriaConfiguredFeatures.PATCH_VOLCANIC_ISLAND_GRASS, + TerrestriaRegistry.register(registerable, PATCH_VOLCANIC_ISLAND_GRASS, TerrestriaConfiguredFeatures.PATCH_VOLCANIC_ISLAND_GRASS, CountPlacementModifier.of(12), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, BlockFilterPlacementModifier.of(ON_DIRT), BiomePlacementModifier.of()); - register(registerable, PATCH_DEAD_GRASS, TerrestriaConfiguredFeatures.PATCH_DEAD_GRASS, + TerrestriaRegistry.register(registerable, PATCH_DEAD_GRASS, TerrestriaConfiguredFeatures.PATCH_DEAD_GRASS, CountPlacementModifier.of(12), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, BlockFilterPlacementModifier.of(ON_DIRT_OR_SAND), BiomePlacementModifier.of()); - register(registerable, PATCH_OUTBACK_BUSHLAND_GRASS, TerrestriaConfiguredFeatures.PATCH_OUTBACK_BUSHLAND_GRASS, + TerrestriaRegistry.register(registerable, PATCH_OUTBACK_BUSHLAND_GRASS, TerrestriaConfiguredFeatures.PATCH_OUTBACK_BUSHLAND_GRASS, CountPlacementModifier.of(12), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, BlockFilterPlacementModifier.of(ON_DIRT_OR_SAND), BiomePlacementModifier.of()); - register(registerable, PATCH_OASIS_VEGETATION, TerrestriaConfiguredFeatures.PATCH_OASIS_VEGETATION, + TerrestriaRegistry.register(registerable, PATCH_OASIS_VEGETATION, TerrestriaConfiguredFeatures.PATCH_OASIS_VEGETATION, CountPlacementModifier.of(6), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, BlockFilterPlacementModifier.of(ON_DIRT_OR_SAND), BiomePlacementModifier.of()); - register(registerable, PATCH_LUSH_DESERT_VEGETATION, TerrestriaConfiguredFeatures.PATCH_LUSH_DESERT_VEGETATION, + TerrestriaRegistry.register(registerable, PATCH_LUSH_DESERT_VEGETATION, TerrestriaConfiguredFeatures.PATCH_LUSH_DESERT_VEGETATION, CountPlacementModifier.of(4), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, @@ -153,7 +154,7 @@ public static void bootstrap(Registerable registerable) { registerTreeFeature(registerable, SPARSE_SMALL_REDWOOD_TREES, 1, ON_DIRT, TerrestriaConfiguredFeatures.SMALL_REDWOOD_TREE); - register(registerable, CALDERA_SMALL_HEMLOCK_TREES, TerrestriaConfiguredFeatures.SMALL_HEMLOCK_TREE, + TerrestriaRegistry.register(registerable, CALDERA_SMALL_HEMLOCK_TREES, TerrestriaConfiguredFeatures.SMALL_HEMLOCK_TREE, PlacedFeatures.createCountExtraModifier(1, 0.1f, 1), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 80, 320), @@ -161,7 +162,7 @@ public static void bootstrap(Registerable registerable) { BlockFilterPlacementModifier.of(ON_DIRT), BiomePlacementModifier.of()); - register(registerable, CALDERA_SMALL_REDWOOD_TREES, TerrestriaConfiguredFeatures.SMALL_REDWOOD_TREE, + TerrestriaRegistry.register(registerable, CALDERA_SMALL_REDWOOD_TREES, TerrestriaConfiguredFeatures.SMALL_REDWOOD_TREE, PlacedFeatures.createCountExtraModifier(1, 0.1f, 1), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 80, 320), @@ -177,7 +178,7 @@ public static void bootstrap(Registerable registerable) { registerTreeFeature(registerable, SPARSE_REDWOOD_TREES, 1, ON_DIRT, TerrestriaConfiguredFeatures.REDWOOD_TREE); - register(registerable, CALDERA_HEMLOCK_TREES, TerrestriaConfiguredFeatures.HEMLOCK_TREE, + TerrestriaRegistry.register(registerable, CALDERA_HEMLOCK_TREES, TerrestriaConfiguredFeatures.HEMLOCK_TREE, PlacedFeatures.createCountExtraModifier(1, 0.1f, 1), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 64, 100), @@ -185,7 +186,7 @@ public static void bootstrap(Registerable registerable) { BlockFilterPlacementModifier.of(ON_DIRT), BiomePlacementModifier.of()); - register(registerable, CALDERA_REDWOOD_TREES, TerrestriaConfiguredFeatures.REDWOOD_TREE, + TerrestriaRegistry.register(registerable, CALDERA_REDWOOD_TREES, TerrestriaConfiguredFeatures.REDWOOD_TREE, PlacedFeatures.createCountExtraModifier(1, 0.1f, 1), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 64, 100), @@ -223,7 +224,7 @@ public static void bootstrap(Registerable registerable) { registerTreeFeature(registerable, DENSEST_FANCY_OAK_TREES, 7, ON_DIRT, TreeConfiguredFeatures.FANCY_OAK); - register(registerable, JUNGLE_PALM_TREES, TerrestriaConfiguredFeatures.JUNGLE_PALM_TREE, + TerrestriaRegistry.register(registerable, JUNGLE_PALM_TREES, TerrestriaConfiguredFeatures.JUNGLE_PALM_TREE, PlacedFeatures.createCountExtraModifier(2, 0.1f, 1), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 62, 71), @@ -231,7 +232,7 @@ public static void bootstrap(Registerable registerable) { BlockFilterPlacementModifier.of(ON_DIRT_OR_SAND), BiomePlacementModifier.of()); - register(registerable, DENSER_JUNGLE_PALM_TREES, TerrestriaConfiguredFeatures.JUNGLE_PALM_TREE, + TerrestriaRegistry.register(registerable, DENSER_JUNGLE_PALM_TREES, TerrestriaConfiguredFeatures.JUNGLE_PALM_TREE, PlacedFeatures.createCountExtraModifier(5, 0.1f, 1), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 72, 320), @@ -239,7 +240,7 @@ public static void bootstrap(Registerable registerable) { BlockFilterPlacementModifier.of(ON_DIRT_OR_SAND), BiomePlacementModifier.of()); - register(registerable, RARE_DUM_DUM_HEADS, TerrestriaConfiguredFeatures.DUM_DUM_HEAD, + TerrestriaRegistry.register(registerable, RARE_DUM_DUM_HEADS, TerrestriaConfiguredFeatures.DUM_DUM_HEAD, PlacedFeatures.createCountExtraModifier(0, 0.1f, 1), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 62, 64), @@ -265,7 +266,7 @@ public static void bootstrap(Registerable registerable) { registerTreeFeature(registerable, SPARSE_WILLOW_TREES, 1, ON_DIRT_OR_SAND, TerrestriaConfiguredFeatures.WILLOW_TREE); - register(registerable, OUTBACK_YUCCA_PALM, TerrestriaConfiguredFeatures.YUCCA_PALM_TREE, PlacedFeatures.wouldSurvive(TerrestriaBlocks.YUCCA_PALM_SAPLING)); + TerrestriaRegistry.register(registerable, OUTBACK_YUCCA_PALM, TerrestriaConfiguredFeatures.YUCCA_PALM_TREE, PlacedFeatures.wouldSurvive(TerrestriaBlocks.YUCCA_PALM_SAPLING)); registerTreeFeature(registerable, OUTBACK_BUSHLAND_TREES, 2, ON_DIRT_OR_SAND, TerrestriaConfiguredFeatures.OUTBACK_BUSHLAND_TREES); @@ -277,7 +278,7 @@ public static void bootstrap(Registerable registerable) { registerTreeFeature(registerable, SAGUARO_CACTUSES, 2, ON_SAND, TerrestriaConfiguredFeatures.SAGUARO_CACTUS); - register(registerable, RARE_BRYCE_TREES, TerrestriaConfiguredFeatures.BRYCE_TREE, + TerrestriaRegistry.register(registerable, RARE_BRYCE_TREES, TerrestriaConfiguredFeatures.BRYCE_TREE, RarityFilterPlacementModifier.of(2), SquarePlacementModifier.of(), SurfaceLevelFilterPlacementModifier.of(Heightmap.Type.WORLD_SURFACE_WG, 80, 320), @@ -286,12 +287,12 @@ public static void bootstrap(Registerable registerable) { BiomePlacementModifier.of()); } - public static RegistryKey createRegistryKey(String name) { + private static RegistryKey createRegistryKey(String name) { return RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of(Terrestria.MOD_ID, name)); } - public static void registerTreeFeature(Registerable registerable, RegistryKey key, int count, BlockPredicate predicate, RegistryKey> feature) { - register(registerable, key, feature, + private static void registerTreeFeature(Registerable registerable, RegistryKey key, int count, BlockPredicate predicate, RegistryKey> feature) { + TerrestriaRegistry.register(registerable, key, feature, PlacedFeatures.createCountExtraModifier(count, 0.1f, 1), SquarePlacementModifier.of(), PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP, @@ -299,8 +300,8 @@ public static void registerTreeFeature(Registerable registerable, BiomePlacementModifier.of()); } - public static void registerTreeFeature(Registerable registerable, RegistryKey key, int count, int maxWaterDepth, BlockPredicate predicate, RegistryKey> feature) { - register(registerable, key, feature, + private static void registerTreeFeature(Registerable registerable, RegistryKey key, int count, int maxWaterDepth, BlockPredicate predicate, RegistryKey> feature) { + TerrestriaRegistry.register(registerable, key, feature, PlacedFeatures.createCountExtraModifier(count, 0.1f, 1), SquarePlacementModifier.of(), PlacedFeatures.OCEAN_FLOOR_HEIGHTMAP, @@ -308,10 +309,4 @@ public static void registerTreeFeature(Registerable registerable, BlockFilterPlacementModifier.of(predicate), BiomePlacementModifier.of()); } - - private static void register(Registerable registerable, RegistryKey key, RegistryKey> feature, PlacementModifier... placementModifiers) { - PlacedFeatures.register(registerable, key, - registerable.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE).getOrThrow(feature), - placementModifiers); - } } diff --git a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneBlocks.java b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneBlocks.java index 2ff2a2f0..226e15da 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneBlocks.java +++ b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneBlocks.java @@ -1,6 +1,5 @@ package com.terraformersmc.terrestria.init.helpers; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; public class StoneBlocks { @@ -28,10 +27,10 @@ public static StoneBlocks register(String name, MapColor color) { blocks.bricks = StoneVariantBlocks.register(name + "_bricks", name + "_brick", color, Blocks.STONE_BRICKS); blocks.mossyBricks = StoneVariantBlocks.register("mossy_" + name + "_bricks", "mossy_" + name + "_brick", color, Blocks.MOSSY_STONE_BRICKS); - blocks.button = TerrestriaRegistry.register(name + "_button", new ButtonBlock(BlockSetType.STONE, 20, FabricBlockSettings.copyOf(Blocks.STONE_BUTTON).mapColor(color))); - blocks.pressurePlate = TerrestriaRegistry.register(name + "_pressure_plate", new PressurePlateBlock(BlockSetType.STONE, FabricBlockSettings.copyOf(Blocks.STONE_PRESSURE_PLATE).mapColor(color))); - blocks.chiseledBricks = TerrestriaRegistry.register("chiseled_" + name + "_bricks", new Block(FabricBlockSettings.copyOf(Blocks.CRACKED_STONE_BRICKS).mapColor(color))); - blocks.crackedBricks = TerrestriaRegistry.register("cracked_" + name + "_bricks", new Block(FabricBlockSettings.copyOf(Blocks.CHISELED_STONE_BRICKS).mapColor(color))); + blocks.button = TerrestriaRegistry.register(name + "_button", new ButtonBlock(BlockSetType.STONE, 20, AbstractBlock.Settings.copy(Blocks.STONE_BUTTON).mapColor(color))); + blocks.pressurePlate = TerrestriaRegistry.register(name + "_pressure_plate", new PressurePlateBlock(BlockSetType.STONE, AbstractBlock.Settings.copy(Blocks.STONE_PRESSURE_PLATE).mapColor(color))); + blocks.chiseledBricks = TerrestriaRegistry.register("chiseled_" + name + "_bricks", new Block(AbstractBlock.Settings.copy(Blocks.CRACKED_STONE_BRICKS).mapColor(color))); + blocks.crackedBricks = TerrestriaRegistry.register("cracked_" + name + "_bricks", new Block(AbstractBlock.Settings.copy(Blocks.CHISELED_STONE_BRICKS).mapColor(color))); return blocks; } diff --git a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneVariantBlocks.java b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneVariantBlocks.java index d19dcea9..3a4490a5 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneVariantBlocks.java +++ b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/StoneVariantBlocks.java @@ -1,6 +1,5 @@ package com.terraformersmc.terrestria.init.helpers; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; public class StoneVariantBlocks { @@ -18,10 +17,10 @@ public static StoneVariantBlocks register(String name, MapColor color, Block fam public static StoneVariantBlocks register(String name, String shapedName, MapColor color, Block family) { StoneVariantBlocks blocks = new StoneVariantBlocks(); - blocks.full = TerrestriaRegistry.register(name, new Block(FabricBlockSettings.copyOf(family).mapColor(color))); - blocks.slab = TerrestriaRegistry.register(shapedName + "_slab", new SlabBlock(FabricBlockSettings.copyOf(family).mapColor(color))); - blocks.stairs = TerrestriaRegistry.register(shapedName + "_stairs", new StairsBlock(blocks.full.getDefaultState(), FabricBlockSettings.copyOf(family).mapColor(color))); - blocks.wall = TerrestriaRegistry.register(shapedName + "_wall", new WallBlock(FabricBlockSettings.copyOf(family).mapColor(color))); + blocks.full = TerrestriaRegistry.register(name, new Block(AbstractBlock.Settings.copy(family).mapColor(color))); + blocks.slab = TerrestriaRegistry.register(shapedName + "_slab", new SlabBlock(AbstractBlock.Settings.copy(family).mapColor(color))); + blocks.stairs = TerrestriaRegistry.register(shapedName + "_stairs", new StairsBlock(blocks.full.getDefaultState(), AbstractBlock.Settings.copy(family).mapColor(color))); + blocks.wall = TerrestriaRegistry.register(shapedName + "_wall", new WallBlock(AbstractBlock.Settings.copy(family).mapColor(color))); return blocks; } diff --git a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/TerrestriaRegistry.java b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/TerrestriaRegistry.java index b390583d..f6665b80 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/TerrestriaRegistry.java +++ b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/TerrestriaRegistry.java @@ -4,9 +4,12 @@ import net.minecraft.block.Block; import net.minecraft.item.*; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; +import net.minecraft.registry.*; import net.minecraft.util.Identifier; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.placementmodifier.PlacementModifier; + +import java.util.List; public class TerrestriaRegistry { @SuppressWarnings("UnnecessaryReturnStatement") @@ -14,11 +17,29 @@ public TerrestriaRegistry() { return; } + /* + * Blocks and Items + */ + + /** + * Registers a block item and associates it with its block. + * + * @param name Name ({@link Identifier} path string) of the block item + * @param block {@link Block} to associate to the block item + * @return Newly created {@link BlockItem} + */ public static BlockItem registerBlockItem(String name, Block block) { BlockItem item = new BlockItem(block, new Item.Settings()); return register(name, item); } + /** + * Registers an item. + * + * @param name Name ({@link Identifier} path string) of the item + * @param item {@link Item} to be registered + * @return Newly registered {@link Item} + */ public static I register(String name, I item) { if (item instanceof BlockItem blockItem) { blockItem.appendBlocks(Item.BLOCK_ITEMS, blockItem); @@ -26,7 +47,70 @@ public static I register(String name, I item) { return Registry.register(Registries.ITEM, Identifier.of(Terrestria.MOD_ID, name), item); } + /** + * Registers a block. + * + * @param name Name ({@link Identifier} path string) of the block + * @param block {@link Block} to be registered + * @return Newly registered {@link Block} + */ public static B register(String name, B block) { return Registry.register(Registries.BLOCK, Identifier.of(Terrestria.MOD_ID, name), block); } + + /* + * Features + */ + + /** + * Registers a feature. + * + * @param name Name ({@link Identifier} path string) of the feature + * @param feature {@link Feature} to be registered + * @return Newly registered {@link Feature} + */ + public static , FC extends FeatureConfig> T register(String name, T feature) { + return Registry.register(Registries.FEATURE, Identifier.of(Terrestria.MOD_ID, name), feature); + } + + /** + * Creates and registers a configured feature (during datagen). The configured feature will be created + * with the provided feature config and registered to the provided registerable under the provided key. + * + * @param registerable A registration-capable abstraction of a registry of configured features + * @param key {@link RegistryKey} of {@link ConfiguredFeature} being registered + * @param feature {@link Feature} being configured + * @param config {@link FeatureConfig} to apply to {@link Feature} being registered + */ + public static > void register(Registerable> registerable, RegistryKey> key, F feature, FC config) { + ConfiguredFeatures.register(registerable, key, feature, config); + } + + /** + * Creates and registers a placed feature (during datagen). The placed feature will be created with + * the provided placement modifiers and registered to the provided registerable under the provided key. + * + * @param registerable A registration-capable abstraction of a registry of placed features + * @param key {@link RegistryKey} of {@link PlacedFeature} being registered + * @param feature {@link RegistryKey} of {@link ConfiguredFeature} being placed + * @param placementModifiers Any {@link PlacementModifier}(s) to apply to {@link ConfiguredFeature} being registered + */ + public static void register(Registerable registerable, RegistryKey key, RegistryKey> feature, PlacementModifier... placementModifiers) { + register(registerable, key, feature, List.of(placementModifiers)); + } + + /** + * Creates and registers a placed feature (during datagen). The placed feature will be created with + * the provided placement modifiers and registered to the provided registerable under the provided key. + * + * @param registerable A registration-capable abstraction of a registry of placed features + * @param key {@link RegistryKey} of {@link PlacedFeature} being registered + * @param feature {@link RegistryKey} of {@link ConfiguredFeature} being placed + * @param placementModifiers {@link List} of {@link PlacementModifier}(s) to apply to {@link ConfiguredFeature} being registered + */ + public static void register(Registerable registerable, RegistryKey key, RegistryKey> feature, List placementModifiers) { + PlacedFeatures.register(registerable, key, + registerable.getRegistryLookup(RegistryKeys.CONFIGURED_FEATURE).getOrThrow(feature), + placementModifiers); + } } diff --git a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/WoodBlocks.java b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/WoodBlocks.java index d588a157..918b8958 100644 --- a/common/src/main/java/com/terraformersmc/terrestria/init/helpers/WoodBlocks.java +++ b/common/src/main/java/com/terraformersmc/terrestria/init/helpers/WoodBlocks.java @@ -10,7 +10,6 @@ import com.terraformersmc.terrestria.Terrestria; import com.terraformersmc.terrestria.block.TerrestriaOptiLeavesBlock; import com.terraformersmc.terrestria.init.TerrestriaBlocks; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.registry.FlammableBlockRegistry; import net.fabricmc.fabric.api.registry.StrippableBlockRegistry; import net.minecraft.block.*; @@ -50,24 +49,24 @@ private WoodBlocks(String name, WoodColors colors, LogSize size, boolean hasLeaf // register manufactured blocks - planks = TerrestriaRegistry.register(name + "_planks", new Block(FabricBlockSettings.copyOf(Blocks.OAK_PLANKS).mapColor(colors.planks))); - slab = TerrestriaRegistry.register(name + "_slab", new SlabBlock(FabricBlockSettings.copyOf(Blocks.OAK_SLAB).mapColor(colors.planks))); - stairs = TerrestriaRegistry.register(name + "_stairs", new StairsBlock(planks.getDefaultState(), FabricBlockSettings.copyOf(Blocks.OAK_STAIRS).mapColor(colors.planks))); - fence = TerrestriaRegistry.register(name + "_fence", new FenceBlock(FabricBlockSettings.copyOf(Blocks.OAK_FENCE).mapColor(colors.planks))); - fenceGate = TerrestriaRegistry.register(name + "_fence_gate", new FenceGateBlock(WoodType.OAK, FabricBlockSettings.copyOf(Blocks.OAK_FENCE_GATE).mapColor(colors.planks))); - door = TerrestriaRegistry.register(name + "_door", new DoorBlock(BlockSetType.OAK, FabricBlockSettings.copyOf(Blocks.OAK_DOOR).mapColor(colors.planks))); - button = TerrestriaRegistry.register(name + "_button", new ButtonBlock(BlockSetType.OAK, 30, FabricBlockSettings.copyOf(Blocks.OAK_BUTTON).mapColor(colors.planks))); - pressurePlate = TerrestriaRegistry.register(name + "_pressure_plate", new PressurePlateBlock(BlockSetType.OAK, FabricBlockSettings.copyOf(Blocks.OAK_PRESSURE_PLATE).mapColor(colors.planks))); - trapdoor = TerrestriaRegistry.register(name + "_trapdoor", new TrapdoorBlock(BlockSetType.OAK, FabricBlockSettings.copyOf(Blocks.OAK_TRAPDOOR).mapColor(colors.planks))); + planks = TerrestriaRegistry.register(name + "_planks", new Block(AbstractBlock.Settings.copy(Blocks.OAK_PLANKS).mapColor(colors.planks))); + slab = TerrestriaRegistry.register(name + "_slab", new SlabBlock(AbstractBlock.Settings.copy(Blocks.OAK_SLAB).mapColor(colors.planks))); + stairs = TerrestriaRegistry.register(name + "_stairs", new StairsBlock(planks.getDefaultState(), AbstractBlock.Settings.copy(Blocks.OAK_STAIRS).mapColor(colors.planks))); + fence = TerrestriaRegistry.register(name + "_fence", new FenceBlock(AbstractBlock.Settings.copy(Blocks.OAK_FENCE).mapColor(colors.planks))); + fenceGate = TerrestriaRegistry.register(name + "_fence_gate", new FenceGateBlock(WoodType.OAK, AbstractBlock.Settings.copy(Blocks.OAK_FENCE_GATE).mapColor(colors.planks))); + door = TerrestriaRegistry.register(name + "_door", new DoorBlock(BlockSetType.OAK, AbstractBlock.Settings.copy(Blocks.OAK_DOOR).mapColor(colors.planks))); + button = TerrestriaRegistry.register(name + "_button", new ButtonBlock(BlockSetType.OAK, 30, AbstractBlock.Settings.copy(Blocks.OAK_BUTTON).mapColor(colors.planks))); + pressurePlate = TerrestriaRegistry.register(name + "_pressure_plate", new PressurePlateBlock(BlockSetType.OAK, AbstractBlock.Settings.copy(Blocks.OAK_PRESSURE_PLATE).mapColor(colors.planks))); + trapdoor = TerrestriaRegistry.register(name + "_trapdoor", new TrapdoorBlock(BlockSetType.OAK, AbstractBlock.Settings.copy(Blocks.OAK_TRAPDOOR).mapColor(colors.planks))); Identifier signTexture = Identifier.of(Terrestria.MOD_ID, "entity/signs/" + name); - sign = TerrestriaRegistry.register(name + "_sign", new TerraformSignBlock(signTexture, FabricBlockSettings.copyOf(Blocks.OAK_SIGN).mapColor(colors.planks))); - wallSign = TerrestriaRegistry.register(name + "_wall_sign", new TerraformWallSignBlock(signTexture, FabricBlockSettings.copyOf(Blocks.OAK_WALL_SIGN).mapColor(colors.planks).dropsLike(sign))); + sign = TerrestriaRegistry.register(name + "_sign", new TerraformSignBlock(signTexture, AbstractBlock.Settings.copy(Blocks.OAK_SIGN).mapColor(colors.planks))); + wallSign = TerrestriaRegistry.register(name + "_wall_sign", new TerraformWallSignBlock(signTexture, AbstractBlock.Settings.copy(Blocks.OAK_WALL_SIGN).mapColor(colors.planks).dropsLike(sign))); Identifier hangingSignTexture = Identifier.of(Terrestria.MOD_ID, "entity/signs/hanging/" + name); Identifier hangingSignGuiTexture = Identifier.of(Terrestria.MOD_ID, "textures/gui/hanging_signs/" + name); - hangingSign = TerrestriaRegistry.register(name + "_hanging_sign", new TerraformHangingSignBlock(hangingSignTexture, hangingSignGuiTexture, FabricBlockSettings.copyOf(Blocks.OAK_HANGING_SIGN).mapColor(colors.planks))); - wallHangingSign = TerrestriaRegistry.register(name + "_wall_hanging_sign", new TerraformWallHangingSignBlock(hangingSignTexture, hangingSignGuiTexture, FabricBlockSettings.copyOf(Blocks.OAK_WALL_HANGING_SIGN).mapColor(colors.planks).dropsLike(hangingSign))); + hangingSign = TerrestriaRegistry.register(name + "_hanging_sign", new TerraformHangingSignBlock(hangingSignTexture, hangingSignGuiTexture, AbstractBlock.Settings.copy(Blocks.OAK_HANGING_SIGN).mapColor(colors.planks))); + wallHangingSign = TerrestriaRegistry.register(name + "_wall_hanging_sign", new TerraformWallHangingSignBlock(hangingSignTexture, hangingSignGuiTexture, AbstractBlock.Settings.copy(Blocks.OAK_WALL_HANGING_SIGN).mapColor(colors.planks).dropsLike(hangingSign))); // register natural and stripped blocks @@ -75,17 +74,17 @@ private WoodBlocks(String name, WoodColors colors, LogSize size, boolean hasLeaf if (size.equals(LogSize.SMALL)) { throw new IllegalArgumentException("Small log trees are not compatible with extended leaves, I'm not sure how you even did this..."); } - leaves = TerrestriaRegistry.register(name + "_leaves", new TerrestriaOptiLeavesBlock(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES).mapColor(colors.leaves).allowsSpawning(TerrestriaBlocks::canSpawnOnLeaves).suffocates(TerrestriaBlocks::never).blockVision(TerrestriaBlocks::never))); + leaves = TerrestriaRegistry.register(name + "_leaves", new TerrestriaOptiLeavesBlock(AbstractBlock.Settings.copy(Blocks.OAK_LEAVES).mapColor(colors.leaves).allowsSpawning(TerrestriaBlocks::canSpawnOnLeaves).suffocates(TerrestriaBlocks::never).blockVision(TerrestriaBlocks::never))); } else { if (size.equals(LogSize.SMALL)) { - leaves = TerrestriaRegistry.register(name + "_leaves", new TransparentLeavesBlock(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES).mapColor(colors.leaves).allowsSpawning(TerrestriaBlocks::canSpawnOnLeaves).suffocates(TerrestriaBlocks::never).blockVision(TerrestriaBlocks::never))); + leaves = TerrestriaRegistry.register(name + "_leaves", new TransparentLeavesBlock(AbstractBlock.Settings.copy(Blocks.OAK_LEAVES).mapColor(colors.leaves).allowsSpawning(TerrestriaBlocks::canSpawnOnLeaves).suffocates(TerrestriaBlocks::never).blockVision(TerrestriaBlocks::never))); } else { - leaves = TerrestriaRegistry.register(name + "_leaves", new LeavesBlock(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES).mapColor(colors.leaves).allowsSpawning(TerrestriaBlocks::canSpawnOnLeaves).suffocates(TerrestriaBlocks::never).blockVision(TerrestriaBlocks::never))); + leaves = TerrestriaRegistry.register(name + "_leaves", new LeavesBlock(AbstractBlock.Settings.copy(Blocks.OAK_LEAVES).mapColor(colors.leaves).allowsSpawning(TerrestriaBlocks::canSpawnOnLeaves).suffocates(TerrestriaBlocks::never).blockVision(TerrestriaBlocks::never))); } } if (hasLeafPile) { - leafPile = TerrestriaRegistry.register(name + "_leaf_pile", new LeafPileBlock(FabricBlockSettings.copyOf(Blocks.PINK_PETALS).mapColor(colors.leaves))); + leafPile = TerrestriaRegistry.register(name + "_leaf_pile", new LeafPileBlock(AbstractBlock.Settings.copy(Blocks.PINK_PETALS).mapColor(colors.leaves))); } else { leafPile = null; }