This Rocks 1.1.0

Added Starfish
Added Underwater Generation
Changed Block Sounds
Changed SelectionBox sizes
New Seashell Loot Table
Update MidnightHats
This commit is contained in:
Motschen
2020-11-01 15:45:45 +01:00
parent 83279cc769
commit c6b4e00e0e
29 changed files with 568 additions and 41 deletions

View File

@@ -36,37 +36,35 @@ public class FeatureInjector {
// Sticks
if (biome.toString().contains("minecraft:forest") || biome.toString().contains("minecraft:wooded_hills") ||
biome.toString().contains("minecraft:wooded_mountains") || biome.toString().contains("minecraft:plains") ||
biome.toString().contains("minecraft:flower_forest") || biome.toString().contains("minecraft:swamp") ||
biome.toString().contains("minecraft:swamp_hills") || biome.toString().contains("minecraft:wooded_badlands_plateau") ||
biome.toString().contains("minecraft:modified_wooded_badlands_plateau")) {
biome.toString().contains("minecraft:flower_forest") || biome.toString().contains("minecraft:wooded_badlands_plateau") ||
biome.toString().contains("minecraft:modified_wooded_badlands_plateau") || biome.getCategory() == Biome.Category.SWAMP) {
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.OAK_STICK_FEATURE);
}
if (biome.toString().contains("minecraft:forest") || biome.toString().contains("minecraft:birch_forest") ||
biome.toString().contains("minecraft:birch_forest_hills") || biome.toString().contains("minecraft:flower_forest")) {
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.BIRCH_STICK_FEATURE);
}
if (biome.toString().contains("minecraft:taiga") || biome.toString().contains("minecraft:taiga_mountains") ||
biome.toString().contains("minecraft:giant_spruce_taiga") || biome.toString().contains("minecraft:taiga_hills")||
biome.toString().contains("minecraft:giant_spruce_taiga_hills") || biome.toString().contains("minecraft:snowy_taiga_mountain") ||
biome.toString().contains("minecraft:snowy_taiga") || biome.toString().contains("minecraft:snowy_taiga_hills") ||
biome.toString().contains("minecraft:giant_tree_taiga") || biome.toString().contains("minecraft:giant_tree_taiga_hills") ||
biome.toString().contains("minecraft:wooded_mountains")) {
if (biome.toString().contains("minecraft:wooded_mountains") || biome.getCategory() == Biome.Category.TAIGA) {
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.SPRUCE_STICK_FEATURE);
}
if (biome.toString().contains("minecraft:savanna") || biome.toString().contains("minecraft:savanna_plateau") ||
biome.toString().contains("minecraft:shattered_savanna") || biome.toString().contains("minecraft:shattered_savanna_plateau")) {
if (biome.getCategory() == Biome.Category.SAVANNA) {
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.ACACIA_STICK_FEATURE);
}
if (biome.getCategory() == Biome.Category.JUNGLE) {
addFeature(biome, GenerationStep.Feature.UNDERGROUND_DECORATION, StickFeatures.JUNGLE_STICK_FEATURE);
}
if (biome.toString().contains("minecraft:dark_forest") || biome.toString().contains("minecraft:dark_forest_hills") ||
biome.toString().contains("minecraft:birch_forest_hills") || biome.toString().contains("minecraft:flower_forest")) {
biome.toString().contains("minecraft:dark_forest_mountains")) {
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, StickFeatures.DARK_OAK_STICK_FEATURE);
}
// Misc
if (biome.getCategory() == Biome.Category.BEACH) {
if (biome.getCategory() == Biome.Category.BEACH && !biome.toString().contains("minecraft:snowy_beach")) {
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.SEASHELL_FEATURE);
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.STARFISH_FEATURE);
}
if (biome.getCategory() == Biome.Category.OCEAN) {
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.UNDERWATER_STARFISH_FEATURE);
addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.UNDERWATER_SEASHELL_FEATURE);
}
}

View File

@@ -0,0 +1,36 @@
package eu.midnightdust.motschen.rocks.world;
import eu.midnightdust.motschen.rocks.RocksMain;
import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation;
import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation;
import net.minecraft.state.property.Properties;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.gen.ProbabilityConfig;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.FeatureConfig;
import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider;
public class FeatureRegistry<FC extends FeatureConfig> {
public static final UnderwaterFeature UNDERWATER_STARFISH_FEATURE;
public static final UnderwaterFeature UNDERWATER_SEASHELL_FEATURE;
private static <C extends FeatureConfig, F extends Feature<C>> F register(String name, F feature) {
return Registry.register(Registry.FEATURE, name, feature);
}
private static final WeightedBlockStateProvider StarfishStates = new WeightedBlockStateProvider()
.addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION, StarfishVariation.RED).with(Properties.WATERLOGGED, true), 6)
.addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.PINK).with(Properties.WATERLOGGED, true), 7)
.addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.ORANGE).with(Properties.WATERLOGGED, true), 2);
private static final WeightedBlockStateProvider SeashellStates = new WeightedBlockStateProvider()
.addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION, SeashellVariation.YELLOW).with(Properties.WATERLOGGED, true), 7)
.addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.PINK).with(Properties.WATERLOGGED, true), 2)
.addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.WHITE).with(Properties.WATERLOGGED, true), 6);
static {
UNDERWATER_STARFISH_FEATURE = (UnderwaterFeature)register("underwater_starfish", new UnderwaterFeature(ProbabilityConfig.CODEC, StarfishStates));
UNDERWATER_SEASHELL_FEATURE = (UnderwaterFeature)register("underwater_seashell", new UnderwaterFeature(ProbabilityConfig.CODEC, SeashellStates));
}
}

View File

@@ -2,14 +2,13 @@ package eu.midnightdust.motschen.rocks.world;
import eu.midnightdust.motschen.rocks.RocksMain;
import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation;
import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation;
import eu.midnightdust.motschen.rocks.blockstates.StickVariation;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.BuiltinRegistries;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.ConfiguredFeatures;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.RandomPatchFeatureConfig;
import net.minecraft.world.gen.ProbabilityConfig;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.placer.SimpleBlockPlacer;
import net.minecraft.world.gen.stateprovider.SimpleBlockStateProvider;
import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider;
@@ -24,9 +23,25 @@ public class MiscFeatures {
SimpleBlockPlacer.INSTANCE))
.tries(1).spreadX(0).spreadY(0).spreadZ(0)
.build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1);
public static ConfiguredFeature<?, ?> STARFISH_FEATURE = Feature.RANDOM_PATCH.configure(
(new RandomPatchFeatureConfig.Builder(
new WeightedBlockStateProvider()
.addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.RED), 2)
.addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.PINK), 6)
.addState(RocksMain.Starfish.getDefaultState().with(RocksMain.STARFISH_VARIATION,StarfishVariation.ORANGE), 7),
SimpleBlockPlacer.INSTANCE))
.tries(1).spreadX(0).spreadY(0).spreadZ(0)
.build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1);
public static ConfiguredFeature<?, ?> UNDERWATER_STARFISH_FEATURE = FeatureRegistry.UNDERWATER_STARFISH_FEATURE.configure(new ProbabilityConfig(1));
public static ConfiguredFeature<?, ?> UNDERWATER_SEASHELL_FEATURE = FeatureRegistry.UNDERWATER_SEASHELL_FEATURE.configure(new ProbabilityConfig(1));
public static void init() {
Registry<ConfiguredFeature<?, ?>> registry = BuiltinRegistries.CONFIGURED_FEATURE;
Registry.register(registry, new Identifier(RocksMain.MOD_ID, "seashell"), SEASHELL_FEATURE);
Registry.register(registry, new Identifier(RocksMain.MOD_ID, "starfish"), STARFISH_FEATURE);
Registry.register(registry, new Identifier(RocksMain.MOD_ID, "underwater_starfish"), UNDERWATER_STARFISH_FEATURE);
Registry.register(registry, new Identifier(RocksMain.MOD_ID, "underwater_seashell"), UNDERWATER_SEASHELL_FEATURE);
}
}

View File

@@ -0,0 +1,52 @@
package eu.midnightdust.motschen.rocks.world;
import com.mojang.serialization.Codec;
import eu.midnightdust.motschen.rocks.RocksMain;
import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.RailPlacementHelper;
import net.minecraft.block.TallSeagrassBlock;
import net.minecraft.block.enums.DoubleBlockHalf;
import net.minecraft.state.property.Properties;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Heightmap;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.gen.ProbabilityConfig;
import net.minecraft.world.gen.chunk.ChunkGenerator;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.placer.SimpleBlockPlacer;
import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider;
import java.util.Random;
public class UnderwaterFeature extends Feature<ProbabilityConfig> {
WeightedBlockStateProvider weightedBlockStateProvider1;
public UnderwaterFeature(Codec<ProbabilityConfig> codec, WeightedBlockStateProvider weightedBlockStateProvider) {
super(codec);
weightedBlockStateProvider1 = weightedBlockStateProvider;
}
public boolean generate(StructureWorldAccess structureWorldAccess, ChunkGenerator chunkGenerator, Random random, BlockPos blockPos, ProbabilityConfig probabilityConfig) {
boolean bl = false;
int i = random.nextInt(8) - random.nextInt(8);
int j = random.nextInt(8) - random.nextInt(8);
int k = structureWorldAccess.getTopY(Heightmap.Type.OCEAN_FLOOR, blockPos.getX() + i, blockPos.getZ() + j);
BlockPos blockPos2 = new BlockPos(blockPos.getX() + i, k, blockPos.getZ() + j);
if (structureWorldAccess.getBlockState(blockPos2).isOf(Blocks.WATER)) {
boolean bl2 = random.nextDouble() < (double)probabilityConfig.probability;
boolean bl3 = random.nextDouble() < (double)2;
BlockState blockState = weightedBlockStateProvider1.getBlockState(random,blockPos);
if (blockState.canPlaceAt(structureWorldAccess, blockPos2)) {
structureWorldAccess.setBlockState(blockPos2, blockState, 2);
bl = true;
}
}
return bl;
}
}