diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 40b932a6..7ad20617 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -173,6 +173,10 @@ public class EndBlocks extends BlocksRegistry { ); public static final Block SANGNUM = registerBlock("sangnum", new EndTerrainBlock(MaterialColor.COLOR_RED)); public static final Block RUTISCUS = registerBlock("rutiscus", new EndTerrainBlock(MaterialColor.COLOR_ORANGE)); + public static final Block PALLIDIUM = registerBlock("pallidium", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); + public static final Block PALLIDIUM_TRANSITION_1 = registerBlock("pallidium_transition_1", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); + public static final Block PALLIDIUM_TRANSITION_2 = registerBlock("pallidium_transition_2", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); + public static final Block PALLIDIUM_TRANSITION_3 = registerBlock("pallidium_transition_3", new EndTerrainBlock(MaterialColor.COLOR_LIGHT_GRAY)); // Roads // public static final Block END_MYCELIUM_PATH = registerBlock("end_mycelium_path", new BasePathBlock(END_MYCELIUM)); diff --git a/src/main/java/ru/betterend/util/BlockFixer.java b/src/main/java/ru/betterend/util/BlockFixer.java index 34f521c4..8e0b7a4c 100644 --- a/src/main/java/ru/betterend/util/BlockFixer.java +++ b/src/main/java/ru/betterend/util/BlockFixer.java @@ -1,13 +1,17 @@ package ru.betterend.util; import com.google.common.collect.Sets; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.dimension.DimensionType; import ru.bclib.blocks.BaseDoublePlantBlock; import ru.bclib.blocks.BaseVineBlock; import ru.bclib.blocks.StalactiteBlock; @@ -24,16 +28,23 @@ public class BlockFixer { private static final BlockState WATER = Blocks.WATER.defaultBlockState(); public static void fixBlocks(LevelAccessor world, BlockPos start, BlockPos end) { - Set doubleCheck = Sets.newConcurrentHashSet(); - int dx = end.getX() - start.getX() + 1; - int dz = end.getZ() - start.getZ() + 1; - int count = dx * dz; + Registry registry = world.registryAccess().registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY); + ResourceLocation dimKey = registry.getKey(world.dimensionType()); + if (dimKey.getNamespace().equals("world_blender")) { + return; + } + final Set doubleCheck = Sets.newConcurrentHashSet(); + final int dx = end.getX() - start.getX() + 1; + final int dz = end.getZ() - start.getZ() + 1; + final int count = dx * dz; + final int minY = Math.max(start.getY(), world.getMinBuildHeight()); + final int maxY = Math.min(end.getY(), world.getMaxBuildHeight()); IntStream.range(0, count).parallel().forEach(index -> { MutableBlockPos POS = new MutableBlockPos(); POS.setX((index % dx) + start.getX()); POS.setZ((index / dx) + start.getZ()); BlockState state; - for (int y = start.getY(); y <= end.getY(); y++) { + for (int y = minY; y <= maxY; y++) { POS.setY(y); state = world.getBlockState(POS); diff --git a/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java b/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java index c3e6aa5f..e1cc9197 100644 --- a/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java +++ b/src/main/java/ru/betterend/world/surface/SurfaceBuilders.java @@ -14,6 +14,10 @@ public class SurfaceBuilders { public static final SurfaceBuilderBaseConfiguration BRIMSTONE_CONFIG = makeSimpleConfig(EndBlocks.BRIMSTONE); public static final SurfaceBuilderBaseConfiguration SULFURIC_ROCK_CONFIG = makeSimpleConfig(EndBlocks.SULPHURIC_ROCK.stone); public static final SurfaceBuilderBaseConfiguration UMBRA_SURFACE_CONFIG = makeSimpleConfig(EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM, EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_T1_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM_TRANSITION_1, EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_T2_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM_TRANSITION_2, EndBlocks.UMBRALITH.stone); + public static final SurfaceBuilderBaseConfiguration PALLIDIUM_T3_SURFACE_CONFIG = makeSurfaceConfig(EndBlocks.PALLIDIUM_TRANSITION_3, EndBlocks.UMBRALITH.stone); public static final SurfaceBuilder SULPHURIC_SURFACE = register( "sulphuric_surface", @@ -33,6 +37,14 @@ public class SurfaceBuilders { return new SurfaceBuilderBaseConfiguration(state, state, state); } + private static SurfaceBuilderBaseConfiguration makeSurfaceConfig(Block surface, Block under) { + return new SurfaceBuilderBaseConfiguration( + surface.defaultBlockState(), + under.defaultBlockState(), + under.defaultBlockState() + ); + } + public static void register() { } } diff --git a/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java b/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java index 15b6ba54..d799740c 100644 --- a/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java +++ b/src/main/java/ru/betterend/world/surface/UmbraSurfaceBuilder.java @@ -19,20 +19,23 @@ public class UmbraSurfaceBuilder extends SurfaceBuilder 0.3F) { + config = SurfaceBuilders.PALLIDIUM_SURFACE_CONFIG; + } + else if (grass > 0.1F) { + config = SurfaceBuilders.PALLIDIUM_T1_SURFACE_CONFIG; + } + else if (grass > -0.1) { + config = SurfaceBuilders.PALLIDIUM_T2_SURFACE_CONFIG; + } + else if (grass > -0.3F) { + config = SurfaceBuilders.PALLIDIUM_T3_SURFACE_CONFIG; + } + else { + config = SurfaceBuilders.UMBRA_SURFACE_CONFIG; + } + SurfaceBuilder.DEFAULT.apply(random, chunk, biome, x, z, height, noise + depth, defaultBlock, defaultFluid, seaLevel, seed, n, config); } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/pallidium.json b/src/main/resources/assets/betterend/blockstates/pallidium.json new file mode 100644 index 00000000..217268e6 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "betterend:block/pallidium" }, + { "model": "betterend:block/pallidium", "y": 90 }, + { "model": "betterend:block/pallidium", "y": 180 }, + { "model": "betterend:block/pallidium", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/betterend/blockstates/pallidium_transition_1.json b/src/main/resources/assets/betterend/blockstates/pallidium_transition_1.json new file mode 100644 index 00000000..fb4e5c21 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium_transition_1.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "betterend:block/pallidium_transition_1" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/pallidium_transition_2.json b/src/main/resources/assets/betterend/blockstates/pallidium_transition_2.json new file mode 100644 index 00000000..923c3b41 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium_transition_2.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "betterend:block/pallidium_transition_2" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/pallidium_transition_3.json b/src/main/resources/assets/betterend/blockstates/pallidium_transition_3.json new file mode 100644 index 00000000..f452ff3e --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/pallidium_transition_3.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "betterend:block/pallidium_transition_3" } + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium.json b/src/main/resources/assets/betterend/models/block/pallidium.json new file mode 100644 index 00000000..7edfe854 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium_transition_1.json b/src/main/resources/assets/betterend/models/block/pallidium_transition_1.json new file mode 100644 index 00000000..ca7711fe --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium_transition_1.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_transition_1_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium_transition_2.json b/src/main/resources/assets/betterend/models/block/pallidium_transition_2.json new file mode 100644 index 00000000..a00ba90c --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium_transition_2.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_transition_2_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/pallidium_transition_3.json b/src/main/resources/assets/betterend/models/block/pallidium_transition_3.json new file mode 100644 index 00000000..c404adef --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/pallidium_transition_3.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/umbralith", + "east": "betterend:block/pallidium_side", + "north": "betterend:block/pallidium_side", + "particle": "betterend:block/pallidium_side", + "south": "betterend:block/pallidium_side", + "up": "betterend:block/pallidium_transition_3_top", + "west": "betterend:block/pallidium_side" + } +} diff --git a/src/main/resources/assets/betterend/models/item/pallidium.json b/src/main/resources/assets/betterend/models/item/pallidium.json new file mode 100644 index 00000000..4020b077 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/pallidium.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/pallidium" +} diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_side.png b/src/main/resources/assets/betterend/textures/block/pallidium_side.png new file mode 100644 index 00000000..0e40e4d3 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/pallidium_side.png differ diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_top.png b/src/main/resources/assets/betterend/textures/block/pallidium_top.png new file mode 100644 index 00000000..69797f67 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/pallidium_top.png differ diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_transition_1_top.png b/src/main/resources/assets/betterend/textures/block/pallidium_transition_1_top.png new file mode 100644 index 00000000..61d6540c Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/pallidium_transition_1_top.png differ diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_transition_2_top.png b/src/main/resources/assets/betterend/textures/block/pallidium_transition_2_top.png new file mode 100644 index 00000000..cdbd6d04 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/pallidium_transition_2_top.png differ diff --git a/src/main/resources/assets/betterend/textures/block/pallidium_transition_3_top.png b/src/main/resources/assets/betterend/textures/block/pallidium_transition_3_top.png new file mode 100644 index 00000000..4d2938c8 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/pallidium_transition_3_top.png differ