diff --git a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 index 56c20c532..57020bf91 100644 --- a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 +++ b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 @@ -1,5 +1,6 @@ -// 1.20.1 2023-10-15T17:45:38.4369164 Registries +// 1.20.1 2023-10-21T23:32:47.3915637 Registries c92ff9d09d1e634b03702ed2548052b8dd904e91 data/deeperdarker/dimension_type/otherside.json +4722285e5c50f018e9423f4e719e9a5dd67c3bd8 data/deeperdarker/worldgen/biome/blooming_caverns.json 16372ebfc8f36cee32a93f72d13073bb98639882 data/deeperdarker/worldgen/biome/deeplands.json bd2c433caf3a3f7dfff3668a68dbdf56fa994df5 data/deeperdarker/worldgen/biome/echoing_forest.json 06d29b9291ed3a63be90750a8c6f182e0c168b7b data/deeperdarker/worldgen/biome/overcast_columns.json @@ -7,6 +8,7 @@ bd2c433caf3a3f7dfff3668a68dbdf56fa994df5 data/deeperdarker/worldgen/biome/echoin ba29dfa84f2bebe688044c6e89b6c1d38dbaf0c6 data/deeperdarker/worldgen/configured_feature/gloomslate_generation.json 5d330f021ad1e22b038b08bfd79b49f5da654254 data/deeperdarker/worldgen/configured_feature/gloomy_sculk_patch.json 091c066d3e288c08e5d68a8aca7b3fb0e6e5639b data/deeperdarker/worldgen/configured_feature/gloomy_sculk_vegetation.json +9973648607e0cc301d46c77f4021d725ca22b533 data/deeperdarker/worldgen/configured_feature/ore_blooming_moss.json 1b6dbe9c2e15df01aa9a3c27beb46ccc4e91d5df data/deeperdarker/worldgen/configured_feature/ore_echo_soil.json a7efce9cf36bea20e3226c6fcb962b41b78df3f6 data/deeperdarker/worldgen/configured_feature/ore_gloomslate_coal.json e21d4d48d366ec5aa99fce98c51d5ae4c947c350 data/deeperdarker/worldgen/configured_feature/ore_gloomslate_copper.json @@ -40,6 +42,7 @@ ee40c6672e01f7903cbd018effd3b9fb238b9dc8 data/deeperdarker/worldgen/configured_f 7597d5a74f034f91aefd5b4e7567566295057281 data/deeperdarker/worldgen/configured_feature/surface_gloomslate.json 8d9c10bf4c7aa2ff2fa6f7aa8c3b646ab05433b9 data/deeperdarker/worldgen/configured_feature/surface_sculk_stone.json 853f5d90238319461c608dc077bc999afe6b8bcb data/deeperdarker/worldgen/configured_feature/tree_echo.json +34fb9a5e22128132e9fb0b0a7700008873e4ac41 data/deeperdarker/worldgen/placed_feature/blooming_moss.json cc0ab13e199295089d8269584cc7aa83b3595c9b data/deeperdarker/worldgen/placed_feature/echo_soil.json e18687e9b7d94385510ea85e00af1ba4e24e32ec data/deeperdarker/worldgen/placed_feature/echo_tree.json 739dfb25c8e5de7a098ca0c9a256cc28d890e63c data/deeperdarker/worldgen/placed_feature/gloomslate_coal.json diff --git a/src/generated/resources/.cache/16a987815a5a6d3b74a700570adf310b2e53ecae b/src/generated/resources/.cache/16a987815a5a6d3b74a700570adf310b2e53ecae index cd9a323f5..3b5684a1f 100644 --- a/src/generated/resources/.cache/16a987815a5a6d3b74a700570adf310b2e53ecae +++ b/src/generated/resources/.cache/16a987815a5a6d3b74a700570adf310b2e53ecae @@ -1,5 +1,7 @@ -// 1.20.1 2023-07-30T14:33:21.5138823 Block States: deeperdarker +// 1.20.1 2023-10-21T23:09:41.5245696 Block States: deeperdarker 4394f02c270408be611b2f3ba7abfbfd658cb0ff assets/deeperdarker/blockstates/ancient_vase.json +165980177c5adcf470b9a08fe401e3bb1a4966f0 assets/deeperdarker/blockstates/blooming_moss_block.json +498227afd0f8c9b0fa72dfef97bf22b886a9069f assets/deeperdarker/blockstates/blooming_sculk.json b618639a1bd650f5bbceed1f24a777ca15ae37fe assets/deeperdarker/blockstates/chiseled_gloomslate.json 389153807c5651eba34cf020ac7d3b675b0418a2 assets/deeperdarker/blockstates/chiseled_sculk_stone.json 68002cff985c9e3e803a31cbe314c4e4d6ac9e36 assets/deeperdarker/blockstates/cobbled_gloomslate.json @@ -113,6 +115,8 @@ d7f5127b333b891bbfa97cee4414876fef5429d5 assets/deeperdarker/blockstates/smooth_ e94fc45e791c65302fcc908ab5d32adc564c5e88 assets/deeperdarker/blockstates/stripped_echo_log.json 1482ba18bb49fe90f1bb3d0b7aec7963e6c0ac9f assets/deeperdarker/blockstates/stripped_echo_wood.json 690d24d273d0514954cb5395b0a6220314038cfd assets/deeperdarker/models/block/ancient_vase.json +5f6d78b44fd7067c2670c9e989ce03e4e9aac70f assets/deeperdarker/models/block/blooming_moss_block.json +446377a22c7cd0fa8486a0da7afe4adf393c90e2 assets/deeperdarker/models/block/blooming_sculk.json b00bfe63a4595969e6f0a510761702536bf5c367 assets/deeperdarker/models/block/chiseled_gloomslate.json 72cffa498213da488cf3a2f3f60488de0a5fab6a assets/deeperdarker/models/block/chiseled_sculk_stone.json 95d18c450b387ca11be36213e2be0e675b3a7440 assets/deeperdarker/models/block/cobbled_gloomslate.json diff --git a/src/generated/resources/.cache/2b1c4c301b77a741c666834d476e7a049e70d3df b/src/generated/resources/.cache/2b1c4c301b77a741c666834d476e7a049e70d3df index 87dd22245..09c17fef0 100644 --- a/src/generated/resources/.cache/2b1c4c301b77a741c666834d476e7a049e70d3df +++ b/src/generated/resources/.cache/2b1c4c301b77a741c666834d476e7a049e70d3df @@ -1,4 +1,4 @@ -// 1.20.1 2023-09-20T17:04:06.8932967 Tags for minecraft:block mod id deeperdarker +// 1.20.1 2023-10-21T23:09:41.5106188 Tags for minecraft:block mod id deeperdarker 453499b5116c2c24d57c28ec55db0211260f511d data/deeperdarker/tags/blocks/echo_soil.json 5fc75620cbf33b6fbe8762687116de2f0df1bd34 data/deeperdarker/tags/blocks/gloomslate_replaceable.json 1b524a72db2dc423a915068148fa9e921f2e46f5 data/deeperdarker/tags/blocks/gloomy_sculk_replaceable.json @@ -21,6 +21,7 @@ d88fb43be0304b77c90c64f924fa2b46c4eeea4a data/forge/tags/blocks/stone.json ec4e45d46ce1593f9bb4b226a1e3d143bc0942c6 data/minecraft/tags/blocks/coal_ores.json dc2be5311ef04baad7565936ffafc6dcea324cf1 data/minecraft/tags/blocks/copper_ores.json 84c6024e42063deecc27f59b5a97328b415f4a05 data/minecraft/tags/blocks/diamond_ores.json +8c05a0f37456da64c198eca83b383a909c2fe23f data/minecraft/tags/blocks/dirt.json 41a0ed1cf9fcf4b0f4e41d3155f010eb069e2edc data/minecraft/tags/blocks/emerald_ores.json 4b1b7b3d622aeb255906e952be4ddaf003b6026f data/minecraft/tags/blocks/fence_gates.json a84d63160bb42d942778124d8368b9db10ef6ed2 data/minecraft/tags/blocks/gold_ores.json @@ -30,7 +31,7 @@ e85880d9acf64424927082c80e9af7c9f50de52f data/minecraft/tags/blocks/lapis_ores.j 615016fb2f7bd4866e694de5e712cb29bb434032 data/minecraft/tags/blocks/logs_that_burn.json ff30cceaa398179d6968c43125fcc0cc5b17312f data/minecraft/tags/blocks/mineable/axe.json 5292a241fb840cb557b81ad9012e39a2168f8888 data/minecraft/tags/blocks/mineable/hoe.json -1ea4c81c2ab76027e0b0e2ae280e25f9445de8ca data/minecraft/tags/blocks/mineable/pickaxe.json +ad177a07d9375078090756e86bdf590b27cd0566 data/minecraft/tags/blocks/mineable/pickaxe.json f7b6f4235356ecc4395d064f20adbb6abb2fb51a data/minecraft/tags/blocks/mineable/shovel.json 6349c914702ba9732f2266363153bb5d75633878 data/minecraft/tags/blocks/needs_iron_tool.json 33d07a5e8b6e764033ad98c304357baa651ed25c data/minecraft/tags/blocks/needs_stone_tool.json @@ -39,6 +40,9 @@ a3dbfaeb7781a16a5f0d599aec390339e541834c data/minecraft/tags/blocks/planks.json b87f41ec93385cf003a9e81713446620acd52b86 data/minecraft/tags/blocks/redstone_ores.json 194ada896e5d1f6d6cac977e3e771bc784d9911b data/minecraft/tags/blocks/saplings.json 7ad41c3bc6a4b4e320a75ce5e25e9ee075ed3663 data/minecraft/tags/blocks/slabs.json +8c05a0f37456da64c198eca83b383a909c2fe23f data/minecraft/tags/blocks/small_dripleaf_placeable.json +8c05a0f37456da64c198eca83b383a909c2fe23f data/minecraft/tags/blocks/sniffer_diggable_block.json +8c05a0f37456da64c198eca83b383a909c2fe23f data/minecraft/tags/blocks/sniffer_egg_hatch_boost.json 8dfd3b492264b019307369b18d494910d7fe89e8 data/minecraft/tags/blocks/stairs.json 3160b8c1824cc26cacda9143dd8d832ff3a4c422 data/minecraft/tags/blocks/standing_signs.json e72a4292dc72ea8e75aa284e652feb7fd955f8b9 data/minecraft/tags/blocks/walls.json diff --git a/src/generated/resources/.cache/2cdab8a05c139b60806a3879962e52a7f2933554 b/src/generated/resources/.cache/2cdab8a05c139b60806a3879962e52a7f2933554 index 472a23d9f..d082371b7 100644 --- a/src/generated/resources/.cache/2cdab8a05c139b60806a3879962e52a7f2933554 +++ b/src/generated/resources/.cache/2cdab8a05c139b60806a3879962e52a7f2933554 @@ -1,5 +1,7 @@ -// 1.20.1 2023-07-30T14:33:21.5008835 Item Models: deeperdarker +// 1.20.1 2023-10-21T23:09:41.5165979 Item Models: deeperdarker b36185a1f9e1c105ef9ef404ee0483eedd9ecd79 assets/deeperdarker/models/item/ancient_vase.json +f2fe62e9aa1b817d10053a94259d530922d39562 assets/deeperdarker/models/item/blooming_moss_block.json +2072c85056b9991df1889bc23b0e49f44e63bb56 assets/deeperdarker/models/item/blooming_sculk.json bc192f3477fde8efde3aba14cdd0016b9b4c74cf assets/deeperdarker/models/item/chiseled_gloomslate.json 89f7cacebe1029e9f27884b1aeba759b4f9c978f assets/deeperdarker/models/item/chiseled_sculk_stone.json 0eb658806d9c4c3faa4843fa00fd273b3d44dbdc assets/deeperdarker/models/item/cobbled_gloomslate.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index e818947c4..c7a430219 100644 --- a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,5 +1,7 @@ -// 1.20.1 2023-09-06T16:13:42.4392893 Loot Tables +// 1.20.1 2023-10-21T23:09:41.5195872 Loot Tables f4fe1f635cb6e3e68f5aaae0488de719277f01f2 data/deeperdarker/loot_tables/blocks/ancient_vase.json +006429d2ca86d8c54cd1448e51b2ffd95ef52b52 data/deeperdarker/loot_tables/blocks/blooming_moss_block.json +d95dd7543f0edaed48f7e47c555fd9a2b5c517d4 data/deeperdarker/loot_tables/blocks/blooming_sculk.json 55589564f7ea5847138db468199d54cd1142b139 data/deeperdarker/loot_tables/blocks/chiseled_gloomslate.json c29aeb5add1d38dc94087bd93c15ff08dab7a74d data/deeperdarker/loot_tables/blocks/chiseled_sculk_stone.json debbc9e18c6194b29378fce6394766e7864f9ee7 data/deeperdarker/loot_tables/blocks/cobbled_gloomslate.json diff --git a/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 866067b36..375568b0d 100644 --- a/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/generated/resources/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2023-09-20T17:07:35.782146 Languages: en_us -3d894dc8ef64b9686d4b535bee05f377dfbd7b96 assets/deeperdarker/lang/en_us.json +// 1.20.1 2023-10-21T23:09:41.5235733 Languages: en_us +e44168a3fb758130bc02ea6d71a6226564220bf9 assets/deeperdarker/lang/en_us.json diff --git a/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 index bfd64e6a2..d8d235416 100644 --- a/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 +++ b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 @@ -1,6 +1,6 @@ -// 1.20.1 2023-09-10T12:31:46.6260576 Advancements +// 1.20.1 2023-10-21T23:34:22.8911106 Advancements a76845401466a58c8f341ce586f131a1d31c123e data/deeperdarker/advancements/main/enter_otherside.json -c92a96dd0a42d69d61838ea2b3e3730e93306019 data/deeperdarker/advancements/main/explore_otherside.json +8b124d675dec747cdc32486c1d7098eb8bce594d data/deeperdarker/advancements/main/explore_otherside.json cf318040575219b02ae94941e0fb33c02f196203 data/deeperdarker/advancements/main/find_ancient_city.json e35f7e028016ba746172bbef9f8469f33e99a450 data/deeperdarker/advancements/main/find_ancient_temple.json 0025e3f26af1bd7a49bef17667fd7df05657e4c9 data/deeperdarker/advancements/main/kill_all_sculk_mobs.json diff --git a/src/generated/resources/assets/deeperdarker/blockstates/blooming_moss_block.json b/src/generated/resources/assets/deeperdarker/blockstates/blooming_moss_block.json new file mode 100644 index 000000000..0eaf1496a --- /dev/null +++ b/src/generated/resources/assets/deeperdarker/blockstates/blooming_moss_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "deeperdarker:block/blooming_moss_block" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/deeperdarker/blockstates/blooming_sculk.json b/src/generated/resources/assets/deeperdarker/blockstates/blooming_sculk.json new file mode 100644 index 000000000..5894bf31e --- /dev/null +++ b/src/generated/resources/assets/deeperdarker/blockstates/blooming_sculk.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "deeperdarker:block/blooming_sculk" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/deeperdarker/lang/en_us.json b/src/generated/resources/assets/deeperdarker/lang/en_us.json index d7070ce5c..3d1984bd4 100644 --- a/src/generated/resources/assets/deeperdarker/lang/en_us.json +++ b/src/generated/resources/assets/deeperdarker/lang/en_us.json @@ -20,6 +20,8 @@ "advancements.deeperdarker.warden_armor.description": "Protect yourself with a full set of Warden Armor", "advancements.deeperdarker.warden_armor.title": "Cover Me with Sculk", "block.deeperdarker.ancient_vase": "Ancient Vase", + "block.deeperdarker.blooming_moss_block": "Blooming Moss Block", + "block.deeperdarker.blooming_sculk": "Blooming Sculk", "block.deeperdarker.chiseled_gloomslate": "Chiseled Gloomslate", "block.deeperdarker.chiseled_sculk_stone": "Chiseled Sculk Stone", "block.deeperdarker.cobbled_gloomslate": "Cobbled Gloomslate", diff --git a/src/generated/resources/assets/deeperdarker/models/block/blooming_moss_block.json b/src/generated/resources/assets/deeperdarker/models/block/blooming_moss_block.json new file mode 100644 index 000000000..6c6ea523b --- /dev/null +++ b/src/generated/resources/assets/deeperdarker/models/block/blooming_moss_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "deeperdarker:block/blooming_moss_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/deeperdarker/models/block/blooming_sculk.json b/src/generated/resources/assets/deeperdarker/models/block/blooming_sculk.json new file mode 100644 index 000000000..e61fcfe42 --- /dev/null +++ b/src/generated/resources/assets/deeperdarker/models/block/blooming_sculk.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "bottom": "deeperdarker:block/sculk_stone", + "side": "deeperdarker:block/blooming_sculk", + "top": "deeperdarker:block/blooming_sculk_top" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/deeperdarker/models/item/blooming_moss_block.json b/src/generated/resources/assets/deeperdarker/models/item/blooming_moss_block.json new file mode 100644 index 000000000..ab2cd2077 --- /dev/null +++ b/src/generated/resources/assets/deeperdarker/models/item/blooming_moss_block.json @@ -0,0 +1,3 @@ +{ + "parent": "deeperdarker:block/blooming_moss_block" +} \ No newline at end of file diff --git a/src/generated/resources/assets/deeperdarker/models/item/blooming_sculk.json b/src/generated/resources/assets/deeperdarker/models/item/blooming_sculk.json new file mode 100644 index 000000000..da3710ec2 --- /dev/null +++ b/src/generated/resources/assets/deeperdarker/models/item/blooming_sculk.json @@ -0,0 +1,3 @@ +{ + "parent": "deeperdarker:block/blooming_sculk" +} \ No newline at end of file diff --git a/src/generated/resources/data/deeperdarker/advancements/main/explore_otherside.json b/src/generated/resources/data/deeperdarker/advancements/main/explore_otherside.json index b9a93ab88..6d031b057 100644 --- a/src/generated/resources/data/deeperdarker/advancements/main/explore_otherside.json +++ b/src/generated/resources/data/deeperdarker/advancements/main/explore_otherside.json @@ -1,6 +1,22 @@ { "parent": "deeperdarker:main/enter_otherside", "criteria": { + "blooming_caverns": { + "conditions": { + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "location": { + "biome": "deeperdarker:blooming_caverns" + } + } + } + ] + }, + "trigger": "minecraft:location" + }, "deeplands": { "conditions": { "player": [ @@ -73,6 +89,9 @@ [ "echoing_forest" ], + [ + "blooming_caverns" + ], [ "overcast_columns" ] diff --git a/src/generated/resources/data/deeperdarker/loot_tables/blocks/blooming_moss_block.json b/src/generated/resources/data/deeperdarker/loot_tables/blocks/blooming_moss_block.json new file mode 100644 index 000000000..6534a5b54 --- /dev/null +++ b/src/generated/resources/data/deeperdarker/loot_tables/blocks/blooming_moss_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "deeperdarker:blooming_moss_block" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "deeperdarker:blocks/blooming_moss_block" +} \ No newline at end of file diff --git a/src/generated/resources/data/deeperdarker/loot_tables/blocks/blooming_sculk.json b/src/generated/resources/data/deeperdarker/loot_tables/blocks/blooming_sculk.json new file mode 100644 index 000000000..c952fd8ef --- /dev/null +++ b/src/generated/resources/data/deeperdarker/loot_tables/blocks/blooming_sculk.json @@ -0,0 +1,45 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "deeperdarker:blooming_sculk" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "deeperdarker:cobbled_sculk_stone" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "deeperdarker:blocks/blooming_sculk" +} \ No newline at end of file diff --git a/src/generated/resources/data/deeperdarker/worldgen/biome/blooming_caverns.json b/src/generated/resources/data/deeperdarker/worldgen/biome/blooming_caverns.json new file mode 100644 index 000000000..f0ec4a603 --- /dev/null +++ b/src/generated/resources/data/deeperdarker/worldgen/biome/blooming_caverns.json @@ -0,0 +1,75 @@ +{ + "carvers": {}, + "downfall": 0.2, + "effects": { + "fog_color": 1716032, + "mood_sound": { + "block_search_extent": 8, + "offset": 2.0, + "sound": "deeperdarker:ambient.otherside.additions", + "tick_delay": 6000 + }, + "music": { + "max_delay": 24000, + "min_delay": 12000, + "replace_current_music": false, + "sound": "deeperdarker:music.otherside.echoing_forest" + }, + "particle": { + "options": { + "type": "minecraft:sculk_charge_pop" + }, + "probability": 0.002 + }, + "sky_color": 8560639, + "water_color": 2066085, + "water_fog_color": 2189448 + }, + "features": [ + [], + [], + [], + [], + [], + [], + [ + "deeperdarker:blooming_moss", + "deeperdarker:infested_sculk", + "deeperdarker:sculk_jaw", + "deeperdarker:sculk_coal", + "deeperdarker:sculk_iron", + "deeperdarker:sculk_copper", + "deeperdarker:sculk_gold", + "deeperdarker:sculk_redstone", + "deeperdarker:sculk_emerald", + "deeperdarker:sculk_lapis", + "deeperdarker:sculk_diamond" + ], + [], + [], + [ + "deeperdarker:sculk_tendrils", + "deeperdarker:sculk_vines" + ] + ], + "has_precipitation": true, + "spawn_costs": {}, + "spawners": { + "ambient": [], + "axolotls": [], + "creature": [], + "misc": [], + "monster": [ + { + "type": "deeperdarker:sculk_snapper", + "maxCount": 2, + "minCount": 1, + "weight": 1 + } + ], + "underground_water_creature": [], + "water_ambient": [], + "water_creature": [] + }, + "temperature": -0.3 +} \ No newline at end of file diff --git a/src/generated/resources/data/deeperdarker/worldgen/configured_feature/ore_blooming_moss.json b/src/generated/resources/data/deeperdarker/worldgen/configured_feature/ore_blooming_moss.json new file mode 100644 index 000000000..dc5d5aaa1 --- /dev/null +++ b/src/generated/resources/data/deeperdarker/worldgen/configured_feature/ore_blooming_moss.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 40, + "targets": [ + { + "state": { + "Name": "deeperdarker:blooming_moss_block" + }, + "target": { + "block": "deeperdarker:blooming_sculk", + "predicate_type": "minecraft:block_match" + } + }, + { + "state": { + "Name": "deeperdarker:blooming_moss_block" + }, + "target": { + "block": "deeperdarker:sculk_grime", + "predicate_type": "minecraft:block_match" + } + } + ] + } +} \ No newline at end of file diff --git a/src/generated/resources/data/deeperdarker/worldgen/placed_feature/blooming_moss.json b/src/generated/resources/data/deeperdarker/worldgen/placed_feature/blooming_moss.json new file mode 100644 index 000000000..02801ca8a --- /dev/null +++ b/src/generated/resources/data/deeperdarker/worldgen/placed_feature/blooming_moss.json @@ -0,0 +1,27 @@ +{ + "feature": "deeperdarker:ore_blooming_moss", + "placement": [ + { + "type": "minecraft:count", + "count": 19 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:uniform", + "max_inclusive": { + "below_top": 0 + }, + "min_inclusive": { + "above_bottom": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/dirt.json b/src/generated/resources/data/minecraft/tags/blocks/dirt.json new file mode 100644 index 000000000..13c0fbe39 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/dirt.json @@ -0,0 +1,5 @@ +{ + "values": [ + "deeperdarker:blooming_moss_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json index c7ab267ee..4c46bc1d8 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -29,6 +29,8 @@ "deeperdarker:sculk_stone_tile_wall", "deeperdarker:smooth_sculk_stone_wall", "deeperdarker:cut_sculk_stone_wall", + "deeperdarker:blooming_sculk", + "deeperdarker:blooming_moss_block", "deeperdarker:gloomslate", "deeperdarker:cobbled_gloomslate", "deeperdarker:polished_gloomslate", diff --git a/src/generated/resources/data/minecraft/tags/blocks/small_dripleaf_placeable.json b/src/generated/resources/data/minecraft/tags/blocks/small_dripleaf_placeable.json new file mode 100644 index 000000000..13c0fbe39 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/small_dripleaf_placeable.json @@ -0,0 +1,5 @@ +{ + "values": [ + "deeperdarker:blooming_moss_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/sniffer_diggable_block.json b/src/generated/resources/data/minecraft/tags/blocks/sniffer_diggable_block.json new file mode 100644 index 000000000..13c0fbe39 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/sniffer_diggable_block.json @@ -0,0 +1,5 @@ +{ + "values": [ + "deeperdarker:blooming_moss_block" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/sniffer_egg_hatch_boost.json b/src/generated/resources/data/minecraft/tags/blocks/sniffer_egg_hatch_boost.json new file mode 100644 index 000000000..13c0fbe39 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/sniffer_egg_hatch_boost.json @@ -0,0 +1,5 @@ +{ + "values": [ + "deeperdarker:blooming_moss_block" + ] +} \ No newline at end of file diff --git a/src/main/java/com/kyanite/deeperdarker/DeeperDarker.java b/src/main/java/com/kyanite/deeperdarker/DeeperDarker.java index 4c64ec09e..2f3453e3d 100644 --- a/src/main/java/com/kyanite/deeperdarker/DeeperDarker.java +++ b/src/main/java/com/kyanite/deeperdarker/DeeperDarker.java @@ -145,7 +145,7 @@ public static void breakEvent(final BlockEvent.BreakEvent event) { if(event.getLevel() instanceof ServerLevel level) { RandomSource random = level.getRandom(); if(random.nextFloat() < 0.1f) { - if(random.nextFloat() < 0.953f) { + if(random.nextFloat() < 0.92f) { for(int i = 0; i < random.nextInt(1, 4); i++) { DDEntities.SCULK_LEECH.get().spawn(level, event.getPos(), MobSpawnType.TRIGGERED); } diff --git a/src/main/java/com/kyanite/deeperdarker/client/model/StalkerModel.java b/src/main/java/com/kyanite/deeperdarker/client/model/StalkerModel.java index d7c5593de..1525171e7 100644 --- a/src/main/java/com/kyanite/deeperdarker/client/model/StalkerModel.java +++ b/src/main/java/com/kyanite/deeperdarker/client/model/StalkerModel.java @@ -69,7 +69,7 @@ public static LayerDefinition createBodyModel() { public void setupAnim(Stalker entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { this.root.getAllParts().forEach(ModelPart::resetPose); applyHeadRotation(netHeadYaw, headPitch); - this.animateWalk(StalkerAnimation.WALK, limbSwing, limbSwingAmount, 2f, 2.5f); + this.animateWalk(StalkerAnimation.WALK, limbSwing, limbSwingAmount, 3f, 2.5f); this.animate(entity.idleState, StalkerAnimation.IDLE, ageInTicks); this.animate(entity.attackState, StalkerAnimation.ATTACK, ageInTicks); this.animate(entity.ringAttackState, StalkerAnimation.RING_ATTACK, ageInTicks); diff --git a/src/main/java/com/kyanite/deeperdarker/content/DDBlocks.java b/src/main/java/com/kyanite/deeperdarker/content/DDBlocks.java index 000d21482..c48f7447e 100644 --- a/src/main/java/com/kyanite/deeperdarker/content/DDBlocks.java +++ b/src/main/java/com/kyanite/deeperdarker/content/DDBlocks.java @@ -110,6 +110,9 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { public static final RegistryObject CUT_SCULK_STONE_WALL = register("cut_sculk_stone_wall", () -> new WallBlock(BlockBehaviour.Properties.copy(CUT_SCULK_STONE.get()))); public static final RegistryObject CHISELED_SCULK_STONE = register("chiseled_sculk_stone", () -> new Block(BlockBehaviour.Properties.copy(SCULK_STONE.get()))); + public static final RegistryObject BLOOMING_SCULK = register("blooming_sculk", () -> new Block(BlockBehaviour.Properties.copy(SCULK_STONE.get()).strength(1.5f, 4f))); + public static final RegistryObject BLOOMING_MOSS_BLOCK = register("blooming_moss_block", () -> new Block(BlockBehaviour.Properties.copy(Blocks.MOSS_BLOCK).sound(SoundType.SCULK))); + public static final RegistryObject GLOOMSLATE = register("gloomslate", () -> new Block(BlockBehaviour.Properties.copy(Blocks.DEEPSLATE).strength(2.5f, 4.5f).mapColor(MapColor.TERRACOTTA_BROWN).requiresCorrectToolForDrops())); public static final RegistryObject GLOOMSLATE_STAIRS = register("gloomslate_stairs", () -> new StairBlock(() -> GLOOMSLATE.get().defaultBlockState(), BlockBehaviour.Properties.copy(GLOOMSLATE.get()))); public static final RegistryObject GLOOMSLATE_SLAB = register("gloomslate_slab", () -> new SlabBlock(BlockBehaviour.Properties.copy(GLOOMSLATE.get()))); diff --git a/src/main/java/com/kyanite/deeperdarker/content/entities/ShriekWorm.java b/src/main/java/com/kyanite/deeperdarker/content/entities/ShriekWorm.java index 9735dde9d..649816d12 100644 --- a/src/main/java/com/kyanite/deeperdarker/content/entities/ShriekWorm.java +++ b/src/main/java/com/kyanite/deeperdarker/content/entities/ShriekWorm.java @@ -31,6 +31,7 @@ public class ShriekWorm extends Monster { public final AnimationState asleepState = new AnimationState(); public final AnimationState emergeState = new AnimationState(); public final AnimationState descendState = new AnimationState(); + private int emerging; public ShriekWorm(EntityType pEntityType, Level pLevel) { super(pEntityType, pLevel); @@ -87,6 +88,8 @@ public boolean doHurtTarget(Entity pEntity) { public void tick() { super.tick(); + if(this.getPose() == Pose.EMERGING && ++emerging > 156) this.setPose(Pose.STANDING); + if(level().isClientSide()) { if(this.idleState.isStarted()) { this.entityData.set(IDLE_TIMER, this.entityData.get(IDLE_TIMER) - 1); @@ -114,8 +117,6 @@ public void tick() { } } - if(this.noActionTime > 156) this.setPose(Pose.STANDING); - Player player = level().getNearestPlayer(this, 3); if(player == null || player.isDeadOrDying() || player.isCreative()) { if(this.attackState.isStarted()) { diff --git a/src/main/java/com/kyanite/deeperdarker/content/entities/Stalker.java b/src/main/java/com/kyanite/deeperdarker/content/entities/Stalker.java index 335f35804..948b839bf 100644 --- a/src/main/java/com/kyanite/deeperdarker/content/entities/Stalker.java +++ b/src/main/java/com/kyanite/deeperdarker/content/entities/Stalker.java @@ -28,9 +28,7 @@ import net.minecraft.world.entity.ai.goal.*; import net.minecraft.world.entity.ai.goal.target.HurtByTargetGoal; import net.minecraft.world.entity.ai.memory.MemoryModuleType; -import net.minecraft.world.entity.ai.targeting.TargetingConditions; import net.minecraft.world.entity.monster.Monster; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.gameevent.DynamicGameEventListener; @@ -41,7 +39,6 @@ import net.minecraft.world.level.pathfinder.BlockPathTypes; import org.jetbrains.annotations.Nullable; -import java.util.List; import java.util.function.BiConsumer; @SuppressWarnings("deprecation, NullableProblems") @@ -56,7 +53,7 @@ public class Stalker extends Monster implements DisturbanceListener, VibrationSy private final VibrationSystem.User vibrationUser; private final VibrationSystem.Data vibrationData; public BlockPos disturbanceLocation; - private boolean playersInRange; + private int emerging; public Stalker(EntityType pEntityType, Level pLevel) { super(pEntityType, pLevel); @@ -134,8 +131,9 @@ public void tick() { super.tick(); + if(this.getPose() == Pose.EMERGING && ++emerging > 70) this.setPose(Pose.STANDING); + if(level().isClientSide()) { - this.entityData.set(RING_COOLDOWN, this.entityData.get(RING_COOLDOWN) - 1); if(!this.attackState.isStarted() && !this.idleState.isStarted()) { this.idleState.start(this.tickCount); } @@ -147,24 +145,6 @@ public void tick() { level().addParticle(new BlockParticleOption(ParticleTypes.BLOCK, this.getBlockStateOn()), this.getX() - this.random.nextDouble(), this.getY() + 1, this.getZ() - this.random.nextDouble(), sX, sY, sZ); } } - - if(this.noActionTime > 70) this.setPose(Pose.STANDING); - - List players = level().getNearbyPlayers(TargetingConditions.forCombat().range(10), this, this.getBoundingBox().inflate(10, 8, 10)); - if(!players.isEmpty()) { - if(this.entityData.get(RING_COOLDOWN) <= -100) { - this.playersInRange = false; - this.entityData.set(RING_COOLDOWN, getRandom().nextInt(200, 600)); - if(level().isClientSide()) this.ringAttackState.stop(); - } else if(this.entityData.get(RING_COOLDOWN) <= 0) { - if(level().isClientSide()) this.ringAttackState.start(this.tickCount); - this.playersInRange = true; - } - } else if(this.playersInRange) { - this.playersInRange = false; - this.entityData.set(RING_COOLDOWN, getRandom().nextInt(200, 600)); - if(level().isClientSide()) this.ringAttackState.stop(); - } } @Override diff --git a/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDBlockStateProvider.java b/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDBlockStateProvider.java index bff87b8c2..0f3ff09e0 100644 --- a/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDBlockStateProvider.java +++ b/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDBlockStateProvider.java @@ -68,6 +68,9 @@ protected void registerStatesAndModels() { wallBlock(DDBlocks.CUT_SCULK_STONE_WALL, blockLoc(DDBlocks.CUT_SCULK_STONE)); simpleBlock(DDBlocks.CHISELED_SCULK_STONE.get()); + simpleBlock(DDBlocks.BLOOMING_SCULK.get(), models().cubeBottomTop(DDBlocks.BLOOMING_SCULK.getId().getPath(), blockLoc(DDBlocks.BLOOMING_SCULK), blockLoc(DDBlocks.SCULK_STONE), blockLoc(DDBlocks.BLOOMING_SCULK, "top"))); + simpleBlock(DDBlocks.BLOOMING_MOSS_BLOCK.get()); + simpleBlock(DDBlocks.GLOOMSLATE.get()); stairsBlock(DDBlocks.GLOOMSLATE_STAIRS.get(), blockLoc(DDBlocks.GLOOMSLATE)); slabBlock(DDBlocks.GLOOMSLATE_SLAB.get(), blockLoc(DDBlocks.GLOOMSLATE), blockLoc(DDBlocks.GLOOMSLATE)); diff --git a/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDItemModelProvider.java b/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDItemModelProvider.java index 4fb7b02c0..9900a46f0 100644 --- a/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDItemModelProvider.java +++ b/src/main/java/com/kyanite/deeperdarker/datagen/assets/DDItemModelProvider.java @@ -68,6 +68,9 @@ protected void registerModels() { blockModel(DDBlocks.CUT_SCULK_STONE_WALL, "inventory"); blockModel(DDBlocks.CHISELED_SCULK_STONE); + blockModel(DDBlocks.BLOOMING_SCULK); + blockModel(DDBlocks.BLOOMING_MOSS_BLOCK); + blockModel(DDBlocks.GLOOMSLATE); blockModel(DDBlocks.GLOOMSLATE_STAIRS); blockModel(DDBlocks.GLOOMSLATE_SLAB); diff --git a/src/main/java/com/kyanite/deeperdarker/datagen/data/DDAdvancements.java b/src/main/java/com/kyanite/deeperdarker/datagen/data/DDAdvancements.java index d48373665..35d0c5e2a 100644 --- a/src/main/java/com/kyanite/deeperdarker/datagen/data/DDAdvancements.java +++ b/src/main/java/com/kyanite/deeperdarker/datagen/data/DDAdvancements.java @@ -54,6 +54,7 @@ public void generate(HolderLookup.Provider registries, Consumer sav Advancement.Builder.advancement().parent(enterOtherside).display(DDItems.WARDEN_BOOTS.get(), Component.translatable(id + "explore_otherside.title"), Component.translatable(id + "explore_otherside.description"), null, FrameType.CHALLENGE, true, true, false) .addCriterion("deeplands", PlayerTrigger.TriggerInstance.located(LocationPredicate.inBiome(OthersideBiomes.DEEPLANDS))) .addCriterion("echoing_forest", PlayerTrigger.TriggerInstance.located(LocationPredicate.inBiome(OthersideBiomes.ECHOING_FOREST))) + .addCriterion("blooming_caverns", PlayerTrigger.TriggerInstance.located(LocationPredicate.inBiome(OthersideBiomes.BLOOMING_CAVERNS))) .addCriterion("overcast_columns", PlayerTrigger.TriggerInstance.located(LocationPredicate.inBiome(OthersideBiomes.OVERCAST_COLUMNS))) .requirements(RequirementsStrategy.AND).rewards(AdvancementRewards.Builder.experience(300)).save(saver, path("explore_otherside"), existingFileHelper); diff --git a/src/main/java/com/kyanite/deeperdarker/datagen/data/DDBlockTagsProvider.java b/src/main/java/com/kyanite/deeperdarker/datagen/data/DDBlockTagsProvider.java index 30b6e42be..f36a110a0 100644 --- a/src/main/java/com/kyanite/deeperdarker/datagen/data/DDBlockTagsProvider.java +++ b/src/main/java/com/kyanite/deeperdarker/datagen/data/DDBlockTagsProvider.java @@ -28,6 +28,7 @@ protected void addTags(HolderLookup.@NotNull Provider pProvider) { DDBlocks.SCULK_STONE_STAIRS.get(), DDBlocks.COBBLED_SCULK_STONE_STAIRS.get(), DDBlocks.POLISHED_SCULK_STONE_STAIRS.get(), DDBlocks.SCULK_STONE_BRICK_STAIRS.get(), DDBlocks.SCULK_STONE_TILE_STAIRS.get(), DDBlocks.SMOOTH_SCULK_STONE_STAIRS.get(), DDBlocks.CUT_SCULK_STONE_STAIRS.get(), DDBlocks.SCULK_STONE_SLAB.get(), DDBlocks.COBBLED_SCULK_STONE_SLAB.get(), DDBlocks.POLISHED_SCULK_STONE_SLAB.get(), DDBlocks.SCULK_STONE_BRICK_SLAB.get(), DDBlocks.SCULK_STONE_TILE_SLAB.get(), DDBlocks.SMOOTH_SCULK_STONE_SLAB.get(), DDBlocks.CUT_SCULK_STONE_SLAB.get(), DDBlocks.SCULK_STONE_WALL.get(), DDBlocks.COBBLED_SCULK_STONE_WALL.get(), DDBlocks.POLISHED_SCULK_STONE_WALL.get(), DDBlocks.SCULK_STONE_BRICK_WALL.get(), DDBlocks.SCULK_STONE_TILE_WALL.get(), DDBlocks.SMOOTH_SCULK_STONE_WALL.get(), DDBlocks.CUT_SCULK_STONE_WALL.get(), + DDBlocks.BLOOMING_SCULK.get(), DDBlocks.BLOOMING_MOSS_BLOCK.get(), DDBlocks.GLOOMSLATE.get(), DDBlocks.COBBLED_GLOOMSLATE.get(), DDBlocks.POLISHED_GLOOMSLATE.get(), DDBlocks.GLOOMSLATE_BRICKS.get(), DDBlocks.GLOOMSLATE_TILES.get(), DDBlocks.SMOOTH_GLOOMSLATE.get(), DDBlocks.CUT_GLOOMSLATE.get(), DDBlocks.CHISELED_GLOOMSLATE.get(), DDBlocks.GLOOMSLATE_STAIRS.get(), DDBlocks.COBBLED_GLOOMSLATE_STAIRS.get(), DDBlocks.POLISHED_GLOOMSLATE_STAIRS.get(), DDBlocks.GLOOMSLATE_BRICK_STAIRS.get(), DDBlocks.GLOOMSLATE_TILE_STAIRS.get(), DDBlocks.SMOOTH_GLOOMSLATE_STAIRS.get(), DDBlocks.CUT_GLOOMSLATE_STAIRS.get(), DDBlocks.GLOOMSLATE_SLAB.get(), DDBlocks.COBBLED_GLOOMSLATE_SLAB.get(), DDBlocks.POLISHED_GLOOMSLATE_SLAB.get(), DDBlocks.GLOOMSLATE_BRICK_SLAB.get(), DDBlocks.GLOOMSLATE_TILE_SLAB.get(), DDBlocks.SMOOTH_GLOOMSLATE_SLAB.get(), DDBlocks.CUT_GLOOMSLATE_SLAB.get(), @@ -72,6 +73,10 @@ protected void addTags(HolderLookup.@NotNull Provider pProvider) { tag(BlockTags.LAPIS_ORES).add(DDBlocks.SCULK_STONE_LAPIS_ORE.get(), DDBlocks.GLOOMSLATE_LAPIS_ORE.get()); tag(BlockTags.DIAMOND_ORES).add(DDBlocks.SCULK_STONE_DIAMOND_ORE.get(), DDBlocks.GLOOMSLATE_DIAMOND_ORE.get()); + tag(BlockTags.DIRT).add(DDBlocks.BLOOMING_MOSS_BLOCK.get()); + tag(BlockTags.SMALL_DRIPLEAF_PLACEABLE).add(DDBlocks.BLOOMING_MOSS_BLOCK.get()); + tag(BlockTags.SNIFFER_DIGGABLE_BLOCK).add(DDBlocks.BLOOMING_MOSS_BLOCK.get()); + tag(BlockTags.SNIFFER_EGG_HATCH_BOOST).add(DDBlocks.BLOOMING_MOSS_BLOCK.get()); tag(BlockTags.CLIMBABLE).add(DDBlocks.SCULK_TENDRILS.get(), DDBlocks.SCULK_TENDRILS_PLANT.get(), DDBlocks.SCULK_VINES.get(), DDBlocks.SCULK_VINES_PLANT.get()); tag(BlockTags.PORTALS).add(DDBlocks.OTHERSIDE_PORTAL.get()); diff --git a/src/main/java/com/kyanite/deeperdarker/datagen/data/loot/DDBlockLoot.java b/src/main/java/com/kyanite/deeperdarker/datagen/data/loot/DDBlockLoot.java index bf90faf11..e71913131 100644 --- a/src/main/java/com/kyanite/deeperdarker/datagen/data/loot/DDBlockLoot.java +++ b/src/main/java/com/kyanite/deeperdarker/datagen/data/loot/DDBlockLoot.java @@ -84,6 +84,9 @@ protected void generate() { dropSelf(DDBlocks.CUT_SCULK_STONE_WALL.get()); dropSelf(DDBlocks.CHISELED_SCULK_STONE.get()); + add(DDBlocks.BLOOMING_SCULK.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, DDBlocks.COBBLED_SCULK_STONE.get())); + dropSelf(DDBlocks.BLOOMING_MOSS_BLOCK.get()); + add(DDBlocks.GLOOMSLATE.get(), (block) -> this.createSingleItemTableWithSilkTouch(block, DDBlocks.COBBLED_GLOOMSLATE.get())); dropSelf(DDBlocks.GLOOMSLATE_STAIRS.get()); add(DDBlocks.GLOOMSLATE_SLAB.get(), this::createSlabItemTable); diff --git a/src/main/java/com/kyanite/deeperdarker/world/DDConfiguredFeatures.java b/src/main/java/com/kyanite/deeperdarker/world/DDConfiguredFeatures.java index f9098aae1..8942f8de4 100644 --- a/src/main/java/com/kyanite/deeperdarker/world/DDConfiguredFeatures.java +++ b/src/main/java/com/kyanite/deeperdarker/world/DDConfiguredFeatures.java @@ -69,6 +69,8 @@ public class DDConfiguredFeatures { public static final ResourceKey> ORE_SCULK_LAPIS = createKey("ore_sculk_lapis"); public static final ResourceKey> ORE_SCULK_DIAMOND = createKey("ore_sculk_diamond"); + public static final ResourceKey> ORE_BLOOMING_MOSS = createKey("ore_blooming_moss"); + public static final ResourceKey> ORE_GLOOMY_SCULK = createKey("ore_gloomy_sculk"); public static final ResourceKey> ORE_MAGMA = createKey("ore_magma"); public static final ResourceKey> ORE_SOUL_SAND = createKey("ore_soul_sand"); @@ -97,6 +99,7 @@ public static void bootstrap(BootstapContext> context) { List EMERALD_TARGET_LIST = List.of(OreConfiguration.target(SCULK_STONE_REPLACEABLES, DDBlocks.SCULK_STONE_EMERALD_ORE.get().defaultBlockState()), OreConfiguration.target(GLOOMSLATE_REPLACEABLES, DDBlocks.GLOOMSLATE_EMERALD_ORE.get().defaultBlockState())); List LAPIS_TARGET_LIST = List.of(OreConfiguration.target(SCULK_STONE_REPLACEABLES, DDBlocks.SCULK_STONE_LAPIS_ORE.get().defaultBlockState()), OreConfiguration.target(GLOOMSLATE_REPLACEABLES, DDBlocks.GLOOMSLATE_LAPIS_ORE.get().defaultBlockState())); List DIAMOND_TARGET_LIST = List.of(OreConfiguration.target(SCULK_STONE_REPLACEABLES, DDBlocks.SCULK_STONE_DIAMOND_ORE.get().defaultBlockState()), OreConfiguration.target(GLOOMSLATE_REPLACEABLES, DDBlocks.GLOOMSLATE_DIAMOND_ORE.get().defaultBlockState())); + List BLOOMING_MOSS_TARGET_LIST = List.of(OreConfiguration.target(new BlockMatchTest(DDBlocks.BLOOMING_SCULK.get()), DDBlocks.BLOOMING_MOSS_BLOCK.get().defaultBlockState()), OreConfiguration.target(SCULK_GRIME_REPLACEABLES, DDBlocks.BLOOMING_MOSS_BLOCK.get().defaultBlockState())); List GLOOMY_SCULK_TARGET_LIST = List.of(OreConfiguration.target(SCULK_GRIME_REPLACEABLES, DDBlocks.GLOOMY_SCULK.get().defaultBlockState())); List SOUL_SAND_TARGET_LIST = List.of(OreConfiguration.target(SCULK_GRIME_REPLACEABLES, Blocks.SOUL_SAND.defaultBlockState())); List SOUL_SOIL_TARGET_LIST = List.of(OreConfiguration.target(SCULK_GRIME_REPLACEABLES, Blocks.SOUL_SOIL.defaultBlockState())); @@ -129,6 +132,8 @@ public static void bootstrap(BootstapContext> context) { FeatureUtils.register(context, ORE_SCULK_LAPIS, Feature.ORE, new OreConfiguration(LAPIS_TARGET_LIST, 10, 0.7f)); FeatureUtils.register(context, ORE_SCULK_DIAMOND, Feature.ORE, new OreConfiguration(DIAMOND_TARGET_LIST, 7, 0.4f)); + FeatureUtils.register(context, ORE_BLOOMING_MOSS, Feature.ORE, new OreConfiguration(BLOOMING_MOSS_TARGET_LIST, 40)); + FeatureUtils.register(context, ORE_GLOOMY_SCULK, Feature.ORE, new OreConfiguration(GLOOMY_SCULK_TARGET_LIST, 64)); FeatureUtils.register(context, ORE_MAGMA, Feature.ORE, new OreConfiguration(MAGMA_TARGET_LIST, 64)); FeatureUtils.register(context, ORE_SOUL_SAND, Feature.ORE, new OreConfiguration(SOUL_SAND_TARGET_LIST, 48)); diff --git a/src/main/java/com/kyanite/deeperdarker/world/DDPlacedFeatures.java b/src/main/java/com/kyanite/deeperdarker/world/DDPlacedFeatures.java index d883c8e64..7069018e9 100644 --- a/src/main/java/com/kyanite/deeperdarker/world/DDPlacedFeatures.java +++ b/src/main/java/com/kyanite/deeperdarker/world/DDPlacedFeatures.java @@ -41,6 +41,8 @@ public class DDPlacedFeatures { public static final ResourceKey SCULK_LAPIS = createKey("sculk_lapis"); public static final ResourceKey SCULK_DIAMOND = createKey("sculk_diamond"); + public static final ResourceKey BLOOMING_MOSS = createKey("blooming_moss"); + public static final ResourceKey GLOOMY_SCULK = createKey("gloomy_sculk"); public static final ResourceKey MAGMA = createKey("magma"); public static final ResourceKey SOUL_SAND = createKey("soul_sand"); @@ -83,6 +85,8 @@ public static void bootstrap(BootstapContext context) { PlacementUtils.register(context, SCULK_LAPIS, features.getOrThrow(DDConfiguredFeatures.ORE_SCULK_LAPIS), countPlacement(4, HeightRangePlacement.triangle(VerticalAnchor.aboveBottom(10), VerticalAnchor.aboveBottom(25)))); PlacementUtils.register(context, SCULK_DIAMOND, features.getOrThrow(DDConfiguredFeatures.ORE_SCULK_DIAMOND), countPlacement(3, HeightRangePlacement.triangle(VerticalAnchor.aboveBottom(-32), VerticalAnchor.aboveBottom(50)))); + PlacementUtils.register(context, BLOOMING_MOSS, features.getOrThrow(DDConfiguredFeatures.ORE_BLOOMING_MOSS), countPlacement(19, PlacementUtils.FULL_RANGE)); + PlacementUtils.register(context, GLOOMY_SCULK, features.getOrThrow(DDConfiguredFeatures.ORE_GLOOMY_SCULK), countPlacement(96, HeightRangePlacement.uniform(VerticalAnchor.bottom(), VerticalAnchor.aboveBottom(32)))); PlacementUtils.register(context, MAGMA, features.getOrThrow(DDConfiguredFeatures.ORE_MAGMA), countPlacement(128, PlacementUtils.FULL_RANGE)); PlacementUtils.register(context, SOUL_SAND, features.getOrThrow(DDConfiguredFeatures.ORE_SOUL_SAND), countPlacement(192, PlacementUtils.FULL_RANGE)); diff --git a/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideBiomes.java b/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideBiomes.java index 33f50f778..ac3723da7 100644 --- a/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideBiomes.java +++ b/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideBiomes.java @@ -24,6 +24,7 @@ public class OthersideBiomes { public static final ResourceKey DEEPLANDS = createKey("deeplands"); public static final ResourceKey ECHOING_FOREST = createKey("echoing_forest"); + public static final ResourceKey BLOOMING_CAVERNS = createKey("blooming_caverns"); public static final ResourceKey OVERCAST_COLUMNS = createKey("overcast_columns"); public static void bootstrap(BootstapContext context) { @@ -32,6 +33,7 @@ public static void bootstrap(BootstapContext context) { context.register(DEEPLANDS, deeplands(placedFeatures, worldCarvers)); context.register(ECHOING_FOREST, echoingForest(placedFeatures, worldCarvers)); + context.register(BLOOMING_CAVERNS, bloomingCaverns(placedFeatures, worldCarvers)); context.register(OVERCAST_COLUMNS, overcastColumns(placedFeatures, worldCarvers)); } @@ -96,6 +98,30 @@ private static Biome echoingForest(HolderGetter placedFeatures, H .generationSettings(biomeBuilder.build()).build(); } + private static Biome bloomingCaverns(HolderGetter placedFeatures, HolderGetter> worldCarvers) { + MobSpawnSettings.Builder mobSpawnBuilder = new MobSpawnSettings.Builder(); + mobSpawnBuilder.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(DDEntities.SCULK_SNAPPER.get(), 1, 1, 2)); + + BiomeGenerationSettings.Builder biomeBuilder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); + biomeBuilder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, DDPlacedFeatures.BLOOMING_MOSS); + addSculkDecoration(biomeBuilder); + addSculkOres(biomeBuilder); + + return (new Biome.BiomeBuilder()).hasPrecipitation(true) + .temperature(-0.3f) + .downfall(0.2f) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(0x1f86a5) + .waterFogColor(0x216888) + .fogColor(0x1a2f40) + .skyColor(calculateSkyColor(-0.3f)) + .ambientParticle(new AmbientParticleSettings(ParticleTypes.SCULK_CHARGE_POP, 0.002f)) + .ambientMoodSound(new AmbientMoodSettings(DDSounds.AMBIENT_OTHERSIDE_ADDITIONS.getHolder().get(), 6000, 8, 2)) + .backgroundMusic(Musics.createGameMusic(DDSounds.MUSIC_BIOME_ECHOING_FOREST.getHolder().get())).build()) + .mobSpawnSettings(mobSpawnBuilder.build()) + .generationSettings(biomeBuilder.build()).build(); + } + private static Biome overcastColumns(HolderGetter placedFeatures, HolderGetter> worldCarvers) { BiomeGenerationSettings.Builder biomeBuilder = new BiomeGenerationSettings.Builder(placedFeatures, worldCarvers); biomeBuilder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, DDPlacedFeatures.GLOOMSLATE_COLUMN); diff --git a/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideTeleporter.java b/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideTeleporter.java index 29141c705..c70f80ef5 100644 --- a/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideTeleporter.java +++ b/src/main/java/com/kyanite/deeperdarker/world/otherside/OthersideTeleporter.java @@ -145,6 +145,21 @@ public Optional makePortal(BlockPos pos, Direction.Axi return Optional.empty(); } + int c = 0; + BlockPos.MutableBlockPos blockPos = new BlockPos.MutableBlockPos(finalPos.getX(), finalPos.getY(), finalPos.getZ()); + while(!this.level.getBlockState(blockPos).isAir() && !this.level.isOutsideBuildHeight(blockPos)) { + blockPos.move(0, 1, 0); + c++; + } + if(!this.level.isOutsideBuildHeight(blockPos)) finalPos = blockPos; + else { + blockPos.move(0, -c, 0); + while(!this.level.getBlockState(blockPos).isAir() && !this.level.isOutsideBuildHeight(blockPos)) { + blockPos.move(0, -1, 0); + } + if(!this.level.isOutsideBuildHeight(blockPos)) finalPos = blockPos; + } + for(int i = -PORTAL_BASE; i < PORTAL_BASE + 1; i++) { for(int j = 0; j < PORTAL_WIDTH; j++) { for(int k = -1; k < PORTAL_HEIGHT; k++) { diff --git a/src/main/resources/assets/deeperdarker/textures/block/blooming_moss_block.png b/src/main/resources/assets/deeperdarker/textures/block/blooming_moss_block.png new file mode 100644 index 000000000..edc12abca Binary files /dev/null and b/src/main/resources/assets/deeperdarker/textures/block/blooming_moss_block.png differ diff --git a/src/main/resources/assets/deeperdarker/textures/block/blooming_sculk.png b/src/main/resources/assets/deeperdarker/textures/block/blooming_sculk.png new file mode 100644 index 000000000..8ef143dd9 Binary files /dev/null and b/src/main/resources/assets/deeperdarker/textures/block/blooming_sculk.png differ diff --git a/src/main/resources/assets/deeperdarker/textures/block/blooming_sculk_top.png b/src/main/resources/assets/deeperdarker/textures/block/blooming_sculk_top.png new file mode 100644 index 000000000..47ae3aeb7 Binary files /dev/null and b/src/main/resources/assets/deeperdarker/textures/block/blooming_sculk_top.png differ diff --git a/src/main/resources/assets/deeperdarker/textures/block/glooming_sculk.png b/src/main/resources/assets/deeperdarker/textures/block/glooming_sculk.png new file mode 100644 index 000000000..079afdee0 Binary files /dev/null and b/src/main/resources/assets/deeperdarker/textures/block/glooming_sculk.png differ diff --git a/src/main/resources/assets/deeperdarker/textures/block/glooming_sculk_top.png b/src/main/resources/assets/deeperdarker/textures/block/glooming_sculk_top.png new file mode 100644 index 000000000..be976b5ed Binary files /dev/null and b/src/main/resources/assets/deeperdarker/textures/block/glooming_sculk_top.png differ diff --git a/src/main/resources/data/deeperdarker/dimension/otherside.json b/src/main/resources/data/deeperdarker/dimension/otherside.json index ac6900e75..ca1702810 100644 --- a/src/main/resources/data/deeperdarker/dimension/otherside.json +++ b/src/main/resources/data/deeperdarker/dimension/otherside.json @@ -30,6 +30,18 @@ "offset": 0 } }, + { + "biome": "deeperdarker:blooming_caverns", + "parameters": { + "temperature": -0.3, + "humidity": 0.2, + "continentalness": 0, + "erosion": 0.5, + "weirdness": 0, + "depth": 0, + "offset": 0 + } + }, { "biome": "deeperdarker:overcast_columns", "parameters": { diff --git a/src/main/resources/data/deeperdarker/worldgen/noise_settings/otherside.json b/src/main/resources/data/deeperdarker/worldgen/noise_settings/otherside.json index 745051cad..839b3623d 100644 --- a/src/main/resources/data/deeperdarker/worldgen/noise_settings/otherside.json +++ b/src/main/resources/data/deeperdarker/worldgen/noise_settings/otherside.json @@ -33,7 +33,7 @@ "vegetation": { "type": "minecraft:shifted_noise", "noise": "minecraft:vegetation", - "xz_scale": 0.4, + "xz_scale": 0.6, "y_scale": 0, "shift_x": "minecraft:shift_x", "shift_y": 0, @@ -70,7 +70,7 @@ "argument1": -2.5, "argument2": { "type": "minecraft:add", - "argument1": 0.95, + "argument1": 1.1, "argument2": { "type": "minecraft:mul", "argument1": { @@ -180,6 +180,21 @@ "then_run": { "type": "minecraft:sequence", "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": [ + "deeperdarker:blooming_caverns" + ] + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "deeperdarker:blooming_sculk" + } + } + }, { "type": "minecraft:condition", "if_true": {