diff --git a/README.md b/README.md
index 30342b816..b7d18cdce 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
-**Biomes O' Plenty** is an expansive biome mod for Minecraft that adds a slew of **new, unique biomes to the Overworld and Nether!** To go along with the new biomes, it adds **new plants, flowers, trees, building blocks, and much more!**
+**Biomes O' Plenty** is an expansive biome mod for Minecraft that adds a slew of **new, unique biomes to the Overworld, Nether, and End!** To go along with the new biomes, it adds **new plants, flowers, trees, building blocks, and much more!**
-----------------
diff --git a/common/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/common/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924
index 698f3c244..d417127ff 100644
--- a/common/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924
+++ b/common/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924
@@ -1,4 +1,4 @@
-// 1.20.4 2024-01-16T17:51:31.850639 Registries
+// 1.20.4 2024-01-17T16:45:12.9697103 Registries
bec08031dc5126119d3c7a1033703f8235bdf56e data/biomesoplenty/damage_type/bramble.json
41f8df67f585538edc9847b6754275d24b813e06 data/biomesoplenty/damage_type/fumarole.json
1db19ce8d33b8c131955b60ed830200bbee6a912 data/biomesoplenty/worldgen/biome/aspen_glade.json
@@ -13,9 +13,9 @@ d0c0bdd9fc7b09e7d046e35faea8cc6d752b468a data/biomesoplenty/worldgen/biome/crag.
401cb408a8b99f3fd8b696f9759d9f1f8a1a945e data/biomesoplenty/worldgen/biome/dead_forest.json
506de7d82a9bf0a7caea3390590dc9d1fa2028b0 data/biomesoplenty/worldgen/biome/dryland.json
d4a9226ceaef3cf4eed45892e027c1eabf9fcd72 data/biomesoplenty/worldgen/biome/dune_beach.json
-b483b45bfe2934381accd8001723f45f08356c87 data/biomesoplenty/worldgen/biome/end_corruption.json
-85c3f472e2c8c0fcc91a949b1d0210bf2b4e45cc data/biomesoplenty/worldgen/biome/end_reef.json
-c8da42275f3e77f30df81eea9d0cfcf22f00cde1 data/biomesoplenty/worldgen/biome/end_wilds.json
+0f7c6770ec15ea90b29d58f7427fedf2ecd5a227 data/biomesoplenty/worldgen/biome/end_corruption.json
+5db4bd37b86665f55da93298806849f2285d5060 data/biomesoplenty/worldgen/biome/end_reef.json
+5e761da3260f04936defe5a580d015e8d109e7c7 data/biomesoplenty/worldgen/biome/end_wilds.json
a89d541384f1a879bb82d9c984d98c512474d27c data/biomesoplenty/worldgen/biome/erupting_inferno.json
d662a9e04a7840345595d343cc34426393c04699 data/biomesoplenty/worldgen/biome/field.json
0ca60f25f9961787ec5f174f8be6f29463c4decc data/biomesoplenty/worldgen/biome/fir_clearing.json
@@ -491,7 +491,7 @@ eaafc116edf17b5a3c48e7bdc68f62ba84fd2deb data/biomesoplenty/worldgen/placed_feat
a0515b53a5b94f2ed1d7dbd87db0585612d83dda data/biomesoplenty/worldgen/placed_feature/nether_bramble.json
1a38b33f693e7e19b9e5975269ae2ab5cf1c2472 data/biomesoplenty/worldgen/placed_feature/nether_vines.json
f3b33fbd598ab935e868bab7a4875ee1380220b0 data/biomesoplenty/worldgen/placed_feature/null_lake.json
-b6593e87126d0d5ee1b9117723911931e9d2bef2 data/biomesoplenty/worldgen/placed_feature/null_tree.json
+a3d701df3a8d022e81b0abe17a6f635938ae0d19 data/biomesoplenty/worldgen/placed_feature/null_tree.json
062fefe110d24798d1df521817e98394fe648a62 data/biomesoplenty/worldgen/placed_feature/oak_bush.json
2669995131b210204c99f3f718cae309ba9e822f data/biomesoplenty/worldgen/placed_feature/obsidian_splatter.json
7fcd3ef78b62a0c814a8e780b79f63c9cf9aaa87 data/biomesoplenty/worldgen/placed_feature/orange_maple_leaf_piles.json
@@ -558,7 +558,7 @@ aa0d904e7a1f35d576717565f0442d01000453cc data/biomesoplenty/worldgen/placed_feat
51bf1f3cd23c08e9fa2c2189d39fd90371762bc3 data/biomesoplenty/worldgen/placed_feature/porous_flesh.json
5778dd543e43fb9e71c08554abb7f350253643cf data/biomesoplenty/worldgen/placed_feature/pumpkin_patch.json
db09e9654c16f52e231da2d5b8f06e7939ea5d69 data/biomesoplenty/worldgen/placed_feature/pus_bubbles.json
-01445a026f89b9644601c266db1b387144c32cb3 data/biomesoplenty/worldgen/placed_feature/radiant_hands.json
+fcdffc2c2a3ff4d45d0a2855b4efb0fd1bbd664c data/biomesoplenty/worldgen/placed_feature/radiant_hands.json
717eb46bdca44e52128033b627f0fb8aefe886a8 data/biomesoplenty/worldgen/placed_feature/rainbow_birch_tree.json
87d9d03e05cd26120e64be061b4133c09059aa1b data/biomesoplenty/worldgen/placed_feature/rainforest_cliffs_vines.json
11e26339d0c1be09f94db502d5da6a780af69e7d data/biomesoplenty/worldgen/placed_feature/redwood_tree.json
diff --git a/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_corruption.json b/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_corruption.json
index d45bbcd6f..e7154a23f 100644
--- a/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_corruption.json
+++ b/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_corruption.json
@@ -9,6 +9,12 @@
"sound": "minecraft:ambient.cave",
"tick_delay": 6000
},
+ "particle": {
+ "options": {
+ "type": "biomesoplenty:binary"
+ },
+ "probability": 3.75E-4
+ },
"sky_color": 0,
"water_color": 4159204,
"water_fog_color": 329011
@@ -40,14 +46,7 @@
"axolotls": [],
"creature": [],
"misc": [],
- "monster": [
- {
- "type": "minecraft:enderman",
- "maxCount": 4,
- "minCount": 4,
- "weight": 10
- }
- ],
+ "monster": [],
"underground_water_creature": [],
"water_ambient": [],
"water_creature": []
diff --git a/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_reef.json b/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_reef.json
index 2cd74bc34..e4695bd3b 100644
--- a/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_reef.json
+++ b/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_reef.json
@@ -9,6 +9,12 @@
"sound": "minecraft:ambient.cave",
"tick_delay": 6000
},
+ "particle": {
+ "options": {
+ "type": "minecraft:mycelium"
+ },
+ "probability": 0.0075
+ },
"sky_color": 0,
"water_color": 16777215,
"water_fog_color": 3355443
diff --git a/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_wilds.json b/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_wilds.json
index 418897f24..027b9efd0 100644
--- a/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_wilds.json
+++ b/common/src/generated/resources/data/biomesoplenty/worldgen/biome/end_wilds.json
@@ -9,6 +9,12 @@
"sound": "minecraft:ambient.cave",
"tick_delay": 6000
},
+ "particle": {
+ "options": {
+ "type": "biomesoplenty:end_spore"
+ },
+ "probability": 0.005
+ },
"sky_color": 0,
"water_color": 4159204,
"water_fog_color": 329011
diff --git a/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/null_tree.json b/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/null_tree.json
index 73b0521f2..8f878f044 100644
--- a/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/null_tree.json
+++ b/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/null_tree.json
@@ -5,7 +5,7 @@
"type": "minecraft:block_predicate_filter",
"predicate": {
"type": "minecraft:matching_blocks",
- "blocks": "minecraft:end_stone",
+ "blocks": "biomesoplenty:unmapped_end_stone",
"offset": [
0,
-1,
diff --git a/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/radiant_hands.json b/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/radiant_hands.json
index ae737ae6e..1ba6703eb 100644
--- a/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/radiant_hands.json
+++ b/common/src/generated/resources/data/biomesoplenty/worldgen/placed_feature/radiant_hands.json
@@ -3,7 +3,7 @@
"placement": [
{
"type": "minecraft:rarity_filter",
- "chance": 3
+ "chance": 2
},
{
"type": "minecraft:in_square"
diff --git a/common/src/main/java/biomesoplenty/api/block/BOPBlocks.java b/common/src/main/java/biomesoplenty/api/block/BOPBlocks.java
index b4ba0f645..b20aef3f0 100644
--- a/common/src/main/java/biomesoplenty/api/block/BOPBlocks.java
+++ b/common/src/main/java/biomesoplenty/api/block/BOPBlocks.java
@@ -74,6 +74,7 @@ public class BOPBlocks
public static Block SMALL_ROSE_QUARTZ_BUD;
public static Block ALGAL_END_STONE;
+ public static Block UNMAPPED_END_STONE;
public static Block NULL_END_STONE;
public static Block NULL_BLOCK;
public static Block ANOMALY;
diff --git a/common/src/main/java/biomesoplenty/api/item/BOPItems.java b/common/src/main/java/biomesoplenty/api/item/BOPItems.java
index d45f66628..c458a25be 100644
--- a/common/src/main/java/biomesoplenty/api/item/BOPItems.java
+++ b/common/src/main/java/biomesoplenty/api/item/BOPItems.java
@@ -81,6 +81,7 @@ public class BOPItems
public static Item ROSE_QUARTZ_CHUNK;
public static Item ALGAL_END_STONE;
+ public static Item UNMAPPED_END_STONE;
public static Item NULL_END_STONE;
public static Item NULL_BLOCK;
public static Item ANOMALY;
diff --git a/common/src/main/java/biomesoplenty/biome/BOPEndBiomes.java b/common/src/main/java/biomesoplenty/biome/BOPEndBiomes.java
index a33aaa7c8..ee3bf0410 100644
--- a/common/src/main/java/biomesoplenty/biome/BOPEndBiomes.java
+++ b/common/src/main/java/biomesoplenty/biome/BOPEndBiomes.java
@@ -4,9 +4,11 @@
******************************************************************************/
package biomesoplenty.biome;
+import biomesoplenty.init.ModParticles;
import biomesoplenty.worldgen.placement.BOPEndPlacements;
import biomesoplenty.worldgen.placement.BOPVegetationPlacements;
import net.minecraft.core.HolderGetter;
+import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.data.worldgen.BiomeDefaultFeatures;
import net.minecraft.data.worldgen.placement.EndPlacements;
import net.minecraft.world.level.biome.*;
@@ -16,25 +18,6 @@
public class BOPEndBiomes
{
- private static Biome baseEndBiome(BiomeGenerationSettings.Builder biomeBuilder, MobSpawnSettings.Builder mobSpawnBuilder, int waterColor, int waterFogColor) {
- return new Biome.BiomeBuilder()
- .hasPrecipitation(false)
- .temperature(0.5F)
- .downfall(0.5F)
- .specialEffects(
- new BiomeSpecialEffects.Builder()
- .waterColor(waterColor)
- .waterFogColor(waterFogColor)
- .fogColor(10518688)
- .skyColor(0)
- .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS)
- .build()
- )
- .mobSpawnSettings(mobSpawnBuilder.build())
- .generationSettings(biomeBuilder.build())
- .build();
- }
-
public static Biome endWilds(HolderGetter placedFeatureGetter, HolderGetter> carverGetter)
{
MobSpawnSettings.Builder mobSpawnBuilder = new MobSpawnSettings.Builder();
@@ -45,7 +28,11 @@ public static Biome endWilds(HolderGetter placedFeatureGetter, Ho
biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, BOPEndPlacements.FLOWER_END_WILDS);
biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, BOPEndPlacements.PATCH_ENDERPHYTES);
biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, BOPEndPlacements.RADIANT_HANDS);
- return baseEndBiome(biomeBuilder, mobSpawnBuilder, 4159204, 329011);
+
+ return new Biome.BiomeBuilder()
+ .hasPrecipitation(false).temperature(0.5F).downfall(0.5F)
+ .specialEffects(new BiomeSpecialEffects.Builder().waterColor(4159204).waterFogColor(329011).fogColor(10518688).skyColor(0).ambientParticle(new AmbientParticleSettings(ModParticles.END_SPORE, 0.005F)).ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build())
+ .mobSpawnSettings(mobSpawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
}
public static Biome endReef(HolderGetter placedFeatureGetter, HolderGetter> carverGetter)
@@ -59,18 +46,25 @@ public static Biome endReef(HolderGetter placedFeatureGetter, Hol
biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, BOPEndPlacements.DEAD_CORAL_PATCH);
biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, BOPEndPlacements.BARNACLES);
biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, BOPVegetationPlacements.PATCH_DEAD_GRASS);
- return baseEndBiome(biomeBuilder, mobSpawnBuilder, 0xFFFFFF, 0x333333);
+
+ return new Biome.BiomeBuilder()
+ .hasPrecipitation(false).temperature(0.5F).downfall(0.5F)
+ .specialEffects(new BiomeSpecialEffects.Builder().waterColor(0xFFFFFF).waterFogColor(0x333333).fogColor(10518688).skyColor(0).ambientParticle(new AmbientParticleSettings(ParticleTypes.MYCELIUM, 0.0075F)).ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build())
+ .mobSpawnSettings(mobSpawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
}
public static Biome endCorruption(HolderGetter placedFeatureGetter, HolderGetter> carverGetter)
{
MobSpawnSettings.Builder mobSpawnBuilder = new MobSpawnSettings.Builder();
- BiomeDefaultFeatures.endSpawns(mobSpawnBuilder);
BiomeGenerationSettings.Builder biomeBuilder = new BiomeGenerationSettings.Builder(placedFeatureGetter, carverGetter);
biomeBuilder.addFeature(GenerationStep.Decoration.SURFACE_STRUCTURES, EndPlacements.END_GATEWAY_RETURN);
biomeBuilder.addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, BOPEndPlacements.ANOMALY);
biomeBuilder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, BOPEndPlacements.NULL_LAKE);
biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, BOPEndPlacements.TREES_END_CORRUPTION);
- return baseEndBiome(biomeBuilder, mobSpawnBuilder, 4159204, 329011);
+
+ return new Biome.BiomeBuilder()
+ .hasPrecipitation(false).temperature(0.5F).downfall(0.5F)
+ .specialEffects(new BiomeSpecialEffects.Builder().waterColor(4159204).waterFogColor(329011).fogColor(10518688).skyColor(0).ambientParticle(new AmbientParticleSettings(ModParticles.BINARY, 0.000375F)).ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build())
+ .mobSpawnSettings(mobSpawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
}
}
diff --git a/common/src/main/java/biomesoplenty/biome/BOPNetherBiomes.java b/common/src/main/java/biomesoplenty/biome/BOPNetherBiomes.java
index d86046272..4028c678f 100644
--- a/common/src/main/java/biomesoplenty/biome/BOPNetherBiomes.java
+++ b/common/src/main/java/biomesoplenty/biome/BOPNetherBiomes.java
@@ -53,9 +53,9 @@ public static Biome crystallineChasm(HolderGetter placedFeatureGe
addFeature(biomeBuilder, GenerationStep.Decoration.UNDERGROUND_DECORATION, BOPNetherPlacements.SMALL_CRYSTAL);
return new Biome.BiomeBuilder()
- .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
- .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x59002C).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientParticle(new AmbientParticleSettings(ParticleTypes.ELECTRIC_SPARK, 0.0008925F)).ambientLoopSound(SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_BASALT_DELTAS_MOOD, 6000, 8, 2.0D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_CRYSTALLINE_CHASM)).build())
- .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
+ .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
+ .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x59002C).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientParticle(new AmbientParticleSettings(ParticleTypes.ELECTRIC_SPARK, 0.0008925F)).ambientLoopSound(SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_BASALT_DELTAS_MOOD, 6000, 8, 2.0D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_CRYSTALLINE_CHASM)).build())
+ .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
}
public static Biome eruptingInferno(HolderGetter placedFeatureGetter, HolderGetter> carverGetter)
@@ -89,9 +89,9 @@ public static Biome eruptingInferno(HolderGetter placedFeatureGet
addFeature(biomeBuilder, GenerationStep.Decoration.UNDERGROUND_DECORATION, BOPNetherPlacements.BRIMSTONE_CLUSTER);
return new Biome.BiomeBuilder()
- .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
- .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x4F2B13).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientParticle(new AmbientParticleSettings(ParticleTypes.SMOKE, 0.00023065104F)).ambientLoopSound(SoundEvents.AMBIENT_BASALT_DELTAS_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_BASALT_DELTAS_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_BASALT_DELTAS_ADDITIONS, 0.0111D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_ERUPTING_INFERNO)).build())
- .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
+ .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
+ .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x4F2B13).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientParticle(new AmbientParticleSettings(ParticleTypes.SMOKE, 0.00023065104F)).ambientLoopSound(SoundEvents.AMBIENT_BASALT_DELTAS_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_BASALT_DELTAS_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_BASALT_DELTAS_ADDITIONS, 0.0111D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_ERUPTING_INFERNO)).build())
+ .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
}
public static Biome undergrowth(HolderGetter placedFeatureGetter, HolderGetter> carverGetter)
@@ -124,9 +124,9 @@ public static Biome undergrowth(HolderGetter placedFeatureGetter,
addFeature(biomeBuilder, GenerationStep.Decoration.UNDERGROUND_DECORATION, BOPNetherPlacements.NETHER_VINES);
return new Biome.BiomeBuilder()
- .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
- .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x1C2109).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientParticle(new AmbientParticleSettings(ParticleTypes.SPORE_BLOSSOM_AIR, 0.00357F)).ambientLoopSound(SoundEvents.AMBIENT_WARPED_FOREST_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_CRIMSON_FOREST_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS, 0.0111D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_UNDERGROWTH)).build())
- .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
+ .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
+ .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x1C2109).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientParticle(new AmbientParticleSettings(ParticleTypes.SPORE_BLOSSOM_AIR, 0.00357F)).ambientLoopSound(SoundEvents.AMBIENT_WARPED_FOREST_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_CRIMSON_FOREST_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS, 0.0111D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_UNDERGROWTH)).build())
+ .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
}
public static Biome visceralHeap(HolderGetter placedFeatureGetter, HolderGetter> carverGetter)
@@ -155,9 +155,9 @@ public static Biome visceralHeap(HolderGetter placedFeatureGetter
addFeature(biomeBuilder, GenerationStep.Decoration.UNDERGROUND_DECORATION, BOPNetherPlacements.HAIR);
return new Biome.BiomeBuilder()
- .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
- .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x601F18).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientLoopSound(SoundEvents.AMBIENT_NETHER_WASTES_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_CRIMSON_FOREST_ADDITIONS, 0.0111D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_VISCERAL_HEAP)).build())
- .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
+ .hasPrecipitation(false).temperature(2.0F).downfall(0.0F)
+ .specialEffects((new BiomeSpecialEffects.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x601F18).skyColor(BOPOverworldBiomes.calculateSkyColor(2.0F)).ambientLoopSound(SoundEvents.AMBIENT_NETHER_WASTES_LOOP).ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_CRIMSON_FOREST_ADDITIONS, 0.0111D)).backgroundMusic(Musics.createGameMusic(BOPSounds.MUSIC_BIOME_VISCERAL_HEAP)).build())
+ .mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build();
}
public static Biome witheredAbyss(HolderGetter placedFeatureGetter, HolderGetter> carverGetter)
diff --git a/common/src/main/java/biomesoplenty/block/FlowerBlockBOP.java b/common/src/main/java/biomesoplenty/block/FlowerBlockBOP.java
index 13930c2be..b553c1682 100644
--- a/common/src/main/java/biomesoplenty/block/FlowerBlockBOP.java
+++ b/common/src/main/java/biomesoplenty/block/FlowerBlockBOP.java
@@ -76,7 +76,7 @@ else if (this == BOPBlocks.WILTED_LILY)
}
else if (this == BOPBlocks.ENDBLOOM)
{
- return ground == BOPBlocks.ALGAL_END_STONE || ground == Blocks.END_STONE || super.canSurvive(state, worldIn, pos);
+ return ground == BOPBlocks.ALGAL_END_STONE || ground == BOPBlocks.UNMAPPED_END_STONE || ground == BOPBlocks.NULL_END_STONE || ground == Blocks.END_STONE || super.canSurvive(state, worldIn, pos);
}
return super.canSurvive(state, worldIn, pos);
diff --git a/common/src/main/java/biomesoplenty/block/FoliageBlockBOP.java b/common/src/main/java/biomesoplenty/block/FoliageBlockBOP.java
index b6ce195b8..56c6280d3 100644
--- a/common/src/main/java/biomesoplenty/block/FoliageBlockBOP.java
+++ b/common/src/main/java/biomesoplenty/block/FoliageBlockBOP.java
@@ -90,7 +90,7 @@ public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos)
}
if (this == BOPBlocks.ENDERPHYTE)
{
- return ground == BOPBlocks.ALGAL_END_STONE || ground == Blocks.END_STONE;
+ return ground == BOPBlocks.ALGAL_END_STONE || ground == BOPBlocks.UNMAPPED_END_STONE || ground == BOPBlocks.NULL_END_STONE || ground == Blocks.END_STONE;
}
return super.canSurvive(state, worldIn, pos);
diff --git a/common/src/main/java/biomesoplenty/block/RadiantHandsBlock.java b/common/src/main/java/biomesoplenty/block/RadiantHandsBlock.java
index cfeb3f827..d71244c84 100644
--- a/common/src/main/java/biomesoplenty/block/RadiantHandsBlock.java
+++ b/common/src/main/java/biomesoplenty/block/RadiantHandsBlock.java
@@ -118,7 +118,7 @@ public boolean canSurvive(BlockState p_196260_1_, LevelReader p_196260_2_, Block
}
else
{
- return block == this.getHeadBlock() || block == this.getBodyBlock() || block == Blocks.END_STONE || block == BOPBlocks.ALGAL_END_STONE;
+ return block == this.getHeadBlock() || block == this.getBodyBlock() || block == Blocks.END_STONE || block == BOPBlocks.UNMAPPED_END_STONE || block == BOPBlocks.NULL_END_STONE || block == BOPBlocks.ALGAL_END_STONE;
}
}
diff --git a/common/src/main/java/biomesoplenty/block/RadiantHandsPlantBlock.java b/common/src/main/java/biomesoplenty/block/RadiantHandsPlantBlock.java
index 90652bb9c..b84df1dd0 100644
--- a/common/src/main/java/biomesoplenty/block/RadiantHandsPlantBlock.java
+++ b/common/src/main/java/biomesoplenty/block/RadiantHandsPlantBlock.java
@@ -58,7 +58,7 @@ public boolean canSurvive(BlockState p_196260_1_, LevelReader p_196260_2_, Block
}
else
{
- return block == this.getHeadBlock() || block == this.getBodyBlock() || block == Blocks.END_STONE || block == BOPBlocks.ALGAL_END_STONE;
+ return block == this.getHeadBlock() || block == this.getBodyBlock() || block == Blocks.END_STONE || block == BOPBlocks.UNMAPPED_END_STONE || block == BOPBlocks.NULL_END_STONE || block == BOPBlocks.ALGAL_END_STONE;
}
}
diff --git a/common/src/main/java/biomesoplenty/block/SaplingBlockBOP.java b/common/src/main/java/biomesoplenty/block/SaplingBlockBOP.java
index f9d539a5d..787359805 100644
--- a/common/src/main/java/biomesoplenty/block/SaplingBlockBOP.java
+++ b/common/src/main/java/biomesoplenty/block/SaplingBlockBOP.java
@@ -96,7 +96,7 @@ else if (this == BOPBlocks.DEAD_SAPLING)
}
else if (this == BOPBlocks.EMPYREAL_SAPLING)
{
- return ground == Blocks.END_STONE || ground == BOPBlocks.ALGAL_END_STONE || super.canSurvive(state, worldIn, pos);
+ return ground == Blocks.END_STONE || ground == BOPBlocks.UNMAPPED_END_STONE || ground == BOPBlocks.NULL_END_STONE || ground == BOPBlocks.ALGAL_END_STONE || super.canSurvive(state, worldIn, pos);
}
return super.canSurvive(state, worldIn, pos);
diff --git a/common/src/main/java/biomesoplenty/init/ModBlocks.java b/common/src/main/java/biomesoplenty/init/ModBlocks.java
index 8ab442295..83ab03b06 100644
--- a/common/src/main/java/biomesoplenty/init/ModBlocks.java
+++ b/common/src/main/java/biomesoplenty/init/ModBlocks.java
@@ -127,6 +127,7 @@ private static void registerBlocks(BiConsumer func)
SMALL_ROSE_QUARTZ_BUD = register(func, new AmethystClusterBlock(3, 4, BlockBehaviour.Properties.ofFullCopy(ROSE_QUARTZ_CLUSTER).pushReaction(PushReaction.DESTROY).forceSolidOn().sound(SoundType.SMALL_AMETHYST_BUD).lightLevel((state) -> 5)), "small_rose_quartz_bud");
ALGAL_END_STONE = register(func, new AlgalEndStoneBlock(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).mapColor(MapColor.TERRACOTTA_YELLOW).randomTicks().requiresCorrectToolForDrops().strength(3.0F, 9.0F)), "algal_end_stone");
+ UNMAPPED_END_STONE = register(func, new Block(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.0F, 9.0F)), "unmapped_end_stone");
NULL_END_STONE = register(func, new Block(BlockBehaviour.Properties.of().instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(1.5F, 4.5F)), "null_end_stone");
NULL_BLOCK = register(func, new NullBlock(BlockBehaviour.Properties.of()), "null_block");
ANOMALY = register(func, new AnomalyBlock(BlockBehaviour.Properties.of().lightLevel((state) -> 5)), "anomaly");
diff --git a/common/src/main/java/biomesoplenty/init/ModClient.java b/common/src/main/java/biomesoplenty/init/ModClient.java
index 1f2f148a2..3532ef244 100644
--- a/common/src/main/java/biomesoplenty/init/ModClient.java
+++ b/common/src/main/java/biomesoplenty/init/ModClient.java
@@ -72,6 +72,7 @@ public static void setupRenderTypes()
RenderType translucentRenderType = RenderType.translucent();
RenderHelper.setRenderType(MOSSY_BLACK_SAND, transparentRenderType);
+ RenderHelper.setRenderType(NULL_END_STONE, cutoutRenderType);
RenderHelper.setRenderType(ORIGIN_LEAVES, transparentRenderType);
RenderHelper.setRenderType(FLOWERING_OAK_LEAVES, transparentRenderType);
@@ -322,7 +323,9 @@ public static void registerParticleSprites(RegisterParticleSpritesEvent event)
event.registerSpriteSet(ModParticles.PUS, PusParticle.Provider::new);
event.registerSpriteSet(ModParticles.GLOWWORM, GlowwormParticle.Provider::new);
event.registerSpriteSet(ModParticles.STEAM, SteamParticle.Provider::new);
+ event.registerSpriteSet(ModParticles.END_SPORE, EndSporeParticle.Provider::new);
event.registerSpriteSet(ModParticles.NULL, NullParticle.Provider::new);
+ event.registerSpriteSet(ModParticles.BINARY, BinaryParticle.Provider::new);
event.registerSpriteSet(ModParticles.JACARANDA_LEAVES, (p_277215_) -> {
return (p_277217_, p_277218_, p_277219_, p_277220_, p_277221_, p_277222_, p_277223_, p_277224_) -> {
return new LeafParticle(p_277218_, p_277219_, p_277220_, p_277221_, p_277215_);
diff --git a/common/src/main/java/biomesoplenty/init/ModItems.java b/common/src/main/java/biomesoplenty/init/ModItems.java
index d726759e9..eb5871f2c 100644
--- a/common/src/main/java/biomesoplenty/init/ModItems.java
+++ b/common/src/main/java/biomesoplenty/init/ModItems.java
@@ -155,6 +155,7 @@ public static void registerBlockItems(BiConsumer func)
MEDIUM_ROSE_QUARTZ_BUD = register(func, "medium_rose_quartz_bud", new BlockItem(BOPBlocks.MEDIUM_ROSE_QUARTZ_BUD, new Item.Properties()));
SMALL_ROSE_QUARTZ_BUD = register(func, "small_rose_quartz_bud", new BlockItem(BOPBlocks.SMALL_ROSE_QUARTZ_BUD, new Item.Properties()));
ALGAL_END_STONE = register(func, "algal_end_stone", new BlockItem(BOPBlocks.ALGAL_END_STONE, new Item.Properties()));
+ UNMAPPED_END_STONE = register(func, "unmapped_end_stone", new BlockItem(BOPBlocks.UNMAPPED_END_STONE, new Item.Properties()));
NULL_END_STONE = register(func, "null_end_stone", new BlockItem(BOPBlocks.NULL_END_STONE, new Item.Properties()));
NULL_BLOCK = register(func, "null_block", new BlockItem(BOPBlocks.NULL_BLOCK, new Item.Properties()));
ANOMALY = register(func, "anomaly", new BlockItem(BOPBlocks.ANOMALY, new Item.Properties()));
diff --git a/common/src/main/java/biomesoplenty/init/ModParticles.java b/common/src/main/java/biomesoplenty/init/ModParticles.java
index 9d3164c4a..be5c48a7e 100644
--- a/common/src/main/java/biomesoplenty/init/ModParticles.java
+++ b/common/src/main/java/biomesoplenty/init/ModParticles.java
@@ -26,7 +26,9 @@ public class ModParticles
public static SimpleParticleType RED_MAPLE_LEAVES;
public static SimpleParticleType ORANGE_MAPLE_LEAVES;
public static SimpleParticleType YELLOW_MAPLE_LEAVES;
+ public static SimpleParticleType END_SPORE;
public static SimpleParticleType NULL;
+ public static SimpleParticleType BINARY;
public static void registerParticles(BiConsumer> func)
{
@@ -41,7 +43,9 @@ public static void registerParticles(BiConsumer> T register(BiConsumer> func, String name, T particle)
diff --git a/common/src/main/java/biomesoplenty/init/ModTags.java b/common/src/main/java/biomesoplenty/init/ModTags.java
index 9732216ed..6061350f5 100644
--- a/common/src/main/java/biomesoplenty/init/ModTags.java
+++ b/common/src/main/java/biomesoplenty/init/ModTags.java
@@ -32,6 +32,7 @@ private static void setup() {}
public static final TagKey DEAD_WALL_CORALS = create(new ResourceLocation(BiomesOPlenty.MOD_ID, "dead_wall_corals"));
public static final TagKey FLESH = create(new ResourceLocation(BiomesOPlenty.MOD_ID, "flesh"));
public static final TagKey FLESH_DECORATION_PLACEABLE = create(new ResourceLocation(BiomesOPlenty.MOD_ID, "flesh_decoration_placeable"));
+ public static final TagKey NULL_REPLACEABLE = create(new ResourceLocation(BiomesOPlenty.MOD_ID, "null_replaceable"));
public static final TagKey TIDEPOOL_REPLACEABLE = create(new ResourceLocation(BiomesOPlenty.MOD_ID, "tidepool_replaceable"));
public static TagKey create(ResourceLocation name)
diff --git a/common/src/main/java/biomesoplenty/particle/BinaryParticle.java b/common/src/main/java/biomesoplenty/particle/BinaryParticle.java
new file mode 100644
index 000000000..79557506a
--- /dev/null
+++ b/common/src/main/java/biomesoplenty/particle/BinaryParticle.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright 2022, the Glitchfiend Team.
+ * All rights reserved.
+ ******************************************************************************/
+package biomesoplenty.particle;
+
+import net.minecraft.client.multiplayer.ClientLevel;
+import net.minecraft.client.particle.*;
+import net.minecraft.core.particles.SimpleParticleType;
+
+public class BinaryParticle extends TextureSheetParticle
+{
+ BinaryParticle(ClientLevel p_105856_, double p_105857_, double p_105858_, double p_105859_, double p_105860_, double p_105861_, double p_105862_)
+ {
+ super(p_105856_, p_105857_, p_105858_, p_105859_);
+ this.setSize(0.05F, 0.05F);
+ this.lifetime = this.random.nextInt(32) + 32;
+ this.xd = p_105860_;
+ this.yd = -0.02D;
+ this.zd = p_105862_;
+ }
+
+ @Override
+ public void tick()
+ {
+ this.xo = this.x;
+ this.yo = this.y;
+ this.zo = this.z;
+ if (this.age++ < this.lifetime)
+ {
+ this.move(this.xd, this.yd, this.zd);
+ }
+ else
+ {
+ this.remove();
+ }
+ }
+
+ @Override
+ public ParticleRenderType getRenderType() {
+ return ParticleRenderType.PARTICLE_SHEET_OPAQUE;
+ }
+
+ public static class Provider implements ParticleProvider
+ {
+ private final SpriteSet sprites;
+
+ public Provider(SpriteSet p_105899_) {
+ this.sprites = p_105899_;
+ }
+
+ public Particle createParticle(SimpleParticleType p_105910_, ClientLevel p_105911_, double p_105912_, double p_105913_, double p_105914_, double p_105915_, double p_105916_, double p_105917_)
+ {
+ BinaryParticle particle = new BinaryParticle(p_105911_, p_105912_, p_105913_, p_105914_, p_105915_, p_105916_, p_105917_);
+ particle.pickSprite(this.sprites);
+ return particle;
+ }
+ }
+}
\ No newline at end of file
diff --git a/common/src/main/java/biomesoplenty/particle/EndSporeParticle.java b/common/src/main/java/biomesoplenty/particle/EndSporeParticle.java
new file mode 100644
index 000000000..1b0bc62a1
--- /dev/null
+++ b/common/src/main/java/biomesoplenty/particle/EndSporeParticle.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright 2022, the Glitchfiend Team.
+ * All rights reserved.
+ ******************************************************************************/
+package biomesoplenty.particle;
+
+import net.minecraft.client.multiplayer.ClientLevel;
+import net.minecraft.client.particle.*;
+import net.minecraft.core.particles.SimpleParticleType;
+
+public class EndSporeParticle extends TextureSheetParticle
+{
+ EndSporeParticle(ClientLevel p_105856_, double p_105857_, double p_105858_, double p_105859_, double p_105860_, double p_105861_, double p_105862_)
+ {
+ super(p_105856_, p_105857_, p_105858_, p_105859_);
+ this.setSize(0.05F, 0.05F);
+ this.lifetime = this.random.nextInt(128) + 32;
+ this.xd = (double)((this.random.nextFloat() - this.random.nextFloat()) / 100.0F);
+ this.yd = (double)(this.random.nextFloat() / 100.0F);
+ this.zd = (double)((this.random.nextFloat() - this.random.nextFloat()) / 100.0F);
+ }
+
+ @Override
+ public void tick()
+ {
+ this.xo = this.x;
+ this.yo = this.y;
+ this.zo = this.z;
+ if (this.age++ < this.lifetime)
+ {
+ this.move(this.xd, this.yd, this.zd);
+ }
+ else
+ {
+ this.remove();
+ }
+ }
+
+ @Override
+ public ParticleRenderType getRenderType() {
+ return ParticleRenderType.PARTICLE_SHEET_OPAQUE;
+ }
+
+ public static class Provider implements ParticleProvider
+ {
+ private final SpriteSet sprites;
+
+ public Provider(SpriteSet p_105899_) {
+ this.sprites = p_105899_;
+ }
+
+ public Particle createParticle(SimpleParticleType p_105910_, ClientLevel p_105911_, double p_105912_, double p_105913_, double p_105914_, double p_105915_, double p_105916_, double p_105917_)
+ {
+ EndSporeParticle particle = new EndSporeParticle(p_105911_, p_105912_, p_105913_, p_105914_, p_105915_, p_105916_, p_105917_);
+ particle.pickSprite(this.sprites);
+ return particle;
+ }
+ }
+}
\ No newline at end of file
diff --git a/common/src/main/java/biomesoplenty/worldgen/BOPSurfaceRuleData.java b/common/src/main/java/biomesoplenty/worldgen/BOPSurfaceRuleData.java
index ce4cbfa78..7570bb00a 100644
--- a/common/src/main/java/biomesoplenty/worldgen/BOPSurfaceRuleData.java
+++ b/common/src/main/java/biomesoplenty/worldgen/BOPSurfaceRuleData.java
@@ -45,6 +45,7 @@ public class BOPSurfaceRuleData
// BOP
private static final SurfaceRules.RuleSource ALGAL_END_STONE = makeStateRule(BOPBlocks.ALGAL_END_STONE);
+ private static final SurfaceRules.RuleSource UNMAPPED_END_STONE = makeStateRule(BOPBlocks.UNMAPPED_END_STONE);
private static final SurfaceRules.RuleSource DRIED_SALT = makeStateRule(BOPBlocks.DRIED_SALT);
private static final SurfaceRules.RuleSource WHITE_SAND = makeStateRule(BOPBlocks.WHITE_SAND);
private static final SurfaceRules.RuleSource WHITE_SANDSTONE = makeStateRule(BOPBlocks.WHITE_SANDSTONE);
@@ -341,6 +342,7 @@ public static SurfaceRules.RuleSource end()
)
)
),
+ SurfaceRules.ifTrue(SurfaceRules.isBiome(BOPBiomes.END_CORRUPTION), UNMAPPED_END_STONE),
SurfaceRules.ifTrue(
SurfaceRules.isBiome(BOPBiomes.END_REEF),
SurfaceRules.sequence(
diff --git a/common/src/main/java/biomesoplenty/worldgen/feature/misc/AnomalyFeature.java b/common/src/main/java/biomesoplenty/worldgen/feature/misc/AnomalyFeature.java
index 3d278d0f2..f3235d187 100644
--- a/common/src/main/java/biomesoplenty/worldgen/feature/misc/AnomalyFeature.java
+++ b/common/src/main/java/biomesoplenty/worldgen/feature/misc/AnomalyFeature.java
@@ -6,6 +6,7 @@
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.block.AnomalyBlock;
+import biomesoplenty.init.ModTags;
import biomesoplenty.util.SimpleBlockPredicate;
import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos;
@@ -22,8 +23,8 @@
public class AnomalyFeature extends Feature
{
- protected SimpleBlockPredicate placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.END_STONE;
- protected SimpleBlockPredicate replace = (world, pos) -> world.getBlockState(pos).is(BlockTags.REPLACEABLE_BY_TREES) || world.getBlockState(pos).getBlock() instanceof BushBlock || world.getBlockState(pos).getBlock() == Blocks.END_STONE || world.getBlockState(pos).getBlock() == BOPBlocks.ALGAL_END_STONE || world.getBlockState(pos).getBlock() == BOPBlocks.WHITE_SAND || world.getBlockState(pos).getBlock() == BOPBlocks.WHITE_SANDSTONE || world.getBlockState(pos).getBlock() == BOPBlocks.NULL_END_STONE || world.getBlockState(pos).getBlock() == BOPBlocks.NULL_BLOCK;
+ protected SimpleBlockPredicate placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.END_STONE || world.getBlockState(pos).getBlock() == BOPBlocks.UNMAPPED_END_STONE;
+ protected SimpleBlockPredicate replace = (world, pos) -> world.getBlockState(pos).is(BlockTags.REPLACEABLE_BY_TREES) || world.getBlockState(pos).getBlock() instanceof BushBlock || world.getBlockState(pos).is(ModTags.Blocks.NULL_REPLACEABLE);
public AnomalyFeature(Codec deserializer)
{
@@ -65,21 +66,34 @@ public boolean place(FeaturePlaceContext featurePlaceC
{
if (x == -3 || x == size+3 || z == -3 || z == size+3)
{
- if (rand.nextInt(3) == 0 && (world.getBlockState(pos.offset(x,y,z)).getBlock() == Blocks.END_STONE || world.getBlockState(pos.offset(x,y,z)).getBlock() == BOPBlocks.ALGAL_END_STONE || world.getBlockState(pos).getBlock() == BOPBlocks.WHITE_SAND || world.getBlockState(pos).getBlock() == BOPBlocks.WHITE_SANDSTONE || world.getBlockState(pos.offset(x,y,z)).getBlock() == BOPBlocks.NULL_END_STONE))
+ if (rand.nextInt(4) == 0 && this.replace.matches(world, pos.offset(x,y,z)) && world.getBlockState(pos.offset(x,y,z)).getBlock() != BOPBlocks.NULL_BLOCK)
{
- world.setBlock(pos.offset(x,y,z), BOPBlocks.NULL_END_STONE.defaultBlockState(), 2);
+ if (!((x == -3 || x == size+3) && (z == -3 || z == size+3)))
+ {
+ world.setBlock(pos.offset(x,y,z), BOPBlocks.NULL_END_STONE.defaultBlockState(), 2);
+ }
}
}
else if (x == -2 || x == size+2 || z == -2 || z == size+2)
{
- if (world.getBlockState(pos.offset(x,y,z)).getBlock() == Blocks.END_STONE || world.getBlockState(pos.offset(x,y,z)).getBlock() == BOPBlocks.ALGAL_END_STONE || world.getBlockState(pos).getBlock() == BOPBlocks.WHITE_SAND || world.getBlockState(pos).getBlock() == BOPBlocks.WHITE_SANDSTONE || world.getBlockState(pos.offset(x,y,z)).getBlock() == BOPBlocks.NULL_END_STONE)
+ if (this.replace.matches(world, pos.offset(x,y,z)) && world.getBlockState(pos.offset(x,y,z)).getBlock() != BOPBlocks.NULL_BLOCK)
{
- world.setBlock(pos.offset(x,y,z), BOPBlocks.NULL_END_STONE.defaultBlockState(), 2);
+ if (!((x == -2 || x == size+2) && (z == -2 || z == size+2)))
+ {
+ world.setBlock(pos.offset(x,y,z), BOPBlocks.NULL_END_STONE.defaultBlockState(), 2);
+ }
}
}
else if (x == -1 || x == size+1 || z == -1 || z == size+1)
{
- this.setBlock(world, pos.offset(x,y,z), BOPBlocks.NULL_BLOCK.defaultBlockState());
+ if ((x == -1 || x == size+1) && (z == -1 || z == size+1))
+ {
+ this.setBlock(world, pos.offset(x,y,z), BOPBlocks.NULL_END_STONE.defaultBlockState());
+ }
+ else
+ {
+ this.setBlock(world, pos.offset(x,y,z), BOPBlocks.NULL_BLOCK.defaultBlockState());
+ }
}
else
{
diff --git a/common/src/main/java/biomesoplenty/worldgen/feature/misc/BarnacleFeature.java b/common/src/main/java/biomesoplenty/worldgen/feature/misc/BarnacleFeature.java
index 5b6647643..b295d4f7f 100644
--- a/common/src/main/java/biomesoplenty/worldgen/feature/misc/BarnacleFeature.java
+++ b/common/src/main/java/biomesoplenty/worldgen/feature/misc/BarnacleFeature.java
@@ -56,7 +56,7 @@ public boolean place(FeaturePlaceContext featurePlaceC
for (Direction direction : Direction.values())
{
BlockState blockstate1 = worldIn.getBlockState(blockpos.relative(direction));
- if (rand.nextInt(4) == 0 && (blockstate1 == Blocks.END_STONE.defaultBlockState() || blockstate1 == BOPBlocks.ALGAL_END_STONE.defaultBlockState() || blockstate1 == BOPBlocks.WHITE_SAND.defaultBlockState() || blockstate1 == BOPBlocks.WHITE_SANDSTONE.defaultBlockState() || blockstate1.is(ModTags.Blocks.DEAD_CORAL_BLOCKS)))
+ if (rand.nextInt(4) == 0 && (blockstate1 == Blocks.END_STONE.defaultBlockState() || blockstate1 == BOPBlocks.UNMAPPED_END_STONE.defaultBlockState() || blockstate1 == BOPBlocks.NULL_END_STONE.defaultBlockState() || blockstate1 == BOPBlocks.ALGAL_END_STONE.defaultBlockState() || blockstate1 == BOPBlocks.WHITE_SAND.defaultBlockState() || blockstate1 == BOPBlocks.WHITE_SANDSTONE.defaultBlockState() || blockstate1.is(ModTags.Blocks.DEAD_CORAL_BLOCKS)))
{
barnaclestate = barnaclestate.setValue(MultifaceBlock.getFaceProperty(direction), true);
faces++;
diff --git a/common/src/main/java/biomesoplenty/worldgen/feature/misc/RadiantHandsFeature.java b/common/src/main/java/biomesoplenty/worldgen/feature/misc/RadiantHandsFeature.java
index d669c1605..0bc290775 100644
--- a/common/src/main/java/biomesoplenty/worldgen/feature/misc/RadiantHandsFeature.java
+++ b/common/src/main/java/biomesoplenty/worldgen/feature/misc/RadiantHandsFeature.java
@@ -95,7 +95,7 @@ private static boolean isInvalidPlacementLocation(LevelAccessor p_67297_, BlockP
else
{
BlockState blockstate = p_67297_.getBlockState(p_67298_.below());
- return !blockstate.is(Blocks.END_STONE) && !blockstate.is(BOPBlocks.ALGAL_END_STONE);
+ return !blockstate.is(Blocks.END_STONE) && !blockstate.is(BOPBlocks.UNMAPPED_END_STONE) && !blockstate.is(BOPBlocks.NULL_END_STONE) && !blockstate.is(BOPBlocks.ALGAL_END_STONE);
}
}
}
\ No newline at end of file
diff --git a/common/src/main/java/biomesoplenty/worldgen/feature/tree/EmpyrealTreeFeature.java b/common/src/main/java/biomesoplenty/worldgen/feature/tree/EmpyrealTreeFeature.java
index 414f3b659..cfce7f58d 100644
--- a/common/src/main/java/biomesoplenty/worldgen/feature/tree/EmpyrealTreeFeature.java
+++ b/common/src/main/java/biomesoplenty/worldgen/feature/tree/EmpyrealTreeFeature.java
@@ -54,7 +54,14 @@ protected boolean doPlace(WorldGenLevel world, RandomSource random, BlockPos sta
BlockPos topPos = pos.above(height);
- this.placeLog(world, topPos.offset(0, 0, 0), logs, config);
+ if (world.getRandom().nextInt(5) == 0)
+ {
+ world.setBlock(topPos.offset(0, 0, 0), Blocks.SHROOMLIGHT.defaultBlockState(), 2);
+ }
+ else
+ {
+ this.placeLog(world, topPos.offset(0, 0, 0), logs, config);
+ }
if (random.nextInt(2) == 0)
{
@@ -238,6 +245,16 @@ protected boolean doPlace(WorldGenLevel world, RandomSource random, BlockPos sta
this.placeLeaves(world, topPos.offset(-1, 9, 0), leaves, config);
this.placeLeaves(world, topPos.offset(0, 9, 1), leaves, config);
this.placeLeaves(world, topPos.offset(0, 9, -1), leaves, config);
+
+ if (world.getRandom().nextInt(5) == 0)
+ {
+ world.setBlock(topPos.offset(0, 8, 0), Blocks.SHROOMLIGHT.defaultBlockState(), 2);
+ }
+ else
+ {
+ this.placeLeaves(world, topPos.offset(0, 8, 0), leaves, config);
+ }
+
this.placeLeaves(world, topPos.offset(1, 8, 0), leaves, config);
this.placeLeaves(world, topPos.offset(-1, 8, 0), leaves, config);
this.placeLeaves(world, topPos.offset(0, 8, 1), leaves, config);
diff --git a/common/src/main/java/biomesoplenty/worldgen/placement/BOPEndPlacements.java b/common/src/main/java/biomesoplenty/worldgen/placement/BOPEndPlacements.java
index 6ccfe098b..3ae963ec3 100644
--- a/common/src/main/java/biomesoplenty/worldgen/placement/BOPEndPlacements.java
+++ b/common/src/main/java/biomesoplenty/worldgen/placement/BOPEndPlacements.java
@@ -63,7 +63,7 @@ public static void bootstrap(BootstapContext context)
register(context, BOPEndPlacements.JAGGED_SANDSTONE, JAGGED_SANDSTONE, List.of(RarityFilter.onAverageOnceEvery(3), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()));
register(context, BOPEndPlacements.NULL_LAKE, NULL_LAKE, List.of(RarityFilter.onAverageOnceEvery(2), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()));
register(context, BOPEndPlacements.PATCH_ENDERPHYTES, PATCH_ENDERPHYTES, VegetationPlacements.worldSurfaceSquaredWithCount(5));
- register(context, BOPEndPlacements.RADIANT_HANDS, RADIANT_HANDS, List.of(RarityFilter.onAverageOnceEvery(3), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()));
+ register(context, BOPEndPlacements.RADIANT_HANDS, RADIANT_HANDS, List.of(RarityFilter.onAverageOnceEvery(2), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP, BiomeFilter.biome()));
register(context, BOPEndPlacements.TIDEPOOL, TIDEPOOL, List.of(CountPlacement.of(3), InSquarePlacement.spread(), PlacementUtils.HEIGHTMAP_TOP_SOLID, BiomeFilter.biome()));
register(context, BOPEndPlacements.TREES_END_CORRUPTION, TREES_END_CORRUPTION, treePlacement(PlacementUtils.countExtra(0, 0.2F, 1)));
register(context, BOPEndPlacements.TREES_END_WILDS, TREES_END_WILDS, treePlacement(PlacementUtils.countExtra(1, 0.1F, 1)));
diff --git a/common/src/main/java/biomesoplenty/worldgen/placement/BOPTreePlacements.java b/common/src/main/java/biomesoplenty/worldgen/placement/BOPTreePlacements.java
index 31a2e30dc..09bd6a2f1 100644
--- a/common/src/main/java/biomesoplenty/worldgen/placement/BOPTreePlacements.java
+++ b/common/src/main/java/biomesoplenty/worldgen/placement/BOPTreePlacements.java
@@ -205,7 +205,7 @@ public static void bootstrap(BootstapContext context)
register(context, BOPTreePlacements.MANGROVE_TWIGLET_TREE_CHECKED, MANGROVE_TWIGLET_TREE, List.of(PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)));
register(context, BOPTreePlacements.RED_MAPLE_TREE_CHECKED, RED_MAPLE_TREE, List.of(PlacementUtils.filteredByBlockSurvival(BOPBlocks.RED_MAPLE_SAPLING)));
register(context, BOPTreePlacements.MAPLE_TWIGLET_TREE_CHECKED, MAPLE_TWIGLET_TREE, List.of(PlacementUtils.filteredByBlockSurvival(BOPBlocks.RED_MAPLE_SAPLING)));
- register(context, BOPTreePlacements.NULL_TREE_CHECKED, NULL_TREE, List.of(BlockPredicateFilter.forPredicate(BlockPredicate.matchesBlocks(new BlockPos(0, -1, 0), Blocks.END_STONE))));
+ register(context, BOPTreePlacements.NULL_TREE_CHECKED, NULL_TREE, List.of(BlockPredicateFilter.forPredicate(BlockPredicate.matchesBlocks(new BlockPos(0, -1, 0), BOPBlocks.UNMAPPED_END_STONE))));
register(context, BOPTreePlacements.CHERRY_TWIGLET_TREE_CHECKED, CHERRY_TWIGLET_TREE, List.of(PlacementUtils.filteredByBlockSurvival(Blocks.CHERRY_SAPLING)));
register(context, BOPTreePlacements.SNOWBLOSSOM_TWIGLET_TREE_CHECKED, SNOWBLOSSOM_TWIGLET_TREE, List.of(PlacementUtils.filteredByBlockSurvival(BOPBlocks.SNOWBLOSSOM_SAPLING)));
register(context, BOPTreePlacements.OAK_BUSH_CHECKED, OAK_BUSH, List.of(PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)));
diff --git a/common/src/main/resources/assets/biomesoplenty/blockstates/unmapped_end_stone.json b/common/src/main/resources/assets/biomesoplenty/blockstates/unmapped_end_stone.json
new file mode 100644
index 000000000..2114fd31f
--- /dev/null
+++ b/common/src/main/resources/assets/biomesoplenty/blockstates/unmapped_end_stone.json
@@ -0,0 +1,5 @@
+{
+ "variants": {
+ "": { "model": "biomesoplenty:block/unmapped_end_stone" }
+ }
+}
diff --git a/common/src/main/resources/assets/biomesoplenty/lang/en_us.json b/common/src/main/resources/assets/biomesoplenty/lang/en_us.json
index 58cab130b..0fba4ca1f 100644
--- a/common/src/main/resources/assets/biomesoplenty/lang/en_us.json
+++ b/common/src/main/resources/assets/biomesoplenty/lang/en_us.json
@@ -496,6 +496,7 @@
"block.biomesoplenty.umbran_wall_sign": "Umbran Wall Sign",
"block.biomesoplenty.umbran_wall_hanging_sign": "Umbran Wall Hanging Sign",
"block.biomesoplenty.umbran_wood": "Umbran Wood",
+ "block.biomesoplenty.unmapped_end_stone": "§mEnd Stone",
"block.biomesoplenty.violet": "Violet",
"block.biomesoplenty.watergrass": "Watergrass",
"block.biomesoplenty.waterlily": "Waterlily",
diff --git a/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone.json b/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone.json
index 39b7b0683..9788e9fd3 100644
--- a/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone.json
+++ b/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone.json
@@ -1,6 +1,32 @@
{
- "parent": "block/cube_all",
- "textures": {
- "all": "biomesoplenty:block/null_end_stone"
- }
-}
+ "parent": "block/block",
+ "textures": {
+ "endstone": "minecraft:block/end_stone",
+ "null": "biomesoplenty:block/null_overlay",
+ "particle": "#endstone"
+ },
+ "elements": [
+ { "from": [ 0, 0, 0 ],
+ "to": [ 16, 16, 16 ],
+ "faces": {
+ "down": { "texture": "#endstone", "cullface": "down" },
+ "up": { "texture": "#endstone", "cullface": "up" },
+ "north": { "texture": "#endstone", "cullface": "north" },
+ "south": { "texture": "#endstone", "cullface": "south" },
+ "west": { "texture": "#endstone", "cullface": "west" },
+ "east": { "texture": "#endstone", "cullface": "east" }
+ }
+ },
+ { "from": [ 0, 0, 0 ],
+ "to": [ 16, 16, 16 ],
+ "faces": {
+ "down": { "texture": "#null", "cullface": "down" },
+ "up": { "texture": "#null", "cullface": "up" },
+ "north": { "texture": "#null", "cullface": "north" },
+ "south": { "texture": "#null", "cullface": "south" },
+ "west": { "texture": "#null", "cullface": "west" },
+ "east": { "texture": "#null", "cullface": "east" }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone_alt.json b/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone_alt.json
index 1209f0d0f..716b6681d 100644
--- a/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone_alt.json
+++ b/common/src/main/resources/assets/biomesoplenty/models/block/null_end_stone_alt.json
@@ -1,6 +1,32 @@
{
- "parent": "block/cube_all",
- "textures": {
- "all": "biomesoplenty:block/null_end_stone_alt"
- }
-}
+ "parent": "block/block",
+ "textures": {
+ "endstone": "minecraft:block/end_stone",
+ "null": "biomesoplenty:block/null_overlay_alt",
+ "particle": "#endstone"
+ },
+ "elements": [
+ { "from": [ 0, 0, 0 ],
+ "to": [ 16, 16, 16 ],
+ "faces": {
+ "down": { "texture": "#endstone", "cullface": "down" },
+ "up": { "texture": "#endstone", "cullface": "up" },
+ "north": { "texture": "#endstone", "cullface": "north" },
+ "south": { "texture": "#endstone", "cullface": "south" },
+ "west": { "texture": "#endstone", "cullface": "west" },
+ "east": { "texture": "#endstone", "cullface": "east" }
+ }
+ },
+ { "from": [ 0, 0, 0 ],
+ "to": [ 16, 16, 16 ],
+ "faces": {
+ "down": { "texture": "#null", "cullface": "down" },
+ "up": { "texture": "#null", "cullface": "up" },
+ "north": { "texture": "#null", "cullface": "north" },
+ "south": { "texture": "#null", "cullface": "south" },
+ "west": { "texture": "#null", "cullface": "west" },
+ "east": { "texture": "#null", "cullface": "east" }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/common/src/main/resources/assets/biomesoplenty/models/block/unmapped_end_stone.json b/common/src/main/resources/assets/biomesoplenty/models/block/unmapped_end_stone.json
new file mode 100644
index 000000000..9c452a945
--- /dev/null
+++ b/common/src/main/resources/assets/biomesoplenty/models/block/unmapped_end_stone.json
@@ -0,0 +1,21 @@
+{
+ "parent": "block/block",
+ "textures": {
+ "all": "block/end_stone",
+ "particle": "#all"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [16, 0, 0, 1], "texture": "#all"},
+ "east": {"uv": [15, 0, 16, 16], "rotation": 90, "texture": "#all"},
+ "south": {"uv": [0, 15, 16, 16], "texture": "#all"},
+ "west": {"uv": [0, 0, 1, 16], "rotation": 270, "texture": "#all"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#all"},
+ "down": {"uv": [0, 16, 16, 0], "texture": "#all"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/common/src/main/resources/assets/biomesoplenty/models/item/radiant_hands_plant.json b/common/src/main/resources/assets/biomesoplenty/models/item/radiant_hands_plant.json
new file mode 100644
index 000000000..2e243e95a
--- /dev/null
+++ b/common/src/main/resources/assets/biomesoplenty/models/item/radiant_hands_plant.json
@@ -0,0 +1,6 @@
+{
+ "parent": "item/generated",
+ "textures": {
+ "layer0": "biomesoplenty:block/radiant_hands_lit"
+ }
+}
\ No newline at end of file
diff --git a/common/src/main/resources/assets/biomesoplenty/models/item/unmapped_end_stone.json b/common/src/main/resources/assets/biomesoplenty/models/item/unmapped_end_stone.json
new file mode 100644
index 000000000..21398db8c
--- /dev/null
+++ b/common/src/main/resources/assets/biomesoplenty/models/item/unmapped_end_stone.json
@@ -0,0 +1,3 @@
+{
+ "parent": "biomesoplenty:block/unmapped_end_stone"
+}
diff --git a/common/src/main/resources/assets/biomesoplenty/particles/binary.json b/common/src/main/resources/assets/biomesoplenty/particles/binary.json
new file mode 100644
index 000000000..d272007de
--- /dev/null
+++ b/common/src/main/resources/assets/biomesoplenty/particles/binary.json
@@ -0,0 +1,6 @@
+{
+ "textures": [
+ "biomesoplenty:binary_0",
+ "biomesoplenty:binary_1"
+ ]
+}
diff --git a/common/src/main/resources/assets/biomesoplenty/particles/end_spore.json b/common/src/main/resources/assets/biomesoplenty/particles/end_spore.json
new file mode 100644
index 000000000..db984caaa
--- /dev/null
+++ b/common/src/main/resources/assets/biomesoplenty/particles/end_spore.json
@@ -0,0 +1,6 @@
+{
+ "textures": [
+ "biomesoplenty:end_spore_0",
+ "biomesoplenty:end_spore_1"
+ ]
+}
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/block/null_end_stone.png b/common/src/main/resources/assets/biomesoplenty/textures/block/null_end_stone.png
deleted file mode 100644
index 178154dca..000000000
Binary files a/common/src/main/resources/assets/biomesoplenty/textures/block/null_end_stone.png and /dev/null differ
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/block/null_end_stone_alt.png b/common/src/main/resources/assets/biomesoplenty/textures/block/null_end_stone_alt.png
deleted file mode 100644
index b885a7133..000000000
Binary files a/common/src/main/resources/assets/biomesoplenty/textures/block/null_end_stone_alt.png and /dev/null differ
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/block/null_overlay.png b/common/src/main/resources/assets/biomesoplenty/textures/block/null_overlay.png
new file mode 100644
index 000000000..db62e915b
Binary files /dev/null and b/common/src/main/resources/assets/biomesoplenty/textures/block/null_overlay.png differ
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/block/null_overlay_alt.png b/common/src/main/resources/assets/biomesoplenty/textures/block/null_overlay_alt.png
new file mode 100644
index 000000000..78ed2c920
Binary files /dev/null and b/common/src/main/resources/assets/biomesoplenty/textures/block/null_overlay_alt.png differ
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/particle/binary_0.png b/common/src/main/resources/assets/biomesoplenty/textures/particle/binary_0.png
new file mode 100644
index 000000000..962daef25
Binary files /dev/null and b/common/src/main/resources/assets/biomesoplenty/textures/particle/binary_0.png differ
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/particle/binary_1.png b/common/src/main/resources/assets/biomesoplenty/textures/particle/binary_1.png
new file mode 100644
index 000000000..b515525fb
Binary files /dev/null and b/common/src/main/resources/assets/biomesoplenty/textures/particle/binary_1.png differ
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/particle/end_spore_0.png b/common/src/main/resources/assets/biomesoplenty/textures/particle/end_spore_0.png
new file mode 100644
index 000000000..bfb92c71f
Binary files /dev/null and b/common/src/main/resources/assets/biomesoplenty/textures/particle/end_spore_0.png differ
diff --git a/common/src/main/resources/assets/biomesoplenty/textures/particle/end_spore_1.png b/common/src/main/resources/assets/biomesoplenty/textures/particle/end_spore_1.png
new file mode 100644
index 000000000..c59d0b471
Binary files /dev/null and b/common/src/main/resources/assets/biomesoplenty/textures/particle/end_spore_1.png differ
diff --git a/common/src/main/resources/data/biomesoplenty/loot_tables/blocks/unmapped_end_stone.json b/common/src/main/resources/data/biomesoplenty/loot_tables/blocks/unmapped_end_stone.json
new file mode 100644
index 000000000..1e1377384
--- /dev/null
+++ b/common/src/main/resources/data/biomesoplenty/loot_tables/blocks/unmapped_end_stone.json
@@ -0,0 +1,44 @@
+{
+ "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": "biomesoplenty:unmapped_end_stone"
+ },
+ {
+ "type": "minecraft:item",
+ "conditions": [
+ {
+ "condition": "minecraft:survives_explosion"
+ }
+ ],
+ "name": "minecraft:end_stone"
+ }
+ ]
+ }
+ ],
+ "rolls": 1.0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/common/src/main/resources/data/biomesoplenty/tags/blocks/null_replaceable.json b/common/src/main/resources/data/biomesoplenty/tags/blocks/null_replaceable.json
new file mode 100644
index 000000000..cf5c45f83
--- /dev/null
+++ b/common/src/main/resources/data/biomesoplenty/tags/blocks/null_replaceable.json
@@ -0,0 +1,13 @@
+{
+ "replace": false,
+ "values": [
+ "#biomesoplenty:dead_coral_blocks",
+ "minecraft:end_stone",
+ "biomesoplenty:algal_end_stone",
+ "biomesoplenty:unmapped_end_stone",
+ "biomesoplenty:null_end_stone",
+ "biomesoplenty:null_block",
+ "biomesoplenty:white_sand",
+ "biomesoplenty:white_sandstone"
+ ]
+}
\ No newline at end of file
diff --git a/common/src/main/resources/data/minecraft/tags/blocks/dragon_immune.json b/common/src/main/resources/data/minecraft/tags/blocks/dragon_immune.json
index 36313b283..da964e401 100644
--- a/common/src/main/resources/data/minecraft/tags/blocks/dragon_immune.json
+++ b/common/src/main/resources/data/minecraft/tags/blocks/dragon_immune.json
@@ -2,6 +2,7 @@
"values": [
"biomesoplenty:algal_end_stone",
"biomesoplenty:anomaly",
+ "biomesoplenty:unmapped_end_stone",
"biomesoplenty:null_end_stone",
"biomesoplenty:null_block"
]
diff --git a/common/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/common/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
index f5c54373c..069810f97 100644
--- a/common/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
+++ b/common/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json
@@ -46,6 +46,7 @@
"biomesoplenty:blackstone_spines",
"biomesoplenty:blackstone_bulb",
"biomesoplenty:algal_end_stone",
+ "biomesoplenty:unmapped_end_stone",
"biomesoplenty:null_end_stone",
"biomesoplenty:barnacles"
]
diff --git a/common/src/main/resources/data/minecraft/tags/blocks/sculk_replaceable.json b/common/src/main/resources/data/minecraft/tags/blocks/sculk_replaceable.json
index 2213db24c..590aa9e0d 100644
--- a/common/src/main/resources/data/minecraft/tags/blocks/sculk_replaceable.json
+++ b/common/src/main/resources/data/minecraft/tags/blocks/sculk_replaceable.json
@@ -2,6 +2,8 @@
"values": [
"biomesoplenty:thermal_calcite",
"biomesoplenty:thermal_calcite_vent",
- "biomesoplenty:algal_end_stone"
+ "biomesoplenty:algal_end_stone",
+ "biomesoplenty:unmapped_end_stone",
+ "biomesoplenty:null_end_stone"
]
}
\ No newline at end of file