From 4b53dcd28963ebf44dca1ca99a10129ba21c23a3 Mon Sep 17 00:00:00 2001 From: Motschen Date: Sat, 14 Nov 2020 17:38:01 +0100 Subject: [PATCH] This Rocks 1.2.0 -Added geysers! -Added Granite, Diorite, Andesite, Gravel, Netherrack and Soul Soil rocks! -Tweaked worldgen to fix some minor issues. --- gradle.properties | 2 +- .../motschen/rocks/RocksClient.java | 18 --- .../motschen/rocks/RocksMain.java | 41 ++++++- .../motschen/rocks/block/NetherGeyser.java | 54 +++++++++ .../motschen/rocks/block/OverworldGeyser.java | 63 ++++++++++ .../motschen/rocks/block/Rock.java | 1 - .../motschen/rocks/block/Seashell.java | 4 - .../motschen/rocks/block/Starfish.java | 1 - .../motschen/rocks/block/Stick.java | 1 - .../block/blockentity/BlockEntityInit.java | 4 + .../blockentity/NetherGeyserBlockEntity.java | 50 ++++++++ .../OverworldGeyserBlockEntity.java | 55 +++++++++ .../blockentity/StarfishBlockEntity.java | 1 - .../motschen/rocks/world/FeatureInjector.java | 19 ++- .../motschen/rocks/world/FeatureRegistry.java | 9 +- .../motschen/rocks/world/MiscFeatures.java | 14 ++- .../motschen/rocks/world/NetherFeatures.java | 66 +++++++++++ .../motschen/rocks/world/RockFeatures.java | 60 ++++++++-- .../motschen/rocks/world/SnowFeature.java | 49 ++++++++ .../motschen/rocks/world/StickFeatures.java | 17 +-- .../rocks/world/UnderwaterFeature.java | 9 -- .../rocks/blockstates/andesite_rock.json | 8 ++ .../rocks/blockstates/diorite_rock.json | 8 ++ .../assets/rocks/blockstates/geyser.json | 8 ++ .../rocks/blockstates/granite_rock.json | 8 ++ .../assets/rocks/blockstates/gravel_rock.json | 8 ++ .../rocks/blockstates/nether_geyser.json | 6 + .../rocks/blockstates/netherrack_rock.json | 8 ++ .../rocks/blockstates/soul_soil_rock.json | 8 ++ .../resources/assets/rocks/lang/de_de.json | 16 ++- .../resources/assets/rocks/lang/en_us.json | 16 ++- .../rocks/materialmaps/block/geyser.json | 10 ++ .../materialmaps/block/nether_geyser.json | 10 ++ .../assets/rocks/models/block/geyser_off.json | 108 ++++++++++++++++++ .../assets/rocks/models/block/geyser_on.json | 7 ++ .../models/block/large_andesite_rock.json | 7 ++ .../models/block/large_diorite_rock.json | 7 ++ .../models/block/large_granite_rock.json | 7 ++ .../rocks/models/block/large_gravel_rock.json | 7 ++ .../models/block/large_netherrack_rock.json | 7 ++ .../models/block/large_soul_soil_rock.json | 7 ++ .../models/block/medium_andesite_rock.json | 7 ++ .../models/block/medium_diorite_rock.json | 7 ++ .../models/block/medium_granite_rock.json | 7 ++ .../models/block/medium_gravel_rock.json | 7 ++ .../models/block/medium_netherrack_rock.json | 7 ++ .../models/block/medium_soul_soil_rock.json | 7 ++ .../rocks/models/block/nether_geyser_off.json | 9 ++ .../rocks/models/block/nether_geyser_on.json | 7 ++ .../models/block/small_andesite_rock.json | 7 ++ .../models/block/small_diorite_rock.json | 7 ++ .../models/block/small_granite_rock.json | 7 ++ .../rocks/models/block/small_gravel_rock.json | 7 ++ .../models/block/small_netherrack_rock.json | 7 ++ .../models/block/small_soul_soil_rock.json | 7 ++ .../rocks/models/block/snowy_geyser_off.json | 87 ++++++++++++++ .../rocks/models/block/snowy_geyser_on.json | 7 ++ .../models/block/tiny_andesite_rock.json | 7 ++ .../rocks/models/block/tiny_diorite_rock.json | 7 ++ .../rocks/models/block/tiny_granite_rock.json | 7 ++ .../rocks/models/block/tiny_gravel_rock.json | 7 ++ .../models/block/tiny_netherrack_rock.json | 7 ++ .../models/block/tiny_soul_soil_rock.json | 7 ++ .../rocks/models/item/andesite_rock.json | 3 + .../rocks/models/item/andesite_splitter.json | 7 ++ .../rocks/models/item/diorite_rock.json | 3 + .../rocks/models/item/diorite_splitter.json | 7 ++ .../assets/rocks/models/item/geyser.json | 7 ++ .../rocks/models/item/granite_rock.json | 3 + .../rocks/models/item/granite_splitter.json | 7 ++ .../assets/rocks/models/item/gravel_rock.json | 3 + .../rocks/models/item/nether_geyser.json | 7 ++ .../rocks/models/item/netherrack_rock.json | 3 + .../models/item/netherrack_splitter.json | 7 ++ .../rocks/models/item/soul_soil_rock.json | 3 + .../rocks/models/item/soul_soil_splitter.json | 7 ++ .../loot_tables/blocks/andesite_rock.json | 19 +++ .../loot_tables/blocks/diorite_rock.json | 19 +++ .../loot_tables/blocks/granite_rock.json | 19 +++ .../rocks/loot_tables/blocks/gravel_rock.json | 19 +++ .../loot_tables/blocks/netherrack_rock.json | 19 +++ .../loot_tables/blocks/soul_soil_rock.json | 19 +++ .../rocks/recipes/andesite_from_splitter.json | 21 ++++ .../rocks/recipes/diorite_from_splitter.json | 21 ++++ .../rocks/recipes/granite_from_splitter.json | 21 ++++ .../recipes/netherrack_from_splitter.json | 21 ++++ .../recipes/soul_soil_from_splitter.json | 21 ++++ 87 files changed, 1265 insertions(+), 66 deletions(-) create mode 100644 src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java create mode 100644 src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java create mode 100644 src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java create mode 100644 src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java create mode 100644 src/main/java/eu/midnightdust/motschen/rocks/world/NetherFeatures.java create mode 100644 src/main/java/eu/midnightdust/motschen/rocks/world/SnowFeature.java create mode 100644 src/main/resources/assets/rocks/blockstates/andesite_rock.json create mode 100644 src/main/resources/assets/rocks/blockstates/diorite_rock.json create mode 100644 src/main/resources/assets/rocks/blockstates/geyser.json create mode 100644 src/main/resources/assets/rocks/blockstates/granite_rock.json create mode 100644 src/main/resources/assets/rocks/blockstates/gravel_rock.json create mode 100644 src/main/resources/assets/rocks/blockstates/nether_geyser.json create mode 100644 src/main/resources/assets/rocks/blockstates/netherrack_rock.json create mode 100644 src/main/resources/assets/rocks/blockstates/soul_soil_rock.json create mode 100644 src/main/resources/assets/rocks/materialmaps/block/geyser.json create mode 100644 src/main/resources/assets/rocks/materialmaps/block/nether_geyser.json create mode 100644 src/main/resources/assets/rocks/models/block/geyser_off.json create mode 100644 src/main/resources/assets/rocks/models/block/geyser_on.json create mode 100644 src/main/resources/assets/rocks/models/block/large_andesite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/large_diorite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/large_granite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/large_gravel_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/large_netherrack_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/large_soul_soil_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/medium_andesite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/medium_diorite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/medium_granite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/medium_gravel_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/medium_netherrack_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/medium_soul_soil_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/nether_geyser_off.json create mode 100644 src/main/resources/assets/rocks/models/block/nether_geyser_on.json create mode 100644 src/main/resources/assets/rocks/models/block/small_andesite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/small_diorite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/small_granite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/small_gravel_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/small_netherrack_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/small_soul_soil_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/snowy_geyser_off.json create mode 100644 src/main/resources/assets/rocks/models/block/snowy_geyser_on.json create mode 100644 src/main/resources/assets/rocks/models/block/tiny_andesite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/tiny_diorite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/tiny_granite_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/tiny_gravel_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/tiny_netherrack_rock.json create mode 100644 src/main/resources/assets/rocks/models/block/tiny_soul_soil_rock.json create mode 100644 src/main/resources/assets/rocks/models/item/andesite_rock.json create mode 100644 src/main/resources/assets/rocks/models/item/andesite_splitter.json create mode 100644 src/main/resources/assets/rocks/models/item/diorite_rock.json create mode 100644 src/main/resources/assets/rocks/models/item/diorite_splitter.json create mode 100644 src/main/resources/assets/rocks/models/item/geyser.json create mode 100644 src/main/resources/assets/rocks/models/item/granite_rock.json create mode 100644 src/main/resources/assets/rocks/models/item/granite_splitter.json create mode 100644 src/main/resources/assets/rocks/models/item/gravel_rock.json create mode 100644 src/main/resources/assets/rocks/models/item/nether_geyser.json create mode 100644 src/main/resources/assets/rocks/models/item/netherrack_rock.json create mode 100644 src/main/resources/assets/rocks/models/item/netherrack_splitter.json create mode 100644 src/main/resources/assets/rocks/models/item/soul_soil_rock.json create mode 100644 src/main/resources/assets/rocks/models/item/soul_soil_splitter.json create mode 100644 src/main/resources/data/rocks/loot_tables/blocks/andesite_rock.json create mode 100644 src/main/resources/data/rocks/loot_tables/blocks/diorite_rock.json create mode 100644 src/main/resources/data/rocks/loot_tables/blocks/granite_rock.json create mode 100644 src/main/resources/data/rocks/loot_tables/blocks/gravel_rock.json create mode 100644 src/main/resources/data/rocks/loot_tables/blocks/netherrack_rock.json create mode 100644 src/main/resources/data/rocks/loot_tables/blocks/soul_soil_rock.json create mode 100644 src/main/resources/data/rocks/recipes/andesite_from_splitter.json create mode 100644 src/main/resources/data/rocks/recipes/diorite_from_splitter.json create mode 100644 src/main/resources/data/rocks/recipes/granite_from_splitter.json create mode 100644 src/main/resources/data/rocks/recipes/netherrack_from_splitter.json create mode 100644 src/main/resources/data/rocks/recipes/soul_soil_from_splitter.json diff --git a/gradle.properties b/gradle.properties index 334c9c1..1e85a27 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx2G loader_version=0.9.1+build.205 # Mod Properties - mod_version = 1.1.0 + mod_version = 1.2.0 maven_group = eu.midnightdust.motschen archives_base_name = rocks diff --git a/src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java b/src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java index 3fc705e..375b400 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/RocksClient.java @@ -1,27 +1,9 @@ package eu.midnightdust.motschen.rocks; -import eu.midnightdust.motschen.rocks.block.*; import eu.midnightdust.motschen.rocks.block.blockentity.BlockEntityInit; import eu.midnightdust.motschen.rocks.block.render.StarfishBlockEntityRenderer; -import eu.midnightdust.motschen.rocks.blockstates.RockVariation; -import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; -import eu.midnightdust.motschen.rocks.blockstates.StickVariation; -import eu.midnightdust.motschen.rocks.world.FeatureInjector; -import eu.midnightdust.motschen.rocks.world.MiscFeatures; -import eu.midnightdust.motschen.rocks.world.RockFeatures; -import eu.midnightdust.motschen.rocks.world.StickFeatures; import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry; -import net.minecraft.block.Block; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.state.property.EnumProperty; -import net.minecraft.util.Identifier; -import net.minecraft.util.registry.Registry; public class RocksClient implements ClientModInitializer { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java b/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java index 096f47e..2193ab3 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/RocksMain.java @@ -27,9 +27,15 @@ public class RocksMain implements ModInitializer { public static final EnumProperty STARFISH_VARIATION = EnumProperty.of("variation", StarfishVariation.class); public static Block Rock = new Rock(); + public static Block GraniteRock = new Rock(); + public static Block DioriteRock = new Rock(); + public static Block AndesiteRock = new Rock(); public static Block SandRock = new Rock(); public static Block RedSandRock = new Rock(); + public static Block GravelRock = new Rock(); public static Block EndstoneRock = new Rock(); + public static Block NetherrackRock = new Rock(); + public static Block SoulSoilRock = new Rock(); public static Block OakStick = new Stick(); public static Block SpruceStick = new Stick(); @@ -41,22 +47,41 @@ public class RocksMain implements ModInitializer { public static Block Pinecone = new Pinecone(); public static Block Seashell = new Seashell(); public static Block Starfish = new Starfish(); + public static Block Geyser = new OverworldGeyser(); + public static Block NetherGeyser = new NetherGeyser(); - public static Item CobbleStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item CobblestoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item GraniteSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item DioriteSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item AndesiteSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); public static Item SandStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); public static Item RedSandStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); public static Item EndStoneSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item NetherrackSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); + public static Item SoulSoilSplitter = new Item(new Item.Settings().group(RocksMain.RocksGroup)); @Override public void onInitialize() { Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"rock"), Rock); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"rock"), new BlockItem(Rock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"granite_rock"), GraniteRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"granite_rock"), new BlockItem(GraniteRock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"diorite_rock"), DioriteRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"diorite_rock"), new BlockItem(DioriteRock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"andesite_rock"), AndesiteRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"andesite_rock"), new BlockItem(AndesiteRock, new Item.Settings().group(RocksMain.RocksGroup))); Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"sand_rock"), SandRock); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"sand_rock"), new BlockItem(SandRock, new Item.Settings().group(RocksMain.RocksGroup))); Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"red_sand_rock"), RedSandRock); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"red_sand_rock"), new BlockItem(RedSandRock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"gravel_rock"), GravelRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"gravel_rock"), new BlockItem(GravelRock, new Item.Settings().group(RocksMain.RocksGroup))); Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"end_stone_rock"), EndstoneRock); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"end_stone_rock"), new BlockItem(EndstoneRock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"netherrack_rock"), NetherrackRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"netherrack_rock"), new BlockItem(NetherrackRock, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"soul_soil_rock"), SoulSoilRock); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"soul_soil_rock"), new BlockItem(SoulSoilRock, new Item.Settings().group(RocksMain.RocksGroup))); Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"oak_stick"), OakStick); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"oak_stick"), new BlockItem(OakStick, new Item.Settings().group(RocksMain.RocksGroup))); @@ -70,7 +95,12 @@ public class RocksMain implements ModInitializer { Registry.register(Registry.ITEM, new Identifier(MOD_ID,"jungle_stick"), new BlockItem(JungleStick, new Item.Settings().group(RocksMain.RocksGroup))); Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"dark_oak_stick"), DarkOakStick); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"dark_oak_stick"), new BlockItem(DarkOakStick, new Item.Settings().group(RocksMain.RocksGroup))); - + + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"geyser"), Geyser); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"geyser"), new BlockItem(Geyser, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"nether_geyser"), NetherGeyser); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"nether_geyser"), new BlockItem(NetherGeyser, new Item.Settings().group(RocksMain.RocksGroup))); + Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"pinecone"), Pinecone); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"pinecone"), new BlockItem(Pinecone, new Item.Settings().group(RocksMain.RocksGroup))); Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"seashell"), Seashell); @@ -78,10 +108,15 @@ public class RocksMain implements ModInitializer { Registry.register(Registry.BLOCK, new Identifier(MOD_ID,"starfish"), Starfish); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"starfish"), new BlockItem(Starfish, new Item.Settings().group(RocksMain.RocksGroup))); - Registry.register(Registry.ITEM, new Identifier(MOD_ID,"cobblestone_splitter"), CobbleStoneSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"cobblestone_splitter"), CobblestoneSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"granite_splitter"), GraniteSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"diorite_splitter"), DioriteSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"andesite_splitter"), AndesiteSplitter); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"sandstone_splitter"), SandStoneSplitter); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"red_sandstone_splitter"), RedSandStoneSplitter); Registry.register(Registry.ITEM, new Identifier(MOD_ID,"end_stone_splitter"), EndStoneSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"netherrack_splitter"), NetherrackSplitter); + Registry.register(Registry.ITEM, new Identifier(MOD_ID,"soul_soil_splitter"), SoulSoilSplitter); new FeatureRegistry(); RockFeatures.init(); diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java b/src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java new file mode 100644 index 0000000..6dd8e47 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/NetherGeyser.java @@ -0,0 +1,54 @@ +package eu.midnightdust.motschen.rocks.block; + +import eu.midnightdust.motschen.rocks.block.blockentity.NetherGeyserBlockEntity; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldView; + +public class NetherGeyser extends Block implements BlockEntityProvider { + + private static final VoxelShape SHAPE; + public static final BooleanProperty ACTIVE = BooleanProperty.of("active"); + + public NetherGeyser() { + super(FabricBlockSettings.copy(Blocks.STONE).strength(10).noCollision().nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(ACTIVE, false)); + } + @Override + public BlockEntity createBlockEntity(BlockView view) { + return new NetherGeyserBlockEntity(); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(ACTIVE, false); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(ACTIVE); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + return SHAPE; + } + static { + VoxelShape shape = createCuboidShape(5, 0, 5, 11, 1, 11); + + SHAPE = shape; + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isSideSolidFullSquare(world,pos,Direction.UP); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java b/src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java new file mode 100644 index 0000000..d4f4051 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/OverworldGeyser.java @@ -0,0 +1,63 @@ +package eu.midnightdust.motschen.rocks.block; + +import eu.midnightdust.motschen.rocks.block.blockentity.OverworldGeyserBlockEntity; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldView; + +public class OverworldGeyser extends Block implements BlockEntityProvider { + + private static final VoxelShape SHAPE; + private static final VoxelShape SNOWY_SHAPE; + public static final BooleanProperty ACTIVE = BooleanProperty.of("active"); + public static final BooleanProperty SNOWY = Properties.SNOWY; + + public OverworldGeyser() { + super(FabricBlockSettings.copy(Blocks.STONE).strength(10).noCollision().nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(ACTIVE, false).with(SNOWY, false)); + } + @Override + public BlockEntity createBlockEntity(BlockView view) { + return new OverworldGeyserBlockEntity(); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(ACTIVE, false).with(SNOWY, false); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(ACTIVE,SNOWY); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + if (state.get(SNOWY) == true) {return SNOWY_SHAPE;} + else return SHAPE; + } + static { + VoxelShape shape = createCuboidShape(5, 0, 5, 11, 1, 11); + VoxelShape snow_layer = createCuboidShape(0, 0, 0, 16, 2, 16); + VoxelShape shape_snow = createCuboidShape(5, 2, 5, 11, 3, 11); + VoxelShape snowy = VoxelShapes.union(snow_layer, shape_snow); + + SHAPE = shape; + SNOWY_SHAPE = snowy; + } + + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + return world.getBlockState(pos.down()).isSideSolidFullSquare(world,pos,Direction.UP); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java index 6e6b8b6..aa62985 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Rock.java @@ -2,7 +2,6 @@ package eu.midnightdust.motschen.rocks.block; import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.blockstates.RockVariation; -import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java index 87a51e2..7e1d584 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Seashell.java @@ -2,8 +2,6 @@ package eu.midnightdust.motschen.rocks.block; 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.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; import net.minecraft.entity.player.PlayerEntity; @@ -11,8 +9,6 @@ import net.minecraft.fluid.FluidState; import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemPlacementContext; import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; import net.minecraft.state.property.EnumProperty; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java index 9c9f20e..262da86 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Starfish.java @@ -2,7 +2,6 @@ package eu.midnightdust.motschen.rocks.block; import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.block.blockentity.StarfishBlockEntity; -import eu.midnightdust.motschen.rocks.blockstates.SeashellVariation; import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java b/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java index b86c6fc..4121657 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/Stick.java @@ -1,7 +1,6 @@ package eu.midnightdust.motschen.rocks.block; import eu.midnightdust.motschen.rocks.RocksMain; -import eu.midnightdust.motschen.rocks.blockstates.RockVariation; import eu.midnightdust.motschen.rocks.blockstates.StickVariation; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java index 9a0b9cb..d9d1688 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/BlockEntityInit.java @@ -7,8 +7,12 @@ import net.minecraft.util.registry.Registry; public class BlockEntityInit { public static BlockEntityType STARFISH_BE; + public static BlockEntityType OVERWORLD_GEYSER_BE; + public static BlockEntityType NETHER_GEYSER_BE; public static void init() { STARFISH_BE = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(RocksMain.MOD_ID,"starfish_blockentity"), BlockEntityType.Builder.create(StarfishBlockEntity::new, RocksMain.Starfish).build(null)); + OVERWORLD_GEYSER_BE = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(RocksMain.MOD_ID,"overworld_geyser_blockentity"), BlockEntityType.Builder.create(OverworldGeyserBlockEntity::new, RocksMain.Geyser).build(null)); + NETHER_GEYSER_BE = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier(RocksMain.MOD_ID,"nether_geyser_blockentity"), BlockEntityType.Builder.create(NetherGeyserBlockEntity::new, RocksMain.NetherGeyser).build(null)); } } diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java new file mode 100644 index 0000000..eaef522 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/NetherGeyserBlockEntity.java @@ -0,0 +1,50 @@ +package eu.midnightdust.motschen.rocks.block.blockentity; + +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.block.NetherGeyser; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.util.Tickable; +import net.minecraft.util.math.BlockPos; + +public class NetherGeyserBlockEntity extends BlockEntity implements Tickable { + private int countdown = 0; + + public NetherGeyserBlockEntity() { + super(BlockEntityInit.NETHER_GEYSER_BE); + } + + @Override + public void tick() { + BlockPos pos = this.pos; + PlayerEntity player = this.world.getClosestPlayer(pos.getX()+0.5,pos.getY()+0.5, pos.getZ()+0.5,3,true); + PlayerEntity player2 = this.world.getClosestPlayer(pos.getX()+0.5,pos.getY()+0.5, pos.getZ()+0.5,1,true); + BlockState state = this.world.getBlockState(pos); + + if (player != null) { + world.setBlockState(pos, RocksMain.NetherGeyser.getDefaultState().with(NetherGeyser.ACTIVE, true)); + player.damage(DamageSource.ON_FIRE,1); + if (player2 != null) { + player2.damage(DamageSource.ON_FIRE,4); + } + countdown = 1000; + } + else { + if (countdown > 0) { + countdown = countdown - 1; + } + if (countdown == 0) { + world.setBlockState(pos, RocksMain.NetherGeyser.getDefaultState().with(NetherGeyser.ACTIVE, false)); + } + } + + if (world != null && state.get(NetherGeyser.ACTIVE) == true) { + world.addParticle(ParticleTypes.LAVA,pos.getX()+0.5,pos.getY()+0.1,pos.getZ()+0.5,1,1.5,1); + world.addParticle(ParticleTypes.LAVA,pos.getX()+0.5,pos.getY()+1.0,pos.getZ()+0.5,1,1.5,1); + world.addParticle(ParticleTypes.SMOKE,pos.getX()+0.5,pos.getY()+0.1,pos.getZ()+0.5,0,0.3,0); + } + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java new file mode 100644 index 0000000..6087b90 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/OverworldGeyserBlockEntity.java @@ -0,0 +1,55 @@ +package eu.midnightdust.motschen.rocks.block.blockentity; + +import eu.midnightdust.motschen.rocks.block.OverworldGeyser; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.util.Tickable; +import net.minecraft.util.math.BlockPos; + +public class OverworldGeyserBlockEntity extends BlockEntity implements Tickable { + private int countdown = 0; + private int pushUp = 0; + + public OverworldGeyserBlockEntity() { + super(BlockEntityInit.OVERWORLD_GEYSER_BE); + } + + @Override + public void tick() { + BlockPos pos = this.pos; + PlayerEntity player = this.world.getClosestPlayer(pos.getX()+0.5,pos.getY()+0.5, pos.getZ()+0.5,3,true); + PlayerEntity player2 = this.world.getClosestPlayer(pos.getX()+0.5,pos.getY()+0.5, pos.getZ()+0.5,8,true); + PlayerEntity player3 = null; + + if (player2 != null && player2.getY() >= pos.getY() && (pos.getX() <= player2.getX() && pos.getX()+1 >= player2.getX()) && (pos.getZ() <= player2.getZ() && pos.getZ()+1 >= player2.getZ())) { + player3 = player2; + } + BlockState state = this.world.getBlockState(pos); + + if (player != null) { + world.setBlockState(pos, state.with(OverworldGeyser.ACTIVE, true)); + if (player3 != null) { + player.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, 2, 12, true, false, false)); + } + countdown = 1000; + } + else { + if (countdown > 0) { + countdown = countdown - 1; + } + if (countdown == 0) { + world.setBlockState(pos, state.with(OverworldGeyser.ACTIVE, false)); + } + } + + if (world != null && state.get(OverworldGeyser.ACTIVE) == true) { + world.addParticle(ParticleTypes.SPIT,pos.getX()+0.5,pos.getY()+0.1,pos.getZ()+0.5,0,1.0,0); + world.addParticle(ParticleTypes.SPIT,pos.getX()+0.5,pos.getY()+0.3,pos.getZ()+0.5,0,1.0,0); + world.addParticle(ParticleTypes.SPLASH,pos.getX()+0.5,pos.getY()+1.0,pos.getZ()+0.5,-0.01,1.5,-0.01); + } + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/StarfishBlockEntity.java b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/StarfishBlockEntity.java index 3004ede..234c8b0 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/StarfishBlockEntity.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/block/blockentity/StarfishBlockEntity.java @@ -4,7 +4,6 @@ import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.blockstates.StarfishVariation; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; -import net.minecraft.sound.SoundCategory; import net.minecraft.util.Tickable; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java index 937f889..da4a2b5 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureInjector.java @@ -23,11 +23,14 @@ public class FeatureInjector { // Rocks if (biome.getCategory() != Biome.Category.NETHER && biome.getCategory() != Biome.Category.THEEND && biome.getCategory() != Biome.Category.BEACH && biome.getCategory() != Biome.Category.DESERT && biome.getCategory() != Biome.Category.MESA && biome.getCategory() != Biome.Category.ICY && biome.getCategory() != Biome.Category.OCEAN) { addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.ROCK_FEATURE); + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.GRANITE_ROCK_FEATURE); + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.DIORITE_ROCK_FEATURE); + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.ANDESITE_ROCK_FEATURE); } - if ((biome.getCategory() == Biome.Category.BEACH) || (biome.getCategory() == Biome.Category.DESERT)) { + if ((biome.getCategory() == Biome.Category.BEACH) || (biome.getCategory() == Biome.Category.DESERT || biome.getCategory() == Biome.Category.MESA)) { addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.SAND_ROCK_FEATURE); } - if (biome.getCategory() == Biome.Category.MESA) { + if (biome.getCategory() == Biome.Category.MESA || biome.getCategory() == Biome.Category.DESERT) { addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.RED_SAND_ROCK_FEATURE); } if (biome.getCategory() == Biome.Category.THEEND) { @@ -66,6 +69,18 @@ public class FeatureInjector { addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.UNDERWATER_STARFISH_FEATURE); addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.UNDERWATER_SEASHELL_FEATURE); } + if (biome.getCategory() == Biome.Category.NETHER) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, NetherFeatures.NETHERRACK_ROCK_FEATURE); + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, NetherFeatures.SOUL_SOIL_ROCK_FEATURE); + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, NetherFeatures.NETHER_GRAVEL_ROCK_FEATURE); + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, NetherFeatures.NETHER_GEYSER_FEATURE); + } + if (biome.getCategory() != Biome.Category.NETHER) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, RockFeatures.GRAVEL_ROCK_FEATURE); + } + if (biome.getCategory() == Biome.Category.ICY) { + addFeature(biome, GenerationStep.Feature.TOP_LAYER_MODIFICATION, MiscFeatures.SNOWY_GEYSER_FEATURE); + } } public static void addFeature(Biome biome, GenerationStep.Feature step, ConfiguredFeature feature) { diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java index 3da1900..dbd9d13 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/FeatureRegistry.java @@ -14,6 +14,7 @@ public class FeatureRegistry { public static final UnderwaterFeature UNDERWATER_STARFISH_FEATURE; public static final UnderwaterFeature UNDERWATER_SEASHELL_FEATURE; + public static final SnowFeature SNOWY_GEYSER_FEATURE; private static > F register(String name, F feature) { return Registry.register(Registry.FEATURE, name, feature); @@ -29,8 +30,12 @@ public class FeatureRegistry { .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); + private static final WeightedBlockStateProvider GeyserStates = new WeightedBlockStateProvider() + .addState(RocksMain.Geyser.getDefaultState().with(Properties.SNOWY, true), 1); + 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)); + UNDERWATER_STARFISH_FEATURE = register("underwater_starfish", new UnderwaterFeature(ProbabilityConfig.CODEC, StarfishStates)); + UNDERWATER_SEASHELL_FEATURE = register("underwater_seashell", new UnderwaterFeature(ProbabilityConfig.CODEC, SeashellStates)); + SNOWY_GEYSER_FEATURE = register("snowy_geyser", new SnowFeature(ProbabilityConfig.CODEC, GeyserStates)); } } diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/MiscFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/MiscFeatures.java index c3594b6..08c88fd 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/MiscFeatures.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/MiscFeatures.java @@ -1,16 +1,16 @@ package eu.midnightdust.motschen.rocks.world; +import com.google.common.collect.ImmutableSet; 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.block.Blocks; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; 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; public class MiscFeatures { @@ -21,8 +21,8 @@ public class MiscFeatures { .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.PINK), 2) .addState(RocksMain.Seashell.getDefaultState().with(RocksMain.SEASHELL_VARIATION,SeashellVariation.WHITE), 6), SimpleBlockPlacer.INSTANCE)) - .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.SAND, Blocks.SANDSTONE, Blocks.RED_SAND, Blocks.RED_SANDSTONE)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature STARFISH_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -30,11 +30,12 @@ public class MiscFeatures { .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); + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.SAND, Blocks.SANDSTONE, Blocks.RED_SAND, Blocks.RED_SANDSTONE)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); 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 ConfiguredFeature SNOWY_GEYSER_FEATURE = FeatureRegistry.SNOWY_GEYSER_FEATURE.configure(new ProbabilityConfig(1)).decorate(ConfiguredFeatures.Decorators.FIRE); public static void init() { Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; @@ -42,6 +43,7 @@ public class MiscFeatures { 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); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "snowy_geyser"), SNOWY_GEYSER_FEATURE); } } diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/NetherFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/NetherFeatures.java new file mode 100644 index 0000000..9f76e09 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/NetherFeatures.java @@ -0,0 +1,66 @@ +package eu.midnightdust.motschen.rocks.world; + +import com.google.common.collect.ImmutableSet; +import eu.midnightdust.motschen.rocks.RocksMain; +import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import net.minecraft.block.Blocks; +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.placer.SimpleBlockPlacer; +import net.minecraft.world.gen.stateprovider.WeightedBlockStateProvider; + +public class NetherFeatures { + + public static ConfiguredFeature NETHERRACK_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) + .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.NetherrackRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .whitelist(ImmutableSet.of(Blocks.NETHERRACK,Blocks.WARPED_NYLIUM,Blocks.CRIMSON_NYLIUM)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(128); + public static ConfiguredFeature SOUL_SOIL_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) + .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.SoulSoilRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .whitelist(ImmutableSet.of(Blocks.SOUL_SOIL,Blocks.SOUL_SAND)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(128); + public static ConfiguredFeature NETHER_GRAVEL_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION, RockVariation.TINY), 10) + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .whitelist(ImmutableSet.of(Blocks.GRAVEL)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(128); + public static ConfiguredFeature NETHER_GEYSER_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.NetherGeyser.getDefaultState(),1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0) + .whitelist(ImmutableSet.of(Blocks.NETHERRACK)).cannotProject().build()).decorate(ConfiguredFeatures.Decorators.FIRE).repeat(16); + + public static void init() { + Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; + + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "netherrack_rock"), NETHERRACK_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "soul_soil_rock"), SOUL_SOIL_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "nether_gravel_rock"), NETHER_GRAVEL_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "nether_geyser"), NETHER_GEYSER_FEATURE); + } + +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/RockFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/RockFeatures.java index d19d429..56b64de 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/RockFeatures.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/RockFeatures.java @@ -1,7 +1,9 @@ package eu.midnightdust.motschen.rocks.world; +import com.google.common.collect.ImmutableSet; import eu.midnightdust.motschen.rocks.RocksMain; import eu.midnightdust.motschen.rocks.blockstates.RockVariation; +import net.minecraft.block.Blocks; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; @@ -18,8 +20,38 @@ public class RockFeatures { .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) .addState(RocksMain.Rock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) - .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .tries(1).spreadX(0).spreadY(0).spreadZ(0).blacklist(ImmutableSet.of(Blocks.ICE.getDefaultState(),Blocks.SAND.getDefaultState(),Blocks.RED_SAND.getDefaultState())) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + public static ConfiguredFeature GRANITE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.GraniteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.GRANITE)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + public static ConfiguredFeature DIORITE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.DioriteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.DIORITE)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + public static ConfiguredFeature ANDESITE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.AndesiteRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.ANDESITE)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature SAND_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -28,8 +60,8 @@ public class RockFeatures { .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) .addState(RocksMain.SandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) - .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.SAND, Blocks.SANDSTONE)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature RED_SAND_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -38,8 +70,8 @@ public class RockFeatures { .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) .addState(RocksMain.RedSandRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) - .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.RED_SAND, Blocks.RED_SANDSTONE)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature END_STONE_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -49,14 +81,28 @@ public class RockFeatures { .addState(RocksMain.EndstoneRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); + public static ConfiguredFeature GRAVEL_ROCK_FEATURE = Feature.RANDOM_PATCH.configure( + (new RandomPatchFeatureConfig.Builder( + new WeightedBlockStateProvider() + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.TINY), 10) + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.SMALL), 7) + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.MEDIUM), 5) + .addState(RocksMain.GravelRock.getDefaultState().with(RocksMain.ROCK_VARIATION,RockVariation.LARGE), 1), + SimpleBlockPlacer.INSTANCE)) + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.GRAVEL)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static void init() { Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; Registry.register(registry, new Identifier(RocksMain.MOD_ID, "rock"), ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "granite_rock"), GRANITE_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "diorite_rock"), DIORITE_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "andesite_rock"), ANDESITE_ROCK_FEATURE); Registry.register(registry, new Identifier(RocksMain.MOD_ID, "sand_rock"), SAND_ROCK_FEATURE); Registry.register(registry, new Identifier(RocksMain.MOD_ID, "red_sand_rock"), RED_SAND_ROCK_FEATURE); Registry.register(registry, new Identifier(RocksMain.MOD_ID, "endstone_rock"), END_STONE_ROCK_FEATURE); + Registry.register(registry, new Identifier(RocksMain.MOD_ID, "gravel_rock"), GRAVEL_ROCK_FEATURE); } } diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/SnowFeature.java b/src/main/java/eu/midnightdust/motschen/rocks/world/SnowFeature.java new file mode 100644 index 0000000..40792c2 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/SnowFeature.java @@ -0,0 +1,49 @@ +package eu.midnightdust.motschen.rocks.world; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +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.stateprovider.WeightedBlockStateProvider; + +import java.util.Random; + +public class SnowFeature extends Feature { + WeightedBlockStateProvider weightedBlockStateProvider1; + + public SnowFeature(Codec 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); + int chance = random.nextInt(8); + + if (structureWorldAccess.getBlockState(blockPos2).isOf(Blocks.SNOW) && chance == 1) { + + BlockState blockState = weightedBlockStateProvider1.getBlockState(random,blockPos); + + if (blockState.canPlaceAt(structureWorldAccess, blockPos2)) { + structureWorldAccess.setBlockState(blockPos2, blockState, 1); + if (structureWorldAccess.getBlockState(blockPos2.down()) == Blocks.GRASS_BLOCK.getDefaultState()) { + structureWorldAccess.setBlockState(blockPos2.down(), Blocks.GRASS_BLOCK.getDefaultState().with(Properties.SNOWY, true), 1); + } + + bl = true; + } + } + + return bl; + } +} diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/StickFeatures.java b/src/main/java/eu/midnightdust/motschen/rocks/world/StickFeatures.java index 4405c15..68e6776 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/StickFeatures.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/StickFeatures.java @@ -1,8 +1,9 @@ package eu.midnightdust.motschen.rocks.world; +import com.google.common.collect.ImmutableSet; import eu.midnightdust.motschen.rocks.RocksMain; -import eu.midnightdust.motschen.rocks.blockstates.RockVariation; import eu.midnightdust.motschen.rocks.blockstates.StickVariation; +import net.minecraft.block.Blocks; import net.minecraft.util.Identifier; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.util.registry.Registry; @@ -21,8 +22,8 @@ public class StickFeatures { .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.MEDIUM), 5) .addState(RocksMain.OakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) - .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .tries(1).spreadX(0).spreadY(0).spreadZ(0).whitelist(ImmutableSet.of(Blocks.GRASS_BLOCK)) + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature SPRUCE_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -32,7 +33,7 @@ public class StickFeatures { .addState(RocksMain.Pinecone.getDefaultState(), 1), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature BIRCH_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -41,7 +42,7 @@ public class StickFeatures { .addState(RocksMain.BirchStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature ACACIA_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -50,7 +51,7 @@ public class StickFeatures { .addState(RocksMain.AcaciaStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature JUNGLE_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -59,7 +60,7 @@ public class StickFeatures { .addState(RocksMain.JungleStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static ConfiguredFeature DARK_OAK_STICK_FEATURE = Feature.RANDOM_PATCH.configure( (new RandomPatchFeatureConfig.Builder( new WeightedBlockStateProvider() @@ -68,7 +69,7 @@ public class StickFeatures { .addState(RocksMain.DarkOakStick.getDefaultState().with(RocksMain.STICK_VARIATION,StickVariation.LARGE), 1), SimpleBlockPlacer.INSTANCE)) .tries(1).spreadX(0).spreadY(0).spreadZ(0) - .build()).decorate(ConfiguredFeatures.Decorators.FIRE).applyChance(1); + .build()).decorate(ConfiguredFeatures.Decorators.FIRE); public static void init() { Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; diff --git a/src/main/java/eu/midnightdust/motschen/rocks/world/UnderwaterFeature.java b/src/main/java/eu/midnightdust/motschen/rocks/world/UnderwaterFeature.java index 1b1aa5f..4dff3d7 100644 --- a/src/main/java/eu/midnightdust/motschen/rocks/world/UnderwaterFeature.java +++ b/src/main/java/eu/midnightdust/motschen/rocks/world/UnderwaterFeature.java @@ -1,21 +1,14 @@ 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; @@ -35,8 +28,6 @@ public class UnderwaterFeature extends Feature { 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); diff --git a/src/main/resources/assets/rocks/blockstates/andesite_rock.json b/src/main/resources/assets/rocks/blockstates/andesite_rock.json new file mode 100644 index 0000000..b4e434a --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/andesite_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_andesite_rock" }, + "variation=small": { "model": "rocks:block/small_andesite_rock" }, + "variation=medium": { "model": "rocks:block/medium_andesite_rock" }, + "variation=large": { "model": "rocks:block/large_andesite_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/diorite_rock.json b/src/main/resources/assets/rocks/blockstates/diorite_rock.json new file mode 100644 index 0000000..272b4d8 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/diorite_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_diorite_rock" }, + "variation=small": { "model": "rocks:block/small_diorite_rock" }, + "variation=medium": { "model": "rocks:block/medium_diorite_rock" }, + "variation=large": { "model": "rocks:block/large_diorite_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/geyser.json b/src/main/resources/assets/rocks/blockstates/geyser.json new file mode 100644 index 0000000..406330c --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/geyser.json @@ -0,0 +1,8 @@ +{ + "variants": { + "active=true,snowy=false": { "model": "rocks:block/geyser_on" }, + "active=false,snowy=false": { "model": "rocks:block/geyser_off" }, + "active=true,snowy=true": { "model": "rocks:block/snowy_geyser_on" }, + "active=false,snowy=true": { "model": "rocks:block/snowy_geyser_off" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/granite_rock.json b/src/main/resources/assets/rocks/blockstates/granite_rock.json new file mode 100644 index 0000000..d9ee051 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/granite_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_granite_rock" }, + "variation=small": { "model": "rocks:block/small_granite_rock" }, + "variation=medium": { "model": "rocks:block/medium_granite_rock" }, + "variation=large": { "model": "rocks:block/large_granite_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/gravel_rock.json b/src/main/resources/assets/rocks/blockstates/gravel_rock.json new file mode 100644 index 0000000..765564c --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/gravel_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_gravel_rock" }, + "variation=small": { "model": "rocks:block/small_gravel_rock" }, + "variation=medium": { "model": "rocks:block/medium_gravel_rock" }, + "variation=large": { "model": "rocks:block/large_gravel_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/nether_geyser.json b/src/main/resources/assets/rocks/blockstates/nether_geyser.json new file mode 100644 index 0000000..3c31727 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/nether_geyser.json @@ -0,0 +1,6 @@ +{ + "variants": { + "active=true": { "model": "rocks:block/nether_geyser_on" }, + "active=false": { "model": "rocks:block/nether_geyser_off" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/netherrack_rock.json b/src/main/resources/assets/rocks/blockstates/netherrack_rock.json new file mode 100644 index 0000000..a00dc22 --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/netherrack_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_netherrack_rock" }, + "variation=small": { "model": "rocks:block/small_netherrack_rock" }, + "variation=medium": { "model": "rocks:block/medium_netherrack_rock" }, + "variation=large": { "model": "rocks:block/large_netherrack_rock" } + } +} diff --git a/src/main/resources/assets/rocks/blockstates/soul_soil_rock.json b/src/main/resources/assets/rocks/blockstates/soul_soil_rock.json new file mode 100644 index 0000000..6e792bf --- /dev/null +++ b/src/main/resources/assets/rocks/blockstates/soul_soil_rock.json @@ -0,0 +1,8 @@ +{ + "variants": { + "variation=tiny": { "model": "rocks:block/tiny_soul_soil_rock" }, + "variation=small": { "model": "rocks:block/small_soul_soil_rock" }, + "variation=medium": { "model": "rocks:block/medium_soul_soil_rock" }, + "variation=large": { "model": "rocks:block/large_soul_soil_rock" } + } +} diff --git a/src/main/resources/assets/rocks/lang/de_de.json b/src/main/resources/assets/rocks/lang/de_de.json index 159a1e9..5c8b172 100644 --- a/src/main/resources/assets/rocks/lang/de_de.json +++ b/src/main/resources/assets/rocks/lang/de_de.json @@ -2,9 +2,15 @@ "itemGroup.rocks.rocks":"This Rocks!", "block.rocks.rock":"Steinbrocken", + "block.rocks.granite_rock":"Granitbrocken", + "block.rocks.diorite_rock":"Dioritbrocken", + "block.rocks.andesite_rock":"Andesitbrocken", "block.rocks.sand_rock":"Sandsteinbrocken", "block.rocks.red_sand_rock":"Roter Sandsteinbrocken", + "block.rocks.gravel_rock":"Kiesbrocken", "block.rocks.end_stone_rock":"Endsteinbrocken", + "block.rocks.netherrack_rock":"Netherrackbrocken", + "block.rocks.soul_soil_rock":"Seelenerdebrocken", "block.rocks.oak_stick":"Eichenholzstock", "block.rocks.birch_stick":"Birkenholzstock", @@ -13,12 +19,20 @@ "block.rocks.acacia_stick":"Akazienholzstock", "block.rocks.dark_oak_stick":"Schwarzeichenholzstock", + "block.rocks.geyser":"Geyser", + "block.rocks.nether_geyser":"Magma Geyser", + "block.rocks.pinecone":"Tannenzapfen", "block.rocks.seashell":"Muschel", "block.rocks.starfish":"Seestern", "item.rocks.cobblestone_splitter":"Bruchsteinsplitter", + "item.rocks.granite_splitter":"Granitsplitter", + "item.rocks.diorite_splitter":"Dioritsplitter", + "item.rocks.andesite_splitter":"Andesitsplitter", "item.rocks.sandstone_splitter":"Sandsteinsplitter", "item.rocks.red_sandstone_splitter":"Roter Sandsteinsplitter", - "item.rocks.end_stone_splitter":"Endsteinsplitter" + "item.rocks.end_stone_splitter":"Endsteinsplitter", + "item.rocks.netherrack_splitter":"Netherracksplitter", + "item.rocks.soul_soil_splitter":"Seelenerdesplitter" } \ No newline at end of file diff --git a/src/main/resources/assets/rocks/lang/en_us.json b/src/main/resources/assets/rocks/lang/en_us.json index f9713b6..483c78f 100644 --- a/src/main/resources/assets/rocks/lang/en_us.json +++ b/src/main/resources/assets/rocks/lang/en_us.json @@ -2,9 +2,15 @@ "itemGroup.rocks.rocks":"This Rocks!", "block.rocks.rock":"Rock", + "block.rocks.granite_rock":"Granite Rock", + "block.rocks.diorite_rock":"Diorite Rock", + "block.rocks.andesite_rock":"Andesite Rock", "block.rocks.sand_rock":"Sand Rock", "block.rocks.red_sand_rock":"Red Sand Rock", + "block.rocks.gravel_rock":"Gravel Rock", "block.rocks.end_stone_rock":"End Stone Rock", + "block.rocks.netherrack_rock":"Netherrack Rock", + "block.rocks.soul_soil_rock":"Soul Soil Rock", "block.rocks.oak_stick":"Oak Stick", "block.rocks.birch_stick":"Birch Stick", @@ -13,12 +19,20 @@ "block.rocks.acacia_stick":"Acacia Stick", "block.rocks.dark_oak_stick":"Dark Oak Stick", + "block.rocks.geyser":"Geyser", + "block.rocks.nether_geyser":"Magma Geyser", + "block.rocks.pinecone":"Pinecone", "block.rocks.seashell":"Seashell", "block.rocks.starfish":"Starfish", "item.rocks.cobblestone_splitter":"Cobblestone Splitter", + "item.rocks.granite_splitter":"Granite Splitter", + "item.rocks.diorite_splitter":"Diorite Splitter", + "item.rocks.andesite_splitter":"Andesite Splitter", "item.rocks.sandstone_splitter":"Sandstone Splitter", "item.rocks.red_sandstone_splitter":"Red Sandstone Splitter", - "item.rocks.end_stone_splitter":"End Stone Splitter" + "item.rocks.end_stone_splitter":"End Stone Splitter", + "item.rocks.netherrack_splitter":"Netherrack Splitter", + "item.rocks.soul_soil_splitter":"Soul Soil Splitter" } \ No newline at end of file diff --git a/src/main/resources/assets/rocks/materialmaps/block/geyser.json b/src/main/resources/assets/rocks/materialmaps/block/geyser.json new file mode 100644 index 0000000..fdb3aee --- /dev/null +++ b/src/main/resources/assets/rocks/materialmaps/block/geyser.json @@ -0,0 +1,10 @@ +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "minecraft:block/magma", + "material": "canvas:warm_glow" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/materialmaps/block/nether_geyser.json b/src/main/resources/assets/rocks/materialmaps/block/nether_geyser.json new file mode 100644 index 0000000..fdb3aee --- /dev/null +++ b/src/main/resources/assets/rocks/materialmaps/block/nether_geyser.json @@ -0,0 +1,10 @@ +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "minecraft:block/magma", + "material": "canvas:warm_glow" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/geyser_off.json b/src/main/resources/assets/rocks/models/block/geyser_off.json new file mode 100644 index 0000000..04c9b24 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/geyser_off.json @@ -0,0 +1,108 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "block/snow", + "2": "block/black_concrete", + "particle": "block/snow" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 1, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 13]}, + "faces": { + "north": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#0"} + } + }, + { + "from": [10, 0, 6], + "to": [11, 1, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 14]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "up": {"uv": [0, 2, 1, 6], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 4], "texture": "#0"} + } + }, + { + "from": [5, 0, 6], + "to": [6, 1, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 14]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "up": {"uv": [15, 1, 16, 5], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 4], "texture": "#0"} + } + }, + { + "from": [5, 0, 10], + "to": [11, 1, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 18]}, + "faces": { + "north": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 5, 6, 6], "texture": "#0"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#0"} + } + }, + { + "from": [6, 0, 6], + "to": [10, 0.1, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 8, 13]}, + "faces": { + "north": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "south": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 4], "texture": "#2"}, + "down": {"uv": [0, 0, 4, 4], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 2.25, -1.5], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "translation": [0, 2.25, -1.5], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "translation": [2.5, 8.25, -0.25] + }, + "firstperson_lefthand": { + "translation": [2.5, 8.25, -0.25] + }, + "ground": { + "translation": [0, 5.75, 0] + }, + "gui": { + "rotation": [45, 45, 0], + "translation": [0, 7.25, 0], + "scale": [1.5, 1.5, 1.5] + }, + "head": { + "translation": [0, 14.5, 0] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [0, 0, -12], + "scale": [1.5, 1.5, 1.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/geyser_on.json b/src/main/resources/assets/rocks/models/block/geyser_on.json new file mode 100644 index 0000000..98bb3fa --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/geyser_on.json @@ -0,0 +1,7 @@ +{ + "credit": "made by Motschen", + "parent": "rocks:block/geyser_off", + "textures": { + "2": "block/magma" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_andesite_rock.json b/src/main/resources/assets/rocks/models/block/large_andesite_rock.json new file mode 100644 index 0000000..8ba1f44 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_andesite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/andesite", + "particle": "block/andesite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_diorite_rock.json b/src/main/resources/assets/rocks/models/block/large_diorite_rock.json new file mode 100644 index 0000000..e07500d --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_diorite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/diorite", + "particle": "block/diorite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_granite_rock.json b/src/main/resources/assets/rocks/models/block/large_granite_rock.json new file mode 100644 index 0000000..ad921b4 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_granite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/granite", + "particle": "block/granite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_gravel_rock.json b/src/main/resources/assets/rocks/models/block/large_gravel_rock.json new file mode 100644 index 0000000..5f03a62 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_gravel_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/gravel", + "particle": "block/gravel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/large_netherrack_rock.json new file mode 100644 index 0000000..8d801fd --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_netherrack_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/netherrack", + "particle": "block/netherrack" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/large_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/large_soul_soil_rock.json new file mode 100644 index 0000000..48d41fc --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/large_soul_soil_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/large_rock", + "textures": { + "0": "block/soul_soil", + "particle": "block/soul_soil" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_andesite_rock.json b/src/main/resources/assets/rocks/models/block/medium_andesite_rock.json new file mode 100644 index 0000000..35b67b9 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_andesite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/andesite", + "particle": "block/andesite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_diorite_rock.json b/src/main/resources/assets/rocks/models/block/medium_diorite_rock.json new file mode 100644 index 0000000..97bc8e6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_diorite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/diorite", + "particle": "block/diorite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_granite_rock.json b/src/main/resources/assets/rocks/models/block/medium_granite_rock.json new file mode 100644 index 0000000..be4ed22 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_granite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/granite", + "particle": "block/granite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_gravel_rock.json b/src/main/resources/assets/rocks/models/block/medium_gravel_rock.json new file mode 100644 index 0000000..f79c671 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_gravel_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/gravel", + "particle": "block/gravel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/medium_netherrack_rock.json new file mode 100644 index 0000000..9e79823 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_netherrack_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/netherrack", + "particle": "block/netherrack" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/medium_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/medium_soul_soil_rock.json new file mode 100644 index 0000000..dc46f59 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/medium_soul_soil_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/medium_rock", + "textures": { + "0": "block/soul_soil", + "particle": "block/soul_soil" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/nether_geyser_off.json b/src/main/resources/assets/rocks/models/block/nether_geyser_off.json new file mode 100644 index 0000000..b885efd --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/nether_geyser_off.json @@ -0,0 +1,9 @@ +{ + "credit": "made by Motschen", + "parent": "rocks:block/geyser_off", + "textures": { + "0": "block/netherrack", + "2": "block/black_concrete", + "particle": "block/netherrack" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/nether_geyser_on.json b/src/main/resources/assets/rocks/models/block/nether_geyser_on.json new file mode 100644 index 0000000..06832b6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/nether_geyser_on.json @@ -0,0 +1,7 @@ +{ + "credit": "made by Motschen", + "parent": "rocks:block/nether_geyser_off", + "textures": { + "2": "block/magma" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_andesite_rock.json b/src/main/resources/assets/rocks/models/block/small_andesite_rock.json new file mode 100644 index 0000000..728622b --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_andesite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/andesite", + "particle": "block/andesite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_diorite_rock.json b/src/main/resources/assets/rocks/models/block/small_diorite_rock.json new file mode 100644 index 0000000..3221bcd --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_diorite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/diorite", + "particle": "block/diorite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_granite_rock.json b/src/main/resources/assets/rocks/models/block/small_granite_rock.json new file mode 100644 index 0000000..ce36f41 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_granite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/granite", + "particle": "block/granite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_gravel_rock.json b/src/main/resources/assets/rocks/models/block/small_gravel_rock.json new file mode 100644 index 0000000..c8055f6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_gravel_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/gravel", + "particle": "block/gravel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/small_netherrack_rock.json new file mode 100644 index 0000000..0cdf6d0 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_netherrack_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/netherrack", + "particle": "block/netherrack" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/small_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/small_soul_soil_rock.json new file mode 100644 index 0000000..525154c --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/small_soul_soil_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/small_rock", + "textures": { + "0": "block/soul_soil", + "particle": "block/soul_soil" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/snowy_geyser_off.json b/src/main/resources/assets/rocks/models/block/snowy_geyser_off.json new file mode 100644 index 0000000..f21b732 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/snowy_geyser_off.json @@ -0,0 +1,87 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "block/snow", + "2": "block/black_concrete", + "particle": "block/snow" + }, + "elements": [ + { + "from": [5, 2, 5], + "to": [11, 3, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 10, 13]}, + "faces": { + "north": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#0"} + } + }, + { + "from": [10, 2, 6], + "to": [11, 3, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 10, 14]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "up": {"uv": [0, 2, 1, 6], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 4], "texture": "#0"} + } + }, + { + "from": [5, 2, 6], + "to": [6, 3, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 14]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#0"}, + "up": {"uv": [15, 1, 16, 5], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 4], "texture": "#0"} + } + }, + { + "from": [5, 2, 10], + "to": [11, 3, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 10, 18]}, + "faces": { + "north": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, + "up": {"uv": [0, 5, 6, 6], "texture": "#0"}, + "down": {"uv": [0, 0, 6, 1], "texture": "#0"} + } + }, + { + "from": [6, 2, 6], + "to": [10, 2.1, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 10, 13]}, + "faces": { + "north": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "east": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "south": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "west": {"uv": [0, 0, 4, 0.1], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 4], "texture": "#2"}, + "down": {"uv": [0, 0, 4, 4], "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 0, 16, 2], "texture": "#0"}, + "east": {"uv": [0, 0, 16, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 16, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/snowy_geyser_on.json b/src/main/resources/assets/rocks/models/block/snowy_geyser_on.json new file mode 100644 index 0000000..4635f01 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/snowy_geyser_on.json @@ -0,0 +1,7 @@ +{ + "credit": "made by Motschen", + "parent": "rocks:block/snowy_geyser_off", + "textures": { + "2": "block/magma" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_andesite_rock.json b/src/main/resources/assets/rocks/models/block/tiny_andesite_rock.json new file mode 100644 index 0000000..60309c6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_andesite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/andesite", + "particle": "block/andesite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_diorite_rock.json b/src/main/resources/assets/rocks/models/block/tiny_diorite_rock.json new file mode 100644 index 0000000..2385f91 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_diorite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/diorite", + "particle": "block/diorite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_granite_rock.json b/src/main/resources/assets/rocks/models/block/tiny_granite_rock.json new file mode 100644 index 0000000..bae2cc6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_granite_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/granite", + "particle": "block/granite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_gravel_rock.json b/src/main/resources/assets/rocks/models/block/tiny_gravel_rock.json new file mode 100644 index 0000000..c83ea52 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_gravel_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/gravel", + "particle": "block/gravel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_netherrack_rock.json b/src/main/resources/assets/rocks/models/block/tiny_netherrack_rock.json new file mode 100644 index 0000000..54a0e20 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_netherrack_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/netherrack", + "particle": "block/netherrack" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/block/tiny_soul_soil_rock.json b/src/main/resources/assets/rocks/models/block/tiny_soul_soil_rock.json new file mode 100644 index 0000000..aa1e3b0 --- /dev/null +++ b/src/main/resources/assets/rocks/models/block/tiny_soul_soil_rock.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:block/tiny_rock", + "textures": { + "0": "block/soul_soil", + "particle": "block/soul_soil" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/andesite_rock.json b/src/main/resources/assets/rocks/models/item/andesite_rock.json new file mode 100644 index 0000000..dd5445b --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/andesite_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_andesite_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/andesite_splitter.json b/src/main/resources/assets/rocks/models/item/andesite_splitter.json new file mode 100644 index 0000000..594896a --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/andesite_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/andesite", + "particle": "block/andesite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/diorite_rock.json b/src/main/resources/assets/rocks/models/item/diorite_rock.json new file mode 100644 index 0000000..ba09472 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/diorite_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_diorite_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/diorite_splitter.json b/src/main/resources/assets/rocks/models/item/diorite_splitter.json new file mode 100644 index 0000000..c32fef8 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/diorite_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/diorite", + "particle": "block/diorite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/geyser.json b/src/main/resources/assets/rocks/models/item/geyser.json new file mode 100644 index 0000000..98bb3fa --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/geyser.json @@ -0,0 +1,7 @@ +{ + "credit": "made by Motschen", + "parent": "rocks:block/geyser_off", + "textures": { + "2": "block/magma" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/granite_rock.json b/src/main/resources/assets/rocks/models/item/granite_rock.json new file mode 100644 index 0000000..9a66192 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/granite_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_granite_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/granite_splitter.json b/src/main/resources/assets/rocks/models/item/granite_splitter.json new file mode 100644 index 0000000..88f7ffe --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/granite_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/granite", + "particle": "block/granite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/gravel_rock.json b/src/main/resources/assets/rocks/models/item/gravel_rock.json new file mode 100644 index 0000000..b7f0da1 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/gravel_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_gravel_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/nether_geyser.json b/src/main/resources/assets/rocks/models/item/nether_geyser.json new file mode 100644 index 0000000..06832b6 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/nether_geyser.json @@ -0,0 +1,7 @@ +{ + "credit": "made by Motschen", + "parent": "rocks:block/nether_geyser_off", + "textures": { + "2": "block/magma" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/netherrack_rock.json b/src/main/resources/assets/rocks/models/item/netherrack_rock.json new file mode 100644 index 0000000..051e1f9 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/netherrack_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_netherrack_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/netherrack_splitter.json b/src/main/resources/assets/rocks/models/item/netherrack_splitter.json new file mode 100644 index 0000000..d4ced83 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/netherrack_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/netherrack", + "particle": "block/netherrack" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/soul_soil_rock.json b/src/main/resources/assets/rocks/models/item/soul_soil_rock.json new file mode 100644 index 0000000..dda3722 --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/soul_soil_rock.json @@ -0,0 +1,3 @@ +{ + "parent": "rocks:block/large_soul_soil_rock" +} \ No newline at end of file diff --git a/src/main/resources/assets/rocks/models/item/soul_soil_splitter.json b/src/main/resources/assets/rocks/models/item/soul_soil_splitter.json new file mode 100644 index 0000000..7236eff --- /dev/null +++ b/src/main/resources/assets/rocks/models/item/soul_soil_splitter.json @@ -0,0 +1,7 @@ +{ + "parent": "rocks:item/cobblestone_splitter", + "textures": { + "0": "block/soul_soil", + "particle": "block/soul_soil" + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/andesite_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/andesite_rock.json new file mode 100644 index 0000000..4afd541 --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/andesite_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:andesite_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/diorite_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/diorite_rock.json new file mode 100644 index 0000000..9a3521c --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/diorite_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:diorite_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/granite_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/granite_rock.json new file mode 100644 index 0000000..8453470 --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/granite_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:granite_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/gravel_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/gravel_rock.json new file mode 100644 index 0000000..91002db --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/gravel_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flint" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/netherrack_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/netherrack_rock.json new file mode 100644 index 0000000..3125b98 --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/netherrack_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:netherrack_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/loot_tables/blocks/soul_soil_rock.json b/src/main/resources/data/rocks/loot_tables/blocks/soul_soil_rock.json new file mode 100644 index 0000000..c12d83e --- /dev/null +++ b/src/main/resources/data/rocks/loot_tables/blocks/soul_soil_rock.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "rocks:soul_soil_splitter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/andesite_from_splitter.json b/src/main/resources/data/rocks/recipes/andesite_from_splitter.json new file mode 100644 index 0000000..9eeac8d --- /dev/null +++ b/src/main/resources/data/rocks/recipes/andesite_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:andesite_splitter" + }, + { + "item": "rocks:andesite_splitter" + }, + { + "item": "rocks:andesite_splitter" + }, + { + "item": "rocks:andesite_splitter" + } + ], + "result": { + "item": "minecraft:andesite", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/diorite_from_splitter.json b/src/main/resources/data/rocks/recipes/diorite_from_splitter.json new file mode 100644 index 0000000..d6f4b72 --- /dev/null +++ b/src/main/resources/data/rocks/recipes/diorite_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:diorite_splitter" + }, + { + "item": "rocks:diorite_splitter" + }, + { + "item": "rocks:diorite_splitter" + }, + { + "item": "rocks:diorite_splitter" + } + ], + "result": { + "item": "minecraft:diorite", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/granite_from_splitter.json b/src/main/resources/data/rocks/recipes/granite_from_splitter.json new file mode 100644 index 0000000..2241103 --- /dev/null +++ b/src/main/resources/data/rocks/recipes/granite_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:granite_splitter" + }, + { + "item": "rocks:granite_splitter" + }, + { + "item": "rocks:granite_splitter" + }, + { + "item": "rocks:granite_splitter" + } + ], + "result": { + "item": "minecraft:granite", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/netherrack_from_splitter.json b/src/main/resources/data/rocks/recipes/netherrack_from_splitter.json new file mode 100644 index 0000000..852ef0a --- /dev/null +++ b/src/main/resources/data/rocks/recipes/netherrack_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:netherrack_splitter" + }, + { + "item": "rocks:netherrack_splitter" + }, + { + "item": "rocks:netherrack_splitter" + }, + { + "item": "rocks:netherrack_splitter" + } + ], + "result": { + "item": "minecraft:netherrack", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rocks/recipes/soul_soil_from_splitter.json b/src/main/resources/data/rocks/recipes/soul_soil_from_splitter.json new file mode 100644 index 0000000..47a3b20 --- /dev/null +++ b/src/main/resources/data/rocks/recipes/soul_soil_from_splitter.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "rocks:soul_soil_splitter" + }, + { + "item": "rocks:soul_soil_splitter" + }, + { + "item": "rocks:soul_soil_splitter" + }, + { + "item": "rocks:soul_soil_splitter" + } + ], + "result": { + "item": "minecraft:soul_soil", + "count": 1 + } +} \ No newline at end of file